[PATCH] format: Fix rate for HBR passthrough formats

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2018-05-25 22:15 GMT+08:00 Arun Raghavan <arun at arunraghavan.net>:
> On Tue, 22 May 2018, at 4:32 PM, Alexander E. Patrakov wrote:
>> There is some Microsoft documentation that contradicts this code.
>>
>> https://msdn.microsoft.com/en-us/library/windows/desktop/dd316761(v=vs.85).aspx
>>
>> """
>> Dolby TrueHD (MAT)
>>
>> Dolby TrueHD content is transmitted over IEC 60958 at 176.4 kHz / 8
>> channels (requiring an IEC 60958 frame rate of 705.6 kHz) for content
>> sample rates of 44.1, 88.2 and 176.4 kHz, and 192 kHz / 8 channels
>> (requiring an IEC 60958 frame rate of 768 kHz) for content sample
>> rates of 48, 96 and 192 kHz.
>> """
>
> Based on Peter's input in a private thread, seems this is not the case on Linux:
>
> https://github.com/xbmc/xbmc/blob/master/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp#L135
> https://github.com/xbmc/xbmc/blob/master/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp#L486

I have looked, and also obtained a copy of IEC 61937-5-2006 standard,
and I think I understand where this discrepancy comes from. The issue
is that the standard does not define at all what to do if the sample
rate of DTS audio is not a multiple of 48 kHz. I.e., it does not even
cover the DTS CD case (44.1 kHz) that de-facto exists!

Still, I think that diverging from what Windows does is not a good
thing. Has anyone tested that passthrough works with DTS-HD streams
that are not with a sample rate that is a multiple of 48 kHz? Does
anyone have such DTS-HD stream at all?

>
> Cheers,
> Arun
>
>> 2018-05-22 12:13 GMT+08:00 Arun Raghavan <arun at arunraghavan.net>:
>> > In high bitrate mode, we force 192kHz/8ch as the sample format, which is
>> > the expectation for HBR formats (as that is what allows for the largest
>> > possible packet size).
>> > ---
>> >  src/pulsecore/core-format.c | 3 +++
>> >  1 file changed, 3 insertions(+)
>> >
>> > diff --git a/src/pulsecore/core-format.c b/src/pulsecore/core-format.c
>> > index 862a74b5d..096acc3a2 100644
>> > --- a/src/pulsecore/core-format.c
>> > +++ b/src/pulsecore/core-format.c
>> > @@ -248,6 +248,9 @@ int pa_format_info_to_sample_spec_fake(const pa_format_info *f, pa_sample_spec *
>> >
>> >      if (f->encoding == PA_ENCODING_EAC3_IEC61937)
>> >          ss->rate *= 4;
>> > +    else if ((f->encoding == PA_ENCODING_TRUEHD_IEC61937) ||
>> > +             (f->encoding == PA_ENCODING_DTSHD_IEC61937))
>> > +        ss->rate = 192000;
>> >
>> >      return 0;
>> >  }
>> > --
>> > 2.17.0
>> >
>> > _______________________________________________
>> > pulseaudio-discuss mailing list
>> > pulseaudio-discuss at lists.freedesktop.org
>> > https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
>>
>>
>>
>> --
>> Alexander E. Patrakov



-- 
Alexander E. Patrakov


[Index of Archives]     [Linux Audio Users]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux