tsmux produces timestamps with ~1hr offset
Krzysztof Konopko
krzysztof.konopko at youview.com
Tue Nov 13 04:46:41 PST 2012
Thanks, that explains a lot.
Cheers,
Kris
On 13/11/12 11:36, Edward Hervey wrote:
> Hi,
>
> Those are PCR values. They are allowed to be any value whatsoever, and
> are not considered as *timestamps* but as references.
>
> Your "local playback timestamp" will be the difference between the PTS
> of the stream and the current PCR.
> In this case, the first PCR is 1hour, and the first video PTS is 1hour
> also, therefore you do have a "local playback timestamp" of 0s (plays
> straight away).
>
> Your reader application should be able to support this (else it will
> not be able to read 99.9999999% of the mpeg-ts files out there).
>
> Edward
>
> On Tue, 2012-11-13 at 10:06 +0000, Krzysztof Konopko wrote:
>> Hi,
>>
>> The following will produce a test TS stream:
>>
>> gst-launch \
>> videotestsrc num-buffers=10 \
>> ! mpeg2enc ! mpegtsmux \
>> ! filesink location=test.ts
>>
>> Now if I inspect produced TS packets with dvbsnoop [1], I can see that
>> the first TS packet has a ~1hr offset:
>>
>> dvbsnoop -s ts -tssubdecode -if test.ts | grep -i time | less
>>
>> ==> program_clock_reference: 97196625000 (0x16a15ecc68) [=
>> PCR-Timestamp: 0:59:59.875000]
>> ==> PTS: 324000000 (0x134fd900) [= 90 kHz-Timestamp: 1:00:00.0000]
>> time_code:
>> time_code_hours: 0 (0x00)
>> time_code_minutes: 0 (0x00)
>> time_code_seconds: 0 (0x00)
>> time_code_pictures: 0 (0x00)
>> ==> PTS: 324002999 (0x134fe4b7) [= 90 kHz-Timestamp: 1:00:00.0333]
>> ==> program_clock_reference: 97198424700 (0x16a17a427c) [=
>> PCR-Timestamp: 0:59:59.941655]
>> ==> PTS: 324005999 (0x134ff06f) [= 90 kHz-Timestamp: 1:00:00.0666]
>> ==> PTS: 324009000 (0x134ffc28) [= 90 kHz-Timestamp: 1:00:00.1000]
>> ==> program_clock_reference: 97200224700 (0x16a195b9bc) [=
>> PCR-Timestamp: 1:00:00.008322]
>> ==> PTS: 324011999 (0x135007df) [= 90 kHz-Timestamp: 1:00:00.1333]
>> ==> PTS: 324014999 (0x13501397) [= 90 kHz-Timestamp: 1:00:00.1666]
>> ==> program_clock_reference: 97202025000 (0x16a1b13228) [=
>> PCR-Timestamp: 1:00:00.075000]
>> ==> PTS: 324018000 (0x13501f50) [= 90 kHz-Timestamp: 1:00:00.2000]
>> ==> PTS: 324020999 (0x13502b07) [= 90 kHz-Timestamp: 1:00:00.2333]
>> ==> program_clock_reference: 97203824700 (0x16a1cca83c) [=
>> PCR-Timestamp: 1:00:00.141655]
>> ==> PTS: 324023999 (0x135036bf) [= 90 kHz-Timestamp: 1:00:00.2666]
>> ==> PTS: 324027000 (0x13504278) [= 90 kHz-Timestamp: 1:00:00.3000]
>>
>>
>> It looks like the following code is responsible for that
>> (tsmux_write_stream_packet()):
>>
>> /* FIXME: The current PCR needs more careful calculation than just
>> * writing a fixed offset */
>> if (cur_pts != -1) {
>> /* CLOCK_BASE >= TSMUX_PCR_OFFSET */
>> cur_pts += CLOCK_BASE;
>> cur_pcr = (cur_pts - TSMUX_PCR_OFFSET) *
>> (TSMUX_SYS_CLOCK_FREQ / TSMUX_CLOCK_FREQ);
>> }
>>
>> Gstreamer-0.10.x produces TS packets without the offset so it looks like
>> a regression. Is there any bug reported? Or maybe there's some
>> explanation of this situation? Or maybe it doesn't matter at all in
>> practice?
>>
>> [1] http://dvbsnoop.sourceforge.net
>>
>> Cheers,
>> Kris
>> _______________________________________________
>> gstreamer-devel mailing list
>> gstreamer-devel at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
>
>
More information about the gstreamer-devel
mailing list