After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 481279 - [mpegtsparse] partial corruption of the output stream
[mpegtsparse] partial corruption of the output stream
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
git master
Other All
: Normal normal
: 0.10.6
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2007-09-28 13:09 UTC by Vincent Génieux
Modified: 2007-10-01 09:22 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
proposed fix (bad pointer dereference operation) (864 bytes, patch)
2007-09-28 13:14 UTC, Vincent Génieux
committed Details | Review

Description Vincent Génieux 2007-09-28 13:09:40 UTC
Please describe the problem:
Some data has been corrupted on the output streams (pads "program_%d") and resulted streams are not playable using vlc (it works with mplayer).

Steps to reproduce:

1. First, apply the patch http://bugzilla.gnome.org/attachment.cgi?id=96324&action=view
(This allows to use mpegtsparse with gst-launch)
2. Then run the following graph:
gst-launch filesrc location=multiple.ts ! mpegtsparse program-numbers=1026 name=parser parser.program_1026 ! filesink location=single.ts
3. open the generated transport stream with vlc


Actual results:
VLC has a very strange behavior while playing the video (audio discontinuities, many error messages)

Expected results:
VLC should work perfectly.

Does this happen every time?
yes

Other information:
Comment 1 Vincent Génieux 2007-09-28 13:14:12 UTC
Created attachment 96326 [details] [review]
proposed fix (bad pointer dereference operation)
Comment 2 Sebastian Dröge (slomo) 2007-09-28 13:30:28 UTC
Any reason why you changed MAX_CONTINUITY from 16 to 15? :)
Comment 3 Vincent Génieux 2007-10-01 09:00:48 UTC
Because in the MPEG-TS standard, the continuity counter is coded on 4bits and the maximum value is 15 (after it falls back again to zero).

If this flag is not modified, many valid packets are dropped...
Comment 4 Sebastian Dröge (slomo) 2007-10-01 09:06:26 UTC
Thanks for clarifying... looks good then :) I'll commit it then soonish...
Comment 5 Sebastian Dröge (slomo) 2007-10-01 09:22:35 UTC
2007-10-01  Sebastian Dröge  <slomo@circular-chaos.org>

        Patch by: mutex at runbox dot com

        * gst/mpegtsparse/mpegtspacketizer.c:
        (mpegts_packetizer_parse_adaptation_field_control):
        * gst/mpegtsparse/mpegtsparse.c: (mpegts_parse_base_init),
        (mpegts_parse_init), (mpegts_parse_push):
        * gst/mpegtsparse/mpegtsparse.h:
        Remove useless src pad that only results in not linked errors,
        fix a broken pointer dereference and make MAX_CONTINUITY constant
        conform to the standard to stop outputting corrupted data.
        Fixes #481276, #481279.