diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/state_trackers/va/picture.c | 1 | ||||
-rw-r--r-- | src/gallium/state_trackers/va/picture_mjpeg.c | 5 | ||||
-rw-r--r-- | src/gallium/state_trackers/va/va_private.h | 4 |
3 files changed, 10 insertions, 0 deletions
diff --git a/src/gallium/state_trackers/va/picture.c b/src/gallium/state_trackers/va/picture.c index 732079139ea..1e1212dd7a9 100644 --- a/src/gallium/state_trackers/va/picture.c +++ b/src/gallium/state_trackers/va/picture.c @@ -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) { diff --git a/src/gallium/state_trackers/va/picture_mjpeg.c b/src/gallium/state_trackers/va/picture_mjpeg.c index 326c890c880..396b7434425 100644 --- a/src/gallium/state_trackers/va/picture_mjpeg.c +++ b/src/gallium/state_trackers/va/picture_mjpeg.c @@ -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; diff --git a/src/gallium/state_trackers/va/va_private.h b/src/gallium/state_trackers/va/va_private.h index a437a5b90f1..9c093181277 100644 --- a/src/gallium/state_trackers/va/va_private.h +++ b/src/gallium/state_trackers/va/va_private.h @@ -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; |