From: Nicolas Gaullier <[email protected]>
Signed-off-by: Nicolas Gaullier <[email protected]>
---
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
[email protected]
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
[email protected] with subject "unsubscribe".