Libav
|
The simplest mpeg encoder (well, it was the simplest!). More...
#include "libavutil/attributes.h"
#include "libavutil/avassert.h"
#include "libavutil/imgutils.h"
#include "libavutil/internal.h"
#include "libavutil/timer.h"
#include "avcodec.h"
#include "dsputil.h"
#include "internal.h"
#include "mathops.h"
#include "mpegvideo.h"
#include "mjpegenc.h"
#include "msmpeg4.h"
#include "xvmc_internal.h"
#include "thread.h"
#include <limits.h>
Go to the source code of this file.
Macros | |
#define | MAKE_WRITABLE(table) |
#define | UPDATE_TABLE(table) |
#define | COPY(a) bak->a = src->a |
#define | UPDATE_PICTURE(pic) |
Variables | |
static const uint8_t | ff_default_chroma_qscale_table [32] |
const uint8_t | ff_mpeg1_dc_scale_table [128] |
static const uint8_t | mpeg2_dc_scale_table1 [128] |
static const uint8_t | mpeg2_dc_scale_table2 [128] |
static const uint8_t | mpeg2_dc_scale_table3 [128] |
const uint8_t *const | ff_mpeg2_dc_scale_table [4] |
enum AVPixelFormat | ff_pixfmt_list_420 [] |
The simplest mpeg encoder (well, it was the simplest!).
Definition in file mpegvideo.c.
#define MAKE_WRITABLE | ( | table | ) |
Referenced by make_tables_writable().
#define UPDATE_TABLE | ( | table | ) |
Referenced by update_picture_tables().
#define COPY | ( | a | ) | bak->a = src->a |
#define UPDATE_PICTURE | ( | pic | ) |
Referenced by ff_mpeg_update_thread_context().
|
static |
Definition at line 112 of file mpegvideo.c.
Referenced by ff_dct_common_init().
|
static |
Definition at line 144 of file mpegvideo.c.
Referenced by ff_dct_common_init().
|
static |
Definition at line 173 of file mpegvideo.c.
Referenced by ff_dct_common_init().
|
static |
Definition at line 203 of file mpegvideo.c.
Referenced by ff_dct_common_init().
|
static |
Definition at line 236 of file mpegvideo.c.
Referenced by ff_dct_common_init().
|
static |
Definition at line 267 of file mpegvideo.c.
Referenced by ff_dct_common_init().
|
static |
Definition at line 304 of file mpegvideo.c.
Referenced by ff_dct_common_init().
|
static |
Definition at line 330 of file mpegvideo.c.
Referenced by init_er().
av_cold int ff_dct_common_init | ( | MpegEncContext * | s | ) |
Definition at line 358 of file mpegvideo.c.
Referenced by decode_user_data(), dnxhd_encode_init(), and ff_MPV_common_init().
|
static |
Definition at line 396 of file mpegvideo.c.
Referenced by alloc_frame_buffer(), ff_mpeg_update_thread_context(), and ff_update_duplicate_context().
|
static |
Allocate a frame buffer.
Definition at line 424 of file mpegvideo.c.
Referenced by ff_alloc_picture().
Definition at line 503 of file mpegvideo.c.
Referenced by ff_alloc_picture(), ff_find_unused_picture(), ff_mpeg_unref_picture(), ff_MPV_common_end(), and ff_MPV_encode_end().
|
static |
Definition at line 520 of file mpegvideo.c.
Referenced by ff_alloc_picture().
|
static |
Definition at line 558 of file mpegvideo.c.
Referenced by ff_alloc_picture().
int ff_alloc_picture | ( | MpegEncContext * | s, |
Picture * | pic, | ||
int | shared | ||
) |
Allocate a Picture.
The pixels are allocated/set by calling get_buffer() if shared = 0
Definition at line 587 of file mpegvideo.c.
Referenced by ff_MPV_frame_start(), load_input_picture(), and select_input_picture().
void ff_mpeg_unref_picture | ( | MpegEncContext * | s, |
Picture * | pic | ||
) |
Deallocate a picture.
Definition at line 639 of file mpegvideo.c.
Referenced by alloc_frame_buffer(), ff_alloc_picture(), ff_find_unused_picture(), ff_mpeg_flush(), ff_mpeg_ref_picture(), ff_mpeg_update_thread_context(), ff_MPV_common_end(), ff_MPV_encode_end(), ff_MPV_frame_start(), frame_end(), frame_start(), release_unused_pictures(), and select_input_picture().
Definition at line 661 of file mpegvideo.c.
Referenced by ff_mpeg_ref_picture().
int ff_mpeg_ref_picture | ( | MpegEncContext * | s, |
Picture * | dst, | ||
Picture * | src | ||
) |
Definition at line 703 of file mpegvideo.c.
Referenced by ff_mpeg_update_thread_context(), ff_MPV_frame_start(), frame_start(), and select_input_picture().
|
static |
Definition at line 741 of file mpegvideo.c.
Referenced by ff_update_duplicate_context(), and init_duplicate_context().
|
static |
Definition at line 750 of file mpegvideo.c.
Referenced by ff_MPV_common_frame_size_change(), and ff_MPV_common_init().
|
static |
Definition at line 797 of file mpegvideo.c.
Referenced by ff_MPV_common_end(), and ff_MPV_common_frame_size_change().
|
static |
Definition at line 817 of file mpegvideo.c.
Referenced by ff_update_duplicate_context().
int ff_update_duplicate_context | ( | MpegEncContext * | dst, |
MpegEncContext * | src | ||
) |
Definition at line 844 of file mpegvideo.c.
Referenced by decode_chunks(), and encode_picture().
int ff_mpeg_update_thread_context | ( | AVCodecContext * | dst, |
const AVCodecContext * | src | ||
) |
Definition at line 869 of file mpegvideo.c.
Referenced by ff_rv34_decode_update_thread_context(), mpeg4_update_thread_context(), and mpeg_decode_update_thread_context().
void ff_MPV_common_defaults | ( | MpegEncContext * | s | ) |
Set the given MpegEncContext to common defaults (same for encoding and decoding).
The changed fields will not depend upon the prior state of the MpegEncContext.
Definition at line 996 of file mpegvideo.c.
Referenced by ff_MPV_decode_defaults(), and MPV_encode_defaults().
void ff_MPV_decode_defaults | ( | MpegEncContext * | s | ) |
Set the given MpegEncContext to defaults for decoding.
the changed fields will not depend upon the prior state of the MpegEncContext.
Definition at line 1019 of file mpegvideo.c.
Referenced by ff_h263_decode_init(), ff_rv34_decode_init(), h261_decode_init(), mpeg_decode_init(), and rv10_decode_init().
|
static |
Definition at line 1024 of file mpegvideo.c.
Referenced by init_context_frame().
|
static |
Initialize and allocates MpegEncContext fields dependent on the resolution.
Definition at line 1064 of file mpegvideo.c.
Referenced by ff_MPV_common_frame_size_change(), and ff_MPV_common_init().
av_cold int ff_MPV_common_init | ( | MpegEncContext * | s | ) |
init common structure for both encoder and decoder.
this assumes that some variables like width/height are already set
Definition at line 1205 of file mpegvideo.c.
Referenced by ff_h263_decode_frame(), ff_h263_decode_init(), ff_mpeg_update_thread_context(), ff_MPV_encode_init(), ff_rv34_decode_init(), ff_rv34_decode_init_thread_copy(), h261_decode_frame(), rv10_decode_init(), rv20_decode_picture_header(), and vcr2_init_sequence().
|
static |
Frees and resets MpegEncContext fields depending on the resolution.
Is used during resolution changes to avoid a full reinitialization of the codec.
Definition at line 1313 of file mpegvideo.c.
Referenced by ff_MPV_common_end(), and ff_MPV_common_frame_size_change().
int ff_MPV_common_frame_size_change | ( | MpegEncContext * | s | ) |
Definition at line 1363 of file mpegvideo.c.
Referenced by ff_h263_decode_frame(), ff_mpeg_update_thread_context(), ff_rv34_decode_frame(), and ff_rv34_decode_update_thread_context().
void ff_MPV_common_end | ( | MpegEncContext * | s | ) |
Definition at line 1436 of file mpegvideo.c.
Referenced by ff_h263_decode_end(), ff_MPV_common_frame_size_change(), ff_MPV_common_init(), ff_MPV_encode_end(), ff_rv34_decode_end(), ff_rv34_decode_init(), ff_rv34_decode_init_thread_copy(), ff_vc1_decode_end(), h261_decode_end(), h261_decode_frame(), mpeg_decode_end(), mpeg_decode_postinit(), rv10_decode_end(), rv20_decode_picture_header(), vc1_decode_frame(), and vcr2_init_sequence().
static_store | static uint8_t array[2][2*MAX_RUN + MAX_LEVEL + 3] which will hold the level and run tables, if this is NULL av_malloc() will be used |
Definition at line 1479 of file mpegvideo.c.
Referenced by decode_init(), encode_init(), ff_h261_common_init(), ff_h263_decode_init_vlc(), ff_h263_encode_init(), ff_mpeg12_init_vlcs(), ff_mpeg1_encode_init(), ff_msmpeg4_decode_init(), and ff_msmpeg4_encode_init().
Definition at line 1531 of file mpegvideo.c.
|
static |
Definition at line 1571 of file mpegvideo.c.
Referenced by ff_MPV_frame_start().
|
inlinestatic |
Definition at line 1582 of file mpegvideo.c.
Referenced by find_unused_picture().
|
static |
Definition at line 1591 of file mpegvideo.c.
Referenced by ff_find_unused_picture().
int ff_find_unused_picture | ( | MpegEncContext * | s, |
int | shared | ||
) |
Definition at line 1610 of file mpegvideo.c.
Referenced by ff_h263_decode_frame(), ff_MPV_frame_start(), load_input_picture(), and select_input_picture().
int ff_MPV_frame_start | ( | MpegEncContext * | s, |
AVCodecContext * | avctx | ||
) |
generic function called after decoding the header and before a frame is decoded.
Definition at line 1628 of file mpegvideo.c.
Referenced by decode_wmv9(), ff_h263_decode_frame(), ff_rv34_decode_frame(), h261_decode_frame(), mpeg_field_start(), rv10_decode_packet(), and vc1_decode_frame().
void ff_MPV_frame_end | ( | MpegEncContext * | s | ) |
Definition at line 1843 of file mpegvideo.c.
Referenced by decode_wmv9(), ff_h263_decode_frame(), ff_rv34_decode_frame(), finish_frame(), h261_decode_frame(), rv10_decode_frame(), rv10_decode_packet(), slice_end(), and vc1_decode_frame().
void ff_print_debug_info | ( | MpegEncContext * | s, |
Picture * | p | ||
) |
Print debugging info for the given picture.
Definition at line 1864 of file mpegvideo.c.
Referenced by ff_h263_decode_frame(), finish_frame(), h261_decode_frame(), rv10_decode_frame(), slice_end(), and vc1_decode_frame().
int ff_MPV_lowest_referenced_row | ( | MpegEncContext * | s, |
int | dir | ||
) |
find the lowest MB row referenced in the MVs
Definition at line 1964 of file mpegvideo.c.
Referenced by MPV_decode_mb_internal().
|
inlinestatic |
Definition at line 2000 of file mpegvideo.c.
Referenced by MPV_decode_mb_internal().
|
inlinestatic |
Definition at line 2008 of file mpegvideo.c.
Referenced by MPV_decode_mb_internal().
|
inlinestatic |
Definition at line 2016 of file mpegvideo.c.
Referenced by MPV_decode_mb_internal().
void ff_clean_intra_table_entries | ( | MpegEncContext * | s | ) |
Clean dc, ac, coded_block for the current non-intra MB.
Definition at line 2029 of file mpegvideo.c.
Referenced by encode_thread(), mpeg4_decode_partition_a(), and MPV_decode_mb_internal().
|
static |
Definition at line 2070 of file mpegvideo.c.
Referenced by ff_MPV_decode_mb().
void ff_MPV_decode_mb | ( | MpegEncContext * | s, |
int16_t | block[12][64] | ||
) |
Definition at line 2304 of file mpegvideo.c.
Referenced by decode_slice(), encode_mb_hq(), encode_thread(), h261_decode_mb(), h261_decode_mb_skipped(), mpeg_decode_slice(), mpeg_er_decode_mb(), and rv10_decode_packet().
void ff_draw_horiz_band | ( | AVCodecContext * | avctx, |
Picture * | cur, | ||
Picture * | last, | ||
int | y, | ||
int | h, | ||
int | picture_structure, | ||
int | first_field, | ||
int | low_delay | ||
) |
h | is the normal height, this will be reduced automatically if needed for the last row |
Definition at line 2316 of file mpegvideo.c.
Referenced by ff_mpeg_draw_horiz_band(), and svq3_decode_frame().
void ff_mpeg_draw_horiz_band | ( | MpegEncContext * | s, |
int | y, | ||
int | h | ||
) |
Definition at line 2365 of file mpegvideo.c.
Referenced by decode_slice(), dxva2_mpeg2_end_frame(), dxva2_vc1_end_frame(), ff_intrax8_decode_picture(), ff_vaapi_mpeg_end_frame(), mpeg_decode_slice(), vc1_decode_b_blocks(), vc1_decode_i_blocks(), vc1_decode_i_blocks_adv(), vc1_decode_p_blocks(), and vc1_decode_skip_blocks().
void ff_init_block_index | ( | MpegEncContext * | s | ) |
Definition at line 2372 of file mpegvideo.c.
Referenced by decode_slice(), encode_thread(), estimate_motion_thread(), ff_h261_reorder_mb_index(), h261_decode_mb(), h261_decode_mb_skipped(), init_block_index(), mpeg4_decode_partition_a(), mpeg4_decode_partition_b(), mpeg_decode_slice(), mpeg_er_decode_mb(), rv10_decode_packet(), rv34_decode_slice(), and svq1_encode_plane().
void ff_block_permute | ( | int16_t * | block, |
uint8_t * | permutation, | ||
const uint8_t * | scantable, | ||
int | last | ||
) |
Permute an 8x8 block.
permute block according to permuatation.
block | the block which will be permuted according to the given permutation vector |
permutation | the permutation vector |
last | the last non zero coefficient in scantable order, used to speed the permutation up |
scantable | the used scantable, this is only used to speed the permutation up, the block is not (inverse) permutated to scantable order! |
Definition at line 2412 of file mpegvideo.c.
Referenced by ff_dct_quantize_c().
void ff_mpeg_flush | ( | AVCodecContext * | avctx | ) |
Definition at line 2433 of file mpegvideo.c.
Referenced by decode_wmv9(), and flush().
void ff_set_qscale | ( | MpegEncContext * | s, |
int | qscale | ||
) |
set qscale and update qscale dependent variables.
Definition at line 2463 of file mpegvideo.c.
Referenced by decode_slice(), encode_mb_internal(), encode_thread(), ff_h261_encode_mb(), h261_decode_gob(), h261_decode_mb(), h263_decode_dquant(), mpeg4_decode_mb(), mpeg4_decode_partition_a(), mpeg4_decode_partition_b(), mpeg4_decode_partitioned_mb(), and rv10_decode_packet().
void ff_MPV_report_decode_progress | ( | MpegEncContext * | s | ) |
Definition at line 2477 of file mpegvideo.c.
Referenced by decode_slice(), and mpeg_decode_slice().
|
static |
Definition at line 46 of file mpegvideo.c.
Referenced by ff_MPV_common_defaults().
const uint8_t ff_mpeg1_dc_scale_table[128] |
Definition at line 52 of file mpegvideo.c.
Referenced by ff_flv_decode_picture_header(), ff_flv_encode_picture_header(), ff_h261_encode_init(), ff_h263_decode_picture_header(), ff_h263_encode_init(), ff_h263_encode_picture_header(), ff_intel_h263_decode_picture_header(), ff_MPV_common_defaults(), ff_msmpeg4_common_init(), ff_rv20_encode_picture_header(), and rv10_decode_packet().
|
static |
Definition at line 64 of file mpegvideo.c.
|
static |
Definition at line 76 of file mpegvideo.c.
|
static |
Definition at line 88 of file mpegvideo.c.
const uint8_t* const ff_mpeg2_dc_scale_table[4] |
Definition at line 100 of file mpegvideo.c.
Referenced by encode_picture(), and ff_mpeg12_common_init().
enum AVPixelFormat ff_pixfmt_list_420[] |
Definition at line 107 of file mpegvideo.c.