xine-lib: xine-lib-1.2.12/src/video_out/video_out_vaapi.c File Reference

xine-lib 1.2.12

Data Structures | Macros | Typedefs | Functions | Variables
video_out_vaapi.c File Reference
`#include <stdio.h>`
`#include <stdlib.h>`
`#include <string.h>`
`#include <errno.h>`
`#include <math.h>`
`#include <sys/types.h>`
`#include <sys/ipc.h>`
`#include <sys/shm.h>`
`#include <sys/time.h>`
`#include <X11/Xlib.h>`
`#include <X11/Xutil.h>`
`#include <time.h>`
`#include <unistd.h>`
`#include "xine.h"`
`#include <xine/video_out.h>`
`#include <xine/xine_internal.h>`
`#include <xine/xineutils.h>`
`#include <xine/vo_scale.h>`
`#include <va/va_x11.h>`
`#include "vaapi/vaapi_util.h"`
`#include "vaapi/vaapi_frame.h"`
`#include "vaapi/xine_va_display.h"`
`#include <pthread.h>`
`#include "color_matrix.c"`

## Data Structures
struct | vaapi_rect_t
struct | va_property_t
struct | vaapi_driver_s
struct | vaapi_class_t

## Macros
#define | LOG_MODULE "video_out_vaapi"
#define | LOG_VERBOSE
#define | vaCreateSurfaces(d, f, w, h, s, ns, a, na) vaCreateSurfaces(d, w, h, f, ns, s)
#define | MIN_SURFACES 22
#define | SOFT_SURFACES 3
#define | SW_WIDTH 1920
#define | SW_HEIGHT 1080
#define | STABLE_FRAME_COUNTER 4
#define | SW_CONTEXT_INIT_FORMAT -1
#define | USE_VAAPI_COLORSPACE 0
#define | FOVY 60.0f
#define | ASPECT 1.0f
#define | Z_NEAR 0.1f
#define | Z_FAR 100.0f
#define | Z_CAMERA 0.869f
#define | GLAPIENTRY
#define | LOCK_DISPLAY(_this) XLockDisplay (_this->display)
#define | UNLOCK_DISPLAY(_this) XUnlockDisplay (_this->display)
#define | RECT_IS_EQ(a, b) ((a).x1 == (b).x1 && (a).y1 == (b).y1 && (a).x2 == (b).x2 && (a).y2 == (b).y2)
#define | CSC_MODE_USER_MATRIX 0
#define | CSC_MODE_FLAGS 1
#define | CSC_MODE_FLAGS_FULLRANGE2 2
#define | CSC_MODE_FLAGS_FULLRANGE3 3
#define | CM_LUT
#define | CM_HAVE_YCGCO_SUPPORT 1
#define | CM_HAVE_BT2020_SUPPORT 1
#define | CM_DRIVER_T vaapi_driver_t
#define | UMAX(a, b) ((a) > (uint32_t)(b) ? (a) : (uint32_t)(b))

## Typedefs
typedef struct vaapi_driver_s | vaapi_driver_t

## Functions
static void | vaapi_destroy_subpicture (vaapi_driver_t *this)
static int | vaapi_ovl_associate (vaapi_driver_t *this, int format, int bShow)
static VAStatus | vaapi_destroy_soft_surfaces (vaapi_driver_t *this)
static int | vaapi_set_property (vo_driver_t *this_gen, int property, int value)
static int | vaapi_check_status (vaapi_driver_t *this, VAStatus vaStatus, const char *msg)
static int | vaapi_lock_decode_guarded (vo_frame_t *frame_gen)
static void | vaapi_unlock_decode_guarded (vo_frame_t *frame_gen)
static void | vaapi_x11_wait_event (Display *dpy, Window w, int type)
static int | vaapi_x11_error_handler (Display *dpy, XErrorEvent *error)
static void | vaapi_x11_trap_errors (void)
static int | vaapi_x11_untrap_errors (void)
static uint32_t | vaapi_get_capabilities (vo_driver_t *this_gen)
static void | vaapi_init_subpicture (vaapi_driver_t *this)
static void | vaapi_close (vaapi_driver_t *this)
static VAStatus | vaapi_create_subpicture (vaapi_driver_t *this, int width, int height)
static void | vaapi_set_csc_mode (vaapi_driver_t *this, int new_mode)
static float | vaapi_normalized_prop (vaapi_driver_t *this, int prop)
static void | vaapi_update_csc (vaapi_driver_t *that, mem_frame_t *frame)
static void | vaapi_property_callback (void *property_gen, xine_cfg_entry_t *entry)
static void | vaapi_check_capability (vaapi_driver_t *this, int property, VADisplayAttribute attr, const char *config_name, const char *config_desc, const char *config_help)
static void | vaapi_display_attribs (vaapi_driver_t *this)
static void | vaapi_set_background_color (vaapi_driver_t *this)
static VAStatus | vaapi_init_soft_surfaces (vaapi_driver_t *this, int width, int height)
static int | _flush_recent_frames (vaapi_driver_t *this)
static VAStatus | vaapi_init_internal (vaapi_driver_t *this, int va_profile, int width, int height)
static VAStatus | vaapi_init (vo_frame_t *frame_gen, int va_profile, int width, int height)
static vo_frame_t * | vaapi_alloc_frame (vo_driver_t *this_gen)
static void | vaapi_overlay_begin (vo_driver_t *this_gen, vo_frame_t *frame_gen, int changed)
static void | vaapi_overlay_blend (vo_driver_t *this_gen, vo_frame_t *frame_gen, vo_overlay_t *overlay)
static void | _merge_rects (vaapi_rect_t *rect, const vo_overlay_t *ovl)
static void | vaapi_overlay_end (vo_driver_t *this_gen, vo_frame_t *frame_gen)
static int | vaapi_redraw_needed (vo_driver_t *this_gen)
static VAStatus | vaapi_software_render_frame (vaapi_driver_t *this, mem_frame_t *frame, VAImage *va_image, int is_bound, VASurfaceID va_surface_id)
static VAStatus | vaapi_hardware_render_frame (vaapi_driver_t *this, mem_frame_t *frame, VASurfaceID va_surface_id)
static void | _add_recent_frame (vaapi_driver_t *this, vo_frame_t *vo_frame)
static void | vaapi_display_frame (vo_driver_t *this_gen, vo_frame_t *frame_gen)
static int | vaapi_get_property (vo_driver_t *this_gen, int property)
static void | vaapi_get_property_min_max (vo_driver_t *this_gen, int property, int *min, int *max)
static int | vaapi_gui_data_exchange (vo_driver_t *this_gen, int data_type, void *data)
static void | vaapi_dispose_locked (vaapi_driver_t *this)
static void | vaapi_dispose (vo_driver_t *this_gen)
static void | vaapi_vdr_osd_width_flag (void *this_gen, xine_cfg_entry_t *entry)
static void | vaapi_vdr_osd_height_flag (void *this_gen, xine_cfg_entry_t *entry)
static void | vaapi_deinterlace_flag (void *this_gen, xine_cfg_entry_t *entry)
static void | vaapi_scaling_level (void *this_gen, xine_cfg_entry_t *entry)
static void | vaapi_swap_uv_planes (void *this_gen, xine_cfg_entry_t *entry)
static void | vaapi_csc_mode (void *this_gen, xine_cfg_entry_t *entry)
static int | vaapi_init_x11 (vaapi_driver_t *this)
static int | vaapi_initialize (vaapi_driver_t *this, int visual_type, const void *visual)
static vo_driver_t * | vaapi_open_plugin (video_driver_class_t *class_gen, const void *visual_gen)
static void * | vaapi_init_class (xine_t *xine, const void *visual_gen)

## Variables
static const char *const | scaling_level_enum_names []
static const int | scaling_level_enum_values []
static int | vaapi_x11_error_code = 0
static int(* | vaapi_x11_old_error_handler )(Display *, XErrorEvent *)
static const char *const | vaapi_csc_mode_labels []
static const vo_info_t | vo_info_vaapi
const plugin_info_t xine_plugin_info[] | EXPORTED

## Macro Definition Documentation

## ◆ ASPECT

#define ASPECT 1.0f

## ◆ CM_DRIVER_T

#define CM_DRIVER_T vaapi_driver_t

## ◆ CM_HAVE_BT2020_SUPPORT

#define CM_HAVE_BT2020_SUPPORT 1

## ◆ CM_HAVE_YCGCO_SUPPORT

#define CM_HAVE_YCGCO_SUPPORT 1

## ◆ CM_LUT

#define CM_LUT

## ◆ CSC_MODE_FLAGS

#define CSC_MODE_FLAGS 1

## ◆ CSC_MODE_FLAGS_FULLRANGE2

#define CSC_MODE_FLAGS_FULLRANGE2 2

## ◆ CSC_MODE_FLAGS_FULLRANGE3

#define CSC_MODE_FLAGS_FULLRANGE3 3

## ◆ CSC_MODE_USER_MATRIX

#define CSC_MODE_USER_MATRIX 0

## ◆ FOVY

#define FOVY 60.0f

## ◆ GLAPIENTRY

#define GLAPIENTRY

## ◆ LOCK_DISPLAY

#define LOCK_DISPLAY | ( |  | _this | ) | XLockDisplay (_this->display)

## ◆ LOG_MODULE

#define LOG_MODULE "video_out_vaapi"

## ◆ LOG_VERBOSE

#define LOG_VERBOSE

## ◆ MIN_SURFACES

#define MIN_SURFACES 22

## ◆ RECT_IS_EQ

#define RECT_IS_EQ | ( |  | a,
|  |  | b
| ) |  | ((a).x1 == (b).x1 && (a).y1 == (b).y1 && (a).x2 == (b).x2 && (a).y2 == (b).y2)

## ◆ SOFT_SURFACES

#define SOFT_SURFACES 3

## ◆ STABLE_FRAME_COUNTER

#define STABLE_FRAME_COUNTER 4

## ◆ SW_CONTEXT_INIT_FORMAT

#define SW_CONTEXT_INIT_FORMAT -1

## ◆ SW_HEIGHT

#define SW_HEIGHT 1080

## ◆ SW_WIDTH

#define SW_WIDTH 1920

## ◆ UMAX

#define UMAX | ( |  | a,
|  |  | b
| ) |  | ((a) > (uint32_t)(b) ? (a) : (uint32_t)(b))

## ◆ UNLOCK_DISPLAY

#define UNLOCK_DISPLAY | ( |  | _this | ) | XUnlockDisplay (_this->display)

## ◆ USE_VAAPI_COLORSPACE

#define USE_VAAPI_COLORSPACE 0

## ◆ vaCreateSurfaces

#define vaCreateSurfaces | ( |  | d,
|  |  | f,
|  |  | w,
|  |  | h,
|  |  | s,
|  |  | ns,
|  |  | a,
|  |  | na
| ) |  | vaCreateSurfaces(d, w, h, f, ns, s)

## ◆ Z_CAMERA

#define Z_CAMERA 0.869f

## ◆ Z_FAR

#define Z_FAR 100.0f

## ◆ Z_NEAR

#define Z_NEAR 0.1f

## Typedef Documentation

## ◆ vaapi_driver_t

typedef struct vaapi_driver_s vaapi_driver_t

## Function Documentation

## ◆ _add_recent_frame()

static void _add_recent_frame | ( | vaapi_driver_t * | this,
|  | vo_frame_t * | vo_frame
| ) |  |
| static

References _x_va_frame_displayed(), vaapi_accel_funcs_s::guarded_render, VO_NUM_RECENT_FRAMES, and XINE_IMGFMT_VAAPI.

Referenced by vaapi_display_frame().

## ◆ _flush_recent_frames()

static int _flush_recent_frames | ( | vaapi_driver_t * | this | ) |
| static

References _x_va_frame_displayed(), NULL, VO_NUM_RECENT_FRAMES, and XINE_IMGFMT_VAAPI.

Referenced by vaapi_init_internal(), and vaapi_set_property().

## ◆ _merge_rects()

static void _merge_rects | ( | vaapi_rect_t * | rect,
|  | const vo_overlay_t * | ovl
| ) |  |
| static

References vo_overlay_s::height, vo_overlay_s::width, vo_overlay_s::x, vaapi_rect_t::x1, vaapi_rect_t::x2, vo_overlay_s::y, vaapi_rect_t::y1, and vaapi_rect_t::y2.

Referenced by vaapi_overlay_end().

## ◆ vaapi_alloc_frame()

static vo_frame_t * vaapi_alloc_frame | ( | vo_driver_t * | this_gen | ) |
| static

References _x_va_accel_alloc_vaapi_surface(), _x_va_accel_get_context(), _x_va_accel_get_vaapi_surface(), _x_va_accel_guarded_render(), _x_va_accel_lock_decode_dummy(), _x_va_accel_profile_from_imgfmt(), _x_va_accel_release_vaapi_surface(), _x_va_accel_render_vaapi_surface(), _x_va_frame_alloc_frame(), vaapi_accel_s::f, vaapi_accel_funcs_s::guarded_render, lprintf, vaapi_frame_t::mem_frame, NULL, vaapi_frame_t::vaapi_accel_data, vaapi_init(), vaapi_accel_funcs_s::vaapi_init, vaapi_lock_decode_guarded(), vaapi_unlock_decode_guarded(), mem_frame_t::vo_frame, and xine_container_of.

Referenced by vaapi_open_plugin().

## ◆ vaapi_check_capability()

static void vaapi_check_capability | ( | vaapi_driver_t * | this,
|  | int | property,
|  | VADisplayAttribute | attr,
|  | const char * | config_name,
|  | const char * | config_desc,
|  | const char * | config_help
| ) |  |
| static

References config_values_s::lookup_entry, cfg_entry_s::num_value, config_values_s::register_bool, config_values_s::register_range, cfg_entry_s::type, config_values_s::update_num, vaapi_property_callback(), and vaapi_set_property().

Referenced by vaapi_display_attribs().

## ◆ vaapi_check_status()

static int vaapi_check_status | ( | vaapi_driver_t * | this,
|  | VAStatus | vaStatus,
|  | const char * | msg
| ) |  |
| static

References LOG_MODULE, XINE_VERBOSITY_LOG, and xprintf.

Referenced by vaapi_create_subpicture(), vaapi_destroy_soft_surfaces(), vaapi_destroy_subpicture(), vaapi_display_attribs(), vaapi_display_frame(), vaapi_hardware_render_frame(), vaapi_init_internal(), vaapi_init_soft_surfaces(), vaapi_initialize(), vaapi_ovl_associate(), and vaapi_software_render_frame().

## ◆ vaapi_close()

static void vaapi_close | ( | vaapi_driver_t * | this | ) |
| static

References _x_va_close(), ff_vaapi_context_s::va_display, vaapi_destroy_soft_surfaces(), vaapi_destroy_subpicture(), vaapi_ovl_associate(), and ff_vaapi_context_s::valid_context.

Referenced by vaapi_dispose_locked(), vaapi_init_internal(), and vaapi_initialize().

## ◆ vaapi_create_subpicture()

static VAStatus vaapi_create_subpicture | ( | vaapi_driver_t * | this,
|  | int | width,
|  | int | height
| ) |  |
| static

References _x_va_destroy_image(), fourcc, height, lprintf, NULL, ff_vaapi_context_s::va_display, vaapi_check_status(), vaapi_destroy_subpicture(), ff_vaapi_context_s::valid_context, and width.

Referenced by vaapi_ovl_associate().

## ◆ vaapi_csc_mode()

static void vaapi_csc_mode | ( | void * | this_gen,
|  | xine_cfg_entry_t * | entry
| ) |  |
| static

References xine_cfg_entry_s::num_value, and vaapi_set_csc_mode().

Referenced by vaapi_open_plugin().

## ◆ vaapi_deinterlace_flag()

static void vaapi_deinterlace_flag | ( | void * | this_gen,
|  | xine_cfg_entry_t * | entry
| ) |  |
| static

References xine_cfg_entry_s::num_value.

Referenced by vaapi_open_plugin().

## ◆ vaapi_destroy_soft_surfaces()

static VAStatus vaapi_destroy_soft_surfaces | ( | vaapi_driver_t * | this | ) |
| static

References _x_va_destroy_image(), SOFT_SURFACES, ff_vaapi_context_s::va_display, and vaapi_check_status().

Referenced by vaapi_close(), vaapi_init_internal(), and vaapi_init_soft_surfaces().

## ◆ vaapi_destroy_subpicture()

static void vaapi_destroy_subpicture | ( | vaapi_driver_t * | this | ) |
| static

References _x_va_destroy_image(), lprintf, ff_vaapi_context_s::va_display, and vaapi_check_status().

Referenced by vaapi_close(), vaapi_create_subpicture(), and vaapi_ovl_associate().

## ◆ vaapi_display_attribs()

static void vaapi_display_attribs | ( | vaapi_driver_t * | this | ) |
| static

References type, ff_vaapi_context_s::va_display, vaapi_check_capability(), vaapi_check_status(), VO_CAP_BRIGHTNESS, VO_CAP_CONTRAST, VO_CAP_HUE, VO_CAP_SATURATION, VO_PROP_BRIGHTNESS, VO_PROP_CONTRAST, VO_PROP_HUE, VO_PROP_SATURATION, XINE_VERBOSITY_DEBUG, and xprintf.

Referenced by vaapi_initialize().

## ◆ vaapi_display_frame()

static void vaapi_display_frame | ( | vo_driver_t * | this_gen,
|  | vo_frame_t * | frame_gen
| ) |  |
| static

References _add_recent_frame(), vo_frame_s::accel_data, vo_frame_s::crop_bottom, vo_frame_s::crop_left, vo_frame_s::crop_right, vo_frame_s::crop_top, vo_frame_s::format, mem_frame_t::format, vo_frame_s::free, vaapi_accel_funcs_s::guarded_render, mem_frame_t::height, ff_vaapi_context_s::height, vaapi_accel_s::index, LOCK_DISPLAY, LOG_MODULE, lprintf, NULL, mem_frame_t::ratio, RENDER_SURFACES, SOFT_SURFACES, ff_vaapi_surface_s::status, SURFACE_RENDER, SURFACE_RENDER_RELEASE, SW_CONTEXT_INIT_FORMAT, UNLOCK_DISPLAY, ff_vaapi_context_s::va_display, ff_vaapi_context_s::va_render_surfaces, ff_vaapi_surface_s::va_surface_id, vaapi_check_status(), vaapi_hardware_render_frame(), vaapi_init_internal(), vaapi_init_soft_surfaces(), vaapi_ovl_associate(), vaapi_redraw_needed(), vaapi_software_render_frame(), ff_vaapi_context_s::valid_context, mem_frame_t::vo_frame, mem_frame_t::width, ff_vaapi_context_s::width, xine_container_of, XINE_IMGFMT_VAAPI, XINE_IMGFMT_YUY2, XINE_IMGFMT_YV12, XINE_VERBOSITY_LOG, and xprintf.

Referenced by vaapi_open_plugin().

## ◆ vaapi_dispose()

static void vaapi_dispose | ( | vo_driver_t * | this_gen | ) |
| static

References lprintf, and vaapi_dispose_locked().

Referenced by vaapi_open_plugin().

## ◆ vaapi_dispose_locked()

static void vaapi_dispose_locked | ( | vaapi_driver_t * | this | ) |
| static

References _x_assert, _x_freep(), _x_va_free(), _x_vo_scale_cleanup(), LOCK_DISPLAY, LOG_MODULE, NULL, UNLOCK_DISPLAY, vaapi_close(), vaapi_x11_trap_errors(), vaapi_x11_untrap_errors(), XINE_VERBOSITY_LOG, and xprintf.

Referenced by vaapi_dispose(), and vaapi_open_plugin().

## ◆ vaapi_get_capabilities()

static uint32_t vaapi_get_capabilities | ( | vo_driver_t * | this_gen | ) |
| static

Referenced by vaapi_open_plugin().

## ◆ vaapi_get_property()

static int vaapi_get_property | ( | vo_driver_t * | this_gen,
|  | int | property
| ) |  |
| static

References lprintf, RENDER_SURFACES, VO_NUM_PROPERTIES, VO_PROP_MAX_NUM_FRAMES, VO_PROP_OUTPUT_HEIGHT, VO_PROP_OUTPUT_WIDTH, VO_PROP_OUTPUT_XOFFSET, VO_PROP_OUTPUT_YOFFSET, VO_PROP_WINDOW_HEIGHT, and VO_PROP_WINDOW_WIDTH.

Referenced by vaapi_open_plugin().

## ◆ vaapi_get_property_min_max()

static void vaapi_get_property_min_max | ( | vo_driver_t * | this_gen,
|  | int | property,
|  | int * | min,
|  | int * | max
| ) |  |
| static

Referenced by vaapi_open_plugin().

## ◆ vaapi_gui_data_exchange()

static int vaapi_gui_data_exchange | ( | vo_driver_t * | this_gen,
|  | int | data_type,
|  | void * | data
| ) |  |
| static

References _x_vo_scale_translate_gui2video(), x11_rectangle_t::h, LOCK_DISPLAY, lprintf, UNLOCK_DISPLAY, x11_rectangle_t::w, x11_rectangle_t::x, XINE_GUI_SEND_COMPLETION_EVENT, XINE_GUI_SEND_DRAWABLE_CHANGED, XINE_GUI_SEND_EXPOSE_EVENT, XINE_GUI_SEND_TRANSLATE_GUI_TO_VIDEO, XINE_GUI_SEND_WILL_DESTROY_DRAWABLE, and x11_rectangle_t::y.

Referenced by vaapi_open_plugin().

## ◆ vaapi_hardware_render_frame()

static VAStatus vaapi_hardware_render_frame | ( | vaapi_driver_t * | this,
|  | mem_frame_t * | frame,
|  | VASurfaceID | va_surface_id
| ) |  |
| static

References mem_frame_t::format, height, mem_frame_t::height, ff_vaapi_context_s::height, lprintf, NULL, vo_frame_s::progressive_frame, vo_frame_s::top_field_first, ff_vaapi_context_s::va_display, vaapi_check_status(), vaapi_update_csc(), vaapi_x11_trap_errors(), vaapi_x11_untrap_errors(), ff_vaapi_context_s::valid_context, mem_frame_t::vo_frame, width, mem_frame_t::width, ff_vaapi_context_s::width, and XINE_IMGFMT_VAAPI.

Referenced by vaapi_display_frame().

## ◆ vaapi_init()

static VAStatus vaapi_init | ( | vo_frame_t * | frame_gen,
|  | int | va_profile,
|  | int | width,
|  | int | height
| ) |  |
| static

References vo_frame_s::driver, vo_frame_s::format, height, LOCK_DISPLAY, UNLOCK_DISPLAY, vaapi_init_internal(), vaapi_ovl_associate(), and width.

Referenced by vaapi_alloc_frame().

## ◆ vaapi_init_class()

static void * vaapi_init_class | ( | xine_t * | xine,
|  | const void * | visual_gen
| ) |  |
| static

References default_video_driver_class_dispose, video_driver_class_s::description, video_driver_class_s::dispose, vaapi_class_t::driver_class, video_driver_class_s::identifier, N_, NULL, video_driver_class_s::open_plugin, vaapi_open_plugin(), and vaapi_class_t::xine.

## ◆ vaapi_init_internal()

static VAStatus vaapi_init_internal | ( | vaapi_driver_t * | this,
|  | int | va_profile,
|  | int | width,
|  | int | height
| ) |  |
| static

References _flush_recent_frames(), _x_va_create_image(), _x_va_destroy_image(), _x_va_init(), height, LOG_MODULE, RENDER_SURFACES, scaling_level_enum_names, ff_vaapi_context_s::va_display, ff_vaapi_context_s::va_surface_ids, vaapi_check_status(), vaapi_close(), vaapi_destroy_soft_surfaces(), vaapi_init_soft_surfaces(), width, XINE_VERBOSITY_LOG, and xprintf.

Referenced by vaapi_display_frame(), vaapi_init(), and vaapi_initialize().

## ◆ vaapi_init_soft_surfaces()

static VAStatus vaapi_init_soft_surfaces | ( | vaapi_driver_t * | this,
|  | int | width,
|  | int | height
| ) |  |
| static

References _x_va_create_image(), height, NULL, SOFT_SURFACES, ff_vaapi_context_s::va_display, vaapi_check_status(), vaapi_destroy_soft_surfaces(), vaCreateSurfaces, and width.

Referenced by vaapi_display_frame(), and vaapi_init_internal().

## ◆ vaapi_init_subpicture()

static void vaapi_init_subpicture | ( | vaapi_driver_t * | this | ) |
| static

References NULL.

Referenced by vaapi_open_plugin().

## ◆ vaapi_init_x11()

static int vaapi_init_x11 | ( | vaapi_driver_t * | this | ) |
| static

References LOCK_DISPLAY, LOG_MODULE, UNLOCK_DISPLAY, vaapi_x11_trap_errors(), vaapi_x11_untrap_errors(), vaapi_x11_wait_event(), XINE_VERBOSITY_LOG, and xprintf.

Referenced by vaapi_open_plugin().

## ◆ vaapi_initialize()

static int vaapi_initialize | ( | vaapi_driver_t * | this,
|  | int | visual_type,
|  | const void * | visual
| ) |  |
| static

References _x_va_new(), ff_vaapi_context_s::driver, LOG_MODULE, SW_CONTEXT_INIT_FORMAT, SW_HEIGHT, SW_WIDTH, ff_vaapi_context_s::va_display, vaapi_check_status(), vaapi_close(), vaapi_display_attribs(), vaapi_init_internal(), vaapi_set_background_color(), XINE_VA_DISPLAY_GLX, XINE_VA_DISPLAY_X11, XINE_VERBOSITY_LOG, and xprintf.

Referenced by vaapi_open_plugin().

## ◆ vaapi_lock_decode_guarded()

static int vaapi_lock_decode_guarded | ( | vo_frame_t * | frame_gen | ) |
| static

References vo_frame_s::driver.

Referenced by vaapi_alloc_frame().

## ◆ vaapi_normalized_prop()

static float vaapi_normalized_prop | ( | vaapi_driver_t * | this,
|  | int | prop
| ) |  |
| static

Referenced by vaapi_update_csc().

## ◆ vaapi_open_plugin()

static vo_driver_t * vaapi_open_plugin | ( | video_driver_class_t * | class_gen,
|  | const void * | visual_gen
| ) |  |
| static

References _, _x_va_frame_update_frame_format(), _x_vo_scale_init(), xine_s::config, LOCK_DISPLAY, LOG_MODULE, MIN_SURFACES, NULL, config_values_s::register_bool, config_values_s::register_enum, config_values_s::register_num, RENDER_SURFACES, scaling_level_enum_names, scaling_level_enum_values, SOFT_SURFACES, UNLOCK_DISPLAY, config_values_s::update_num, vaapi_alloc_frame(), vaapi_csc_mode(), vaapi_deinterlace_flag(), vaapi_display_frame(), vaapi_dispose(), vaapi_dispose_locked(), vaapi_get_capabilities(), vaapi_get_property(), vaapi_get_property_min_max(), vaapi_gui_data_exchange(), vaapi_init_subpicture(), vaapi_init_x11(), vaapi_initialize(), vaapi_overlay_begin(), vaapi_overlay_blend(), vaapi_overlay_end(), vaapi_redraw_needed(), vaapi_scaling_level(), vaapi_set_csc_mode(), vaapi_set_property(), vaapi_swap_uv_planes(), vaapi_vdr_osd_height_flag(), vaapi_vdr_osd_width_flag(), VO_CAP_ARGB_LAYER_OVERLAY, VO_CAP_CROP, VO_CAP_CUSTOM_EXTENT_OVERLAY, VO_CAP_UNSCALED_OVERLAY, VO_CAP_VAAPI, VO_CAP_YUY2, VO_CAP_YV12, VO_NUM_PROPERTIES, VO_PROP_ASPECT_RATIO, VO_PROP_ZOOM_X, VO_PROP_ZOOM_Y, config_values_s::xine, vaapi_class_t::xine, XINE_VERBOSITY_LOG, XINE_VISUAL_TYPE_X11, XINE_VO_ASPECT_AUTO, and xprintf.

Referenced by vaapi_init_class().

## ◆ vaapi_overlay_begin()

static void vaapi_overlay_begin | ( | vo_driver_t * | this_gen,
|  | vo_frame_t * | frame_gen,
|  | int | changed
| ) |  |
| static

References vo_frame_s::format, LOCK_DISPLAY, lprintf, UNLOCK_DISPLAY, vaapi_ovl_associate(), and ff_vaapi_context_s::valid_context.

Referenced by vaapi_open_plugin().

## ◆ vaapi_overlay_blend()

static void vaapi_overlay_blend | ( | vo_driver_t * | this_gen,
|  | vo_frame_t * | frame_gen,
|  | vo_overlay_t * | overlay
| ) |  |
| static

References vo_overlay_s::argb_layer, argb_layer_s::buffer, vo_overlay_s::height, vo_overlay_s::hili_bottom, vo_overlay_s::hili_left, vo_overlay_s::hili_rgb_clut, vo_overlay_s::hili_right, vo_overlay_s::hili_top, lprintf, vo_overlay_s::rgb_clut, vo_overlay_s::rle, vo_overlay_s::unscaled, vo_overlay_s::width, vo_overlay_s::x, argb_layer_s::x1, argb_layer_s::x2, XINE_VORAW_MAX_OVL, vo_overlay_s::y, argb_layer_s::y1, and argb_layer_s::y2.

Referenced by vaapi_open_plugin().

## ◆ vaapi_overlay_end()

static void vaapi_overlay_end | ( | vo_driver_t * | this_gen,
|  | vo_frame_t * | frame_gen
| ) |  |
| static

References _merge_rects(), _x_overlay_clut_yuv2rgb(), _x_overlay_to_argb32(), vo_overlay_s::argb_layer, argb_layer_s::buffer, vo_frame_s::format, vo_overlay_s::height, height, mem_frame_t::height, vo_overlay_s::hili_rgb_clut, LOCK_DISPLAY, lprintf, argb_layer_s::mutex, NULL, RECT_IS_EQ, vo_overlay_s::rgb_clut, vo_overlay_s::rle, UMAX, UNLOCK_DISPLAY, vo_overlay_s::unscaled, vaapi_ovl_associate(), ff_vaapi_context_s::valid_context, vo_overlay_s::width, mem_frame_t::width, vo_overlay_s::x, vaapi_rect_t::x1, vaapi_rect_t::x2, xine_container_of, xine_fast_memcpy, vo_overlay_s::y, vaapi_rect_t::y1, and vaapi_rect_t::y2.

Referenced by vaapi_open_plugin().

## ◆ vaapi_ovl_associate()

static int vaapi_ovl_associate | ( | vaapi_driver_t * | this,
|  | int | format,
|  | int | bShow
| ) |  |
| static

References ff_vaapi_context_s::height, lprintf, NULL, RENDER_SURFACES, SOFT_SURFACES, ff_vaapi_context_s::va_display, ff_vaapi_context_s::va_surface_ids, vaapi_check_status(), vaapi_create_subpicture(), vaapi_destroy_subpicture(), ff_vaapi_context_s::valid_context, ff_vaapi_context_s::width, xine_fast_memcpy, XINE_IMGFMT_VAAPI, XINE_IMGFMT_YUY2, and XINE_IMGFMT_YV12.

Referenced by vaapi_close(), vaapi_display_frame(), vaapi_init(), vaapi_overlay_begin(), and vaapi_overlay_end().

## ◆ vaapi_property_callback()

static void vaapi_property_callback | ( | void * | property_gen,
|  | xine_cfg_entry_t * | entry
| ) |  |
| static

References LOCK_DISPLAY, lprintf, xine_cfg_entry_s::num_value, UNLOCK_DISPLAY, and ff_vaapi_context_s::va_display.

Referenced by vaapi_check_capability().

## ◆ vaapi_redraw_needed()

static int vaapi_redraw_needed | ( | vo_driver_t * | this_gen | ) |
| static

References _x_vo_scale_compute_ideal_size(), _x_vo_scale_compute_output_size(), and _x_vo_scale_redraw_needed().

Referenced by vaapi_display_frame(), and vaapi_open_plugin().

## ◆ vaapi_scaling_level()

static void vaapi_scaling_level | ( | void * | this_gen,
|  | xine_cfg_entry_t * | entry
| ) |  |
| static

References xine_cfg_entry_s::num_value.

Referenced by vaapi_open_plugin().

## ◆ vaapi_set_background_color()

static void vaapi_set_background_color | ( | vaapi_driver_t * | this | ) |
| static

References ff_vaapi_context_s::va_display, and ff_vaapi_context_s::valid_context.

Referenced by vaapi_initialize().

## ◆ vaapi_set_csc_mode()

static void vaapi_set_csc_mode | ( | vaapi_driver_t * | this,
|  | int | new_mode
| ) |  |
| static

References CSC_MODE_FLAGS, CSC_MODE_USER_MATRIX, VO_CAP_BRIGHTNESS, VO_CAP_COLOR_MATRIX, VO_CAP_CONTRAST, VO_CAP_FULLRANGE, VO_CAP_HUE, VO_CAP_SATURATION, VO_PROP_BRIGHTNESS, VO_PROP_CONTRAST, VO_PROP_HUE, and VO_PROP_SATURATION.

Referenced by vaapi_csc_mode(), vaapi_open_plugin(), and vaapi_update_csc().

## ◆ vaapi_set_property()

static int vaapi_set_property | ( | vo_driver_t * | this_gen,
|  | int | property,
|  | int | value
| ) |  |
| static

References _flush_recent_frames(), _x_vo_scale_compute_ideal_size(), lprintf, ff_vaapi_context_s::va_display, ff_vaapi_context_s::valid_context, VO_NUM_PROPERTIES, VO_PROP_ASPECT_RATIO, VO_PROP_BRIGHTNESS, VO_PROP_CONTRAST, VO_PROP_DISCARD_FRAMES, VO_PROP_HUE, VO_PROP_SATURATION, VO_PROP_ZOOM_X, VO_PROP_ZOOM_Y, XINE_VO_ASPECT_AUTO, XINE_VO_ASPECT_NUM_RATIOS, XINE_VO_ZOOM_MAX, XINE_VO_ZOOM_MIN, and XINE_VO_ZOOM_STEP.

Referenced by vaapi_check_capability(), and vaapi_open_plugin().

## ◆ vaapi_software_render_frame()

static VAStatus vaapi_software_render_frame | ( | vaapi_driver_t * | this,
|  | mem_frame_t * | frame,
|  | VAImage * | va_image,
|  | int | is_bound,
|  | VASurfaceID | va_surface_id
| ) |  |
| static

References _x_yuy2_to_nv12(), _x_yv12_to_nv12(), vo_frame_s::base, mem_frame_t::format, vo_frame_s::height, mem_frame_t::height, lprintf, NULL, vo_frame_s::pitches, ff_vaapi_context_s::va_display, vaapi_check_status(), ff_vaapi_context_s::valid_context, mem_frame_t::vo_frame, vo_frame_s::width, mem_frame_t::width, XINE_IMGFMT_YUY2, XINE_IMGFMT_YV12, yuy2_to_yv12, and yv12_to_yv12().

Referenced by vaapi_display_frame().

## ◆ vaapi_swap_uv_planes()

static void vaapi_swap_uv_planes | ( | void * | this_gen,
|  | xine_cfg_entry_t * | entry
| ) |  |
| static

References xine_cfg_entry_s::num_value.

Referenced by vaapi_open_plugin().

## ◆ vaapi_unlock_decode_guarded()

static void vaapi_unlock_decode_guarded | ( | vo_frame_t * | frame_gen | ) |
| static

References vo_frame_s::driver.

Referenced by vaapi_alloc_frame().

## ◆ vaapi_update_csc()

static void vaapi_update_csc | ( | vaapi_driver_t * | that,
|  | mem_frame_t * | frame
| ) |  |
| static

References _, va_property_t::atom, cm_names, vaapi_driver_s::color_matrix, contrast, vaapi_driver_s::csc_mode, CSC_MODE_FLAGS, CSC_MODE_FLAGS_FULLRANGE2, CSC_MODE_FLAGS_FULLRANGE3, CSC_MODE_USER_MATRIX, vaapi_driver_s::have_user_csc_matrix, va_property_t::max, va_property_t::min, vaapi_driver_s::props, va_property_t::type, vaapi_driver_s::user_csc_matrix, vaapi_driver_s::va_context, ff_vaapi_context_s::va_display, vaapi_driver_s::vaapi_cm_flags, vaapi_csc_mode_labels, vaapi_normalized_prop(), vaapi_set_csc_mode(), va_property_t::value, mem_frame_t::vo_frame, VO_PROP_BRIGHTNESS, VO_PROP_CONTRAST, VO_PROP_HUE, VO_PROP_SATURATION, vaapi_driver_s::xine, XINE_VERBOSITY_LOG, and xprintf.

Referenced by vaapi_hardware_render_frame().

## ◆ vaapi_vdr_osd_height_flag()

static void vaapi_vdr_osd_height_flag | ( | void * | this_gen,
|  | xine_cfg_entry_t * | entry
| ) |  |
| static

References xine_cfg_entry_s::num_value.

Referenced by vaapi_open_plugin().

## ◆ vaapi_vdr_osd_width_flag()

static void vaapi_vdr_osd_width_flag | ( | void * | this_gen,
|  | xine_cfg_entry_t * | entry
| ) |  |
| static

References xine_cfg_entry_s::num_value.

Referenced by vaapi_open_plugin().

## ◆ vaapi_x11_error_handler()

static int vaapi_x11_error_handler | ( | Display * | dpy,
|  | XErrorEvent * | error
| ) |  |
| static

References vaapi_x11_error_code.

Referenced by vaapi_x11_trap_errors().

## ◆ vaapi_x11_trap_errors()

static void vaapi_x11_trap_errors | ( | void |  | ) |
| static

References vaapi_x11_error_code, vaapi_x11_error_handler(), and vaapi_x11_old_error_handler.

Referenced by vaapi_dispose_locked(), vaapi_hardware_render_frame(), and vaapi_init_x11().

## ◆ vaapi_x11_untrap_errors()

static int vaapi_x11_untrap_errors | ( | void |  | ) |
| static

References vaapi_x11_error_code, and vaapi_x11_old_error_handler.

Referenced by vaapi_dispose_locked(), vaapi_hardware_render_frame(), and vaapi_init_x11().

## ◆ vaapi_x11_wait_event()

static void vaapi_x11_wait_event | ( | Display * | dpy,
|  | Window | w,
|  | int | type
| ) |  |
| static

References type, and xine_usec_sleep().

Referenced by vaapi_init_x11().

## Variable Documentation

## ◆ EXPORTED

const plugin_info_t xine_plugin_info [] EXPORTED

Initial value:
= {
{ PLUGIN_VIDEO_OUT, 22, "vaapi", XINE_VERSION_CODE, &vo_info_vaapi, vaapi_init_class },
{ PLUGIN_NONE, 0, NULL, 0, NULL, NULL }
}
vaapi_init_class
static void * vaapi_init_class(xine_t *xine, const void *visual_gen)
Definition: video_out_vaapi.c:3027
vo_info_vaapi
static const vo_info_t vo_info_vaapi
Definition: video_out_vaapi.c:3045
XINE_VERSION_CODE
#define XINE_VERSION_CODE
Definition: xine_internal.h:57
NULL
NULL
Definition: xine_plugin.c:78
PLUGIN_NONE
#define PLUGIN_NONE
Definition: xine_plugin.h:29
PLUGIN_VIDEO_OUT
#define PLUGIN_VIDEO_OUT
Definition: xine_plugin.h:36

## ◆ scaling_level_enum_names

const char* const scaling_level_enum_names[]
| static

Initial value:
= {
"default",
"fast",
"hq",
"nla",
NULL
}

Referenced by vaapi_init_internal(), and vaapi_open_plugin().

## ◆ scaling_level_enum_values

const int scaling_level_enum_values[]
| static

Initial value:
= {
VA_FILTER_SCALING_DEFAULT,
VA_FILTER_SCALING_FAST,
VA_FILTER_SCALING_HQ,
VA_FILTER_SCALING_NL_ANAMORPHIC
}

Referenced by vaapi_open_plugin().

## ◆ vaapi_csc_mode_labels

const char* const vaapi_csc_mode_labels[]
| static

Initial value:
= {
"user_matrix", "simple", "simple+2", "simple+3", NULL
}

Referenced by vaapi_update_csc().

## ◆ vaapi_x11_error_code

int vaapi_x11_error_code = 0
| static

Referenced by vaapi_x11_error_handler(), vaapi_x11_trap_errors(), and vaapi_x11_untrap_errors().

## ◆ vaapi_x11_old_error_handler

int(* vaapi_x11_old_error_handler) (Display *, XErrorEvent *) | ( | Display * | ,
|  | XErrorEvent * |
| ) |  |
| static

Referenced by vaapi_x11_trap_errors(), and vaapi_x11_untrap_errors().

## ◆ vo_info_vaapi

const vo_info_t vo_info_vaapi
| static

Initial value:
= {
.priority = 9,
.visual_type = XINE_VISUAL_TYPE_X11,
}
XINE_VISUAL_TYPE_X11
#define XINE_VISUAL_TYPE_X11
Definition: xine.h:154