vdpau.h | vdpau.h | |||
---|---|---|---|---|
skipping to change at line 1236 | skipping to change at line 1236 | |||
/*@}*/ | /*@}*/ | |||
/** | /** | |||
* \defgroup versioning Versioning | * \defgroup versioning Versioning | |||
* | * | |||
* | * | |||
* @{ | * @{ | |||
*/ | */ | |||
/** | /** | |||
* \brief The VDPAU interface version described by this header file. | ||||
* | ||||
* This version will only increase if a major incompatible change is made. | ||||
* For example, if the parameters passed to an existing function are modifi | ||||
ed, | ||||
* rather than simply adding new functions/enumerations), or if the mechani | ||||
sm | ||||
* used to load the backend driver is modified incompatibly. Such changes a | ||||
re | ||||
* unlikely. | ||||
* | ||||
* This value also represents the DSO version of VDPAU-related | ||||
* shared-libraries. | ||||
* | ||||
* VDPAU version numbers are simple integers that increase monotonically | ||||
* (typically by value 1). | ||||
*/ | ||||
#define VDPAU_INTERFACE_VERSION 1 | ||||
/** | ||||
* \brief The VDPAU version described by this header file. | * \brief The VDPAU version described by this header file. | |||
* | * | |||
* Note that VDPAU version numbers are simple integers that | * This version will increase whenever any non-documentation change is made | |||
* increase monotonically (typically by value 1) with each VDPAU | to | |||
* header revision. | * vdpau.h, or related header files such as vdpau_x11.h. Such changes | |||
* typically involve the addition of new functions, constants, or features. | ||||
* Such changes are expected to be completely backwards-compatible. | ||||
* | ||||
* VDPAU version numbers are simple integers that increase monotonically | ||||
* (typically by value 1). | ||||
*/ | */ | |||
#define VDPAU_VERSION 0 | #define VDPAU_VERSION 1 | |||
/** | /** | |||
* \brief Retrieve the VDPAU version implemented by the backend. | * \brief Retrieve the VDPAU version implemented by the backend. | |||
* \param[out] api_version The API version. | * \param[out] api_version The API version. | |||
* \return VdpStatus The completion status of the operation. | * \return VdpStatus The completion status of the operation. | |||
*/ | */ | |||
typedef VdpStatus VdpGetApiVersion( | typedef VdpStatus VdpGetApiVersion( | |||
/* output parameters follow */ | /* output parameters follow */ | |||
uint32_t * api_version | uint32_t * api_version | |||
); | ); | |||
skipping to change at line 1504 | skipping to change at line 1525 | |||
* \param[in] chroma_type The chroma type of the new surface. | * \param[in] chroma_type The chroma type of the new surface. | |||
* \param[in] width The width of the new surface. | * \param[in] width The width of the new surface. | |||
* \param[in] height The height of the new surface. | * \param[in] height The height of the new surface. | |||
* \param[out] surface The new surface's handle. | * \param[out] surface The new surface's handle. | |||
* \return VdpStatus The completion status of the operation. | * \return VdpStatus The completion status of the operation. | |||
* | * | |||
* The memory backing the surface may not be initialized during | * The memory backing the surface may not be initialized during | |||
* creation. Applications are expected to initialize any region | * creation. Applications are expected to initialize any region | |||
* that they use, via \ref VdpDecoderRender or \ref | * that they use, via \ref VdpDecoderRender or \ref | |||
* VdpVideoSurfacePutBitsYCbCr. | * VdpVideoSurfacePutBitsYCbCr. | |||
* | ||||
* Note that certain widths/heights are impossible for specific values of | ||||
* chroma_type. For example, the definition of VDP_CHROMA_TYPE_420 implies | ||||
* that the width must be even, since each single chroma sample covers two | ||||
* luma samples horizontally. A similar argument applies to surface heights | ||||
, | ||||
* although doubly so, since interlaced pictures must be supported; each | ||||
* field's height must itself be a multiple of 2. Hence the overall surface | ||||
's | ||||
* height must be a multiple of 4. | ||||
* | ||||
* Similar rules apply to other chroma_type values. | ||||
* | ||||
* Implementations may also impose additional restrictions on the surface | ||||
* sizes they support, potentially requiring additional rounding of actual | ||||
* surface sizes. | ||||
* | ||||
* In most cases, this is not an issue, since: | ||||
* - Video streams are encoded as an array of macro-blocks, which typically | ||||
* have larger size alignment requirements than video surfaces do. | ||||
* - APIs such as \ref VdpVideoMixerRender allow specification of a sub-reg | ||||
ion | ||||
* of the surface to read, which allows the padding data to be clipped aw | ||||
ay. | ||||
* | ||||
* However, other APIs such as \ref VdpVideoSurfaceGetBitsYCbCr and | ||||
* \ref VdpVideoSurfacePutBitsYCbCr do not allow a sub-region to be specifi | ||||
ed, | ||||
* and always operate on surface size that was actually allocated, rather | ||||
* than the surface size that was requested. In this case, applications nee | ||||
d | ||||
* to be aware of the actual surface size, in order to allocate appropriate | ||||
ly | ||||
* sized buffers for the get-/put-bits operations. | ||||
* | ||||
* For this reason, applications may need to call | ||||
* \ref VdpVideoSurfaceGetParameters after creation, in order to retrieve t | ||||
he | ||||
* actual surface size. | ||||
*/ | */ | |||
typedef VdpStatus VdpVideoSurfaceCreate( | typedef VdpStatus VdpVideoSurfaceCreate( | |||
VdpDevice device, | VdpDevice device, | |||
VdpChromaType chroma_type, | VdpChromaType chroma_type, | |||
uint32_t width, | uint32_t width, | |||
uint32_t height, | uint32_t height, | |||
/* output parameters follow */ | /* output parameters follow */ | |||
VdpVideoSurface * surface | VdpVideoSurface * surface | |||
); | ); | |||
skipping to change at line 2167 | skipping to change at line 2219 | |||
* four components: red, green, blue and alpha. Any | * four components: red, green, blue and alpha. Any | |||
* missing components are treated as 1.0. For example, for | * missing components are treated as 1.0. For example, for | |||
* an A8 VdpOutputSurface, alpha will come from the surface | * an A8 VdpOutputSurface, alpha will come from the surface | |||
* but red, green and blue will be treated as 1.0. If | * but red, green and blue will be treated as 1.0. If | |||
* source_surface is NULL, all components will be treated | * source_surface is NULL, all components will be treated | |||
* as 1.0. Note that destination_surface and | * as 1.0. Note that destination_surface and | |||
* source_surface must have been allocated via the same | * source_surface must have been allocated via the same | |||
* \ref VdpDevice "VdpDevice". | * \ref VdpDevice "VdpDevice". | |||
* \param[in] source_rect The sub-rectangle of the source | * \param[in] source_rect The sub-rectangle of the source | |||
* surface to read from. If NULL, the entire | * surface to read from. If NULL, the entire | |||
* source_surface will be read. Left/right ot top/bottom | * source_surface will be read. Left/right and/or top/bottom | |||
* co-ordinates may be swapped to flip the source. Any | * co-ordinates may be swapped to flip the source. Any | |||
* flip occurs prior to any requested rotation. Values | * flip occurs prior to any requested rotation. Values | |||
* from outside the source surface are valid and samples | * from outside the source surface are valid and samples | |||
* at those locations will be taken from the nearest edge. | * at those locations will be taken from the nearest edge. | |||
* \param[in] colors A pointer to an array of \ref VdpColor | * \param[in] colors A pointer to an array of \ref VdpColor | |||
* "VdpColor" objects. If the flag | * "VdpColor" objects. If the flag | |||
* VDP_OUTPUT_SURFACE_RENDER_COLOR_PER_VERTEX is set, | * VDP_OUTPUT_SURFACE_RENDER_COLOR_PER_VERTEX is set, | |||
* VDPAU will four entries from the array, and treat them | * VDPAU will four entries from the array, and treat them | |||
* as the colors corresponding to the upper-left, | * as the colors corresponding to the upper-left, | |||
* upper-right, lower-right and lower-left corners of the | * upper-right, lower-right and lower-left corners of the | |||
skipping to change at line 2212 | skipping to change at line 2264 | |||
* \arg \ref VDP_OUTPUT_SURFACE_RENDER_ROTATE_180 | * \arg \ref VDP_OUTPUT_SURFACE_RENDER_ROTATE_180 | |||
* \arg \ref VDP_OUTPUT_SURFACE_RENDER_ROTATE_270 | * \arg \ref VDP_OUTPUT_SURFACE_RENDER_ROTATE_270 | |||
* \arg \ref VDP_OUTPUT_SURFACE_RENDER_COLOR_PER_VERTEX | * \arg \ref VDP_OUTPUT_SURFACE_RENDER_COLOR_PER_VERTEX | |||
* \return VdpStatus The completion status of the operation. | * \return VdpStatus The completion status of the operation. | |||
* | * | |||
* The general compositing pipeline is as follows. | * The general compositing pipeline is as follows. | |||
* | * | |||
* -# Extract source_rect from source_surface. | * -# Extract source_rect from source_surface. | |||
* | * | |||
* -# The extracted source is rotated 0, 90, 180 or 270 degrees | * -# The extracted source is rotated 0, 90, 180 or 270 degrees | |||
* according to the flags. | * according to the flags. | |||
* | * | |||
* -# The rotated source is component-wise multiplied by a | * -# The rotated source is component-wise multiplied by a | |||
* smooth-shaded quad with a (potentially) different color at | * smooth-shaded quad with a (potentially) different color at | |||
* each vertex. | * each vertex. | |||
* | * | |||
* -# The resulting rotated, smooth-shaded quad is scaled to the | * -# The resulting rotated, smooth-shaded quad is scaled to the | |||
* size of destination_rect and composited with | * size of destination_rect and composited with | |||
* destination_surface using the provided blend state. | * destination_surface using the provided blend state. | |||
* | * | |||
*/ | */ | |||
skipping to change at line 3132 | skipping to change at line 3184 | |||
* environment to have some level of control over resource usage. | * environment to have some level of control over resource usage. | |||
* | * | |||
* Basic scaling is always built into any video mixer, and is known as | * Basic scaling is always built into any video mixer, and is known as | |||
* level 0. Scaling quality increases beginning with optional level 1, | * level 0. Scaling quality increases beginning with optional level 1, | |||
* through optional level 9. | * through optional level 9. | |||
* | * | |||
* If an application requests and enables multiple high quality scaling | * If an application requests and enables multiple high quality scaling | |||
* algorithms, the highest level enabled scaling algorithm will be used. | * algorithms, the highest level enabled scaling algorithm will be used. | |||
*/ | */ | |||
#define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 (VdpVideoMixer Feature)11 | #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 (VdpVideoMixer Feature)11 | |||
/** | ||||
* \hideinitializer | ||||
* \brief A VdpVideoMixerFeature. | ||||
* | ||||
* See \ref VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details. | ||||
*/ | ||||
#define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L2 (VdpVideoMixer Feature)12 | #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L2 (VdpVideoMixer Feature)12 | |||
/** | ||||
* \hideinitializer | ||||
* \brief A VdpVideoMixerFeature. | ||||
* | ||||
* See \ref VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details. | ||||
*/ | ||||
#define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L3 (VdpVideoMixer Feature)13 | #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L3 (VdpVideoMixer Feature)13 | |||
/** | ||||
* \hideinitializer | ||||
* \brief A VdpVideoMixerFeature. | ||||
* | ||||
* See \ref VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details. | ||||
*/ | ||||
#define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L4 (VdpVideoMixer Feature)14 | #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L4 (VdpVideoMixer Feature)14 | |||
/** | ||||
* \hideinitializer | ||||
* \brief A VdpVideoMixerFeature. | ||||
* | ||||
* See \ref VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details. | ||||
*/ | ||||
#define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L5 (VdpVideoMixer Feature)15 | #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L5 (VdpVideoMixer Feature)15 | |||
/** | ||||
* \hideinitializer | ||||
* \brief A VdpVideoMixerFeature. | ||||
* | ||||
* See \ref VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details. | ||||
*/ | ||||
#define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L6 (VdpVideoMixer Feature)16 | #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L6 (VdpVideoMixer Feature)16 | |||
/** | ||||
* \hideinitializer | ||||
* \brief A VdpVideoMixerFeature. | ||||
* | ||||
* See \ref VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details. | ||||
*/ | ||||
#define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L7 (VdpVideoMixer Feature)17 | #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L7 (VdpVideoMixer Feature)17 | |||
/** | ||||
* \hideinitializer | ||||
* \brief A VdpVideoMixerFeature. | ||||
* | ||||
* See \ref VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details. | ||||
*/ | ||||
#define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L8 (VdpVideoMixer Feature)18 | #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L8 (VdpVideoMixer Feature)18 | |||
/** | ||||
* \hideinitializer | ||||
* \brief A VdpVideoMixerFeature. | ||||
* | ||||
* See \ref VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details. | ||||
*/ | ||||
#define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L9 (VdpVideoMixer Feature)19 | #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L9 (VdpVideoMixer Feature)19 | |||
/** | /** | |||
* \brief A VdpVideoMixer creation parameter. | * \brief A VdpVideoMixer creation parameter. | |||
* | * | |||
* When a VdpVideoMixer is created, certain parameters may be | * When a VdpVideoMixer is created, certain parameters may be | |||
* supplied. Each parameter is named via a specific | * supplied. Each parameter is named via a specific | |||
* VdpVideoMixerParameter value. | * VdpVideoMixerParameter value. | |||
* | * | |||
* Each parameter has a specific type, and specific default | * Each parameter has a specific type, and specific default | |||
skipping to change at line 3678 | skipping to change at line 3778 | |||
* \param[in] video_surfaces_future_count The number of provided | * \param[in] video_surfaces_future_count The number of provided | |||
* fields/frames following the current picture. | * fields/frames following the current picture. | |||
* \param[in] video_surfaces_future The fields/frames that | * \param[in] video_surfaces_future The fields/frames that | |||
* follow the current field/frame. Note that array index 0 | * follow the current field/frame. Note that array index 0 | |||
* is the field/frame temporally nearest to the current | * is the field/frame temporally nearest to the current | |||
* field/frame, with increasing array indices used for | * field/frame, with increasing array indices used for | |||
* newer frames. Unavailable entries may be set to \ref | * newer frames. Unavailable entries may be set to \ref | |||
* VDP_INVALID_HANDLE. | * VDP_INVALID_HANDLE. | |||
* \param[in] video_source_rect The sub-rectangle of the source | * \param[in] video_source_rect The sub-rectangle of the source | |||
* video surface to extract and process. If NULL, the | * video surface to extract and process. If NULL, the | |||
* entire surface will be used. | * entire surface will be used. Left/right and/or top/bottom | |||
* co-ordinates may be swapped to flip the source. Values | ||||
* from outside the video surface are valid and samples | ||||
* at those locations will be taken from the nearest edge. | ||||
* \param[in] destination_surface | * \param[in] destination_surface | |||
* \param[in] destination_rect The sub-rectangle of the | * \param[in] destination_rect The sub-rectangle of the | |||
* destination surface to modify. Note that rectangle clips | * destination surface to modify. Note that rectangle clips | |||
* all other actions. | * all other actions. | |||
* \param[in] destination_video_rect The sub-rectangle of the | * \param[in] destination_video_rect The sub-rectangle of the | |||
* destination surface that will contain the processed | * destination surface that will contain the processed | |||
* video. This rectangle is relative to the entire | * video. This rectangle is relative to the entire | |||
* destination surface. This rectangle is clipped by \b | * destination surface. This rectangle is clipped by \b | |||
* destination_rect. If NULL, the destination rectangle | * destination_rect. If NULL, the destination rectangle | |||
* will be sized to match the source rectangle, and will | * will be sized to match the source rectangle, and will | |||
End of changes. 15 change blocks. | ||||
7 lines changed or deleted | 122 lines changed or added | |||
vdpau_x11.h | vdpau_x11.h | |||
---|---|---|---|---|
/* | /* | |||
* This source file is documented using Doxygen markup. | * This source file is documented using Doxygen markup. | |||
* See http://www.stack.nl/~dimitri/doxygen/ | * See http://www.stack.nl/~dimitri/doxygen/ | |||
*/ | */ | |||
/* | /* | |||
* This copyright notice applies to this header file: | * This copyright notice applies to this header file: | |||
* | * | |||
* Copyright (c) 2008 NVIDIA Corporation | * Copyright (c) 2008-2009 NVIDIA Corporation | |||
* | * | |||
* Permission is hereby granted, free of charge, to any person | * Permission is hereby granted, free of charge, to any person | |||
* obtaining a copy of this software and associated documentation | * obtaining a copy of this software and associated documentation | |||
* files (the "Software"), to deal in the Software without | * files (the "Software"), to deal in the Software without | |||
* restriction, including without limitation the rights to use, | * restriction, including without limitation the rights to use, | |||
* copy, modify, merge, publish, distribute, sublicense, and/or sell | * copy, modify, merge, publish, distribute, sublicense, and/or sell | |||
* copies of the Software, and to permit persons to whom the | * copies of the Software, and to permit persons to whom the | |||
* Software is furnished to do so, subject to the following | * Software is furnished to do so, subject to the following | |||
* conditions: | * conditions: | |||
* | * | |||
skipping to change at line 75 | skipping to change at line 75 | |||
* components: | * components: | |||
* | * | |||
* - Header files. These files are located in the standard | * - Header files. These files are located in the standard | |||
* system header file path. | * system header file path. | |||
* - \c vdpau/vdpau.h | * - \c vdpau/vdpau.h | |||
* - \c vdpau/vdpau_x11.h | * - \c vdpau/vdpau_x11.h | |||
* - The VDPAU wrapper library. These files are located in the | * - The VDPAU wrapper library. These files are located in the | |||
* standard system (possibly X11-specific) library path. | * standard system (possibly X11-specific) library path. | |||
* - \c libvdpau.so.1 (runtime) | * - \c libvdpau.so.1 (runtime) | |||
* - \c libvdpau.so (development) | * - \c libvdpau.so (development) | |||
* - Back-end driver files. These files are located in the | * - Back-end driver files. These files are located in a | |||
* standard system (possibly X11-specific) library path. | * system-defined library path, which is configurable at compile | |||
* - \c libvdpau_\%s.so | * time but is typically /usr/lib/vdpau. Use `pkg-config | |||
* --variable=moduledir vdpau` to locate the driver install path. | ||||
* - \c $moduledir/libvdpau_\%s.so.1 | ||||
* For example: | * For example: | |||
* - \c libvdpau_nvidia.so | * - \c /usr/lib/vdpau/libvdpau_nvidia.so.1 | |||
* - \c libvdpau_intel.so | * - \c /usr/lib/vdpau/libvdpau_intel.so.1 | |||
* - \c libvdpau_ati.so | * - \c /usr/lib/vdpau/libvdpau_ati.so.1 | |||
* | * | |||
* The VDPAU wrapper library implements just one function; \ref | * The VDPAU wrapper library implements just one function; \ref | |||
* vdp_device_create_x11. The wrapper will implement this function | * vdp_device_create_x11. The wrapper will implement this function | |||
* by dynamically loading the appropriate back-end driver file | * by dynamically loading the appropriate back-end driver file | |||
* mentioned above. Long-term, the wrapper will use a | * mentioned above. Long-term, the wrapper will use a | |||
* VDPAU-specific X extension to determine which back-end driver | * VDPAU-specific X extension to determine which back-end driver | |||
* to load. Currently, the wrapper library hard-codes the driver | * to load. Currently, the wrapper library hard-codes the driver | |||
* name as "nvidia", although this can be overridden using the | * name as "nvidia", although this can be overridden using the | |||
* environment variable VDPAU_DRIVER. | * environment variable VDPAU_DRIVER. | |||
* | * | |||
End of changes. 3 change blocks. | ||||
7 lines changed or deleted | 9 lines changed or added | |||