FFmpeg
Macros | Functions
encode.h File Reference
#include "libavutil/frame.h"
#include "avcodec.h"
#include "packet.h"

Go to the source code of this file.

Macros

#define FF_INPUT_BUFFER_MIN_SIZE   16384
 Used by some encoders as upper bound for the length of headers. More...
 

Functions

int ff_encode_get_frame (AVCodecContext *avctx, AVFrame *frame)
 Called by encoders to get the next frame for encoding. More...
 
int ff_get_encode_buffer (AVCodecContext *avctx, AVPacket *avpkt, int64_t size, int flags)
 Get a buffer for a packet. More...
 
int ff_encode_alloc_frame (AVCodecContext *avctx, AVFrame *frame)
 Allocate buffers for a frame. More...
 
int ff_alloc_packet (AVCodecContext *avctx, AVPacket *avpkt, int64_t size)
 Check AVPacket size and allocate data. More...
 
int ff_encode_reordered_opaque (AVCodecContext *avctx, AVPacket *pkt, const AVFrame *frame)
 Propagate user opaque values from the frame to avctx/pkt as needed. More...
 
int ff_encode_encode_cb (AVCodecContext *avctx, AVPacket *avpkt, AVFrame *frame, int *got_packet)
 
AVCPBPropertiesff_encode_add_cpb_side_data (AVCodecContext *avctx)
 Add a CPB properties side data to an encoding context. More...
 
static av_always_inline int64_t ff_samples_to_time_base (const AVCodecContext *avctx, int64_t samples)
 Rescale from sample rate to AVCodecContext.time_base. More...
 

Macro Definition Documentation

◆ FF_INPUT_BUFFER_MIN_SIZE

#define FF_INPUT_BUFFER_MIN_SIZE   16384

Used by some encoders as upper bound for the length of headers.

TODO: Use proper codec-specific upper bounds.

Definition at line 33 of file encode.h.

Function Documentation

◆ ff_encode_get_frame()

int ff_encode_get_frame ( AVCodecContext avctx,
AVFrame frame 
)

Called by encoders to get the next frame for encoding.

Parameters
frameAn empty frame to be filled with data.
Returns
0 if a new reference has been successfully written to frame AVERROR(EAGAIN) if no data is currently available AVERROR_EOF if end of stream has been reached, so no more data will be available

Definition at line 205 of file encode.c.

Referenced by eb_receive_packet(), encode_simple_internal(), ff_amf_receive_packet(), ff_hw_base_encode_receive_packet(), ff_nvenc_receive_packet(), librav1e_receive_packet(), mediacodec_encode(), mf_receive_packet(), and v4l2_receive_packet().

◆ ff_get_encode_buffer()

int ff_get_encode_buffer ( AVCodecContext avctx,
AVPacket avpkt,
int64_t  size,
int  flags 
)

Get a buffer for a packet.

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

Definition at line 106 of file encode.c.

Referenced by a64multi_encode_frame(), adx_encode_frame(), amf_copy_buffer(), aptx_encode_frame(), avui_encode_frame(), bmp_encode_frame(), cng_encode_frame(), d3d12va_encode_get_coded_data(), dfpwm_enc_frame(), dnxhd_encode_picture(), dvvideo_encode_frame(), encode_apng(), encode_frame(), encode_make_refcounted(), encode_nals(), encode_picture_ls(), encode_yuv422p10(), ff_ac3_encode_frame(), fits_encode_frame(), flac_encode_frame(), g723_1_encode_frame(), hdr_encode_frame(), libcodec2_encode(), libgsm_encode_frame(), libjxl_encode_frame(), libkvazaar_encode(), liblc3_encode(), librav1e_receive_packet(), libshine_encode_frame(), libvorbis_encode_frame(), libwebp_anim_encode_frame(), libwebp_encode_frame(), libx265_encode_frame(), libxeve_encode(), mediacodec_receive(), mf_sample_to_avpacket(), mp3lame_encode_frame(), pam_encode_frame(), pcm_bluray_encode_frame(), pcm_dvd_encode_frame(), pcm_encode_frame(), pnm_encode_frame(), process_output_surface(), ra144_encode_frame(), raw_encode(), roq_dpcm_encode_frame(), s302m_encode2_frame(), sbc_encode_frame(), storeframe(), svc_encode_frame(), v308_encode_frame(), v408_encode_frame(), v410_encode_frame(), vaapi_encode_get_coded_data(), vaapi_encode_output(), vbn_encode(), vtenc_cm_to_avpacket(), vvenc_frame(), wbmp_encode_frame(), xavs2_encode_frame(), XAVS_frame(), xface_encode_frame(), xwd_encode_frame(), y41p_encode_frame(), and yuv4_encode_frame().

◆ ff_encode_alloc_frame()

int ff_encode_alloc_frame ( AVCodecContext avctx,
AVFrame frame 
)

Allocate buffers for a frame.

Encoder equivalent to ff_get_buffer().

Definition at line 847 of file encode.c.

Referenced by get_encode_buffer(), librav1e_receive_packet(), prepare_picture(), roq_encode_frame(), and svq1_encode_frame().

◆ ff_alloc_packet()

int ff_alloc_packet ( AVCodecContext avctx,
AVPacket avpkt,
int64_t  size 
)

Check AVPacket size and allocate data.

Encoders of type FF_CODEC_CB_TYPE_ENCODE can use this as a convenience to obtain a big enough buffer for the encoded bitstream.

Parameters
avctxthe AVCodecContext of the encoder
avpktThe AVPacket: on success, avpkt->data will point to a buffer of size at least size; the packet will not be refcounted. This packet must be initially blank.
sizean upper bound of the size of the packet to encode
Returns
non negative on success, negative error code on failure

Definition at line 62 of file encode.c.

Referenced by aac_encode_frame(), alac_encode_frame(), amr_wb_encode_frame(), cfhd_encode_frame(), cinepak_encode_frame(), dxv_encode(), encode_frame(), encode_png(), encode_superframe(), ff_mpv_encode_picture(), ffat_encode(), flashsv2_encode_frame(), flashsv_encode_frame(), gif_encode_frame(), hap_encode(), ilbc_encode_frame(), libopenjpeg_encode_frame(), libopus_encode(), ljpeg_encode_frame(), magy_encode_frame(), mlp_encode_frame(), MPA_encode_frame(), msrle_encode_frame(), opus_encode_frame(), pcx_encode_frame(), prores_encode_frame(), qoi_encode_frame(), qtrle_encode_frame(), roq_encode_frame(), rpza_encode_frame(), smc_encode_frame(), sunrast_encode_frame(), svq1_encode_frame(), targa_encode_frame(), tta_encode_frame(), twolame_encode_frame(), utvideo_encode_frame(), vorbis_encode_frame(), wavpack_encode_frame(), xbm_encode_frame(), and xvid_encode_frame().

◆ ff_encode_reordered_opaque()

int ff_encode_reordered_opaque ( AVCodecContext avctx,
AVPacket pkt,
const AVFrame frame 
)

Propagate user opaque values from the frame to avctx/pkt as needed.

Definition at line 235 of file encode.c.

Referenced by encode_apng(), encode_frame(), ff_encode_encode_cb(), and ff_mpv_encode_picture().

◆ ff_encode_encode_cb()

int ff_encode_encode_cb ( AVCodecContext avctx,
AVPacket avpkt,
AVFrame frame,
int *  got_packet 
)

Definition at line 248 of file encode.c.

Referenced by encode_simple_internal(), and worker().

◆ ff_encode_add_cpb_side_data()

AVCPBProperties* ff_encode_add_cpb_side_data ( AVCodecContext avctx)

Add a CPB properties side data to an encoding context.

Definition at line 909 of file encode.c.

Referenced by aac_encode_init(), aom_init(), config_enc_params(), ff_mpv_encode_init(), libx265_encode_init(), nvenc_setup_encoder(), qsv_retrieve_enc_params(), svc_encode_init(), vpx_init(), and X264_init().

◆ ff_samples_to_time_base()

static av_always_inline int64_t ff_samples_to_time_base ( const AVCodecContext avctx,
int64_t  samples 
)
static