#include "avcodec.h"
#include "dsputil.h"
#include "mathops.h"
#include "mpegvideo.h"
#include "mpeg12.h"
#include "mpeg12data.h"
#include "bytestream.h"
#include "timecode.h"
#include "libavutil/log.h"
#include "libavutil/opt.h"
#include "libavutil/avassert.h"
Go to the source code of this file.
Defines | |
#define | OFFSET(x) offsetof(MpegEncContext, x) |
#define | VE AV_OPT_FLAG_ENCODING_PARAM | AV_OPT_FLAG_VIDEO_PARAM |
#define | COMMON_OPTS |
#define | mpeg12_class(x) |
Functions | |
static void | mpeg1_encode_block (MpegEncContext *s, DCTELEM *block, int component) |
static void | mpeg1_encode_motion (MpegEncContext *s, int val, int f_or_b_code) |
static void | init_uni_ac_vlc (RLTable *rl, uint8_t *uni_ac_vlc_len) |
static int | find_frame_rate_index (MpegEncContext *s) |
static av_cold int | encode_init (AVCodecContext *avctx) |
static void | put_header (MpegEncContext *s, int header) |
static void | mpeg1_encode_sequence_header (MpegEncContext *s) |
static void | encode_mb_skip_run (MpegEncContext *s, int run) |
static av_always_inline void | put_qscale (MpegEncContext *s) |
void | ff_mpeg1_encode_slice_header (MpegEncContext *s) |
void | mpeg1_encode_picture_header (MpegEncContext *s, int picture_number) |
static void | put_mb_modes (MpegEncContext *s, int n, int bits, int has_mv, int field_motion) |
static av_always_inline void | mpeg1_encode_mb_internal (MpegEncContext *s, DCTELEM block[6][64], int motion_x, int motion_y, int mb_block_count) |
void | mpeg1_encode_mb (MpegEncContext *s, DCTELEM block[6][64], int motion_x, int motion_y) |
void | ff_mpeg1_encode_init (MpegEncContext *s) |
static void | encode_dc (MpegEncContext *s, int diff, int component) |
mpeg12_class (1) | |
Variables | |
static const uint8_t | inv_non_linear_qscale [13] |
static const uint8_t | svcd_scan_offset_placeholder [14] |
static uint8_t | mv_penalty [MAX_FCODE+1][MAX_MV *2+1] |
static uint8_t | fcode_tab [MAX_MV *2+1] |
static uint8_t | uni_mpeg1_ac_vlc_len [64 *64 *2] |
static uint8_t | uni_mpeg2_ac_vlc_len [64 *64 *2] |
static uint32_t | mpeg1_lum_dc_uni [512] |
static uint32_t | mpeg1_chr_dc_uni [512] |
static uint8_t | mpeg1_index_run [2][64] |
static int8_t | mpeg1_max_level [2][64] |
static const AVOption | mpeg1_options [] |
static const AVOption | mpeg2_options [] |
AVCodec | ff_mpeg2video_encoder |
Definition in file mpeg12enc.c.
#define COMMON_OPTS |
Value:
{TIMECODE_OPT(MpegEncContext,\ AV_OPT_FLAG_ENCODING_PARAM | AV_OPT_FLAG_VIDEO_PARAM)},\ { "intra_vlc", "Use MPEG-2 intra VLC table.", OFFSET(intra_vlc_format), AV_OPT_TYPE_INT, { 0 }, 0, 1, VE },\ { "drop_frame_timecode", "Timecode is in drop frame format.", OFFSET(drop_frame_timecode), AV_OPT_TYPE_INT, { 0 }, 0, 1, VE}, \ { "scan_offset", "Reserve space for SVCD scan offset user data.", OFFSET(scan_offset), AV_OPT_TYPE_INT, { 0 }, 0, 1, VE },
Definition at line 937 of file mpeg12enc.c.
#define mpeg12_class | ( | x | ) |
Value:
static const AVClass mpeg## x ##_class = {\ .class_name = "mpeg" #x "video encoder",\ .item_name = av_default_item_name,\ .option = mpeg## x ##_options,\ .version = LIBAVUTIL_VERSION_INT,\ };
Definition at line 956 of file mpeg12enc.c.
#define OFFSET | ( | x | ) | offsetof(MpegEncContext, x) |
Definition at line 935 of file mpeg12enc.c.
#define VE AV_OPT_FLAG_ENCODING_PARAM | AV_OPT_FLAG_VIDEO_PARAM |
Definition at line 936 of file mpeg12enc.c.
static void encode_dc | ( | MpegEncContext * | s, | |
int | diff, | |||
int | component | |||
) | [inline, static] |
static av_cold int encode_init | ( | AVCodecContext * | avctx | ) | [static] |
Definition at line 131 of file mpeg12enc.c.
static void encode_mb_skip_run | ( | MpegEncContext * | s, | |
int | run | |||
) | [inline, static] |
void ff_mpeg1_encode_init | ( | MpegEncContext * | s | ) |
void ff_mpeg1_encode_slice_header | ( | MpegEncContext * | s | ) |
Definition at line 337 of file mpeg12enc.c.
Referenced by encode_thread(), and mpeg1_encode_picture_header().
static int find_frame_rate_index | ( | MpegEncContext * | s | ) | [static] |
static void init_uni_ac_vlc | ( | RLTable * | rl, | |
uint8_t * | uni_ac_vlc_len | |||
) | [static] |
mpeg12_class | ( | 1 | ) |
Definition at line 964 of file mpeg12enc.c.
static void mpeg1_encode_block | ( | MpegEncContext * | s, | |
DCTELEM * | block, | |||
int | component | |||
) | [static] |
void mpeg1_encode_mb | ( | MpegEncContext * | s, | |
DCTELEM | block[6][64], | |||
int | motion_x, | |||
int | motion_y | |||
) |
static av_always_inline void mpeg1_encode_mb_internal | ( | MpegEncContext * | s, | |
DCTELEM | block[6][64], | |||
int | motion_x, | |||
int | motion_y, | |||
int | mb_block_count | |||
) | [static] |
static void mpeg1_encode_motion | ( | MpegEncContext * | s, | |
int | val, | |||
int | f_or_b_code | |||
) | [static] |
void mpeg1_encode_picture_header | ( | MpegEncContext * | s, | |
int | picture_number | |||
) |
static void mpeg1_encode_sequence_header | ( | MpegEncContext * | s | ) | [static] |
static void put_header | ( | MpegEncContext * | s, | |
int | header | |||
) | [static] |
Definition at line 195 of file mpeg12enc.c.
Referenced by asf_write_header1(), ff_mpeg1_encode_slice_header(), mpeg1_encode_picture_header(), and mpeg1_encode_sequence_header().
static void put_mb_modes | ( | MpegEncContext * | s, | |
int | n, | |||
int | bits, | |||
int | has_mv, | |||
int | field_motion | |||
) | [inline, static] |
static av_always_inline void put_qscale | ( | MpegEncContext * | s | ) | [static] |
Definition at line 327 of file mpeg12enc.c.
Referenced by ff_mpeg1_encode_slice_header(), and mpeg1_encode_mb_internal().
uint8_t fcode_tab[MAX_MV *2+1] [static] |
Definition at line 60 of file mpeg12enc.c.
Initial value:
{ .name = "mpeg2video", .type = AVMEDIA_TYPE_VIDEO, .id = CODEC_ID_MPEG2VIDEO, .priv_data_size = sizeof(MpegEncContext), .init = encode_init, .encode = MPV_encode_picture, .close = MPV_encode_end, .supported_framerates= avpriv_frame_rate_tab+1, .pix_fmts= (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_YUV422P, PIX_FMT_NONE}, .capabilities= CODEC_CAP_DELAY | CODEC_CAP_SLICE_THREADS, .long_name= NULL_IF_CONFIG_SMALL("MPEG-2 video"), .priv_class = &mpeg2_class, }
Definition at line 982 of file mpeg12enc.c.
const uint8_t inv_non_linear_qscale[13] [static] |
Initial value:
{ 0, 2, 4, 6, 8, 9,10,11,12,13,14,15,16, }
Definition at line 41 of file mpeg12enc.c.
Referenced by put_qscale().
uint32_t mpeg1_chr_dc_uni[512] [static] |
uint8_t mpeg1_index_run[2][64] [static] |
Definition at line 69 of file mpeg12enc.c.
Referenced by ff_mpeg1_encode_init(), and mpeg1_encode_block().
uint32_t mpeg1_lum_dc_uni[512] [static] |
int8_t mpeg1_max_level[2][64] [static] |
Definition at line 70 of file mpeg12enc.c.
Referenced by ff_mpeg1_encode_init(), and mpeg1_encode_block().
const AVOption mpeg1_options[] [static] |
const AVOption mpeg2_options[] [static] |
Initial value:
{ COMMON_OPTS { "non_linear_quant", "Use nonlinear quantizer.", OFFSET(q_scale_type), AV_OPT_TYPE_INT, { 0 }, 0, 1, VE }, { "alternate_scan", "Enable alternate scantable.", OFFSET(alternate_scan), AV_OPT_TYPE_INT, { 0 }, 0, 1, VE }, { NULL }, }
Definition at line 949 of file mpeg12enc.c.
uint8_t mv_penalty[MAX_FCODE+1][MAX_MV *2+1] [static] |
Definition at line 59 of file mpeg12enc.c.
const uint8_t svcd_scan_offset_placeholder[14] [static] |
Initial value:
{ 0x10, 0x0E, 0x00, 0x80, 0x81, 0x00, 0x80, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, }
Definition at line 46 of file mpeg12enc.c.
Referenced by mpeg1_encode_picture_header().
uint8_t uni_mpeg1_ac_vlc_len[64 *64 *2] [static] |
uint8_t uni_mpeg2_ac_vlc_len[64 *64 *2] [static] |