FFmpeg
Loading...
Searching...
No Matches
dovi_meta.c
Go to the documentation of this file.
1/*
2 * Copyright (c) 2020 Jun Zhao<barryjzhao@tencent.com>
3 *
4 * This file is part of FFmpeg.
5 *
6 * FFmpeg is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * FFmpeg is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with FFmpeg; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21#include <string.h>
22
23#include "dovi_meta.h"
24#include "mem.h"
25
27{
30
31 if (size)
32 *size = dovi ? sizeof(*dovi) : 0;
33
34 return dovi;
35}
36
44
46{
48
49 if (size)
50 *size = dovi ? sizeof(*dovi) : 0;
51
52 if (!dovi)
53 return NULL;
54
55 dovi->metadata = (struct AVDOVIMetadata) {
57 .mapping_offset = offsetof(AVDOVIMetadataInternal, mapping),
58 .color_offset = offsetof(AVDOVIMetadataInternal, color),
59 .ext_block_offset = offsetof(AVDOVIMetadataInternal, ext_blocks),
60 .ext_block_size = sizeof(AVDOVIDmData),
61 };
62
63 return &dovi->metadata;
64}
65
67{
68 for (int i = 0; i < data->num_ext_blocks; i++) {
70 if (ext->level == level)
71 return ext;
72 }
73
74 return NULL;
75}
#define i(width, name, range_min, range_max)
Definition cbs_h264.c:63
#define NULL
Definition coverity.c:32
AVDOVIDmData * av_dovi_find_level(const AVDOVIMetadata *data, uint8_t level)
Find an extension block with a given level, or NULL.
Definition dovi_meta.c:66
AVDOVIDecoderConfigurationRecord * av_dovi_alloc(size_t *size)
Allocate a AVDOVIDecoderConfigurationRecord structure and initialize its fields to default values.
Definition dovi_meta.c:26
AVDOVIMetadata * av_dovi_metadata_alloc(size_t *size)
Allocate an AVDOVIMetadata structure and initialize its fields to default values.
Definition dovi_meta.c:45
DOVI configuration.
static av_always_inline AVDOVIDmData * av_dovi_get_ext(const AVDOVIMetadata *data, int index)
Gets the specified Dolby Vision Display Management (DM) metadata.
Definition dovi_meta.h:385
#define AV_DOVI_MAX_EXT_BLOCKS
Definition dovi_meta.h:359
Memory handling functions.
const char data[16]
Definition mxf.c:149
static const uint8_t header[24]
Definition sdr2.c:68
Dolby Vision RPU colorspace metadata parameters.
Definition dovi_meta.h:171
Dolby Vision RPU data mapping parameters.
Definition dovi_meta.h:152
Dolby Vision metadata extension block.
Definition dovi_meta.h:318
uint8_t level
Definition dovi_meta.h:319
AVDOVIMetadata metadata
Definition dovi_meta.c:38
AVDOVIDmData ext_blocks[AV_DOVI_MAX_EXT_BLOCKS]
Definition dovi_meta.c:42
AVDOVIDataMapping mapping
Definition dovi_meta.c:40
AVDOVIColorMetadata color
Definition dovi_meta.c:41
AVDOVIRpuDataHeader header
Definition dovi_meta.c:39
Combined struct representing a combination of header, mapping and color metadata, for attaching to fr...
Definition dovi_meta.h:345
size_t header_offset
Offset in bytes from the beginning of this structure at which the respective structs start.
Definition dovi_meta.h:350
Dolby Vision RPU data header.
Definition dovi_meta.h:87
uint8_t level
Definition svq3.c:208
#define av_mallocz(s)
int size