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

xine-lib 1.2.12

Data Structures | Macros | Functions | Variables
video_out_vdpau.c File Reference
`#include <stdio.h>`
`#include <stdlib.h>`
`#include <unistd.h>`
`#include <string.h>`
`#include <math.h>`
`#include <errno.h>`
`#include <ctype.h>`
`#include <pthread.h>`
`#include <xine.h>`
`#include <xine/video_out.h>`
`#include <xine/vo_scale.h>`
`#include <xine/xine_internal.h>`
`#include <xine/xineutils.h>`
`#include <vdpau/vdpau_x11.h>`
`#include "accel_vdpau.h"`
`#include "color_matrix.c"`

## Data Structures
struct | vdpau_output_surface_t
struct | vdpau_grab_video_frame_t
struct | vdpau_frame_t
struct | vdpau_overlay_t
struct | vdpau_func_t
struct | vdpau_driver_t
struct | vdpau_class_t

## Macros
#define | LOG_MODULE "video_out_vdpau"
#define | NUM_FRAMES_BACK 1
#define | LOCKDISPLAY /*define this if you have a buggy libX11/xcb*/
#define | DEINT_BOB 1
#define | DEINT_HALF_TEMPORAL 2
#define | DEINT_HALF_TEMPORAL_SPATIAL 3
#define | DEINT_TEMPORAL 4
#define | DEINT_TEMPORAL_SPATIAL 5
#define | NUMBER_OF_DEINTERLACERS 5
#define | NOUTPUTSURFACEBUFFER 25
#define | NOUTPUTSURFACE 8
#define | CM_LUT
#define | CM_HAVE_YCGCO_SUPPORT 1
#define | CM_HAVE_BT2020_SUPPORT 1
#define | CM_DRIVER_T vdpau_driver_t
#define | DO_LOCKDISPLAY(this) XLockDisplay (this->display)
#define | DO_UNLOCKDISPLAY(this) XUnlockDisplay (this->display)
#define | VDPAU_IF_ERROR(msg)
#define | VDPAU_ERROR(msg) xprintf (this->xine, XINE_VERBOSITY_LOG, "vo_vdpau: " msg ": %s.\n", this->a.b.vdp_get_error_string (st))
#define | VDPAU_BAIL_REINIT(msg)
#define | VDPAU_INIT_BAIL(text)

## Functions
static void | vdpau_lockdisplay (vo_frame_t *frame)
static void | vdpau_unlockdisplay (vo_frame_t *frame)
static VdpStatus | vdpau_get_output_surface (vdpau_driver_t *this, uint32_t width, uint32_t height, vdpau_output_surface_t *r)
static void | vdpau_free_output_surface (vdpau_driver_t *this, vdpau_output_surface_t *os)
static void | vdpau_overlay_begin (vo_driver_t *this_gen, vo_frame_t *frame_gen, int changed)
static void | vdpau_overlay_blend (vo_driver_t *this_gen, vo_frame_t *frame_gen, vo_overlay_t *voovl)
static void | vdpau_overlay_end (vo_driver_t *this_gen, vo_frame_t *frame_gen)
static void | vdpau_process_overlays (vdpau_driver_t *this)
static void | vdpau_frame_proc_slice (vo_frame_t *vo_img, uint8_t **src)
static void | vdpau_frame_field (vo_frame_t *vo_img, int which_field)
static void | vdpau_frame_dispose (vo_frame_t *vo_img)
static vo_frame_t * | vdpau_alloc_frame (vo_driver_t *this_gen)
static void | vdpau_provide_standard_frame_data (vo_frame_t *frame, xine_current_frame_data_t *data)
static void | vdpau_duplicate_frame_data (vo_frame_t *frame_gen, vo_frame_t *original)
static void | vdpau_update_frame_format (vo_driver_t *this_gen, vo_frame_t *frame_gen, uint32_t width, uint32_t height, double ratio, int format, int flags)
static int | vdpau_redraw_needed (vo_driver_t *this_gen)
static int | vdpau_release_back_frames (vdpau_driver_t *this)
static void | vdpau_backup_frame (vdpau_driver_t *this, vdpau_frame_t *frame)
static void | vdpau_set_deinterlace (vdpau_driver_t *this)
static void | vdpau_set_inverse_telecine (vdpau_driver_t *this)
static void | vdpau_update_deinterlace_method_sd (void *this_gen, xine_cfg_entry_t *entry)
static void | vdpau_update_deinterlace_method_hd (void *this_gen, xine_cfg_entry_t *entry)
static void | vdpau_set_scaling_level (vdpau_driver_t *this)
static void | vdpau_update_scaling_level (void *this_gen, xine_cfg_entry_t *entry)
static void | vdpau_update_enable_inverse_telecine (void *this_gen, xine_cfg_entry_t *entry)
static void | vdpau_honor_progressive_flag (void *this_gen, xine_cfg_entry_t *entry)
static void | vdpau_update_noise (vdpau_driver_t *this)
static void | vdpau_update_sharpness (vdpau_driver_t *this)
static void | vdpau_update_sd_only_properties (void *this_gen, xine_cfg_entry_t *entry)
static void | vdpau_update_csc_matrix (vdpau_driver_t *this, vdpau_frame_t *frame)
static void | vdpau_update_skip_chroma (vdpau_driver_t *this)
static void | vdpau_set_skip_chroma (void *this_gen, xine_cfg_entry_t *entry)
static void | vdpau_update_background (vdpau_driver_t *this)
static void | vdpau_set_background (void *this_gen, xine_cfg_entry_t *entry)
static void | vdpau_shift_queue (vdpau_driver_t *this)
static void | vdpau_check_output_size (vdpau_driver_t *this)
static void | vdpau_grab_current_output_surface (vdpau_driver_t *this, int64_t vpts)
static VdpStatus | vdpau_new_video_mixer (vdpau_driver_t *this)
static void | vdpau_update_display_dimension (vdpau_driver_t *this)
static void | vdp_preemption_callback (VdpDevice device, void *context)
static void | vdpau_reinit (vdpau_driver_t *this)
static void | vdpau_display_frame (vo_driver_t *this_gen, vo_frame_t *frame_gen)
static int | vdpau_get_property (vo_driver_t *this_gen, int property)
static int | vdpau_set_property (vo_driver_t *this_gen, int property, int value)
static void | vdpau_get_property_min_max (vo_driver_t *this_gen, int property, int *min, int *max)
static void | vdpau_dispose_grab_video_frame (xine_grab_video_frame_t *frame_gen)
static int | vdpau_grab_grab_video_frame (xine_grab_video_frame_t *frame_gen)
static xine_grab_video_frame_t * | vdpau_new_grab_video_frame (vo_driver_t *this)
static void | vdpau_set_process_snapshots (void *this_gen, xine_cfg_entry_t *entry)
static int | vdpau_gui_data_exchange (vo_driver_t *this_gen, int data_type, void *data)
static uint32_t | vdpau_get_capabilities (vo_driver_t *this_gen)
static void | vdpau_dispose (vo_driver_t *this_gen)
static int | vdpau_get_funcs (vdpau_driver_t *this)
static vo_driver_t * | vdpau_open_plugin (video_driver_class_t *class_gen, const void *visual_gen)
static void * | vdpau_init_class (xine_t *xine, const void *visual_gen)

## Variables
static const char *const | vdpau_deinterlacer_name []
static const char *const | vdpau_deinterlacer_description []
static const char *const | vdpau_sd_only_properties []
static const VdpOutputSurfaceRenderBlendState | blend
static const vdpau_func_t | vdpau_funcs []
static const vo_info_t | vo_info_vdpau
const plugin_info_t xine_plugin_info[] | EXPORTED

## Macro Definition Documentation

## ◆ CM_DRIVER_T

#define CM_DRIVER_T vdpau_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

## ◆ DEINT_BOB

#define DEINT_BOB 1

## ◆ DEINT_HALF_TEMPORAL

#define DEINT_HALF_TEMPORAL 2

## ◆ DEINT_HALF_TEMPORAL_SPATIAL

#define DEINT_HALF_TEMPORAL_SPATIAL 3

## ◆ DEINT_TEMPORAL

#define DEINT_TEMPORAL 4

## ◆ DEINT_TEMPORAL_SPATIAL

#define DEINT_TEMPORAL_SPATIAL 5

## ◆ DO_LOCKDISPLAY

#define DO_LOCKDISPLAY | ( |  | this | ) | XLockDisplay (this->display)

## ◆ DO_UNLOCKDISPLAY

#define DO_UNLOCKDISPLAY | ( |  | this | ) | XUnlockDisplay (this->display)

## ◆ LOCKDISPLAY

#define LOCKDISPLAY /*define this if you have a buggy libX11/xcb*/

## ◆ LOG_MODULE

#define LOG_MODULE "video_out_vdpau"

## ◆ NOUTPUTSURFACE

#define NOUTPUTSURFACE 8

## ◆ NOUTPUTSURFACEBUFFER

#define NOUTPUTSURFACEBUFFER 25

## ◆ NUM_FRAMES_BACK

#define NUM_FRAMES_BACK 1

## ◆ NUMBER_OF_DEINTERLACERS

#define NUMBER_OF_DEINTERLACERS 5

## ◆ VDPAU_BAIL_REINIT

#define VDPAU_BAIL_REINIT | ( |  | msg | ) |

Value:
if (st != VDP_STATUS_OK) { \
xprintf (this->xine, XINE_VERBOSITY_LOG, "vo_vdpau: %s: %s.\n", msg, this->a.b.vdp_get_error_string (st)); \
DO_UNLOCKDISPLAY (this); \
}
XINE_VERBOSITY_LOG
#define XINE_VERBOSITY_LOG
Definition: xine.h:429

## ◆ VDPAU_ERROR

#define VDPAU_ERROR | ( |  | msg | ) | xprintf (this->xine, XINE_VERBOSITY_LOG, "vo_vdpau: " msg ": %s.\n", this->a.b.vdp_get_error_string (st))

## ◆ VDPAU_IF_ERROR

#define VDPAU_IF_ERROR | ( |  | msg | ) |

Value:
if (st != VDP_STATUS_OK) \
xprintf (this->xine, XINE_VERBOSITY_LOG, "vo_vdpau: " msg ": %s.\n", this->a.b.vdp_get_error_string (st))

## ◆ VDPAU_INIT_BAIL

#define VDPAU_INIT_BAIL | ( |  | text | ) |

Value:
if (st != VDP_STATUS_OK) { \
xprintf (this->xine, XINE_VERBOSITY_LOG, "vo_vdpau: %s: %s.\n", text, this->a.b.vdp_get_error_string (st)); \
this->vo_driver.dispose (&this->vo_driver); \
return NULL; \
}
NULL
NULL
Definition: xine_plugin.c:78

## Function Documentation

## ◆ vdp_preemption_callback()

static void vdp_preemption_callback | ( | VdpDevice | device,
|  | void * | context
| ) |  |
| static

References XINE_VERBOSITY_DEBUG, and xprintf.

Referenced by vdpau_open_plugin(), and vdpau_reinit().

## ◆ vdpau_alloc_frame()

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

References vo_frame_s::accel_data, vo_frame_s::base, vdpau_accel_t::chroma, vdpau_accel_t::current_vdp_runtime_nr, vo_frame_s::dispose, vo_frame_s::driver, vo_frame_s::field, vdpau_frame_t::flags, vdpau_frame_t::format, vdpau_frame_t::height, vdpau_accel_t::lock, lprintf, vo_frame_s::mutex, NULL, vo_frame_s::proc_duplicate_frame_data, vo_frame_s::proc_frame, vo_frame_s::proc_slice, vdpau_accel_t::surface, vdpau_frame_t::surface_cleared_nr, vdpau_accel_t::unlock, vdpau_accel_t::vdp_decoder_create, vdpau_accel_t::vdp_decoder_destroy, vdpau_accel_t::vdp_decoder_render, vdpau_accel_t::vdp_device, vdpau_accel_t::vdp_get_error_string, vdpau_accel_t::vdp_runtime_nr, vdpau_frame_t::vdpau_accel_data, vdpau_frame_dispose(), vdpau_frame_field(), vdpau_frame_proc_slice(), vdpau_lockdisplay(), vdpau_unlockdisplay(), vdpau_frame_t::vo_frame, vdpau_accel_t::vo_frame, and vdpau_frame_t::width.

Referenced by vdpau_open_plugin().

## ◆ vdpau_backup_frame()

static void vdpau_backup_frame | ( | vdpau_driver_t * | this,
|  | vdpau_frame_t * | frame
| ) |  |
| static

References NUM_FRAMES_BACK.

Referenced by vdpau_display_frame().

## ◆ vdpau_check_output_size()

static void vdpau_check_output_size | ( | vdpau_driver_t * | this | ) |
| static

References DO_LOCKDISPLAY, DO_UNLOCKDISPLAY, lprintf, and VDPAU_IF_ERROR.

Referenced by vdpau_display_frame().

## ◆ vdpau_display_frame()

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

References vo_frame_s::base, vo_frame_s::crop_bottom, vo_frame_s::crop_left, vo_frame_s::crop_right, vo_frame_s::crop_top, DEINT_HALF_TEMPORAL, DEINT_HALF_TEMPORAL_SPATIAL, DO_LOCKDISPLAY, DO_UNLOCKDISPLAY, vo_frame_s::duration, vo_frame_s::flags, vdpau_frame_t::format, vo_frame_s::free, vo_frame_s::future_frame, vdpau_frame_t::height, lprintf, NULL, vo_frame_s::pitches, vo_frame_s::progressive_frame, vo_frame_s::pts, vdpau_frame_t::ratio, vo_frame_s::stream, vdpau_accel_t::surface, vo_frame_s::top_field_first, vdpau_frame_t::vdpau_accel_data, vdpau_backup_frame(), vdpau_check_output_size(), vdpau_grab_current_output_surface(), VDPAU_IF_ERROR, vdpau_new_video_mixer(), vdpau_process_overlays(), vdpau_redraw_needed(), vdpau_reinit(), vdpau_release_back_frames(), vdpau_set_deinterlace(), vdpau_set_inverse_telecine(), vdpau_set_scaling_level(), vdpau_shift_queue(), vdpau_update_background(), vdpau_update_csc_matrix(), vdpau_update_noise(), vdpau_update_sharpness(), vdpau_update_skip_chroma(), VO_CHROMA_422, vdpau_frame_t::vo_frame, VO_STILL_IMAGE, vo_frame_s::vpts, vdpau_frame_t::width, XINE_FINE_SPEED_NORMAL, xine_get_param(), XINE_IMGFMT_VDPAU, XINE_IMGFMT_YUY2, XINE_IMGFMT_YV12, XINE_PARAM_FINE_SPEED, XINE_VERBOSITY_LOG, and xprintf.

Referenced by vdpau_open_plugin().

## ◆ vdpau_dispose()

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

References _x_vo_scale_cleanup(), DO_LOCKDISPLAY, DO_UNLOCKDISPLAY, NUM_FRAMES_BACK, vdpau_overlay_t::render_surface, and vdpau_output_surface_t::surface.

Referenced by vdpau_open_plugin().

## ◆ vdpau_dispose_grab_video_frame()

static void vdpau_dispose_grab_video_frame | ( | xine_grab_video_frame_t * | frame_gen | ) |
| static

References vdpau_grab_video_frame_t::grab_frame, xine_grab_video_frame_s::img, and vdpau_grab_video_frame_t::rgba.

Referenced by vdpau_new_grab_video_frame().

## ◆ vdpau_duplicate_frame_data()

static void vdpau_duplicate_frame_data | ( | vo_frame_t * | frame_gen,
|  | vo_frame_t * | original
| ) |  |
| static

References DO_LOCKDISPLAY, DO_UNLOCKDISPLAY, vo_frame_s::driver, vdpau_frame_t::flags, vo_frame_s::format, vo_frame_s::height, NULL, vdpau_accel_t::surface, vdpau_accel_t::vdp_runtime_nr, vdpau_frame_t::vdpau_accel_data, VDPAU_IF_ERROR, VO_CHROMA_422, vdpau_frame_t::vo_frame, vo_frame_s::width, xine_freep_aligned, XINE_IMGFMT_VDPAU, xine_malloc_aligned(), XINE_VERBOSITY_LOG, and xprintf.

Referenced by vdpau_update_frame_format().

## ◆ vdpau_frame_dispose()

static void vdpau_frame_dispose | ( | vo_frame_t * | vo_img | ) |
| static

References vo_frame_s::base, DO_LOCKDISPLAY, DO_UNLOCKDISPLAY, vo_frame_s::driver, vo_frame_s::mutex, NULL, vdpau_accel_t::surface, vdpau_frame_t::vdpau_accel_data, vdpau_frame_t::vo_frame, and xine_freep_aligned.

Referenced by vdpau_alloc_frame().

## ◆ vdpau_frame_field()

static void vdpau_frame_field | ( | vo_frame_t * | vo_img,
|  | int | which_field
| ) |  |
| static

Referenced by vdpau_alloc_frame(), and vdpau_update_frame_format().

## ◆ vdpau_frame_proc_slice()

static void vdpau_frame_proc_slice | ( | vo_frame_t * | vo_img,
|  | uint8_t ** | src
| ) |  |
| static

References vo_frame_s::proc_called.

Referenced by vdpau_alloc_frame().

## ◆ vdpau_free_output_surface()

static void vdpau_free_output_surface | ( | vdpau_driver_t * | this,
|  | vdpau_output_surface_t * | os
| ) |  |
| static

References DO_LOCKDISPLAY, DO_UNLOCKDISPLAY, lprintf, NULL, vdpau_output_surface_t::size, vdpau_output_surface_t::surface, and VDPAU_IF_ERROR.

Referenced by vdpau_grab_current_output_surface(), vdpau_overlay_end(), and vdpau_process_overlays().

## ◆ vdpau_get_capabilities()

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

Referenced by vdpau_open_plugin().

## ◆ vdpau_get_funcs()

static int vdpau_get_funcs | ( | vdpau_driver_t * | this | ) |
| static

References vdpau_func_t::id, vdpau_func_t::name, vdpau_funcs, XINE_VERBOSITY_LOG, and xprintf.

Referenced by vdpau_open_plugin().

## ◆ vdpau_get_output_surface()

static VdpStatus vdpau_get_output_surface | ( | vdpau_driver_t * | this,
|  | uint32_t | width,
|  | uint32_t | height,
|  | vdpau_output_surface_t * | r
| ) |  |
| static

References DO_LOCKDISPLAY, DO_UNLOCKDISPLAY, height, vdpau_output_surface_t::height, lprintf, NULL, vdpau_output_surface_t::size, vdpau_output_surface_t::surface, VDPAU_IF_ERROR, width, and vdpau_output_surface_t::width.

Referenced by vdpau_grab_current_output_surface(), vdpau_overlay_end(), and vdpau_process_overlays().

## ◆ vdpau_get_property()

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

References contrast, noise(), VO_PROP_ASPECT_RATIO, VO_PROP_BRIGHTNESS, VO_PROP_CONTRAST, VO_PROP_HUE, VO_PROP_MAX_NUM_FRAMES, VO_PROP_NOISE_REDUCTION, VO_PROP_OUTPUT_HEIGHT, VO_PROP_OUTPUT_WIDTH, VO_PROP_OUTPUT_XOFFSET, VO_PROP_OUTPUT_YOFFSET, VO_PROP_SATURATION, VO_PROP_SHARPNESS, VO_PROP_WINDOW_HEIGHT, VO_PROP_WINDOW_WIDTH, VO_PROP_ZOOM_X, and VO_PROP_ZOOM_Y.

Referenced by vdpau_open_plugin().

## ◆ vdpau_get_property_min_max()

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

References VO_PROP_BRIGHTNESS, VO_PROP_CONTRAST, VO_PROP_HUE, VO_PROP_NOISE_REDUCTION, VO_PROP_SATURATION, and VO_PROP_SHARPNESS.

Referenced by vdpau_open_plugin().

## ◆ vdpau_grab_current_output_surface()

static void vdpau_grab_current_output_surface | ( | vdpau_driver_t * | this,
|  | int64_t | vpts
| ) |  |
| static

References xine_grab_video_frame_s::crop_bottom, xine_grab_video_frame_s::crop_left, xine_grab_video_frame_s::crop_right, xine_grab_video_frame_s::crop_top, vdpau_grab_video_frame_t::grab_frame, xine_grab_video_frame_s::height, height, vdpau_grab_video_frame_t::height, xine_grab_video_frame_s::img, lprintf, NULL, vdpau_grab_video_frame_t::render_surface, vdpau_grab_video_frame_t::rgba, vdpau_output_surface_t::surface, VDPAU_ERROR, vdpau_free_output_surface(), vdpau_get_output_surface(), VDPAU_IF_ERROR, xine_grab_video_frame_s::vpts, xine_grab_video_frame_s::width, width, and vdpau_grab_video_frame_t::width.

Referenced by vdpau_display_frame(), and vdpau_grab_grab_video_frame().

## ◆ vdpau_grab_grab_video_frame()

static int vdpau_grab_grab_video_frame | ( | xine_grab_video_frame_t * | frame_gen | ) |
| static

References xine_grab_video_frame_s::flags, vdpau_grab_video_frame_t::grab_frame, vdpau_grab_current_output_surface(), vdpau_grab_video_frame_t::vo_driver, and XINE_GRAB_VIDEO_FRAME_FLAGS_WAIT_NEXT.

Referenced by vdpau_new_grab_video_frame().

## ◆ vdpau_gui_data_exchange()

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

References _x_vo_scale_translate_gui2video(), DO_LOCKDISPLAY, DO_UNLOCKDISPLAY, x11_rectangle_t::h, VDPAU_ERROR, 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, and x11_rectangle_t::y.

Referenced by vdpau_open_plugin().

## ◆ vdpau_honor_progressive_flag()

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

References lprintf, and xine_cfg_entry_s::num_value.

Referenced by vdpau_open_plugin().

## ◆ vdpau_init_class()

static void * vdpau_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, vdpau_class_t::driver_class, video_driver_class_s::identifier, N_, NULL, video_driver_class_s::open_plugin, vdpau_open_plugin(), and vdpau_class_t::xine.

## ◆ vdpau_lockdisplay()

static void vdpau_lockdisplay | ( | vo_frame_t * | frame | ) |
| static

References vo_frame_s::driver.

Referenced by vdpau_alloc_frame().

## ◆ vdpau_new_grab_video_frame()

static xine_grab_video_frame_t * vdpau_new_grab_video_frame | ( | vo_driver_t * | this | ) |
| static

References xine_grab_video_frame_s::dispose, xine_grab_video_frame_s::grab, vdpau_grab_video_frame_t::grab_frame, vdpau_grab_video_frame_t::render_surface, vdpau_output_surface_t::surface, xine_grab_video_frame_s::timeout, vdpau_dispose_grab_video_frame(), vdpau_grab_grab_video_frame(), vdpau_grab_video_frame_t::vo_driver, xine_grab_video_frame_s::vpts, and XINE_GRAB_VIDEO_FRAME_DEFAULT_TIMEOUT.

Referenced by vdpau_open_plugin(), and vdpau_set_process_snapshots().

## ◆ vdpau_new_video_mixer()

static VdpStatus vdpau_new_video_mixer | ( | vdpau_driver_t * | this | ) |
| static

Referenced by vdpau_display_frame(), vdpau_open_plugin(), and vdpau_reinit().

## ◆ vdpau_open_plugin()

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

References _, _x_vo_scale_init(), xine_s::config, contrast, DEINT_BOB, DEINT_HALF_TEMPORAL, DEINT_HALF_TEMPORAL_SPATIAL, DEINT_TEMPORAL, DEINT_TEMPORAL_SPATIAL, DO_LOCKDISPLAY, DO_UNLOCKDISPLAY, noise(), NOUTPUTSURFACE, NOUTPUTSURFACEBUFFER, NULL, NUM_FRAMES_BACK, config_values_s::register_bool, config_values_s::register_enum, config_values_s::register_num, config_values_s::register_range, config_values_s::update_num, vdp_preemption_callback(), vdpau_alloc_frame(), vdpau_deinterlacer_description, vdpau_deinterlacer_name, vdpau_display_frame(), vdpau_dispose(), vdpau_get_capabilities(), vdpau_get_funcs(), vdpau_get_property(), vdpau_get_property_min_max(), vdpau_gui_data_exchange(), vdpau_honor_progressive_flag(), VDPAU_IF_ERROR, VDPAU_INIT_BAIL, vdpau_new_grab_video_frame(), vdpau_new_video_mixer(), vdpau_overlay_begin(), vdpau_overlay_blend(), vdpau_overlay_end(), vdpau_redraw_needed(), vdpau_sd_only_properties, vdpau_set_background(), vdpau_set_process_snapshots(), vdpau_set_property(), vdpau_set_skip_chroma(), vdpau_update_deinterlace_method_hd(), vdpau_update_deinterlace_method_sd(), vdpau_update_display_dimension(), vdpau_update_enable_inverse_telecine(), vdpau_update_frame_format(), vdpau_update_scaling_level(), vdpau_update_sd_only_properties(), VO_CAP_ARGB_LAYER_OVERLAY, VO_CAP_BRIGHTNESS, VO_CAP_COLOR_MATRIX, VO_CAP_CONTRAST, VO_CAP_CROP, VO_CAP_CUSTOM_EXTENT_OVERLAY, VO_CAP_FULLRANGE, VO_CAP_HUE, VO_CAP_NOISE_REDUCTION, VO_CAP_SATURATION, VO_CAP_SHARPNESS, VO_CAP_UNSCALED_OVERLAY, VO_CAP_VDPAU_H264, VO_CAP_VDPAU_MPEG12, VO_CAP_VDPAU_MPEG4, VO_CAP_VDPAU_VC1, VO_CAP_VIDEO_WINDOW_OVERLAY, VO_CAP_YUY2, VO_CAP_YV12, config_values_s::xine, vdpau_class_t::xine, XINE_IMGFMT_YV12, XINE_VERBOSITY_DEBUG, XINE_VERBOSITY_LOG, XINE_VO_ASPECT_AUTO, and xprintf.

Referenced by vdpau_init_class().

## ◆ vdpau_overlay_begin()

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

References lprintf.

Referenced by vdpau_open_plugin().

## ◆ vdpau_overlay_blend()

static void vdpau_overlay_blend | ( | vo_driver_t * | this_gen,
|  | vo_frame_t * | frame_gen,
|  | vo_overlay_t * | voovl
| ) |  |
| static

References vo_overlay_s::argb_layer, argb_layer_s::buffer, vo_overlay_s::extent_height, vdpau_overlay_t::extent_height, vo_overlay_s::extent_width, vdpau_overlay_t::extent_width, vo_overlay_s::height, vdpau_overlay_t::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, vdpau_overlay_t::ovl, vdpau_overlay_t::render_surface, vo_overlay_s::rgb_clut, vo_overlay_s::rle, vdpau_output_surface_t::surface, vo_overlay_s::unscaled, vdpau_overlay_t::unscaled, vdpau_overlay_t::use_dirty_rect, vo_overlay_s::video_window_height, vdpau_overlay_t::video_window_height, vo_overlay_s::video_window_width, vdpau_overlay_t::video_window_width, vo_overlay_s::video_window_x, vdpau_overlay_t::video_window_x, vo_overlay_s::video_window_y, vdpau_overlay_t::video_window_y, vo_overlay_s::width, vdpau_overlay_t::width, vo_overlay_s::x, vdpau_overlay_t::x, argb_layer_s::x1, argb_layer_s::x2, XINE_VORAW_MAX_OVL, vo_overlay_s::y, vdpau_overlay_t::y, argb_layer_s::y1, and argb_layer_s::y2.

Referenced by vdpau_open_plugin().

## ◆ vdpau_overlay_end()

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

References _x_overlay_clut_yuv2rgb(), _x_overlay_to_argb32(), vo_overlay_s::argb_layer, argb_layer_s::buffer, vdpau_overlay_t::height, vo_overlay_s::hili_rgb_clut, lprintf, argb_layer_s::mutex, vdpau_overlay_t::ovl, vdpau_overlay_t::render_surface, vo_overlay_s::rgb_clut, vo_overlay_s::rle, vdpau_output_surface_t::surface, vdpau_overlay_t::use_dirty_rect, vdpau_free_output_surface(), vdpau_get_output_surface(), VDPAU_IF_ERROR, vdpau_overlay_t::width, argb_layer_s::x1, argb_layer_s::x2, argb_layer_s::y1, and argb_layer_s::y2.

Referenced by vdpau_open_plugin().

## ◆ vdpau_process_overlays()

static void vdpau_process_overlays | ( | vdpau_driver_t * | this | ) |
| static

References blend, vdpau_overlay_t::extent_height, vdpau_overlay_t::extent_width, vdpau_overlay_t::height, lprintf, NULL, vdpau_overlay_t::render_surface, vdpau_output_surface_t::surface, vdpau_overlay_t::unscaled, vdpau_free_output_surface(), vdpau_get_output_surface(), VDPAU_IF_ERROR, vdpau_overlay_t::video_window_height, vdpau_overlay_t::video_window_width, vdpau_overlay_t::video_window_x, vdpau_overlay_t::video_window_y, vdpau_overlay_t::width, vdpau_overlay_t::x, XINE_VORAW_MAX_OVL, and vdpau_overlay_t::y.

Referenced by vdpau_display_frame().

## ◆ vdpau_provide_standard_frame_data()

static void vdpau_provide_standard_frame_data | ( | vo_frame_t * | frame,
|  | xine_current_frame_data_t * | data
| ) |  |
| static

References vo_frame_s::accel_data, vdpau_accel_t::chroma, vdpau_accel_t::current_vdp_runtime_nr, vo_frame_s::driver, xine_current_frame_data_s::format, vo_frame_s::format, vo_frame_s::height, xine_current_frame_data_s::img, xine_current_frame_data_s::img_size, vdpau_accel_t::surface, vdpau_accel_t::vdp_runtime_nr, VDPAU_IF_ERROR, vdpau_accel_t::vo_frame, vo_frame_s::width, XINE_IMGFMT_VDPAU, XINE_IMGFMT_YUY2, XINE_IMGFMT_YV12, XINE_VERBOSITY_LOG, and xprintf.

Referenced by vdpau_update_frame_format().

## ◆ vdpau_redraw_needed()

static int vdpau_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 vdpau_display_frame(), and vdpau_open_plugin().

## ◆ vdpau_reinit()

static void vdpau_reinit | ( | vdpau_driver_t * | this | ) |
| static

References DO_LOCKDISPLAY, DO_UNLOCKDISPLAY, vdp_preemption_callback(), VDPAU_BAIL_REINIT, vdpau_new_video_mixer(), vdpau_release_back_frames(), vdpau_set_deinterlace(), vdpau_set_inverse_telecine(), vdpau_set_scaling_level(), vdpau_update_background(), vdpau_update_display_dimension(), vdpau_update_noise(), vdpau_update_sharpness(), vdpau_update_skip_chroma(), XINE_VERBOSITY_DEBUG, XINE_VERBOSITY_LOG, and xprintf.

Referenced by vdpau_display_frame().

## ◆ vdpau_release_back_frames()

static int vdpau_release_back_frames | ( | vdpau_driver_t * | this | ) |
| static

References NULL, and NUM_FRAMES_BACK.

Referenced by vdpau_display_frame(), vdpau_reinit(), and vdpau_set_property().

## ◆ vdpau_set_background()

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

References xine_cfg_entry_s::num_value, and vdpau_update_background().

Referenced by vdpau_open_plugin().

## ◆ vdpau_set_deinterlace()

static void vdpau_set_deinterlace | ( | vdpau_driver_t * | this | ) |
| static

References DEINT_BOB, DEINT_HALF_TEMPORAL, DEINT_HALF_TEMPORAL_SPATIAL, DEINT_TEMPORAL, DEINT_TEMPORAL_SPATIAL, and lprintf.

Referenced by vdpau_display_frame(), vdpau_reinit(), vdpau_set_property(), vdpau_update_deinterlace_method_hd(), and vdpau_update_deinterlace_method_sd().

## ◆ vdpau_set_inverse_telecine()

static void vdpau_set_inverse_telecine | ( | vdpau_driver_t * | this | ) |
| static

References lprintf.

Referenced by vdpau_display_frame(), vdpau_reinit(), and vdpau_update_enable_inverse_telecine().

## ◆ vdpau_set_process_snapshots()

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

References NULL, xine_cfg_entry_s::num_value, and vdpau_new_grab_video_frame().

Referenced by vdpau_open_plugin().

## ◆ vdpau_set_property()

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

References _x_vo_scale_compute_ideal_size(), contrast, lprintf, noise(), vdpau_release_back_frames(), vdpau_set_deinterlace(), vdpau_update_noise(), vdpau_update_sharpness(), VO_PROP_ASPECT_RATIO, VO_PROP_BRIGHTNESS, VO_PROP_CONTRAST, VO_PROP_DISCARD_FRAMES, VO_PROP_HUE, VO_PROP_INTERLACED, VO_PROP_NOISE_REDUCTION, VO_PROP_SATURATION, VO_PROP_SHARPNESS, 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 vdpau_open_plugin().

## ◆ vdpau_set_scaling_level()

static void vdpau_set_scaling_level | ( | vdpau_driver_t * | this | ) |
| static

References lprintf.

Referenced by vdpau_display_frame(), vdpau_reinit(), and vdpau_update_scaling_level().

## ◆ vdpau_set_skip_chroma()

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

References xine_cfg_entry_s::num_value, and vdpau_update_skip_chroma().

Referenced by vdpau_open_plugin().

## ◆ vdpau_shift_queue()

static void vdpau_shift_queue | ( | vdpau_driver_t * | this | ) |
| static

Referenced by vdpau_display_frame().

## ◆ vdpau_unlockdisplay()

static void vdpau_unlockdisplay | ( | vo_frame_t * | frame | ) |
| static

References vo_frame_s::driver.

Referenced by vdpau_alloc_frame().

## ◆ vdpau_update_background()

static void vdpau_update_background | ( | vdpau_driver_t * | this | ) |
| static

References lprintf, and VDPAU_ERROR.

Referenced by vdpau_display_frame(), vdpau_reinit(), and vdpau_set_background().

## ◆ vdpau_update_csc_matrix()

static void vdpau_update_csc_matrix | ( | vdpau_driver_t * | this,
|  | vdpau_frame_t * | frame
| ) |  |
| static

References cm_names, contrast, VDPAU_IF_ERROR, vdpau_frame_t::vo_frame, XINE_VERBOSITY_LOG, and xprintf.

Referenced by vdpau_display_frame().

## ◆ vdpau_update_deinterlace_method_hd()

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

References lprintf, xine_cfg_entry_s::num_value, and vdpau_set_deinterlace().

Referenced by vdpau_open_plugin().

## ◆ vdpau_update_deinterlace_method_sd()

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

References lprintf, xine_cfg_entry_s::num_value, and vdpau_set_deinterlace().

Referenced by vdpau_open_plugin().

## ◆ vdpau_update_display_dimension()

static void vdpau_update_display_dimension | ( | vdpau_driver_t * | this | ) |
| static

Referenced by vdpau_open_plugin(), and vdpau_reinit().

## ◆ vdpau_update_enable_inverse_telecine()

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

References lprintf, xine_cfg_entry_s::num_value, and vdpau_set_inverse_telecine().

Referenced by vdpau_open_plugin().

## ◆ vdpau_update_frame_format()

static void vdpau_update_frame_format | ( | vo_driver_t * | this_gen,
|  | vo_frame_t * | frame_gen,
|  | uint32_t | width,
|  | uint32_t | height,
|  | double | ratio,
|  | int | format,
|  | int | flags
| ) |  |
| static

References vo_frame_s::base, vdpau_accel_t::chroma, vo_frame_s::crop_bottom, vo_frame_s::crop_right, DO_LOCKDISPLAY, DO_UNLOCKDISPLAY, vdpau_frame_t::flags, vdpau_frame_t::format, vo_frame_s::future_frame, vo_frame_s::height, height, vdpau_frame_t::height, lprintf, NULL, vo_frame_s::pitches, vo_frame_s::proc_duplicate_frame_data, vo_frame_s::proc_provide_standard_frame_data, vdpau_frame_t::ratio, vdpau_accel_t::surface, vdpau_frame_t::surface_cleared_nr, vdpau_accel_t::vdp_device, vdpau_accel_t::vdp_runtime_nr, vdpau_frame_t::vdpau_accel_data, vdpau_duplicate_frame_data(), vdpau_frame_field(), VDPAU_IF_ERROR, vdpau_provide_standard_frame_data(), VO_CHROMA_422, vdpau_frame_t::vo_frame, VO_NEW_SEQUENCE_FLAG, vo_frame_s::width, width, vdpau_frame_t::width, xine_freep_aligned, XINE_IMGFMT_VDPAU, XINE_IMGFMT_YUY2, XINE_IMGFMT_YV12, xine_malloc_aligned(), XINE_VERBOSITY_LOG, and xprintf.

Referenced by vdpau_open_plugin().

## ◆ vdpau_update_noise()

static void vdpau_update_noise | ( | vdpau_driver_t * | this | ) |
| static

References lprintf, noise(), and VDPAU_IF_ERROR.

Referenced by vdpau_display_frame(), vdpau_reinit(), vdpau_set_property(), and vdpau_update_sd_only_properties().

## ◆ vdpau_update_scaling_level()

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

References lprintf, xine_cfg_entry_s::num_value, and vdpau_set_scaling_level().

Referenced by vdpau_open_plugin().

## ◆ vdpau_update_sd_only_properties()

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

References lprintf, xine_cfg_entry_s::num_value, vdpau_update_noise(), and vdpau_update_sharpness().

Referenced by vdpau_open_plugin().

## ◆ vdpau_update_sharpness()

static void vdpau_update_sharpness | ( | vdpau_driver_t * | this | ) |
| static

References lprintf, and VDPAU_IF_ERROR.

Referenced by vdpau_display_frame(), vdpau_reinit(), vdpau_set_property(), and vdpau_update_sd_only_properties().

## ◆ vdpau_update_skip_chroma()

static void vdpau_update_skip_chroma | ( | vdpau_driver_t * | this | ) |
| static

References lprintf, and VDPAU_ERROR.

Referenced by vdpau_display_frame(), vdpau_reinit(), and vdpau_set_skip_chroma().

## Variable Documentation

## ◆ blend

const VdpOutputSurfaceRenderBlendState blend
| static

Initial value:
= {
VDP_OUTPUT_SURFACE_RENDER_BLEND_STATE_VERSION,
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE,
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_SRC_COLOR,
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE,
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA,
VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_ADD,
VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_ADD,
{ 0.f, 0.f, 0.f, 0.f }
}

Referenced by vdpau_process_overlays().

## ◆ EXPORTED

const plugin_info_t xine_plugin_info [] EXPORTED

Initial value:
= {
{ PLUGIN_VIDEO_OUT, 22, "vdpau", XINE_VERSION_CODE, &vo_info_vdpau, vdpau_init_class },
{ PLUGIN_NONE, 0, NULL, 0, NULL, NULL }
}
vo_info_vdpau
static const vo_info_t vo_info_vdpau
Definition: video_out_vdpau.c:3153
vdpau_init_class
static void * vdpau_init_class(xine_t *xine, const void *visual_gen)
Definition: video_out_vdpau.c:3133
XINE_VERSION_CODE
#define XINE_VERSION_CODE
Definition: xine_internal.h:57
PLUGIN_NONE
#define PLUGIN_NONE
Definition: xine_plugin.h:29
PLUGIN_VIDEO_OUT
#define PLUGIN_VIDEO_OUT
Definition: xine_plugin.h:36

## ◆ vdpau_deinterlacer_description

const char* const vdpau_deinterlacer_description[]
| static

Initial value:
= {
"bob\nBasic deinterlacing, doing 50i->50p.\n\n",
"half temporal\nDisplays first field only, doing 50i->25p\n\n",
"half temporal_spatial\nDisplays first field only, doing 50i->25p\n\n",
"temporal\nVery good, 50i->50p\n\n",
"temporal_spatial\nThe best, but very GPU intensive.\n\n",
NULL
}

Referenced by vdpau_open_plugin().

## ◆ vdpau_deinterlacer_name

const char* const vdpau_deinterlacer_name[]
| static

Initial value:
= {
"bob",
"half temporal",
"half temporal_spatial",
"temporal",
"temporal_spatial",
NULL
}

Referenced by vdpau_open_plugin().

## ◆ vdpau_funcs

const vdpau_func_t vdpau_funcs[]
| static

Referenced by vdpau_get_funcs().

## ◆ vdpau_sd_only_properties

const char* const vdpau_sd_only_properties[]
| static

Initial value:
= {
"none",
"noise",
"sharpness",
"noise+sharpness",
NULL
}

Referenced by vdpau_open_plugin().

## ◆ vo_info_vdpau

const vo_info_t vo_info_vdpau
| static

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