]> git.sesse.net Git - ffmpeg/commitdiff
avformat: use av_timecode_make_smpte_tc_string2
authorMarton Balint <cus@passwd.hu>
Fri, 24 Jul 2020 14:26:58 +0000 (16:26 +0200)
committerMarton Balint <cus@passwd.hu>
Sun, 13 Sep 2020 15:51:57 +0000 (17:51 +0200)
WSD format has no frames stored for playback time.

Signed-off-by: Marton Balint <cus@passwd.hu>
libavformat/dump.c
libavformat/dv.c
libavformat/wsddec.c

index 6d29d85d1fba48368a7fb0dfe020c5b6d75efa42..fe628010d3322a64b737f815a4058f6eee6e10d8 100644 (file)
@@ -408,7 +408,7 @@ static void dump_dovi_conf(void *ctx, const AVPacketSideData *sd)
            dovi->dv_bl_signal_compatibility_id);
 }
 
-static void dump_s12m_timecode(void *ctx, const AVPacketSideData *sd)
+static void dump_s12m_timecode(void *ctx, const AVStream *st, const AVPacketSideData *sd)
 {
     const uint32_t *tc = (const uint32_t *)sd->data;
 
@@ -419,7 +419,7 @@ static void dump_s12m_timecode(void *ctx, const AVPacketSideData *sd)
 
     for (int j = 1; j <= tc[0]; j++) {
         char tcbuf[AV_TIMECODE_STR_SIZE];
-        av_timecode_make_smpte_tc_string(tcbuf, tc[j], 0);
+        av_timecode_make_smpte_tc_string2(tcbuf, st->avg_frame_rate, tc[j], 0, 0);
         av_log(ctx, AV_LOG_INFO, "timecode - %s%s", tcbuf, j != tc[0] ? ", " : "");
     }
 }
@@ -492,7 +492,7 @@ static void dump_sidedata(void *ctx, const AVStream *st, const char *indent)
             break;
         case AV_PKT_DATA_S12M_TIMECODE:
             av_log(ctx, AV_LOG_INFO, "SMPTE ST 12-1:2014: ");
-            dump_s12m_timecode(ctx, sd);
+            dump_s12m_timecode(ctx, st, sd);
             break;
         default:
             av_log(ctx, AV_LOG_INFO,
index d25641daac05b29914d55eadc485aa4d332f0603..3e0d12c0e38e8eef8ae51a4b92469f5c745ebfbd 100644 (file)
@@ -315,7 +315,7 @@ static int dv_extract_timecode(DVDemuxContext* c, const uint8_t* frame, char *tc
     tc_pack = dv_extract_pack(frame, dv_timecode);
     if (!tc_pack)
         return 0;
-    av_timecode_make_smpte_tc_string(tc, AV_RB32(tc_pack + 1), prevent_df);
+    av_timecode_make_smpte_tc_string2(tc, av_inv_q(c->sys->time_base), AV_RB32(tc_pack + 1), prevent_df, 1);
     return 1;
 }
 
index 2313b0ec4b767ff42e1a5d05cebf184caef03447..74db6acdab79d22a295346401cb0bfe1ca3a1b8f 100644 (file)
@@ -120,7 +120,7 @@ static int wsd_read_header(AVFormatContext *s)
     }
 
     avio_skip(pb, 4);
-    av_timecode_make_smpte_tc_string(playback_time, avio_rb32(pb), 0);
+    av_timecode_make_smpte_tc_string2(playback_time, (AVRational){1,1}, avio_rb32(pb) & 0x00ffffffU, 1, 1);
     av_dict_set(&s->metadata, "playback_time", playback_time, 0);
 
     st->codecpar->codec_type  = AVMEDIA_TYPE_AUDIO;