|
FFmpeg
|
#include "libavutil/attributes.h"#include "libavutil/log.h"#include "libavutil/mem.h"#include "libavutil/opt.h"#include "libavutil/thread.h"#include "codec_internal.h"#include "mpegvideo.h"#include "h263.h"#include "h263enc.h"#include "mathops.h"#include "mpeg4video.h"#include "mpeg4videodata.h"#include "mpeg4videodefs.h"#include "mpeg4videoenc.h"#include "mpegvideoenc.h"#include "profiles.h"#include "put_bits.h"#include "version.h"Go to the source code of this file.
Data Structures | |
| struct | Mpeg4EncContext |
Macros | |
| #define | UNI_MPEG4_ENC_INDEX(last, run, level) ((last) * 128 * 64 + (run) * 128 + (level)) |
| #define | VLC_NUM_CODES 102 |
| #define | OFFSET(x) offsetof(MPVEncContext, x) |
| #define | VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM |
Functions | |
| static Mpeg4EncContext * | mainctx_to_mpeg4 (MPVMainEncContext *m) |
| static int | get_block_rate (MPVEncContext *const s, int16_t block[64], int block_last_index, const uint8_t scantable[64]) |
| Return the number of bits that encoding the 8x8 block in block would need. More... | |
| static void | restore_ac_coeffs (MPVEncContext *const s, int16_t block[6][64], const int dir[6], const uint8_t *st[6], const int zigzag_last_index[6]) |
| Restore the ac coefficients in block that have been changed by decide_ac_pred(). More... | |
| static int | mpeg4_pred_dc (MpegEncContext *s, int n, int *dir_ptr) |
| Predict the dc. More... | |
| static int | decide_ac_pred (MPVEncContext *const s, int16_t block[6][64], const int dir[6], const uint8_t *st[6], int zigzag_last_index[6]) |
| Return the optimal value (0 or 1) for the ac_pred element for the given MB in MPEG-4. More... | |
| void | ff_clean_mpeg4_qscales (MPVEncContext *const s) |
| modify mb_type & qscale so that encoding is actually possible in MPEG-4 More... | |
| static void | mpeg4_encode_dc (PutBitContext *s, int level, int n) |
| Encode the dc value. More... | |
| static void | mpeg4_encode_ac_coeffs (const int16_t block[64], const int last_index, int i, const uint8_t *const scan_table, PutBitContext *const ac_pb, const uint32_t *const bits_tab, const uint8_t *const len_tab) |
| Encode the AC coefficients of an 8x8 block. More... | |
| static void | mpeg4_encode_blocks_inter (MPVEncContext *const s, const int16_t block[6][64], PutBitContext *ac_pb) |
| static void | mpeg4_encode_blocks_intra (MPVEncContext *const s, const int16_t block[6][64], const int intra_dc[6], const uint8_t *const *scan_table, PutBitContext *dc_pb, PutBitContext *ac_pb) |
| static int | get_b_cbp (MPVEncContext *const s, int16_t block[6][64], int motion_x, int motion_y, int mb_type) |
| static void | mpeg4_encode_mb (MPVEncContext *const s, int16_t block[][64], int motion_x, int motion_y) |
| void | ff_mpeg4_stuffing (PutBitContext *pbc) |
| add MPEG-4 stuffing bits (01...1) More... | |
| void | ff_set_mpeg4_time (MPVEncContext *const s) |
| static void | mpeg4_encode_gop_header (MPVMainEncContext *const m) |
| static void | mpeg4_encode_visual_object_header (MPVMainEncContext *const m) |
| static void | mpeg4_encode_vol_header (Mpeg4EncContext *const m4, int vo_number, int vol_number) |
| static int | mpeg4_encode_picture_header (MPVMainEncContext *const m) |
| static av_cold void | init_uni_dc_tab (void) |
| static av_cold void | init_uni_mpeg4_rl_tab (RLTable *rl, uint32_t *bits_tab, uint8_t *len_tab) |
| static av_cold void | mpeg4_encode_init_static (void) |
| static av_cold int | encode_init (AVCodecContext *avctx) |
| void | ff_mpeg4_init_partitions (MPVEncContext *const s) |
| void | ff_mpeg4_merge_partitions (MPVEncContext *const s) |
| void | ff_mpeg4_encode_video_packet_header (MPVEncContext *const s) |
Variables | |
| static uint8_t | fcode_tab [MAX_MV *2+1] |
| Minimal fcode that a motion vector component would need. More... | |
| static uint8_t | uni_DCtab_lum_len [512] |
| static uint8_t | uni_DCtab_chrom_len [512] |
| static uint16_t | uni_DCtab_lum_bits [512] |
| static uint16_t | uni_DCtab_chrom_bits [512] |
| static uint32_t | uni_mpeg4_intra_rl_bits [64 *64 *2 *2] |
| static uint8_t | uni_mpeg4_intra_rl_len [64 *64 *2 *2] |
| static uint32_t | uni_mpeg4_inter_rl_bits [64 *64 *2 *2] |
| static uint8_t | uni_mpeg4_inter_rl_len [64 *64 *2 *2] |
| static const int | dquant_code [5] = { 1, 0, 9, 2, 3 } |
| static const AVOption | options [] |
| static const AVClass | mpeg4enc_class |
| const FFCodec | ff_mpeg4_encoder |
Definition at line 64 of file mpeg4videoenc.c.
| #define VLC_NUM_CODES 102 |
| #define OFFSET | ( | x | ) | offsetof(MPVEncContext, x) |
Definition at line 1338 of file mpeg4videoenc.c.
| #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM |
Definition at line 1339 of file mpeg4videoenc.c.
|
inlinestatic |
Definition at line 82 of file mpeg4videoenc.c.
Referenced by mpeg4_encode_picture_header().
|
inlinestatic |
Return the number of bits that encoding the 8x8 block in block would need.
| [in] | block_last_index | last index in scantable order that refers to a non zero element in block. |
Definition at line 91 of file mpeg4videoenc.c.
Referenced by decide_ac_pred().
|
inlinestatic |
Restore the ac coefficients in block that have been changed by decide_ac_pred().
This function also restores s->c.block_last_index.
| [in,out] | block | MB coefficients, these will be restored |
| [in] | dir | ac prediction direction for each 8x8 block |
| [out] | st | scantable for each 8x8 block |
| [in] | zigzag_last_index | index referring to the last non zero coefficient in zigzag order |
Definition at line 126 of file mpeg4videoenc.c.
Referenced by decide_ac_pred(), and mpeg4_encode_mb().
|
static |
Predict the dc.
| n | block index (0-3 are luma, 4-5 are chroma) |
| dir_ptr | pointer to an integer where the prediction direction will be stored |
Definition at line 154 of file mpeg4videoenc.c.
Referenced by mpeg4_encode_mb().
|
inlinestatic |
Return the optimal value (0 or 1) for the ac_pred element for the given MB in MPEG-4.
This function will also update s->c.block_last_index and s->c.ac_val.
| [in,out] | block | MB coefficients, these will be updated if 1 is returned |
| [in] | dir | ac prediction direction for each 8x8 block |
| [out] | st | scantable for each 8x8 block |
| [out] | zigzag_last_index | index referring to the last non zero coefficient in zigzag order |
Definition at line 187 of file mpeg4videoenc.c.
Referenced by mpeg4_encode_mb().
| void ff_clean_mpeg4_qscales | ( | MPVEncContext *const | s | ) |
modify mb_type & qscale so that encoding is actually possible in MPEG-4
Definition at line 270 of file mpeg4videoenc.c.
Referenced by estimate_qp().
|
inlinestatic |
Encode the dc value.
| n | block index (0-3 are luma, 4-5 are chroma) |
Definition at line 312 of file mpeg4videoenc.c.
Referenced by mpeg4_encode_blocks_intra().
|
inlinestatic |
Encode the AC coefficients of an 8x8 block.
Definition at line 328 of file mpeg4videoenc.c.
Referenced by mpeg4_encode_blocks_inter(), and mpeg4_encode_blocks_intra().
|
static |
Definition at line 371 of file mpeg4videoenc.c.
Referenced by mpeg4_encode_mb().
|
static |
Definition at line 387 of file mpeg4videoenc.c.
Referenced by mpeg4_encode_mb().
|
inlinestatic |
Definition at line 408 of file mpeg4videoenc.c.
Referenced by mpeg4_encode_mb().
|
static |
Definition at line 452 of file mpeg4videoenc.c.
Referenced by encode_init().
| void ff_mpeg4_stuffing | ( | PutBitContext * | pbc | ) |
add MPEG-4 stuffing bits (01...1)
Definition at line 835 of file mpeg4videoenc.c.
Referenced by mpeg4_encode_gop_header(), mpeg4_encode_visual_object_header(), mpeg4_encode_vol_header(), and write_slice_end().
| void ff_set_mpeg4_time | ( | MPVEncContext *const | s | ) |
Definition at line 843 of file mpeg4videoenc.c.
Referenced by encode_picture().
|
static |
Definition at line 853 of file mpeg4videoenc.c.
Referenced by mpeg4_encode_picture_header().
|
static |
Definition at line 883 of file mpeg4videoenc.c.
Referenced by encode_init(), and mpeg4_encode_picture_header().
|
static |
Definition at line 926 of file mpeg4videoenc.c.
Referenced by encode_init(), and mpeg4_encode_picture_header().
|
static |
Definition at line 1017 of file mpeg4videoenc.c.
Referenced by encode_init().
|
static |
Definition at line 1079 of file mpeg4videoenc.c.
Referenced by mpeg4_encode_init_static().
|
static |
Definition at line 1134 of file mpeg4videoenc.c.
Referenced by mpeg4_encode_init_static().
|
static |
Definition at line 1212 of file mpeg4videoenc.c.
Referenced by encode_init().
|
static |
Definition at line 1225 of file mpeg4videoenc.c.
| void ff_mpeg4_init_partitions | ( | MPVEncContext *const | s | ) |
Definition at line 1287 of file mpeg4videoenc.c.
Referenced by encode_thread().
| void ff_mpeg4_merge_partitions | ( | MPVEncContext *const | s | ) |
Definition at line 1300 of file mpeg4videoenc.c.
Referenced by write_slice_end().
| void ff_mpeg4_encode_video_packet_header | ( | MPVEncContext *const | s | ) |
Definition at line 1326 of file mpeg4videoenc.c.
Referenced by encode_thread().
|
static |
Minimal fcode that a motion vector component would need.
Definition at line 45 of file mpeg4videoenc.c.
Referenced by encode_init(), ff_get_best_fcode(), and mpeg4_encode_init_static().
|
static |
Definition at line 50 of file mpeg4videoenc.c.
Referenced by encode_init(), init_uni_dc_tab(), and mpeg4_encode_dc().
|
static |
Definition at line 51 of file mpeg4videoenc.c.
Referenced by init_uni_dc_tab(), and mpeg4_encode_dc().
|
static |
Definition at line 52 of file mpeg4videoenc.c.
Referenced by init_uni_dc_tab(), and mpeg4_encode_dc().
|
static |
Definition at line 53 of file mpeg4videoenc.c.
Referenced by init_uni_dc_tab(), and mpeg4_encode_dc().
|
static |
Definition at line 57 of file mpeg4videoenc.c.
Referenced by mpeg4_encode_blocks_intra(), and mpeg4_encode_init_static().
|
static |
Definition at line 58 of file mpeg4videoenc.c.
Referenced by encode_init(), mpeg4_encode_blocks_intra(), and mpeg4_encode_init_static().
|
static |
Definition at line 59 of file mpeg4videoenc.c.
Referenced by mpeg4_encode_blocks_inter(), and mpeg4_encode_init_static().
|
static |
Definition at line 60 of file mpeg4videoenc.c.
Referenced by encode_init(), mpeg4_encode_blocks_inter(), and mpeg4_encode_init_static().
|
static |
Definition at line 450 of file mpeg4videoenc.c.
Referenced by mpeg4_encode_mb().
Definition at line 1340 of file mpeg4videoenc.c.
|
static |
Definition at line 1352 of file mpeg4videoenc.c.
| const FFCodec ff_mpeg4_encoder |
Definition at line 1359 of file mpeg4videoenc.c.
1.8.17