st/va: detect MJPEG format from bitstream

To find if the format is supported YUYV by sampling factor which
is embedded from bitstream. So we could use this info for buffer
reallocation on the correct format.

Signed-off-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
This commit is contained in:
Leo Liu 2017-08-15 14:08:02 -04:00
parent 7319ff8787
commit 2ebc530ca3
3 changed files with 10 additions and 0 deletions

View file

@ -65,6 +65,7 @@ vlVaBeginPicture(VADriverContextP ctx, VAContextID context_id, VASurfaceID rende
context->target_id = render_target;
surf->ctx = context_id;
context->target = surf->buffer;
context->mjpeg.sampling_factor = 0;
if (!context->decoder) {

View file

@ -30,6 +30,7 @@
void vlVaHandlePictureParameterBufferMJPEG(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf)
{
VAPictureParameterBufferJPEGBaseline *mjpeg = buf->data;
unsigned sf;
int i;
assert(buf->size >= sizeof(VAPictureParameterBufferJPEGBaseline) && buf->num_elements == 1);
@ -46,6 +47,10 @@ void vlVaHandlePictureParameterBufferMJPEG(vlVaDriver *drv, vlVaContext *context
mjpeg->components[i].v_sampling_factor;
context->desc.mjpeg.picture_parameter.components[i].quantiser_table_selector =
mjpeg->components[i].quantiser_table_selector;
sf = mjpeg->components[i].h_sampling_factor << 4 | mjpeg->components[i].v_sampling_factor;
context->mjpeg.sampling_factor <<= 8;
context->mjpeg.sampling_factor |= sf;
}
context->desc.mjpeg.picture_parameter.num_components = mjpeg->num_components;

View file

@ -277,6 +277,10 @@ typedef struct {
uint8_t start_code[32];
} mpeg4;
struct {
unsigned sampling_factor;
} mjpeg;
struct vl_deint_filter *deint;
vlVaBuffer *coded_buf;
int target_id;