Esempio n. 1
0
static bool
app_ensure_filter_surface(App *app, uint32_t width, uint32_t height)
{
    FFVASurface * const s = &app->filter_surface;
    VASurfaceID va_surface;
    VASurfaceAttrib attrib;
    VAStatus va_status;

    if (!app->filter)
        return true; // VPP not needed (checked in app_ensure_filter())

    if (width == s->width && height == s->height)
        return true;

    attrib.flags = VA_SURFACE_ATTRIB_SETTABLE;
    attrib.type = VASurfaceAttribPixelFormat;
    attrib.value.type = VAGenericValueTypeInteger;
    attrib.value.value.i = app->filter_fourcc;

    va_destroy_surface(app->va_display, &s->id);
    va_status = vaCreateSurfaces(app->va_display, app->filter_chroma,
        width, height, &va_surface, 1, &attrib, 1);
    if (!va_check_status(va_status, "vaCreateSurfaces()"))
        return false;

    ffva_surface_init(s, va_surface, app->filter_chroma, width, height);
    s->fourcc = app->filter_fourcc;
    return true;
}
Esempio n. 2
0
static bool
display_init(FFVADisplay *display, const char *name)
{
    const FFVADisplayClass * const klass = ffva_display_class();
    int major_version, minor_version;
    VAStatus va_status;

    if (name) {
        display->display_name = strdup(name);
        if (!display->display_name)
            return false;
    }

    display->klass = klass;

    if (klass->open && (!klass->open(display) || !display->va_display))
        return false;

    va_status = vaInitialize(display->va_display,
        &major_version, &minor_version);
    if (!va_check_status(va_status, "vaInitialize()"))
        return false;
    return true;
}