[IMPORTANT] Major incompatibility with VLC/VLS
Christophe Massiot
massiot at via.ecp.fr
Sat Aug 31 00:20:20 CEST 2002
Dear friends,
One of our users (I forgot his nickname, sorry...) has reported on
IRC a major compatibility issue with current stable versions of VLC
and VLS.
Background : DVDs extend the MPEG specification to allow new ES
types, such as A/52, LPCM, DTS, SDDS, and DVD SPU. In order to
identify the streams (which all have a stream ID of 0xBD), the DVD
consortium has had to add a stream private ID as the first byte of
the PES payload. Consequently, VLC has to skip the first byte of the
payload of those elementary streams.
VLS only encapsulates the PES, and doesn't drop the first byte of the
payload. This stream private ID information is redundant with the
stream type available in the PMT, but it doesn't disturb the VLC,
because it always skips the first byte.
The problem is, we're not the only ones to encapsulate A/52 in MPEG-2
TS. Some American standards have specified this, and the resulting
A/52 ES has a stream type of 0x81 (the same we chose), but WITHOUT
the stream private ID. That is, for those streams, we mustn't drop
the first byte of the payload.
Thus, VLC and VLS are de facto incompatible with the standard way of
encapsulating A/52 (and possibly LPCM, DTS, and DVD SPU). I think we
can't keep the statu quo on this, and we must change our behavior.
However, our options are very limited, and it _will_ break things.
I have just checked in patches so that VLC can handle both the PES
with stream private ID, and the PES without. The first have
distinctive FOURCCs such as 'a52b', 'dtsb', 'lpcb' (b for "buggy"),
and TS stream types in the range 0x91-0x93. The latter keep the
current FOURCCs and stream types (0x81-0x83), because they are the
normal way to do (DVD's method is a kludge).
I have changed VLS so that it sets stream types to 0x91-0x93. We will
also need to change its behavior so that it edits the PES payload,
and sets stream types to the standard 0x81-0x83, otherwise it won't
be compatible with third-party solutions (it wasn't compatible
anyway).
However, this means that from this day on, *new VLS is incompatible
with old VLC, and old VLS is incompatible with new VLS* !! This is
very bad news, and we will have to document the change thoroughly. I
don't think we can solve the problem without breaking the
compatibility with old versions, since we can't automagically detect
whether the PES contains the stream private ID or not.
Sincerly,
--
Christophe Massiot.
--
This is the vlc-devel mailing-list, see http://www.videolan.org/vlc/
To unsubscribe, please read http://www.videolan.org/lists.html
If you are in trouble, please contact <postmaster at videolan.org>
More information about the vlc-devel
mailing list