Commit b1ae79cc authored by Francois Cartegnie's avatar Francois Cartegnie Committed by Jean-Paul Saman

vaapi: fix profiles detection.

The selected profile wasn't checked against card's ones.
(ex: resulting in sending MPEG2 to a VC1/h264 only card)
Signed-off-by: default avatarJean-Paul Saman <jpsaman@videolan.org>
parent 66eec16f
...@@ -95,7 +95,9 @@ static vlc_va_vaapi_t *vlc_va_vaapi_Get( void *p_va ) ...@@ -95,7 +95,9 @@ static vlc_va_vaapi_t *vlc_va_vaapi_Get( void *p_va )
/* */ /* */
static int Open( vlc_va_vaapi_t *p_va, int i_codec_id ) static int Open( vlc_va_vaapi_t *p_va, int i_codec_id )
{ {
VAProfile i_profile; VAProfile i_profile, *p_profiles_list;
bool b_supported_profile = false;
int i_profiles_nb = 0;
int i_surface_count; int i_surface_count;
/* */ /* */
...@@ -144,6 +146,28 @@ static int Open( vlc_va_vaapi_t *p_va, int i_codec_id ) ...@@ -144,6 +146,28 @@ static int Open( vlc_va_vaapi_t *p_va, int i_codec_id )
if( vaInitialize( p_va->p_display, &p_va->i_version_major, &p_va->i_version_minor ) ) if( vaInitialize( p_va->p_display, &p_va->i_version_major, &p_va->i_version_minor ) )
goto error; goto error;
/* Check if the selected profile is supported */
i_profiles_nb = vaMaxNumProfiles( p_va->p_display );
p_profiles_list = calloc( i_profiles_nb, sizeof( VAProfile ) );
if ( !p_profiles_list )
goto error;
VAStatus i_status = vaQueryConfigProfiles( p_va->p_display, p_profiles_list, &i_profiles_nb );
if ( i_status == VA_STATUS_SUCCESS )
{
for( int i = 0; i < i_profiles_nb; i++ )
{
if ( p_profiles_list[i] == i_profile )
{
b_supported_profile = true;
break;
}
}
}
free( p_profiles_list );
if ( !b_supported_profile )
goto error;
/* Create a VA configuration */ /* Create a VA configuration */
VAConfigAttrib attrib; VAConfigAttrib attrib;
memset( &attrib, 0, sizeof(attrib) ); memset( &attrib, 0, sizeof(attrib) );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment