MLP encoder: encodes 24-bit wav files into 16-bit MLP

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

MLP encoder: encodes 24-bit wav files into 16-bit MLP

fabrice nicol
I'm experiencing a parallel issue with encoding, the reverse operation
of my previous question about the MLP decoder.

ffmpeg is build from git source code. Choosing a simple 2-channel 24
-bit 96khz wav file yields:

   `~ $  /usr/local/bin/ffmpeg -i a_2_24_96.wav -c:a mlp -strict
experimental a_2_24_96.mlp`

ffmpeg version git-2019-07-05-7c64498 Copyright (c) 2000-2019 the FFmpeg
developers
   built with gcc 9.1.0 (Gentoo 9.1.0-r1 p1.1)
   configuration:
   libavutil      56. 30.100 / 56. 30.100
   libavcodec     58. 53.101 / 58. 53.101
   libavformat    58. 28.101 / 58. 28.101
   libavdevice    58.  7.100 / 58.  7.100
   libavfilter     7. 56.100 /  7. 56.100
   libswscale      5.  4.101 /  5.  4.101
   libswresample   3.  4.100 /  3.  4.100
Input #0, wav, from 'a_2_24_96.wav':
   Duration: 00:14:14.05, bitrate: 4608 kb/s
     Stream #0:0: Audio: pcm_s24le ([1][0][0][0] / 0x0001), 96000 Hz,
stereo, s32 (24 bit), 4608 kb/s
Stream mapping:
   Stream #0:0 -> #0:0 (pcm_s24le (native) -> mlp (native))
Press [q] to stop, [?] for help
Output #0, mlp, to 'a_2_24_96.mlp':
   Metadata:
     encoder         : Lavf58.28.101
     Stream #0:0: Audio: mlp, 96000 Hz, stereo, s16, 128 kb/s
     Metadata:
       encoder         : Lavc58.53.101 mlp
size=  138569kB time=00:14:14.05 bitrate=1329.1kbits/s speed=57.8x
video:0kB audio:138569kB subtitle:0kB other streams:0kB global
headers:0kB muxing overhead: 0.000000%

The output is 16-bit depth not 24-bit:

Input #0, mlp, from 'a_2_24_96.mlp':
   Duration: N/A, start: 0.000000, bitrate: N/A
     Stream #0:0: Audio: mlp, 96000 Hz, stereo,s16

Is this a limitation of the currently still experimental encoder or am I
doing something wrong?

Fabrice

Le 03/07/2019 à 11:17, Moritz Barsnick a écrit :

> On Wed, Jul 03, 2019 at 10:17:57 +0200, fabrice nicol wrote:
>> The MLP decoder does not seem to work for 24-bit MLP. It converts such
>> files into 16-bit WAV, whatever the sample rate.
> Actually, you could think so. But the decoder is fine. On the other
> hand, the wav output format defaults to 16 bits.
>
>>     `ffmpeg -i /mnt/cdrom/AUDIO_TS/ATS_01_3.AOB ~/a.wav`
> [...]
>> Stream mapping:
>>     Stream #0:0 -> #0:0 (mlp (native) -> pcm_s16le (native))
> [...]
>>       Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 96000 Hz, 5.1, s16, 9216 kb/s
> Just add "-c:a pcm_s24le" as an output option. Then you get the full
> sample depth.
>
>> sox --i  a.wav
> Tested and confirmed with sox here as well. ;-)
>
> Hope this helps,
> Moritz
> _______________________________________________
> ffmpeg-user mailing list
> [hidden email]
> https://ffmpeg.org/mailman/listinfo/ffmpeg-user
>
> To unsubscribe, visit link above, or email
> [hidden email]  with subject "unsubscribe".
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: MLP encoder: encodes 24-bit wav files into 16-bit MLP

christian-2
Eure E-Mail zu sehen mein Herz auf’s Wärmste erfreut, allerdings Du gefunden hast nur mein Auto-Replier.

Ein Kunde er wirklich sein mag. Aber trotzdem… große Arbeit ich befürchte durch seine E-Mail. Deshalb in Urlaub fahren ich werde von 05.07.2019 bis 22.07.2019. Denn Vorsicht du walten lassen musst. Stress ein Pfad zur Dunklen Seite er ist. Ehre das Leben, indem du lebst, Padawan.

Antworten nach meiner Rückkehr, ich werde.

Dein Meister in meiner Abwesenheit sein soll:

Morris Schwarz
[hidden email]




_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: MLP encoder: encodes 24-bit wav files into 16-bit MLP

Moritz Barsnick
In reply to this post by fabrice nicol
On Sat, Jul 06, 2019 at 03:57:38 +0200, fabrice nicol wrote:
> ffmpeg is build from git source code. Choosing a simple 2-channel 24
> -bit 96khz wav file yields:
>
>    `~ $  /usr/local/bin/ffmpeg -i a_2_24_96.wav -c:a mlp -strict experimental a_2_24_96.mlp`
[...]
> Input #0, wav, from 'a_2_24_96.wav':
>    Duration: 00:14:14.05, bitrate: 4608 kb/s
>      Stream #0:0: Audio: pcm_s24le ([1][0][0][0] / 0x0001), 96000 Hz, stereo, s32 (24 bit), 4608 kb/s
[...]
>      Stream #0:0: Audio: mlp, 96000 Hz, stereo, s16, 128 kb/s
[...]
> Is this a limitation of the currently still experimental encoder or am I
> doing something wrong?

Indeed, this seems to be a limitation of the mlp encoder:

$ ffmpeg -h encoder=mlp
[...]
    Supported sample formats: s16

But looking at the code (mplenc.c), there does seem to be support for
24 bit MLP in there. It just can't be accessed, because the encoder is
not configured to accept such input:

    .sample_fmts            = (const enum AVSampleFormat[]) {AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_NONE},
(This is a list of supported input formats.)

If you edit this line to:
    .sample_fmts            = (const enum AVSampleFormat[]) {AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_S32, AV_SAMPLE_FMT_NONE},

and recompile, it seems to actually produce 24 bit output. (And this
output plays with ffplay and mpv at least, which both use libavcodec to
decode though).

The reason for the support missing can be read in the commit message:
https://github.com/FFmpeg/FFmpeg/commit/15b86f480a9c748aeeafb42a877ee755c64f90f2

  * 32-bit sample support has been removed for now, will add it later

    While testing, some samples gave lossless check failures when enforcing
    s32. Probably this will also get solved with the LFE issues.

So it was disabled because some encodings were incorrect.

Cheers,
Moritz
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: MLP encoder: encodes 24-bit wav files into 16-bit MLP

fabrice nicol
Thanks for this prompt reply.
I'll be testing the recompiled-reactivated 24 bit encoder so that MLP can
be added to the free DVD-Audio authoring software dvda-author (
http://dvd-audio.sourceforge.com), which is currently being improved.
Hopefully Jai can fix remaining issues and let me know.
Best
Fabrice Nicol

Le dim. 7 juil. 2019 03:58, Moritz Barsnick <[hidden email]> a écrit :

> On Sat, Jul 06, 2019 at 03:57:38 +0200, fabrice nicol wrote:
> > ffmpeg is build from git source code. Choosing a simple 2-channel 24
> > -bit 96khz wav file yields:
> >
> >    `~ $  /usr/local/bin/ffmpeg -i a_2_24_96.wav -c:a mlp -strict
> experimental a_2_24_96.mlp`
> [...]
> > Input #0, wav, from 'a_2_24_96.wav':
> >    Duration: 00:14:14.05, bitrate: 4608 kb/s
> >      Stream #0:0: Audio: pcm_s24le ([1][0][0][0] / 0x0001), 96000 Hz,
> stereo, s32 (24 bit), 4608 kb/s
> [...]
> >      Stream #0:0: Audio: mlp, 96000 Hz, stereo, s16, 128 kb/s
> [...]
> > Is this a limitation of the currently still experimental encoder or am I
> > doing something wrong?
>
> Indeed, this seems to be a limitation of the mlp encoder:
>
> $ ffmpeg -h encoder=mlp
> [...]
>     Supported sample formats: s16
>
> But looking at the code (mplenc.c), there does seem to be support for
> 24 bit MLP in there. It just can't be accessed, because the encoder is
> not configured to accept such input:
>
>     .sample_fmts            = (const enum AVSampleFormat[])
> {AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_NONE},
> (This is a list of supported input formats.)
>
> If you edit this line to:
>     .sample_fmts            = (const enum AVSampleFormat[])
> {AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_S32, AV_SAMPLE_FMT_NONE},
>
> and recompile, it seems to actually produce 24 bit output. (And this
> output plays with ffplay and mpv at least, which both use libavcodec to
> decode though).
>
> The reason for the support missing can be read in the commit message:
>
> https://github.com/FFmpeg/FFmpeg/commit/15b86f480a9c748aeeafb42a877ee755c64f90f2
>
>   * 32-bit sample support has been removed for now, will add it later
>
>     While testing, some samples gave lossless check failures when enforcing
>     s32. Probably this will also get solved with the LFE issues.
>
> So it was disabled because some encodings were incorrect.
>
> Cheers,
> Moritz
> _______________________________________________
> ffmpeg-user mailing list
> [hidden email]
> https://ffmpeg.org/mailman/listinfo/ffmpeg-user
>
> To unsubscribe, visit link above, or email
> [hidden email] with subject "unsubscribe".
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: MLP encoder: encodes 24-bit wav files into 16-bit MLP

Jai Luthra
On Sun Jul 7 09:57:26 EEST 2019, Fabrice Nicol wrote:
> I'll be testing the recompiled-reactivated 24 bit encoder so that MLP can be
> added to the free DVD-Audio authoring software dvda-author
> (http://dvd-audio.sourceforge.com), which is currently being improved.
> Hopefully Jai can fix remaining issues and let me know.

Hi Fabrice,

I have fixed the lossless check issues and enabled 24 bit support for both MLP
and TrueHD. I've sent the patch [1] out for review on ffmpeg-devel, check it
out if you need it urgently before review and merge.

[1]: http://ffmpeg.org/pipermail/ffmpeg-devel/2019-July/246357.html

Cheers,
Jai
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".