Add VAAPI support to Qt GUI (Fix #26) (#205)

This commit is contained in:
Łukasz Siudut 2020-04-22 09:57:18 +01:00 committed by GitHub
parent ffe7d09088
commit 8c651b0890
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 269 additions and 40 deletions

View file

@ -28,15 +28,36 @@ extern "C"
#include <libavcodec/avcodec.h>
}
#define MAX_PANES 3
class VideoDecoder;
class AVOpenGLFrameUploader;
struct PlaneConfig
{
unsigned int width_divider;
unsigned int height_divider;
unsigned int data_per_pixel;
GLint internal_format;
GLenum format;
};
struct ConversionConfig
{
enum AVPixelFormat pixel_format;
const char *shader_vert_glsl;
const char *shader_frag_glsl;
unsigned int planes;
struct PlaneConfig plane_configs[MAX_PANES];
};
struct AVOpenGLFrame
{
GLuint pbo[3];
GLuint tex[3];
GLuint pbo[MAX_PANES];
GLuint tex[MAX_PANES];
unsigned int width;
unsigned int height;
ConversionConfig *conversion_config;
bool Update(AVFrame *frame, ChiakiLog *log);
};
@ -61,6 +82,8 @@ class AVOpenGLWidget: public QOpenGLWidget
QTimer *mouse_timer;
ConversionConfig *conversion_config;
public:
static QSurfaceFormat CreateSurfaceFormat();