FFmpeg
Data Structures | Macros | Typedefs | Functions | Variables
put_bits.h File Reference
#include <stdint.h>
#include <stddef.h>
#include "config.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/avassert.h"
#include "libavutil/common.h"

Go to the source code of this file.

Data Structures

struct  PutBitContext
 

Macros

#define AV_WBBUF   AV_WB32
 
#define AV_WLBUF   AV_WL32
 

Typedefs

typedef uint32_t BitBuf
 

Functions

static void init_put_bits (PutBitContext *s, uint8_t *buffer, int buffer_size)
 Initialize the PutBitContext s. More...
 
static int put_bits_count (PutBitContext *s)
 
static int put_bytes_output (const PutBitContext *s)
 
static int put_bytes_count (const PutBitContext *s, int round_up)
 
static void rebase_put_bits (PutBitContext *s, uint8_t *buffer, int buffer_size)
 Rebase the bit writer onto a reallocated buffer. More...
 
static int put_bits_left (PutBitContext *s)
 
static int put_bytes_left (const PutBitContext *s, int round_up)
 
static void flush_put_bits (PutBitContext *s)
 Pad the end of the output stream with zeros. More...
 
static void flush_put_bits_le (PutBitContext *s)
 
void ff_put_string (PutBitContext *pb, const char *string, int terminate_string)
 Put the string string in the bitstream. More...
 
void ff_copy_bits (PutBitContext *pb, const uint8_t *src, int length)
 Copy the content of src to the bitstream. More...
 
static void put_bits_no_assert (PutBitContext *s, int n, BitBuf value)
 
static void put_bits (PutBitContext *s, int n, BitBuf value)
 Write up to 31 bits into a bitstream. More...
 
static void put_bits_le (PutBitContext *s, int n, BitBuf value)
 
static void put_sbits (PutBitContext *pb, int n, int32_t value)
 
static void av_unused put_bits32 (PutBitContext *s, uint32_t value)
 Write exactly 32 bits into a bitstream. More...
 
static void put_bits64 (PutBitContext *s, int n, uint64_t value)
 Write up to 64 bits into a bitstream. More...
 
static void put_sbits63 (PutBitContext *pb, int n, int64_t value)
 
static uint8_t * put_bits_ptr (PutBitContext *s)
 Return the pointer to the byte where the bitstream writer will put the next bit. More...
 
static void skip_put_bytes (PutBitContext *s, int n)
 Skip the given number of bytes. More...
 
static void skip_put_bits (PutBitContext *s, int n)
 Skip the given number of bits. More...
 
static void set_put_bits_buffer_size (PutBitContext *s, int size)
 Change the end of the buffer. More...
 
static void align_put_bits (PutBitContext *s)
 Pad the bitstream with zeros up to the next byte boundary. More...
 

Variables

static const int BUF_BITS = 8 * sizeof(BitBuf)
 

Detailed Description

bitstream writer API

Definition in file put_bits.h.

Macro Definition Documentation

◆ AV_WBBUF

#define AV_WBBUF   AV_WB32

Definition at line 44 of file put_bits.h.

◆ AV_WLBUF

#define AV_WLBUF   AV_WL32

Definition at line 45 of file put_bits.h.

Typedef Documentation

◆ BitBuf

typedef uint32_t BitBuf

Definition at line 43 of file put_bits.h.

Function Documentation

◆ init_put_bits()

static void init_put_bits ( PutBitContext s,
uint8_t *  buffer,
int  buffer_size 
)
inlinestatic

Initialize the PutBitContext s.

Parameters
bufferthe buffer where to put bits
buffer_sizethe size in bytes of buffer

Definition at line 62 of file put_bits.h.

Referenced by aac_adtstoasc_filter(), aac_encode_frame(), ac3_output_frame(), adts_decode_extradata(), adts_write_frame_header(), adx_encode(), av_dynamic_hdr_plus_to_t35(), avpriv_dca_convert_bitstream(), binary_export(), cbs_vp9_assemble_fragment(), cbs_write_unit_data(), cfhd_encode_frame(), decode_init(), decode_packet(), dnxhd_encode_thread(), dv_decode_video_segment(), dv_encode_video_segment(), encode_alpha_slice_data(), encode_bitstream(), encode_block(), encode_ext_header(), encode_frame(), encode_init(), encode_picture_ls(), encode_plane_slice(), encode_slice(), encode_slice_plane(), encode_slices(), encode_thread(), encode_yuv422p10(), ff_alloc_timecode_sei(), ff_dolby_e_convert_input(), ff_dovi_rpu_generate(), ff_hevc_encode_nal_vps(), ff_iamf_write_audio_frame(), ff_isom_put_dvcc_dvvc(), ff_isom_write_av1c(), ff_lzw_encode_init(), ff_mjpeg_find_marker(), ff_mpeg4_init_partitions(), ff_mpv_encode_picture(), flush(), flv_write_codec_header(), iamf_write_audio_element(), iamf_write_codec_config(), iamf_write_mixing_presentation(), init_cabac_encoder(), latm_write_packet(), ljpeg_encode_frame(), magy_encode_frame(), main(), mov_write_ac3_tag(), mov_write_dvc1_structs(), mov_write_eac3_tag(), MPA_encode_frame(), pack_bitstream(), pnm_decode_frame(), put_audio_specific_config(), put_line(), put_main_header(), put_pack_header(), put_swf_matrix(), put_swf_rect(), put_system_header(), ra144_encode_frame(), rpza_encode_frame(), s302m_encode2_frame(), save_bits(), sbc_pack_frame(), scalable_channel_layout_config(), send_mode_a(), send_mode_b(), svq1_encode_frame(), svq1_encode_plane(), swf_write_header(), tta_encode_frame(), update_extradata(), vorbis_encode_frame(), vp9_raw_reorder_make_output(), vvcc_write(), wavpack_encode_block(), wmavoice_decode_packet(), write_frame(), write_header(), write_huff_codes(), write_major_sync(), write_parameter_block(), write_streaminfo(), write_substr(), and xsub_encode().

◆ put_bits_count()

static int put_bits_count ( PutBitContext s)
inlinestatic

◆ put_bytes_output()

static int put_bytes_output ( const PutBitContext s)
inlinestatic

◆ put_bytes_count()

static int put_bytes_count ( const PutBitContext s,
int  round_up 
)
inlinestatic

◆ rebase_put_bits()

static void rebase_put_bits ( PutBitContext s,
uint8_t *  buffer,
int  buffer_size 
)
inlinestatic

Rebase the bit writer onto a reallocated buffer.

Parameters
bufferthe buffer where to put bits
buffer_sizethe size in bytes of buffer, must be large enough to hold everything written so far

Definition at line 112 of file put_bits.h.

Referenced by ff_mpv_reallocate_putbitbuffer().

◆ put_bits_left()

static int put_bits_left ( PutBitContext s)
inlinestatic

◆ put_bytes_left()

static int put_bytes_left ( const PutBitContext s,
int  round_up 
)
inlinestatic

◆ flush_put_bits()

static void flush_put_bits ( PutBitContext s)
inlinestatic

Pad the end of the output stream with zeros.

Definition at line 143 of file put_bits.h.

Referenced by aac_adtstoasc_filter(), aac_encode_frame(), adts_decode_extradata(), adts_write_frame_header(), adx_encode(), av_dynamic_hdr_plus_to_t35(), avpriv_dca_convert_bitstream(), binary_export(), cbs_av1_write_obu(), cbs_h2645_write_slice_data(), cbs_jpeg_write_scan(), cbs_mpeg2_write_slice(), cbs_vp9_assemble_fragment(), cbs_vp9_write_unit(), cbs_write_unit_data(), cfhd_encode_frame(), dnxhd_encode_thread(), dv_decode_video_segment(), dv_encode_video_segment(), encode_alpha_slice_data(), encode_bitstream(), encode_block(), encode_ext_header(), encode_frame(), encode_hq_slice(), encode_init(), encode_picture_ls(), encode_plane_slice(), encode_slice(), encode_slice_plane(), encode_slices(), encode_superframe(), encode_thread(), encode_yuv422p10(), ff_alloc_timecode_sei(), ff_cbs_trace_write_log(), ff_copy_bits(), ff_dolby_e_convert_input(), ff_dovi_rpu_generate(), ff_hevc_encode_nal_vps(), ff_iamf_write_audio_frame(), ff_isom_put_dvcc_dvvc(), ff_isom_write_av1c(), ff_lzw_encode_flush(), ff_mjpeg_escape_FF(), ff_mjpeg_find_marker(), ff_mpeg4_merge_partitions(), ff_mpv_encode_picture(), flv_write_codec_header(), frame_header_obu(), iamf_write_audio_element(), iamf_write_codec_config(), iamf_write_mixing_presentation(), jpeg_put_comments(), jpeg_table_header(), latm_write_packet(), ljpeg_encode_frame(), main(), merge_context_after_encode(), mov_write_ac3_tag(), mov_write_dvc1_structs(), mov_write_eac3_tag(), MPA_encode_frame(), output_frame_end(), pack_bitstream(), pnm_decode_frame(), put_audio_specific_config(), put_cabac_terminate(), put_line(), put_main_header(), put_pack_header(), put_swf_matrix(), put_swf_rect(), put_system_header(), ra144_encode_frame(), rpza_encode_frame(), s302m_encode2_frame(), save_bits(), sbc_pack_frame(), scalable_channel_layout_config(), send_mode_a(), send_mode_b(), svq1_encode_frame(), svq1_encode_plane(), swf_write_header(), tta_encode_frame(), update_extradata(), vc2_encode_frame(), vorbis_encode_frame(), vp9_raw_reorder_make_output(), vvcc_write(), wavpack_encode_block(), wmavoice_decode_packet(), write_frame(), write_frame_footer(), write_frame_header(), write_header(), write_huff_codes(), write_major_sync(), write_parameter_block(), write_restart_header(), write_slice_end(), write_streaminfo(), write_substr(), and xsub_encode().

◆ flush_put_bits_le()

static void flush_put_bits_le ( PutBitContext s)
inlinestatic

Definition at line 164 of file put_bits.h.

Referenced by encode_frame(), ff_lzw_encode_flush(), and ff_speedhq_end_slice().

◆ ff_put_string()

void ff_put_string ( PutBitContext pb,
const char *  string,
int  terminate_string 
)

Put the string string in the bitstream.

Parameters
terminate_string0-terminates the written string if value is 1

Definition at line 39 of file bitstream.c.

Referenced by encode_frame(), encode_parse_info(), jpeg_put_comments(), mpeg4_encode_vol_header(), and put_pce().

◆ ff_copy_bits()

void ff_copy_bits ( PutBitContext pb,
const uint8_t *  src,
int  length 
)

Copy the content of src to the bitstream.

Parameters
lengththe number of bits of src to copy

Definition at line 49 of file bitstream.c.

Referenced by copy_bits(), encode_thread(), ff_dovi_rpu_generate(), ff_mpeg4_merge_partitions(), merge_context_after_encode(), save_bits(), svq1_encode_plane(), and vvcc_write().

◆ put_bits_no_assert()

static void put_bits_no_assert ( PutBitContext s,
int  n,
BitBuf  value 
)
inlinestatic

Definition at line 197 of file put_bits.h.

Referenced by put_bits(), and put_bits32().

◆ put_bits()

static void put_bits ( PutBitContext s,
int  n,
BitBuf  value 
)
inlinestatic

Write up to 31 bits into a bitstream.

Use put_bits32 to write 32 bits.

Definition at line 247 of file put_bits.h.

Referenced by align_put_bits(), put_bits64(), and put_sbits().

◆ put_bits_le()

static void put_bits_le ( PutBitContext s,
int  n,
BitBuf  value 
)
inlinestatic

◆ put_sbits()

static void put_sbits ( PutBitContext pb,
int  n,
int32_t  value 
)
inlinestatic

◆ put_bits32()

static void av_unused put_bits32 ( PutBitContext s,
uint32_t  value 
)
static

◆ put_bits64()

static void put_bits64 ( PutBitContext s,
int  n,
uint64_t  value 
)
inlinestatic

Write up to 64 bits into a bitstream.

Definition at line 334 of file put_bits.h.

Referenced by main(), put_sbits63(), put_se_coef(), put_ue_coef(), set_ue_golomb_long(), and update_extradata().

◆ put_sbits63()

static void put_sbits63 ( PutBitContext pb,
int  n,
int64_t  value 
)
inlinestatic

Definition at line 366 of file put_bits.h.

Referenced by write_subframes().

◆ put_bits_ptr()

static uint8_t* put_bits_ptr ( PutBitContext s)
inlinestatic

◆ skip_put_bytes()

static void skip_put_bytes ( PutBitContext s,
int  n 
)
inlinestatic

Skip the given number of bytes.

PutBitContext must be flushed & aligned to a byte boundary before calling this.

Definition at line 386 of file put_bits.h.

Referenced by cbs_av1_write_obu(), cbs_h2645_write_slice_data(), cbs_jpeg_write_scan(), cbs_mpeg2_write_slice(), cbs_vp9_write_unit(), encode_hq_slice(), encode_slices(), ff_copy_bits(), ff_mjpeg_escape_FF(), and jpeg_put_comments().

◆ skip_put_bits()

static void skip_put_bits ( PutBitContext s,
int  n 
)
inlinestatic

Skip the given number of bits.

Must only be used if the actual values in the bitstream do not matter. If n is < 0 the behavior is undefined.

Definition at line 399 of file put_bits.h.

Referenced by ff_h263_encode_motion_vector(), and mpeg4_encode_blocks().

◆ set_put_bits_buffer_size()

static void set_put_bits_buffer_size ( PutBitContext s,
int  size 
)
inlinestatic

Change the end of the buffer.

Parameters
sizethe new size in bytes of the buffer where to put bits

Definition at line 411 of file put_bits.h.

Referenced by encode_picture(), ff_mpeg4_init_partitions(), and ff_mpeg4_merge_partitions().

◆ align_put_bits()

static void align_put_bits ( PutBitContext s)
inlinestatic

Variable Documentation

◆ BUF_BITS

const int BUF_BITS = 8 * sizeof(BitBuf)
static