Loading...
Searching...
No Matches
AVCodecContext Struct Reference
libavcodec » Core functions/structures.

main external API structure. More...

`#include <libavcodec/avcodec.h>`

## Data Fields

const AVClass * | av_class
| information on struct for av_log
int | log_level_offset
enum AVMediaType | codec_type
const struct AVCodec * | codec
enum AVCodecID | codec_id
unsigned int | codec_tag
| fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A').
void * | priv_data
struct AVCodecInternal * | internal
| Private context used for internal data.
void * | opaque
| Private data of the user, can be used to carry app specific stuff.
int64_t | bit_rate
| the average bitrate
int | flags
| AV_CODEC_FLAG_*.
int | flags2
| AV_CODEC_FLAG2_*.
uint8_t * | extradata
| Out-of-band global headers that may be used by some codecs.
int | extradata_size
AVRational | time_base
| This is the fundamental unit of time (in seconds) in terms of which frame timestamps are represented.
AVRational | pkt_timebase
| Timebase in which pkt_dts/pts and AVPacket.dts/pts are expressed.
AVRational | framerate
int | delay
| Codec delay.
int | width
| picture width / height.
int | height
int | coded_width
| Bitstream width / height, may be different from width/height e.g.
int | coded_height
AVRational | sample_aspect_ratio
| sample aspect ratio (0 if unknown) That is the width of a pixel divided by the height of the pixel.
enum AVPixelFormat | pix_fmt
| Pixel format, see AV_PIX_FMT_xxx.
enum AVPixelFormat | sw_pix_fmt
| Nominal unaccelerated pixel format, see AV_PIX_FMT_xxx.
enum AVColorPrimaries | color_primaries
| Chromaticity coordinates of the source primaries.
enum AVColorTransferCharacteristic | color_trc
| Color Transfer Characteristic.
enum AVColorSpace | colorspace
| YUV colorspace type.
enum AVColorRange | color_range
| MPEG vs JPEG YUV range.
enum AVChromaLocation | chroma_sample_location
| This defines the location of chroma samples.
enum AVFieldOrder | field_order
| Field order.
int | refs
| number of reference frames
int | has_b_frames
| Size of the frame reordering buffer in the decoder.
int | slice_flags
| slice flags
void(* | draw_horiz_band )(struct AVCodecContext *s, const AVFrame *src, int offset[AV_NUM_DATA_POINTERS], int y, int type, int height)
| If non NULL, 'draw_horiz_band' is called by the libavcodec decoder to draw a horizontal band.
enum AVPixelFormat(* | get_format )(struct AVCodecContext *s, const enum AVPixelFormat *fmt)
| Callback to negotiate the pixel format.
int | max_b_frames
| maximum number of B-frames between non-B-frames Note: The output will be delayed by max_b_frames+1 relative to the input.
float | b_quant_factor
| qscale factor between IP and B-frames If > 0 then the last P-frame quantizer will be used (q= lastp_q*factor+offset).
float | b_quant_offset
| qscale offset between IP and B-frames
float | i_quant_factor
| qscale factor between P- and I-frames If > 0 then the last P-frame quantizer will be used (q = lastp_q * factor + offset).
float | i_quant_offset
| qscale offset between P and I-frames
float | lumi_masking
| luminance masking (0-> disabled)
float | temporal_cplx_masking
| temporary complexity masking (0-> disabled)
float | spatial_cplx_masking
| spatial complexity masking (0-> disabled)
float | p_masking
| p block masking (0-> disabled)
float | dark_masking
| darkness masking (0-> disabled)
int | nsse_weight
| noise vs.
int | me_cmp
| motion estimation comparison function
int | me_sub_cmp
| subpixel motion estimation comparison function
int | mb_cmp
| macroblock comparison function (not supported yet)
int | ildct_cmp
| interlaced DCT comparison function
int | dia_size
| ME diamond size & shape.
int | last_predictor_count
| amount of previous MV predictors (2a+1 x 2a+1 square)
int | me_pre_cmp
| motion estimation prepass comparison function
int | pre_dia_size
| ME prepass diamond size & shape.
int | me_subpel_quality
| subpel ME quality
int | me_range
| maximum motion estimation search range in subpel units If 0 then no limit.
int | mb_decision
| macroblock decision mode
uint16_t * | intra_matrix
| custom intra quantization matrix Must be allocated with the av_malloc() family of functions, and will be freed in avcodec_free_context().
uint16_t * | inter_matrix
| custom inter quantization matrix Must be allocated with the av_malloc() family of functions, and will be freed in avcodec_free_context().
uint16_t * | chroma_intra_matrix
| custom intra quantization matrix
int | mb_lmin
| minimum MB Lagrange multiplier
int | mb_lmax
| maximum MB Lagrange multiplier
int | bidir_refine
int | keyint_min
| minimum GOP size
int | gop_size
| the number of pictures in a group of pictures, or 0 for intra_only
int | mv0_threshold
| Note: Value depends upon the compare function used for fullpel ME.
int | slices
| Number of slices.
int | sample_rate
| samples per second
enum AVSampleFormat | sample_fmt
| audio sample format
AVChannelLayout | ch_layout
| Audio channel layout.
int | frame_size
| Number of samples per channel in an audio frame.
int | block_align
| number of bytes per packet if constant and known or 0 Used by some WAV based audio codecs.
int | cutoff
| Audio cutoff bandwidth (0 means "automatic").
enum AVAudioServiceType | audio_service_type
| Type of service that the audio stream conveys.
enum AVSampleFormat | request_sample_fmt
| desired sample format
int | initial_padding
| Audio only.
int | trailing_padding
| Audio only.
int | seek_preroll
| Number of samples to skip after a discontinuity.
int(* | get_buffer2 )(struct AVCodecContext *s, AVFrame *frame, int flags)
| This callback is called at the beginning of each frame to get data buffer(s) for it.
int | bit_rate_tolerance
| number of bits the bitstream is allowed to diverge from the reference.
int | global_quality
| Global quality for codecs which cannot change it per frame.
int | compression_level
float | qcompress
| amount of qscale change between easy & hard scenes (0.0-1.0)
float | qblur
| amount of qscale smoothing over time (0.0-1.0)
int | qmin
| minimum quantizer
int | qmax
| maximum quantizer
int | max_qdiff
| maximum quantizer difference between frames
int | rc_buffer_size
| decoder bitstream buffer size
int | rc_override_count
| ratecontrol override, see RcOverride
RcOverride * | rc_override
int64_t | rc_max_rate
| maximum bitrate
int64_t | rc_min_rate
| minimum bitrate
float | rc_max_available_vbv_use
| Ratecontrol attempt to use, at maximum, of what can be used without an underflow.
float | rc_min_vbv_overflow_use
| Ratecontrol attempt to use, at least, times the amount needed to prevent a vbv overflow.
int | rc_initial_buffer_occupancy
| Number of bits which should be loaded into the rc buffer before decoding starts.
int | trellis
| trellis RD quantization
char * | stats_out
| pass1 encoding statistics output buffer
char * | stats_in
| pass2 encoding statistics input buffer Concatenated stuff from stats_out of pass1 should be placed here.
int | workaround_bugs
| Work around bugs in encoders which sometimes cannot be detected automatically.
int | strict_std_compliance
| strictly follow the standard (MPEG-4, ...).
int | error_concealment
| error concealment flags
int | debug
| debug
int | err_recognition
| Error recognition; may misdetect some more or less valid parts as errors.
const struct AVHWAccel * | hwaccel
| Hardware accelerator in use.
void * | hwaccel_context
| Legacy hardware accelerator context.
AVBufferRef * | hw_frames_ctx
| A reference to the AVHWFramesContext describing the input (for encoding) or output (decoding) frames.
AVBufferRef * | hw_device_ctx
| A reference to the AVHWDeviceContext describing the device which will be used by a hardware encoder/decoder.
int | hwaccel_flags
| Bit set of AV_HWACCEL_FLAG_* flags, which affect hardware accelerated decoding (if active).
int | extra_hw_frames
| Video decoding only.
uint64_t | error [AV_NUM_DATA_POINTERS]
| error
int | dct_algo
| DCT algorithm, see FF_DCT_* below.
int | idct_algo
| IDCT algorithm, see FF_IDCT_* below.
int | bits_per_coded_sample
| bits per sample/pixel from the demuxer (needed for huffyuv).
int | bits_per_raw_sample
| Bits per sample/pixel of internal libavcodec pixel/sample format.
int | thread_count
| thread count is used to decide how many independent tasks should be passed to execute()
int | thread_type
| Which multithreading methods to use.
int | active_thread_type
| Which multithreading methods are in use by the codec.
int(* | execute )(struct AVCodecContext *c, int(*func)(struct AVCodecContext *c2, void *arg), void *arg2, int *ret, int count, int size)
| The codec may call this to execute several independent things.
int(* | execute2 )(struct AVCodecContext *c, int(*func)(struct AVCodecContext *c2, void *arg, int jobnr, int threadnr), void *arg2, int *ret, int count)
| The codec may call this to execute several independent things.
int | profile
| profile
int | level
| Encoding level descriptor.
enum AVDiscard | skip_loop_filter
| Skip loop filtering for selected frames.
enum AVDiscard | skip_idct
| Skip IDCT/dequantization for selected frames.
enum AVDiscard | skip_frame
| Skip decoding for selected frames.
int | skip_alpha
| Skip processing alpha if supported by codec.
int | skip_top
| Number of macroblock rows at the top which are skipped.
int | skip_bottom
| Number of macroblock rows at the bottom which are skipped.
int | lowres
| low resolution decoding, 1-> 1/2 size, 2->1/4 size
const struct AVCodecDescriptor * | codec_descriptor
| AVCodecDescriptor.
char * | sub_charenc
| Character encoding of the input subtitles file.
int | sub_charenc_mode
| Subtitles character encoding mode.
int | subtitle_header_size
| Header containing style information for text subtitles.
uint8_t * | subtitle_header
uint8_t * | dump_separator
| dump format separator.
char * | codec_whitelist
| ',' separated list of allowed decoders.
AVPacketSideData * | coded_side_data
| Additional data associated with the entire coded stream.
int | nb_coded_side_data
int | export_side_data
| Bit set of AV_CODEC_EXPORT_DATA_* flags, which affects the kind of metadata exported in frame, packet, or coded stream side data by decoders and encoders.
int64_t | max_pixels
| The number of pixels per image to maximally accept.
int | apply_cropping
| Video decoding only.
int | discard_damaged_percentage
| The percentage of damaged samples to discard a frame.
int64_t | max_samples
| The number of samples per frame to maximally accept.
int(* | get_encode_buffer )(struct AVCodecContext *s, AVPacket *pkt, int flags)
| This callback is called at the beginning of each packet to get a data buffer for it.
int64_t | frame_num
| Frame counter, set by libavcodec.
int * | side_data_prefer_packet
| Decoding only.
unsigned | nb_side_data_prefer_packet
| Number of entries in side_data_prefer_packet.
AVFrameSideData ** | decoded_side_data
| Array containing static side data, such as HDR10 CLL / MDCV structures.
int | nb_decoded_side_data
enum AVAlphaMode | alpha_mode
| Indicates how the alpha channel of the video is represented.

## Detailed Description

main external API structure.

New fields can be added to the end with minor version bumps. Removal, reordering and changes to existing fields require a major version bump. You can use AVOptions (av_opt* / av_set/get*()) to access these fields from user applications. The name string for AVOptions options matches the associated command line parameter name and can be found in libavcodec/options_table.h The AVOption/command line parameter names differ in some cases from the C structure field names for historic reasons or brevity. sizeof(AVCodecContext) must not be used outside libav*.

Examples
  decode_audio.c, decode_filter_audio.c, decode_filter_video.c, decode_video.c, demux_decode.c, encode_audio.c, encode_video.c, extract_mvs.c, hw_decode.c, mux.c, qsv_decode.c, qsv_transcode.c, transcode.c, transcode_aac.c, vaapi_encode.c, and vaapi_transcode.c.

Definition at line 439 of file avcodec.h.

## Field Documentation

## av_class

const AVClass* AVCodecContext::av_class

information on struct for av_log

- set by avcodec_alloc_context3

Definition at line 444 of file avcodec.h.

## log_level_offset

int AVCodecContext::log_level_offset

Definition at line 445 of file avcodec.h.

## codec_type

enum AVMediaType AVCodecContext::codec_type

Examples
  transcode.c.

Definition at line 447 of file avcodec.h.

Referenced by open_input_file().

## codec

const struct AVCodec* AVCodecContext::codec

Examples
  demux_decode.c, mux.c, and transcode.c.

Definition at line 448 of file avcodec.h.

Referenced by decode_packet(), and open_audio().

## codec_id

enum AVCodecID AVCodecContext::codec_id

Examples
  mux.c.

Definition at line 449 of file avcodec.h.

Referenced by add_stream().

## codec_tag

unsigned int AVCodecContext::codec_tag

fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A').

This is used to work around some encoder bugs. A demuxer should set this to what is stored in the field used to identify the codec. If there are multiple such fields in a container then the demuxer should choose the one which maximizes the information about the used codec. If the codec tag field in a container is larger than 32 bits then the demuxer should remap the longer ID to 32 bits with a table or other structure. Alternatively a new extra_codec_tag + size could be added but for this a clear advantage must be demonstrated first.

- encoding: Set by user, if not then the default based on codec_id will be used.
- decoding: Set by user, will be converted to uppercase by libavcodec during init.

Definition at line 464 of file avcodec.h.

## priv_data

void* AVCodecContext::priv_data

Examples
  encode_video.c, and qsv_transcode.c.

Definition at line 466 of file avcodec.h.

Referenced by dynamic_set_parameter(), and main().

## internal

struct AVCodecInternal* AVCodecContext::internal

Private context used for internal data.

Unlike priv_data, this is not codec-specific. It is used in general libavcodec functions.

Definition at line 474 of file avcodec.h.

## opaque

void* AVCodecContext::opaque

Private data of the user, can be used to carry app specific stuff.

- encoding: Set by user.
- decoding: Set by user.

Definition at line 481 of file avcodec.h.

## bit_rate

int64_t AVCodecContext::bit_rate

the average bitrate

- encoding: Set by user; unused for constant quantizer encoding.
- decoding: Set by user, may be overwritten by libavcodec if this info is available in the stream

Examples
  encode_audio.c, encode_video.c, mux.c, and transcode_aac.c.

Definition at line 489 of file avcodec.h.

Referenced by add_stream(), main(), and open_output_file().

## flags

int AVCodecContext::flags

AV_CODEC_FLAG_*.

- encoding: Set by user.
- decoding: Set by user.

Examples
  mux.c, transcode.c, and transcode_aac.c.

Definition at line 496 of file avcodec.h.

Referenced by add_stream(), open_output_file(), and open_output_file().

## flags2

int AVCodecContext::flags2

AV_CODEC_FLAG2_*.

- encoding: Set by user.
- decoding: Set by user.

Definition at line 503 of file avcodec.h.

## extradata

uint8_t* AVCodecContext::extradata

Out-of-band global headers that may be used by some codecs.

- decoding: Should be set by the caller when available (typically from a demuxer) before opening the decoder; some decoders require this to be set and will fail to initialize otherwise.

  The array must be allocated with the av_malloc() family of functions; allocated size must be at least AV_INPUT_BUFFER_PADDING_SIZE bytes larger than extradata_size.

- encoding: May be set by the encoder in avcodec_open2() (possibly depending on whether the AV_CODEC_FLAG_GLOBAL_HEADER flag is set).

After being set, the array is owned by the codec and freed in avcodec_free_context().

Definition at line 522 of file avcodec.h.

## extradata_size

int AVCodecContext::extradata_size

Definition at line 523 of file avcodec.h.

## time_base

AVRational AVCodecContext::time_base

This is the fundamental unit of time (in seconds) in terms of which frame timestamps are represented.

For fixed-fps content, timebase should be 1/framerate and timestamp increments should be identically 1. This often, but not always is the inverse of the frame rate or field rate for video. 1/time_base is not the average frame rate if the frame rate is not constant.

Like containers, elementary streams also can store timestamps, 1/time_base is the unit in which these timestamps are specified. As example of such codec time base see ISO/IEC 14496-2:2001(E) vop_time_increment_resolution and fixed_vop_rate (fixed_vop_rate == 0 implies that it is different from the framerate)

- encoding: MUST be set by user.
- decoding: unused.

Examples
  encode_video.c, mux.c, transcode.c, and vaapi_encode.c.

Definition at line 543 of file avcodec.h.

Referenced by add_stream(), encode_write_frame(), get_video_frame(), main(), main(), open_output_file(), write_audio_frame(), and write_frame().

## pkt_timebase

AVRational AVCodecContext::pkt_timebase

Timebase in which pkt_dts/pts and AVPacket.dts/pts are expressed.

- encoding: unused.
- decoding: set by user.

Examples
  transcode.c, and transcode_aac.c.

Definition at line 550 of file avcodec.h.

Referenced by open_input_file(), and open_input_file().

## framerate

AVRational AVCodecContext::framerate

- decoding: For codecs that store a framerate value in the compressed bitstream, the decoder may export it here. { 0, 1} when unknown.
- encoding: May be used to signal the framerate of CFR content to an encoder.

Examples
  encode_video.c, qsv_transcode.c, transcode.c, and vaapi_encode.c.

Definition at line 559 of file avcodec.h.

Referenced by dynamic_set_parameter(), main(), main(), and open_input_file().

## delay

int AVCodecContext::delay

Codec delay.

Encoding: Number of frames delay there will be from the encoder input to the decoder output. (we assume the decoder matches the spec) Decoding: Number of frames delay in addition to what a standard decoder as specified in the spec would produce.

Video: Number of frames the decoded output will be delayed relative to the encoded input.

Audio: For encoding, this field is unused (see initial_padding).

For decoding, this is the number of samples the decoder needs to output before the decoder's output is valid. When seeking, you should start decoding this many samples prior to your desired seek point.

- encoding: Set by libavcodec.
- decoding: Set by libavcodec.

Definition at line 583 of file avcodec.h.

## width

int AVCodecContext::width

picture width / height.

Note
  Those fields may not match the values of the last AVFrame output by avcodec_receive_frame() due frame reordering.

- encoding: MUST be set by user.
- decoding: May be set by the user before opening the decoder if known e.g. from the container. Some decoders will require the dimensions to be set by the caller. During decoding, the decoder may overwrite those values as required while parsing the data.

Examples
  encode_video.c, mux.c, transcode.c, and vaapi_encode.c.

Definition at line 600 of file avcodec.h.

Referenced by add_stream(), get_video_frame(), main(), main(), open_output_file(), and open_video().

## height

int AVCodecContext::height

Examples
  encode_video.c, mux.c, transcode.c, and vaapi_encode.c.

Definition at line 600 of file avcodec.h.

Referenced by add_stream(), get_video_frame(), main(), main(), open_output_file(), and open_video().

## coded_width

int AVCodecContext::coded_width

Bitstream width / height, may be different from width/height e.g.

when the decoded frame is cropped before being output or lowres is enabled.

Note
  Those field may not match the value of the last AVFrame output by avcodec_receive_frame() due frame reordering.

- encoding: unused
- decoding: May be set by the user before opening the decoder if known e.g. from the container. During decoding, the decoder may overwrite those values as required while parsing the data.

Definition at line 615 of file avcodec.h.

## coded_height

int AVCodecContext::coded_height

Definition at line 615 of file avcodec.h.

## sample_aspect_ratio

AVRational AVCodecContext::sample_aspect_ratio

sample aspect ratio (0 if unknown) That is the width of a pixel divided by the height of the pixel.

Numerator and denominator must be relatively prime and smaller than 256 for some video standards.

- encoding: Set by user.
- decoding: Set by libavcodec.

Examples
  transcode.c, and vaapi_encode.c.

Definition at line 624 of file avcodec.h.

Referenced by main(), and open_output_file().

## pix_fmt

enum AVPixelFormat AVCodecContext::pix_fmt

Pixel format, see AV_PIX_FMT_xxx.

May be set by the demuxer if known from headers. May be overridden by the decoder if it knows better.

Note
  This field may not match the value of the last AVFrame output by avcodec_receive_frame() due frame reordering.

- encoding: Set by user.
- decoding: Set by user if known, overridden by libavcodec while parsing the data.

Examples
  encode_video.c, mux.c, transcode.c, and vaapi_encode.c.

Definition at line 639 of file avcodec.h.

Referenced by add_stream(), get_video_frame(), init_filter(), main(), main(), open_output_file(), and open_video().

## sw_pix_fmt

enum AVPixelFormat AVCodecContext::sw_pix_fmt

Nominal unaccelerated pixel format, see AV_PIX_FMT_xxx.

- encoding: unused.
- decoding: Set by libavcodec before calling get_format()

Definition at line 646 of file avcodec.h.

## color_primaries

enum AVColorPrimaries AVCodecContext::color_primaries

Chromaticity coordinates of the source primaries.

- encoding: Set by user
- decoding: Set by libavcodec

Definition at line 653 of file avcodec.h.

## color_trc

enum AVColorTransferCharacteristic AVCodecContext::color_trc

Color Transfer Characteristic.

- encoding: Set by user
- decoding: Set by libavcodec

Definition at line 660 of file avcodec.h.

## colorspace

enum AVColorSpace AVCodecContext::colorspace

YUV colorspace type.

- encoding: Set by user
- decoding: Set by libavcodec

Definition at line 667 of file avcodec.h.

## color_range

enum AVColorRange AVCodecContext::color_range

MPEG vs JPEG YUV range.

- encoding: Set by user to override the default output color range value, If not specified, libavcodec sets the color range depending on the output format.
- decoding: Set by libavcodec, can be set by the user to propagate the color range to components reading from the decoder context.

Definition at line 677 of file avcodec.h.

## chroma_sample_location

enum AVChromaLocation AVCodecContext::chroma_sample_location

This defines the location of chroma samples.

- encoding: Set by user
- decoding: Set by libavcodec

Definition at line 684 of file avcodec.h.

## field_order

enum AVFieldOrder AVCodecContext::field_order

Field order.

- encoding: set by libavcodec
- decoding: Set by user.

Definition at line 690 of file avcodec.h.

## refs

int AVCodecContext::refs

number of reference frames

- encoding: Set by user.
- decoding: Set by lavc.

Definition at line 697 of file avcodec.h.

## has_b_frames

int AVCodecContext::has_b_frames

Size of the frame reordering buffer in the decoder.

For MPEG-2 it is 1 IPB or 0 low delay IP.

- encoding: Set by libavcodec.
- decoding: Set by libavcodec.

Definition at line 705 of file avcodec.h.

## slice_flags

int AVCodecContext::slice_flags

slice flags

- encoding: unused
- decoding: Set by user.

Definition at line 712 of file avcodec.h.

## draw_horiz_band

void(* AVCodecContext::draw_horiz_band) (struct AVCodecContext *s, const AVFrame *src, int offset[AV_NUM_DATA_POINTERS], int y, int type, int height)

If non NULL, 'draw_horiz_band' is called by the libavcodec decoder to draw a horizontal band.

It improves cache usage. Not all codecs can do that. You must check the codec capabilities beforehand. When multithreading is used, it may be called from multiple threads at the same time; threads might draw different parts of the same AVFrame, or multiple AVFrames, and there is no guarantee that slices will be drawn in order. The function is also used by hardware acceleration APIs. It is called at least once during frame decoding to pass the data needed for hardware render. In that mode instead of pixel data, AVFrame points to a structure specific to the acceleration API. The application reads the structure and can change some fields to indicate progress or mark state.

- encoding: unused
- decoding: Set by user.
  Parameters

    height | the height of the slice
    y | the y position of the slice
    type | 1->top field, 2->bottom field, 3->frame
    offset | offset into the AVFrame.data from which the slice should be read

Definition at line 740 of file avcodec.h.

## get_format

enum AVPixelFormat(* AVCodecContext::get_format) (struct AVCodecContext *s, const enum AVPixelFormat *fmt)

Callback to negotiate the pixel format.

Decoding only, may be set by the caller before avcodec_open2().

Called by some decoders to select the pixel format that will be used for the output frames. This is mainly used to set up hardware acceleration, then the provided format list contains the corresponding hwaccel pixel formats alongside the "software" one. The software pixel format may also be retrieved from sw_pix_fmt.

This callback will be called when the coded frame properties (such as resolution, pixel format, etc.) change and more than one output format is supported for those new properties. If a hardware pixel format is chosen and initialization for it fails, the callback may be called again immediately.

This callback may be called from different threads if the decoder is multi-threaded, but not from more than one thread simultaneously.

Parameters

  fmt | list of formats which may be used in the current configuration, terminated by AV_PIX_FMT_NONE.

Warning
  Behavior is undefined if the callback returns a value other than one of the formats in fmt or AV_PIX_FMT_NONE.

Returns
  the chosen format or AV_PIX_FMT_NONE

Definition at line 740 of file avcodec.h.

## max_b_frames

int AVCodecContext::max_b_frames

maximum number of B-frames between non-B-frames Note: The output will be delayed by max_b_frames+1 relative to the input.

- encoding: Set by user.
- decoding: unused

Examples
  encode_video.c, and mux.c.

Definition at line 777 of file avcodec.h.

Referenced by add_stream(), and main().

## b_quant_factor

float AVCodecContext::b_quant_factor

qscale factor between IP and B-frames If > 0 then the last P-frame quantizer will be used (q= lastp_q*factor+offset).

If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset).

- encoding: Set by user.
- decoding: unused

Definition at line 786 of file avcodec.h.

## b_quant_offset

float AVCodecContext::b_quant_offset

qscale offset between IP and B-frames

- encoding: Set by user.
- decoding: unused

Definition at line 793 of file avcodec.h.

## i_quant_factor

float AVCodecContext::i_quant_factor

qscale factor between P- and I-frames If > 0 then the last P-frame quantizer will be used (q = lastp_q * factor + offset).

If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset).

- encoding: Set by user.
- decoding: unused

Definition at line 802 of file avcodec.h.

## i_quant_offset

float AVCodecContext::i_quant_offset

qscale offset between P and I-frames

- encoding: Set by user.
- decoding: unused

Definition at line 809 of file avcodec.h.

## lumi_masking

float AVCodecContext::lumi_masking

luminance masking (0-> disabled)

- encoding: Set by user.
- decoding: unused

Definition at line 816 of file avcodec.h.

## temporal_cplx_masking

float AVCodecContext::temporal_cplx_masking

temporary complexity masking (0-> disabled)

- encoding: Set by user.
- decoding: unused

Definition at line 823 of file avcodec.h.

## spatial_cplx_masking

float AVCodecContext::spatial_cplx_masking

spatial complexity masking (0-> disabled)

- encoding: Set by user.
- decoding: unused

Definition at line 830 of file avcodec.h.

## p_masking

float AVCodecContext::p_masking

p block masking (0-> disabled)

- encoding: Set by user.
- decoding: unused

Definition at line 837 of file avcodec.h.

## dark_masking

float AVCodecContext::dark_masking

darkness masking (0-> disabled)

- encoding: Set by user.
- decoding: unused

Definition at line 844 of file avcodec.h.

## nsse_weight

int AVCodecContext::nsse_weight

noise vs.

sse weight for the nsse comparison function

- encoding: Set by user.
- decoding: unused

Definition at line 851 of file avcodec.h.

## me_cmp

int AVCodecContext::me_cmp

motion estimation comparison function

- encoding: Set by user.
- decoding: unused

Definition at line 858 of file avcodec.h.

## me_sub_cmp

int AVCodecContext::me_sub_cmp

subpixel motion estimation comparison function

- encoding: Set by user.
- decoding: unused

Definition at line 864 of file avcodec.h.

## mb_cmp

int AVCodecContext::mb_cmp

macroblock comparison function (not supported yet)

- encoding: Set by user.
- decoding: unused

Definition at line 870 of file avcodec.h.

## ildct_cmp

int AVCodecContext::ildct_cmp

interlaced DCT comparison function

- encoding: Set by user.
- decoding: unused

Definition at line 876 of file avcodec.h.

## dia_size

int AVCodecContext::dia_size

ME diamond size & shape.

- encoding: Set by user.
- decoding: unused

Definition at line 900 of file avcodec.h.

## last_predictor_count

int AVCodecContext::last_predictor_count

amount of previous MV predictors (2a+1 x 2a+1 square)

- encoding: Set by user.
- decoding: unused

Definition at line 907 of file avcodec.h.

## me_pre_cmp

int AVCodecContext::me_pre_cmp

motion estimation prepass comparison function

- encoding: Set by user.
- decoding: unused

Definition at line 914 of file avcodec.h.

## pre_dia_size

int AVCodecContext::pre_dia_size

ME prepass diamond size & shape.

- encoding: Set by user.
- decoding: unused

Definition at line 921 of file avcodec.h.

## me_subpel_quality

int AVCodecContext::me_subpel_quality

subpel ME quality

- encoding: Set by user.
- decoding: unused

Definition at line 928 of file avcodec.h.

## me_range

int AVCodecContext::me_range

maximum motion estimation search range in subpel units If 0 then no limit.

- encoding: Set by user.
- decoding: unused

Definition at line 937 of file avcodec.h.

## mb_decision

int AVCodecContext::mb_decision

macroblock decision mode

- encoding: Set by user.
- decoding: unused

Examples
  mux.c.

Definition at line 944 of file avcodec.h.

Referenced by add_stream().

## intra_matrix

uint16_t* AVCodecContext::intra_matrix

custom intra quantization matrix Must be allocated with the av_malloc() family of functions, and will be freed in avcodec_free_context().

- encoding: Set/allocated by user, freed by libavcodec. Can be NULL.
- decoding: Set/allocated/freed by libavcodec.

Definition at line 956 of file avcodec.h.

## inter_matrix

uint16_t* AVCodecContext::inter_matrix

custom inter quantization matrix Must be allocated with the av_malloc() family of functions, and will be freed in avcodec_free_context().

- encoding: Set/allocated by user, freed by libavcodec. Can be NULL.
- decoding: Set/allocated/freed by libavcodec.

Definition at line 965 of file avcodec.h.

## chroma_intra_matrix

uint16_t* AVCodecContext::chroma_intra_matrix

custom intra quantization matrix

- encoding: Set by user, can be NULL.
- decoding: unused.

Definition at line 972 of file avcodec.h.

## mb_lmin

int AVCodecContext::mb_lmin

minimum MB Lagrange multiplier

- encoding: Set by user.
- decoding: unused

Definition at line 990 of file avcodec.h.

## mb_lmax

int AVCodecContext::mb_lmax

maximum MB Lagrange multiplier

- encoding: Set by user.
- decoding: unused

Definition at line 997 of file avcodec.h.

## bidir_refine

int AVCodecContext::bidir_refine

- encoding: Set by user.
- decoding: unused

Definition at line 1003 of file avcodec.h.

## keyint_min

int AVCodecContext::keyint_min

minimum GOP size

- encoding: Set by user.
- decoding: unused

Definition at line 1010 of file avcodec.h.

## gop_size

int AVCodecContext::gop_size

the number of pictures in a group of pictures, or 0 for intra_only

- encoding: Set by user.
- decoding: unused

Examples
  encode_video.c, and mux.c.

Definition at line 1017 of file avcodec.h.

Referenced by add_stream(), and main().

## mv0_threshold

int AVCodecContext::mv0_threshold

Note: Value depends upon the compare function used for fullpel ME.

- encoding: Set by user.
- decoding: unused

Definition at line 1024 of file avcodec.h.

## slices

int AVCodecContext::slices

Number of slices.

Indicates number of picture subdivisions. Used for parallelized decoding.

- encoding: Set by user
- decoding: unused

Definition at line 1033 of file avcodec.h.

## sample_rate

int AVCodecContext::sample_rate

samples per second

Examples
  decode_audio.c, encode_audio.c, mux.c, transcode.c, and transcode_aac.c.

Definition at line 1036 of file avcodec.h.

Referenced by add_stream(), init_filter(), init_output_frame(), init_resampler(), main(), open_audio(), open_output_file(), open_output_file(), and write_audio_frame().

## sample_fmt

enum AVSampleFormat AVCodecContext::sample_fmt

audio sample format

- encoding: Set by user.
- decoding: Set by libavcodec. sample format

Examples
  decode_audio.c, encode_audio.c, mux.c, transcode.c, and transcode_aac.c.

Definition at line 1043 of file avcodec.h.

Referenced by add_stream(), init_converted_samples(), init_fifo(), init_filter(), init_output_frame(), init_resampler(), main(), open_audio(), open_output_file(), and open_output_file().

## ch_layout

AVChannelLayout AVCodecContext::ch_layout

Audio channel layout.

- encoding: must be set by the caller, to one of AVCodec.ch_layouts.
- decoding: may be set by the caller if known e.g. from the container. The decoder can then override during decoding as needed.

Examples
  decode_audio.c, encode_audio.c, mux.c, transcode.c, and transcode_aac.c.

Definition at line 1051 of file avcodec.h.

Referenced by add_stream(), init_converted_samples(), init_fifo(), init_filter(), init_output_frame(), init_resampler(), main(), open_audio(), open_output_file(), and open_output_file().

## frame_size

int AVCodecContext::frame_size

Number of samples per channel in an audio frame.

- encoding: set by libavcodec in avcodec_open2(). Each submitted frame except the last must contain exactly frame_size samples per channel. May be 0 when the codec has AV_CODEC_CAP_VARIABLE_FRAME_SIZE set, then the frame size is not restricted.
- decoding: may be set by some decoders to indicate constant frame size

Examples
  encode_audio.c, mux.c, transcode.c, and transcode_aac.c.

Definition at line 1063 of file avcodec.h.

Referenced by init_filter(), load_encode_and_write(), main(), and open_audio().

## block_align

int AVCodecContext::block_align

number of bytes per packet if constant and known or 0 Used by some WAV based audio codecs.

Definition at line 1069 of file avcodec.h.

## cutoff

int AVCodecContext::cutoff

Audio cutoff bandwidth (0 means "automatic").

- encoding: Set by user.
- decoding: unused

Definition at line 1076 of file avcodec.h.

## audio_service_type

enum AVAudioServiceType AVCodecContext::audio_service_type

Type of service that the audio stream conveys.

- encoding: Set by user.
- decoding: Set by libavcodec.

Definition at line 1083 of file avcodec.h.

## request_sample_fmt

enum AVSampleFormat AVCodecContext::request_sample_fmt

desired sample format

- encoding: Not used.
- decoding: Set by user. Decoder will decode to this format if it can.

Definition at line 1091 of file avcodec.h.

## initial_padding

int AVCodecContext::initial_padding

Audio only.

The number of "priming" samples (padding) inserted by the encoder at the beginning of the audio. I.e. this number of leading decoded samples must be discarded by the caller to get the original audio without leading padding.

- decoding: unused
- encoding: Set by libavcodec. The timestamps on the output packets are adjusted by the encoder so that they always refer to the first sample of the data actually contained in the packet, including any added padding. E.g. if the timebase is 1/samplerate and the timestamp of the first input sample is 0, the timestamp of the first output packet will be -initial_padding.

Definition at line 1108 of file avcodec.h.

## trailing_padding

int AVCodecContext::trailing_padding

Audio only.

The amount of padding (in samples) appended by the encoder to the end of the audio. I.e. this number of decoded samples must be discarded by the caller from the end of the stream to get the original audio without any trailing padding.

- decoding: unused
- encoding: unused

Definition at line 1119 of file avcodec.h.

## seek_preroll

int AVCodecContext::seek_preroll

Number of samples to skip after a discontinuity.

- decoding: unused
- encoding: set by libavcodec

Definition at line 1126 of file avcodec.h.

## get_buffer2

int(* AVCodecContext::get_buffer2) (struct AVCodecContext *s, AVFrame *frame, int flags)

This callback is called at the beginning of each frame to get data buffer(s) for it.

There may be one contiguous buffer for all the data or there may be a buffer per each data plane or anything in between. What this means is, you may set however many entries in buf[] you feel necessary. Each buffer must be reference-counted using the AVBuffer API (see description of buf[] below).

The following fields will be set in the frame before this callback is called:

- format
- width, height (video only)
- sample_rate, channel_layout, nb_samples (audio only) Their values may differ from the corresponding values in AVCodecContext. This callback must use the frame values, not the codec context values, to calculate the required buffer size.

This callback must fill the following fields in the frame:

- data[]
- linesize[]
- extended_data:
  - if the data is planar audio with more than 8 channels, then this callback must allocate and fill extended_data to contain all pointers to all data planes. data[] must hold as many pointers as it can. extended_data must be allocated with av_malloc() and will be freed in av_frame_unref().
  - otherwise extended_data must point to data
- buf[] must contain one or more pointers to AVBufferRef structures. Each of the frame's data and extended_data pointers must be contained in these. That is, one AVBufferRef for each allocated chunk of memory, not necessarily one AVBufferRef per data[] entry. See: av_buffer_create(), av_buffer_alloc(), and av_buffer_ref().
- extended_buf and nb_extended_buf must be allocated with av_malloc() by this callback and filled with the extra buffers if there are more buffers than buf[] can hold. extended_buf will be freed in av_frame_unref(). Decoders will generally initialize the whole buffer before it is output but it can in rare error conditions happen that uninitialized data is passed through.
  Important
    The buffers returned by get_buffer* should thus not contain sensitive data.
  If AV_CODEC_CAP_DR1 is not set then get_buffer2() must call avcodec_default_get_buffer2() instead of providing buffers allocated by some other means.

Each data plane must be aligned to the maximum required by the target CPU.

See also
  avcodec_default_get_buffer2()

Video:

If AV_GET_BUFFER_FLAG_REF is set in flags then the frame may be reused (read and/or written to if it is writable) later by libavcodec.

avcodec_align_dimensions2() should be used to find the required width and height, as they normally need to be rounded up to the next multiple of 16.

Some decoders do not support linesizes changing between frames.

If frame multithreading is used, this callback may be called from a different thread, but not from more than one at once. Does not need to be reentrant.

See also
  avcodec_align_dimensions2()

Audio:

Decoders request a buffer of a particular size by setting AVFrame.nb_samples prior to calling get_buffer2(). The decoder may, however, utilize only part of the buffer by setting AVFrame.nb_samples to a smaller value in the output frame.

As a convenience, av_samples_get_buffer_size() and av_samples_fill_arrays() in libavutil may be used by custom get_buffer2() functions to find the required data size and to fill data pointers and linesize. In AVFrame.linesize, only linesize[0] may be set for audio since all planes must be the same size.

See also
  av_samples_get_buffer_size(), av_samples_fill_arrays()

- encoding: unused
- decoding: Set by libavcodec, user can override.

Definition at line 1212 of file avcodec.h.

## bit_rate_tolerance

int AVCodecContext::bit_rate_tolerance

number of bits the bitstream is allowed to diverge from the reference.

the reference can be CBR (for CBR pass1) or VBR (for pass2)

- encoding: Set by user; unused for constant quantizer encoding.
- decoding: unused

Definition at line 1221 of file avcodec.h.

## global_quality

int AVCodecContext::global_quality

Global quality for codecs which cannot change it per frame.

This should be proportional to MPEG-1/2/4 qscale.

- encoding: Set by user.
- decoding: unused

Definition at line 1229 of file avcodec.h.

## compression_level

int AVCodecContext::compression_level

- encoding: Set by user.
- decoding: unused

Definition at line 1235 of file avcodec.h.

## qcompress

float AVCodecContext::qcompress

amount of qscale change between easy & hard scenes (0.0-1.0)

Definition at line 1238 of file avcodec.h.

## qblur

float AVCodecContext::qblur

amount of qscale smoothing over time (0.0-1.0)

Definition at line 1239 of file avcodec.h.

## qmin

int AVCodecContext::qmin

minimum quantizer

- encoding: Set by user.
- decoding: unused

Definition at line 1246 of file avcodec.h.

## qmax

int AVCodecContext::qmax

maximum quantizer

- encoding: Set by user.
- decoding: unused

Definition at line 1253 of file avcodec.h.

## max_qdiff

int AVCodecContext::max_qdiff

maximum quantizer difference between frames

- encoding: Set by user.
- decoding: unused

Definition at line 1260 of file avcodec.h.

## rc_buffer_size

int AVCodecContext::rc_buffer_size

decoder bitstream buffer size

- encoding: Set by user.
- decoding: May be set by libavcodec.

Definition at line 1267 of file avcodec.h.

## rc_override_count

int AVCodecContext::rc_override_count

ratecontrol override, see RcOverride

- encoding: Allocated/set/freed by user.
- decoding: unused

Definition at line 1274 of file avcodec.h.

## rc_override

RcOverride* AVCodecContext::rc_override

Definition at line 1275 of file avcodec.h.

## rc_max_rate

int64_t AVCodecContext::rc_max_rate

maximum bitrate

- encoding: Set by user.
- decoding: Set by user, may be overwritten by libavcodec.

Definition at line 1282 of file avcodec.h.

## rc_min_rate

int64_t AVCodecContext::rc_min_rate

minimum bitrate

- encoding: Set by user.
- decoding: unused

Definition at line 1289 of file avcodec.h.

## rc_max_available_vbv_use

float AVCodecContext::rc_max_available_vbv_use

Ratecontrol attempt to use, at maximum, of what can be used without an underflow.

- encoding: Set by user.
- decoding: unused.

Definition at line 1296 of file avcodec.h.

## rc_min_vbv_overflow_use

float AVCodecContext::rc_min_vbv_overflow_use

Ratecontrol attempt to use, at least, times the amount needed to prevent a vbv overflow.

- encoding: Set by user.
- decoding: unused.

Definition at line 1303 of file avcodec.h.

## rc_initial_buffer_occupancy

int AVCodecContext::rc_initial_buffer_occupancy

Number of bits which should be loaded into the rc buffer before decoding starts.

- encoding: Set by user.
- decoding: unused

Definition at line 1310 of file avcodec.h.

## trellis

int AVCodecContext::trellis

trellis RD quantization

- encoding: Set by user.
- decoding: unused

Definition at line 1317 of file avcodec.h.

## stats_out

char* AVCodecContext::stats_out

pass1 encoding statistics output buffer

- encoding: Set by libavcodec.
- decoding: unused

Definition at line 1324 of file avcodec.h.

## stats_in

char* AVCodecContext::stats_in

pass2 encoding statistics input buffer Concatenated stuff from stats_out of pass1 should be placed here.

- encoding: Allocated/set/freed by user.
- decoding: unused

Definition at line 1332 of file avcodec.h.

## workaround_bugs

int AVCodecContext::workaround_bugs

Work around bugs in encoders which sometimes cannot be detected automatically.

- encoding: Set by user
- decoding: Set by user

Definition at line 1339 of file avcodec.h.

## strict_std_compliance

int AVCodecContext::strict_std_compliance

strictly follow the standard (MPEG-4, ...).

- encoding: Set by user.
- decoding: Set by user. Setting this to STRICT or higher means the encoder and decoder will generally do stupid things, whereas setting it to unofficial or lower will mean the encoder might produce output that is not supported by all spec-compliant decoders. Decoders don't differentiate between normal, unofficial and experimental (that is, they always try to decode things when they can) unless they are explicitly asked to behave stupidly (=strictly conform to the specs) This may only be set to one of the FF_COMPLIANCE_* values in defs.h.

Definition at line 1369 of file avcodec.h.

## error_concealment

int AVCodecContext::error_concealment

error concealment flags

- encoding: unused
- decoding: Set by user.

Definition at line 1376 of file avcodec.h.

## debug

int AVCodecContext::debug

debug

- encoding: Set by user.
- decoding: Set by user.

Definition at line 1386 of file avcodec.h.

## err_recognition

int AVCodecContext::err_recognition

Error recognition; may misdetect some more or less valid parts as errors.

This is a bitfield of the AV_EF_* values defined in defs.h.

- encoding: Set by user.
- decoding: Set by user.

Definition at line 1410 of file avcodec.h.

## hwaccel

const struct AVHWAccel* AVCodecContext::hwaccel

Hardware accelerator in use.

- encoding: unused.
- decoding: Set by libavcodec

Definition at line 1417 of file avcodec.h.

## hwaccel_context

void* AVCodecContext::hwaccel_context

Legacy hardware accelerator context.

For some hardware acceleration methods, the caller may use this field to signal hwaccel-specific data to the codec. The struct pointed to by this pointer is hwaccel-dependent and defined in the respective header. Please refer to the FFmpeg HW accelerator documentation to know how to fill this.

In most cases this field is optional - the necessary information may also be provided to libavcodec through hw_frames_ctx or hw_device_ctx (see avcodec_get_hw_config()). However, in some cases it may be the only method of signalling some (optional) information.

The struct and its contents are owned by the caller.

- encoding: May be set by the caller before avcodec_open2(). Must remain valid until avcodec_free_context().
- decoding: May be set by the caller in the get_format() callback. Must remain valid until the next get_format() call, or avcodec_free_context() (whichever comes first).

Definition at line 1441 of file avcodec.h.

## hw_frames_ctx

AVBufferRef* AVCodecContext::hw_frames_ctx

A reference to the AVHWFramesContext describing the input (for encoding) or output (decoding) frames.

The reference is set by the caller and afterwards owned (and freed) by libavcodec - it should never be read by the caller after being set.

- decoding: This field should be set by the caller from the get_format() callback. The previous reference (if any) will always be unreffed by libavcodec before the get_format() call.

  If the default get_buffer2() is used with a hwaccel pixel format, then this AVHWFramesContext will be used for allocating the frame buffers.

- encoding: For hardware encoders configured to use a hwaccel pixel format, this field should be set by the caller to a reference to the AVHWFramesContext describing input frames. AVHWFramesContext.format must be equal to AVCodecContext.pix_fmt.

  This field should be set before avcodec_open2() is called.

Examples
  vaapi_encode.c.

Definition at line 1465 of file avcodec.h.

Referenced by main(), and set_hwframe_ctx().

## hw_device_ctx

AVBufferRef* AVCodecContext::hw_device_ctx

A reference to the AVHWDeviceContext describing the device which will be used by a hardware encoder/decoder.

The reference is set by the caller and afterwards owned (and freed) by libavcodec.

This should be used if either the codec device does not require hardware frames or any that are used are to be allocated internally by libavcodec. If the user wishes to supply any of the frames used as encoder input or decoder output then hw_frames_ctx should be used instead. When hw_frames_ctx is set in get_format() for a decoder, this field will be ignored while decoding the associated stream segment, but may again be used on a following one after another get_format() call.

For both encoders and decoders this field should be set before avcodec_open2() is called and must not be written to thereafter.

Note that some decoders may require this field to be set initially in order to support hw_frames_ctx at all - in that case, all frames contexts used must be created on the same device.

Examples
  hw_decode.c.

Definition at line 1487 of file avcodec.h.

Referenced by hw_decoder_init().

## hwaccel_flags

int AVCodecContext::hwaccel_flags

Bit set of AV_HWACCEL_FLAG_* flags, which affect hardware accelerated decoding (if active).

- encoding: unused
- decoding: Set by user (either before avcodec_open2(), or in the AVCodecContext.get_format callback)

Definition at line 1496 of file avcodec.h.

## extra_hw_frames

int AVCodecContext::extra_hw_frames

Video decoding only.

Sets the number of extra hardware frames which the decoder will allocate for use by the caller. This must be set before avcodec_open2() is called.

Some hardware decoders require all frames that they will use for output to be defined in advance before decoding starts. For such decoders, the hardware frame pool must therefore be of a fixed size. The extra frames set here are on top of any number that the decoder needs internally in order to operate normally (for example, frames used as reference pictures).

Definition at line 1510 of file avcodec.h.

## error

uint64_t AVCodecContext::error[AV_NUM_DATA_POINTERS]

error

- encoding: Set by libavcodec if flags & AV_CODEC_FLAG_PSNR.
- decoding: unused

Definition at line 1517 of file avcodec.h.

## dct_algo

int AVCodecContext::dct_algo

DCT algorithm, see FF_DCT_* below.

- encoding: Set by user.
- decoding: unused

Definition at line 1524 of file avcodec.h.

## idct_algo

int AVCodecContext::idct_algo

IDCT algorithm, see FF_IDCT_* below.

- encoding: Set by user.
- decoding: Set by user.

Definition at line 1538 of file avcodec.h.

## bits_per_coded_sample

int AVCodecContext::bits_per_coded_sample

bits per sample/pixel from the demuxer (needed for huffyuv).

- encoding: Set by libavcodec.
- decoding: Set by user.

Definition at line 1558 of file avcodec.h.

## bits_per_raw_sample

int AVCodecContext::bits_per_raw_sample

Bits per sample/pixel of internal libavcodec pixel/sample format.

- encoding: set by user.
- decoding: set by libavcodec.

Definition at line 1565 of file avcodec.h.

## thread_count

int AVCodecContext::thread_count

thread count is used to decide how many independent tasks should be passed to execute()

- encoding: Set by user.
- decoding: Set by user.

Definition at line 1573 of file avcodec.h.

## thread_type

int AVCodecContext::thread_type

Which multithreading methods to use.

Use of FF_THREAD_FRAME will increase decoding delay by one frame per thread, so clients which cannot provide future frames should not use it.

- encoding: Set by user, otherwise the default is used.
- decoding: Set by user, otherwise the default is used.

Definition at line 1583 of file avcodec.h.

## active_thread_type

int AVCodecContext::active_thread_type

Which multithreading methods are in use by the codec.

- encoding: Set by libavcodec.
- decoding: Set by libavcodec.

Definition at line 1592 of file avcodec.h.

## execute

int(* AVCodecContext::execute) (struct AVCodecContext *c, int(*func)(struct AVCodecContext *c2, void *arg), void *arg2, int *ret, int count, int size)

The codec may call this to execute several independent things.

It will return only after finishing all tasks. The user may replace this with some multithreaded implementation, the default implementation will execute the parts serially.

Parameters

  count

  the number of things to execute
  - encoding: Set by libavcodec, user can override.
  - decoding: Set by libavcodec, user can override.

Definition at line 1603 of file avcodec.h.

## execute2

int(* AVCodecContext::execute2) (struct AVCodecContext *c, int(*func)(struct AVCodecContext *c2, void *arg, int jobnr, int threadnr), void *arg2, int *ret, int count)

The codec may call this to execute several independent things.

It will return only after finishing all tasks. The user may replace this with some multithreaded implementation, the default implementation will execute the parts serially.

Parameters

  c | context passed also to func
  count | the number of things to execute
  arg2 | argument passed unchanged to func
  ret | return values of executed functions, must have space for "count" values. May be NULL.
  func | function that will be called count times, with jobnr from 0 to count-1. threadnr will be in the range 0 to c->thread_count-1 < MAX_THREADS and so that no two instances of func executing at the same time will have the same threadnr.

Returns
  always 0 currently, but code should handle a future improvement where when any call to func returns < 0 no further calls to func may be done and < 0 is returned.
  - encoding: Set by libavcodec, user can override.
  - decoding: Set by libavcodec, user can override.

Definition at line 1622 of file avcodec.h.

## profile

int AVCodecContext::profile

profile

- encoding: Set by user.
- decoding: Set by libavcodec. See the AV_PROFILE_* defines in defs.h.

Definition at line 1630 of file avcodec.h.

## level

int AVCodecContext::level

Encoding level descriptor.

- encoding: Set by user, corresponds to a specific level defined by the codec, usually corresponding to the profile level, if not specified it is set to AV_LEVEL_UNKNOWN.
- decoding: Set by libavcodec. See AV_LEVEL_* in defs.h.

Definition at line 1640 of file avcodec.h.

## skip_loop_filter

enum AVDiscard AVCodecContext::skip_loop_filter

Skip loop filtering for selected frames.

- encoding: unused
- decoding: Set by user.

Definition at line 1660 of file avcodec.h.

## skip_idct

enum AVDiscard AVCodecContext::skip_idct

Skip IDCT/dequantization for selected frames.

- encoding: unused
- decoding: Set by user.

Definition at line 1667 of file avcodec.h.

## skip_frame

enum AVDiscard AVCodecContext::skip_frame

Skip decoding for selected frames.

- encoding: unused
- decoding: Set by user.

Definition at line 1674 of file avcodec.h.

## skip_alpha

int AVCodecContext::skip_alpha

Skip processing alpha if supported by codec.

Note that if the format uses pre-multiplied alpha (common with VP6, and recommended due to better video quality/compression) the image will look as if alpha-blended onto a black background. However for formats that do not use pre-multiplied alpha there might be serious artefacts (though e.g. libswscale currently assumes pre-multiplied alpha anyway).

- decoding: set by user
- encoding: unused

Definition at line 1688 of file avcodec.h.

## skip_top

int AVCodecContext::skip_top

Number of macroblock rows at the top which are skipped.

- encoding: unused
- decoding: Set by user.

Definition at line 1695 of file avcodec.h.

## skip_bottom

int AVCodecContext::skip_bottom

Number of macroblock rows at the bottom which are skipped.

- encoding: unused
- decoding: Set by user.

Definition at line 1702 of file avcodec.h.

## lowres

int AVCodecContext::lowres

low resolution decoding, 1-> 1/2 size, 2->1/4 size

- encoding: unused
- decoding: Set by user.

Definition at line 1709 of file avcodec.h.

## codec_descriptor

const struct AVCodecDescriptor* AVCodecContext::codec_descriptor

AVCodecDescriptor.

- encoding: unused.
- decoding: set by libavcodec.

Definition at line 1716 of file avcodec.h.

## sub_charenc

char* AVCodecContext::sub_charenc

Character encoding of the input subtitles file.

- decoding: set by user
- encoding: unused

Definition at line 1723 of file avcodec.h.

## sub_charenc_mode

int AVCodecContext::sub_charenc_mode

Subtitles character encoding mode.

Formats or codecs might be adjusting this setting (if they are doing the conversion themselves for instance).

- decoding: set by libavcodec
- encoding: unused

Definition at line 1731 of file avcodec.h.

## subtitle_header_size

int AVCodecContext::subtitle_header_size

Header containing style information for text subtitles.

For SUBTITLE_ASS subtitle type, it should contain the whole ASS [Script Info] and [V4+ Styles] section, plus the [Events] line and the Format line following. It shouldn't include any Dialogue line.

- encoding: May be set by the caller before avcodec_open2() to an array allocated with the av_malloc() family of functions.
- decoding: May be set by libavcodec in avcodec_open2().

After being set, the array is owned by the codec and freed in avcodec_free_context().

Definition at line 1750 of file avcodec.h.

## subtitle_header

uint8_t* AVCodecContext::subtitle_header

Definition at line 1751 of file avcodec.h.

## dump_separator

uint8_t* AVCodecContext::dump_separator

dump format separator.

can be ", " or "\n " or anything else

- encoding: Set by user.
- decoding: Set by user.

Definition at line 1759 of file avcodec.h.

## codec_whitelist

char* AVCodecContext::codec_whitelist

',' separated list of allowed decoders.

If NULL then all are allowed

- encoding: unused
- decoding: set by user

Definition at line 1767 of file avcodec.h.

## coded_side_data

AVPacketSideData* AVCodecContext::coded_side_data

Additional data associated with the entire coded stream.

- decoding: may be set by user before calling avcodec_open2().
- encoding: may be set by libavcodec after avcodec_open2().

Definition at line 1775 of file avcodec.h.

## nb_coded_side_data

int AVCodecContext::nb_coded_side_data

Definition at line 1776 of file avcodec.h.

## export_side_data

int AVCodecContext::export_side_data

Bit set of AV_CODEC_EXPORT_DATA_* flags, which affects the kind of metadata exported in frame, packet, or coded stream side data by decoders and encoders.

- decoding: set by user
- encoding: set by user

Definition at line 1786 of file avcodec.h.

## max_pixels

int64_t AVCodecContext::max_pixels

The number of pixels per image to maximally accept.

- decoding: set by user
- encoding: set by user

Definition at line 1794 of file avcodec.h.

## apply_cropping

int AVCodecContext::apply_cropping

Video decoding only.

Certain video codecs support cropping, meaning that only a sub-rectangle of the decoded frame is intended for display. This option controls how cropping is handled by libavcodec.

When set to 1 (the default), libavcodec will apply cropping internally. I.e. it will modify the output frame width/height fields and offset the data pointers (only by as much as possible while preserving alignment, or by the full amount if the AV_CODEC_FLAG_UNALIGNED flag is set) so that the frames output by the decoder refer only to the cropped area. The crop_* fields of the output frames will be zero.

When set to 0, the width/height fields of the output frames will be set to the coded dimensions and the crop_* fields will describe the cropping rectangle. Applying the cropping is left to the caller.

Warning
  When hardware acceleration with opaque output frames is used, libavcodec is unable to apply cropping from the top/left border.

Note
  when this option is set to zero, the width/height fields of the AVCodecContext and output AVFrames have different meanings. The codec context fields store display dimensions (with the coded dimensions in coded_width/height), while the frame fields store the coded dimensions (with the display dimensions being determined by the crop_* fields).

Definition at line 1821 of file avcodec.h.

## discard_damaged_percentage

int AVCodecContext::discard_damaged_percentage

The percentage of damaged samples to discard a frame.

- decoding: set by user
- encoding: unused

Definition at line 1829 of file avcodec.h.

## max_samples

int64_t AVCodecContext::max_samples

The number of samples per frame to maximally accept.

- decoding: set by user
- encoding: set by user

Definition at line 1837 of file avcodec.h.

## get_encode_buffer

int(* AVCodecContext::get_encode_buffer) (struct AVCodecContext *s, AVPacket *pkt, int flags)

This callback is called at the beginning of each packet to get a data buffer for it.

The following field will be set in the packet before this callback is called:

- size This callback must use the above value to calculate the required buffer size, which must padded by at least AV_INPUT_BUFFER_PADDING_SIZE bytes.

In some specific cases, the encoder may not use the entire buffer allocated by this callback. This will be reflected in the size value in the packet once returned by avcodec_receive_packet().

This callback must fill the following fields in the packet:

- data: alignment requirements for AVPacket apply, if any. Some architectures and encoders may benefit from having aligned data.
- buf: must contain a pointer to an AVBufferRef structure. The packet's data pointer must be contained in it. See: av_buffer_create(), av_buffer_alloc(), and av_buffer_ref().

If AV_CODEC_CAP_DR1 is not set then get_encode_buffer() must call avcodec_default_get_encode_buffer() instead of providing a buffer allocated by some other means.

The flags field may contain a combination of AV_GET_ENCODE_BUFFER_FLAG_ flags. They may be used for example to hint what use the buffer may get after being created. Implementations of this callback may ignore flags they don't understand. If AV_GET_ENCODE_BUFFER_FLAG_REF is set in flags then the packet may be reused (read and/or written to if it is writable) later by libavcodec.

This callback must be thread-safe, as when frame threading is used, it may be called from multiple threads simultaneously.

See also
  avcodec_default_get_encode_buffer()

- encoding: Set by libavcodec, user can override.
- decoding: unused

Definition at line 1879 of file avcodec.h.

## frame_num

int64_t AVCodecContext::frame_num

Frame counter, set by libavcodec.

- decoding: total number of frames returned from the decoder so far.

- encoding: total number of frames passed to the encoder so far.

  Note
    the counter is not incremented if encoding/decoding resulted in an error.

Definition at line 1890 of file avcodec.h.

## side_data_prefer_packet

int* AVCodecContext::side_data_prefer_packet

Decoding only.

May be set by the caller before avcodec_open2() to an av_malloc()'ed array (or via AVOptions). Owned and freed by the decoder afterwards.

Side data attached to decoded frames may come from several sources:

1. coded_side_data, which the decoder will for certain types translate from packet-type to frame-type and attach to frames;
2. side data attached to an AVPacket sent for decoding (same considerations as above);
3. extracted from the coded bytestream. The first two cases are supplied by the caller and typically come from a container.

This array configures decoder behaviour in cases when side data of the same type is present both in the coded bytestream and in the user-supplied side data (items 1. and 2. above). In all cases, at most one instance of each side data type will be attached to output frames. By default it will be the bytestream side data. Adding an AVPacketSideDataType value to this array will flip the preference for this type, thus making the decoder prefer user-supplied side data over bytestream. In case side data of the same type is present both in coded_data and attacked to a packet, the packet instance always has priority.

The array may also contain a single -1, in which case the preference is switched for all side data types.

Definition at line 1920 of file avcodec.h.

## nb_side_data_prefer_packet

unsigned AVCodecContext::nb_side_data_prefer_packet

Number of entries in side_data_prefer_packet.

Definition at line 1924 of file avcodec.h.

## decoded_side_data

AVFrameSideData** AVCodecContext::decoded_side_data

Array containing static side data, such as HDR10 CLL / MDCV structures.

Side data entries should be allocated by usage of helpers defined in libavutil/frame.h.

- encoding: may be set by user before calling avcodec_open2() for encoder configuration. Afterwards owned and freed by the encoder.
- decoding: may be set by libavcodec in avcodec_open2().

Definition at line 1936 of file avcodec.h.

## nb_decoded_side_data

int AVCodecContext::nb_decoded_side_data

Definition at line 1937 of file avcodec.h.

## alpha_mode

enum AVAlphaMode AVCodecContext::alpha_mode

Indicates how the alpha channel of the video is represented.

- encoding: Set by user
- decoding: Set by libavcodec

Definition at line 1944 of file avcodec.h.

The documentation for this struct was generated from the following file:

- libavcodec/avcodec.h