}
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;
if (!(channel_assign & 1)) {
int i;
for (i = 1; i < 32; i++)
- if (channel_assign & (1 << i))
+ if ((channel_assign >> i) & 1)
st->codecpar->channel_layout |= wsd_to_av_channel_layoyt(s, i);
}
return avio_seek(pb, data_offset, SEEK_SET);
}
-AVInputFormat ff_wsd_demuxer = {
+FF_RAW_DEMUXER_CLASS(wsd)
+const AVInputFormat ff_wsd_demuxer = {
.name = "wsd",
.long_name = NULL_IF_CONFIG_SMALL("Wideband Single-bit Data (WSD)"),
.read_probe = wsd_probe,
.extensions = "wsd",
.flags = AVFMT_GENERIC_INDEX | AVFMT_NO_BYTE_SEEK,
.raw_codec_id = AV_CODEC_ID_DSD_MSBF,
+ .priv_data_size = sizeof(FFRawDemuxerContext),
+ .priv_class = &wsd_demuxer_class,
};