tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

mastering_display_metadata.c (3073B)


      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 
     25 #include "mastering_display_metadata.h"
     26 #include "mem.h"
     27 
     28 static void get_defaults(AVMasteringDisplayMetadata *mastering)
     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 
     39 AVMasteringDisplayMetadata *av_mastering_display_metadata_alloc(void)
     40 {
     41    return av_mastering_display_metadata_alloc_size(NULL);
     42 }
     43 
     44 AVMasteringDisplayMetadata *av_mastering_display_metadata_alloc_size(size_t *size)
     45 {
     46    AVMasteringDisplayMetadata *mastering = av_mallocz(sizeof(AVMasteringDisplayMetadata));
     47    if (!mastering)
     48        return NULL;
     49 
     50    get_defaults(mastering);
     51 
     52    if (size)
     53        *size = sizeof(*mastering);
     54 
     55    return mastering;
     56 }
     57 
     58 AVMasteringDisplayMetadata *av_mastering_display_metadata_create_side_data(AVFrame *frame)
     59 {
     60    AVFrameSideData *side_data = av_frame_new_side_data(frame,
     61                                                        AV_FRAME_DATA_MASTERING_DISPLAY_METADATA,
     62                                                        sizeof(AVMasteringDisplayMetadata));
     63    if (!side_data)
     64        return NULL;
     65 
     66    memset(side_data->data, 0, sizeof(AVMasteringDisplayMetadata));
     67    get_defaults((AVMasteringDisplayMetadata *)side_data->data);
     68 
     69    return (AVMasteringDisplayMetadata *)side_data->data;
     70 }
     71 
     72 AVContentLightMetadata *av_content_light_metadata_alloc(size_t *size)
     73 {
     74    AVContentLightMetadata *metadata = av_mallocz(sizeof(AVContentLightMetadata));
     75 
     76    if (size)
     77        *size = sizeof(*metadata);
     78 
     79    return metadata;
     80 }
     81 
     82 AVContentLightMetadata *av_content_light_metadata_create_side_data(AVFrame *frame)
     83 {
     84    AVFrameSideData *side_data = av_frame_new_side_data(frame,
     85                                                        AV_FRAME_DATA_CONTENT_LIGHT_LEVEL,
     86                                                        sizeof(AVContentLightMetadata));
     87    if (!side_data)
     88        return NULL;
     89 
     90    memset(side_data->data, 0, sizeof(AVContentLightMetadata));
     91 
     92    return (AVContentLightMetadata *)side_data->data;
     93 }