Miscellaneous utility functions related to both encoding and decoding (or neither).
More...
Modules
Pixel formats
Functions for working with pixel formats.
FFT functions
Data Structures
struct
AVBitStreamFilterContext
struct
AVBitStreamFilter
Enumerations
enum
AVLockOp
{
AV_LOCK_CREATE
,
AV_LOCK_OBTAIN
,
AV_LOCK_RELEASE
,
AV_LOCK_DESTROY
Lock operation used by lockmgr.
More...
Functions
void
avcodec_set_dimensions
(
AVCodecContext
*
s
, int
width
, int
height
)
size_t
av_get_codec_tag_string
(char *
buf
, size_t buf_size, unsigned int codec_tag)
Put a string representing the codec tag codec_tag in buf.
void
avcodec_string
(char *
buf
, int buf_size,
AVCodecContext
*enc, int encode)
const char *
av_get_profile_name
(const
AVCodec
*codec, int profile)
Return a name for the specified profile, if available.
int
avcodec_default_execute
(
AVCodecContext
*
c
, int(*
func
)(
AVCodecContext
*
c2
,
void
*arg2),
void
*
arg
, int *
ret
, int
count
, int
size
)
int
avcodec_default_execute2
(
AVCodecContext
*
c
, int(*
func
)(
AVCodecContext
*
c2
,
void
*arg2, int, int),
void
*
arg
, int *
ret
, int
count
)
int
avcodec_fill_audio_frame
(
AVFrame
*
frame
, int
nb_channels
, enum
AVSampleFormat
sample_fmt, const
uint8_t
*
buf
, int buf_size, int
align
)
Fill
AVFrame
audio data and linesize pointers.
void
avcodec_flush_buffers
(
AVCodecContext
*avctx)
Reset the internal decoder state / flush internal buffers.
int
av_get_bits_per_sample
(enum
AVCodecID
codec_id
)
Return codec bits per sample.
enum
AVCodecID
av_get_pcm_codec
(enum
AVSampleFormat
fmt
, int be)
Return the PCM codec associated with a sample format.
int
av_get_exact_bits_per_sample
(enum
AVCodecID
codec_id
)
Return codec bits per sample.
int
av_get_audio_frame_duration
(
AVCodecContext
*avctx, int frame_bytes)
Return audio frame duration.
void
av_register_bitstream_filter
(
AVBitStreamFilter
*bsf)
Register a bitstream filter.
AVBitStreamFilterContext
*
av_bitstream_filter_init
(const char *
name
)
Create and initialize a bitstream filter context given a bitstream filter name.
int
av_bitstream_filter_filter
(
AVBitStreamFilterContext
*bsfc,
AVCodecContext
*avctx, const char *
args
,
uint8_t
**poutbuf, int *poutbuf_size, const
uint8_t
*
buf
, int buf_size, int keyframe)
Filter bitstream.
void
av_bitstream_filter_close
(
AVBitStreamFilterContext
*bsf)
Release bitstream filter context.
AVBitStreamFilter
*
av_bitstream_filter_next
(
AVBitStreamFilter
*f)
If f is NULL, return the first registered bitstream filter, if f is non-NULL, return the next registered bitstream filter after f, or NULL if f is the last one.
void
*
av_fast_realloc
(
void
*ptr, unsigned int *
size
, size_t min_size)
Reallocate the given block if it is not large enough, otherwise do nothing.
void
av_fast_malloc
(
void
*ptr, unsigned int *
size
, size_t min_size)
Allocate a buffer, reusing the given one if large enough.
void
av_fast_padded_malloc
(
void
*ptr, unsigned int *
size
, size_t min_size)
Same behaviour av_fast_malloc but the buffer has additional FF_INPUT_BUFFER_PADDING_SIZE at the end which will always be 0.
void
av_fast_padded_mallocz
(
void
*ptr, unsigned int *
size
, size_t min_size)
Same behaviour av_fast_padded_malloc except that buffer will always be 0-initialized after call.
unsigned int
av_xiphlacing
(unsigned char *
s
, unsigned int
v
)
Encode extradata length to a buffer.
void
av_register_hwaccel
(
AVHWAccel
*hwaccel)
Register the hardware accelerator hwaccel.
AVHWAccel
*
av_hwaccel_next
(
AVHWAccel
*hwaccel)
If hwaccel is NULL, returns the first registered hardware accelerator, if hwaccel is non-NULL, returns the next registered hardware accelerator after hwaccel, or NULL if hwaccel is the last one.
int
av_lockmgr_register
(int(*
cb
)(
void
**
mutex
, enum
AVLockOp
op
))
Register a user provided lock manager supporting the operations specified by AVLockOp.
enum
AVMediaType
avcodec_get_type
(enum
AVCodecID
codec_id
)
Get the type of the given codec.
const char *
avcodec_get_name
(enum
AVCodecID
id
)
Get the name of a codec.
int
avcodec_is_open
(
AVCodecContext
*
s
)
int
av_codec_is_encoder
(const
AVCodec
*codec)
int
av_codec_is_decoder
(const
AVCodec
*codec)
const
AVCodecDescriptor
*
avcodec_descriptor_get
(enum
AVCodecID
id
)
const
AVCodecDescriptor
*
avcodec_descriptor_next
(const
AVCodecDescriptor
*prev)
Iterate over all codec descriptors known to libavcodec.
const
AVCodecDescriptor
*
avcodec_descriptor_get_by_name
(const char *
name
)
Miscellaneous utility functions related to both encoding and decoding (or neither).
Definition at line
234
of file
utils.c
.
Referenced by
apply_param_change()
,
av_mpeg4_decode_header()
,
avcodec_open2()
,
avpriv_dirac_parse_sequence_header()
,
avs_decode_init()
,
brpix_decode_frame()
,
cdxl_decode_frame()
,
cmv_process_header()
,
decode_frame()
,
decode_frame_headers()
,
decode_init()
,
dnxhd_decode_frame()
,
dvdsub_parse_extradata()
,
dvvideo_decode_frame()
,
execute_code()
,
ff_h263_decode_frame()
,
ff_ivi_decode_frame()
,
ff_mjpeg_decode_sof()
,
ff_rv34_decode_frame()
,
ff_vc1_decode_entry_point()
,
ff_vc1_decode_sequence_header()
,
flashsv_decode_frame()
,
g2m_decode_frame()
,
gif_decode_frame()
,
h261_decode_frame()
,
init_image()
,
libopenjpeg_decode_frame()
,
mpeg_decode_postinit()
,
mpegvideo_extract_headers()
,
mvc_decode_init()
,
parse_presentation_segment()
,
pcx_decode_frame()
,
process_frame_obj()
,
ptx_decode_frame()
,
rv20_decode_picture_header()
,
smvjpeg_decode_frame()
,
sunrast_decode_frame()
,
svq1_decode_frame()
,
tgq_decode_frame()
,
tgv_decode_frame()
,
theora_header()
,
tqi_decode_frame()
,
truemotion1_decode_header()
,
txd_decode_frame()
,
update_dimensions()
,
vp56_size_changed()
,
vp5_parse_header()
,
vp6_parse_header()
,
vp8_decode()
, and
vp8_lossless_decode_frame()
.
-
Returns
-
the length of the string that would have been generated if enough space had been available, excluding the trailing null
Definition at line
2659
of file
utils.c
.
Referenced by
avcodec_string()
,
init_muxer()
,
main()
,
mov_write_hdlr_tag()
,
print_pix_fmt_fourccs()
,
rsd_read_header()
, and
show_stream()
.
-
Returns
-
A name for the profile if found, NULL otherwise.
Definition at line
2815
of file
utils.c
.
Referenced by
avcodec_string()
, and
show_stream()
.
Fill
AVFrame
audio data and linesize pointers.
The buffer buf must be a preallocated buffer with a size big enough to contain the specified samples amount. The filled
AVFrame
data pointers will point to this buffer.
AVFrame
extended_data channel pointers are allocated if necessary for planar audio.
-
Parameters
-
framethe
AVFrame
frame->nb_samples must be set prior to calling the function. This function fills in frame->data, frame->extended_data, frame->linesize[0].
nb_channelschannel count
sample_fmtsample format
bufbuffer to use for frame data
buf_sizesize of buffer
alignplane size sample alignment (0 = default)
-
Returns
-
>=0 on success, negative error code on failure
-
Todo:
-
return the size in bytes required to store the samples in case of success, at the next libavutil bump
-
Examples:
-
doc/examples/decoding_encoding.c
, and
doc/examples/muxing.c
.
Definition at line
432
of file
utils.c
.
Referenced by
audio_encode_example()
, and
write_audio_frame()
.
Reset the internal decoder state / flush internal buffers.
Should be called e.g. when seeking or when switching to a different stream.
-
Note
-
when refcounted frames are not used (i.e. avctx->refcounted_frames is 0), this invalidates the frames previously returned from the decoder. When refcounted frames are used, the decoder just releases any references it might keep internally, but the caller's reference remains valid.
Definition at line
2856
of file
utils.c
.
Referenced by
get_video_frame()
,
rewind_file()
,
subtitle_thread()
, and
video_thread()
.
-
Returns
-
Number of bits per sample or zero if unknown for the given codec.
Definition at line
2941
of file
utils.c
.
Referenced by
adpcm_encode_init()
,
aiff_write_header()
,
avformat_find_stream_info()
,
caf_write_header()
,
epaf_read_header()
,
ff_alsa_open()
,
ff_audio_interleave_init()
,
ff_pcm_read_seek()
,
ff_put_wav_header()
,
ff_voc_get_packet()
,
g722_read_header()
,
get_aiff_header()
,
get_bit_rate()
,
gxf_packet()
,
iff_read_header()
,
init_muxer()
,
ircam_read_header()
,
mkv_write_tracks()
,
mov_get_codec_tag()
,
mov_parse_stsd_audio()
,
mov_write_audio_tag()
,
mov_write_header()
,
mxf_set_audio_pts()
,
mxf_write_generic_sound_common()
,
oma_read_header()
,
pcm_decode_frame()
,
pcm_decode_init()
,
pcm_encode_frame()
,
pcm_encode_init()
,
pcm_read_header()
,
pulse_read_header()
,
read_header()
,
rso_read_header()
, and
show_stream()
.
Return codec bits per sample.
Only return non-zero if the bits per sample is exactly correct, not an approximation.
-
Parameters
-
[in]codec_idthe codec
-
Returns
-
Number of bits per sample or zero if unknown for the given codec.
Definition at line
2870
of file
utils.c
.
Referenced by
av_get_audio_frame_duration()
,
av_get_bits_per_sample()
, and
new_output_stream()
.
-
Returns
-
frame duration, in samples, if known. 0 if not able to determine.
Definition at line
2959
of file
utils.c
.
Referenced by
adp_read_header()
,
build_frame_code()
,
do_streamcopy()
,
ff_get_audio_frame_size()
,
ff_parse_specific_params()
,
ff_put_wav_header()
,
get_aiff_header()
,
rsd_read_header()
,
rtp_send_ilbc()
, and
rtp_write_header()
.
Register a bitstream filter.
The filter will be accessible to the application code through
av_bitstream_filter_next()
or can be directly initialized with
av_bitstream_filter_init()
.
-
See Also
-
avcodec_register_all()
Definition at line
37
of file
bitstream_filter.c
.
Create and initialize a bitstream filter context given a bitstream filter name.
The returned context must be freed with
av_bitstream_filter_close()
.
-
Parameters
-
namethe name of the bitstream filter
-
Returns
-
a bitstream filter context if a matching filter was found and successfully initialized, NULL otherwise
Definition at line
44
of file
bitstream_filter.c
.
Referenced by
init()
,
new_output_stream()
,
parse_bsfs()
, and
Stagefright_init()
.
Filter bitstream.
This function filters the buffer buf with size buf_size, and places the filtered buffer in the buffer pointed to by poutbuf.
The output buffer must be freed by the caller.
-
Parameters
-
bsfcbitstream filter context created by
av_bitstream_filter_init()
avctx
AVCodecContext
accessed by the filter, may be NULL. If specified, this must point to the encoder context of the output stream the packet is sent to.
argsarguments which specify the filter configuration, may be NULL
poutbufpointer which is updated to point to the filtered buffer
poutbuf_sizepointer which is updated to the filtered buffer size in bytes
bufbuffer containing the data to filter
buf_sizesize in bytes of buf
keyframeset to non-zero if the buffer to filter corresponds to a key-frame packet data
-
Returns
-
>= 0 in case of success, or a negative error code in case of failure
If the return value is positive, an output buffer is allocated and is availble in *poutbuf, and is distinct from the input buffer.
If the return value is 0, the output buffer is not allocated and should be considered identical to the input buffer, or in case *poutbuf was set it points to the input buffer (not necessarily to its starting address).
Definition at line
73
of file
bitstream_filter.c
.
Referenced by
decode()
,
filter_packet()
,
init()
,
Stagefright_decode_frame()
, and
write_frame()
.
If f is NULL, return the first registered bitstream filter, if f is non-NULL, return the next registered bitstream filter after f, or NULL if f is the last one.
This function can be used to iterate over all registered bitstream filters.
Definition at line
29
of file
bitstream_filter.c
.
Referenced by
show_bsfs()
.
Reallocate the given block if it is not large enough, otherwise do nothing.
-
See Also
-
av_realloc
Definition at line
120
of file
utils.c
.
Referenced by
caf_write_packet()
,
decode_frame()
,
decode_frame_header()
,
dirac_combine_frame()
,
ff_add_index_entry()
,
ff_af_queue_add()
,
ff_combine_frame()
,
ff_mms_asf_header_parser()
,
ff_subtitles_queue_insert()
,
ff_thread_release_buffer()
,
ff_vaapi_alloc_slice()
,
ff_vaapi_commit_slices()
,
ff_vdpau_add_buffer()
,
ff_vdpau_add_data_chunk()
,
flac_fifo_read_wrap()
,
get_stats()
,
mxg_update_cache()
,
read_frame()
,
shorten_decode_frame()
,
spdif_header_eac3()
, and
vda_h264_decode_slice()
.
Allocate a buffer, reusing the given one if large enough.
Contrary to av_fast_realloc the current buffer contents might not be preserved and on error the old buffer is freed, thus no special handling to avoid memleaks is necessary.
-
Parameters
-
ptrpointer to pointer to already allocated buffer, overwritten with pointer to new buffer
sizesize of the buffer *ptr points to
min_sizeminimum size of *ptr buffer after returning, *ptr will be NULL and *size 0 if an error occurred.
Definition at line
153
of file
utils.c
.
Referenced by
allocate_buffers()
,
ape_decode_frame()
,
audio_decode_frame()
,
codec_reinit()
,
dca_decode_frame()
,
decode_8()
,
decode_frame()
,
decode_i_frame()
,
decode_p_frame()
,
ff_h263_decode_frame()
,
ff_hevc_extract_rbsp()
,
ff_mpeg_update_thread_context()
,
gif_decode_frame()
,
gif_read_image()
,
hevc_frame_start()
,
id3v2_parse()
,
ljpeg_decode_rgb_scan()
,
mp_decode_frame()
,
parse_picture_segment()
,
pmp_packet()
,
reconfigure_at_keyframe()
,
spdif_header_dts4()
,
spdif_write_packet()
,
submit_packet()
,
svq3_decode_frame()
,
tak_decode_frame()
,
truemotion1_decode_header()
,
truemotion1_decode_init()
,
update_md5_sum()
,
utvideo_encode_frame()
, and
verify_md5()
.
Same behaviour av_fast_malloc but the buffer has additional FF_INPUT_BUFFER_PADDING_SIZE at the end which will always be 0.
In addition the whole buffer will initially and after resizes be 0-initialized so that no uninitialized data will ever appear.
Definition at line
158
of file
utils.c
.
Referenced by
allocate_buffers()
,
allocate_buffers2()
,
cdxl_decode_frame()
,
cllc_decode_frame()
,
decode_block()
,
decode_frame()
,
deinvert_buffer()
,
ebml_read_binary()
,
encode_frame()
,
ff_alloc_packet2()
,
ff_h264_decode_nal()
,
ff_mjpeg_find_marker()
,
init_buffers()
,
mimic_decode_frame()
,
mpc7_decode_frame()
,
tqi_decode_frame()
,
wavpack_encode_block()
,
wavpack_encode_frame()
, and
wv_stereo()
.
Same behaviour av_fast_padded_malloc except that buffer will always be 0-initialized after call.
Definition at line
170
of file
utils.c
.
Referenced by
decode_frame()
, and
encode_frame()
.
If hwaccel is NULL, returns the first registered hardware accelerator, if hwaccel is non-NULL, returns the next registered hardware accelerator after hwaccel, or NULL if hwaccel is the last one.
Definition at line
3192
of file
utils.c
.
Referenced by
ff_find_hwaccel()
.
Register a user provided lock manager supporting the operations specified by AVLockOp.
mutex points to a (void *) where the lockmgr should store/get a pointer to a user allocated mutex. It's NULL upon AV_LOCK_CREATE and != NULL for all other ops.
-
Parameters
-
cbUser defined callback. Note: FFmpeg may invoke calls to this callback during the call to
av_lockmgr_register()
. Thus, the application must be prepared to handle that. If cb is set to NULL the lockmgr will be unregistered. Also note that during unregistration the previously registered lockmgr callback may also be invoked.
Get the name of a codec.
-
Returns
-
a static string identifying the codec; never NULL
-
Examples:
-
doc/examples/muxing.c
.
Definition at line
2639
of file
utils.c
.
Referenced by
add_stream()
,
avcodec_string()
,
avformat_find_stream_info()
,
device_try_init()
,
filter_packet()
,
flv_write_header()
,
flv_write_packet()
,
get_audio_flags()
,
init_input_stream()
,
log_slave()
,
mkv_write_codecprivate()
,
mkv_write_header()
,
mxf_parse_structural_metadata()
,
read_frame_internal()
,
rtp_write_header()
,
srt_write_header()
, and
transcode_init()
.
-
Returns
-
a positive value if s is open (i.e.
avcodec_open2()
was called on it with no corresponding
avcodec_close()
), 0 otherwise.
Definition at line
3379
of file
utils.c
.
Referenced by
avcodec_close()
,
avcodec_copy_context()
,
avcodec_open2()
,
ff_mp4_read_dec_config_descr()
,
mpegts_find_stream_type()
,
mpegts_set_stream_info()
, and
try_decode_frame()
.
-
Returns
-
a non-zero number if codec is an encoder, zero otherwise
Definition at line
205
of file
utils.c
.
Referenced by
avcodec_close()
,
avcodec_find_encoder_by_name()
,
avcodec_open2()
,
ff_jpeg2000_init_component()
,
find_encdec()
,
next_codec_for_id()
, and
print_codec()
.
-
Returns
-
a non-zero number if codec is a decoder, zero otherwise
Definition at line
210
of file
utils.c
.
Referenced by
avcodec_find_decoder_by_name()
,
avcodec_open2()
,
find_encdec()
, and
next_codec_for_id()
.
-
Returns
-
descriptor for given codec ID or NULL if no descriptor exists.
Definition at line
2619
of file
codec_desc.c
.
Referenced by
avcodec_get_name()
,
avcodec_open2()
,
is_intra_only()
, and
show_help_muxer()
.
-
Returns
-
next descriptor or NULL after the last descriptor
Definition at line
2629
of file
codec_desc.c
.
Referenced by
avcodec_descriptor_get_by_name()
, and
get_codecs_sorted()
.
-
Returns
-
codec descriptor with the given name or NULL if no such descriptor exists.
Definition at line
2638
of file
codec_desc.c
.
Referenced by
find_codec_or_die()
, and
show_help_codec()
.