[vlc-devel] [RFC] DTS-HD and audio_format_t
Filip Roséen
filip at atch.se
Fri Nov 4 18:12:36 CET 2016
Hi Thomas,
On 2016-11-04 17:46, Thomas Guillem wrote:
> Hello,
>
> In order to play DTS-HD samples via HDMI I need a way to differentiate
> DTS from DTS-HD. Theoretically, they should use the same fourcc, since
> DTS-HD is just an extension of the DTS codec (we can play a DTS-HD
> sample as DTS if we skip the substream, and use only the core).
*"they should use the same fourcc"* is very much relevant to what I
believe is the best way to handle it. Though, needless to say, I am
certainly not the most qualified to respond to your question given my
fairly short involvement with the VLC stack.
> But some aout like wasapi or audiotrack need to know if the format is
> DTS or DTS-HD. For example, in wasapi, if the
> KSDATAFORMAT_SUBTYPE_IEC61937_DTS_HD format initialization fails, we can
> fallback to KSDATAFORMAT_SUBTYPE_IEC61937_DTS and modify to
> audio_format_t to tell the spdif converter that we only want to send the
> DTS CORE.
>
> So my question is: how to differentiate DTS from DTS-HD in
> audio_format_t.
>
> - Add a DTSHD fourcc: VLC_FOURCC('d','t','s','h'). This is kind of
> wrong since this should be the same codec but then we don't need to
> modify audio_format_t.
>
> - Add a new int i_profile in audio_format_t ? This is the correct way
> but this will be used only for this codec.
I believe the above is the way to go, and honestly I think it would
make sense to restructure the contents of `struct es_format_t`.
If there is one audio format that requires extra information inside
`audio_format_t`, there will probably be others (maybe not now, but
hey.. better safe than sorry, and prepare for the future).
----------------------------------------------------------------------
[Black Eyed Peas - Union](https://www.youtube.com/watch?v=rT_-Ln7eWpw)
----------------------------------------------------------------------
Moving `es_format_t::i_profile`, and perhaps `es_format_t::i_level`
(plus other relevant *data-members*), inside both `video_format_t` and
`audio_format_t`, while also putting `es_format_t::{video,audio,subs}`
inside a `union` would, in my opinion, be a clean interface that would
solve this, and other, problems.
Currently it is somewhat confusing that both `es_format_t::audio`,
`es_format_t::video`, and `es_format_t::subs`, can be "active", even
though `es_format_t::i_cat` states that only one should be used.
The common members of `audio_format_t`, `video_format_t`,
`subs_format_t` could be put in a structure shared by both, in order
to avoid *code-duplication*.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20161104/6acb5295/attachment.html>
More information about the vlc-devel
mailing list