Libav
Data Structures | Macros | Functions | Variables
utils.c File Reference

utils. More...

#include "config.h"
#include "libavutil/attributes.h"
#include "libavutil/avassert.h"
#include "libavutil/avstring.h"
#include "libavutil/channel_layout.h"
#include "libavutil/crc.h"
#include "libavutil/frame.h"
#include "libavutil/internal.h"
#include "libavutil/mathematics.h"
#include "libavutil/pixdesc.h"
#include "libavutil/imgutils.h"
#include "libavutil/samplefmt.h"
#include "libavutil/dict.h"
#include "avcodec.h"
#include "libavutil/opt.h"
#include "me_cmp.h"
#include "mpegvideo.h"
#include "thread.h"
#include "internal.h"
#include "bytestream.h"
#include "version.h"
#include <stdlib.h>
#include <stdarg.h>
#include <limits.h>
#include <float.h>

Go to the source code of this file.

Data Structures

struct  CompatReleaseBufPriv
 

Macros

#define STRIDE_ALIGN   8
 
#define WRAP_PLANE(ref_out, data, data_size)
 
#define TAG_PRINT(x)
 
#define LICENSE_PREFIX   "libavcodec license: "
 

Functions

void av_fast_padded_malloc (void *ptr, unsigned int *size, size_t min_size)
 Allocate a buffer with padding, reusing the given one if large enough. More...
 
AVCodecav_codec_next (const AVCodec *c)
 If c is NULL, returns the first registered codec, if c is non-NULL, returns the next registered codec after c, or NULL if c is the last one. More...
 
static av_cold void avcodec_init (void)
 
int av_codec_is_encoder (const AVCodec *codec)
 
int av_codec_is_decoder (const AVCodec *codec)
 
av_cold void avcodec_register (AVCodec *codec)
 Register the codec codec and initialize libavcodec. More...
 
unsigned avcodec_get_edge_width (void)
 Return the amount of padding in pixels which the get_buffer callback must provide around the edge of the image for codecs which do not have the CODEC_FLAG_EMU_EDGE flag. More...
 
void avcodec_set_dimensions (AVCodecContext *s, int width, int height)
 
int ff_set_dimensions (AVCodecContext *s, int width, int height)
 Check that the provided frame dimensions are valid and set them on the codec context. More...
 
int ff_set_sar (AVCodecContext *avctx, AVRational sar)
 Check that the provided sample aspect ratio is valid and set it on the codec context. More...
 
int ff_side_data_update_matrix_encoding (AVFrame *frame, enum AVMatrixEncoding matrix_encoding)
 Add or update AV_FRAME_DATA_MATRIXENCODING side data. More...
 
void avcodec_align_dimensions2 (AVCodecContext *s, int *width, int *height, int linesize_align[AV_NUM_DATA_POINTERS])
 Modify width and height values so that they will result in a memory buffer that is acceptable for the codec if you also ensure that all line sizes are a multiple of the respective linesize_align[i]. More...
 
void avcodec_align_dimensions (AVCodecContext *s, int *width, int *height)
 Modify width and height values so that they will result in a memory buffer that is acceptable for the codec if you do not use any horizontal padding. More...
 
int avcodec_fill_audio_frame (AVFrame *frame, int nb_channels, enum AVSampleFormat sample_fmt, const uint8_t *buf, int buf_size, int align)
 Fill audio frame data and linesize. More...
 
static int update_frame_pool (AVCodecContext *avctx, AVFrame *frame)
 
static int audio_get_buffer (AVCodecContext *avctx, AVFrame *frame)
 
static int video_get_buffer (AVCodecContext *s, AVFrame *pic)
 
int avcodec_default_get_buffer2 (AVCodecContext *avctx, AVFrame *frame, int flags)
 The default callback for AVCodecContext.get_buffer2(). More...
 
FF_DISABLE_DEPRECATION_WARNINGS int avcodec_default_get_buffer (AVCodecContext *avctx, AVFrame *frame)
 
static void compat_free_buffer (void *opaque, uint8_t *data)
 
static void compat_release_buffer (void *opaque, uint8_t *data)
 
FF_ENABLE_DEPRECATION_WARNINGS int ff_decode_frame_props (AVCodecContext *avctx, AVFrame *frame)
 Set various frame properties from the codec context / packet data. More...
 
int ff_get_buffer (AVCodecContext *avctx, AVFrame *frame, int flags)
 Get a buffer for a frame. More...
 
int ff_reget_buffer (AVCodecContext *avctx, AVFrame *frame)
 Identical in function to av_frame_make_writable(), except it uses ff_get_buffer() to allocate the buffer when needed. More...
 
void avcodec_default_release_buffer (AVCodecContext *s, AVFrame *pic)
 
int avcodec_default_reget_buffer (AVCodecContext *s, AVFrame *pic)
 
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 jobnr, int threadnr), void *arg, int *ret, int count)
 
static int is_hwaccel_pix_fmt (enum AVPixelFormat pix_fmt)
 
enum AVPixelFormat avcodec_default_get_format (struct AVCodecContext *s, const enum AVPixelFormat *fmt)
 
static AVHWAccelfind_hwaccel (enum AVCodecID codec_id, enum AVPixelFormat pix_fmt)
 
int ff_get_format (AVCodecContext *avctx, const enum AVPixelFormat *fmt)
 Select the (possibly hardware accelerated) pixel format. More...
 
int attribute_align_arg avcodec_open2 (AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options)
 Initialize the AVCodecContext to use the given AVCodec. More...
 
int ff_alloc_packet (AVPacket *avpkt, int size)
 Check AVPacket size and/or allocate data. More...
 
static int pad_last_frame (AVCodecContext *s, AVFrame **dst, const AVFrame *src)
 Pad last frame with silence. More...
 
int attribute_align_arg avcodec_encode_audio2 (AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
 Encode a frame of audio. More...
 
int attribute_align_arg avcodec_encode_video2 (AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
 Encode a frame of video. More...
 
int avcodec_encode_subtitle (AVCodecContext *avctx, uint8_t *buf, int buf_size, const AVSubtitle *sub)
 
static int apply_param_change (AVCodecContext *avctx, AVPacket *avpkt)
 
static int unrefcount_frame (AVCodecInternal *avci, AVFrame *frame)
 
int attribute_align_arg avcodec_decode_video2 (AVCodecContext *avctx, AVFrame *picture, int *got_picture_ptr, AVPacket *avpkt)
 Decode the video frame of size avpkt->size from avpkt->data into picture. More...
 
int attribute_align_arg avcodec_decode_audio4 (AVCodecContext *avctx, AVFrame *frame, int *got_frame_ptr, AVPacket *avpkt)
 Decode the audio frame of size avpkt->size from avpkt->data into frame. More...
 
int avcodec_decode_subtitle2 (AVCodecContext *avctx, AVSubtitle *sub, int *got_sub_ptr, AVPacket *avpkt)
 Decode a subtitle message. More...
 
void avsubtitle_free (AVSubtitle *sub)
 Free all allocated data in the given subtitle struct. More...
 
av_cold int avcodec_close (AVCodecContext *avctx)
 Close a given AVCodecContext and free all the data associated with it (but not the AVCodecContext itself). More...
 
static AVCodecfind_encdec (enum AVCodecID id, int encoder)
 
AVCodecavcodec_find_encoder (enum AVCodecID id)
 Find a registered encoder with a matching codec ID. More...
 
AVCodecavcodec_find_encoder_by_name (const char *name)
 Find a registered encoder with the specified name. More...
 
AVCodecavcodec_find_decoder (enum AVCodecID id)
 Find a registered decoder with a matching codec ID. More...
 
AVCodecavcodec_find_decoder_by_name (const char *name)
 Find a registered decoder with the specified name. More...
 
static int get_bit_rate (AVCodecContext *ctx)
 
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. More...
 
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. More...
 
unsigned avcodec_version (void)
 Return the LIBAVCODEC_VERSION_INT constant. More...
 
const char * avcodec_configuration (void)
 Return the libavcodec build-time configuration. More...
 
const char * avcodec_license (void)
 Return the libavcodec license. More...
 
void avcodec_flush_buffers (AVCodecContext *avctx)
 Reset the internal decoder state / flush internal buffers. More...
 
int av_get_exact_bits_per_sample (enum AVCodecID codec_id)
 Return codec bits per sample. More...
 
int av_get_bits_per_sample (enum AVCodecID codec_id)
 Return codec bits per sample. More...
 
int av_get_audio_frame_duration (AVCodecContext *avctx, int frame_bytes)
 Return audio frame duration. More...
 
int ff_thread_init (AVCodecContext *s)
 
unsigned int av_xiphlacing (unsigned char *s, unsigned int v)
 Encode extradata length to a buffer. More...
 
int ff_match_2uint16 (const uint16_t(*tab)[2], int size, int a, int b)
 Return the index into tab at which {a,b} match elements {[0],[1]} of tab. More...
 
FF_DISABLE_DEPRECATION_WARNINGS void av_log_missing_feature (void *avc, const char *feature, int want_sample)
 Log a generic warning message about a missing feature. More...
 
void av_log_ask_for_sample (void *avc, const char *msg,...)
 
void av_register_hwaccel (AVHWAccel *hwaccel)
 Register the hardware accelerator hwaccel. More...
 
AVHWAccelav_hwaccel_next (const 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. More...
 
int av_lockmgr_register (int(*cb)(void **mutex, enum AVLockOp op))
 Register a user provided lock manager supporting the operations specified by AVLockOp. More...
 
int avpriv_lock_avformat (void)
 
int avpriv_unlock_avformat (void)
 
unsigned int avpriv_toupper4 (unsigned int x)
 
int ff_thread_ref_frame (ThreadFrame *dst, ThreadFrame *src)
 
int ff_thread_get_buffer (AVCodecContext *avctx, ThreadFrame *f, int flags)
 Wrapper around get_buffer() for frame-multithreaded codecs. More...
 
void ff_thread_release_buffer (AVCodecContext *avctx, ThreadFrame *f)
 Wrapper around release_buffer() frame-for multithreaded codecs. More...
 
void ff_thread_finish_setup (AVCodecContext *avctx)
 If the codec defines update_thread_context(), call this when they are ready for the next thread to start decoding the next frame. More...
 
void ff_thread_report_progress (ThreadFrame *f, int progress, int field)
 Notify later decoding threads when part of their reference picture is ready. More...
 
void ff_thread_await_progress (ThreadFrame *f, int progress, int field)
 Wait for earlier decoding threads to finish reference pictures. More...
 
enum AVMediaType avcodec_get_type (enum AVCodecID codec_id)
 Get the type of the given codec. More...
 
int avcodec_is_open (AVCodecContext *s)
 
const uint8_tavpriv_find_start_code (const uint8_t *restrict p, const uint8_t *end, uint32_t *restrict state)
 

Variables

static int volatile entangled_thread_counter = 0
 
static int(* lockmgr_cb )(void **mutex, enum AVLockOp op)
 
static voidcodec_mutex
 
static voidavformat_mutex
 
static AVCodecfirst_avcodec = NULL
 
static FF_ENABLE_DEPRECATION_WARNINGS AVHWAccelfirst_hwaccel = NULL
 

Detailed Description

utils.

Definition in file utils.c.

Macro Definition Documentation

#define STRIDE_ALIGN   8

Definition at line 183 of file utils.c.

Referenced by avcodec_align_dimensions2().

#define WRAP_PLANE (   ref_out,
  data,
  data_size 
)
Value:
do { \
AVBufferRef *dummy_ref = av_buffer_ref(dummy_buf); \
if (!dummy_ref) { \
ret = AVERROR(ENOMEM); \
goto fail; \
} \
ref_out = av_buffer_create(data, data_size, compat_release_buffer, \
dummy_ref, 0); \
if (!ref_out) { \
av_frame_unref(frame); \
ret = AVERROR(ENOMEM); \
goto fail; \
} \
} while (0)
AVBufferRef * av_buffer_create(uint8_t *data, int size, void(*free)(void *opaque, uint8_t *data), void *opaque, int flags)
Create an AVBuffer from an existing array.
Definition: buffer.c:28
const char data[16]
Definition: mxf.c:70
static void compat_release_buffer(void *opaque, uint8_t *data)
Definition: utils.c:552
#define AVERROR(e)
Definition: error.h:43
if(ac->has_optimized_func)
void av_frame_unref(AVFrame *frame)
Unreference all the buffers referenced by frame and reset the frame fields.
Definition: frame.c:283
AVBufferRef * av_buffer_ref(AVBufferRef *buf)
Create a new reference to an AVBuffer.
Definition: buffer.c:92

Referenced by ff_get_buffer().

#define TAG_PRINT (   x)
Value:
(((x) >= '0' && (x) <= '9') || \
((x) >= 'a' && (x) <= 'z') || ((x) >= 'A' && (x) <= 'Z') || \
((x) == '.' || (x) == ' '))

Referenced by av_get_codec_tag_string().

#define LICENSE_PREFIX   "libavcodec license: "

Referenced by avcodec_license().

Function Documentation

static av_cold void avcodec_init ( void  )
static

Definition at line 83 of file utils.c.

Referenced by avcodec_register().

int ff_set_dimensions ( AVCodecContext s,
int  width,
int  height 
)
int ff_set_sar ( AVCodecContext avctx,
AVRational  sar 
)
int ff_side_data_update_matrix_encoding ( AVFrame frame,
enum AVMatrixEncoding  matrix_encoding 
)

Add or update AV_FRAME_DATA_MATRIXENCODING side data.

Definition at line 160 of file utils.c.

Referenced by ac3_decode_frame(), dca_decode_frame(), and output_data().

static int update_frame_pool ( AVCodecContext avctx,
AVFrame frame 
)
static

Definition at line 332 of file utils.c.

Referenced by avcodec_default_get_buffer2().

static int audio_get_buffer ( AVCodecContext avctx,
AVFrame frame 
)
static

Definition at line 428 of file utils.c.

Referenced by avcodec_default_get_buffer2().

static int video_get_buffer ( AVCodecContext s,
AVFrame pic 
)
static

Definition at line 471 of file utils.c.

Referenced by avcodec_default_get_buffer2().

static void compat_free_buffer ( void opaque,
uint8_t data 
)
static

Definition at line 544 of file utils.c.

Referenced by ff_get_buffer().

static void compat_release_buffer ( void opaque,
uint8_t data 
)
static

Definition at line 552 of file utils.c.

FF_ENABLE_DEPRECATION_WARNINGS int ff_decode_frame_props ( AVCodecContext avctx,
AVFrame frame 
)

Set various frame properties from the codec context / packet data.

Definition at line 560 of file utils.c.

Referenced by ff_get_buffer(), ff_reget_buffer(), and raw_decode().

int ff_get_buffer ( AVCodecContext avctx,
AVFrame frame,
int  flags 
)

Get a buffer for a frame.

This is a wrapper around AVCodecContext.get_buffer() and should be used instead calling get_buffer() directly.

Definition at line 612 of file utils.c.

Referenced by ac3_decode_frame(), adpcm_decode_frame(), adx_decode_frame(), aic_decode_frame(), amrnb_decode_frame(), amrwb_decode_frame(), ape_decode_frame(), atrac1_decode_frame(), atrac3_decode_frame(), atrac3p_decode_frame(), aura_decode_frame(), bfi_decode_frame(), bmp_decode_frame(), bmv_aud_decode_frame(), cdg_decode_frame(), cdxl_decode_frame(), cinaudio_decode_frame(), cllc_decode_frame(), cmv_decode_frame(), cng_decode_frame(), cook_decode_frame(), copy_output(), cyuv_decode_frame(), dca_decode_frame(), decode_element(), decode_frame(), decode_pic(), decode_tag(), dfa_decode_frame(), dnxhd_decode_frame(), dpcm_decode_frame(), dvvideo_decode_frame(), dxtory_decode_v1_410(), dxtory_decode_v1_420(), dxtory_decode_v1_444(), dxtory_decode_v1_rgb(), dxtory_decode_v2_410(), dxtory_decode_v2_420(), dxtory_decode_v2_444(), dxtory_decode_v2_565(), dxtory_decode_v2_rgb(), eightsvx_decode_frame(), escape124_decode_frame(), escape130_decode_frame(), execute_code(), fdk_aac_decode_frame(), ff_ivi_decode_frame(), ff_mjpeg_decode_sof(), ff_reget_buffer(), ff_thread_get_buffer(), ff_twinvq_decode_frame(), ff_vp56_decode_frame(), ffv1_decode_frame(), flac_decode_frame(), frame_configure_elements(), g2m_decode_frame(), g722_decode_frame(), g723_1_decode_frame(), get_buffer(), gif_decode_frame(), gsm_decode_frame(), hnm_decode_frame(), idcin_decode_frame(), ilbc_decode_frame(), imc_decode_frame(), init_image(), ipvideo_decode_frame(), libgsm_decode_frame(), libopus_decode(), libschroedinger_decode_frame(), libspeex_decode_frame(), mace_decode_frame(), mp_decode_frame(), mpc7_decode_frame(), mpc8_decode_frame(), mss2_decode_frame(), mxpeg_decode_frame(), on2avc_decode_frame(), opus_decode_packet(), output_data(), paf_audio_decode(), pcm_bluray_decode_frame(), pcm_decode_frame(), pcm_dvd_decode_frame(), pcx_decode_frame(), pix_decode_frame(), pnm_decode_frame(), ptx_decode_frame(), qcelp_decode_frame(), qdm2_decode_frame(), ra144_decode_frame(), ra288_decode_frame(), rl2_decode_frame(), roq_encode_frame(), s302m_decode_frame(), set_sps(), shorten_decode_frame(), sipr_decode_frame(), smka_decode_frame(), submit_packet(), sunrast_decode_frame(), svq1_decode_frame(), svq1_encode_frame(), synth_superframe(), tak_decode_frame(), tgq_decode_frame(), tgv_decode_frame(), tmv_decode_frame(), tqi_decode_frame(), truespeech_decode_frame(), tta_decode_frame(), txd_decode_frame(), v410_decode_frame(), vble_decode_frame(), vcr1_decode_frame(), vmdaudio_decode_frame(), vmdvideo_decode_frame(), vorbis_decode_frame(), vp8_decode(), vp9_decode_frame(), vqa_decode_frame(), wavpack_decode_block(), wma_decode_superframe(), ws_snd_decode_frame(), xan_decode_frame(), xbm_decode_frame(), xwd_decode_frame(), yop_decode_frame(), and zerocodec_decode_frame().

int ff_reget_buffer ( AVCodecContext avctx,
AVFrame frame 
)
int avcodec_default_execute2 ( AVCodecContext c,
int(*)(AVCodecContext *c2, void *arg2, int jobnr, int threadnr)  func,
void arg,
int *  ret,
int  count 
)

Definition at line 864 of file utils.c.

static int is_hwaccel_pix_fmt ( enum AVPixelFormat  pix_fmt)
static

Definition at line 876 of file utils.c.

Referenced by avcodec_default_get_format().

static AVHWAccel* find_hwaccel ( enum AVCodecID  codec_id,
enum AVPixelFormat  pix_fmt 
)
static

Definition at line 889 of file utils.c.

Referenced by ff_get_format().

int ff_get_format ( AVCodecContext avctx,
const enum AVPixelFormat fmt 
)

Select the (possibly hardware accelerated) pixel format.

This is a wrapper around AVCodecContext.get_format() and should be used instead of calling get_format() directly.

Definition at line 902 of file utils.c.

Referenced by decode_init(), ff_h263_decode_init(), get_pixel_format(), mpeg_get_pixelformat(), and vc1_decode_init().

int ff_alloc_packet ( AVPacket avpkt,
int  size 
)

Check AVPacket size and/or allocate data.

Encoders supporting AVCodec.encode2() can use this as a convenience to ensure the output packet data is large enough, whether provided by the user or allocated in this function.

Parameters
avpktthe AVPacket If avpkt->data is already set, avpkt->size is checked to ensure it is large enough. If avpkt->data is NULL, a new buffer is allocated. avpkt->size is set to the specified size. All other AVPacket fields will be reset with av_init_packet().
sizethe minimum required packet size
Returns
0 on success, negative error code on failure

Definition at line 1245 of file utils.c.

Referenced by a64multi_encode_frame(), aac_encode_frame(), adpcm_encode_frame(), adx_encode_frame(), alac_encode_frame(), amr_wb_encode_frame(), bmp_encode_frame(), cng_encode_frame(), dnxhd_encode_picture(), dvvideo_encode_frame(), encode_frame(), encode_nals(), encode_picture_ls(), encode_superframe(), Faac_encode_frame(), ff_mpv_encode_picture(), ffv1_encode_frame(), flac_encode_frame(), flashsv_encode_frame(), g722_encode_frame(), gif_encode_frame(), ilbc_encode_frame(), libgsm_encode_frame(), libopenjpeg_encode_frame(), libopus_encode(), libschroedinger_encode_frame(), libvorbis_encode_frame(), libwebp_encode_frame(), libx265_encode_frame(), ljpeg_encode_frame(), mp3lame_encode_frame(), MPA_encode_frame(), pam_encode_frame(), pcm_encode_frame(), pcx_encode_frame(), pnm_encode_frame(), qtrle_encode_frame(), ra144_encode_frame(), raw_encode(), roq_dpcm_encode_frame(), roq_encode_frame(), storeframe(), sunrast_encode_frame(), targa_encode_frame(), twolame_encode_frame(), utvideo_encode_frame(), v410_encode_frame(), vorbis_encode_frame(), XAVS_frame(), xbm_encode_frame(), and xwd_encode_frame().

static int pad_last_frame ( AVCodecContext s,
AVFrame **  dst,
const AVFrame src 
)
static

Pad last frame with silence.

Definition at line 1278 of file utils.c.

Referenced by avcodec_encode_audio2().

static int apply_param_change ( AVCodecContext avctx,
AVPacket avpkt 
)
static

Definition at line 1472 of file utils.c.

Referenced by avcodec_decode_audio4(), and avcodec_decode_video2().

static int unrefcount_frame ( AVCodecInternal avci,
AVFrame frame 
)
static

Definition at line 1529 of file utils.c.

Referenced by avcodec_decode_audio4(), and avcodec_decode_video2().

static AVCodec* find_encdec ( enum AVCodecID  id,
int  encoder 
)
static

Definition at line 1744 of file utils.c.

Referenced by avcodec_find_decoder(), and avcodec_find_encoder().

static int get_bit_rate ( AVCodecContext ctx)
static

Definition at line 1799 of file utils.c.

Referenced by avcodec_string().

int ff_thread_init ( AVCodecContext s)

Definition at line 2209 of file utils.c.

Referenced by avcodec_open2().

int ff_match_2uint16 ( const uint16_t(*)  tab[2],
int  size,
int  a,
int  b 
)

Return the index into tab at which {a,b} match elements {[0],[1]} of tab.

If there is no such matching pair then size is returned.

Definition at line 2230 of file utils.c.

Referenced by ff_h263_encode_picture_header(), ff_mpv_encode_init(), and svq1_write_header().

void av_log_ask_for_sample ( void avc,
const char *  msg,
  ... 
)

Definition at line 2249 of file utils.c.

Referenced by av_log_missing_feature().

int avpriv_lock_avformat ( void  )

Definition at line 2302 of file utils.c.

Referenced by avisynth_read_close(), avisynth_read_header(), ff_tls_deinit(), and ff_tls_init().

int avpriv_unlock_avformat ( void  )

Definition at line 2311 of file utils.c.

Referenced by avisynth_read_close(), avisynth_read_header(), ff_tls_deinit(), and ff_tls_init().

unsigned int avpriv_toupper4 ( unsigned int  x)

Definition at line 2320 of file utils.c.

Referenced by ff_codec_get_id(), ff_mpv_common_init(), and validate_codec_tag().

int ff_thread_ref_frame ( ThreadFrame dst,
ThreadFrame src 
)
int ff_thread_get_buffer ( AVCodecContext avctx,
ThreadFrame f,
int  flags 
)

Wrapper around get_buffer() for frame-multithreaded codecs.

Call this function instead of ff_get_buffer(f). Cannot be called after the codec has called ff_thread_finish_setup().

Parameters
avctxThe current context.
fThe frame to write into.

Definition at line 2349 of file utils.c.

void ff_thread_release_buffer ( AVCodecContext avctx,
ThreadFrame f 
)

Wrapper around release_buffer() frame-for multithreaded codecs.

Call this function instead of avctx->release_buffer(f). The AVFrame will be copied and the actual release_buffer() call will be performed later. The contents of data pointed to by the AVFrame should not be changed until ff_thread_get_buffer() is called on it.

Parameters
avctxThe current context.
fThe picture being released.

Definition at line 2355 of file utils.c.

Referenced by ff_thread_ref_frame().

void ff_thread_finish_setup ( AVCodecContext avctx)

If the codec defines update_thread_context(), call this when they are ready for the next thread to start decoding the next frame.

After calling it, do not change any variables read by the update_thread_context() method, or call ff_thread_get_buffer().

Parameters
avctxThe context.

Definition at line 2361 of file utils.c.

void ff_thread_report_progress ( ThreadFrame f,
int  progress,
int  field 
)

Notify later decoding threads when part of their reference picture is ready.

Call this when some part of the picture is finished decoding. Later calls with lower values of progress have no effect.

Parameters
fThe picture being decoded.
progressValue, in arbitrary units, of how much of the picture has decoded.
fieldThe field being decoded, for field-picture codecs. 0 for top field or frame pictures, 1 for bottom field.

Definition at line 2365 of file utils.c.

void ff_thread_await_progress ( ThreadFrame f,
int  progress,
int  field 
)

Wait for earlier decoding threads to finish reference pictures.

Call this before accessing some part of a picture, with a given value for progress, and it will return after the responsible decoding thread calls ff_thread_report_progress() with the same or higher value for progress.

Parameters
fThe picture being referenced.
progressValue, in arbitrary units, to wait for.
fieldThe field being referenced, for field-picture codecs. 0 for top field or frame pictures, 1 for bottom field.

Definition at line 2369 of file utils.c.

const uint8_t* avpriv_find_start_code ( const uint8_t *restrict  p,
const uint8_t end,
uint32_t *restrict  state 
)

Variable Documentation

int volatile entangled_thread_counter = 0
static

Definition at line 54 of file utils.c.

Referenced by avcodec_open2().

int(* lockmgr_cb) (void **mutex, enum AVLockOp op)
static
void* codec_mutex
static

Definition at line 56 of file utils.c.

Referenced by av_lockmgr_register(), and avcodec_open2().

void* avformat_mutex
static

Definition at line 57 of file utils.c.

Referenced by av_lockmgr_register(), avpriv_lock_avformat(), and avpriv_unlock_avformat().

AVCodec* first_avcodec = NULL
static

Definition at line 2266 of file utils.c.

Referenced by av_hwaccel_next(), and av_register_hwaccel().