[Ffmpeg-devel] mpeg transport streams

Marcus Hunger marcus.hunger
Fri Jun 3 09:50:28 CEST 2005

Am 1 Jun 2005 um 18:10 hat M?ns Rullg?rd geschrieben:

> Could you explain the what theory of operation you have used?  What
> are the changes you made to the demuxer?

The main idea I wanted to implement was that the difference of two pcrs and the 
amount of data written between the accurrence of them define the actual bitrate. 
Assuming a constant bitrate is needed, this leads to two requirements:

- there must be pcrs.
- the value of these pcrs must be calculated using a defined bitrate and the amount of 
data written since the previous pcr.

Furthermore, pts/dts of the frame-data shouldn't be too much in front of the pcr to 
reduce caching demands on the player. So I orientated the pcrs written at the pts of 
actual frame. To still keep a constant bitrate, null-packets are inserted until the pcr 
equals about the pts.

- null-packets

Pts-values being in the past of pcrs don't make much sense, so every pts as increased 
by a constant offset (say 50000).

- pts += 50000

To meet mpegts/dvb requirements of a maximum pcr-interval, a ts-packet with a pcr is 
written after a certain interval.

- pcr-interval

Frames do not get interleaved which should be no problem at high bitrates.

All bitrate/pcr algorithms are only done for video-frames, which should be changed to 
using the frames of the pcr-pid.

The base of all timing is the amount of data written and the pts-values. The rtc of the pc 
is not used.

I introduced setting a discontinuity indicator for the first pcr so concatenating ts-files 
should be possible. Doing this still causes cc-discontinuity-errors and I have no easy 
idea how to avoid them.

About the changes in the demuxer: I made these to tune into a certain dvb-service 
specified by it's name. The changes shouldn't break ffmpeg's current behaviour but I 
would agree in excluding it from this patch (if anyone complains).

Marcus HungerMUGLER AG
E-mail: marcus.hunger at mugler.de
Tel. +49-3723-747-183
Fax: +49-3723-747-198

Bitte nutzen Sie die E-Mail-Verbindung mit uns aus-
schliesslich zum Informationsaustausch. Wir koennen
auf diesem Wege keine rechtsgeschaeftlichen Erklaer-
ungen (Auftraege etc.) entgegennehmen. Der Inhalt 
dieser Nachricht ist vertraulich und nur fuer den an-
gegebenen Empfaenger bestimmt. Jede Form der Kennt-
nisnahme und Weitergabe durch Dritte ist unzulaessig.
Sollte diese Nachricht nicht fuer Sie bestimmt sein, 
so bitten wir Sie, sich mit uns per E-Mail oder 
telefonisch in Verbindung zu setzen.

Please use your E-mail connection with us exclusively
for the exchange of information. We do not accept 
legally binding declarations (orders, etc) by this means
of communication. The content of this message is 
confidential and intended only for the recipient 
indicated. Taking notice of this message or disclosure 
by third parties is not permitted. In the event 
that this message is not intended for you, 
please contact us via E-mail or phone.

More information about the ffmpeg-devel mailing list