Преглед на файлове

st/va: handle Video Post Processing for configs

Add support for VA_PROFILE_NONE and VAEntrypointVideoProc
in the 4 following functions:

vlVaQueryConfigProfiles
vlVaQueryConfigEntrypoints
vlVaCreateConfig
vlVaQueryConfigAttributes

Signed-off-by: Julien Isorce <j.isorce@samsung.com>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
tags/11.1-branchpoint
Julien Isorce преди 9 години
родител
ревизия
1bdea0e579
променени са 2 файла, в които са добавени 25 реда и са изтрити 2 реда
  1. 20
    0
      src/gallium/state_trackers/va/config.c
  2. 5
    2
      src/gallium/state_trackers/va/va_private.h

+ 20
- 0
src/gallium/state_trackers/va/config.c Целия файл

@@ -52,6 +52,9 @@ vlVaQueryConfigProfiles(VADriverContextP ctx, VAProfile *profile_list, int *num_
profile_list[(*num_profiles)++] = vap;
}

/* Support postprocessing through vl_compositor */
profile_list[(*num_profiles)++] = VAProfileNone;

return VA_STATUS_SUCCESS;
}

@@ -67,6 +70,11 @@ vlVaQueryConfigEntrypoints(VADriverContextP ctx, VAProfile profile,

*num_entrypoints = 0;

if (profile == VAProfileNone) {
entrypoint_list[(*num_entrypoints)++] = VAEntrypointVideoProc;
return VA_STATUS_SUCCESS;
}

p = ProfileToPipe(profile);
if (p == PIPE_VIDEO_PROFILE_UNKNOWN)
return VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
@@ -118,6 +126,11 @@ vlVaCreateConfig(VADriverContextP ctx, VAProfile profile, VAEntrypoint entrypoin
if (!ctx)
return VA_STATUS_ERROR_INVALID_CONTEXT;

if (profile == VAProfileNone && entrypoint == VAEntrypointVideoProc) {
*config_id = PIPE_VIDEO_PROFILE_UNKNOWN;
return VA_STATUS_SUCCESS;
}

p = ProfileToPipe(profile);
if (p == PIPE_VIDEO_PROFILE_UNKNOWN)
return VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
@@ -151,6 +164,13 @@ vlVaQueryConfigAttributes(VADriverContextP ctx, VAConfigID config_id, VAProfile
return VA_STATUS_ERROR_INVALID_CONTEXT;

*profile = PipeToProfile(config_id);

if (config_id == PIPE_VIDEO_PROFILE_UNKNOWN) {
*entrypoint = VAEntrypointVideoProc;
*num_attribs = 0;
return VA_STATUS_SUCCESS;
}

*entrypoint = VAEntrypointVLD;

*num_attribs = 1;

+ 5
- 2
src/gallium/state_trackers/va/va_private.h Целия файл

@@ -144,10 +144,11 @@ PipeToProfile(enum pipe_video_profile profile)
return VAProfileH264Main;
case PIPE_VIDEO_PROFILE_MPEG4_AVC_HIGH:
return VAProfileH264High;
case PIPE_VIDEO_PROFILE_MPEG4_AVC_EXTENDED:
return VAProfileNone;
case PIPE_VIDEO_PROFILE_HEVC_MAIN:
return VAProfileHEVCMain;
case PIPE_VIDEO_PROFILE_MPEG4_AVC_EXTENDED:
case PIPE_VIDEO_PROFILE_UNKNOWN:
return VAProfileNone;
default:
assert(0);
return -1;
@@ -180,6 +181,8 @@ ProfileToPipe(VAProfile profile)
return PIPE_VIDEO_PROFILE_MPEG4_AVC_HIGH;
case VAProfileHEVCMain:
return PIPE_VIDEO_PROFILE_HEVC_MAIN;
case VAProfileNone:
return PIPE_VIDEO_PROFILE_UNKNOWN;
default:
return PIPE_VIDEO_PROFILE_UNKNOWN;
}

Loading…
Отказ
Запис