FFmpeg
Loading...
Searching...
No Matches
mastering_display_metadata.c
Go to the documentation of this file.
1/**
2 * Copyright (c) 2016 Neil Birkbeck <neil.birkbeck@gmail.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 <stddef.h>
22#include <stdint.h>
23#include <string.h>
24
26#include "mem.h"
27
29{
30 for (int i = 0; i < 3; i++)
31 for (int j = 0; j < 2; j++)
32 mastering->display_primaries[i][j] = (AVRational) { 0, 1 };
33 mastering->white_point[0] =
34 mastering->white_point[1] =
35 mastering->min_luminance =
36 mastering->max_luminance = (AVRational) { 0, 1 };
37}
38
43
45{
47
48 if (size)
49 *size = mastering ? sizeof(*mastering) : 0;
50
51 if (!mastering)
52 return NULL;
53
54 get_defaults(mastering);
55
56 return mastering;
57}
58
72
74{
76
77 if (size)
78 *size = metadata ? sizeof(*metadata) : 0;
79
80 return metadata;
81}
82
84{
88 if (!side_data)
89 return NULL;
90
91 memset(side_data->data, 0, sizeof(AVContentLightMetadata));
92
93 return (AVContentLightMetadata *)side_data->data;
94}
static int FUNC metadata(CodedBitstreamContext *ctx, RWContext *rw, APVRawMetadata *current)
#define i(width, name, range_min, range_max)
Definition cbs_h264.c:63
#define NULL
Definition coverity.c:32
static AVFrame * frame
AVFrameSideData * av_frame_new_side_data(AVFrame *frame, enum AVFrameSideDataType type, size_t size)
Add a new side data to a frame.
Definition frame.c:647
@ AV_FRAME_DATA_CONTENT_LIGHT_LEVEL
Content light level (based on CTA-861.3).
Definition frame.h:137
@ AV_FRAME_DATA_MASTERING_DISPLAY_METADATA
Mastering display metadata associated with a video frame.
Definition frame.h:120
AVMasteringDisplayMetadata * av_mastering_display_metadata_alloc(void)
Allocate an AVMasteringDisplayMetadata structure and set its fields to default values.
AVContentLightMetadata * av_content_light_metadata_alloc(size_t *size)
Allocate an AVContentLightMetadata structure and set its fields to default values.
AVContentLightMetadata * av_content_light_metadata_create_side_data(AVFrame *frame)
Allocate a complete AVContentLightMetadata and add it to the frame.
AVMasteringDisplayMetadata * av_mastering_display_metadata_alloc_size(size_t *size)
Allocate an AVMasteringDisplayMetadata structure and set its fields to default values.
static void get_defaults(AVMasteringDisplayMetadata *mastering)
Copyright (c) 2016 Neil Birkbeck neil.birkbeck@gmail.com
AVMasteringDisplayMetadata * av_mastering_display_metadata_create_side_data(AVFrame *frame)
Allocate a complete AVMasteringDisplayMetadata and add it to the frame.
Memory handling functions.
Content light level needed by to transmit HDR over HDMI (CTA-861.3).
Structure to hold side data for an AVFrame.
Definition frame.h:327
uint8_t * data
Definition frame.h:329
This structure describes decoded (raw) audio or video data.
Definition frame.h:472
Mastering display metadata capable of representing the color volume of the display used to master the...
AVRational max_luminance
Max luminance of mastering display (cd/m^2).
AVRational min_luminance
Min luminance of mastering display (cd/m^2).
AVRational display_primaries[3][2]
CIE 1931 xy chromaticity coords of color primaries (r, g, b order).
AVRational white_point[2]
CIE 1931 xy chromaticity coords of white point.
Rational number (pair of numerator and denominator).
Definition rational.h:58
#define av_mallocz(s)
int size