]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/cinedec.c
Merge commit '58b68e4fdea22e22178e237bda950b09cc6f363a'
[ffmpeg] / libavformat / cinedec.c
index 372088495e12d69ab5cfcdfd497e1477658018a3..8f450fa86580328ea13c1e67c13548850fa2027e 100644 (file)
@@ -73,9 +73,7 @@ static int cine_read_probe(AVProbeData *p)
 static int set_metadata_int(AVDictionary **dict, const char *key, int value)
 {
     if (value) {
-        char buf[64];
-        snprintf(buf, sizeof(buf), "%i", value);
-        return av_dict_set(dict, key, buf, 0);
+        return av_dict_set_int(dict, key, value, 0);
     }
     return 0;
 }
@@ -227,7 +225,11 @@ static int cine_read_header(AVFormatContext *avctx)
         return AVERROR_INVALIDDATA;
     }
 
-    avio_skip(pb, 696); // Conv8Min ... ImHeightAcq
+    avio_skip(pb, 668); // Conv8Min ... Sensor
+
+    set_metadata_int(&st->metadata, "shutter_ns", avio_rl32(pb));
+
+    avio_skip(pb, 24); // EDRShutterNs ... ImHeightAcq
 
 #define DESCRIPTION_SIZE 4096
     description = av_malloc(DESCRIPTION_SIZE + 1);
@@ -241,6 +243,14 @@ static int cine_read_header(AVFormatContext *avctx)
     else
         av_free(description);
 
+    avio_skip(pb, 1176); // RisingEdge ... cmUser
+
+    set_metadata_int(&st->metadata, "enable_crop", avio_rl32(pb));
+    set_metadata_int(&st->metadata, "crop_left", avio_rl32(pb));
+    set_metadata_int(&st->metadata, "crop_top", avio_rl32(pb));
+    set_metadata_int(&st->metadata, "crop_right", avio_rl32(pb));
+    set_metadata_int(&st->metadata, "crop_bottom", avio_rl32(pb));
+
     /* parse image offsets */
     avio_seek(pb, offImageOffsets, SEEK_SET);
     for (i = 0; i < st->duration; i++)