FFmpeg
Data Structures | Macros | Enumerations | Functions | Variables
dovi_split.c File Reference
#include <stdbool.h>
#include "libavutil/avassert.h"
#include "libavutil/dovi_meta.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/mem.h"
#include "libavutil/opt.h"
#include "bsf.h"
#include "bsf_internal.h"
#include "h2645_parse.h"
#include "packet.h"
#include "hevc/hevc.h"

Go to the source code of this file.

Data Structures

struct  DOVISplitContext
 

Macros

#define OFFSET(x)   offsetof(DOVISplitContext, x)
 
#define FLAGS   (AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_BSF_PARAM)
 

Enumerations

enum  DOVISplitMode { DOVI_SPLIT_BL = 0, DOVI_SPLIT_BL_RPU = 1, DOVI_SPLIT_EL = 2, DOVI_SPLIT_EL_RPU = 3 }
 

Functions

static int hvcc_nal_length_size (const uint8_t *data, int size)
 
static int dovi_split_init (AVBSFContext *ctx)
 
static void dovi_split_close (AVBSFContext *ctx)
 
static int nal_is_kept (const DOVISplitContext *s, const H2645NAL *nal, const uint8_t **payload, int *payload_size)
 
static int dovi_split_filter (AVBSFContext *ctx, AVPacket *out)
 

Variables

static const AVOption dovi_split_options []
 
static const AVClass dovi_split_class
 
static enum AVCodecID dovi_split_codec_ids []
 
const FFBitStreamFilter ff_dovi_split_bsf
 

Macro Definition Documentation

◆ OFFSET

#define OFFSET (   x)    offsetof(DOVISplitContext, x)

Definition at line 248 of file dovi_split.c.

◆ FLAGS

Definition at line 249 of file dovi_split.c.

Enumeration Type Documentation

◆ DOVISplitMode

Enumerator
DOVI_SPLIT_BL 
DOVI_SPLIT_BL_RPU 
DOVI_SPLIT_EL 
DOVI_SPLIT_EL_RPU 

Definition at line 34 of file dovi_split.c.

Function Documentation

◆ hvcc_nal_length_size()

static int hvcc_nal_length_size ( const uint8_t *  data,
int  size 
)
static

Definition at line 50 of file dovi_split.c.

Referenced by dovi_split_init().

◆ dovi_split_init()

static int dovi_split_init ( AVBSFContext ctx)
static

Definition at line 57 of file dovi_split.c.

◆ dovi_split_close()

static void dovi_split_close ( AVBSFContext ctx)
static

Definition at line 131 of file dovi_split.c.

◆ nal_is_kept()

static int nal_is_kept ( const DOVISplitContext s,
const H2645NAL nal,
const uint8_t **  payload,
int *  payload_size 
)
static

Definition at line 137 of file dovi_split.c.

Referenced by dovi_split_filter().

◆ dovi_split_filter()

static int dovi_split_filter ( AVBSFContext ctx,
AVPacket out 
)
static

Definition at line 169 of file dovi_split.c.

Variable Documentation

◆ dovi_split_options

const AVOption dovi_split_options[]
static
Initial value:
= {
{ "mode", "Which Dolby Vision components to keep in the output bitstream", OFFSET(mode), AV_OPT_TYPE_INT, { .i64 = DOVI_SPLIT_BL }, DOVI_SPLIT_BL, DOVI_SPLIT_EL_RPU, FLAGS, .unit = "mode" },
{ "bl", "Base layer only", 0, AV_OPT_TYPE_CONST, { .i64 = DOVI_SPLIT_BL }, .flags = FLAGS, .unit = "mode" },
{ "bl_rpu", "Base layer with the RPU NAL", 0, AV_OPT_TYPE_CONST, { .i64 = DOVI_SPLIT_BL_RPU }, .flags = FLAGS, .unit = "mode" },
{ "el", "Enhancement layer only", 0, AV_OPT_TYPE_CONST, { .i64 = DOVI_SPLIT_EL }, .flags = FLAGS, .unit = "mode" },
{ "el_rpu", "Enhancement layer with the RPU NAL", 0, AV_OPT_TYPE_CONST, { .i64 = DOVI_SPLIT_EL_RPU }, .flags = FLAGS, .unit = "mode" },
{ NULL },
}

Definition at line 250 of file dovi_split.c.

◆ dovi_split_class

const AVClass dovi_split_class
static
Initial value:
= {
.class_name = "dovi_split_bsf",
.item_name = av_default_item_name,
.option = dovi_split_options,
}

Definition at line 259 of file dovi_split.c.

◆ dovi_split_codec_ids

enum AVCodecID dovi_split_codec_ids[]
static
Initial value:

Definition at line 266 of file dovi_split.c.

◆ ff_dovi_split_bsf

const FFBitStreamFilter ff_dovi_split_bsf
Initial value:
= {
.p.name = "dovi_split",
.p.codec_ids = dovi_split_codec_ids,
.p.priv_class = &dovi_split_class,
.priv_data_size = sizeof(DOVISplitContext),
}

Definition at line 270 of file dovi_split.c.

dovi_split_options
static const AVOption dovi_split_options[]
Definition: dovi_split.c:250
DOVISplitContext
Definition: dovi_split.c:41
DOVI_SPLIT_EL_RPU
@ DOVI_SPLIT_EL_RPU
Definition: dovi_split.c:38
mode
Definition: swscale.c:68
filter
void(* filter)(uint8_t *src, int stride, int qscale)
Definition: h263dsp.c:29
close
static av_cold void close(AVCodecParserContext *s)
Definition: apv_parser.c:197
dovi_split_codec_ids
static enum AVCodecID dovi_split_codec_ids[]
Definition: dovi_split.c:266
dovi_split_init
static int dovi_split_init(AVBSFContext *ctx)
Definition: dovi_split.c:57
DOVI_SPLIT_BL
@ DOVI_SPLIT_BL
Definition: dovi_split.c:35
dovi_split_close
static void dovi_split_close(AVBSFContext *ctx)
Definition: dovi_split.c:131
DOVI_SPLIT_BL_RPU
@ DOVI_SPLIT_BL_RPU
Definition: dovi_split.c:36
LIBAVUTIL_VERSION_INT
#define LIBAVUTIL_VERSION_INT
Definition: version.h:85
NULL
#define NULL
Definition: coverity.c:32
av_default_item_name
const char * av_default_item_name(void *ptr)
Return the context name.
Definition: log.c:242
init
int(* init)(AVBSFContext *ctx)
Definition: dts2pts.c:579
dovi_split_class
static const AVClass dovi_split_class
Definition: dovi_split.c:259
AV_CODEC_ID_NONE
@ AV_CODEC_ID_NONE
Definition: codec_id.h:50
AV_CODEC_ID_HEVC
@ AV_CODEC_ID_HEVC
Definition: codec_id.h:228
dovi_split_filter
static int dovi_split_filter(AVBSFContext *ctx, AVPacket *out)
Definition: dovi_split.c:169
AV_OPT_TYPE_INT
@ AV_OPT_TYPE_INT
Underlying C type is int.
Definition: opt.h:259
DOVI_SPLIT_EL
@ DOVI_SPLIT_EL
Definition: dovi_split.c:37
OFFSET
#define OFFSET(x)
Definition: dovi_split.c:248
FLAGS
#define FLAGS
Definition: dovi_split.c:249
AV_OPT_TYPE_CONST
@ AV_OPT_TYPE_CONST
Special option type for declaring named constants.
Definition: opt.h:299