From 8a931c83bafbf768ffa520af32740df4c5a765e9 Mon Sep 17 00:00:00 2001 From: Mark Thompson Date: Wed, 12 Oct 2016 23:52:01 +0100 Subject: st/va: Return more useful config attributes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The encoder attributes are needed for a user of the encoder to be able to configure it sensibly without internal knowledge. Reviewed-by: Christian König --- src/gallium/state_trackers/va/config.c | 47 +++++++++++++++++++++++++++------- 1 file changed, 38 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/gallium/state_trackers/va/config.c b/src/gallium/state_trackers/va/config.c index 405231685d3..72f68baf3df 100644 --- a/src/gallium/state_trackers/va/config.c +++ b/src/gallium/state_trackers/va/config.c @@ -115,16 +115,45 @@ vlVaGetConfigAttributes(VADriverContextP ctx, VAProfile profile, VAEntrypoint en for (i = 0; i < num_attribs; ++i) { unsigned int value; - switch (attrib_list[i].type) { - case VAConfigAttribRTFormat: - value = VA_RT_FORMAT_YUV420; - break; - case VAConfigAttribRateControl: - value = VA_RC_CQP | VA_RC_CBR | VA_RC_VBR; - break; - default: + if (entrypoint == VAEntrypointVLD) { + switch (attrib_list[i].type) { + case VAConfigAttribRTFormat: + value = VA_RT_FORMAT_YUV420; + break; + default: + value = VA_ATTRIB_NOT_SUPPORTED; + break; + } + } else if (entrypoint == VAEntrypointEncSlice) { + switch (attrib_list[i].type) { + case VAConfigAttribRTFormat: + value = VA_RT_FORMAT_YUV420; + break; + case VAConfigAttribRateControl: + value = VA_RC_CQP | VA_RC_CBR | VA_RC_VBR; + break; + case VAConfigAttribEncPackedHeaders: + value = 0; + break; + case VAConfigAttribEncMaxRefFrames: + value = 1; + break; + default: + value = VA_ATTRIB_NOT_SUPPORTED; + break; + } + } else if (entrypoint == VAEntrypointVideoProc) { + switch (attrib_list[i].type) { + case VAConfigAttribRTFormat: + value = (VA_RT_FORMAT_YUV420 | + VA_RT_FORMAT_RGB32); + break; + default: + value = VA_ATTRIB_NOT_SUPPORTED; + break; + } + } else { value = VA_ATTRIB_NOT_SUPPORTED; - break; } attrib_list[i].value = value; } -- cgit v1.2.3