Esempio n. 1
0
void
vlc_vaapi_FilterReleaseInstance(filter_t *filter,
                                struct vlc_vaapi_instance *va_inst)
{
    vlc_vaapi_ReleaseInstance(va_inst);
    vlc_mutex_lock(&holder.lock);
    if (filter == holder.owner)
    {
        holder.inst = NULL;
        holder.owner = NULL;
    }
    vlc_mutex_unlock(&holder.lock);
}
Esempio n. 2
0
static void
pool_pic_destroy_cb(picture_t *pic)
{
    picture_sys_t *p_sys = pic->p_sys;
    struct pic_sys_vaapi_instance *instance = p_sys->instance;

    if (atomic_fetch_sub(&instance->pic_refcount, 1) == 1)
    {
        vaDestroySurfaces(instance->va_dpy, instance->render_targets,
                          instance->num_render_targets);
        vlc_vaapi_ReleaseInstance(instance->va_inst);
        free(instance);
    }
    free(pic->p_sys);
}