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 569781 - [Mpegtsparse] drop of valid TS packets
[Mpegtsparse] drop of valid TS packets
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
0.10.11
Other All
: Normal normal
: 0.10.12
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2009-01-30 09:51 UTC by Vincent Génieux
Modified: 2009-05-04 21:16 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
proposed patch (7.85 KB, patch)
2009-01-30 15:31 UTC, Vincent Génieux
none Details | Review

Description Vincent Génieux 2009-01-30 09:51:11 UTC
Please describe the problem:
Wrong filtering while extracting a program from a MPTS.
It seems than mpegtsparse is dropping valid packets.

Seen on dvb-s stream (Freq: 11567MHz symbol rate: 22000kHz Polarity: Vertical)


Steps to reproduce:
1. use the dvb-s stream (with coordonates given above). I can provide a file on demand.
2. check with vlc the given file is valid: 
   $ vlc all.ts --program 9015
3. test program extration using mpegtsparse (not there is many bad crc): 
   $ GST_DEBUG=mpegtsparse:2 gst-launch filesrc location=all.ts ! mpegtsparse program-numbers=9015 name=parse parse.program_9015 ! filesink location=9015.ts
4. check with vlc the resulting file: 
   $ vlc 9015.ts
5. the result file cannot be read anymore with vlc


Actual results:
vlc is unable to play correctly the resulting file.

Expected results:
the resulting file should not contains more errors than before the processing.

Does this happen every time?
yes

Other information:
As I can see in the source code and in the logs, there is a crc calculation on packets which are not PSI tables which trigger a packet drop.

I do not have patch available yet...
Comment 1 Vincent Génieux 2009-01-30 15:31:07 UTC
Created attachment 127544 [details] [review]
proposed patch

The bug is due to a bad PSI table management.
The function mpegts_parse_is_psi tries to determine the nature of a TS packet using the payload_unit_start_indicator field (which is not possible since PES streams also set the PUSI).

The proposed patch use another approch to send the TS packets to the correct pads:
It inserts all the reserved PSI pids into each program->stream hashtable.
Comment 2 Vincent Génieux 2009-03-17 09:44:11 UTC
hello, any news about this bug ?
did somebody has reproduce it ?
Comment 3 Zaheer Abbas Merali 2009-05-01 11:27:08 UTC
Thanks for the patch, for some reason I have just seen it. I am looking at the patch now, will give feedback when looked at.
Comment 4 Zaheer Abbas Merali 2009-05-04 21:16:59 UTC
Fixed differently:

commit 179f5bb850d0df3841889d88e3ee7ee96cc914aa
Author: Zaheer Abbas Merali <zaheer@localhost.localdomain>
Date:   Mon May 4 22:09:05 2009 +0100

    mpegtsparse: Remember pids that are meant to be stream pids.
    
    Fixes #569781