/* */
memset( p_va, 0, sizeof(*p_va) );
+ p_va->i_config_id = VA_INVALID_ID;
+ p_va->i_context_id = VA_INVALID_ID;
+ p_va->image.image_id = VA_INVALID_ID;
/* Create a VA display */
- if( !XInitThreads() )
- return VLC_EGENERIC;
-
p_va->p_display_x11 = XOpenDisplay(NULL);
if( !p_va->p_display_x11 )
goto error;
if( vaCreateConfig( p_va->p_display,
i_profile, VAEntrypointVLD, &attrib, 1, &p_va->i_config_id ) )
{
- p_va->i_config_id = 0;
+ p_va->i_config_id = VA_INVALID_ID;
goto error;
}
static void DestroySurfaces( vlc_va_vaapi_t *p_va )
{
- if( p_va->image.image_id != VA_INVALID_SURFACE )
+ if( p_va->image.image_id != VA_INVALID_ID )
{
CopyCleanCache( &p_va->image_cache );
vaDestroyImage( p_va->p_display, p_va->image.image_id );
}
- if( p_va->i_context_id )
+ if( p_va->i_context_id != VA_INVALID_ID )
vaDestroyContext( p_va->p_display, p_va->i_context_id );
for( int i = 0; i < p_va->i_surface_count && p_va->p_surface; i++ )
free( p_va->p_surface );
/* */
- p_va->image.image_id = VA_INVALID_SURFACE;
- p_va->i_context_id = 0;
+ p_va->image.image_id = VA_INVALID_ID;
+ p_va->i_context_id = VA_INVALID_ID;
p_va->p_surface = NULL;
p_va->i_surface_width = 0;
p_va->i_surface_height = 0;
p_va->p_surface = calloc( p_va->i_surface_count, sizeof(*p_va->p_surface) );
if( !p_va->p_surface )
return VLC_EGENERIC;
- p_va->image.image_id = VA_INVALID_SURFACE;
+ p_va->image.image_id = VA_INVALID_ID;
+ p_va->i_context_id = VA_INVALID_ID;
/* Create surfaces */
VASurfaceID pi_surface_id[p_va->i_surface_count];
i_width, i_height, VA_PROGRESSIVE,
pi_surface_id, p_va->i_surface_count, &p_va->i_context_id ) )
{
- p_va->i_context_id = 0;
+ p_va->i_context_id = VA_INVALID_ID;
goto error;
}
{
if( vaCreateImage( p_va->p_display, &p_fmt[i], i_width, i_height, &p_va->image ) )
{
- p_va->image.image_id = VA_INVALID_SURFACE;
+ p_va->image.image_id = VA_INVALID_ID;
continue;
}
/* Validate that vaGetImage works with this format */
p_va->image.image_id) )
{
vaDestroyImage( p_va->p_display, p_va->image.image_id );
- p_va->image.image_id = VA_INVALID_SURFACE;
+ p_va->image.image_id = VA_INVALID_ID;
continue;
}
if( p_va->i_surface_width || p_va->i_surface_height )
DestroySurfaces( p_va );
- if( p_va->i_config_id )
+ if( p_va->i_config_id != VA_INVALID_ID )
vaDestroyConfig( p_va->p_display, p_va->i_config_id );
if( p_va->p_display )
vaTerminate( p_va->p_display );
vlc_va_vaapi_t *p_va = calloc( 1, sizeof(*p_va) );
if( !p_va )
return NULL;
+
if( Open( p_va, i_codec_id ) )
{
free( p_va );