[FFmpeg-devel] mpegtsenc: Improve PCR generation and output

Baptiste Coudurier baptiste.coudurier
Thu Sep 30 20:33:38 CEST 2010


Hi Tomas,

On 9/30/10 7:07 AM, Tomas H?rdin wrote:
> Hi
>
> While working some more on remuxing dvbsub in mpegts I noticed that the
> longer the sample I used was, the higher the muxdelay I needed in order
> to avoid the "dts<  pcr, TS is invalid" warning.
>
> This is due to how the current muxer calculates PCR. It simply
> accumulates TS_PACKET_SIZE*8*90000LL/ts->mux_rate in cur_pcr. Unless
> your mux_rate evenly divides 135360000 (TS_PACKET_SIZE*8*90000) this
> will cause rounding errors which quickly lead to unacceptable PCR drift.
>
> A second problem is that it only uses 90 kHz precision, when it should
> use 27 MHz. 90 kHz is insufficient to stay within the allowed +- 500 ns
> jitter.
>
> The attached patch calculates PCR based on max_delay and the current
> size of the output, in 27 MHz. This method should eliminate any PCR
> drift caused by the rounding errors in the previous solution. It also
> outputs the full PCR.
>
> The patch passes the regtests, but that seems to be because there are
> none for mpegts. Maybe some should be added?

The test is present, by default the muxer uses VBR, you activate CBR 
muxing by specifying a muxrate. Did you test specifying a muxrate ? :)

Patch looks good, thanks for the work, I'll test it against some tools.

-- 
Baptiste COUDURIER
Key fingerprint                 8D77134D20CC9220201FC5DB0AC9325C5C1ABAAA
FFmpeg maintainer                                  http://www.ffmpeg.org



More information about the ffmpeg-devel mailing list