For example, in patch 5/11 when " VaCreateContext", we used to CALLOC_STRUCT
for "pps" and "sps" whenever we see video format is H.264. This is fine for
decode ONLY case. Now, since we added H.264 encoding, "pps" and "sps" shouldn't
be allocated. So we need to use the entry_point to determine this is H.264
decode or H.264 encode. We can use config to determine the entrypoint since
config_id is passed to us for VaCreateContext call. However, for
VaDestoyContext call, only context_id is passed to us. So we need to know the
entrypoint in order to not free the pps/sps for encoding case.
Regard,
Boyuan
case PIPE_VIDEO_FORMAT_MPEG4_AVC:
context->templat.max_references = 0;
- context->desc.h264.pps = CALLOC_STRUCT(pipe_h264_pps);
- if (!context->desc.h264.pps) {
- FREE(context);
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
- }
- context->desc.h264.pps->sps = CALLOC_STRUCT(pipe_h264_sps);
- if (!context->desc.h264.pps->sps) {
- FREE(context->desc.h264.pps);
- FREE(context);
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
+ if (config->entrypoint != PIPE_VIDEO_ENTRYPOINT_ENCODE) {
+ context->desc.h264.pps = CALLOC_STRUCT(pipe_h264_pps);
+ if (!context->desc.h264.pps) {
+ FREE(context);
+ return VA_STATUS_ERROR_ALLOCATION_FAILED;
+ }
+ context->desc.h264.pps->sps = CALLOC_STRUCT(pipe_h264_sps);
+ if (!context->desc.h264.pps->sps) {
+ FREE(context->desc.h264.pps);
+ FREE(context);
+ return VA_STATUS_ERROR_ALLOCATION_FAILED;
+ }
}
break;
-----Original Message-----
From: Christian König [mailto:[email protected]]
Sent: July-14-16 4:07 AM
To: Zhang, Boyuan; [email protected]
Subject: Re: [PATCH 02/11] vl: add entry point
Am 14.07.2016 um 00:51 schrieb Boyuan Zhang:
> Add entry point for encoding which previously hardcoded for decoding
> purpose only
I still can't figure out why we would want this? The variable doesn't seem to
be used in the whole patchset.
Christian.
>
> Signed-off-by: Boyuan Zhang <[email protected]>
> ---
> src/gallium/include/pipe/p_video_state.h | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/src/gallium/include/pipe/p_video_state.h
> b/src/gallium/include/pipe/p_video_state.h
> index 754d013..39b3905 100644
> --- a/src/gallium/include/pipe/p_video_state.h
> +++ b/src/gallium/include/pipe/p_video_state.h
> @@ -131,6 +131,7 @@ enum pipe_h264_enc_rate_control_method
> struct pipe_picture_desc
> {
> enum pipe_video_profile profile;
> + enum pipe_video_entrypoint entry_point;
> };
>
> struct pipe_quant_matrix
_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev