Loading...
Searching...
No Matches
video_enc_params.h File Reference
`#include <stddef.h>`
`#include <stdint.h>`
`#include "libavutil/avassert.h"`
`#include "libavutil/frame.h"`

Go to the source code of this file.

## Data Structures

struct | AVVideoEncParams
| Video encoding parameters for a given frame. More...
struct | AVVideoBlockParams
| Data structure for storing block-level encoding information. More...

## Enumerations

enum | AVVideoEncParamsType { AV_VIDEO_ENC_PARAMS_NONE = -1 , AV_VIDEO_ENC_PARAMS_VP9 , AV_VIDEO_ENC_PARAMS_H264 , AV_VIDEO_ENC_PARAMS_MPEG2 }

## Functions

static av_always_inline AVVideoBlockParams * | av_video_enc_params_block (AVVideoEncParams *par, unsigned int idx)
| Get the block at the specified `idx`.
AVVideoEncParams * | av_video_enc_params_alloc (enum AVVideoEncParamsType type, unsigned int nb_blocks, size_t *out_size)
| Allocates memory for AVVideoEncParams of the given type, plus an array of `nb_blocks` AVVideoBlockParams and initializes the variables.
AVVideoEncParams * | av_video_enc_params_create_side_data (AVFrame *frame, enum AVVideoEncParamsType type, unsigned int nb_blocks)
| Allocates memory for AVEncodeInfoFrame plus an array of `nb_blocks` AVEncodeInfoBlock in the given AVFrame `frame` as AVFrameSideData of type AV_FRAME_DATA_VIDEO_ENC_PARAMS and initializes the variables.

## Enumeration Type Documentation

## AVVideoEncParamsType

enum AVVideoEncParamsType

Enumerator
AV_VIDEO_ENC_PARAMS_NONE |

AV_VIDEO_ENC_PARAMS_VP9

VP9 stores:

- per-frame base (luma AC) quantizer index, exported as AVVideoEncParams.qp
- deltas for luma DC, chroma AC and chroma DC, exported in the corresponding entries in AVVideoEncParams.delta_qp
- per-segment delta, exported as for each block as AVVideoBlockParams.delta_qp

To compute the resulting quantizer index for a block:

- for luma AC, add the base qp and the per-block delta_qp, saturating to unsigned 8-bit.
- for luma DC and chroma AC/DC, add the corresponding AVVideoBlockParams.delta_qp to the luma AC index, again saturating to unsigned 8-bit.

AV_VIDEO_ENC_PARAMS_H264

H.264 stores:

- in PPS (per-picture):
  - initial QP_Y (luma) value, exported as AVVideoEncParams.qp
  - delta(s) for chroma QP values (same for both, or each separately), exported as in the corresponding entries in AVVideoEncParams.delta_qp
- per-slice QP delta, not exported directly, added to the per-MB value
- per-MB delta; not exported directly; the final per-MB quantizer parameter - QP_Y - minus the value in AVVideoEncParams.qp is exported as AVVideoBlockParams.qp_delta.

AV_VIDEO_ENC_PARAMS_MPEG2 |

Definition at line 28 of file video_enc_params.h.

## Function Documentation

## av_video_enc_params_block()

static av_always_inline AVVideoBlockParams * av_video_enc_params_block | ( | AVVideoEncParams * | par,
|  | unsigned int | idx
| ) |  |

static

Get the block at the specified `idx`.

Must be between 0 and nb_blocks - 1.

Definition at line 143 of file video_enc_params.h.

## av_video_enc_params_alloc()

AVVideoEncParams * av_video_enc_params_alloc | ( | enum AVVideoEncParamsType | type,
|  | unsigned int | nb_blocks,
|  | size_t * | out_size
| ) |  |

Allocates memory for AVVideoEncParams of the given type, plus an array of `nb_blocks` AVVideoBlockParams and initializes the variables.

Can be freed with a normal av_free() call.

Parameters

  out_size | if non-NULL, the size in bytes of the resulting data array is written here.

## av_video_enc_params_create_side_data()

AVVideoEncParams * av_video_enc_params_create_side_data | ( | AVFrame * | frame,
|  | enum AVVideoEncParamsType | type,
|  | unsigned int | nb_blocks
| ) |  |

Allocates memory for AVEncodeInfoFrame plus an array of `nb_blocks` AVEncodeInfoBlock in the given AVFrame `frame` as AVFrameSideData of type AV_FRAME_DATA_VIDEO_ENC_PARAMS and initializes the variables.