#include "avcodec.h"
#include "dsputil.h"
#include "mpegvideo.h"
#include "mpegvideo_common.h"
#include "mjpegenc.h"
#include "msmpeg4.h"
#include "faandct.h"
#include "xvmc_internal.h"
#include <limits.h>
Go to the source code of this file.
Defines | |
#define | COPY(a) bak->a= src->a |
#define | COLOR(theta, r) |
Functions | |
static void | dct_unquantize_mpeg1_intra_c (MpegEncContext *s, DCTELEM *block, int n, int qscale) |
static void | dct_unquantize_mpeg1_inter_c (MpegEncContext *s, DCTELEM *block, int n, int qscale) |
static void | dct_unquantize_mpeg2_intra_c (MpegEncContext *s, DCTELEM *block, int n, int qscale) |
static void | dct_unquantize_mpeg2_intra_bitexact (MpegEncContext *s, DCTELEM *block, int n, int qscale) |
static void | dct_unquantize_mpeg2_inter_c (MpegEncContext *s, DCTELEM *block, int n, int qscale) |
static void | dct_unquantize_h263_intra_c (MpegEncContext *s, DCTELEM *block, int n, int qscale) |
static void | dct_unquantize_h263_inter_c (MpegEncContext *s, DCTELEM *block, int n, int qscale) |
const uint8_t * | ff_find_start_code (const uint8_t *restrict p, const uint8_t *end, uint32_t *restrict state) |
av_cold int | ff_dct_common_init (MpegEncContext *s) |
void | ff_copy_picture (Picture *dst, Picture *src) |
int | alloc_picture (MpegEncContext *s, Picture *pic, int shared) |
allocates a Picture The pixels are allocated/set by calling get_buffer() if shared=0 | |
static void | free_picture (MpegEncContext *s, Picture *pic) |
deallocates a picture | |
static int | init_duplicate_context (MpegEncContext *s, MpegEncContext *base) |
static void | free_duplicate_context (MpegEncContext *s) |
static void | backup_duplicate_context (MpegEncContext *bak, MpegEncContext *src) |
void | ff_update_duplicate_context (MpegEncContext *dst, MpegEncContext *src) |
void | MPV_common_defaults (MpegEncContext *s) |
sets the given MpegEncContext to common defaults (same for encoding and decoding). | |
void | MPV_decode_defaults (MpegEncContext *s) |
sets the given MpegEncContext to defaults for decoding. | |
av_cold int | MPV_common_init (MpegEncContext *s) |
init common structure for both encoder and decoder. | |
void | MPV_common_end (MpegEncContext *s) |
void | init_rl (RLTable *rl, uint8_t static_store[2][2 *MAX_RUN+MAX_LEVEL+3]) |
void | init_vlc_rl (RLTable *rl) |
int | ff_find_unused_picture (MpegEncContext *s, int shared) |
static void | update_noise_reduction (MpegEncContext *s) |
int | MPV_frame_start (MpegEncContext *s, AVCodecContext *avctx) |
generic function for encode/decode called after coding/decoding the header and before a frame is coded/decoded | |
void | MPV_frame_end (MpegEncContext *s) |
static void | draw_line (uint8_t *buf, int sx, int sy, int ex, int ey, int w, int h, int stride, int color) |
draws an line from (ex, ey) -> (sx, sy). | |
static void | draw_arrow (uint8_t *buf, int sx, int sy, int ex, int ey, int w, int h, int stride, int color) |
draws an arrow from (ex, ey) -> (sx, sy). | |
void | ff_print_debug_info (MpegEncContext *s, AVFrame *pict) |
prints debuging info for the given picture. | |
static int | hpel_motion_lowres (MpegEncContext *s, uint8_t *dest, uint8_t *src, int field_based, int field_select, int src_x, int src_y, int width, int height, int stride, int h_edge_pos, int v_edge_pos, int w, int h, h264_chroma_mc_func *pix_op, int motion_x, int motion_y) |
static av_always_inline void | mpeg_motion_lowres (MpegEncContext *s, uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, int field_based, int bottom_field, int field_select, uint8_t **ref_picture, h264_chroma_mc_func *pix_op, int motion_x, int motion_y, int h) |
static void | chroma_4mv_motion_lowres (MpegEncContext *s, uint8_t *dest_cb, uint8_t *dest_cr, uint8_t **ref_picture, h264_chroma_mc_func *pix_op, int mx, int my) |
static void | MPV_motion_lowres (MpegEncContext *s, uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, int dir, uint8_t **ref_picture, h264_chroma_mc_func *pix_op) |
motion compensation of a single macroblock | |
static void | put_dct (MpegEncContext *s, DCTELEM *block, int i, uint8_t *dest, int line_size, int qscale) |
static void | add_dct (MpegEncContext *s, DCTELEM *block, int i, uint8_t *dest, int line_size) |
static void | add_dequant_dct (MpegEncContext *s, DCTELEM *block, int i, uint8_t *dest, int line_size, int qscale) |
void | ff_clean_intra_table_entries (MpegEncContext *s) |
cleans dc, ac, coded_block for the current non intra MB | |
static av_always_inline void | MPV_decode_mb_internal (MpegEncContext *s, DCTELEM block[12][64], int lowres_flag, int is_mpeg12) |
void | MPV_decode_mb (MpegEncContext *s, DCTELEM block[12][64]) |
void | ff_draw_horiz_band (MpegEncContext *s, int y, int h) |
void | ff_init_block_index (MpegEncContext *s) |
void | ff_mpeg_flush (AVCodecContext *avctx) |
void | ff_set_qscale (MpegEncContext *s, int qscale) |
set qscale and update qscale dependent variables. | |
Variables | |
static const uint8_t | ff_default_chroma_qscale_table [32] |
const uint8_t | ff_mpeg1_dc_scale_table [128] |
enum PixelFormat | ff_pixfmt_list_420 [] |
enum PixelFormat | ff_hwaccel_pixfmt_list_420 [] |
Definition in file mpegvideo.c.
#define COLOR | ( | theta, | |||
r | ) |
Value:
u= (int)(128 + r*cos(theta*3.141592/180));\ v= (int)(128 + r*sin(theta*3.141592/180));
Referenced by ff_print_debug_info().
#define COPY | ( | a | ) | bak->a= src->a |
Referenced by backup_duplicate_context(), idct_put_altivec(), and update_duplicate_context_after_me().
static void add_dct | ( | MpegEncContext * | s, | |
DCTELEM * | block, | |||
int | i, | |||
uint8_t * | dest, | |||
int | line_size | |||
) | [inline, static] |
static void add_dequant_dct | ( | MpegEncContext * | s, | |
DCTELEM * | block, | |||
int | i, | |||
uint8_t * | dest, | |||
int | line_size, | |||
int | qscale | |||
) | [inline, static] |
int alloc_picture | ( | MpegEncContext * | s, | |
Picture * | pic, | |||
int | shared | |||
) |
allocates a Picture The pixels are allocated/set by calling get_buffer() if shared=0
Definition at line 171 of file mpegvideo.c.
static void backup_duplicate_context | ( | MpegEncContext * | bak, | |
MpegEncContext * | src | |||
) | [static] |
static void chroma_4mv_motion_lowres | ( | MpegEncContext * | s, | |
uint8_t * | dest_cb, | |||
uint8_t * | dest_cr, | |||
uint8_t ** | ref_picture, | |||
h264_chroma_mc_func * | pix_op, | |||
int | mx, | |||
int | my | |||
) | [inline, static] |
static void dct_unquantize_h263_inter_c | ( | MpegEncContext * | s, | |
DCTELEM * | block, | |||
int | n, | |||
int | qscale | |||
) | [static] |
static void dct_unquantize_h263_intra_c | ( | MpegEncContext * | s, | |
DCTELEM * | block, | |||
int | n, | |||
int | qscale | |||
) | [static] |
static void dct_unquantize_mpeg1_inter_c | ( | MpegEncContext * | s, | |
DCTELEM * | block, | |||
int | n, | |||
int | qscale | |||
) | [static] |
static void dct_unquantize_mpeg1_intra_c | ( | MpegEncContext * | s, | |
DCTELEM * | block, | |||
int | n, | |||
int | qscale | |||
) | [static] |
static void dct_unquantize_mpeg2_inter_c | ( | MpegEncContext * | s, | |
DCTELEM * | block, | |||
int | n, | |||
int | qscale | |||
) | [static] |
static void dct_unquantize_mpeg2_intra_bitexact | ( | MpegEncContext * | s, | |
DCTELEM * | block, | |||
int | n, | |||
int | qscale | |||
) | [static] |
static void dct_unquantize_mpeg2_intra_c | ( | MpegEncContext * | s, | |
DCTELEM * | block, | |||
int | n, | |||
int | qscale | |||
) | [static] |
static void draw_arrow | ( | uint8_t * | buf, | |
int | sx, | |||
int | sy, | |||
int | ex, | |||
int | ey, | |||
int | w, | |||
int | h, | |||
int | stride, | |||
int | color | |||
) | [static] |
draws an arrow from (ex, ey) -> (sx, sy).
w | width of the image | |
h | height of the image | |
stride | stride/linesize of the image | |
color | color of the arrow |
Definition at line 1068 of file mpegvideo.c.
Referenced by ff_print_debug_info().
static void draw_line | ( | uint8_t * | buf, | |
int | sx, | |||
int | sy, | |||
int | ex, | |||
int | ey, | |||
int | w, | |||
int | h, | |||
int | stride, | |||
int | color | |||
) | [static] |
draws an line from (ex, ey) -> (sx, sy).
w | width of the image | |
h | height of the image | |
stride | stride/linesize of the image | |
color | color of the arrow |
Definition at line 1019 of file mpegvideo.c.
Referenced by draw_arrow().
void ff_clean_intra_table_entries | ( | MpegEncContext * | s | ) |
cleans dc, ac, coded_block for the current non intra MB
Definition at line 1702 of file mpegvideo.c.
Referenced by encode_thread(), mpeg4_decode_partition_a(), and MPV_decode_mb_internal().
Definition at line 162 of file mpegvideo.c.
Referenced by decode_slice_header(), and select_input_picture().
av_cold int ff_dct_common_init | ( | MpegEncContext * | s | ) |
Definition at line 119 of file mpegvideo.c.
Referenced by dnxhd_encode_init(), and MPV_common_init().
void ff_draw_horiz_band | ( | MpegEncContext * | s, | |
int | y, | |||
int | h | |||
) |
h | is the normal height, this will be reduced automatically if needed for the last row |
Definition at line 1998 of file mpegvideo.c.
Referenced by decode_slice(), ff_intrax8_decode_picture(), ff_vdpau_h264_picture_complete(), ff_vdpau_mpeg_picture_complete(), ff_vdpau_vc1_decode_picture(), ff_xvmc_decode_mb(), ff_xvmc_field_end(), mpeg_decode_slice(), svq3_decode_frame(), vc1_decode_b_blocks(), vc1_decode_i_blocks(), vc1_decode_i_blocks_adv(), vc1_decode_p_blocks(), and vc1_decode_skip_blocks().
const uint8_t* ff_find_start_code | ( | const uint8_t *restrict | p, | |
const uint8_t * | end, | |||
uint32_t *restrict | state | |||
) |
Definition at line 88 of file mpegvideo.c.
Referenced by cavs_decode_frame(), decode_chunks(), ff_mpeg1_find_frame_end(), ff_rtp_send_mpegvideo(), mpeg_decode_slice(), mpegts_write_packet(), mpegvideo_extract_headers(), parse_nal_units(), and slice_decode_thread().
int ff_find_unused_picture | ( | MpegEncContext * | s, | |
int | shared | |||
) |
Definition at line 779 of file mpegvideo.c.
Referenced by ff_h263_decode_frame(), h261_decode_frame(), load_input_picture(), MPV_frame_start(), select_input_picture(), and vc1_decode_frame().
void ff_init_block_index | ( | MpegEncContext * | s | ) |
Definition at line 2037 of file mpegvideo.c.
Referenced by decode_slice(), encode_thread(), estimate_motion_thread(), ff_h261_reorder_mb_index(), h261_decode_mb(), h261_decode_mb_skipped(), mpeg4_decode_partition_a(), mpeg4_decode_partition_b(), mpeg_decode_slice(), rv10_decode_packet(), rv34_decode_slice(), svq1_encode_plane(), vc1_decode_b_blocks(), vc1_decode_i_blocks(), vc1_decode_i_blocks_adv(), vc1_decode_p_blocks(), and vc1_decode_skip_blocks().
void ff_mpeg_flush | ( | AVCodecContext * | avctx | ) |
void ff_print_debug_info | ( | MpegEncContext * | s, | |
AVFrame * | pict | |||
) |
prints debuging info for the given picture.
Definition at line 1097 of file mpegvideo.c.
Referenced by decode_frame(), ff_h263_decode_frame(), ff_rv34_decode_frame(), h261_decode_frame(), rv10_decode_frame(), slice_end(), and vc1_decode_frame().
void ff_set_qscale | ( | MpegEncContext * | s, | |
int | qscale | |||
) |
set qscale and update qscale dependent variables.
Definition at line 2309 of file mpegvideo.c.
Referenced by decode_slice(), encode_mb_internal(), encode_thread(), ff_h261_encode_mb(), ff_mpeg4_decode_mb(), h261_decode_gob(), h261_decode_mb(), h263_decode_dquant(), mpeg4_decode_partition_a(), mpeg4_decode_partition_b(), mpeg4_decode_partitioned_mb(), and rv10_decode_packet().
void ff_update_duplicate_context | ( | MpegEncContext * | dst, | |
MpegEncContext * | src | |||
) |
static void free_duplicate_context | ( | MpegEncContext * | s | ) | [static] |
static void free_picture | ( | MpegEncContext * | s, | |
Picture * | pic | |||
) | [static] |
static int hpel_motion_lowres | ( | MpegEncContext * | s, | |
uint8_t * | dest, | |||
uint8_t * | src, | |||
int | field_based, | |||
int | field_select, | |||
int | src_x, | |||
int | src_y, | |||
int | width, | |||
int | height, | |||
int | stride, | |||
int | h_edge_pos, | |||
int | v_edge_pos, | |||
int | w, | |||
int | h, | |||
h264_chroma_mc_func * | pix_op, | |||
int | motion_x, | |||
int | motion_y | |||
) | [inline, static] |
static int init_duplicate_context | ( | MpegEncContext * | s, | |
MpegEncContext * | base | |||
) | [static] |
void init_rl | ( | RLTable * | rl, | |
uint8_t | static_store[2][2 *MAX_RUN+MAX_LEVEL+3] | |||
) |
static_store | static uint8_t array[2][2*MAX_RUN + MAX_LEVEL + 3] which will hold the level and run tables, if this is NULL av_malloc() will be used |
Definition at line 688 of file mpegvideo.c.
Referenced by ff_h261_encode_init(), ff_mpeg12_init_vlcs(), ff_mpeg1_encode_init(), ff_msmpeg4_decode_init(), h261_decode_init_vlc(), and h263_decode_init_vlc().
void init_vlc_rl | ( | RLTable * | rl | ) |
Definition at line 739 of file mpegvideo.c.
static av_always_inline void mpeg_motion_lowres | ( | MpegEncContext * | s, | |
uint8_t * | dest_y, | |||
uint8_t * | dest_cb, | |||
uint8_t * | dest_cr, | |||
int | field_based, | |||
int | bottom_field, | |||
int | field_select, | |||
uint8_t ** | ref_picture, | |||
h264_chroma_mc_func * | pix_op, | |||
int | motion_x, | |||
int | motion_y, | |||
int | h | |||
) | [static] |
void MPV_common_defaults | ( | MpegEncContext * | s | ) |
sets the given MpegEncContext to common defaults (same for encoding and decoding).
the changed fields will not depend upon the prior state of the MpegEncContext.
Definition at line 378 of file mpegvideo.c.
Referenced by MPV_decode_defaults(), and MPV_encode_defaults().
void MPV_common_end | ( | MpegEncContext * | s | ) |
Definition at line 605 of file mpegvideo.c.
Referenced by decode_end(), decode_slice_header(), ff_h263_decode_end(), ff_h263_decode_frame(), ff_rv34_decode_end(), h261_decode_end(), h261_decode_frame(), mpeg_decode_end(), mpeg_decode_postinit(), MPV_common_init(), MPV_encode_end(), rv10_decode_end(), rv20_decode_picture_header(), rv34_decode_slice(), svq1_decode_end(), vc1_decode_end(), and vcr2_init_sequence().
av_cold int MPV_common_init | ( | MpegEncContext * | s | ) |
init common structure for both encoder and decoder.
this assumes that some variables like width/height are already set
Definition at line 408 of file mpegvideo.c.
Referenced by decode_pic(), decode_slice_header(), ff_h263_decode_frame(), ff_h263_decode_init(), ff_rv34_decode_init(), h261_decode_frame(), MPV_encode_init(), rv10_decode_init(), rv20_decode_picture_header(), rv34_decode_slice(), svq1_decode_init(), svq3_decode_init(), and vcr2_init_sequence().
void MPV_decode_defaults | ( | MpegEncContext * | s | ) |
sets the given MpegEncContext to defaults for decoding.
the changed fields will not depend upon the prior state of the MpegEncContext.
Definition at line 400 of file mpegvideo.c.
Referenced by decode_init(), ff_cavs_init(), ff_h263_decode_init(), ff_rv34_decode_init(), h261_decode_init(), mpeg_decode_init(), rv10_decode_init(), and svq1_decode_init().
void MPV_decode_mb | ( | MpegEncContext * | s, | |
DCTELEM | block[12][64] | |||
) |
Definition at line 1983 of file mpegvideo.c.
Referenced by decode_mb(), decode_slice(), encode_mb_hq(), encode_thread(), h261_decode_mb(), h261_decode_mb_skipped(), mpeg_decode_slice(), and rv10_decode_packet().
static av_always_inline void MPV_decode_mb_internal | ( | MpegEncContext * | s, | |
DCTELEM | block[12][64], | |||
int | lowres_flag, | |||
int | is_mpeg12 | |||
) | [static] |
void MPV_frame_end | ( | MpegEncContext * | s | ) |
Definition at line 960 of file mpegvideo.c.
Referenced by decode_frame(), ff_h263_decode_frame(), ff_rv34_decode_frame(), h261_decode_frame(), MPV_encode_picture(), rv10_decode_frame(), rv10_decode_packet(), slice_end(), svq1_decode_frame(), svq3_decode_frame(), and vc1_decode_frame().
int MPV_frame_start | ( | MpegEncContext * | s, | |
AVCodecContext * | avctx | |||
) |
generic function for encode/decode called after coding/decoding the header and before a frame is coded/decoded
Definition at line 831 of file mpegvideo.c.
Referenced by ff_h263_decode_frame(), frame_start(), h261_decode_frame(), mpeg_field_start(), MPV_encode_picture(), rv10_decode_packet(), rv34_decode_slice(), svq1_decode_frame(), and vc1_decode_frame().
static void MPV_motion_lowres | ( | MpegEncContext * | s, | |
uint8_t * | dest_y, | |||
uint8_t * | dest_cb, | |||
uint8_t * | dest_cr, | |||
int | dir, | |||
uint8_t ** | ref_picture, | |||
h264_chroma_mc_func * | pix_op | |||
) | [inline, static] |
motion compensation of a single macroblock
s | context | |
dest_y | luma destination pointer | |
dest_cb | chroma cb/u destination pointer | |
dest_cr | chroma cr/v destination pointer | |
dir | direction (0->forward, 1->backward) | |
ref_picture | array[3] of pointers to the 3 planes of the reference picture | |
pic_op | halfpel motion compensation function (average or put normally) the motion vectors are taken from s->mv and the MV type from s->mv_type |
Definition at line 1557 of file mpegvideo.c.
Referenced by MPV_decode_mb_internal().
static void put_dct | ( | MpegEncContext * | s, | |
DCTELEM * | block, | |||
int | i, | |||
uint8_t * | dest, | |||
int | line_size, | |||
int | qscale | |||
) | [inline, static] |
static void update_noise_reduction | ( | MpegEncContext * | s | ) | [static] |
Definition at line 811 of file mpegvideo.c.
const uint8_t ff_default_chroma_qscale_table[32] [static] |
Initial value:
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 }
Definition at line 65 of file mpegvideo.c.
Referenced by MPV_common_defaults().
const uint8_t ff_mpeg1_dc_scale_table[128] |
Initial value:
{ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, }
Definition at line 70 of file mpegvideo.c.
Referenced by common_init(), ff_h261_encode_init(), flv_h263_decode_picture_header(), h263_decode_picture_header(), intel_h263_decode_picture_header(), MPV_common_defaults(), and rv10_decode_packet().
enum PixelFormat ff_pixfmt_list_420[] |