#include "avcodec.h"
#include "dsputil.h"
#include "mpegvideo.h"
#include "mpegvideo_common.h"
#include "mjpegenc.h"
#include "msmpeg4.h"
#include "faandct.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) |
static void | draw_edges_c (uint8_t *buf, int wrap, int width, int height, int w) |
void | ff_init_scantable (uint8_t *permutation, ScanTable *st, const uint8_t *src_scantable) |
const uint8_t * | ff_find_start_code (const uint8_t *restrict p, const uint8_t *end, uint32_t *restrict state) |
int | ff_dct_common_init (MpegEncContext *s) |
void | 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. | |
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 use_static) |
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. | |
void | ff_emulated_edge_mc (uint8_t *buf, uint8_t *src, int linesize, int block_w, int block_h, int src_x, int src_y, int w, int h) |
Copies a rectangular area of samples to a temporary buffer and replicates the boarder samples. | |
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) |
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 | |
void(* | draw_edges )(uint8_t *buf, int wrap, int width, int height, int w) = draw_edges_c |
static const uint8_t | ff_default_chroma_qscale_table [32] |
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 185 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 1115 of file mpegvideo.c.
Referenced by ff_print_debug_info().
static void draw_edges_c | ( | uint8_t * | buf, | |
int | wrap, | |||
int | width, | |||
int | height, | |||
int | w | |||
) | [static] |
Definition at line 800 of file mpegvideo.c.
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 1066 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 1818 of file mpegvideo.c.
Referenced by encode_thread(), mpeg4_decode_partition_a(), and MPV_decode_mb_internal().
int ff_dct_common_init | ( | MpegEncContext * | s | ) |
Definition at line 133 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 2108 of file mpegvideo.c.
Referenced by decode_slice(), ff_intrax8_decode_picture(), 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().
void ff_emulated_edge_mc | ( | uint8_t * | buf, | |
uint8_t * | src, | |||
int | linesize, | |||
int | block_w, | |||
int | block_h, | |||
int | src_x, | |||
int | src_y, | |||
int | w, | |||
int | h | |||
) |
Copies a rectangular area of samples to a temporary buffer and replicates the boarder samples.
buf | destination buffer | |
src | source buffer | |
linesize | number of bytes between 2 vertically adjacent samples in both the source and destination buffers | |
block_w | width of block | |
block_h | height of block | |
src_x | x coordinate of the top left sample of the block in the source buffer | |
src_y | y coordinate of the top left sample of the block in the source buffer | |
w | width of the source buffer | |
h | height of the source buffer |
Definition at line 1414 of file mpegvideo.c.
Referenced by chroma_4mv_motion(), chroma_4mv_motion_lowres(), encode_mb_internal(), ff_mspel_motion(), gmc1_motion(), gmc_mmx(), hpel_motion(), hpel_motion_lowres(), mc_dir_part(), mca(), mpeg_motion(), mpeg_motion_lowres(), MPV_motion(), qpel_motion(), render_slice(), rv34_mc(), svq3_mc_dir_part(), vc1_interp_mc(), vc1_mc_1mv(), vc1_mc_4mv_chroma(), vc1_mc_4mv_luma(), and vp56_mc().
const uint8_t* ff_find_start_code | ( | const uint8_t *restrict | p, | |
const uint8_t * | end, | |||
uint32_t *restrict | state | |||
) |
Definition at line 102 of file mpegvideo.c.
Referenced by cavs_decode_frame(), ff_mpeg1_find_frame_end(), ff_rtp_send_mpegvideo(), mpeg_decode_frame(), mpegvideo_extract_headers(), and slice_decode_thread().
int ff_find_unused_picture | ( | MpegEncContext * | s, | |
int | shared | |||
) |
Definition at line 827 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 2147 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().
Definition at line 78 of file mpegvideo.c.
Referenced by common_init(), decode_init(), decode_pic(), decode_vop_header(), dnxhd_init_vlc(), ff_dct_common_init(), ff_intrax8_common_init(), ff_mjpeg_decode_init(), ff_wmv2_common_init(), mpeg_decode_picture_coding_extension(), vp3_decode_init(), and vp56_init().
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 1144 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 2419 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 | |||
) |
Definition at line 371 of file mpegvideo.c.
Referenced by encode_picture(), and mpeg_decode_frame().
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] |
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 694 of file mpegvideo.c.
Referenced by ff_h261_encode_init(), ff_mpeg1_encode_init(), ff_msmpeg4_decode_init(), h261_decode_init_vlc(), h263_decode_init_vlc(), and init_vlcs().
void init_vlc_rl | ( | RLTable * | rl, | |
int | use_static | |||
) |
Definition at line 745 of file mpegvideo.c.
Referenced by ff_msmpeg4_decode_init(), h261_decode_init_vlc(), and h263_decode_init_vlc().
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 389 of file mpegvideo.c.
Referenced by MPV_decode_defaults(), and MPV_encode_defaults().
void MPV_common_end | ( | MpegEncContext * | s | ) |
Definition at line 611 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().
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 419 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_frame(), 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 411 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 2099 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 | |||
) | [static] |
void MPV_frame_end | ( | MpegEncContext * | s | ) |
Definition at line 1009 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 879 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 1673 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 859 of file mpegvideo.c.
void(* draw_edges)(uint8_t *buf, int wrap, int width, int height, int w) = draw_edges_c |
Referenced by frame_start(), MPV_common_init_mmx(), and MPV_frame_end().
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 73 of file mpegvideo.c.
Referenced by MPV_common_defaults().