Commit e7de624b authored by Ivan Kalvachev's avatar Ivan Kalvachev

Improvements in xvmc structure fields descriptions.

Originally committed as revision 17383 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 87ad63c0
...@@ -34,10 +34,6 @@ ...@@ -34,10 +34,6 @@
the number is 1337 speak for the letters IDCT MCo (motion compensation) */ the number is 1337 speak for the letters IDCT MCo (motion compensation) */
struct xvmc_pix_fmt { struct xvmc_pix_fmt {
/** Set by the calling application.
Once set these values are not supposed to be modified.
*/
//@{
/** The field contains the special constant value AV_XVMC_ID. /** The field contains the special constant value AV_XVMC_ID.
It is used as a test that the application correctly uses the API, It is used as a test that the application correctly uses the API,
and that there is no corruption caused by pixel routines. and that there is no corruption caused by pixel routines.
...@@ -46,18 +42,19 @@ struct xvmc_pix_fmt { ...@@ -46,18 +42,19 @@ struct xvmc_pix_fmt {
*/ */
int xvmc_id; int xvmc_id;
/** Pointer to the block array allocated by XvMCCreateBlocks() /** Pointer to the block array allocated by XvMCCreateBlocks().
it contains differential pixel data (in MoCo mode) The array is have to be freed by XvMCDestroyBlocks().
or coefficients for IDCT. Each 64 values represent one data block of
- application - set during initialization differential pixel data (in MoCo mode) or coefficients for IDCT.
- libavcodec - unchanged - application - set the pointer during initialization
- libavcodec - fills coefficients/pixel data into the array
*/ */
short* data_blocks; short* data_blocks;
/** Pointer to the macroblock description array allocated by /** Pointer to the macroblock description array allocated by
XvMCCreateMacroBlocks(). XvMCCreateMacroBlocks() and freed by XvMCDestroyMacroBlocks().
- application - set during initialization - application - set the pointer during initialization
- libavcodec - unchanged - libavcodec - fills description data into the array
*/ */
XvMCMacroBlock* mv_blocks; XvMCMacroBlock* mv_blocks;
...@@ -89,12 +86,12 @@ struct xvmc_pix_fmt { ...@@ -89,12 +86,12 @@ struct xvmc_pix_fmt {
int unsigned_intra; int unsigned_intra;
/** Pointer to the surface allocated by XvMCCreateSurface(). /** Pointer to the surface allocated by XvMCCreateSurface().
It have to be freed by XvMCDestroySurface() on application exit.
It identifies the frame and its state on the video hardware. It identifies the frame and its state on the video hardware.
- application - set during initialization - application - set during initialization
- libavcodec - unchanged - libavcodec - unchanged
*/ */
XvMCSurface* p_surface; XvMCSurface* p_surface;
//}@
/** Set by the decoder before calling ff_draw_horiz_band(), /** Set by the decoder before calling ff_draw_horiz_band(),
needed by the XvMCRenderSurface function. */ needed by the XvMCRenderSurface function. */
...@@ -124,9 +121,8 @@ struct xvmc_pix_fmt { ...@@ -124,9 +121,8 @@ struct xvmc_pix_fmt {
unsigned int flags; unsigned int flags;
//}@ //}@
/** Offset in the mv array for the current slice. /** Number of macro block descriptions in the mv_blocks array
Macroblocks described before that offset are assumed to have already that have already been passed to the hardware.
been passed to the hardware.
- application - zeroes it on get_buffer(). - application - zeroes it on get_buffer().
A successful ff_draw_horiz_band() may increment it A successful ff_draw_horiz_band() may increment it
with filled_mb_block_num or zero both. with filled_mb_block_num or zero both.
...@@ -134,19 +130,23 @@ struct xvmc_pix_fmt { ...@@ -134,19 +130,23 @@ struct xvmc_pix_fmt {
*/ */
int start_mv_blocks_num; int start_mv_blocks_num;
/** Number of mv blocks that are filled by libavcodec and have to be /** Number of new macro blocks descriptions in mv_blocks array
passed to the hardware. that are filled by libavcodec and have to be passed to the hardware.
- application - zeroes it on get_buffer() or after successful - application - zeroes it on get_buffer() or after successful
ff_draw_horiz_band(). ff_draw_horiz_band().
- libavcodec - increment with one of each stored MB - libavcodec - increment with one of each stored MB
*/ */
int filled_mv_blocks_num; int filled_mv_blocks_num;
/** Offset to the next free data block. The mv_blocks field holds a number /** Number of the the next free data block.
pointing to the data blocks. One data block is 64 short values in data_blocks array.
- application - zeroes it on get_buffer() and after successful All blocks before this one are already claimed by filling their number
ff_draw_horiz_band(). in the corresponding blocks description structure field,
- libavcodec - each macroblock increases it with the number that are hold in mv_blocks array.
- application - zeroes it on get_buffer().
A successful ff_draw_horiz_band() may zero it together
with start_mb_blocks_num.
- libavcodec - each decoded macroblock increases it with the number
of coded blocks it contains. of coded blocks it contains.
*/ */
int next_free_data_block_num; int next_free_data_block_num;
...@@ -154,7 +154,7 @@ struct xvmc_pix_fmt { ...@@ -154,7 +154,7 @@ struct xvmc_pix_fmt {
/** extensions may be placed here */ /** extensions may be placed here */
#if LIBAVCODEC_VERSION_MAJOR < 53 #if LIBAVCODEC_VERSION_MAJOR < 53
//@{ //@{
/** State - used to work around limitations in the MPlayer video system. /** State flags used to work around limitations in the MPlayer video system.
0 - Surface is not used. 0 - Surface is not used.
1 - Surface is still held in application to be displayed or is 1 - Surface is still held in application to be displayed or is
still visible. still visible.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment