From: Nicolas Gaullier <nicolas.gaullier@cji.paris> Signed-off-by: Nicolas Gaullier <nicolas.gaullier@cji.paris> --- libavformat/demux.c | 2 ++ libavformat/mxfdec.c | 9 +++++++-- libavformat/wavdec.c | 3 ++- 3 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/libavformat/demux.c b/libavformat/demux.c index cba1f2e4df..d26d207a46 100644 --- a/libavformat/demux.c +++ b/libavformat/demux.c @@ -125,6 +125,8 @@ static int set_codec_from_probe_data(AVFormatContext *s, AVStream *st, { "truehd", AV_CODEC_ID_TRUEHD, AVMEDIA_TYPE_AUDIO }, { "evc", AV_CODEC_ID_EVC, AVMEDIA_TYPE_VIDEO }, { "vvc", AV_CODEC_ID_VVC, AVMEDIA_TYPE_VIDEO }, + { "s337m_16", AV_CODEC_ID_S337M_16, AVMEDIA_TYPE_AUDIO }, + { "s337m_24", AV_CODEC_ID_S337M_24, AVMEDIA_TYPE_AUDIO }, { 0 } }; int score; diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c index 9ecaa287bb..2eaca7565b 100644 --- a/libavformat/mxfdec.c +++ b/libavformat/mxfdec.c @@ -634,7 +634,7 @@ static int mxf_get_d10_aes3_packet(AVIOContext *pb, AVStream *st, AVPacket *pkt, for (; end_ptr - buf_ptr >= st->codecpar->ch_layout.nb_channels * 4; ) { for (int i = 0; i < st->codecpar->ch_layout.nb_channels; i++) { uint32_t sample = bytestream_get_le32(&buf_ptr); - if (st->codecpar->bits_per_coded_sample == 24) + if (av_get_bits_per_sample(st->codecpar->codec_id) == 24) bytestream_put_le24(&data_ptr, (sample >> 4) & 0xffffff); else bytestream_put_le16(&data_ptr, (sample >> 12) & 0xffff); @@ -3080,7 +3080,12 @@ static int mxf_parse_structural_metadata(MXFContext *mxf) } else if (st->codecpar->codec_id == AV_CODEC_ID_AAC) { sti->need_parsing = AVSTREAM_PARSE_FULL; } - st->codecpar->bits_per_coded_sample = av_get_bits_per_sample(st->codecpar->codec_id); + if (st->codecpar->codec_id == AV_CODEC_ID_PCM_S16LE + || st->codecpar->codec_id == AV_CODEC_ID_PCM_S24LE) { + FFStream *const sti = ffstream(st); + sti->request_probe = AVPROBE_SCORE_EXTENSION; + sti->need_parsing = AVSTREAM_PARSE_FULL; + } if (descriptor->channels <= 0 || descriptor->channels >= FF_SANE_NB_CHANNELS) { av_log(mxf->fc, AV_LOG_ERROR, "Invalid number of channels %d, must be less than %d\n", descriptor->channels, FF_SANE_NB_CHANNELS); diff --git a/libavformat/wavdec.c b/libavformat/wavdec.c index 78e37b88d7..c55aa915e6 100644 --- a/libavformat/wavdec.c +++ b/libavformat/wavdec.c @@ -176,7 +176,8 @@ static int wav_probe(const AVProbeData *p) static void handle_stream_probing(AVStream *st) { - if (st->codecpar->codec_id == AV_CODEC_ID_PCM_S16LE) { + if (st->codecpar->codec_id == AV_CODEC_ID_PCM_S16LE + || st->codecpar->codec_id == AV_CODEC_ID_PCM_S24LE) { FFStream *const sti = ffstream(st); sti->request_probe = AVPROBE_SCORE_EXTENSION; sti->probe_packets = FFMIN(sti->probe_packets, 32); -- 2.30.2 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".