[FFmpeg-devel] [PATCHv2 1/4] avformat/mpegtsenc: fix incorrect PCR selection with multiple programs

Andriy Gelman andriy.gelman at gmail.com
Sat Aug 3 21:32:44 EEST 2019


On Sat, 03. Aug 10:19, Marton Balint wrote:
> The MPEG-TS muxer had a serious bug related to the use of multiple programs:
> in that case, the PCR pid selection was incomplete for all services except one.
> This patch solves this problem and selects a stream to become PCR for each
> service, preferably the video stream.
> 
> This patch also moves pcr calculation attributes to MpegTSWriteStream from
> MpegTSService. PCR is a per-stream and not per-service thing, so it was
> misleading to refer to it as something that is per-service.
> 
> Also remove *service from MpegTSWriteStream because a stream can belong to
> multiple services so it was misleading to select one for each stream.
> 
> You can check the result with this example command:
> 
> ./ffmpeg -loglevel verbose -y -f lavfi -i \
>   "testsrc=s=64x64:d=10,split=2[out0][tmp1];[tmp1]vflip[out1];sine=d=10,asetnsamples=1152[out2]" \
>   -flags +bitexact -fflags +bitexact -sws_flags +accurate_rnd+bitexact  \
>   -codec:v libx264 -codec:a mp2 -pix_fmt yuv420p \
>   -map '0:v:0' \
>   -map '0:v:1' \
>   -map '0:a:0'  \
>   -program st=0:st=2 -program st=1:st=2 -program st=2 -program st=0 -f mpegts out.ts
> 
> You should now see this:
> 
> [mpegts @ 0x37505c0] service 1 using PCR in pid=256
> [mpegts @ 0x37505c0] service 2 using PCR in pid=257
> [mpegts @ 0x37505c0] service 3 using PCR in pid=258
> [mpegts @ 0x37505c0] service 4 using PCR in pid=256
> 
> Fixes ticket #8039.
> 
> v2: a video is stream is preferred if there are no programs, just like before
> the patch.

Thanks. 
I looked at the other patches and they seem fine. 

Andriy


More information about the ffmpeg-devel mailing list