Thanks to visit codestin.com
Credit goes to www.ffmpeg.org

FFmpeg
frame.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  * @ingroup lavu_frame
22  * reference-counted frame API
23  */
24 
25 #ifndef AVUTIL_FRAME_H
26 #define AVUTIL_FRAME_H
27 
28 #include <stddef.h>
29 #include <stdint.h>
30 
31 #include "avutil.h"
32 #include "buffer.h"
33 #include "channel_layout.h"
34 #include "dict.h"
35 #include "rational.h"
36 #include "samplefmt.h"
37 #include "pixfmt.h"
38 #include "version.h"
39 
40 
41 /**
42  * @defgroup lavu_frame AVFrame
43  * @ingroup lavu_data
44  *
45  * @{
46  * AVFrame is an abstraction for reference-counted raw multimedia data.
47  */
48 
50  /**
51  * The data is the AVPanScan struct defined in libavcodec.
52  */
54  /**
55  * ATSC A53 Part 4 Closed Captions.
56  * A53 CC bitstream is stored as uint8_t in AVFrameSideData.data.
57  * The number of bytes of CC data is AVFrameSideData.size.
58  */
60  /**
61  * Stereoscopic 3d metadata.
62  * The data is the AVStereo3D struct defined in libavutil/stereo3d.h.
63  */
65  /**
66  * The data is the AVMatrixEncoding enum defined in libavutil/channel_layout.h.
67  */
69  /**
70  * Metadata relevant to a downmix procedure.
71  * The data is the AVDownmixInfo struct defined in libavutil/downmix_info.h.
72  */
74  /**
75  * ReplayGain information in the form of the AVReplayGain struct.
76  */
78  /**
79  * This side data contains a 3x3 transformation matrix describing an affine
80  * transformation that needs to be applied to the frame for correct
81  * presentation.
82  *
83  * See libavutil/display.h for a detailed description of the data.
84  */
86  /**
87  * Active Format Description data consisting of a single byte as specified
88  * in ETSI TS 101 154 using AVActiveFormatDescription enum.
89  */
91  /**
92  * Motion vectors exported by some codecs (on demand through the export_mvs
93  * flag set in the libavcodec AVCodecContext flags2 option).
94  * The data is the AVMotionVector struct defined in
95  * libavutil/motion_vector.h.
96  */
98  /**
99  * Recommends skipping the specified number of samples. This is exported
100  * only if the "skip_manual" AVOption is set in libavcodec.
101  * This has the same format as AV_PKT_DATA_SKIP_SAMPLES.
102  * @code
103  * u32le number of samples to skip from start of this packet
104  * u32le number of samples to skip from end of this packet
105  * u8 reason for start skip
106  * u8 reason for end skip (0=padding silence, 1=convergence)
107  * @endcode
108  */
110  /**
111  * This side data must be associated with an audio frame and corresponds to
112  * enum AVAudioServiceType defined in avcodec.h.
113  */
115  /**
116  * Mastering display metadata associated with a video frame. The payload is
117  * an AVMasteringDisplayMetadata type and contains information about the
118  * mastering display color volume.
119  */
121  /**
122  * The GOP timecode in 25 bit timecode format. Data format is 64-bit integer.
123  * This is set on the first frame of a GOP that has a temporal reference of 0.
124  */
126 
127  /**
128  * The data represents the AVSphericalMapping structure defined in
129  * libavutil/spherical.h.
130  */
132 
133  /**
134  * Content light level (based on CTA-861.3). This payload contains data in
135  * the form of the AVContentLightMetadata struct.
136  */
138 
139  /**
140  * The data contains an ICC profile as an opaque octet buffer following the
141  * format described by ISO 15076-1 with an optional name defined in the
142  * metadata key entry "name".
143  */
145 
146  /**
147  * Timecode which conforms to SMPTE ST 12-1. The data is an array of 4 uint32_t
148  * where the first uint32_t describes how many (1-3) of the other timecodes are used.
149  * The timecode format is described in the documentation of av_timecode_get_smpte_from_framenum()
150  * function in libavutil/timecode.h.
151  */
153 
154  /**
155  * HDR dynamic metadata associated with a video frame. The payload is
156  * an AVDynamicHDRPlus type and contains information for color
157  * volume transform - application 4 of SMPTE 2094-40:2016 standard.
158  */
160 
161  /**
162  * Regions Of Interest, the data is an array of AVRegionOfInterest type, the number of
163  * array element is implied by AVFrameSideData.size / AVRegionOfInterest.self_size.
164  */
166 
167  /**
168  * Encoding parameters for a video frame, as described by AVVideoEncParams.
169  */
171 
172  /**
173  * User data unregistered metadata associated with a video frame.
174  * This is the H.26[45] UDU SEI message, and shouldn't be used for any other purpose
175  * The data is stored as uint8_t in AVFrameSideData.data which is 16 bytes of
176  * uuid_iso_iec_11578 followed by AVFrameSideData.size - 16 bytes of user_data_payload_byte.
177  */
179 
180  /**
181  * Film grain parameters for a frame, described by AVFilmGrainParams.
182  * Must be present for every frame which should have film grain applied.
183  *
184  * May be present multiple times, for example when there are multiple
185  * alternative parameter sets for different video signal characteristics.
186  * The user should select the most appropriate set for the application.
187  */
189 
190  /**
191  * Bounding boxes for object detection and classification,
192  * as described by AVDetectionBBoxHeader.
193  */
195 
196  /**
197  * Dolby Vision RPU raw data, suitable for passing to x265
198  * or other libraries. Array of uint8_t, with NAL emulation
199  * bytes intact.
200  */
202 
203  /**
204  * Parsed Dolby Vision metadata, suitable for passing to a software
205  * implementation. The payload is the AVDOVIMetadata struct defined in
206  * libavutil/dovi_meta.h.
207  */
209 
210  /**
211  * HDR Vivid dynamic metadata associated with a video frame. The payload is
212  * an AVDynamicHDRVivid type and contains information for color
213  * volume transform - CUVA 005.1-2021.
214  */
216 
217  /**
218  * Ambient viewing environment metadata, as defined by H.274.
219  */
221 
222  /**
223  * Provide encoder-specific hinting information about changed/unchanged
224  * portions of a frame. It can be used to pass information about which
225  * macroblocks can be skipped because they didn't change from the
226  * corresponding ones in the previous frame. This could be useful for
227  * applications which know this information in advance to speed up
228  * encoding.
229  */
231 
232  /**
233  * Raw LCEVC payload data, as a uint8_t array, with NAL emulation
234  * bytes intact.
235  */
237 
238  /**
239  * This side data must be associated with a video frame.
240  * The presence of this side data indicates that the video stream is
241  * composed of multiple views (e.g. stereoscopic 3D content,
242  * cf. H.264 Annex H or H.265 Annex G).
243  * The data is an int storing the view ID.
244  */
246 
247  /**
248  * This side data contains information about the reference display width(s)
249  * and reference viewing distance(s) as well as information about the
250  * corresponding reference stereo pair(s), i.e., the pair(s) of views to be
251  * displayed for the viewer's left and right eyes on the reference display
252  * at the reference viewing distance.
253  * The payload is the AV3DReferenceDisplaysInfo struct defined in
254  * libavutil/tdrdi.h.
255  */
257 
258  /**
259  * Exchangeable image file format metadata. The payload is a buffer containing
260  * EXIF metadata, starting with either 49 49 2a 00, or 4d 4d 00 2a. These four
261  * bytes signify the endianness, and occur as the first part of the TIFF header.
262  */
264 
265  /**
266  * HDR dynamic metadata associated with a video frame. The payload is
267  * an AVDynamicHDRSmpte2094App5 type and contains information for color
268  * volume transform as specified in the SMPTE 2094-50 standard.
269  */
271 
272  /**
273  * IAMF Mix Gain Parameter Data associated with the audio frame. This metadata
274  * is in the form of the AVIAMFParamDefinition struct and contains information
275  * defined in sections 3.6.1 and 3.8.1 of the Immersive Audio Model and
276  * Formats standard.
277  */
279 
280  /**
281  * IAMF Demixing Info Parameter Data associated with the audio frame. This
282  * metadata is in the form of the AVIAMFParamDefinition struct and contains
283  * information defined in sections 3.6.1 and 3.8.2 of the Immersive Audio Model
284  * and Formats standard.
285  */
287 
288  /**
289  * IAMF Recon Gain Info Parameter Data associated with the audio frame. This
290  * metadata is in the form of the AVIAMFParamDefinition struct and contains
291  * information defined in sections 3.6.1 and 3.8.3 of the Immersive Audio Model
292  * and Formats standard.
293  */
295 };
296 
305 };
306 
307 
308 /**
309  * Structure to hold side data for an AVFrame.
310  *
311  * sizeof(AVFrameSideData) is not a part of the public ABI, so new fields may be added
312  * to the end with a minor bump.
313  */
314 typedef struct AVFrameSideData {
316  uint8_t *data;
317  size_t size;
321 
323  /**
324  * The side data type can be used in stream-global structures.
325  * Side data types without this property are only meaningful on per-frame
326  * basis.
327  */
329 
330  /**
331  * Multiple instances of this side data type can be meaningfully present in
332  * a single side data array.
333  */
335 
336  /**
337  * Side data depends on the video dimensions. Side data with this property
338  * loses its meaning when rescaling or cropping the image, unless
339  * either recomputed or adjusted to the new resolution.
340  */
342 
343  /**
344  * Side data depends on the video color space. Side data with this property
345  * loses its meaning when changing the video color encoding, e.g. by
346  * adapting to a different set of primaries or transfer characteristics.
347  */
349 
350  /**
351  * Side data depends on the channel layout. Side data with this property
352  * loses its meaning when downmixing or upmixing, unless either recomputed
353  * or adjusted to the new layout.
354  */
356 };
357 
358 /**
359  * This struct describes the properties of a side data type. Its instance
360  * corresponding to a given type can be obtained from av_frame_side_data_desc().
361  */
362 typedef struct AVSideDataDescriptor {
363  /**
364  * Human-readable side data description.
365  */
366  const char *name;
367 
368  /**
369  * Side data property flags, a combination of AVSideDataProps values.
370  */
371  unsigned props;
373 
374 /**
375  * Structure describing a single Region Of Interest.
376  *
377  * When multiple regions are defined in a single side-data block, they
378  * should be ordered from most to least important - some encoders are only
379  * capable of supporting a limited number of distinct regions, so will have
380  * to truncate the list.
381  *
382  * When overlapping regions are defined, the first region containing a given
383  * area of the frame applies.
384  */
385 typedef struct AVRegionOfInterest {
386  /**
387  * Must be set to the size of this data structure (that is,
388  * sizeof(AVRegionOfInterest)).
389  */
390  uint32_t self_size;
391  /**
392  * Distance in pixels from the top edge of the frame to the top and
393  * bottom edges and from the left edge of the frame to the left and
394  * right edges of the rectangle defining this region of interest.
395  *
396  * The constraints on a region are encoder dependent, so the region
397  * actually affected may be slightly larger for alignment or other
398  * reasons.
399  */
400  int top;
401  int bottom;
402  int left;
403  int right;
404  /**
405  * Quantisation offset.
406  *
407  * Must be in the range -1 to +1. A value of zero indicates no quality
408  * change. A negative value asks for better quality (less quantisation),
409  * while a positive value asks for worse quality (greater quantisation).
410  *
411  * The range is calibrated so that the extreme values indicate the
412  * largest possible offset - if the rest of the frame is encoded with the
413  * worst possible quality, an offset of -1 indicates that this region
414  * should be encoded with the best possible quality anyway. Intermediate
415  * values are then interpolated in some codec-dependent way.
416  *
417  * For example, in 10-bit H.264 the quantisation parameter varies between
418  * -12 and 51. A typical qoffset value of -1/10 therefore indicates that
419  * this region should be encoded with a QP around one-tenth of the full
420  * range better than the rest of the frame. So, if most of the frame
421  * were to be encoded with a QP of around 30, this region would get a QP
422  * of around 24 (an offset of approximately -1/10 * (51 - -12) = -6.3).
423  * An extreme value of -1 would indicate that this region should be
424  * encoded with the best possible quality regardless of the treatment of
425  * the rest of the frame - that is, should be encoded at a QP of -12.
426  */
429 
430 /**
431  * This structure describes decoded (raw) audio or video data.
432  *
433  * AVFrame must be allocated using av_frame_alloc(). Note that this only
434  * allocates the AVFrame itself, the buffers for the data must be managed
435  * through other means (see below).
436  * AVFrame must be freed with av_frame_free().
437  *
438  * AVFrame is typically allocated once and then reused multiple times to hold
439  * different data (e.g. a single AVFrame to hold frames received from a
440  * decoder). In such a case, av_frame_unref() will free any references held by
441  * the frame and reset it to its original clean state before it
442  * is reused again.
443  *
444  * The data described by an AVFrame is usually reference counted through the
445  * AVBuffer API. The underlying buffer references are stored in AVFrame.buf /
446  * AVFrame.extended_buf. An AVFrame is considered to be reference counted if at
447  * least one reference is set, i.e. if AVFrame.buf[0] != NULL. In such a case,
448  * every single data plane must be contained in one of the buffers in
449  * AVFrame.buf or AVFrame.extended_buf.
450  * There may be a single buffer for all the data, or one separate buffer for
451  * each plane, or anything in between.
452  *
453  * sizeof(AVFrame) is not a part of the public ABI, so new fields may be added
454  * to the end with a minor bump.
455  *
456  * Fields can be accessed through AVOptions, the name string used, matches the
457  * C structure field name for fields accessible through AVOptions.
458  */
459 typedef struct AVFrame {
460 #define AV_NUM_DATA_POINTERS 8
461  /**
462  * pointer to the picture/channel planes.
463  * This might be different from the first allocated byte. For video,
464  * it could even point to the end of the image data.
465  *
466  * All pointers in data and extended_data must point into one of the
467  * AVBufferRef in buf or extended_buf.
468  *
469  * Some decoders access areas outside 0,0 - width,height, please
470  * see avcodec_align_dimensions2(). Some filters and swscale can read
471  * up to 16 bytes beyond the planes, if these filters are to be used,
472  * then 16 extra bytes must be allocated.
473  *
474  * NOTE: Pointers not needed by the format MUST be set to NULL.
475  *
476  * @attention In case of video, the data[] pointers can point to the
477  * end of image data in order to reverse line order, when used in
478  * combination with negative values in the linesize[] array.
479  */
481 
482  /**
483  * For video, a positive or negative value, which is typically indicating
484  * the size in bytes of each picture line, but it can also be:
485  * - the negative byte size of lines for vertical flipping
486  * (with data[n] pointing to the end of the data
487  * - a positive or negative multiple of the byte size as for accessing
488  * even and odd fields of a frame (possibly flipped)
489  *
490  * For audio, only linesize[0] may be set. For planar audio, each channel
491  * plane must be the same size.
492  *
493  * For video the linesizes should be multiples of the CPUs alignment
494  * preference, this is 16 or 32 for modern desktop CPUs.
495  * Some code requires such alignment other code can be slower without
496  * correct alignment, for yet other it makes no difference.
497  *
498  * @note The linesize may be larger than the size of usable data -- there
499  * may be extra padding present for performance reasons.
500  *
501  * @attention In case of video, line size values can be negative to achieve
502  * a vertically inverted iteration over image lines.
503  */
505 
506  /**
507  * pointers to the data planes/channels.
508  *
509  * For video, this should simply point to data[].
510  *
511  * For planar audio, each channel has a separate data pointer, and
512  * linesize[0] contains the size of each channel buffer.
513  * For packed audio, there is just one data pointer, and linesize[0]
514  * contains the total size of the buffer for all channels.
515  *
516  * Note: Both data and extended_data should always be set in a valid frame,
517  * but for planar audio with more channels that can fit in data,
518  * extended_data must be used in order to access all channels.
519  */
520  uint8_t **extended_data;
521 
522  /**
523  * @name Video dimensions
524  * Video frames only. The coded dimensions (in pixels) of the video frame,
525  * i.e. the size of the rectangle that contains some well-defined values.
526  *
527  * @note The part of the frame intended for display/presentation is further
528  * restricted by the @ref cropping "Cropping rectangle".
529  * @{
530  */
531  int width, height;
532  /**
533  * @}
534  */
535 
536  /**
537  * number of audio samples (per channel) described by this frame
538  */
540 
541  /**
542  * format of the frame, -1 if unknown or unset
543  * Values correspond to enum AVPixelFormat for video frames,
544  * enum AVSampleFormat for audio)
545  */
546  int format;
547 
548  /**
549  * Picture type of the frame.
550  */
552 
553  /**
554  * Sample aspect ratio for the video frame, 0/1 if unknown/unspecified.
555  */
557 
558  /**
559  * Presentation timestamp in time_base units (time when frame should be shown to user).
560  */
562 
563  /**
564  * DTS copied from the AVPacket that triggered returning this frame. (if frame threading isn't used)
565  * This is also the Presentation time of this AVFrame calculated from
566  * only AVPacket.dts values without pts values.
567  */
569 
570  /**
571  * Time base for the timestamps in this frame.
572  * In the future, this field may be set on frames output by decoders or
573  * filters, but its value will be by default ignored on input to encoders
574  * or filters.
575  */
577 
578  /**
579  * quality (between 1 (good) and FF_LAMBDA_MAX (bad))
580  */
581  int quality;
582 
583  /**
584  * Frame owner's private data.
585  *
586  * This field may be set by the code that allocates/owns the frame data.
587  * It is then not touched by any library functions, except:
588  * - it is copied to other references by av_frame_copy_props() (and hence by
589  * av_frame_ref());
590  * - it is set to NULL when the frame is cleared by av_frame_unref()
591  * - on the caller's explicit request. E.g. libavcodec encoders/decoders
592  * will copy this field to/from @ref AVPacket "AVPackets" if the caller sets
593  * @ref AV_CODEC_FLAG_COPY_OPAQUE.
594  *
595  * @see opaque_ref the reference-counted analogue
596  */
597  void *opaque;
598 
599  /**
600  * Number of fields in this frame which should be repeated, i.e. the total
601  * duration of this frame should be repeat_pict + 2 normal field durations.
602  *
603  * For interlaced frames this field may be set to 1, which signals that this
604  * frame should be presented as 3 fields: beginning with the first field (as
605  * determined by AV_FRAME_FLAG_TOP_FIELD_FIRST being set or not), followed
606  * by the second field, and then the first field again.
607  *
608  * For progressive frames this field may be set to a multiple of 2, which
609  * signals that this frame's duration should be (repeat_pict + 2) / 2
610  * normal frame durations.
611  *
612  * @note This field is computed from MPEG2 repeat_first_field flag and its
613  * associated flags, H.264 pic_struct from picture timing SEI, and
614  * their analogues in other codecs. Typically it should only be used when
615  * higher-layer timing information is not available.
616  */
618 
619  /**
620  * Sample rate of the audio data.
621  */
623 
624  /**
625  * AVBuffer references backing the data for this frame. All the pointers in
626  * data and extended_data must point inside one of the buffers in buf or
627  * extended_buf. This array must be filled contiguously -- if buf[i] is
628  * non-NULL then buf[j] must also be non-NULL for all j < i.
629  *
630  * There may be at most one AVBuffer per data plane, so for video this array
631  * always contains all the references. For planar audio with more than
632  * AV_NUM_DATA_POINTERS channels, there may be more buffers than can fit in
633  * this array. Then the extra AVBufferRef pointers are stored in the
634  * extended_buf array.
635  */
637 
638  /**
639  * For planar audio which requires more than AV_NUM_DATA_POINTERS
640  * AVBufferRef pointers, this array will hold all the references which
641  * cannot fit into AVFrame.buf.
642  *
643  * Note that this is different from AVFrame.extended_data, which always
644  * contains all the pointers. This array only contains the extra pointers,
645  * which cannot fit into AVFrame.buf.
646  *
647  * This array is always allocated using av_malloc() by whoever constructs
648  * the frame. It is freed in av_frame_unref().
649  */
651  /**
652  * Number of elements in extended_buf.
653  */
655 
658 
659 /**
660  * @defgroup lavu_frame_flags AV_FRAME_FLAGS
661  * @ingroup lavu_frame
662  * Flags describing additional frame properties.
663  *
664  * @{
665  */
666 
667 /**
668  * The frame data may be corrupted, e.g. due to decoding errors.
669  */
670 #define AV_FRAME_FLAG_CORRUPT (1 << 0)
671 /**
672  * A flag to mark frames that are keyframes.
673  */
674 #define AV_FRAME_FLAG_KEY (1 << 1)
675 /**
676  * A flag to mark the frames which need to be decoded, but shouldn't be output.
677  */
678 #define AV_FRAME_FLAG_DISCARD (1 << 2)
679 /**
680  * A flag to mark frames whose content is interlaced.
681  */
682 #define AV_FRAME_FLAG_INTERLACED (1 << 3)
683 /**
684  * A flag to mark frames where the top field is displayed first if the content
685  * is interlaced.
686  */
687 #define AV_FRAME_FLAG_TOP_FIELD_FIRST (1 << 4)
688 /**
689  * A decoder can use this flag to mark frames which were originally encoded losslessly.
690  *
691  * For coding bitstream formats which support both lossless and lossy
692  * encoding, it is sometimes possible for a decoder to determine which method
693  * was used when the bitstream was encoded.
694  */
695 #define AV_FRAME_FLAG_LOSSLESS (1 << 5)
696 /**
697  * @}
698  */
699 
700  /**
701  * Frame flags, a combination of @ref lavu_frame_flags
702  */
703  int flags;
704 
705  /**
706  * MPEG vs JPEG YUV range.
707  * - encoding: Set by user
708  * - decoding: Set by libavcodec
709  */
711 
713 
715 
716  /**
717  * YUV colorspace type.
718  * - encoding: Set by user
719  * - decoding: Set by libavcodec
720  */
722 
724 
725  /**
726  * frame timestamp estimated using various heuristics, in stream time base
727  * - encoding: unused
728  * - decoding: set by libavcodec, read by user.
729  */
731 
732  /**
733  * metadata.
734  * - encoding: Set by user.
735  * - decoding: Set by libavcodec.
736  */
738 
739  /**
740  * decode error flags of the frame, set to a combination of
741  * FF_DECODE_ERROR_xxx flags if the decoder produced a frame, but there
742  * were errors during the decoding.
743  * - encoding: unused
744  * - decoding: set by libavcodec, read by user.
745  */
747 #define FF_DECODE_ERROR_INVALID_BITSTREAM 1
748 #define FF_DECODE_ERROR_MISSING_REFERENCE 2
749 #define FF_DECODE_ERROR_CONCEALMENT_ACTIVE 4
750 #define FF_DECODE_ERROR_DECODE_SLICES 8
751 
752  /**
753  * For hwaccel-format frames, this should be a reference to the
754  * AVHWFramesContext describing the frame.
755  */
757 
758  /**
759  * Frame owner's private data.
760  *
761  * This field may be set by the code that allocates/owns the frame data.
762  * It is then not touched by any library functions, except:
763  * - a new reference to the underlying buffer is propagated by
764  * av_frame_copy_props() (and hence by av_frame_ref());
765  * - it is unreferenced in av_frame_unref();
766  * - on the caller's explicit request. E.g. libavcodec encoders/decoders
767  * will propagate a new reference to/from @ref AVPacket "AVPackets" if the
768  * caller sets @ref AV_CODEC_FLAG_COPY_OPAQUE.
769  *
770  * @see opaque the plain pointer analogue
771  */
773 
774  /**
775  * @anchor cropping
776  * @name Cropping
777  * Video frames only. The number of pixels to discard from the
778  * top/bottom/left/right border of the frame to obtain the sub-rectangle of
779  * the frame intended for presentation.
780  * @{
781  */
782  size_t crop_top;
783  size_t crop_bottom;
784  size_t crop_left;
785  size_t crop_right;
786  /**
787  * @}
788  */
789 
790  /**
791  * RefStruct reference for internal use by a single libav* library.
792  * Must not be used to transfer data between libraries.
793  * Has to be NULL when ownership of the frame leaves the respective library.
794  *
795  * Code outside the FFmpeg libs must never check or change private_ref.
796  */
797  void *private_ref;
798 
799  /**
800  * Channel layout of the audio data.
801  */
803 
804  /**
805  * Duration of the frame, in the same units as pts. 0 if unknown.
806  */
808 
809  /**
810  * Indicates how the alpha channel of the video is to be handled.
811  * - encoding: Set by user
812  * - decoding: Set by libavcodec
813  */
815 } AVFrame;
816 
817 
818 /**
819  * Allocate an AVFrame and set its fields to default values. The resulting
820  * struct must be freed using av_frame_free().
821  *
822  * @return An AVFrame filled with default values or NULL on failure.
823  *
824  * @note this only allocates the AVFrame itself, not the data buffers. Those
825  * must be allocated through other means, e.g. with av_frame_get_buffer() or
826  * manually.
827  */
828 AVFrame *av_frame_alloc(void);
829 
830 /**
831  * Free the frame and any dynamically allocated objects in it,
832  * e.g. extended_data. If the frame is reference counted, it will be
833  * unreferenced first.
834  *
835  * @param frame frame to be freed. The pointer will be set to NULL.
836  */
837 void av_frame_free(AVFrame **frame);
838 
839 /**
840  * Set up a new reference to the data described by the source frame.
841  *
842  * Copy frame properties from src to dst and create a new reference for each
843  * AVBufferRef from src.
844  *
845  * If src is not reference counted, new buffers are allocated and the data is
846  * copied.
847  *
848  * @warning: dst MUST have been either unreferenced with av_frame_unref(dst),
849  * or newly allocated with av_frame_alloc() before calling this
850  * function, or undefined behavior will occur.
851  *
852  * @return 0 on success, a negative AVERROR on error
853  */
854 int av_frame_ref(AVFrame *dst, const AVFrame *src);
855 
856 /**
857  * Ensure the destination frame refers to the same data described by the source
858  * frame, either by creating a new reference for each AVBufferRef from src if
859  * they differ from those in dst, by allocating new buffers and copying data if
860  * src is not reference counted, or by unreferencing it if src is empty.
861  *
862  * Frame properties on dst will be replaced by those from src.
863  *
864  * @return 0 on success, a negative AVERROR on error. On error, dst is
865  * unreferenced.
866  */
867 int av_frame_replace(AVFrame *dst, const AVFrame *src);
868 
869 /**
870  * Create a new frame that references the same data as src.
871  *
872  * This is a shortcut for av_frame_alloc()+av_frame_ref().
873  *
874  * @return newly created AVFrame on success, NULL on error.
875  */
877 
878 /**
879  * Unreference all the buffers referenced by frame and reset the frame fields.
880  */
882 
883 /**
884  * Move everything contained in src to dst and reset src.
885  *
886  * @warning: dst is not unreferenced, but directly overwritten without reading
887  * or deallocating its contents. Call av_frame_unref(dst) manually
888  * before calling this function to ensure that no memory is leaked.
889  */
891 
892 /**
893  * Allocate new buffer(s) for audio or video data.
894  *
895  * The following fields must be set on frame before calling this function:
896  * - format (pixel format for video, sample format for audio)
897  * - width and height for video
898  * - nb_samples and ch_layout for audio
899  *
900  * This function will fill AVFrame.data and AVFrame.buf arrays and, if
901  * necessary, allocate and fill AVFrame.extended_data and AVFrame.extended_buf.
902  * For planar formats, one buffer will be allocated for each plane.
903  *
904  * @warning: if frame already has been allocated, calling this function will
905  * leak memory. In addition, undefined behavior can occur in certain
906  * cases.
907  *
908  * @param frame frame in which to store the new buffers.
909  * @param align Required buffer size and data pointer alignment. If equal to 0,
910  * alignment will be chosen automatically for the current CPU.
911  * It is highly recommended to pass 0 here unless you know what
912  * you are doing.
913  *
914  * @return 0 on success, a negative AVERROR on error.
915  */
917 
918 /**
919  * Check if the frame data is writable.
920  *
921  * @return A positive value if the frame data is writable (which is true if and
922  * only if each of the underlying buffers has only one reference, namely the one
923  * stored in this frame). Return 0 otherwise.
924  *
925  * If 1 is returned the answer is valid until av_buffer_ref() is called on any
926  * of the underlying AVBufferRefs (e.g. through av_frame_ref() or directly).
927  *
928  * @see av_frame_make_writable(), av_buffer_is_writable()
929  */
931 
932 /**
933  * Ensure that the frame data is writable, avoiding data copy if possible.
934  *
935  * Do nothing if the frame is writable, allocate new buffers and copy the data
936  * if it is not. Non-refcounted frames behave as non-writable, i.e. a copy
937  * is always made.
938  *
939  * @return 0 on success, a negative AVERROR on error.
940  *
941  * @see av_frame_is_writable(), av_buffer_is_writable(),
942  * av_buffer_make_writable()
943  */
945 
946 /**
947  * Copy the frame data from src to dst.
948  *
949  * This function does not allocate anything, dst must be already initialized and
950  * allocated with the same parameters as src.
951  *
952  * This function only copies the frame data (i.e. the contents of the data /
953  * extended data arrays), not any other properties.
954  *
955  * @return >= 0 on success, a negative AVERROR on error.
956  */
957 int av_frame_copy(AVFrame *dst, const AVFrame *src);
958 
959 /**
960  * Copy only "metadata" fields from src to dst.
961  *
962  * Metadata for the purpose of this function are those fields that do not affect
963  * the data layout in the buffers. E.g. pts, sample rate (for audio) or sample
964  * aspect ratio (for video), but not width/height or channel layout.
965  * Side data is also copied.
966  */
968 
969 /**
970  * Get the buffer reference a given data plane is stored in.
971  *
972  * @param frame the frame to get the plane's buffer from
973  * @param plane index of the data plane of interest in frame->extended_data.
974  *
975  * @return the buffer reference that contains the plane or NULL if the input
976  * frame is not valid.
977  */
979 
980 /**
981  * Add a new side data to a frame.
982  *
983  * @param frame a frame to which the side data should be added
984  * @param type type of the added side data
985  * @param size size of the side data
986  *
987  * @return newly added side data on success, NULL on error
988  */
991  size_t size);
992 
993 /**
994  * Add a new side data to a frame from an existing AVBufferRef
995  *
996  * @param frame a frame to which the side data should be added
997  * @param type the type of the added side data
998  * @param buf an AVBufferRef to add as side data. The ownership of
999  * the reference is transferred to the frame.
1000  *
1001  * @return newly added side data on success, NULL on error. On failure
1002  * the frame is unchanged and the AVBufferRef remains owned by
1003  * the caller.
1004  */
1007  AVBufferRef *buf);
1008 
1009 /**
1010  * @return a pointer to the side data of a given type on success, NULL if there
1011  * is no side data with such type in this frame.
1012  */
1014  enum AVFrameSideDataType type);
1015 
1016 /**
1017  * Remove and free all side data instances of the given type.
1018  */
1020 
1021 
1022 /**
1023  * Flags for frame cropping.
1024  */
1025 enum {
1026  /**
1027  * Apply the maximum possible cropping, even if it requires setting the
1028  * AVFrame.data[] entries to unaligned pointers. Passing unaligned data
1029  * to FFmpeg API is generally not allowed, and causes undefined behavior
1030  * (such as crashes). You can pass unaligned data only to FFmpeg APIs that
1031  * are explicitly documented to accept it. Use this flag only if you
1032  * absolutely know what you are doing.
1033  */
1035 };
1036 
1037 /**
1038  * Crop the given video AVFrame according to its crop_left/crop_top/crop_right/
1039  * crop_bottom fields. If cropping is successful, the function will adjust the
1040  * data pointers and the width/height fields, and set the crop fields to 0.
1041  *
1042  * In all cases, the cropping boundaries will be rounded to the inherent
1043  * alignment of the pixel format. In some cases, such as for opaque hwaccel
1044  * formats, the left/top cropping is ignored. The crop fields are set to 0 even
1045  * if the cropping was rounded or ignored.
1046  *
1047  * @param frame the frame which should be cropped
1048  * @param flags Some combination of AV_FRAME_CROP_* flags, or 0.
1049  *
1050  * @return >= 0 on success, a negative AVERROR on error. If the cropping fields
1051  * were invalid, AVERROR(ERANGE) is returned, and nothing is changed.
1052  */
1054 
1055 /**
1056  * @return a string identifying the side data type
1057  */
1059 
1060 /**
1061  * @return side data descriptor corresponding to a given side data type, NULL
1062  * when not available.
1063  */
1065 
1066 /**
1067  * Free all side data entries and their contents, then zeroes out the
1068  * values which the pointers are pointing to.
1069  *
1070  * @param sd pointer to array of side data to free. Will be set to NULL
1071  * upon return.
1072  * @param nb_sd pointer to an integer containing the number of entries in
1073  * the array. Will be set to 0 upon return.
1074  */
1075 void av_frame_side_data_free(AVFrameSideData ***sd, int *nb_sd);
1076 
1077 /**
1078  * Remove existing entries before adding new ones.
1079  */
1080 #define AV_FRAME_SIDE_DATA_FLAG_UNIQUE (1 << 0)
1081 /**
1082  * Don't add a new entry if another of the same type exists.
1083  * Applies only for side data types without the AV_SIDE_DATA_PROP_MULTI prop.
1084  */
1085 #define AV_FRAME_SIDE_DATA_FLAG_REPLACE (1 << 1)
1086 /**
1087  * Create a new reference to the passed in buffer instead of taking ownership
1088  * of it.
1089  */
1090 #define AV_FRAME_SIDE_DATA_FLAG_NEW_REF (1 << 2)
1091 
1092 /**
1093  * Add new side data entry to an array.
1094  *
1095  * @param sd pointer to array of side data to which to add another entry,
1096  * or to NULL in order to start a new array.
1097  * @param nb_sd pointer to an integer containing the number of entries in
1098  * the array.
1099  * @param type type of the added side data
1100  * @param size size of the side data
1101  * @param flags Some combination of AV_FRAME_SIDE_DATA_FLAG_* flags, or 0.
1102  *
1103  * @return newly added side data on success, NULL on error.
1104  * @note In case of AV_FRAME_SIDE_DATA_FLAG_UNIQUE being set, entries of
1105  * matching AVFrameSideDataType will be removed before the addition
1106  * is attempted.
1107  * @note In case of AV_FRAME_SIDE_DATA_FLAG_REPLACE being set, if an
1108  * entry of the same type already exists, it will be replaced instead.
1109  */
1112  size_t size, unsigned int flags);
1113 
1114 /**
1115  * Add a new side data entry to an array from an existing AVBufferRef.
1116  *
1117  * @param sd pointer to array of side data to which to add another entry,
1118  * or to NULL in order to start a new array.
1119  * @param nb_sd pointer to an integer containing the number of entries in
1120  * the array.
1121  * @param type type of the added side data
1122  * @param buf Pointer to AVBufferRef to add to the array. On success,
1123  * the function takes ownership of the AVBufferRef and *buf is
1124  * set to NULL, unless AV_FRAME_SIDE_DATA_FLAG_NEW_REF is set
1125  * in which case the ownership will remain with the caller.
1126  * @param flags Some combination of AV_FRAME_SIDE_DATA_FLAG_* flags, or 0.
1127  *
1128  * @return newly added side data on success, NULL on error.
1129  * @note In case of AV_FRAME_SIDE_DATA_FLAG_UNIQUE being set, entries of
1130  * matching AVFrameSideDataType will be removed before the addition
1131  * is attempted.
1132  * @note In case of AV_FRAME_SIDE_DATA_FLAG_REPLACE being set, if an
1133  * entry of the same type already exists, it will be replaced instead.
1134  *
1135  */
1138  AVBufferRef **buf, unsigned int flags);
1139 
1140 /**
1141  * Add a new side data entry to an array based on existing side data, taking
1142  * a reference towards the contained AVBufferRef.
1143  *
1144  * @param sd pointer to array of side data to which to add another entry,
1145  * or to NULL in order to start a new array.
1146  * @param nb_sd pointer to an integer containing the number of entries in
1147  * the array.
1148  * @param src side data to be cloned, with a new reference utilized
1149  * for the buffer.
1150  * @param flags Some combination of AV_FRAME_SIDE_DATA_FLAG_* flags, or 0.
1151  *
1152  * @return negative error code on failure, >=0 on success.
1153  * @note In case of AV_FRAME_SIDE_DATA_FLAG_UNIQUE being set, entries of
1154  * matching AVFrameSideDataType will be removed before the addition
1155  * is attempted.
1156  * @note In case of AV_FRAME_SIDE_DATA_FLAG_REPLACE being set, if an
1157  * entry of the same type already exists, it will be replaced instead.
1158  */
1159 int av_frame_side_data_clone(AVFrameSideData ***sd, int *nb_sd,
1160  const AVFrameSideData *src, unsigned int flags);
1161 
1162 /**
1163  * Get a side data entry of a specific type from an array.
1164  *
1165  * @param sd array of side data.
1166  * @param nb_sd integer containing the number of entries in the array.
1167  * @param type type of side data to be queried
1168  *
1169  * @return a pointer to the side data of a given type on success, NULL if there
1170  * is no side data with such type in this set.
1171  */
1173  const int nb_sd,
1174  enum AVFrameSideDataType type);
1175 
1176 /**
1177  * Wrapper around av_frame_side_data_get_c() to workaround the limitation
1178  * that for any type T the conversion from T * const * to const T * const *
1179  * is not performed automatically in C.
1180  * @see av_frame_side_data_get_c()
1181  */
1182 static inline
1184  const int nb_sd,
1186 {
1187  return av_frame_side_data_get_c((const AVFrameSideData * const *)sd,
1188  nb_sd, type);
1189 }
1190 
1191 /**
1192  * Remove and free all side data instances of the given type from an array.
1193  */
1194 void av_frame_side_data_remove(AVFrameSideData ***sd, int *nb_sd,
1195  enum AVFrameSideDataType type);
1196 
1197 /**
1198  * Remove and free all side data instances that match any of the given
1199  * side data properties. (See enum AVSideDataProps)
1200  */
1202  int props);
1203 
1204 /**
1205  * @}
1206  */
1207 
1208 #endif /* AVUTIL_FRAME_H */
AVFrame::extended_buf
AVBufferRef ** extended_buf
For planar audio which requires more than AV_NUM_DATA_POINTERS AVBufferRef pointers,...
Definition: frame.h:650
flags
const SwsFlags flags[]
Definition: swscale.c:72
AVFrame::color_trc
enum AVColorTransferCharacteristic color_trc
Definition: frame.h:714
AV_FRAME_DATA_IAMF_MIX_GAIN_PARAM
@ AV_FRAME_DATA_IAMF_MIX_GAIN_PARAM
IAMF Mix Gain Parameter Data associated with the audio frame.
Definition: frame.h:278
AV_AFD_14_9
@ AV_AFD_14_9
Definition: frame.h:301
AVFrame::color_range
enum AVColorRange color_range
MPEG vs JPEG YUV range.
Definition: frame.h:710
AVColorTransferCharacteristic
AVColorTransferCharacteristic
Color Transfer Characteristic.
Definition: pixfmt.h:666
av_frame_get_buffer
int av_frame_get_buffer(AVFrame *frame, int align)
Allocate new buffer(s) for audio or video data.
Definition: frame.c:206
av_frame_get_side_data
AVFrameSideData * av_frame_get_side_data(const AVFrame *frame, enum AVFrameSideDataType type)
Definition: frame.c:659
av_frame_new_side_data
AVFrameSideData * av_frame_new_side_data(AVFrame *frame, enum AVFrameSideDataType type, size_t size)
Add a new side data to a frame.
Definition: frame.c:647
AVFrame::duration
int64_t duration
Duration of the frame, in the same units as pts.
Definition: frame.h:807
AV_FRAME_DATA_IAMF_RECON_GAIN_INFO_PARAM
@ AV_FRAME_DATA_IAMF_RECON_GAIN_INFO_PARAM
IAMF Recon Gain Info Parameter Data associated with the audio frame.
Definition: frame.h:294
AV_FRAME_DATA_A53_CC
@ AV_FRAME_DATA_A53_CC
ATSC A53 Part 4 Closed Captions.
Definition: frame.h:59
AVFrame::nb_side_data
int nb_side_data
Definition: frame.h:657
AVPictureType
AVPictureType
Definition: avutil.h:276
rational.h
AV_FRAME_DATA_DOVI_METADATA
@ AV_FRAME_DATA_DOVI_METADATA
Parsed Dolby Vision metadata, suitable for passing to a software implementation.
Definition: frame.h:208
int64_t
long long int64_t
Definition: coverity.c:34
AV_FRAME_DATA_FILM_GRAIN_PARAMS
@ AV_FRAME_DATA_FILM_GRAIN_PARAMS
Film grain parameters for a frame, described by AVFilmGrainParams.
Definition: frame.h:188
AVFrame::color_primaries
enum AVColorPrimaries color_primaries
Definition: frame.h:712
AV_FRAME_DATA_S12M_TIMECODE
@ AV_FRAME_DATA_S12M_TIMECODE
Timecode which conforms to SMPTE ST 12-1.
Definition: frame.h:152
av_frame_free
void av_frame_free(AVFrame **frame)
Free the frame and any dynamically allocated objects in it, e.g.
Definition: frame.c:64
AVFrame::opaque
void * opaque
Frame owner's private data.
Definition: frame.h:597
AVFrame::colorspace
enum AVColorSpace colorspace
YUV colorspace type.
Definition: frame.h:721
AVFrame
This structure describes decoded (raw) audio or video data.
Definition: frame.h:459
av_frame_make_writable
int av_frame_make_writable(AVFrame *frame)
Ensure that the frame data is writable, avoiding data copy if possible.
Definition: frame.c:552
AVFrameSideData::buf
AVBufferRef * buf
Definition: frame.h:319
AVFrame::pts
int64_t pts
Presentation timestamp in time_base units (time when frame should be shown to user).
Definition: frame.h:561
AVFrame::width
int width
Definition: frame.h:531
AV_FRAME_DATA_DOVI_RPU_BUFFER
@ AV_FRAME_DATA_DOVI_RPU_BUFFER
Dolby Vision RPU raw data, suitable for passing to x265 or other libraries.
Definition: frame.h:201
AV_FRAME_DATA_DISPLAYMATRIX
@ AV_FRAME_DATA_DISPLAYMATRIX
This side data contains a 3x3 transformation matrix describing an affine transformation that needs to...
Definition: frame.h:85
AV_AFD_16_9
@ AV_AFD_16_9
Definition: frame.h:300
AVDictionary
Definition: dict.c:32
AVFrame::flags
int flags
Frame flags, a combination of AV_FRAME_FLAGS.
Definition: frame.h:703
AVColorPrimaries
AVColorPrimaries
Chromaticity coordinates of the source primaries.
Definition: pixfmt.h:636
av_frame_side_data_clone
int av_frame_side_data_clone(AVFrameSideData ***sd, int *nb_sd, const AVFrameSideData *src, unsigned int flags)
Add a new side data entry to an array based on existing side data, taking a reference towards the con...
Definition: side_data.c:252
AVFrame::buf
AVBufferRef * buf[AV_NUM_DATA_POINTERS]
AVBuffer references backing the data for this frame.
Definition: frame.h:636
av_frame_apply_cropping
int av_frame_apply_cropping(AVFrame *frame, int flags)
Crop the given video AVFrame according to its crop_left/crop_top/crop_right/ crop_bottom fields.
Definition: frame.c:760
AVFrame::data
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes.
Definition: frame.h:480
AVFrame::opaque_ref
AVBufferRef * opaque_ref
Frame owner's private data.
Definition: frame.h:772
AVFrame::chroma_location
enum AVChromaLocation chroma_location
Definition: frame.h:723
AV_AFD_SAME
@ AV_AFD_SAME
Definition: frame.h:298
AV_FRAME_DATA_MATRIXENCODING
@ AV_FRAME_DATA_MATRIXENCODING
The data is the AVMatrixEncoding enum defined in libavutil/channel_layout.h.
Definition: frame.h:68
samplefmt.h
AVFrame::alpha_mode
enum AVAlphaMode alpha_mode
Indicates how the alpha channel of the video is to be handled.
Definition: frame.h:814
AVFrame::ch_layout
AVChannelLayout ch_layout
Channel layout of the audio data.
Definition: frame.h:802
type
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf type
Definition: writing_filters.txt:86
AVFrameSideDataType
AVFrameSideDataType
Definition: frame.h:49
AV_SIDE_DATA_PROP_SIZE_DEPENDENT
@ AV_SIDE_DATA_PROP_SIZE_DEPENDENT
Side data depends on the video dimensions.
Definition: frame.h:341
av_frame_alloc
AVFrame * av_frame_alloc(void)
Allocate an AVFrame and set its fields to default values.
Definition: frame.c:52
AVFrameSideData::size
size_t size
Definition: frame.h:317
AVRegionOfInterest
Structure describing a single Region Of Interest.
Definition: frame.h:385
AV_FRAME_DATA_IAMF_DEMIXING_INFO_PARAM
@ AV_FRAME_DATA_IAMF_DEMIXING_INFO_PARAM
IAMF Demixing Info Parameter Data associated with the audio frame.
Definition: frame.h:286
AVRegionOfInterest::bottom
int bottom
Definition: frame.h:401
AV_FRAME_DATA_AUDIO_SERVICE_TYPE
@ AV_FRAME_DATA_AUDIO_SERVICE_TYPE
This side data must be associated with an audio frame and corresponds to enum AVAudioServiceType defi...
Definition: frame.h:114
AV_AFD_SP_4_3
@ AV_AFD_SP_4_3
Definition: frame.h:304
AV_SIDE_DATA_PROP_MULTI
@ AV_SIDE_DATA_PROP_MULTI
Multiple instances of this side data type can be meaningfully present in a single side data array.
Definition: frame.h:334
AV_FRAME_DATA_DYNAMIC_HDR_SMPTE_2094_APP5
@ AV_FRAME_DATA_DYNAMIC_HDR_SMPTE_2094_APP5
HDR dynamic metadata associated with a video frame.
Definition: frame.h:270
av_frame_clone
AVFrame * av_frame_clone(const AVFrame *src)
Create a new frame that references the same data as src.
Definition: frame.c:483
AV_FRAME_DATA_3D_REFERENCE_DISPLAYS
@ AV_FRAME_DATA_3D_REFERENCE_DISPLAYS
This side data contains information about the reference display width(s) and reference viewing distan...
Definition: frame.h:256
AVFrame::crop_right
size_t crop_right
Definition: frame.h:785
AV_SIDE_DATA_PROP_GLOBAL
@ AV_SIDE_DATA_PROP_GLOBAL
The side data type can be used in stream-global structures.
Definition: frame.h:328
AV_FRAME_DATA_DYNAMIC_HDR_VIVID
@ AV_FRAME_DATA_DYNAMIC_HDR_VIVID
HDR Vivid dynamic metadata associated with a video frame.
Definition: frame.h:215
AV_FRAME_DATA_SPHERICAL
@ AV_FRAME_DATA_SPHERICAL
The data represents the AVSphericalMapping structure defined in libavutil/spherical....
Definition: frame.h:131
av_frame_copy_props
int av_frame_copy_props(AVFrame *dst, const AVFrame *src)
Copy only "metadata" fields from src to dst.
Definition: frame.c:599
AVRational
Rational number (pair of numerator and denominator).
Definition: rational.h:58
av_frame_side_data_remove
void av_frame_side_data_remove(AVFrameSideData ***sd, int *nb_sd, enum AVFrameSideDataType type)
Remove and free all side data instances of the given type from an array.
Definition: side_data.c:106
AVRegionOfInterest::self_size
uint32_t self_size
Must be set to the size of this data structure (that is, sizeof(AVRegionOfInterest)).
Definition: frame.h:390
AVActiveFormatDescription
AVActiveFormatDescription
Definition: frame.h:297
AV_FRAME_DATA_ICC_PROFILE
@ AV_FRAME_DATA_ICC_PROFILE
The data contains an ICC profile as an opaque octet buffer following the format described by ISO 1507...
Definition: frame.h:144
AV_FRAME_DATA_MASTERING_DISPLAY_METADATA
@ AV_FRAME_DATA_MASTERING_DISPLAY_METADATA
Mastering display metadata associated with a video frame.
Definition: frame.h:120
av_frame_new_side_data_from_buf
AVFrameSideData * av_frame_new_side_data_from_buf(AVFrame *frame, enum AVFrameSideDataType type, AVBufferRef *buf)
Add a new side data to a frame from an existing AVBufferRef.
Definition: frame.c:638
AVFrame::pkt_dts
int64_t pkt_dts
DTS copied from the AVPacket that triggered returning this frame.
Definition: frame.h:568
AVSideDataDescriptor::props
unsigned props
Side data property flags, a combination of AVSideDataProps values.
Definition: frame.h:371
AV_FRAME_DATA_AFD
@ AV_FRAME_DATA_AFD
Active Format Description data consisting of a single byte as specified in ETSI TS 101 154 using AVAc...
Definition: frame.h:90
AV_AFD_4_3_SP_14_9
@ AV_AFD_4_3_SP_14_9
Definition: frame.h:302
av_frame_get_plane_buffer
AVBufferRef * av_frame_get_plane_buffer(const AVFrame *frame, int plane)
Get the buffer reference a given data plane is stored in.
Definition: frame.c:604
AV_FRAME_DATA_SEI_UNREGISTERED
@ AV_FRAME_DATA_SEI_UNREGISTERED
User data unregistered metadata associated with a video frame.
Definition: frame.h:178
AVFrame::crop_bottom
size_t crop_bottom
Definition: frame.h:783
AVFrame::best_effort_timestamp
int64_t best_effort_timestamp
frame timestamp estimated using various heuristics, in stream time base
Definition: frame.h:730
AVAlphaMode
AVAlphaMode
Correlation between the alpha channel and color values.
Definition: pixfmt.h:810
AVFrame::crop_left
size_t crop_left
Definition: frame.h:784
AVFrame::pict_type
enum AVPictureType pict_type
Picture type of the frame.
Definition: frame.h:551
AV_FRAME_DATA_REPLAYGAIN
@ AV_FRAME_DATA_REPLAYGAIN
ReplayGain information in the form of the AVReplayGain struct.
Definition: frame.h:77
AV_FRAME_DATA_AMBIENT_VIEWING_ENVIRONMENT
@ AV_FRAME_DATA_AMBIENT_VIEWING_ENVIRONMENT
Ambient viewing environment metadata, as defined by H.274.
Definition: frame.h:220
AV_FRAME_DATA_PANSCAN
@ AV_FRAME_DATA_PANSCAN
The data is the AVPanScan struct defined in libavcodec.
Definition: frame.h:53
av_frame_ref
int av_frame_ref(AVFrame *dst, const AVFrame *src)
Set up a new reference to the data described by the source frame.
Definition: frame.c:278
AVChannelLayout
An AVChannelLayout holds information about the channel layout of audio data.
Definition: channel_layout.h:319
dst
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
Definition: dsp.h:87
av_frame_copy
int av_frame_copy(AVFrame *dst, const AVFrame *src)
Copy the frame data from src to dst.
Definition: frame.c:711
AVFrame::quality
int quality
quality (between 1 (good) and FF_LAMBDA_MAX (bad))
Definition: frame.h:581
AVFrame::sample_rate
int sample_rate
Sample rate of the audio data.
Definition: frame.h:622
AV_FRAME_DATA_LCEVC
@ AV_FRAME_DATA_LCEVC
Raw LCEVC payload data, as a uint8_t array, with NAL emulation bytes intact.
Definition: frame.h:236
size
int size
Definition: twinvq_data.h:10344
AV_NUM_DATA_POINTERS
#define AV_NUM_DATA_POINTERS
Definition: frame.h:460
AVFrame::time_base
AVRational time_base
Time base for the timestamps in this frame.
Definition: frame.h:576
AVFrameSideData::data
uint8_t * data
Definition: frame.h:316
av_frame_is_writable
int av_frame_is_writable(AVFrame *frame)
Check if the frame data is writable.
Definition: frame.c:535
AVFrame::format
int format
format of the frame, -1 if unknown or unset Values correspond to enum AVPixelFormat for video frames,...
Definition: frame.h:546
AV_FRAME_CROP_UNALIGNED
@ AV_FRAME_CROP_UNALIGNED
Apply the maximum possible cropping, even if it requires setting the AVFrame.data[] entries to unalig...
Definition: frame.h:1034
buffer.h
align
static const uint8_t *BS_FUNC() align(BSCTX *bc)
Skip bits to a byte boundary.
Definition: bitstream_template.h:419
av_frame_remove_side_data
void av_frame_remove_side_data(AVFrame *frame, enum AVFrameSideDataType type)
Remove and free all side data instances of the given type.
Definition: frame.c:725
AVSideDataDescriptor::name
const char * name
Human-readable side data description.
Definition: frame.h:366
AVRegionOfInterest::right
int right
Definition: frame.h:403
av_frame_side_data_remove_by_props
void av_frame_side_data_remove_by_props(AVFrameSideData ***sd, int *nb_sd, int props)
Remove and free all side data instances that match any of the given side data properties.
Definition: side_data.c:121
AV_FRAME_DATA_VIEW_ID
@ AV_FRAME_DATA_VIEW_ID
This side data must be associated with a video frame.
Definition: frame.h:245
AV_FRAME_DATA_SKIP_SAMPLES
@ AV_FRAME_DATA_SKIP_SAMPLES
Recommends skipping the specified number of samples.
Definition: frame.h:109
AVChromaLocation
AVChromaLocation
Location of chroma samples.
Definition: pixfmt.h:796
AVFrame::private_ref
void * private_ref
RefStruct reference for internal use by a single libav* library.
Definition: frame.h:797
AVRegionOfInterest::left
int left
Definition: frame.h:402
AVFrame::nb_samples
int nb_samples
number of audio samples (per channel) described by this frame
Definition: frame.h:539
AV_FRAME_DATA_CONTENT_LIGHT_LEVEL
@ AV_FRAME_DATA_CONTENT_LIGHT_LEVEL
Content light level (based on CTA-861.3).
Definition: frame.h:137
AVSideDataProps
AVSideDataProps
Definition: frame.h:322
AV_SIDE_DATA_PROP_CHANNEL_DEPENDENT
@ AV_SIDE_DATA_PROP_CHANNEL_DEPENDENT
Side data depends on the channel layout.
Definition: frame.h:355
av_frame_side_data_free
void av_frame_side_data_free(AVFrameSideData ***sd, int *nb_sd)
Free all side data entries and their contents, then zeroes out the values which the pointers are poin...
Definition: side_data.c:137
AVRegionOfInterest::top
int top
Distance in pixels from the top edge of the frame to the top and bottom edges and from the left edge ...
Definition: frame.h:400
AVFrame::extended_data
uint8_t ** extended_data
pointers to the data planes/channels.
Definition: frame.h:520
AVColorSpace
AVColorSpace
YUV colorspace type.
Definition: pixfmt.h:700
AV_FRAME_DATA_STEREO3D
@ AV_FRAME_DATA_STEREO3D
Stereoscopic 3d metadata.
Definition: frame.h:64
av_frame_move_ref
void av_frame_move_ref(AVFrame *dst, AVFrame *src)
Move everything contained in src to dst and reset src.
Definition: frame.c:523
av_frame_unref
void av_frame_unref(AVFrame *frame)
Unreference all the buffers referenced by frame and reset the frame fields.
Definition: frame.c:496
AVFrame::side_data
AVFrameSideData ** side_data
Definition: frame.h:656
AV_SIDE_DATA_PROP_COLOR_DEPENDENT
@ AV_SIDE_DATA_PROP_COLOR_DEPENDENT
Side data depends on the video color space.
Definition: frame.h:348
version.h
AVFrame::decode_error_flags
int decode_error_flags
decode error flags of the frame, set to a combination of FF_DECODE_ERROR_xxx flags if the decoder pro...
Definition: frame.h:746
AV_FRAME_DATA_GOP_TIMECODE
@ AV_FRAME_DATA_GOP_TIMECODE
The GOP timecode in 25 bit timecode format.
Definition: frame.h:125
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:265
AV_FRAME_DATA_VIDEO_HINT
@ AV_FRAME_DATA_VIDEO_HINT
Provide encoder-specific hinting information about changed/unchanged portions of a frame.
Definition: frame.h:230
dict.h
AVFrame::sample_aspect_ratio
AVRational sample_aspect_ratio
Sample aspect ratio for the video frame, 0/1 if unknown/unspecified.
Definition: frame.h:556
AVFrame::hw_frames_ctx
AVBufferRef * hw_frames_ctx
For hwaccel-format frames, this should be a reference to the AVHWFramesContext describing the frame.
Definition: frame.h:756
av_frame_replace
int av_frame_replace(AVFrame *dst, const AVFrame *src)
Ensure the destination frame refers to the same data described by the source frame,...
Definition: frame.c:376
AV_FRAME_DATA_DYNAMIC_HDR_PLUS
@ AV_FRAME_DATA_DYNAMIC_HDR_PLUS
HDR dynamic metadata associated with a video frame.
Definition: frame.h:159
AVFrame::height
int height
Definition: frame.h:531
channel_layout.h
av_frame_side_data_new
AVFrameSideData * av_frame_side_data_new(AVFrameSideData ***sd, int *nb_sd, enum AVFrameSideDataType type, size_t size, unsigned int flags)
Add new side data entry to an array.
Definition: side_data.c:202
AV_FRAME_DATA_VIDEO_ENC_PARAMS
@ AV_FRAME_DATA_VIDEO_ENC_PARAMS
Encoding parameters for a video frame, as described by AVVideoEncParams.
Definition: frame.h:170
AVFrame::metadata
AVDictionary * metadata
metadata.
Definition: frame.h:737
AVFrameSideData::type
enum AVFrameSideDataType type
Definition: frame.h:315
AVSideDataDescriptor
This struct describes the properties of a side data type.
Definition: frame.h:362
avutil.h
AVBufferRef
A reference to a data buffer.
Definition: buffer.h:82
AVFrameSideData
Structure to hold side data for an AVFrame.
Definition: frame.h:314
av_frame_side_data_desc
const AVSideDataDescriptor * av_frame_side_data_desc(enum AVFrameSideDataType type)
Definition: side_data.c:66
AVFrame::crop_top
size_t crop_top
Definition: frame.h:782
av_frame_side_data_name
const char * av_frame_side_data_name(enum AVFrameSideDataType type)
Definition: side_data.c:74
av_frame_side_data_get
static const AVFrameSideData * av_frame_side_data_get(AVFrameSideData *const *sd, const int nb_sd, enum AVFrameSideDataType type)
Wrapper around av_frame_side_data_get_c() to workaround the limitation that for any type T the conver...
Definition: frame.h:1183
AV_FRAME_DATA_EXIF
@ AV_FRAME_DATA_EXIF
Exchangeable image file format metadata.
Definition: frame.h:263
AV_FRAME_DATA_REGIONS_OF_INTEREST
@ AV_FRAME_DATA_REGIONS_OF_INTEREST
Regions Of Interest, the data is an array of AVRegionOfInterest type, the number of array element is ...
Definition: frame.h:165
AVFrame::linesize
int linesize[AV_NUM_DATA_POINTERS]
For video, a positive or negative value, which is typically indicating the size in bytes of each pict...
Definition: frame.h:504
AVFrameSideData::metadata
AVDictionary * metadata
Definition: frame.h:318
av_frame_side_data_get_c
const AVFrameSideData * av_frame_side_data_get_c(const AVFrameSideData *const *sd, const int nb_sd, enum AVFrameSideDataType type)
Get a side data entry of a specific type from an array.
Definition: side_data.c:310
AV_FRAME_DATA_MOTION_VECTORS
@ AV_FRAME_DATA_MOTION_VECTORS
Motion vectors exported by some codecs (on demand through the export_mvs flag set in the libavcodec A...
Definition: frame.h:97
AV_AFD_4_3
@ AV_AFD_4_3
Definition: frame.h:299
AVColorRange
AVColorRange
Visual content value range.
Definition: pixfmt.h:742
AVRegionOfInterest::qoffset
AVRational qoffset
Quantisation offset.
Definition: frame.h:427
AV_FRAME_DATA_DOWNMIX_INFO
@ AV_FRAME_DATA_DOWNMIX_INFO
Metadata relevant to a downmix procedure.
Definition: frame.h:73
AVFrame::repeat_pict
int repeat_pict
Number of fields in this frame which should be repeated, i.e.
Definition: frame.h:617
av_frame_side_data_add
AVFrameSideData * av_frame_side_data_add(AVFrameSideData ***sd, int *nb_sd, enum AVFrameSideDataType type, AVBufferRef **buf, unsigned int flags)
Add a new side data entry to an array from an existing AVBufferRef.
Definition: side_data.c:227
src
#define src
Definition: vp8dsp.c:248
AV_FRAME_DATA_DETECTION_BBOXES
@ AV_FRAME_DATA_DETECTION_BBOXES
Bounding boxes for object detection and classification, as described by AVDetectionBBoxHeader.
Definition: frame.h:194
AVFrame::nb_extended_buf
int nb_extended_buf
Number of elements in extended_buf.
Definition: frame.h:654
AV_AFD_16_9_SP_14_9
@ AV_AFD_16_9_SP_14_9
Definition: frame.h:303