FFmpeg
Macros | Functions | Variables
frame.c File Reference
#include "channel_layout.h"
#include "avassert.h"
#include "buffer.h"
#include "common.h"
#include "cpu.h"
#include "dict.h"
#include "frame.h"
#include "imgutils.h"
#include "mem.h"
#include "samplefmt.h"
#include "hwcontext.h"

Go to the source code of this file.

Macros

#define ALIGN   (HAVE_SIMD_ALIGN_64 ? 64 : 32)
 

Functions

static void get_frame_defaults (AVFrame *frame)
 
static void free_side_data (AVFrameSideData **ptr_sd)
 
static void wipe_side_data (AVFrameSideData ***sd, int *nb_side_data)
 
static void frame_side_data_wipe (AVFrame *frame)
 
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 pointing to. More...
 
static void remove_side_data (AVFrameSideData ***sd, int *nb_side_data, const enum AVFrameSideDataType type)
 
static void remove_side_data_by_entry (AVFrameSideData ***sd, int *nb_sd, const AVFrameSideData *target)
 
AVFrameav_frame_alloc (void)
 Allocate an AVFrame and set its fields to default values. More...
 
void av_frame_free (AVFrame **frame)
 Free the frame and any dynamically allocated objects in it, e.g. More...
 
static int get_video_buffer (AVFrame *frame, int align)
 
static int get_audio_buffer (AVFrame *frame, int align)
 
int av_frame_get_buffer (AVFrame *frame, int align)
 Allocate new buffer(s) for audio or video data. More...
 
static int frame_copy_props (AVFrame *dst, const AVFrame *src, int force_copy)
 
int av_frame_ref (AVFrame *dst, const AVFrame *src)
 Set up a new reference to the data described by the source frame. More...
 
int av_frame_replace (AVFrame *dst, const AVFrame *src)
 Ensure the destination frame refers to the same data described by the source frame, either by creating a new reference for each AVBufferRef from src if they differ from those in dst, by allocating new buffers and copying data if src is not reference counted, or by unrefencing it if src is empty. More...
 
AVFrameav_frame_clone (const AVFrame *src)
 Create a new frame that references the same data as src. More...
 
void av_frame_unref (AVFrame *frame)
 Unreference all the buffers referenced by frame and reset the frame fields. More...
 
void av_frame_move_ref (AVFrame *dst, AVFrame *src)
 Move everything contained in src to dst and reset src. More...
 
int av_frame_is_writable (AVFrame *frame)
 Check if the frame data is writable. More...
 
int av_frame_make_writable (AVFrame *frame)
 Ensure that the frame data is writable, avoiding data copy if possible. More...
 
int av_frame_copy_props (AVFrame *dst, const AVFrame *src)
 Copy only "metadata" fields from src to dst. More...
 
AVBufferRefav_frame_get_plane_buffer (const AVFrame *frame, int plane)
 Get the buffer reference a given data plane is stored in. More...
 
static AVFrameSideDataadd_side_data_from_buf_ext (AVFrameSideData ***sd, int *nb_sd, enum AVFrameSideDataType type, AVBufferRef *buf, uint8_t *data, size_t size)
 
static AVFrameSideDataadd_side_data_from_buf (AVFrameSideData ***sd, int *nb_sd, enum AVFrameSideDataType type, AVBufferRef *buf)
 
AVFrameSideDataav_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. More...
 
AVFrameSideDataav_frame_new_side_data (AVFrame *frame, enum AVFrameSideDataType type, size_t size)
 Add a new side data to a frame. More...
 
static AVFrameSideDatareplace_side_data_from_buf (AVFrameSideData *dst, AVBufferRef *buf, int flags)
 
AVFrameSideDataav_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. More...
 
AVFrameSideDataav_frame_side_data_add (AVFrameSideData ***sd, int *nb_sd, enum AVFrameSideDataType type, AVBufferRef **pbuf, unsigned int flags)
 Add a new side data entry to an array from an existing AVBufferRef. More...
 
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 contained AVBufferRef. More...
 
const AVFrameSideDataav_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. More...
 
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. More...
 
AVFrameSideDataav_frame_get_side_data (const AVFrame *frame, enum AVFrameSideDataType type)
 
static int frame_copy_video (AVFrame *dst, const AVFrame *src)
 
static int frame_copy_audio (AVFrame *dst, const AVFrame *src)
 
int av_frame_copy (AVFrame *dst, const AVFrame *src)
 Copy the frame data from src to dst. More...
 
void av_frame_remove_side_data (AVFrame *frame, enum AVFrameSideDataType type)
 Remove and free all side data instances of the given type. More...
 
const AVSideDataDescriptorav_frame_side_data_desc (enum AVFrameSideDataType type)
 
const char * av_frame_side_data_name (enum AVFrameSideDataType type)
 
static int calc_cropping_offsets (size_t offsets[4], const AVFrame *frame, const AVPixFmtDescriptor *desc)
 
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. More...
 

Variables

static const AVSideDataDescriptor sd_props []
 

Macro Definition Documentation

◆ ALIGN

#define ALIGN   (HAVE_SIMD_ALIGN_64 ? 64 : 32)

Definition at line 171 of file frame.c.

Function Documentation

◆ get_frame_defaults()

static void get_frame_defaults ( AVFrame frame)
static

Definition at line 63 of file frame.c.

Referenced by av_frame_alloc(), av_frame_move_ref(), and av_frame_unref().

◆ free_side_data()

static void free_side_data ( AVFrameSideData **  ptr_sd)
static

Definition at line 89 of file frame.c.

Referenced by remove_side_data(), remove_side_data_by_entry(), and wipe_side_data().

◆ wipe_side_data()

static void wipe_side_data ( AVFrameSideData ***  sd,
int *  nb_side_data 
)
static

Definition at line 98 of file frame.c.

Referenced by av_frame_side_data_free(), and frame_side_data_wipe().

◆ frame_side_data_wipe()

static void frame_side_data_wipe ( AVFrame frame)
static

Definition at line 108 of file frame.c.

Referenced by av_frame_replace(), av_frame_unref(), and frame_copy_props().

◆ remove_side_data()

static void remove_side_data ( AVFrameSideData ***  sd,
int *  nb_side_data,
const enum AVFrameSideDataType  type 
)
static

◆ remove_side_data_by_entry()

static void remove_side_data_by_entry ( AVFrameSideData ***  sd,
int *  nb_sd,
const AVFrameSideData target 
)
static

Definition at line 133 of file frame.c.

Referenced by av_frame_side_data_clone().

◆ get_video_buffer()

static int get_video_buffer ( AVFrame frame,
int  align 
)
static

Definition at line 173 of file frame.c.

Referenced by av_frame_get_buffer().

◆ get_audio_buffer()

static int get_audio_buffer ( AVFrame frame,
int  align 
)
static

Definition at line 242 of file frame.c.

Referenced by av_frame_get_buffer().

◆ frame_copy_props()

static int frame_copy_props ( AVFrame dst,
const AVFrame src,
int  force_copy 
)
static

Definition at line 306 of file frame.c.

Referenced by av_frame_copy_props(), av_frame_ref(), and av_frame_replace().

◆ add_side_data_from_buf_ext()

static AVFrameSideData* add_side_data_from_buf_ext ( AVFrameSideData ***  sd,
int *  nb_sd,
enum AVFrameSideDataType  type,
AVBufferRef buf,
uint8_t *  data,
size_t  size 
)
static

Definition at line 748 of file frame.c.

Referenced by add_side_data_from_buf(), and av_frame_side_data_clone().

◆ add_side_data_from_buf()

static AVFrameSideData* add_side_data_from_buf ( AVFrameSideData ***  sd,
int *  nb_sd,
enum AVFrameSideDataType  type,
AVBufferRef buf 
)
static

◆ replace_side_data_from_buf()

static AVFrameSideData* replace_side_data_from_buf ( AVFrameSideData dst,
AVBufferRef buf,
int  flags 
)
static

Definition at line 811 of file frame.c.

Referenced by av_frame_side_data_add(), and av_frame_side_data_new().

◆ frame_copy_video()

static int frame_copy_video ( AVFrame dst,
const AVFrame src 
)
static

Definition at line 960 of file frame.c.

Referenced by av_frame_copy().

◆ frame_copy_audio()

static int frame_copy_audio ( AVFrame dst,
const AVFrame src 
)
static

Definition at line 983 of file frame.c.

Referenced by av_frame_copy().

◆ calc_cropping_offsets()

static int calc_cropping_offsets ( size_t  offsets[4],
const AVFrame frame,
const AVPixFmtDescriptor desc 
)
static

Definition at line 1036 of file frame.c.

Referenced by av_frame_apply_cropping().

Variable Documentation

◆ sd_props

const AVSideDataDescriptor sd_props[]
static

Definition at line 31 of file frame.c.

Referenced by av_frame_side_data_desc().