xref: /third_party/ffmpeg/libavutil/dovi_meta.c (revision cabdff1a)
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 "dovi_meta.h"
22#include "mem.h"
23
24AVDOVIDecoderConfigurationRecord *av_dovi_alloc(size_t *size)
25{
26    AVDOVIDecoderConfigurationRecord *dovi =
27        av_mallocz(sizeof(AVDOVIDecoderConfigurationRecord));
28    if (!dovi)
29        return NULL;
30
31     if (size)
32        *size = sizeof(*dovi);
33
34    return dovi;
35}
36
37typedef struct AVDOVIMetadataInternal {
38    AVDOVIMetadata metadata;
39    AVDOVIRpuDataHeader header;
40    AVDOVIDataMapping mapping;
41    AVDOVIColorMetadata color;
42} AVDOVIMetadataInternal;
43
44AVDOVIMetadata *av_dovi_metadata_alloc(size_t *size)
45{
46    AVDOVIMetadataInternal *dovi = av_mallocz(sizeof(AVDOVIMetadataInternal));
47    if (!dovi)
48        return NULL;
49
50    if (size)
51        *size = sizeof(*dovi);
52
53    dovi->metadata = (struct AVDOVIMetadata) {
54        .header_offset  = offsetof(AVDOVIMetadataInternal, header),
55        .mapping_offset = offsetof(AVDOVIMetadataInternal, mapping),
56        .color_offset   = offsetof(AVDOVIMetadataInternal, color),
57    };
58
59    return &dovi->metadata;
60}
61