FFmpeg
Loading...
Searching...
No Matches
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 "libavcodec/bsf.h"
#include "libavcodec/bsf_internal.h"
#include "libavcodec/h2645_parse.h"
#include "libavcodec/packet.h"
#include "libavcodec/hevc/hevc.h"

Go to the source code of this file.

Data Structures

struct  DOVISplitContext
 

Macros

#define OFFSET(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)
Value:

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 },
}
#define FLAGS
Definition cmdutils.c:598
#define NULL
Definition coverity.c:32
@ DOVI_SPLIT_BL_RPU
Definition dovi_split.c:36
@ DOVI_SPLIT_BL
Definition dovi_split.c:35
@ DOVI_SPLIT_EL_RPU
Definition dovi_split.c:38
@ DOVI_SPLIT_EL
Definition dovi_split.c:37
#define OFFSET(x)
@ AV_OPT_TYPE_CONST
Special option type for declaring named constants.
Definition opt.h:298
@ AV_OPT_TYPE_INT
Underlying C type is int.
Definition opt.h:258
Definition swscale.c:71

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,
}
static const AVOption dovi_split_options[]
Definition dovi_split.c:250
const char * av_default_item_name(void *ptr)
Return the context name.
Definition log.c:241
#define LIBAVUTIL_VERSION_INT
Definition version.h:85

Definition at line 259 of file dovi_split.c.

◆ dovi_split_codec_ids

enum AVCodecID dovi_split_codec_ids[]
static
Initial value:
= {
}
@ AV_CODEC_ID_NONE
Definition codec_id.h:48
@ AV_CODEC_ID_HEVC
Definition codec_id.h:223

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),
}
static av_cold void close(AVCodecParserContext *s)
Definition apv_parser.c:197
static int dovi_split_init(AVBSFContext *ctx)
Definition dovi_split.c:57
static enum AVCodecID dovi_split_codec_ids[]
Definition dovi_split.c:266
static const AVClass dovi_split_class
Definition dovi_split.c:259
static void dovi_split_close(AVBSFContext *ctx)
Definition dovi_split.c:131
static int dovi_split_filter(AVBSFContext *ctx, AVPacket *out)
Definition dovi_split.c:169
int(* init)(AVBSFContext *ctx)
Definition dts2pts.c:608
void(* filter)(uint8_t *src, ptrdiff_t stride, int qscale)
Definition h263dsp.c:29

Definition at line 270 of file dovi_split.c.