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

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/