[Libva] [Libva-intel-driver][PATCH 2/2] Encode/VP9: Don't use hardcoded offsets
Sean V Kelley
seanvk at posteo.de
Fri Aug 19 22:21:53 UTC 2016
On Fri, 2016-08-19 at 10:28 +0800, Zhao Yakui wrote:
> On 08/15/2016 10:46 AM, Xiang, Haihao wrote:
> >
> > codec_private_data in struct i965_coded_buffer_segment is used to
> > store
> > codec related data. Add 'struct vp9_encode_status' for the data
> > that will
> > be written into codec_private_data
> >
> > Signed-off-by: Xiang, Haihao<haihao.xiang at intel.com>
>
> This looks good to me.
>
> Add: Reviewed-by: Zhao Yakui <yakui.zhao at intel.com>
>
> Thanks
> Yakui
lgtm, applied.
Thanks,
Sean
>
> >
> > ---
> > src/gen9_vp9_encoder.c | 26 ++++++++------------------
> > src/gen9_vp9_encoder.h | 12 ++++++++----
> > 2 files changed, 16 insertions(+), 22 deletions(-)
> >
> > diff --git a/src/gen9_vp9_encoder.c b/src/gen9_vp9_encoder.c
> > index edfbda6..76cd1d7 100644
> > --- a/src/gen9_vp9_encoder.c
> > +++ b/src/gen9_vp9_encoder.c
> > @@ -5985,15 +5985,16 @@ gen9_vp9_vme_context_init(VADriverContextP
> > ctx, struct intel_encoder_context *en
> > /* the definition of status buffer offset for VP9 */
> > {
> > struct vp9_encode_status_buffer_internal *status_buffer;
> > + uint32_t base_offset = offsetof(struct
> > i965_coded_buffer_segment, codec_private_data);
> >
> > status_buffer =&vp9_state->status_buffer;
> > memset(status_buffer, 0,
> > sizeof(struct vp9_encode_status_buffer_internal));
> >
> > - status_buffer->bs_byte_count_offset = 2048;
> > - status_buffer->image_status_mask_offset = 2052;
> > - status_buffer->image_status_ctrl_offset = 2056;
> > - status_buffer->media_index_offset = 2060;
> > + status_buffer->bs_byte_count_offset = base_offset +
> > offsetof(struct vp9_encode_status, bs_byte_count);
> > + status_buffer->image_status_mask_offset = base_offset +
> > offsetof(struct vp9_encode_status, image_status_mask);
> > + status_buffer->image_status_ctrl_offset = base_offset +
> > offsetof(struct vp9_encode_status, image_status_ctrl);
> > + status_buffer->media_index_offset = base_offset +
> > offsetof(struct vp9_encode_status, media_index);
> >
> > status_buffer->vp9_bs_frame_reg_offset = 0x1E9E0;
> > status_buffer->vp9_image_mask_reg_offset = 0x1E9F0;
> > @@ -6014,24 +6015,13 @@ gen9_vp9_get_coded_status(VADriverContextP
> > ctx,
> > struct intel_encoder_context
> > *encoder_context,
> > struct i965_coded_buffer_segment
> > *coded_buf_seg)
> > {
> > - struct gen9_vp9_state *vp9_state = NULL;
> > - struct vp9_encode_status_buffer_internal *status_buffer;
> > - unsigned int *buf_ptr;
> > + struct vp9_encode_status *vp9_encode_status;
> >
> > if (!encoder_context || !coded_buf_seg)
> > return VA_STATUS_ERROR_INVALID_BUFFER;
> >
> > - vp9_state = (struct gen9_vp9_state *)(encoder_context-
> > >enc_priv_state);
> > -
> > - if (!vp9_state)
> > - return VA_STATUS_ERROR_INVALID_BUFFER;
> > -
> > - status_buffer =&vp9_state->status_buffer;
> > -
> > - buf_ptr = (unsigned int *)((char *)coded_buf_seg +
> > status_buffer->bs_byte_count_offset);
> > -
> > - /* the stream size is writen into the bs_byte_count_offset
> > address of buffer */
> > - coded_buf_seg->base.size = *buf_ptr;
> > + vp9_encode_status = (struct vp9_encode_status *)coded_buf_seg-
> > >codec_private_data;
> > + coded_buf_seg->base.size = vp9_encode_status->bs_byte_count;
> >
> > /* One VACodedBufferSegment for VP9 will be added later.
> > * It will be linked to the next element of coded_buf_seg-
> > >base.next
> > diff --git a/src/gen9_vp9_encoder.h b/src/gen9_vp9_encoder.h
> > index 8034240..ad2d875 100644
> > --- a/src/gen9_vp9_encoder.h
> > +++ b/src/gen9_vp9_encoder.h
> > @@ -1849,15 +1849,19 @@ enum INTEL_ENC_VP9_TU_MODE
> > #define VP9_GOLDEN_REF 0x02
> > #define VP9_ALT_REF 0x04
> >
> > -/* the vp9_encode_status_buffer is the shadow
> > - * of vp9_encode_status_buffer_internal.
> > - */
> > +struct vp9_encode_status
> > +{
> > + uint32_t bs_byte_count;
> > + uint32_t image_status_mask;
> > + uint32_t image_status_ctrl;
> > + uint32_t media_index;
> > +};
> > +
> > struct vp9_encode_status_buffer_internal
> > {
> > uint32_t bs_byte_count_offset;
> > uint32_t reserved[15];
> >
> > - /* the above is shared with the gen9_encode_status_buffer */
> > uint32_t image_status_mask_offset;
> > uint32_t image_status_ctrl_offset;
> >
>
> _______________________________________________
> Libva mailing list
> Libva at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/libva
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <https://lists.freedesktop.org/archives/libva/attachments/20160819/d5c013c0/attachment.sig>
More information about the Libva
mailing list