avformat/matroskadec: don't rescale mastering display values
authorJames Almer <jamrial@gmail.com>
Thu, 3 Oct 2019 23:52:20 +0000 (20:52 -0300)
committerJames Almer <jamrial@gmail.com>
Sun, 6 Oct 2019 01:37:41 +0000 (22:37 -0300)
Simplifies code.

Signed-off-by: James Almer <jamrial@gmail.com>
libavformat/matroskadec.c

index a5f120b..c224c34 100644 (file)
@@ -2116,9 +2116,6 @@ static int mkv_parse_video_color(AVStream *st, const MatroskaTrack *track) {
     }
 
     if (has_mastering_primaries || has_mastering_luminance) {
-        // 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,
@@ -2128,29 +2125,19 @@ static int mkv_parse_video_color(AVStream *st, const MatroskaTrack *track) {
         }
         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);
-            metadata->display_primaries[0][1] = av_make_q(
-                round(mastering_meta->r_y * chroma_den), chroma_den);
-            metadata->display_primaries[1][0] = av_make_q(
-                round(mastering_meta->g_x * chroma_den), chroma_den);
-            metadata->display_primaries[1][1] = av_make_q(
-                round(mastering_meta->g_y * chroma_den), chroma_den);
-            metadata->display_primaries[2][0] = av_make_q(
-                round(mastering_meta->b_x * chroma_den), chroma_den);
-            metadata->display_primaries[2][1] = av_make_q(
-                round(mastering_meta->b_y * chroma_den), chroma_den);
-            metadata->white_point[0] = av_make_q(
-                round(mastering_meta->white_x * chroma_den), chroma_den);
-            metadata->white_point[1] = av_make_q(
-                round(mastering_meta->white_y * chroma_den), chroma_den);
+            metadata->display_primaries[0][0] = av_d2q(mastering_meta->r_x, INT_MAX);
+            metadata->display_primaries[0][1] = av_d2q(mastering_meta->r_y, INT_MAX);
+            metadata->display_primaries[1][0] = av_d2q(mastering_meta->g_x, INT_MAX);
+            metadata->display_primaries[1][1] = av_d2q(mastering_meta->g_y, INT_MAX);
+            metadata->display_primaries[2][0] = av_d2q(mastering_meta->b_x, INT_MAX);
+            metadata->display_primaries[2][1] = av_d2q(mastering_meta->b_y, INT_MAX);
+            metadata->white_point[0] = av_d2q(mastering_meta->white_x, INT_MAX);
+            metadata->white_point[1] = av_d2q(mastering_meta->white_y, INT_MAX);
             metadata->has_primaries = 1;
         }
         if (has_mastering_luminance) {
-            metadata->max_luminance = av_make_q(
-                round(mastering_meta->max_luminance * luma_den), luma_den);
-            metadata->min_luminance = av_make_q(
-                round(mastering_meta->min_luminance * luma_den), luma_den);
+            metadata->max_luminance = av_d2q(mastering_meta->max_luminance, INT_MAX);
+            metadata->min_luminance = av_d2q(mastering_meta->min_luminance, INT_MAX);
             metadata->has_luminance = 1;
         }
     }