FFmpeg  4.0
Functions
mpegvideo_xvmc.c File Reference
#include <limits.h>
#include <X11/extensions/XvMC.h>
#include "avcodec.h"
#include "mpegutils.h"
#include "mpegvideo.h"
#include <assert.h>
#include "xvmc.h"
#include "xvmc_internal.h"
#include "version.h"

Go to the source code of this file.

Functions

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. More...
 
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. More...
 
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. More...
 
static int ff_xvmc_field_end (AVCodecContext *avctx)
 Complete frame/field rendering by passing any remaining blocks. More...
 
static void ff_xvmc_decode_mb (struct MpegEncContext *s)
 Synthesize the data needed by XvMC to render one macroblock of data. More...
 

Function Documentation

◆ ff_xvmc_init_block()

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.

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.

Definition at line 43 of file mpegvideo_xvmc.c.

Referenced by mpeg_decode_slice().

◆ exchange_uv()

static void exchange_uv ( MpegEncContext s)
static

Definition at line 51 of file mpegvideo_xvmc.c.

Referenced by ff_xvmc_pack_pblocks().

◆ ff_xvmc_pack_pblocks()

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.

Definition at line 64 of file mpegvideo_xvmc.c.

Referenced by mpeg_decode_mb().

◆ ff_xvmc_field_start()

static int ff_xvmc_field_start ( AVCodecContext avctx,
const uint8_t buf,
uint32_t  buf_size 
)
static

Find and store the surfaces that are used as reference frames.

This function should be called for every new field and/or frame. It should be safe to call the function a few times for the same field.

Definition at line 87 of file mpegvideo_xvmc.c.

Referenced by ff_xvmc_decode_mb().

◆ ff_xvmc_field_end()

static int ff_xvmc_field_end ( AVCodecContext avctx)
static

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.

Definition at line 156 of file mpegvideo_xvmc.c.

Referenced by ff_xvmc_decode_mb().

◆ ff_xvmc_decode_mb()

static void ff_xvmc_decode_mb ( struct MpegEncContext s)
static

Synthesize the data needed by XvMC to render one macroblock of data.

Fill all relevant fields, if necessary do IDCT.

Definition at line 171 of file mpegvideo_xvmc.c.