#include <stdint.h>
#include <stdlib.h>
#include <assert.h>
#include "common.h"
#include "bswap.h"
#include "intreadwrite.h"
#include "log.h"
Go to the source code of this file.
Data Structures | |
struct | PutBitContext |
struct | GetBitContext |
struct | VLC |
struct | RL_VLC_ELEM |
Defines | |
#define | ALT_BITSTREAM_READER |
#define | LIBMPEG2_BITSTREAM_READER_HACK |
#define | NEG_SSR32(a, s) ((( int32_t)(a))>>(32-(s))) |
#define | NEG_USR32(a, s) (((uint32_t)(a))>>(32-(s))) |
#define | VLC_TYPE int16_t |
#define | unaligned(x) |
#define | MIN_CACHE_BITS 25 |
#define | OPEN_READER(name, gb) |
#define | CLOSE_READER(name, gb) (gb)->index= name##_index;\ |
#define | UPDATE_CACHE(name, gb) name##_cache= AV_RB32( ((const uint8_t *)(gb)->buffer)+(name##_index>>3) ) << (name##_index&0x07);\ |
#define | SKIP_CACHE(name, gb, num) name##_cache <<= (num); |
#define | SKIP_COUNTER(name, gb, num) name##_index += (num);\ |
#define | SKIP_BITS(name, gb, num) |
#define | LAST_SKIP_BITS(name, gb, num) SKIP_COUNTER(name, gb, num) |
#define | LAST_SKIP_CACHE(name, gb, num) ; |
#define | SHOW_UBITS(name, gb, num) NEG_USR32(name##_cache, num) |
#define | SHOW_SBITS(name, gb, num) NEG_SSR32(name##_cache, num) |
#define | GET_CACHE(name, gb) ((uint32_t)name##_cache) |
#define | init_vlc(vlc, nb_bits, nb_codes, bits, bits_wrap, bits_size, codes, codes_wrap, codes_size, flags) |
#define | INIT_VLC_USE_STATIC 1 |
#define | INIT_VLC_LE 2 |
#define | GET_VLC(code, name, gb, table, bits, max_depth) |
if the vlc code is invalid and max_depth=1 than no bits will be removed if the vlc code is invalid and max_depth>1 than the number of bits removed is undefined | |
#define | GET_RL_VLC(level, run, name, gb, table, bits, max_depth, need_update) |
#define | tprintf(p,...) {} |
Functions | |
static void | init_put_bits (PutBitContext *s, uint8_t *buffer, int buffer_size) |
static int | put_bits_count (PutBitContext *s) |
static void | flush_put_bits (PutBitContext *s) |
void | align_put_bits (PutBitContext *s) |
void | ff_put_string (PutBitContext *pbc, const char *s, int put_zero) |
void | ff_copy_bits (PutBitContext *pb, const uint8_t *src, int length) |
unaligned (16) unaligned(32) unaligned(64) static inline void put_bits(PutBitContext *s | |
void | free_vlc (VLC *vlc) |
static av_always_inline int | get_vlc2 (GetBitContext *s, VLC_TYPE(*table)[2], int bits, int max_depth) |
parses a vlc code, faster then get_vlc() | |
static int | decode012 (GetBitContext *gb) |
static int | decode210 (GetBitContext *gb) |
Variables | |
const uint8_t | ff_reverse [256] |
int | n |
Definition in file bitstream.h.
#define ALT_BITSTREAM_READER |
Definition at line 47 of file bitstream.h.
Referenced by decode_block(), decode_block_progressive(), dirac_get_se_golomb(), dv_decode_ac(), ff_msmpeg4_decode_block(), get_level_prefix(), get_se_golomb(), get_ue_golomb(), get_ur_golomb(), get_ur_golomb_jpegls(), get_vlc2(), mdec_decode_block_intra(), mpeg1_decode_block_inter(), mpeg1_decode_block_intra(), mpeg1_fast_decode_block_inter(), mpeg2_decode_block_intra(), mpeg2_decode_block_non_intra(), mpeg2_fast_decode_block_intra(), mpeg2_fast_decode_block_non_intra(), mpeg4_decode_block(), svq3_get_se_golomb(), and svq3_get_ue_golomb().
Referenced by decode_block(), decode_block_progressive(), ff_msmpeg4_decode_block(), get_level_prefix(), get_se_golomb(), get_ue_golomb(), get_ur_golomb(), get_ur_golomb_jpegls(), mpeg1_decode_block_inter(), mpeg1_fast_decode_block_inter(), mpeg2_decode_block_non_intra(), mpeg2_fast_decode_block_non_intra(), mpeg4_decode_block(), svq3_get_se_golomb(), and svq3_get_ue_golomb().
Value:
{\ int n, index, nb_bits;\ \ index= SHOW_UBITS(name, gb, bits);\ level = table[index].level;\ n = table[index].len;\ \ if(max_depth > 1 && n < 0){\ SKIP_BITS(name, gb, bits)\ if(need_update){\ UPDATE_CACHE(name, gb)\ }\ \ nb_bits = -n;\ \ index= SHOW_UBITS(name, gb, nb_bits) + level;\ level = table[index].level;\ n = table[index].len;\ }\ run= table[index].run;\ SKIP_BITS(name, gb, n)\ }
Definition at line 844 of file bitstream.h.
Referenced by ff_msmpeg4_decode_block(), mdec_decode_block_intra(), mpeg1_decode_block_inter(), mpeg1_decode_block_intra(), mpeg1_fast_decode_block_inter(), mpeg2_decode_block_intra(), mpeg2_decode_block_non_intra(), mpeg2_fast_decode_block_intra(), mpeg2_fast_decode_block_non_intra(), and mpeg4_decode_block().
Value:
{\ int n, index, nb_bits;\ \ index= SHOW_UBITS(name, gb, bits);\ code = table[index][0];\ n = table[index][1];\ \ if(max_depth > 1 && n < 0){\ LAST_SKIP_BITS(name, gb, bits)\ UPDATE_CACHE(name, gb)\ \ nb_bits = -n;\ \ index= SHOW_UBITS(name, gb, nb_bits) + code;\ code = table[index][0];\ n = table[index][1];\ if(max_depth > 2 && n < 0){\ LAST_SKIP_BITS(name, gb, nb_bits)\ UPDATE_CACHE(name, gb)\ \ nb_bits = -n;\ \ index= SHOW_UBITS(name, gb, nb_bits) + code;\ code = table[index][0];\ n = table[index][1];\ }\ }\ SKIP_BITS(name, gb, n)\ }
Definition at line 813 of file bitstream.h.
Referenced by decode_block(), decode_block_progressive(), and get_vlc2().
#define init_vlc | ( | vlc, | |||
nb_bits, | |||||
nb_codes, | |||||
bits, | |||||
bits_wrap, | |||||
bits_size, | |||||
codes, | |||||
codes_wrap, | |||||
codes_size, | |||||
flags | ) |
Value:
init_vlc_sparse(vlc, nb_bits, nb_codes,\ bits, bits_wrap, bits_size,\ codes, codes_wrap, codes_size,\ NULL, 0, 0, flags)
Referenced by atrac3_decode_init(), build_vlc(), dca_init_vlcs(), decode_init(), decode_init_vlc(), dnxhd_init_vlc(), dvvideo_init(), ff_msmpeg4_decode_init(), generate_joint_tables(), h261_decode_init_vlc(), h263_decode_init_vlc(), imc_decode_init(), init_2d_vlc_rl(), init_coef_vlc(), init_cook_vlc_tables(), init_vlc_rl(), init_vlcs(), ir2_decode_init(), mpc7_decode_init(), mpc8_decode_init(), qdm2_init_vlc(), read_huffman_tables(), read_old_huffman_tables(), rv10_decode_init(), rv40_init_tables(), smacker_decode_header_tree(), smka_decode_frame(), svq1_decode_init(), tm2_build_huff_table(), vc1_init_common(), vorbis_parse_setup_hdr_codebooks(), vp3_decode_init(), and wma_decode_init().
#define INIT_VLC_LE 2 |
Definition at line 804 of file bitstream.h.
Referenced by build_table(), ir2_decode_init(), qdm2_init_vlc(), smacker_decode_header_tree(), smka_decode_frame(), and vorbis_parse_setup_hdr_codebooks().
#define INIT_VLC_USE_STATIC 1 |
Definition at line 803 of file bitstream.h.
Referenced by atrac3_decode_init(), build_table(), init_vlc_sparse(), ir2_decode_init(), mpc7_decode_init(), mpc8_decode_init(), qdm2_init_vlc(), rv34_gen_vlc(), and rv40_init_tables().
Referenced by decode_block(), decode_block_progressive(), dirac_get_se_golomb(), ff_msmpeg4_decode_block(), get_level_prefix(), get_se_golomb(), get_ue_golomb(), get_ur_golomb(), get_ur_golomb_jpegls(), mdec_decode_block_intra(), mpeg1_decode_block_inter(), mpeg1_decode_block_intra(), mpeg1_fast_decode_block_inter(), mpeg2_decode_block_intra(), mpeg2_decode_block_non_intra(), mpeg2_fast_decode_block_intra(), mpeg2_fast_decode_block_non_intra(), mpeg4_decode_block(), svq3_get_se_golomb(), and svq3_get_ue_golomb().
#define LAST_SKIP_CACHE | ( | name, | |||
gb, | |||||
num | ) | ; |
Referenced by ff_msmpeg4_decode_block(), and mpeg4_decode_block().
#define LIBMPEG2_BITSTREAM_READER_HACK |
Definition at line 52 of file bitstream.h.
#define MIN_CACHE_BITS 25 |
Referenced by bit_copy(), decode_block(), and decode_block_progressive().
#define NEG_SSR32 | ( | a, | |||
s | ) | ((( int32_t)(a))>>(32-(s))) |
Definition at line 73 of file bitstream.h.
#define NEG_USR32 | ( | a, | |||
s | ) | (((uint32_t)(a))>>(32-(s))) |
Definition at line 74 of file bitstream.h.
Referenced by decode_block(), decode_block_progressive(), and dv_decode_ac().
#define OPEN_READER | ( | name, | |||
gb | ) |
Value:
Referenced by decode_block(), decode_block_progressive(), dirac_get_se_golomb(), dv_decode_ac(), ff_msmpeg4_decode_block(), get_level_prefix(), get_se_golomb(), get_ue_golomb(), get_ur_golomb(), get_ur_golomb_jpegls(), get_vlc2(), mdec_decode_block_intra(), mpeg1_decode_block_inter(), mpeg1_decode_block_intra(), mpeg1_fast_decode_block_inter(), mpeg2_decode_block_intra(), mpeg2_decode_block_non_intra(), mpeg2_fast_decode_block_intra(), mpeg2_fast_decode_block_non_intra(), mpeg4_decode_block(), svq3_get_se_golomb(), and svq3_get_ue_golomb().
Referenced by dirac_get_se_golomb(), ff_msmpeg4_decode_block(), mdec_decode_block_intra(), mpeg1_decode_block_inter(), mpeg1_decode_block_intra(), mpeg1_fast_decode_block_inter(), mpeg2_decode_block_intra(), mpeg2_decode_block_non_intra(), mpeg2_fast_decode_block_intra(), mpeg2_fast_decode_block_non_intra(), and mpeg4_decode_block().
Referenced by dv_decode_ac(), ff_msmpeg4_decode_block(), get_ur_golomb_jpegls(), mdec_decode_block_intra(), mpeg1_decode_block_inter(), mpeg1_decode_block_intra(), mpeg1_fast_decode_block_inter(), mpeg2_decode_block_intra(), mpeg2_decode_block_non_intra(), mpeg2_fast_decode_block_intra(), mpeg2_fast_decode_block_non_intra(), and mpeg4_decode_block().
#define SKIP_BITS | ( | name, | |||
gb, | |||||
num | ) |
Value:
{\ SKIP_CACHE(name, gb, num)\ SKIP_COUNTER(name, gb, num)\ }\
Referenced by ff_msmpeg4_decode_block(), get_ur_golomb_jpegls(), mdec_decode_block_intra(), mpeg1_decode_block_inter(), mpeg1_decode_block_intra(), mpeg1_fast_decode_block_inter(), mpeg2_decode_block_intra(), mpeg2_decode_block_non_intra(), mpeg2_fast_decode_block_intra(), mpeg2_fast_decode_block_non_intra(), and mpeg4_decode_block().
Referenced by ff_msmpeg4_decode_block(), and mpeg4_decode_block().
Referenced by ff_msmpeg4_decode_block(), and mpeg4_decode_block().
#define tprintf | ( | p, | |||
... | ) | {} |
Definition at line 941 of file bitstream.h.
Referenced by decode_mb_cabac(), decode_mb_cavlc(), decode_rbsp_trailing(), decode_residual(), decode_slice(), fetch_diagonal_mv(), ff_wma_init(), fill_caches(), fill_default_ref_list(), filter_mb(), filter_mb_edgeh(), filter_mb_edgev(), filter_mb_mbaff_edgecv(), filter_mb_mbaff_edgev(), hl_decode_mb_internal(), pred_16x8_motion(), pred_8x16_motion(), pred_direct_motion(), pred_intra_mode(), pred_motion(), pred_non_zero_count(), pred_pskip_motion(), wma_decode_block(), wma_decode_frame(), wma_decode_superframe(), and xchg_pair_border().
#define unaligned | ( | x | ) |
Value:
static inline uint##x##_t unaligned##x(const void *v) { \ return *(const uint##x##_t *) v; \ }
Definition at line 201 of file bitstream.h.
#define UPDATE_CACHE | ( | name, | |||
gb | ) | name##_cache= AV_RB32( ((const uint8_t *)(gb)->buffer)+(name##_index>>3) ) << (name##_index&0x07);\ |
Referenced by decode_block(), decode_block_progressive(), dirac_get_se_golomb(), dv_decode_ac(), ff_msmpeg4_decode_block(), get_level_prefix(), get_se_golomb(), get_ue_golomb(), get_ur_golomb(), get_ur_golomb_jpegls(), get_vlc2(), mdec_decode_block_intra(), mpeg1_decode_block_inter(), mpeg1_decode_block_intra(), mpeg1_fast_decode_block_inter(), mpeg2_decode_block_intra(), mpeg2_decode_block_non_intra(), mpeg2_fast_decode_block_intra(), mpeg2_fast_decode_block_non_intra(), mpeg4_decode_block(), svq3_get_se_golomb(), and svq3_get_ue_golomb().
#define VLC_TYPE int16_t |
void align_put_bits | ( | PutBitContext * | s | ) |
Definition at line 44 of file bitstream.c.
Referenced by encode_block(), encode_frame(), encode_picture_ls(), ff_h261_encode_picture_header(), flush_put_bits(), h264_write_nal_unit(), put_header(), and write_slice_end().
static int decode012 | ( | GetBitContext * | gb | ) | [inline, static] |
Definition at line 944 of file bitstream.h.
Referenced by ff_wmv2_decode_mb(), ff_wmv2_decode_secondary_picture_header(), msmpeg4_decode_picture_header(), msmpeg4v34_decode_mb(), vc1_decode_b_mb(), vc1_decode_p_block(), vc1_parse_frame_header(), vc1_parse_frame_header_adv(), and wmv2_decode_inter_block().
static int decode210 | ( | GetBitContext * | gb | ) | [inline, static] |
void ff_copy_bits | ( | PutBitContext * | pb, | |
const uint8_t * | src, | |||
int | length | |||
) |
Definition at line 63 of file bitstream.c.
Referenced by encode_thread(), merge_context_after_encode(), and svq1_encode_plane().
void ff_put_string | ( | PutBitContext * | pbc, | |
const char * | s, | |||
int | put_zero | |||
) |
static void flush_put_bits | ( | PutBitContext * | s | ) | [inline, static] |
Definition at line 122 of file bitstream.h.
Referenced by adts_write_frame_header(), dca_convert_bitstream(), dnxhd_encode_thread(), dv_decode_video_segment(), dv_encode_video_segment(), encode_bitstream(), encode_ext_header(), encode_frame(), encode_picture_lossless(), encode_picture_ls(), encode_superframe(), encode_thread(), escape_FF(), ff_copy_bits(), ff_lzw_encode_flush(), ff_mjpeg_decode_frame(), ff_mjpeg_encode_picture_trailer(), h264_write_nal_unit(), jpeg_put_comments(), jpeg_table_header(), merge_context_after_encode(), MPV_encode_picture(), output_frame_end(), output_frame_footer(), output_frame_header(), put_main_header(), put_pack_header(), put_system_header(), svq1_encode_frame(), svq1_encode_plane(), vorbis_encode_frame(), write_slice_end(), and write_streaminfo().
void free_vlc | ( | VLC * | vlc | ) |
Definition at line 293 of file bitstream.c.
Referenced by cook_decode_close(), decode_end(), dnxhd_decode_close(), dvvideo_init(), ff_mjpeg_decode_dht(), ff_mjpeg_decode_end(), ff_wma_end(), fraps2_decode_plane(), generate_joint_tables(), read_huffman_tables(), read_old_huffman_tables(), smacker_decode_header_tree(), smka_decode_frame(), tm2_free_codes(), and vorbis_free().
static av_always_inline int get_vlc2 | ( | GetBitContext * | s, | |
VLC_TYPE(*) | table[2], | |||
int | bits, | |||
int | max_depth | |||
) | [static] |
parses a vlc code, faster then get_vlc()
bits | is the number of bits which will be read at once, must be identical to nb_bits in init_vlc() | |
max_depth | is the number of times bits bits must be read to completely read the longest vlc code = (max_vlc_length + bits - 1) / bits |
Definition at line 877 of file bitstream.h.
Referenced by asv1_decode_block(), asv1_get_level(), asv2_decode_block(), asv2_get_level(), bitplane_decoding(), decode_bgr_1(), decode_coeff(), decode_dc(), decode_envelope(), decode_exp_vlc(), decode_i_block(), decode_i_frame(), decode_mv_component(), decode_p_block(), decode_residual(), decouple_info(), dnxhd_decode_dc(), dnxhd_decode_dct_block(), ff_h263_decode_mb(), ff_mpeg4_decode_mb(), ff_msmpeg4_decode_motion(), ff_wmv2_decode_mb(), fraps2_decode_plane(), get_bitalloc(), h261_decode_block(), h261_decode_mb(), h263_decode_block(), h263_decode_motion(), huffman_decode(), idx_to_quant(), imc_read_level_coeffs(), ir2_get_code(), mjpeg_decode_dc(), mpc7_decode_frame(), mpc8_decode_frame(), mpeg4_decode_dc(), mpeg4_decode_partition_a(), mpeg4_decode_partition_b(), mpeg4_decode_sprite_trajectory(), mpeg_decode_mb(), mpeg_decode_motion(), mpeg_decode_slice(), msmpeg4_decode_dc(), msmpeg4v12_decode_mb(), msmpeg4v2_decode_motion(), msmpeg4v34_decode_mb(), preview_obmc(), qdm2_get_vlc(), readQuantSpectralCoeffs(), rv34_decode_block(), rv34_decode_cbp(), rv40_decode_intra_types(), rv40_decode_mb_info(), rv_decode_dc(), smacker_decode_bigtree(), smka_decode_frame(), svq1_decode_block_intra(), svq1_decode_block_non_intra(), svq1_decode_delta_block(), svq1_decode_motion_vector(), tm2_get_token(), unpack_modes(), unpack_SQVH(), unpack_superblocks(), unpack_vectors(), unpack_vlcs(), vc1_decode_ac_coeff(), vc1_decode_b_mb(), vc1_decode_i_block(), vc1_decode_i_block_adv(), vc1_decode_i_blocks(), vc1_decode_i_blocks_adv(), vc1_decode_intra_block(), vc1_decode_p_block(), vc1_decode_p_mb(), vc1_parse_frame_header(), vc1_parse_frame_header_adv(), vorbis_floor0_decode(), vorbis_floor1_decode(), vorbis_residue_decode(), vp6_parse_coeff_huffman(), wma_decode_block(), wnv1_get_code(), x8_get_ac_rlf(), x8_get_dc_rlf(), and x8_get_orient_vlc().
static void init_put_bits | ( | PutBitContext * | s, | |
uint8_t * | buffer, | |||
int | buffer_size | |||
) | [inline, static] |
Definition at line 91 of file bitstream.h.
Referenced by adts_write_frame_header(), dca_convert_bitstream(), dnxhd_setup_threads_slices(), dv_decode_video_segment(), dv_encode_video_segment(), encode_bitstream(), encode_ext_header(), encode_frame(), encode_picture_lossless(), encode_picture_ls(), encode_thread(), ff_init_cabac_encoder(), ff_lzw_encode_init(), ff_mjpeg_decode_frame(), flac_encode_frame(), gif_image_write_image(), h264_write_nal_unit(), MPA_encode_frame(), MPV_encode_picture(), output_frame_header(), put_main_header(), put_pack_header(), put_system_header(), svq1_encode_frame(), svq1_encode_plane(), vorbis_encode_frame(), and write_streaminfo().
static int put_bits_count | ( | PutBitContext * | s | ) | [inline, static] |
Definition at line 112 of file bitstream.h.
Referenced by dca_convert_bitstream(), dnxhd_encode_thread(), dv_decode_video_segment(), encode_bgr_bitstream(), encode_frame(), encode_mb(), encode_mb_hq(), encode_picture(), encode_picture_lossless(), encode_picture_ls(), encode_superframe(), encode_thread(), escape_FF(), ff_copy_bits(), ff_mjpeg_encode_stuffing(), flac_encode_frame(), get_bits_diff(), h264_write_nal_unit(), merge_context_after_encode(), mpeg1_encode_picture_header(), MPV_encode_picture(), output_frame_footer(), output_frame_header(), put_bits_left(), put_main_header(), svq1_encode_frame(), svq1_encode_plane(), vorbis_encode_frame(), and writtenBytes().
unaligned | ( | 16 | ) |
const uint8_t ff_reverse[256] |
Definition at line 41 of file utils.c.
Referenced by asv2_get_bits(), asv2_put_bits(), decode_frame(), fft(), ir2_decode_frame(), pcm_decode_frame(), pcm_encode_frame(), and wnv1_get_code().
int n |
Definition at line 213 of file bitstream.h.
Referenced by ape_decode_frame(), apply_window_and_mdct(), asf_read_header(), asf_write_header1(), audio_decode_frame(), av_encode(), av_log2(), av_log2_16bit(), av_parse_video_frame_rate(), av_parse_video_frame_size(), av_xiphlacing(), average_quantized_coeffs(), avi_read_packet(), bmp_decode_frame(), bmp_encode_frame(), build_table(), channel_decorrelation(), cinepak_decode_codebook(), clean_index(), clear_blocks_axp(), compute_antialias_float(), compute_antialias_integer(), compute_scale_factors(), create_cel_evals(), create_map(), dca_subsubframe(), dct_quantize_TMPL(), decode_frame(), decode_gain_info(), decode_init(), decode_to16(), dnxhd_calc_bits_thread(), dnxhd_encode_thread(), dpcm_decode_frame(), ebml_read_num(), ebml_read_sint(), ebml_read_uint(), encode_block(), encode_frame(), encode_residual(), encode_residual_v(), ff_er_frame_end(), ff_fft_calc_altivec(), ff_fft_init(), ff_imdct_calc(), ff_imdct_calc_3dn2(), ff_imdct_calc_sse(), ff_mdct_calc(), ff_mdct_init(), ff_mjpeg_decode_dht(), ff_wma_init(), fft_init(), fft_ref(), fft_ref_init(), find_and_decode_index(), find_next_start_code(), get_block(), get_num(), gif_read_header1(), gif_read_image(), gray_to_mono(), guess_ni_flag(), h_resample(), hl_motion(), imdct_ref(), img_apply_table(), init_coef_vlc(), init_exp(), init_tone_level_dequantization(), init_uni_ac_vlc(), ljpeg_decode_yuv_scan(), matroska_clear_queue(), matroska_ebmlnum_uint(), matroska_parse_block(), matroska_probe(), matroska_read_close(), mdct_ref(), mjpeg_decode_scan(), mono_to_stereo(), mp_decode_layer1(), output_frame_end(), output_residual(), pam_encode_frame(), parse_date(), pcm_decode_frame(), pcm_encode_frame(), pnm_decode_frame(), pnm_encode_frame(), process_subpacket_9(), put_huffman_table(), qdm2_calculate_fft(), qdm2_fft_decode_tones(), read_key(), render_slice(), rm_write_header(), rtp_read(), rtp_send_samples(), rtp_write_header(), scale_mv(), stereo_to_mono(), svq1_decode_block_intra(), svq1_decode_block_non_intra(), synchronize_audio(), synthfilt_build_sb_samples(), targa_encode_normal(), udp_read_packet(), unpack(), video_audio_display(), vorbis_comment(), x8_decode_intra_mb(), and yuv4_generate_header().