st/va: add HEVC picture desc

Add HEVC picture desc, and add codec check when creating and destroying
context.

Signed-off-by: Boyuan Zhang <boyuan.zhang@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
This commit is contained in:
Boyuan Zhang
2018-01-25 14:18:09 -05:00
committed by Leo Liu
parent 9393b53c29
commit ecc3944344
2 changed files with 23 additions and 4 deletions
+22 -4
View File
@@ -284,8 +284,18 @@ vlVaCreateContext(VADriverContextP ctx, VAConfigID config_id, int picture_width,
context->desc.base.profile = config->profile;
context->desc.base.entry_point = config->entrypoint;
if (config->entrypoint == PIPE_VIDEO_ENTRYPOINT_ENCODE) {
context->desc.h264enc.rate_ctrl.rate_ctrl_method = config->rc;
context->desc.h264enc.frame_idx = util_hash_table_create(handle_hash, handle_compare);
switch (u_reduce_video_profile(context->templat.profile)) {
case PIPE_VIDEO_FORMAT_MPEG4_AVC:
context->desc.h264enc.rate_ctrl.rate_ctrl_method = config->rc;
context->desc.h264enc.frame_idx = util_hash_table_create(handle_hash, handle_compare);
break;
case PIPE_VIDEO_FORMAT_HEVC:
context->desc.h265enc.rc.rate_ctrl_method = config->rc;
context->desc.h265enc.frame_idx = util_hash_table_create(handle_hash, handle_compare);
break;
default:
break;
}
}
mtx_lock(&drv->mutex);
@@ -314,8 +324,16 @@ vlVaDestroyContext(VADriverContextP ctx, VAContextID context_id)
if (context->decoder) {
if (context->desc.base.entry_point == PIPE_VIDEO_ENTRYPOINT_ENCODE) {
if (context->desc.h264enc.frame_idx)
util_hash_table_destroy (context->desc.h264enc.frame_idx);
if (u_reduce_video_profile(context->decoder->profile) ==
PIPE_VIDEO_FORMAT_MPEG4_AVC) {
if (context->desc.h264enc.frame_idx)
util_hash_table_destroy (context->desc.h264enc.frame_idx);
}
if (u_reduce_video_profile(context->decoder->profile) ==
PIPE_VIDEO_FORMAT_HEVC) {
if (context->desc.h265enc.frame_idx)
util_hash_table_destroy (context->desc.h265enc.frame_idx);
}
} else {
if (u_reduce_video_profile(context->decoder->profile) ==
PIPE_VIDEO_FORMAT_MPEG4_AVC) {
@@ -270,6 +270,7 @@ typedef struct {
struct pipe_h265_picture_desc h265;
struct pipe_mjpeg_picture_desc mjpeg;
struct pipe_h264_enc_picture_desc h264enc;
struct pipe_h265_enc_picture_desc h265enc;
} desc;
struct {