[FFmpeg-devel] [PATCH 2/6] avformat/matroskadec: use mastering display metadata's own alloc function

James Almer jamrial at gmail.com
Sun Dec 11 05:33:04 EET 2016


Signed-off-by: James Almer <jamrial at gmail.com>
---
 libavformat/matroskadec.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
index 58731aa..493d63f 100644
--- a/libavformat/matroskadec.c
+++ b/libavformat/matroskadec.c
@@ -1867,14 +1867,12 @@ static int mkv_parse_video_color(AVStream *st, const MatroskaTrack *track) {
         // Use similar rationals as other standards.
         const int chroma_den = 50000;
         const int luma_den = 10000;
-        AVMasteringDisplayMetadata *metadata =
-            (AVMasteringDisplayMetadata*) av_stream_new_side_data(
-                st, AV_PKT_DATA_MASTERING_DISPLAY_METADATA,
-                sizeof(AVMasteringDisplayMetadata));
+        size_t mastering_size;
+        int ret;
+        AVMasteringDisplayMetadata *metadata = av_mastering_display_metadata_alloc2(&mastering_size);
         if (!metadata) {
             return AVERROR(ENOMEM);
         }
-        memset(metadata, 0, sizeof(AVMasteringDisplayMetadata));
         if (has_mastering_primaries) {
             metadata->display_primaries[0][0] = av_make_q(
                 round(mastering_meta->r_x * chroma_den), chroma_den);
@@ -1901,6 +1899,13 @@ static int mkv_parse_video_color(AVStream *st, const MatroskaTrack *track) {
                 round(mastering_meta->min_luminance * luma_den), luma_den);
             metadata->has_luminance = 1;
         }
+
+        ret = av_stream_add_side_data(st, AV_PKT_DATA_MASTERING_DISPLAY_METADATA,
+                                      (uint8_t *)metadata, mastering_size);
+        if (ret < 0) {
+            av_freep(&metadata);
+            return ret;
+        }
     }
     return 0;
 }
-- 
2.10.2



More information about the ffmpeg-devel mailing list