duckstation

duckstation, but archived from the revision just before upstream changed it to a proprietary software project, this version is the libre one
git clone https://git.neptards.moe/u3shit/duckstation.git
Log | Files | Refs | README | LICENSE

mastering_display_metadata.h (3944B)


      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 #ifndef AVUTIL_MASTERING_DISPLAY_METADATA_H
     22 #define AVUTIL_MASTERING_DISPLAY_METADATA_H
     23 
     24 #include "frame.h"
     25 #include "rational.h"
     26 
     27 
     28 /**
     29  * Mastering display metadata capable of representing the color volume of
     30  * the display used to master the content (SMPTE 2086:2014).
     31  *
     32  * To be used as payload of a AVFrameSideData or AVPacketSideData with the
     33  * appropriate type.
     34  *
     35  * @note The struct should be allocated with av_mastering_display_metadata_alloc()
     36  *       and its size is not a part of the public ABI.
     37  */
     38 typedef struct AVMasteringDisplayMetadata {
     39     /**
     40      * CIE 1931 xy chromaticity coords of color primaries (r, g, b order).
     41      */
     42     AVRational display_primaries[3][2];
     43 
     44     /**
     45      * CIE 1931 xy chromaticity coords of white point.
     46      */
     47     AVRational white_point[2];
     48 
     49     /**
     50      * Min luminance of mastering display (cd/m^2).
     51      */
     52     AVRational min_luminance;
     53 
     54     /**
     55      * Max luminance of mastering display (cd/m^2).
     56      */
     57     AVRational max_luminance;
     58 
     59     /**
     60      * Flag indicating whether the display primaries (and white point) are set.
     61      */
     62     int has_primaries;
     63 
     64     /**
     65      * Flag indicating whether the luminance (min_ and max_) have been set.
     66      */
     67     int has_luminance;
     68 
     69 } AVMasteringDisplayMetadata;
     70 
     71 /**
     72  * Allocate an AVMasteringDisplayMetadata structure and set its fields to
     73  * default values. The resulting struct can be freed using av_freep().
     74  *
     75  * @return An AVMasteringDisplayMetadata filled with default values or NULL
     76  *         on failure.
     77  */
     78 AVMasteringDisplayMetadata *av_mastering_display_metadata_alloc(void);
     79 
     80 /**
     81  * Allocate a complete AVMasteringDisplayMetadata and add it to the frame.
     82  *
     83  * @param frame The frame which side data is added to.
     84  *
     85  * @return The AVMasteringDisplayMetadata structure to be filled by caller.
     86  */
     87 AVMasteringDisplayMetadata *av_mastering_display_metadata_create_side_data(AVFrame *frame);
     88 
     89 /**
     90  * Content light level needed by to transmit HDR over HDMI (CTA-861.3).
     91  *
     92  * To be used as payload of a AVFrameSideData or AVPacketSideData with the
     93  * appropriate type.
     94  *
     95  * @note The struct should be allocated with av_content_light_metadata_alloc()
     96  *       and its size is not a part of the public ABI.
     97  */
     98 typedef struct AVContentLightMetadata {
     99     /**
    100      * Max content light level (cd/m^2).
    101      */
    102     unsigned MaxCLL;
    103 
    104     /**
    105      * Max average light level per frame (cd/m^2).
    106      */
    107     unsigned MaxFALL;
    108 } AVContentLightMetadata;
    109 
    110 /**
    111  * Allocate an AVContentLightMetadata structure and set its fields to
    112  * default values. The resulting struct can be freed using av_freep().
    113  *
    114  * @return An AVContentLightMetadata filled with default values or NULL
    115  *         on failure.
    116  */
    117 AVContentLightMetadata *av_content_light_metadata_alloc(size_t *size);
    118 
    119 /**
    120  * Allocate a complete AVContentLightMetadata and add it to the frame.
    121  *
    122  * @param frame The frame which side data is added to.
    123  *
    124  * @return The AVContentLightMetadata structure to be filled by caller.
    125  */
    126 AVContentLightMetadata *av_content_light_metadata_create_side_data(AVFrame *frame);
    127 
    128 #endif /* AVUTIL_MASTERING_DISPLAY_METADATA_H */