FFmpeg
internal.h
Go to the documentation of this file.
1 /*
2  * This file is part of FFmpeg.
3  *
4  * FFmpeg is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * FFmpeg is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with FFmpeg; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17  */
18 
19 /**
20  * @file
21  * common internal api header.
22  */
23 
24 #ifndef AVCODEC_INTERNAL_H
25 #define AVCODEC_INTERNAL_H
26 
27 #include <stdint.h>
28 
29 #include "libavutil/buffer.h"
31 #include "libavutil/mathematics.h"
32 #include "libavutil/pixfmt.h"
33 #include "avcodec.h"
34 #include "config.h"
35 
36 /**
37  * The codec does not modify any global variables in the init function,
38  * allowing to call the init function without locking any global mutexes.
39  */
40 #define FF_CODEC_CAP_INIT_THREADSAFE (1 << 0)
41 /**
42  * The codec allows calling the close function for deallocation even if
43  * the init function returned a failure. Without this capability flag, a
44  * codec does such cleanup internally when returning failures from the
45  * init function and does not expect the close function to be called at
46  * all.
47  */
48 #define FF_CODEC_CAP_INIT_CLEANUP (1 << 1)
49 /**
50  * Decoders marked with FF_CODEC_CAP_SETS_PKT_DTS want to set
51  * AVFrame.pkt_dts manually. If the flag is set, decode.c won't overwrite
52  * this field. If it's unset, decode.c tries to guess the pkt_dts field
53  * from the input AVPacket.
54  */
55 #define FF_CODEC_CAP_SETS_PKT_DTS (1 << 2)
56 /**
57  * The decoder extracts and fills its parameters even if the frame is
58  * skipped due to the skip_frame setting.
59  */
60 #define FF_CODEC_CAP_SKIP_FRAME_FILL_PARAM (1 << 3)
61 /**
62  * The decoder sets the cropping fields in the output frames manually.
63  * If this cap is set, the generic code will initialize output frame
64  * dimensions to coded rather than display values.
65  */
66 #define FF_CODEC_CAP_EXPORTS_CROPPING (1 << 4)
67 /**
68  * Codec initializes slice-based threading with a main function
69  */
70 #define FF_CODEC_CAP_SLICE_THREAD_HAS_MF (1 << 5)
71 
72 #ifdef TRACE
73 # define ff_tlog(ctx, ...) av_log(ctx, AV_LOG_TRACE, __VA_ARGS__)
74 #else
75 # define ff_tlog(ctx, ...) do { } while(0)
76 #endif
77 
78 
79 #define FF_DEFAULT_QUANT_BIAS 999999
80 
81 #define FF_QSCALE_TYPE_MPEG1 0
82 #define FF_QSCALE_TYPE_MPEG2 1
83 #define FF_QSCALE_TYPE_H264 2
84 #define FF_QSCALE_TYPE_VP56 3
85 
86 #define FF_SANE_NB_CHANNELS 256U
87 
88 #define FF_SIGNBIT(x) ((x) >> CHAR_BIT * sizeof(x) - 1)
89 
90 #if HAVE_SIMD_ALIGN_64
91 # define STRIDE_ALIGN 64 /* AVX-512 */
92 #elif HAVE_SIMD_ALIGN_32
93 # define STRIDE_ALIGN 32
94 #elif HAVE_SIMD_ALIGN_16
95 # define STRIDE_ALIGN 16
96 #else
97 # define STRIDE_ALIGN 8
98 #endif
99 
100 typedef struct FramePool {
101  /**
102  * Pools for each data plane. For audio all the planes have the same size,
103  * so only pools[0] is used.
104  */
106 
107  /*
108  * Pool parameters
109  */
110  int format;
111  int width, height;
113  int linesize[4];
114  int planes;
115  int channels;
116  int samples;
117 } FramePool;
118 
119 typedef struct DecodeSimpleContext {
123 
124 typedef struct DecodeFilterContext {
126  int nb_bsfs;
128 
129 typedef struct AVCodecInternal {
130  /**
131  * Whether the parent AVCodecContext is a copy of the context which had
132  * init() called on it.
133  * This is used by multithreading - shared tables and picture pointers
134  * should be freed from the original context only.
135  */
136  int is_copy;
137 
138  /**
139  * Whether to allocate progress for frame threading.
140  *
141  * The codec must set it to 1 if it uses ff_thread_await/report_progress(),
142  * then progress will be allocated in ff_thread_get_buffer(). The frames
143  * then MUST be freed with ff_thread_release_buffer().
144  *
145  * If the codec does not need to call the progress functions (there are no
146  * dependencies between the frames), it should leave this at 0. Then it can
147  * decode straight to the user-provided frames (which the user will then
148  * free with av_frame_unref()), there is no need to call
149  * ff_thread_release_buffer().
150  */
152 
153  /**
154  * An audio frame with less than required samples has been submitted and
155  * padded with silence. Reject all subsequent frames.
156  */
158 
160 
162 
163  void *thread_ctx;
164 
167 
168  /**
169  * Properties (timestamps+side data) extracted from the last packet passed
170  * for decoding.
171  */
173 
174  /**
175  * temporary buffer used for encoders to store their bitstream
176  */
178  unsigned int byte_buffer_size;
179 
181 
182  /**
183  * Number of audio samples to skip at the start of the next decoded frame
184  */
186 
187  /**
188  * hwaccel-specific private data
189  */
191 
192  /**
193  * checks API usage: after codec draining, flush is required to resume operation
194  */
195  int draining;
196 
197  /**
198  * buffers for using new encode/decode API through legacy API
199  */
201  int buffer_pkt_valid; // encoding: packet without data can be valid
204  /* set to 1 when the caller is using the old decoding API */
207  /* this variable is set by the decoder internals to signal to the old
208  * API compat wrappers the amount of data consumed from the last packet */
210  /* when a partial packet has been consumed, this stores the remaining size
211  * of the packet (that should be submitted in the next decode call */
214 
216 
218 
219  /* to prevent infinite loop on errors when draining */
221 
222  /* used when avctx flag AV_CODEC_FLAG_DROPCHANGED is set */
230 
232  const uint8_t *key;
233  const uint8_t *value;
234 };
235 
236 extern const uint8_t ff_log2_run[41];
237 
238 /**
239  * Return the index into tab at which {a,b} match elements {[0],[1]} of tab.
240  * If there is no such matching pair then size is returned.
241  */
242 int ff_match_2uint16(const uint16_t (*tab)[2], int size, int a, int b);
243 
244 unsigned int avpriv_toupper4(unsigned int x);
245 
246 void ff_color_frame(AVFrame *frame, const int color[4]);
247 
248 /**
249  * Maximum size in bytes of extradata.
250  * This value was chosen such that every bit of the buffer is
251  * addressable by a 32-bit signed integer as used by get_bits.
252  */
253 #define FF_MAX_EXTRADATA_SIZE ((1 << 28) - AV_INPUT_BUFFER_PADDING_SIZE)
254 
255 /**
256  * Check AVPacket size and/or allocate data.
257  *
258  * Encoders supporting AVCodec.encode2() can use this as a convenience to
259  * ensure the output packet data is large enough, whether provided by the user
260  * or allocated in this function.
261  *
262  * @param avctx the AVCodecContext of the encoder
263  * @param avpkt the AVPacket
264  * If avpkt->data is already set, avpkt->size is checked
265  * to ensure it is large enough.
266  * If avpkt->data is NULL, a new buffer is allocated.
267  * avpkt->size is set to the specified size.
268  * All other AVPacket fields will be reset with av_init_packet().
269  * @param size the minimum required packet size
270  * @param min_size This is a hint to the allocation algorithm, which indicates
271  * to what minimal size the caller might later shrink the packet
272  * to. Encoders often allocate packets which are larger than the
273  * amount of data that is written into them as the exact amount is
274  * not known at the time of allocation. min_size represents the
275  * size a packet might be shrunk to by the caller. Can be set to
276  * 0. setting this roughly correctly allows the allocation code
277  * to choose between several allocation strategies to improve
278  * speed slightly.
279  * @return non negative on success, negative error code on failure
280  */
281 int ff_alloc_packet2(AVCodecContext *avctx, AVPacket *avpkt, int64_t size, int64_t min_size);
282 
284 
285 /**
286  * Rescale from sample rate to AVCodecContext.time_base.
287  */
289  int64_t samples)
290 {
291  if(samples == AV_NOPTS_VALUE)
292  return AV_NOPTS_VALUE;
293  return av_rescale_q(samples, (AVRational){ 1, avctx->sample_rate },
294  avctx->time_base);
295 }
296 
297 /**
298  * 2^(x) for integer x
299  * @return correctly rounded float
300  */
301 static av_always_inline float ff_exp2fi(int x) {
302  /* Normal range */
303  if (-126 <= x && x <= 128)
304  return av_int2float((x+127) << 23);
305  /* Too large */
306  else if (x > 128)
307  return INFINITY;
308  /* Subnormal numbers */
309  else if (x > -150)
310  return av_int2float(1 << (x+149));
311  /* Negligibly small */
312  else
313  return 0;
314 }
315 
316 /**
317  * Get a buffer for a frame. This is a wrapper around
318  * AVCodecContext.get_buffer() and should be used instead calling get_buffer()
319  * directly.
320  */
321 int ff_get_buffer(AVCodecContext *avctx, AVFrame *frame, int flags);
322 
323 /**
324  * Identical in function to av_frame_make_writable(), except it uses
325  * ff_get_buffer() to allocate the buffer when needed.
326  */
328 
330 
332 
333 /**
334  * Call avcodec_open2 recursively by decrementing counter, unlocking mutex,
335  * calling the function and then restoring again. Assumes the mutex is
336  * already locked
337  */
339 
340 /**
341  * Finalize buf into extradata and set its size appropriately.
342  */
343 int avpriv_bprint_to_extradata(AVCodecContext *avctx, struct AVBPrint *buf);
344 
345 const uint8_t *avpriv_find_start_code(const uint8_t *p,
346  const uint8_t *end,
347  uint32_t *state);
348 
350 
351 /**
352  * Check that the provided frame dimensions are valid and set them on the codec
353  * context.
354  */
356 
357 /**
358  * Check that the provided sample aspect ratio is valid and set it on the codec
359  * context.
360  */
361 int ff_set_sar(AVCodecContext *avctx, AVRational sar);
362 
363 /**
364  * Add or update AV_FRAME_DATA_MATRIXENCODING side data.
365  */
367  enum AVMatrixEncoding matrix_encoding);
368 
369 /**
370  * Select the (possibly hardware accelerated) pixel format.
371  * This is a wrapper around AVCodecContext.get_format() and should be used
372  * instead of calling get_format() directly.
373  *
374  * The list of pixel formats must contain at least one valid entry, and is
375  * terminated with AV_PIX_FMT_NONE. If it is possible to decode to software,
376  * the last entry in the list must be the most accurate software format.
377  * If it is not possible to decode to software, AVCodecContext.sw_pix_fmt
378  * must be set before calling this function.
379  */
380 int ff_get_format(AVCodecContext *avctx, const enum AVPixelFormat *fmt);
381 
382 /**
383  * Set various frame properties from the codec context / packet data.
384  */
386 
387 /**
388  * Add a CPB properties side data to an encoding context.
389  */
391 
392 int ff_side_data_set_encoder_stats(AVPacket *pkt, int quality, int64_t *error, int error_count, int pict_type);
393 
394 /**
395  * Check AVFrame for A53 side data and allocate and fill SEI message with A53 info
396  *
397  * @param frame Raw frame to get A53 side data from
398  * @param prefix_len Number of bytes to allocate before SEI message
399  * @param data Pointer to a variable to store allocated memory
400  * Upon return the variable will hold NULL on error or if frame has no A53 info.
401  * Otherwise it will point to prefix_len uninitialized bytes followed by
402  * *sei_size SEI message
403  * @param sei_size Pointer to a variable to store generated SEI message length
404  * @return Zero on success, negative error code on failure
405  */
406 int ff_alloc_a53_sei(const AVFrame *frame, size_t prefix_len,
407  void **data, size_t *sei_size);
408 
409 /**
410  * Get an estimated video bitrate based on frame size, frame rate and coded
411  * bits per pixel.
412  */
413 int64_t ff_guess_coded_bitrate(AVCodecContext *avctx);
414 
415 /**
416  * Check if a value is in the list. If not, return the default value
417  *
418  * @param ctx Context for the log msg
419  * @param val_name Name of the checked value, for log msg
420  * @param array_valid_values Array of valid int, ended with INT_MAX
421  * @param default_value Value return if checked value is not in the array
422  * @return Value or default_value.
423  */
424 int ff_int_from_list_or_default(void *ctx, const char * val_name, int val,
425  const int * array_valid_values, int default_value);
426 
427 #if defined(_WIN32) && CONFIG_SHARED && !defined(BUILDING_avcodec)
428 # define av_export_avcodec __declspec(dllimport)
429 #else
430 # define av_export_avcodec
431 #endif
432 
433 #endif /* AVCODEC_INTERNAL_H */
ff_guess_coded_bitrate
int64_t ff_guess_coded_bitrate(AVCodecContext *avctx)
Get an estimated video bitrate based on frame size, frame rate and coded bits per pixel.
Definition: utils.c:2255
AVCodecInternal::initial_sample_rate
int initial_sample_rate
Definition: internal.h:226
avpriv_bprint_to_extradata
int avpriv_bprint_to_extradata(AVCodecContext *avctx, struct AVBPrint *buf)
Finalize buf into extradata and set its size appropriately.
Definition: utils.c:1943
AVCodec
AVCodec.
Definition: avcodec.h:3481
AVCodecDefault::value
const uint8_t * value
Definition: internal.h:233
AVPixelFormat
AVPixelFormat
Pixel format.
Definition: pixfmt.h:64
INFINITY
#define INFINITY
Definition: mathematics.h:67
AVCodecContext::sample_rate
int sample_rate
samples per second
Definition: avcodec.h:2225
color
Definition: vf_paletteuse.c:588
AVBufferPool
The buffer pool.
Definition: buffer_internal.h:76
ff_thread_can_start_frame
int ff_thread_can_start_frame(AVCodecContext *avctx)
Definition: pthread_frame.c:872
FramePool::planes
int planes
Definition: internal.h:114
AVCodecInternal::skip_samples
int skip_samples
Number of audio samples to skip at the start of the next decoded frame.
Definition: internal.h:185
ff_side_data_set_encoder_stats
int ff_side_data_set_encoder_stats(AVPacket *pkt, int quality, int64_t *error, int error_count, int pict_type)
Definition: avpacket.c:720
AVCodecDefault::key
const uint8_t * key
Definition: internal.h:232
end
static av_cold int end(AVCodecContext *avctx)
Definition: avrndec.c:90
AVFrame
This structure describes decoded (raw) audio or video data.
Definition: frame.h:295
FramePool::pools
AVBufferPool * pools[4]
Pools for each data plane.
Definition: internal.h:105
avpriv_toupper4
unsigned int avpriv_toupper4(unsigned int x)
Definition: utils.c:1853
AVCodecInternal::frame_thread_encoder
void * frame_thread_encoder
Definition: internal.h:180
b
#define b
Definition: input.c:41
data
const char data[16]
Definition: mxf.c:91
AVCodecInternal::compat_decode_consumed
size_t compat_decode_consumed
Definition: internal.h:209
FramePool::channels
int channels
Definition: internal.h:115
FramePool::height
int height
Definition: internal.h:111
mathematics.h
avpriv_find_start_code
const uint8_t * avpriv_find_start_code(const uint8_t *p, const uint8_t *end, uint32_t *state)
AVDictionary
Definition: dict.c:30
AVCodecInternal::compat_decode_partial_size
size_t compat_decode_partial_size
Definition: internal.h:212
FramePool::stride_align
int stride_align[AV_NUM_DATA_POINTERS]
Definition: internal.h:112
ff_add_cpb_side_data
AVCPBProperties * ff_add_cpb_side_data(AVCodecContext *avctx)
Add a CPB properties side data to an encoding context.
Definition: utils.c:2013
AVCodecInternal::compat_decode_warned
int compat_decode_warned
Definition: internal.h:206
AVBSFContext
The bitstream filter state.
Definition: avcodec.h:5763
quality
trying all byte sequences megabyte in length and selecting the best looking sequence will yield cases to try But a word about quality
Definition: rate_distortion.txt:12
AVCodecInternal::initial_channel_layout
uint64_t initial_channel_layout
Definition: internal.h:228
AVCodecInternal::is_copy
int is_copy
Whether the parent AVCodecContext is a copy of the context which had init() called on it.
Definition: internal.h:136
fmt
const char * fmt
Definition: avisynth_c.h:861
ff_match_2uint16
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.
Definition: utils.c:1817
AVCodecInternal::showed_multi_packet_warning
int showed_multi_packet_warning
Definition: internal.h:215
av_int2float
static av_always_inline float av_int2float(uint32_t i)
Reinterpret a 32-bit integer as a float.
Definition: intfloat.h:40
DecodeFilterContext
Definition: internal.h:124
tab
static const struct twinvq_data tab
Definition: twinvq_data.h:11135
ff_get_buffer
int ff_get_buffer(AVCodecContext *avctx, AVFrame *frame, int flags)
Get a buffer for a frame.
Definition: decode.c:1965
DecodeFilterContext::nb_bsfs
int nb_bsfs
Definition: internal.h:126
ff_samples_to_time_base
static av_always_inline int64_t ff_samples_to_time_base(AVCodecContext *avctx, int64_t samples)
Rescale from sample rate to AVCodecContext.time_base.
Definition: internal.h:288
state
static struct @313 state
ff_exp2fi
static av_always_inline float ff_exp2fi(int x)
2^(x) for integer x
Definition: internal.h:301
buf
void * buf
Definition: avisynth_c.h:766
ff_color_frame
void ff_color_frame(AVFrame *frame, const int color[4])
Definition: utils.c:422
AVCodecInternal::to_free
AVFrame * to_free
Definition: internal.h:159
width
#define width
s
#define s(width, name)
Definition: cbs_vp9.c:257
AVCodecInternal::buffer_pkt
AVPacket * buffer_pkt
buffers for using new encode/decode API through legacy API
Definition: internal.h:200
AVCodecInternal::compat_decode_frame
AVFrame * compat_decode_frame
Definition: internal.h:213
ctx
AVFormatContext * ctx
Definition: movenc.c:48
av_rescale_q
int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq)
Rescale a 64-bit integer by 2 rational numbers.
Definition: mathematics.c:142
FramePool::format
int format
Definition: internal.h:110
ff_alloc_a53_sei
int ff_alloc_a53_sei(const AVFrame *frame, size_t prefix_len, void **data, size_t *sei_size)
Check AVFrame for A53 side data and allocate and fill SEI message with A53 info.
Definition: utils.c:2212
AVCodecInternal::ds
DecodeSimpleContext ds
Definition: internal.h:165
AVCPBProperties
This structure describes the bitrate properties of an encoded bitstream.
Definition: avcodec.h:1128
AVCodecDefault
Definition: internal.h:231
AVMatrixEncoding
AVMatrixEncoding
Definition: channel_layout.h:114
AVCodecInternal::changed_frames_dropped
int changed_frames_dropped
Definition: internal.h:223
FramePool::width
int width
Definition: internal.h:111
ff_get_format
int ff_get_format(AVCodecContext *avctx, const enum AVPixelFormat *fmt)
Select the (possibly hardware accelerated) pixel format.
Definition: decode.c:1371
AVRational
Rational number (pair of numerator and denominator).
Definition: rational.h:58
FramePool::linesize
int linesize[4]
Definition: internal.h:113
AVCodecInternal::initial_height
int initial_height
Definition: internal.h:225
AVCodecInternal::skip_samples_multiplier
int skip_samples_multiplier
Definition: internal.h:217
AVCodecInternal::draining_done
int draining_done
Definition: internal.h:203
AVCodecInternal::last_pkt_props
AVPacket * last_pkt_props
Properties (timestamps+side data) extracted from the last packet passed for decoding.
Definition: internal.h:172
error
static void error(const char *err)
Definition: target_dec_fuzzer.c:61
AVCodecContext::time_base
AVRational time_base
This is the fundamental unit of time (in seconds) in terms of which frame timestamps are represented.
Definition: avcodec.h:1688
options
const OptionDef options[]
ff_codec_open2_recursive
int ff_codec_open2_recursive(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options)
Call avcodec_open2 recursively by decrementing counter, unlocking mutex, calling the function and the...
Definition: utils.c:553
AVCodecInternal::hwaccel_priv_data
void * hwaccel_priv_data
hwaccel-specific private data
Definition: internal.h:190
AVCodecInternal::allocate_progress
int allocate_progress
Whether to allocate progress for frame threading.
Definition: internal.h:151
AVCodecInternal::initial_channels
int initial_channels
Definition: internal.h:227
AVCodecInternal::initial_format
int initial_format
Definition: internal.h:224
size
int size
Definition: twinvq_data.h:11134
AV_NUM_DATA_POINTERS
#define AV_NUM_DATA_POINTERS
Definition: frame.h:296
AV_NOPTS_VALUE
#define AV_NOPTS_VALUE
Undefined timestamp value.
Definition: avutil.h:248
DecodeSimpleContext::out_frame
AVFrame * out_frame
Definition: internal.h:121
AVCodecInternal::pool
FramePool * pool
Definition: internal.h:161
AVCodecInternal::byte_buffer
uint8_t * byte_buffer
temporary buffer used for encoders to store their bitstream
Definition: internal.h:177
val
const char const char void * val
Definition: avisynth_c.h:863
DecodeSimpleContext
Definition: internal.h:119
buffer.h
attribute_deprecated
#define attribute_deprecated
Definition: attributes.h:98
height
#define height
a
The reader does not expect b to be semantically here and if the code is changed by maybe adding a a division or other the signedness will almost certainly be mistaken To avoid this confusion a new type was SUINT is the C unsigned type but it holds a signed int to use the same example SUINT a
Definition: undefined.txt:41
ff_alloc_packet
attribute_deprecated int ff_alloc_packet(AVPacket *avpkt, int size)
Definition: encode.c:73
AVCodecInternal
Definition: internal.h:129
AVCodecInternal::byte_buffer_size
unsigned int byte_buffer_size
Definition: internal.h:178
ff_reget_buffer
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 buf...
Definition: decode.c:2012
AVCodecInternal::compat_decode
int compat_decode
Definition: internal.h:205
AVCodecInternal::initial_width
int initial_width
Definition: internal.h:225
av_always_inline
#define av_always_inline
Definition: attributes.h:43
uint8_t
uint8_t
Definition: audio_convert.c:194
AVCodecInternal::nb_draining_errors
int nb_draining_errors
Definition: internal.h:220
AVCodecInternal::last_audio_frame
int last_audio_frame
An audio frame with less than required samples has been submitted and padded with silence.
Definition: internal.h:157
avcodec.h
pixfmt.h
frame
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several the filter must be ready for frames arriving randomly on any input any filter with several inputs will most likely require some kind of queuing mechanism It is perfectly acceptable to have a limited queue and to drop frames when the inputs are too unbalanced request_frame For filters that do not use the this method is called when a frame is wanted on an output For a it should directly call filter_frame on the corresponding output For a if there are queued frames already one of these frames should be pushed If the filter should request a frame on one of its repeatedly until at least one frame has been pushed Return or at least make progress towards producing a frame
Definition: filter_design.txt:264
AVCodecInternal::filter
DecodeFilterContext filter
Definition: internal.h:166
FramePool
Definition: internal.h:100
DecodeFilterContext::bsfs
AVBSFContext ** bsfs
Definition: internal.h:125
ff_set_sar
int ff_set_sar(AVCodecContext *avctx, AVRational sar)
Check that the provided sample aspect ratio is valid and set it on the codec context.
Definition: utils.c:119
AVCodecContext
main external API structure.
Definition: avcodec.h:1565
ff_decode_frame_props
int ff_decode_frame_props(AVCodecContext *avctx, AVFrame *frame)
Set various frame properties from the codec context / packet data.
Definition: decode.c:1738
channel_layout.h
pkt
static AVPacket pkt
Definition: demuxing_decoding.c:54
config.h
ff_log2_run
const uint8_t ff_log2_run[41]
Definition: bitstream.c:39
samples
Filter the word “frame” indicates either a video frame or a group of audio samples
Definition: filter_design.txt:8
AVCodecInternal::buffer_frame
AVFrame * buffer_frame
Definition: internal.h:202
AVCodecInternal::draining
int draining
checks API usage: after codec draining, flush is required to resume operation
Definition: internal.h:195
ff_side_data_update_matrix_encoding
int ff_side_data_update_matrix_encoding(AVFrame *frame, enum AVMatrixEncoding matrix_encoding)
Add or update AV_FRAME_DATA_MATRIXENCODING side data.
Definition: utils.c:134
ff_set_dimensions
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.
Definition: utils.c:104
AVCodecInternal::buffer_pkt_valid
int buffer_pkt_valid
Definition: internal.h:201
ff_alloc_packet2
int ff_alloc_packet2(AVCodecContext *avctx, AVPacket *avpkt, int64_t size, int64_t min_size)
Check AVPacket size and/or allocate data.
Definition: encode.c:32
AVPacket
This structure stores compressed data.
Definition: avcodec.h:1454
AVCodecInternal::thread_ctx
void * thread_ctx
Definition: internal.h:163
flags
#define flags(name, subs,...)
Definition: cbs_av1.c:565
DecodeSimpleContext::in_pkt
AVPacket * in_pkt
Definition: internal.h:120
avpriv_h264_has_num_reorder_frames
int avpriv_h264_has_num_reorder_frames(AVCodecContext *avctx)
Definition: h264dec.c:60
FramePool::samples
int samples
Definition: internal.h:116
avpriv_codec_get_cap_skip_frame_fill_param
int avpriv_codec_get_cap_skip_frame_fill_param(const AVCodec *codec)
Definition: utils.c:506
ff_int_from_list_or_default
int ff_int_from_list_or_default(void *ctx, const char *val_name, int val, const int *array_valid_values, int default_value)
Check if a value is in the list.
Definition: utils.c:2276