On Sun, 16 Apr 2023, Marton Balint wrote:

Signed-off-by: Marton Balint <[email protected]>
---
libavformat/mov.c | 32 ++++++++++++--------------------
1 file changed, 12 insertions(+), 20 deletions(-)

Will apply the series soon.

Regards,
Marton


diff --git a/libavformat/mov.c b/libavformat/mov.c
index 057fd872b1..5d00ff6e8b 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -1515,14 +1515,22 @@ static int mov_read_moof(MOVContext *c, AVIOContext 
*pb, MOVAtom atom)
    return mov_read_default(c, pb, atom);
}

-static void mov_metadata_creation_time(AVDictionary **metadata, int64_t time, 
void *logctx)
+static void mov_metadata_creation_time(MOVContext *c, AVIOContext *pb, 
AVDictionary **metadata, int version)
{
+    int64_t time;
+    if (version == 1) {
+        time = avio_rb64(pb);
+        avio_rb64(pb);
+    } else {
+        time = avio_rb32(pb);
+        avio_rb32(pb); /* modification time */
+    }
    if (time) {
        if (time >= 2082844800)
            time -= 2082844800;  /* seconds between 1904-01-01 and Epoch */

        if ((int64_t)(time * 1000000ULL) / 1000000 != time) {
-            av_log(logctx, AV_LOG_DEBUG, "creation_time is not 
representable\n");
+            av_log(c->fc, AV_LOG_DEBUG, "creation_time is not 
representable\n");
            return;
        }

@@ -1537,7 +1545,6 @@ static int mov_read_mdhd(MOVContext *c, AVIOContext *pb, 
MOVAtom atom)
    int version;
    char language[4] = {0};
    unsigned lang;
-    int64_t creation_time;

    if (c->fc->nb_streams < 1)
        return 0;
@@ -1555,14 +1562,7 @@ static int mov_read_mdhd(MOVContext *c, AVIOContext *pb, 
MOVAtom atom)
        return AVERROR_PATCHWELCOME;
    }
    avio_rb24(pb); /* flags */
-    if (version == 1) {
-        creation_time = avio_rb64(pb);
-        avio_rb64(pb);
-    } else {
-        creation_time = avio_rb32(pb);
-        avio_rb32(pb); /* modification time */
-    }
-    mov_metadata_creation_time(&st->metadata, creation_time, c->fc);
+    mov_metadata_creation_time(c, pb, &st->metadata, version);

    sc->time_scale = avio_rb32(pb);
    if (sc->time_scale <= 0) {
@@ -1587,18 +1587,10 @@ static int mov_read_mdhd(MOVContext *c, AVIOContext 
*pb, MOVAtom atom)
static int mov_read_mvhd(MOVContext *c, AVIOContext *pb, MOVAtom atom)
{
    int i;
-    int64_t creation_time;
    int version = avio_r8(pb); /* version */
    avio_rb24(pb); /* flags */

-    if (version == 1) {
-        creation_time = avio_rb64(pb);
-        avio_rb64(pb);
-    } else {
-        creation_time = avio_rb32(pb);
-        avio_rb32(pb); /* modification time */
-    }
-    mov_metadata_creation_time(&c->fc->metadata, creation_time, c->fc);
+    mov_metadata_creation_time(c, pb, &c->fc->metadata, version);
    c->time_scale = avio_rb32(pb); /* time scale */
    if (c->time_scale <= 0) {
        av_log(c->fc, AV_LOG_ERROR, "Invalid mvhd time scale %d, defaulting to 
1\n", c->time_scale);
--
2.35.3

_______________________________________________
ffmpeg-devel mailing list
[email protected]
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
[email protected] with subject "unsubscribe".

_______________________________________________
ffmpeg-devel mailing list
[email protected]
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
[email protected] with subject "unsubscribe".

Reply via email to