[IMPORTANT] Major incompatibility with VLC/VLS
Christophe Massiot <[email protected]>
| Newsgroups | gmane.comp.video.videolan.vls.devel |
|---|---|
| Message-ID | <a05111b1eb9959bce05ca@[62.147.119.108]> |
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 vls-devel mailing-list, see http://www.videolan.org/vls-devel/ To unsubscribe, please read http://www.videolan.org/lists.html If you are in trouble, please contact <[email protected]>