Commit 2744d6b3 authored by Mohammad Izadi's avatar Mohammad Izadi Committed by Vittorio Giovara

Add HDR dynamic metadata struct (for SMPTE 2094-40) to libavutil

The dynamic metadata contains data for color volume transform -
application 4 of SMPTE 2094-40:2016 standard. The data comes from
HEVC in the SEI_TYPE_USER_DATA_REGISTERED_ITU_T_T35.
Signed-off-by: 's avatarVittorio Giovara <vittorio.giovara@gmail.com>
parent 47ba0854
...@@ -31,6 +31,7 @@ HEADERS = adler32.h \ ...@@ -31,6 +31,7 @@ HEADERS = adler32.h \
file.h \ file.h \
frame.h \ frame.h \
hash.h \ hash.h \
hdr_dynamic_metadata.h \
hmac.h \ hmac.h \
hwcontext.h \ hwcontext.h \
hwcontext_cuda.h \ hwcontext_cuda.h \
...@@ -119,6 +120,7 @@ OBJS = adler32.o \ ...@@ -119,6 +120,7 @@ OBJS = adler32.o \
fixed_dsp.o \ fixed_dsp.o \
frame.o \ frame.o \
hash.o \ hash.o \
hdr_dynamic_metadata.o \
hmac.o \ hmac.o \
hwcontext.o \ hwcontext.o \
imgutils.o \ imgutils.o \
......
...@@ -840,6 +840,7 @@ const char *av_frame_side_data_name(enum AVFrameSideDataType type) ...@@ -840,6 +840,7 @@ const char *av_frame_side_data_name(enum AVFrameSideDataType type)
case AV_FRAME_DATA_QP_TABLE_PROPERTIES: return "QP table properties"; case AV_FRAME_DATA_QP_TABLE_PROPERTIES: return "QP table properties";
case AV_FRAME_DATA_QP_TABLE_DATA: return "QP table data"; case AV_FRAME_DATA_QP_TABLE_DATA: return "QP table data";
#endif #endif
case AV_FRAME_DATA_DYNAMIC_HDR_PLUS: return "HDR Dynamic Metadata SMPTE2094-40 (HDR10+)";
} }
return NULL; return NULL;
} }
......
...@@ -166,6 +166,13 @@ enum AVFrameSideDataType { ...@@ -166,6 +166,13 @@ enum AVFrameSideDataType {
* function in libavutil/timecode.c. * function in libavutil/timecode.c.
*/ */
AV_FRAME_DATA_S12M_TIMECODE, AV_FRAME_DATA_S12M_TIMECODE,
/**
* HDR dynamic metadata associated with a video frame. The payload is
* an AVDynamicHDRPlus type and contains information for color
* volume transform - application 4 of SMPTE 2094-40:2016 standard.
*/
AV_FRAME_DATA_DYNAMIC_HDR_PLUS,
}; };
enum AVActiveFormatDescription { enum AVActiveFormatDescription {
......
/**
* Copyright (c) 2018 Mohammad Izadi <moh.izadi at gmail.com>
*
* This file is part of FFmpeg.
*
* FFmpeg is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* FFmpeg is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "hdr_dynamic_metadata.h"
#include "mem.h"
AVDynamicHDRPlus *av_dynamic_hdr_plus_alloc(size_t *size)
{
AVDynamicHDRPlus *hdr_plus = av_mallocz(sizeof(AVDynamicHDRPlus));
if (!hdr_plus)
return NULL;
if (size)
*size = sizeof(*hdr_plus);
return hdr_plus;
}
AVDynamicHDRPlus *av_dynamic_hdr_plus_create_side_data(AVFrame *frame)
{
AVFrameSideData *side_data = av_frame_new_side_data(frame,
AV_FRAME_DATA_DYNAMIC_HDR_PLUS,
sizeof(AVDynamicHDRPlus));
if (!side_data)
return NULL;
memset(side_data->data, 0, sizeof(AVDynamicHDRPlus));
return (AVDynamicHDRPlus *)side_data->data;
}
This diff is collapsed.
...@@ -79,8 +79,8 @@ ...@@ -79,8 +79,8 @@
*/ */
#define LIBAVUTIL_VERSION_MAJOR 56 #define LIBAVUTIL_VERSION_MAJOR 56
#define LIBAVUTIL_VERSION_MINOR 24 #define LIBAVUTIL_VERSION_MINOR 25
#define LIBAVUTIL_VERSION_MICRO 101 #define LIBAVUTIL_VERSION_MICRO 100
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
LIBAVUTIL_VERSION_MINOR, \ LIBAVUTIL_VERSION_MINOR, \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment