FFmpeg
Macros | Functions | Variables
mpegvideo_enc.c File Reference

The simplest mpeg encoder (well, it was the simplest!). More...

#include <stdint.h>
#include "libavutil/internal.h"
#include "libavutil/intmath.h"
#include "libavutil/mathematics.h"
#include "libavutil/pixdesc.h"
#include "libavutil/opt.h"
#include "libavutil/timer.h"
#include "avcodec.h"
#include "dct.h"
#include "idctdsp.h"
#include "mpeg12.h"
#include "mpegvideo.h"
#include "mpegvideodata.h"
#include "h261.h"
#include "h263.h"
#include "h263data.h"
#include "mjpegenc_common.h"
#include "mathops.h"
#include "mpegutils.h"
#include "mjpegenc.h"
#include "msmpeg4.h"
#include "pixblockdsp.h"
#include "qpeldsp.h"
#include "faandct.h"
#include "thread.h"
#include "aandcttab.h"
#include "flv.h"
#include "mpeg4video.h"
#include "internal.h"
#include "bytestream.h"
#include "wmv2.h"
#include "rv10.h"
#include "libxvid.h"
#include <limits.h>
#include "sp5x.h"

Macros

#define QUANT_BIAS_SHIFT   8
 
#define QMAT_SHIFT_MMX   16
 
#define QMAT_SHIFT   21
 
#define COPY(a)   dst->a= src->a
 
#define MERGE(field)   dst->field += src->field; src->field=0
 
#define OFFSET(x)   offsetof(MpegEncContext, x)
 
#define VE   AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM
 

Functions

void ff_convert_matrix (MpegEncContext *s, int(*qmat)[64], uint16_t(*qmat16)[2][64], const uint16_t *quant_matrix, int bias, int qmin, int qmax, int intra)
 
void ff_write_quant_matrix (PutBitContext *pb, uint16_t *matrix)
 
void ff_init_qscale_tab (MpegEncContext *s)
 init s->current_picture.qscale_table from s->lambda_table
 
av_cold int ff_dct_encode_init (MpegEncContext *s)
 
av_cold int ff_mpv_encode_init (AVCodecContext *avctx)
 
av_cold int ff_mpv_encode_end (AVCodecContext *avctx)
 
int ff_mpv_encode_picture (AVCodecContext *avctx, AVPacket *pkt, const AVFrame *pic_arg, int *got_packet)
 
int ff_mpv_reallocate_putbitbuffer (MpegEncContext *s, size_t threshold, size_t size_increase)
 
void ff_block_permute (int16_t *block, uint8_t *permutation, const uint8_t *scantable, int last)
 Permute an 8x8 block according to permutation. More...
 
int ff_dct_quantize_c (MpegEncContext *s, int16_t *block, int n, int qscale, int *overflow)
 

Variables

const AVOption ff_mpv_generic_options []
 
AVCodec ff_h263_encoder
 
AVCodec ff_h263p_encoder
 
AVCodec ff_msmpeg4v2_encoder
 
AVCodec ff_msmpeg4v3_encoder
 
AVCodec ff_wmv1_encoder
 

Detailed Description

The simplest mpeg encoder (well, it was the simplest!).

Function Documentation

§ ff_block_permute()

void ff_block_permute ( int16_t *  block,
uint8_t *  permutation,
const uint8_t *  scantable,
int  last 
)

Permute an 8x8 block according to permutation.

Parameters
blockthe block which will be permuted according to the given permutation vector
permutationthe permutation vector
lastthe last non zero coefficient in scantable order, used to speed the permutation up
scantablethe used scantable, this is only used to speed the permutation up, the block is not (inverse) permutated to scantable order!

Variable Documentation

§ ff_h263_encoder

AVCodec ff_h263_encoder
Initial value:
= {
.name = "h263",
.long_name = NULL_IF_CONFIG_SMALL("H.263 / H.263-1996"),
.type = AVMEDIA_TYPE_VIDEO,
.id = AV_CODEC_ID_H263,
.priv_data_size = sizeof(MpegEncContext),
.init = ff_mpv_encode_init,
.encode2 = ff_mpv_encode_picture,
.close = ff_mpv_encode_end,
.pix_fmts= (const enum AVPixelFormat[]){AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE},
.priv_class = &h263_class,
}
struct MpegEncContext MpegEncContext
MpegEncContext.
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:186
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
Definition: pixfmt.h:62
AVPixelFormat
Pixel format.
Definition: pixfmt.h:60

§ ff_h263p_encoder

AVCodec ff_h263p_encoder
Initial value:
= {
.name = "h263p",
.long_name = NULL_IF_CONFIG_SMALL("H.263+ / H.263-1998 / H.263 version 2"),
.type = AVMEDIA_TYPE_VIDEO,
.id = AV_CODEC_ID_H263P,
.priv_data_size = sizeof(MpegEncContext),
.init = ff_mpv_encode_init,
.encode2 = ff_mpv_encode_picture,
.close = ff_mpv_encode_end,
.capabilities = AV_CODEC_CAP_SLICE_THREADS,
.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE },
.priv_class = &h263p_class,
}
struct MpegEncContext MpegEncContext
MpegEncContext.
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:186
#define AV_CODEC_CAP_SLICE_THREADS
Codec supports slice-based (or partition-based) multithreading.
Definition: avcodec.h:1019
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
Definition: pixfmt.h:62
AVPixelFormat
Pixel format.
Definition: pixfmt.h:60

§ ff_mpv_generic_options

const AVOption ff_mpv_generic_options[]
Initial value:
= {
FF_MPV_COMMON_OPTS
{ NULL },
}

§ ff_msmpeg4v2_encoder

AVCodec ff_msmpeg4v2_encoder
Initial value:
= {
.name = "msmpeg4v2",
.long_name = NULL_IF_CONFIG_SMALL("MPEG-4 part 2 Microsoft variant version 2"),
.type = AVMEDIA_TYPE_VIDEO,
.id = AV_CODEC_ID_MSMPEG4V2,
.priv_data_size = sizeof(MpegEncContext),
.init = ff_mpv_encode_init,
.encode2 = ff_mpv_encode_picture,
.close = ff_mpv_encode_end,
.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE },
.priv_class = &msmpeg4v2_class,
}
struct MpegEncContext MpegEncContext
MpegEncContext.
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:186
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
Definition: pixfmt.h:62
AVPixelFormat
Pixel format.
Definition: pixfmt.h:60

§ ff_msmpeg4v3_encoder

AVCodec ff_msmpeg4v3_encoder
Initial value:
= {
.name = "msmpeg4",
.long_name = NULL_IF_CONFIG_SMALL("MPEG-4 part 2 Microsoft variant version 3"),
.type = AVMEDIA_TYPE_VIDEO,
.id = AV_CODEC_ID_MSMPEG4V3,
.priv_data_size = sizeof(MpegEncContext),
.init = ff_mpv_encode_init,
.encode2 = ff_mpv_encode_picture,
.close = ff_mpv_encode_end,
.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE },
.priv_class = &msmpeg4v3_class,
}
struct MpegEncContext MpegEncContext
MpegEncContext.
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:186
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
Definition: pixfmt.h:62
AVPixelFormat
Pixel format.
Definition: pixfmt.h:60

§ ff_wmv1_encoder

AVCodec ff_wmv1_encoder
Initial value:
= {
.name = "wmv1",
.long_name = NULL_IF_CONFIG_SMALL("Windows Media Video 7"),
.type = AVMEDIA_TYPE_VIDEO,
.id = AV_CODEC_ID_WMV1,
.priv_data_size = sizeof(MpegEncContext),
.init = ff_mpv_encode_init,
.encode2 = ff_mpv_encode_picture,
.close = ff_mpv_encode_end,
.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE },
.priv_class = &wmv1_class,
}
struct MpegEncContext MpegEncContext
MpegEncContext.
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:186
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
Definition: pixfmt.h:62
AVPixelFormat
Pixel format.
Definition: pixfmt.h:60