Subject: Re: [Cellar] Channel Positions for Multichannel LPCM Track Inside Matroska

From: Steve Lhomme <[email-masked]>
Date: Sun, 8 May 2016 14:05:30 +0200

2016-04-24 17:39 GMT+02:00 Nithin Mathew Kurien <[email-masked]>:
> Hi,
>
> Currently the specification for storing a multichannel LPCM track (CodecID
> A_PCM/INT/LIT) inside a Matroska file [1, 2], does not specify a way to
> indicate the channel positions of the track. Due to this, players find it
> difficult to map the channels to the correct speaker positions when playing
> such a track. MakeMKV employs a workaround for this problem. It stores the
> track under the CodecID A_MS/ACM, along with a WAVEFORMATEXTENSIBLE
> structure in CodecPrivate. This structure contains a field called
> dwChannelMask which specifies the channel positions [3]. This is identical
> to the way LPCM is stored inside AVI files. The problem with this approach
> is that most players do not recognise the CodecID A_MS/ACM, except for a few
> open-source players like Kodi [4].

We used to have a field for that but it was never used AFAIK
https://matroska.org/technical/specs/index.html#ChannelPositions

This is how it used to be, describing each speaker position with an
angle. I don't know there is a standard way to express this. I'd
assume the distance to the center should play a role too.
https://web.archive.org/web/20071211091532/http://www.matroska.org/technical/specs/channelposition/index.html

> In the case of a FLAC track (inside either a raw .FLAC file or a .MKA file),
> we can specify an optional WAVEFORMATEXTENSIBLE_CHANNEL_MASK tag [5]. Could
> a similar solution be implemented for LPCM inside Matroska too?
>
> On a related note, the ffmpeg documentation [6] specifies additional channel
> positions which are not found in the Microsoft documentation [3], like Wide
> Left and Wide Right speakers. Are these speaker positions recognised by
> players when reading WAV files?

VLC currently handles 'only' 9 speaker positions out of the 18 MS ones.

> [1] https://matroska.org/technical/specs/codecid/index.html
> [2] http://haali.su/mkv/codecs.pdf
> [3]
> https://msdn.microsoft.com/en-us/library/windows/hardware/dn653308(v=vs.85).aspx
> [4] http://www.makemkv.com/forum2/viewtopic.php?f=8&t=2530
> [5] https://sourceforge.net/p/mediainfo/discussion/297609/thread/164b4fb3/
> [6] https://ffmpeg.org/doxygen/2.2/channel__layout_8h_source.html
>
> Thanks and regards,
> Nithin
>
> _______________________________________________
> Cellar mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/cellar
>

-- 
Steve Lhomme
Matroska association Chairman

---

From: Nithin Mathew Kurien <[email-masked]>
Date: Tue, 10 May 2016 14:47:51 +0530

Hi,

> https://web.archive.org/web/20071211091532/http://www.matroska.org/technical/specs/channelposition/index.html

This notation is appropriate for speaker positions in the horizontal plane,
but there is a problem. The LFE channel is omni-directional; so how do we
denote whether the LFE channel is present or not, in this notation?

> > [5]
> https://sourceforge.net/p/mediainfo/discussion/297609/thread/164b4fb3/

Thanks and regards,
Nithin

---

From: Steve Lhomme <[email-masked]>
Date: Wed, 18 May 2016 08:38:42 +0200

> denote whether the LFE channel is present or not, in this notation?

I agree, it's not sufficient. The idea was that it would be universal
enough to cover mapping from all existing formats (which should be our
goal). But missing LFE is a problem. Also you're right, there could be
speakers up and down. So maybe a spherical position (2 angles ?), the
type of frequency carried (LFE or all or all except LFE) and maybe an
optional distance ?