2 * Copyright (c) 2016 Neil Birkbeck <neil.birkbeck@gmail.com>
4 * This file is part of FFmpeg.
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.
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.
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
25 #include "mastering_display_metadata.h"
28 static void get_defaults(AVMasteringDisplayMetadata
*mastering
)
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 };
39 AVMasteringDisplayMetadata
*av_mastering_display_metadata_alloc(void)
41 return av_mastering_display_metadata_alloc_size(NULL
);
44 AVMasteringDisplayMetadata
*av_mastering_display_metadata_alloc_size(size_t *size
)
46 AVMasteringDisplayMetadata
*mastering
= av_mallocz(sizeof(AVMasteringDisplayMetadata
));
50 get_defaults(mastering
);
53 *size
= sizeof(*mastering
);
58 AVMasteringDisplayMetadata
*av_mastering_display_metadata_create_side_data(AVFrame
*frame
)
60 AVFrameSideData
*side_data
= av_frame_new_side_data(frame
,
61 AV_FRAME_DATA_MASTERING_DISPLAY_METADATA
,
62 sizeof(AVMasteringDisplayMetadata
));
66 memset(side_data
->data
, 0, sizeof(AVMasteringDisplayMetadata
));
67 get_defaults((AVMasteringDisplayMetadata
*)side_data
->data
);
69 return (AVMasteringDisplayMetadata
*)side_data
->data
;
72 AVContentLightMetadata
*av_content_light_metadata_alloc(size_t *size
)
74 AVContentLightMetadata
*metadata
= av_mallocz(sizeof(AVContentLightMetadata
));
77 *size
= sizeof(*metadata
);
82 AVContentLightMetadata
*av_content_light_metadata_create_side_data(AVFrame
*frame
)
84 AVFrameSideData
*side_data
= av_frame_new_side_data(frame
,
85 AV_FRAME_DATA_CONTENT_LIGHT_LEVEL
,
86 sizeof(AVContentLightMetadata
));
90 memset(side_data
->data
, 0, sizeof(AVContentLightMetadata
));
92 return (AVContentLightMetadata
*)side_data
->data
;