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

h263 bitstream encoder. More...

#include <limits.h>
#include "avcodec.h"
#include "mpegvideo.h"
#include "h263.h"
#include "mathops.h"
#include "unary.h"
#include "flv.h"
#include "mpeg4video.h"
#include "internal.h"

Go to the source code of this file.

Macros

#define UNI_MPEG4_ENC_INDEX(last, run, level)   ((last)*128*64 + (run)*128 + (level))
 

Functions

av_const int ff_h263_aspect_to_info (AVRational aspect)
 Return the 4 bit value that specifies the given aspect ratio.
 
void ff_h263_encode_picture_header (MpegEncContext *s, int picture_number)
 
void ff_h263_encode_gob_header (MpegEncContext *s, int mb_line)
 Encode a group of blocks header.
 
void ff_clean_h263_qscales (MpegEncContext *s)
 modify qscale so that encoding is actually possible in h263 (limit difference to -2..2)
 
static void h263_encode_block (MpegEncContext *s, int16_t *block, int n)
 Encode an 8x8 block.
 
static void h263p_encode_umotion (MpegEncContext *s, int val)
 
void ff_h263_encode_mb (MpegEncContext *s, int16_t block[6][64], int motion_x, int motion_y)
 
void ff_h263_encode_motion (MpegEncContext *s, int val, int f_code)
 
static void init_mv_penalty_and_fcode (MpegEncContext *s)
 
static void init_uni_h263_rl_tab (RLTable *rl, uint32_t *bits_tab, uint8_t *len_tab)
 
void ff_h263_encode_init (MpegEncContext *s)
 
void ff_h263_encode_mba (MpegEncContext *s)
 

Variables

static uint8_t mv_penalty [MAX_FCODE+1][MAX_MV *2+1]
 Table of number of bits a motion vector component needs.
 
static uint8_t fcode_tab [MAX_MV *2+1]
 Minimal fcode that a motion vector component would need.
 
static uint8_t umv_fcode_tab [MAX_MV *2+1]
 Minimal fcode that a motion vector component would need in umv.
 
static uint8_t uni_h263_intra_aic_rl_len [64 *64 *2 *2]
 
static uint8_t uni_h263_inter_rl_len [64 *64 *2 *2]
 
static const uint8_t wrong_run [102]
 
static const int dquant_code [5] = {1,0,9,2,3}
 

Detailed Description

h263 bitstream encoder.

Definition in file ituh263enc.c.

Macro Definition Documentation

#define UNI_MPEG4_ENC_INDEX (   last,
  run,
  level 
)    ((last)*128*64 + (run)*128 + (level))

Definition at line 64 of file ituh263enc.c.

Referenced by init_uni_h263_rl_tab().

Function Documentation

av_const int ff_h263_aspect_to_info ( AVRational  aspect)

Return the 4 bit value that specifies the given aspect ratio.

This may be one of the standard aspect ratios or it specifies that the aspect will be stored explicitly later.

Definition at line 87 of file ituh263enc.c.

Referenced by ff_h263_encode_picture_header(), and mpeg4_encode_vol_header().

void ff_h263_encode_picture_header ( MpegEncContext s,
int  picture_number 
)

Definition at line 101 of file ituh263enc.c.

Referenced by encode_picture().

void ff_h263_encode_gob_header ( MpegEncContext s,
int  mb_line 
)

Encode a group of blocks header.

Definition at line 246 of file ituh263enc.c.

Referenced by encode_thread().

void ff_clean_h263_qscales ( MpegEncContext s)

modify qscale so that encoding is actually possible in h263 (limit difference to -2..2)

Definition at line 272 of file ituh263enc.c.

Referenced by estimate_qp(), and ff_clean_mpeg4_qscales().

static void h263_encode_block ( MpegEncContext s,
int16_t *  block,
int  n 
)
static

Encode an 8x8 block.

Parameters
blockthe 8x8 block
nblock index (0-3 are luma, 4-5 are chroma)

Definition at line 305 of file ituh263enc.c.

Referenced by ff_h263_encode_mb().

static void h263p_encode_umotion ( MpegEncContext s,
int  val 
)
static

Definition at line 416 of file ituh263enc.c.

Referenced by ff_h263_encode_mb().

void ff_h263_encode_mb ( MpegEncContext s,
int16_t  block[6][64],
int  motion_x,
int  motion_y 
)

Definition at line 453 of file ituh263enc.c.

Referenced by encode_mb_internal().

void ff_h263_encode_motion ( MpegEncContext s,
int  val,
int  f_code 
)

Definition at line 654 of file ituh263enc.c.

Referenced by ff_h263_encode_motion_vector(), and svq1_encode_plane().

static void init_mv_penalty_and_fcode ( MpegEncContext s)
static

Definition at line 682 of file ituh263enc.c.

Referenced by ff_h263_encode_init().

static void init_uni_h263_rl_tab ( RLTable rl,
uint32_t *  bits_tab,
uint8_t len_tab 
)
static

Definition at line 724 of file ituh263enc.c.

Referenced by ff_h263_encode_init().

void ff_h263_encode_init ( MpegEncContext s)

Definition at line 767 of file ituh263enc.c.

Referenced by encode_init(), ff_MPV_encode_init(), and svq1_encode_init().

void ff_h263_encode_mba ( MpegEncContext s)

Variable Documentation

uint8_t mv_penalty[MAX_FCODE+1][MAX_MV *2+1]
static
uint8_t fcode_tab[MAX_MV *2+1]
static

Minimal fcode that a motion vector component would need.

Definition at line 50 of file ituh263enc.c.

Referenced by ff_get_best_fcode(), ff_h263_encode_init(), and init_mv_penalty_and_fcode().

uint8_t umv_fcode_tab[MAX_MV *2+1]
static

Minimal fcode that a motion vector component would need in umv.

All entries in this table are 1.

Definition at line 56 of file ituh263enc.c.

Referenced by ff_h263_encode_init(), and init_mv_penalty_and_fcode().

uint8_t uni_h263_intra_aic_rl_len[64 *64 *2 *2]
static

Definition at line 60 of file ituh263enc.c.

Referenced by ff_h263_encode_init().

uint8_t uni_h263_inter_rl_len[64 *64 *2 *2]
static

Definition at line 61 of file ituh263enc.c.

Referenced by ff_h263_encode_init().

const uint8_t wrong_run[102]
static
Initial value:
= {
1, 2, 3, 5, 4, 10, 9, 8,
11, 15, 17, 16, 23, 22, 21, 20,
19, 18, 25, 24, 27, 26, 11, 7,
6, 1, 2, 13, 2, 2, 2, 2,
6, 12, 3, 9, 1, 3, 4, 3,
7, 4, 1, 1, 5, 5, 14, 6,
1, 7, 1, 8, 1, 1, 1, 1,
10, 1, 1, 5, 9, 17, 25, 24,
29, 33, 32, 41, 2, 23, 28, 31,
3, 22, 30, 4, 27, 40, 8, 26,
6, 39, 7, 38, 16, 37, 15, 10,
11, 12, 13, 14, 1, 21, 20, 18,
19, 2, 1, 34, 35, 36
}

Definition at line 66 of file ituh263enc.c.

Referenced by h263_encode_block().

const int dquant_code[5] = {1,0,9,2,3}
static

Definition at line 298 of file ituh263enc.c.

Referenced by ff_h263_encode_mb().