|void||ff_xvmc_init_block (MpegEncContext *s)|
|Initialize the block field of the MpegEncContext pointer passed as parameter after making sure that the data is not corrupted. |
|static void||exchange_uv (MpegEncContext *s)|
|void||ff_xvmc_pack_pblocks (MpegEncContext *s, int cbp)|
|Fill individual block pointers, so there are no gaps in the data_block array in case not all blocks in the macroblock are coded. |
|static int||ff_xvmc_field_start (AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size)|
|Find and store the surfaces that are used as reference frames. |
|static int||ff_xvmc_field_end (AVCodecContext *avctx)|
|Complete frame/field rendering by passing any remaining blocks. |
|static void||ff_xvmc_decode_mb (struct MpegEncContext *s)|
|Synthesize the data needed by XvMC to render one macroblock of data. |
Initialize the block field of the MpegEncContext pointer passed as parameter after making sure that the data is not corrupted.
In order to implement something like direct rendering instead of decoding coefficients in s->blocks and then copying them, copy them directly into the data_blocks array provided by xvmc.
Referenced by mpeg_decode_slice().
Complete frame/field rendering by passing any remaining blocks.
Normally ff_draw_horiz_band() is called for each slice, however, some leftover blocks, for example from error_resilience(), may remain. It should be safe to call the function a few times for the same field.