FFmpeg
Macros | Functions | Variables
msmpeg4enc.c File Reference
#include <stdint.h>
#include <string.h>
#include "libavutil/attributes.h"
#include "libavutil/avutil.h"
#include "libavutil/thread.h"
#include "codec_internal.h"
#include "mpegvideo.h"
#include "mpegvideoenc.h"
#include "h263.h"
#include "h263data.h"
#include "mpeg4video.h"
#include "msmpeg4.h"
#include "msmpeg4data.h"
#include "msmpeg4_vc1_data.h"
#include "msmpeg4enc.h"
#include "put_bits.h"
#include "rl.h"

Go to the source code of this file.

Macros

#define NO_SLICE_THREADING_HERE
 

Functions

static av_cold void init_mv_table (const uint16_t mv_table[], const uint8_t mv_table_lens[], uint32_t mv_vector_table[4096], unsigned escape_code, int escape_length)
 
void ff_msmpeg4_code012 (PutBitContext *pb, int n)
 
static int get_size_of_code (const RLTable *rl, int last, int run, int level, int intra)
 
static av_cold void msmpeg4_encode_init_static (void)
 
static void find_best_tables (MSMPEG4EncContext *ms)
 
static int msmpeg4_encode_picture_header (MPVMainEncContext *const m)
 
void ff_msmpeg4_encode_ext_header (MPVEncContext *const s)
 
void ff_msmpeg4_encode_motion (MSMPEG4EncContext *const ms, int mx, int my)
 
void ff_msmpeg4_handle_slices (MPVEncContext *const s)
 
static void msmpeg4v2_encode_motion (MPVEncContext *const s, int val)
 
static void msmpeg4_encode_mb (MPVEncContext *const s, int16_t block[][64], int motion_x, int motion_y)
 
static void msmpeg4_encode_dc (MSMPEG4EncContext *const ms, int level, int n, int *dir_ptr)
 
void ff_msmpeg4_encode_block (MPVEncContext *const s, int16_t *block, int n)
 
av_cold void ff_msmpeg4_encode_init (MPVMainEncContext *const m)
 

Variables

static uint8_t rl_length [NB_RL_TABLES][MAX_LEVEL+1][MAX_RUN+1][2]
 
static uint32_t mv_vector_tables [2][4096]
 
const FFCodec ff_msmpeg4v2_encoder
 
const FFCodec ff_msmpeg4v3_encoder
 
const FFCodec ff_wmv1_encoder
 

Detailed Description

MSMPEG4 encoder backend

Definition in file msmpeg4enc.c.

Macro Definition Documentation

◆ NO_SLICE_THREADING_HERE

#define NO_SLICE_THREADING_HERE

Definition at line 33 of file msmpeg4enc.c.

Function Documentation

◆ init_mv_table()

static av_cold void init_mv_table ( const uint16_t  mv_table[],
const uint8_t  mv_table_lens[],
uint32_t  mv_vector_table[4096],
unsigned  escape_code,
int  escape_length 
)
static

Definition at line 58 of file msmpeg4enc.c.

Referenced by msmpeg4_encode_init_static().

◆ ff_msmpeg4_code012()

void ff_msmpeg4_code012 ( PutBitContext pb,
int  n 
)

Definition at line 81 of file msmpeg4enc.c.

Referenced by msmpeg4_encode_picture_header(), and wmv2_encode_picture_header().

◆ get_size_of_code()

static int get_size_of_code ( const RLTable rl,
int  last,
int  run,
int  level,
int  intra 
)
static

Definition at line 90 of file msmpeg4enc.c.

Referenced by msmpeg4_encode_init_static().

◆ msmpeg4_encode_init_static()

static av_cold void msmpeg4_encode_init_static ( void  )
static

Definition at line 133 of file msmpeg4enc.c.

Referenced by ff_msmpeg4_encode_init().

◆ find_best_tables()

static void find_best_tables ( MSMPEG4EncContext ms)
static

Definition at line 151 of file msmpeg4enc.c.

Referenced by msmpeg4_encode_picture_header().

◆ msmpeg4_encode_picture_header()

static int msmpeg4_encode_picture_header ( MPVMainEncContext *const  m)
static

Definition at line 217 of file msmpeg4enc.c.

Referenced by ff_msmpeg4_encode_init().

◆ ff_msmpeg4_encode_ext_header()

void ff_msmpeg4_encode_ext_header ( MPVEncContext *const  s)

Definition at line 284 of file msmpeg4enc.c.

Referenced by encode_thread(), and msmpeg4_encode_picture_header().

◆ ff_msmpeg4_encode_motion()

void ff_msmpeg4_encode_motion ( MSMPEG4EncContext *const  ms,
int  mx,
int  my 
)

Definition at line 305 of file msmpeg4enc.c.

Referenced by msmpeg4_encode_mb(), and wmv2_encode_mb().

◆ ff_msmpeg4_handle_slices()

void ff_msmpeg4_handle_slices ( MPVEncContext *const  s)

Definition at line 331 of file msmpeg4enc.c.

Referenced by msmpeg4_encode_mb(), and wmv2_encode_mb().

◆ msmpeg4v2_encode_motion()

static void msmpeg4v2_encode_motion ( MPVEncContext *const  s,
int  val 
)
static

Definition at line 344 of file msmpeg4enc.c.

Referenced by msmpeg4_encode_mb().

◆ msmpeg4_encode_mb()

static void msmpeg4_encode_mb ( MPVEncContext *const  s,
int16_t  block[][64],
int  motion_x,
int  motion_y 
)
static

Definition at line 376 of file msmpeg4enc.c.

Referenced by ff_msmpeg4_encode_init().

◆ msmpeg4_encode_dc()

static void msmpeg4_encode_dc ( MSMPEG4EncContext *const  ms,
int  level,
int  n,
int *  dir_ptr 
)
static

Definition at line 501 of file msmpeg4enc.c.

Referenced by ff_msmpeg4_encode_block().

◆ ff_msmpeg4_encode_block()

void ff_msmpeg4_encode_block ( MPVEncContext *const  s,
int16_t *  block,
int  n 
)

Definition at line 554 of file msmpeg4enc.c.

Referenced by msmpeg4_encode_mb(), and wmv2_encode_mb().

◆ ff_msmpeg4_encode_init()

av_cold void ff_msmpeg4_encode_init ( MPVMainEncContext *const  m)

Definition at line 672 of file msmpeg4enc.c.

Referenced by ff_mpv_encode_init().

Variable Documentation

◆ rl_length

uint8_t rl_length[NB_RL_TABLES][MAX_LEVEL+1][MAX_RUN+1][2]
static

Definition at line 51 of file msmpeg4enc.c.

Referenced by find_best_tables(), and msmpeg4_encode_init_static().

◆ mv_vector_tables

uint32_t mv_vector_tables[2][4096]
static

Definition at line 55 of file msmpeg4enc.c.

Referenced by ff_msmpeg4_encode_motion(), and msmpeg4_encode_init_static().

◆ ff_msmpeg4v2_encoder

const FFCodec ff_msmpeg4v2_encoder
Initial value:
= {
.p.name = "msmpeg4v2",
CODEC_LONG_NAME("MPEG-4 part 2 Microsoft variant version 2"),
.p.type = AVMEDIA_TYPE_VIDEO,
.color_ranges = AVCOL_RANGE_MPEG,
.p.priv_class = &ff_mpv_enc_class,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
.priv_data_size = sizeof(MSMPEG4EncContext),
}

Definition at line 693 of file msmpeg4enc.c.

◆ ff_msmpeg4v3_encoder

const FFCodec ff_msmpeg4v3_encoder
Initial value:
= {
.p.name = "msmpeg4",
CODEC_LONG_NAME("MPEG-4 part 2 Microsoft variant version 3"),
.p.type = AVMEDIA_TYPE_VIDEO,
.color_ranges = AVCOL_RANGE_MPEG,
.p.priv_class = &ff_mpv_enc_class,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
.priv_data_size = sizeof(MSMPEG4EncContext),
}

Definition at line 709 of file msmpeg4enc.c.

◆ ff_wmv1_encoder

const FFCodec ff_wmv1_encoder
Initial value:
= {
.p.name = "wmv1",
CODEC_LONG_NAME("Windows Media Video 7"),
.p.type = AVMEDIA_TYPE_VIDEO,
.color_ranges = AVCOL_RANGE_MPEG,
.p.priv_class = &ff_mpv_enc_class,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
.priv_data_size = sizeof(MSMPEG4EncContext),
}

Definition at line 725 of file msmpeg4enc.c.

CODEC_PIXFMTS
#define CODEC_PIXFMTS(...)
Definition: codec_internal.h:386
ff_mpv_enc_class
const AVClass ff_mpv_enc_class
Definition: mpegvideo_enc.c:104
FF_CODEC_CAP_INIT_CLEANUP
#define FF_CODEC_CAP_INIT_CLEANUP
The codec allows calling the close function for deallocation even if the init function returned a fai...
Definition: codec_internal.h:42
ff_mpv_encode_picture
int ff_mpv_encode_picture(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *pic_arg, int *got_packet)
Definition: mpegvideo_enc.c:1926
AV_CODEC_ID_MSMPEG4V2
@ AV_CODEC_ID_MSMPEG4V2
Definition: codec_id.h:67
FF_CODEC_ENCODE_CB
#define FF_CODEC_ENCODE_CB(func)
Definition: codec_internal.h:353
AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE
#define AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE
This encoder can reorder user opaque values from input AVFrames and return them with corresponding ou...
Definition: codec.h:144
AV_PIX_FMT_YUV420P
@ AV_PIX_FMT_YUV420P
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
Definition: pixfmt.h:73
CODEC_LONG_NAME
#define CODEC_LONG_NAME(str)
Definition: codec_internal.h:326
ff_mpv_encode_end
av_cold int ff_mpv_encode_end(AVCodecContext *avctx)
Definition: mpegvideo_enc.c:1104
AV_CODEC_ID_WMV1
@ AV_CODEC_ID_WMV1
Definition: codec_id.h:69
MSMPEG4EncContext
Definition: msmpeg4enc.h:29
init
int(* init)(AVBSFContext *ctx)
Definition: dts2pts.c:368
AV_CODEC_CAP_DR1
#define AV_CODEC_CAP_DR1
Codec uses get_buffer() or get_encode_buffer() for allocating buffers and supports custom allocators.
Definition: codec.h:52
AVCOL_RANGE_MPEG
@ AVCOL_RANGE_MPEG
Narrow or limited range content.
Definition: pixfmt.h:733
AVMEDIA_TYPE_VIDEO
@ AVMEDIA_TYPE_VIDEO
Definition: avutil.h:201
ff_mpv_encode_init
av_cold int ff_mpv_encode_init(AVCodecContext *avctx)
Definition: mpegvideo_enc.c:544
AV_CODEC_ID_MSMPEG4V3
@ AV_CODEC_ID_MSMPEG4V3
Definition: codec_id.h:68