[FFmpeg-user] MLP decoder: decodes 24-bit MLP files into 16-bit MLP wav

fabrice nicol fabrnicol at gmail.com
Wed Jul 3 11:17:57 EEST 2019


The MLP decoder does not seem to work for 24-bit MLP. It converts such 
files into 16-bit WAV, whatever the sample rate.

Example from a (non-encrypted) commercial disc: check the telling chunk:

"  Stream #0:0[0xa1]: Audio: mlp, 96000 Hz, 5.1, s32 (24 bit)
Stream mapping:
   Stream #0:0 -> #0:0 (mlp (native) -> pcm_s16le (native))"

Complete output:

   `ffmpeg -i /mnt/cdrom/AUDIO_TS/ATS_01_3.AOB ~/a.wav`

ffmpeg version 4.1.3 Copyright (c) 2000-2019 the FFmpeg developers
   built with gcc 9.1.0 (Gentoo 9.1.0 p1.0)
   configuration: --prefix=/usr --libdir=/usr/lib64 
--shlibdir=/usr/lib64 --docdir=/usr/share/doc/ffmpeg-4.1.3/html 
--mandir=/usr/share/man --enable-shared --cc=x86_64-pc-linux-gnu-gcc 
--cxx=x86_64-pc-linux-gnu-g++ --ar=x86_64-pc-linux-gnu-ar 
--optflags='-O2 -pipe -march=core-avx2' --enable-static 
--enable-avfilter --enable-avresample --disable-stripping 
--disable-optimizations --disable-libcelt --disable-indev=v4l2 
--disable-outdev=v4l2 --disable-indev=oss --disable-indev=jack 
--disable-outdev=oss --enable-bzlib --disable-runtime-cpudetect 
--disable-debug --disable-gcrypt --disable-gnutls --disable-gmp 
--enable-gpl --enable-hardcoded-tables --enable-iconv --disable-libtls 
--disable-libxml2 --disable-lzma --enable-network --disable-opencl 
--disable-openssl --enable-postproc --disable-libsmbclient 
--enable-ffplay --enable-sdl2 --disable-vaapi --enable-vdpau 
--enable-xlib --enable-libxcb --enable-libxcb-shm --enable-libxcb-xfixes 
--enable-zlib --disable-libcdio --disable-libiec61883 
--disable-libdc1394 --disable-libcaca --disable-openal --enable-opengl 
--disable-libv4l2 --enable-libpulse --disable-libdrm --disable-libjack 
--disable-libopencore-amrwb --disable-libopencore-amrnb 
--disable-libcodec2 --disable-libfdk-aac --disable-libopenjpeg 
--disable-libbluray --disable-libgme --disable-libgsm --disable-mmal 
--disable-libmodplug --disable-libopus --disable-libilbc 
--disable-librtmp --disable-libssh --disable-libspeex --disable-libsrt 
--enable-librsvg --disable-ffnvcodec --enable-libvorbis --disable-libvpx 
--disable-libzvbi --disable-appkit --disable-libbs2b 
--disable-chromaprint --disable-libflite --disable-frei0r 
--disable-libfribidi --disable-fontconfig --disable-ladspa 
--disable-libass --disable-lv2 --enable-libfreetype 
--disable-librubberband --disable-libzmq --disable-libzimg 
--disable-libsoxr --enable-pthreads --disable-libvo-amrwbenc 
--enable-libmp3lame --disable-libkvazaar --disable-libaom 
--disable-libopenh264 --disable-libsnappy --disable-libtheora 
--disable-libtwolame --disable-libwavpack --disable-libwebp 
--enable-libx264 --disable-libx265 --enable-libxvid --disable-armv5te 
--disable-armv6 --disable-armv6t2 --disable-neon --disable-vfp 
--disable-vfpv3 --disable-armv8 --disable-mipsdsp --disable-mipsdspr2 
--disable-mipsfpu --disable-altivec --disable-amd3dnow 
--disable-amd3dnowext --disable-aesni --disable-avx --disable-avx2 
--disable-fma3 --disable-fma4 --disable-sse3 --disable-ssse3 
--disable-sse4 --disable-sse42 --disable-xop --cpu=core-avx2 
--disable-doc --disable-htmlpages --enable-manpages
   libavutil      56. 22.100 / 56. 22.100
   libavcodec     58. 35.100 / 58. 35.100
   libavformat    58. 20.100 / 58. 20.100
   libavdevice    58.  5.100 / 58.  5.100
   libavfilter     7. 40.101 /  7. 40.101
   libavresample   4.  0.  0 /  4.  0.  0
   libswscale      5.  3.100 /  5.  3.100
   libswresample   3.  3.100 /  3.  3.100
   libpostproc    55.  3.100 / 55.  3.100
Input #0, mpeg, from '/mnt/cdrom/AUDIO_TS/ATS_01_3.AOB':
   Duration: 26:29:22.18, start: 143.151067, bitrate: 47 kb/s
     Stream #0:0[0xa1]: Audio: mlp, 96000 Hz, 5.1, s32 (24 bit)
Stream mapping:
   Stream #0:0 -> #0:0 (mlp (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
Output #0, wav, to '/home/fab2/a.wav':
   Metadata:
     ISFT            : Lavf58.20.100
     Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 96000 Hz, 
5.1, s16, 9216 kb/s
     Metadata:
       encoder         : Lavc58.35.100 pcm_s16le
(...)

The output is 16-bit depth as indicated in the console messages. Using 
SoX to corroborate:

sox --i  a.wav

Input File     : 'a.wav'
Channels       : 6
Sample Rate    : 96000
Precision      : 16-bit
Duration       : 00:14:14.05 = 81988800 samples ~ 64053.8 CDDA sectors
File Size      : 984M
Bit Rate       : 9.22M
Sample Encoding: 16-bit Signed Integer PCM

My platform is Gentoo Linux amd64.

Is this an undocumented limitation of the MLP decoder or is there 
something I did wrong?







More information about the ffmpeg-user mailing list