avformat: use av_timecode_make_smpte_tc_string2
WSD format has no frames stored for playback time. Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
@@ -408,7 +408,7 @@ static void dump_dovi_conf(void *ctx, const AVPacketSideData *sd)
|
|||||||
dovi->dv_bl_signal_compatibility_id);
|
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;
|
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++) {
|
for (int j = 1; j <= tc[0]; j++) {
|
||||||
char tcbuf[AV_TIMECODE_STR_SIZE];
|
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] ? ", " : "");
|
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;
|
break;
|
||||||
case AV_PKT_DATA_S12M_TIMECODE:
|
case AV_PKT_DATA_S12M_TIMECODE:
|
||||||
av_log(ctx, AV_LOG_INFO, "SMPTE ST 12-1:2014: ");
|
av_log(ctx, AV_LOG_INFO, "SMPTE ST 12-1:2014: ");
|
||||||
dump_s12m_timecode(ctx, sd);
|
dump_s12m_timecode(ctx, st, sd);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
av_log(ctx, AV_LOG_INFO,
|
av_log(ctx, AV_LOG_INFO,
|
||||||
|
@@ -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);
|
tc_pack = dv_extract_pack(frame, dv_timecode);
|
||||||
if (!tc_pack)
|
if (!tc_pack)
|
||||||
return 0;
|
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;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -120,7 +120,7 @@ static int wsd_read_header(AVFormatContext *s)
|
|||||||
}
|
}
|
||||||
|
|
||||||
avio_skip(pb, 4);
|
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);
|
av_dict_set(&s->metadata, "playback_time", playback_time, 0);
|
||||||
|
|
||||||
st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO;
|
st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO;
|
||||||
|
Reference in New Issue
Block a user