FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Functions | Variables
dvenc.c File Reference

DV encoder. More...

#include "config.h"
#include "libavutil/attributes.h"
#include "libavutil/pixdesc.h"
#include "avcodec.h"
#include "dv.h"
#include "dv_profile_internal.h"
#include "dv_tablegen.h"
#include "fdctdsp.h"
#include "internal.h"
#include "me_cmp.h"
#include "pixblockdsp.h"
#include "put_bits.h"

Go to the source code of this file.

Data Structures

struct  EncBlockInfo
 

Functions

static av_cold int dvvideo_encode_init (AVCodecContext *avctx)
 
static av_always_inline int dv_rl2vlc (int run, int l, int sign, uint32_t *vlc)
 
static av_always_inline int dv_rl2vlc_size (int run, int l)
 
static av_always_inline
PutBitContext
dv_encode_ac (EncBlockInfo *bi, PutBitContext *pb_pool, PutBitContext *pb_end)
 
static av_always_inline int dv_guess_dct_mode (DVVideoContext *s, uint8_t *data, int linesize)
 
static av_always_inline int dv_init_enc_block (EncBlockInfo *bi, uint8_t *data, int linesize, DVVideoContext *s, int bias)
 
static void dv_guess_qnos (EncBlockInfo *blks, int *qnos)
 
static int dv_encode_video_segment (AVCodecContext *avctx, void *arg)
 
static int dv_write_pack (enum dv_pack_type pack_id, DVVideoContext *c, uint8_t *buf)
 
static int dv_write_dif_id (enum dv_section_type t, uint8_t chan_num, uint8_t seq_num, uint8_t dif_num, uint8_t *buf)
 
static int dv_write_ssyb_id (uint8_t syb_num, uint8_t fr, uint8_t *buf)
 
static void dv_format_frame (DVVideoContext *c, uint8_t *buf)
 
static int dvvideo_encode_frame (AVCodecContext *c, AVPacket *pkt, const AVFrame *frame, int *got_packet)
 

Variables

static const int vs_total_ac_bits = (100 * 4 + 68 * 2) * 5
 
static const int mb_area_start [5] = { 1, 6, 21, 43, 64 }
 
static const int dv_weight_bits = 18
 
static const int dv_weight_88 [64]
 
static const int dv_weight_248 [64]
 
AVCodec ff_dvvideo_encoder
 

Detailed Description

DV encoder.

Definition in file dvenc.c.

Function Documentation

static av_cold int dvvideo_encode_init ( AVCodecContext avctx)
static

Definition at line 42 of file dvenc.c.

static av_always_inline int dv_rl2vlc ( int  run,
int  l,
int  sign,
uint32_t *  vlc 
)
static

Definition at line 132 of file dvenc.c.

Referenced by dv_encode_ac().

static av_always_inline int dv_rl2vlc_size ( int  run,
int  l 
)
static

Definition at line 138 of file dvenc.c.

Referenced by dv_guess_qnos(), and dv_init_enc_block().

static av_always_inline PutBitContext* dv_encode_ac ( EncBlockInfo bi,
PutBitContext pb_pool,
PutBitContext pb_end 
)
static

Definition at line 158 of file dvenc.c.

Referenced by dv_encode_video_segment().

static av_always_inline int dv_guess_dct_mode ( DVVideoContext s,
uint8_t data,
int  linesize 
)
static

Definition at line 204 of file dvenc.c.

Referenced by dv_init_enc_block().

static av_always_inline int dv_init_enc_block ( EncBlockInfo bi,
uint8_t data,
int  linesize,
DVVideoContext s,
int  bias 
)
static

Definition at line 241 of file dvenc.c.

Referenced by dv_encode_video_segment().

static void dv_guess_qnos ( EncBlockInfo blks,
int *  qnos 
)
inlinestatic

Definition at line 344 of file dvenc.c.

Referenced by dv_encode_video_segment().

static int dv_encode_video_segment ( AVCodecContext avctx,
void arg 
)
static

Definition at line 416 of file dvenc.c.

Referenced by dvvideo_encode_frame().

static int dv_write_pack ( enum dv_pack_type  pack_id,
DVVideoContext c,
uint8_t buf 
)
inlinestatic

Definition at line 555 of file dvenc.c.

Referenced by dv_format_frame().

static int dv_write_dif_id ( enum dv_section_type  t,
uint8_t  chan_num,
uint8_t  seq_num,
uint8_t  dif_num,
uint8_t buf 
)
inlinestatic

Definition at line 632 of file dvenc.c.

Referenced by dv_format_frame().

static int dv_write_ssyb_id ( uint8_t  syb_num,
uint8_t  fr,
uint8_t buf 
)
inlinestatic

Definition at line 644 of file dvenc.c.

Referenced by dv_format_frame().

static void dv_format_frame ( DVVideoContext c,
uint8_t buf 
)
static

Definition at line 664 of file dvenc.c.

Referenced by dvvideo_encode_frame().

static int dvvideo_encode_frame ( AVCodecContext c,
AVPacket pkt,
const AVFrame frame,
int *  got_packet 
)
static

Definition at line 714 of file dvenc.c.

Variable Documentation

const int vs_total_ac_bits = (100 * 4 + 68 * 2) * 5
static

Definition at line 88 of file dvenc.c.

Referenced by dv_encode_video_segment(), and dv_guess_qnos().

const int mb_area_start[5] = { 1, 6, 21, 43, 64 }
static

Definition at line 89 of file dvenc.c.

Referenced by dv_guess_qnos(), and dv_init_enc_block().

const int dv_weight_bits = 18
static

Definition at line 219 of file dvenc.c.

const int dv_weight_88[64]
static
Initial value:
= {
131072, 257107, 257107, 242189, 252167, 242189, 235923, 237536,
237536, 235923, 229376, 231390, 223754, 231390, 229376, 222935,
224969, 217965, 217965, 224969, 222935, 200636, 218652, 211916,
212325, 211916, 218652, 200636, 188995, 196781, 205965, 206433,
206433, 205965, 196781, 188995, 185364, 185364, 200636, 200704,
200636, 185364, 185364, 174609, 180568, 195068, 195068, 180568,
174609, 170091, 175557, 189591, 175557, 170091, 165371, 170627,
170627, 165371, 160727, 153560, 160727, 144651, 144651, 136258,
}

Definition at line 220 of file dvenc.c.

Referenced by dv_init_enc_block().

const int dv_weight_248[64]
static
Initial value:
= {
131072, 262144, 257107, 257107, 242189, 242189, 242189, 242189,
237536, 237536, 229376, 229376, 200636, 200636, 224973, 224973,
223754, 223754, 235923, 235923, 229376, 229376, 217965, 217965,
211916, 211916, 196781, 196781, 185364, 185364, 206433, 206433,
211916, 211916, 222935, 222935, 200636, 200636, 205964, 205964,
200704, 200704, 180568, 180568, 175557, 175557, 195068, 195068,
185364, 185364, 188995, 188995, 174606, 174606, 175557, 175557,
170627, 170627, 153560, 153560, 165371, 165371, 144651, 144651,
}

Definition at line 230 of file dvenc.c.

AVCodec ff_dvvideo_encoder
Initial value:
= {
.name = "dvvideo",
.long_name = NULL_IF_CONFIG_SMALL("DV (Digital Video)"),
.priv_data_size = sizeof(DVVideoContext),
.pix_fmts = (const enum AVPixelFormat[]) {
},
}
static av_cold int init(AVCodecContext *avctx)
Definition: avrndec.c:35
#define AV_CODEC_CAP_INTRA_ONLY
Codec is intra only.
Definition: avcodec.h:1039
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:176
#define AV_CODEC_CAP_FRAME_THREADS
Codec supports frame-level multithreading.
Definition: avcodec.h:1019
planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)
Definition: pixfmt.h:66
#define AV_CODEC_CAP_SLICE_THREADS
Codec supports slice-based (or partition-based) multithreading.
Definition: avcodec.h:1023
static av_cold int dvvideo_encode_init(AVCodecContext *avctx)
Definition: dvenc.c:42
static enum AVPixelFormat pix_fmts[]
Definition: libkvazaar.c:262
static int dvvideo_encode_frame(AVCodecContext *c, AVPacket *pkt, const AVFrame *frame, int *got_packet)
Definition: dvenc.c:714
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
Definition: pixfmt.h:62
planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples)
Definition: pixfmt.h:69
AVPixelFormat
Pixel format.
Definition: pixfmt.h:60

Definition at line 746 of file dvenc.c.