X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fwsddec.c;h=74db6acdab79d22a295346401cb0bfe1ca3a1b8f;hb=131f2c2712479a44332866b442526abe97e0c316;hp=81a4dcc71e956402f008073f7995cd80c27a48db;hpb=398000abcf980d239a789da6f69811913d2fc635;p=ffmpeg diff --git a/libavformat/wsddec.c b/libavformat/wsddec.c index 81a4dcc71e9..74db6acdab7 100644 --- a/libavformat/wsddec.c +++ b/libavformat/wsddec.c @@ -25,7 +25,7 @@ #include "internal.h" #include "rawdec.h" -static int wsd_probe(AVProbeData *p) +static int wsd_probe(const AVProbeData *p) { if (p->buf_size < 45 || memcmp(p->buf, "1bit", 4) || !AV_RB32(p->buf + 36) || !p->buf[44] || @@ -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; @@ -137,7 +137,7 @@ static int wsd_read_header(AVFormatContext *s) 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); } @@ -161,6 +161,7 @@ static int wsd_read_header(AVFormatContext *s) return avio_seek(pb, data_offset, SEEK_SET); } +FF_RAW_DEMUXER_CLASS(wsd) AVInputFormat ff_wsd_demuxer = { .name = "wsd", .long_name = NULL_IF_CONFIG_SMALL("Wideband Single-bit Data (WSD)"), @@ -170,4 +171,6 @@ AVInputFormat ff_wsd_demuxer = { .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, };