Philip de Nier <[email protected]> added the comment:
Patch #2:
Support non-integer audio bits per sample, e.g. 20 bps. Log warning if the bits
per sample is >32
_____________________________________________________
FFmpeg issue tracker <[email protected]>
<https://roundup.ffmpeg.org/roundup/ffmpeg/issue1470>
_____________________________________________________
Index: libavformat/mxfdec.c
===================================================================
--- libavformat/mxfdec.c (revision 21481)
+++ libavformat/mxfdec.c (working copy)
@@ -812,15 +812,19 @@
st->codec->sample_rate = descriptor->sample_rate.num / descriptor->sample_rate.den;
/* TODO: implement CODEC_ID_RAWAUDIO */
if (st->codec->codec_id == CODEC_ID_PCM_S16LE) {
- if (descriptor->bits_per_sample == 24)
+ if (descriptor->bits_per_sample > 32)
+ av_log(mxf->fc, AV_LOG_WARNING, ">32 bits per audio sample not supported\n");
+ else if (descriptor->bits_per_sample > 24)
+ st->codec->codec_id = CODEC_ID_PCM_S32LE;
+ else if (descriptor->bits_per_sample > 16)
st->codec->codec_id = CODEC_ID_PCM_S24LE;
- else if (descriptor->bits_per_sample == 32)
- st->codec->codec_id = CODEC_ID_PCM_S32LE;
} else if (st->codec->codec_id == CODEC_ID_PCM_S16BE) {
- if (descriptor->bits_per_sample == 24)
+ if (descriptor->bits_per_sample > 32)
+ av_log(mxf->fc, AV_LOG_WARNING, ">32 bits per audio sample not supported\n");
+ else if (descriptor->bits_per_sample > 24)
+ st->codec->codec_id = CODEC_ID_PCM_S32BE;
+ else if (descriptor->bits_per_sample > 16)
st->codec->codec_id = CODEC_ID_PCM_S24BE;
- else if (descriptor->bits_per_sample == 32)
- st->codec->codec_id = CODEC_ID_PCM_S32BE;
} else if (st->codec->codec_id == CODEC_ID_MP2) {
st->need_parsing = AVSTREAM_PARSE_FULL;
}