• Marton Balint's avatar
    avformat/mpegtsenc: fix PCR generation intervals · 88ac76be
    Marton Balint authored
    PCR generation was based on counting packets for both CBR and VBR streams.
    Couting packets might have worked for CBR streams (when muxrate was specified)
    but it only took into account the packets of a service (or the packets of the
    PCR stream lately), so even that was problematic for multi program streams.
    
    The new code works on actual timestamps for both CBR and VBR streams. For VBR
    streams the behaviour of the old code is simulated by selecting a PCR interval
    which is the highest multiple of the frame duration but still less than 100 ms.
    
    It should be trivial to add support for setting the PCR interval for VBR
    streams as well in a later patch.
    
    The accuracy of PCR packets for CBR streams was greatly improved by preemtively
    sending them at PCR intervals even if sending the payload of another stream
    is in progress.
    
    This may fix these tickets:
    - #5750
    - #7524
    Signed-off-by: 's avatarMarton Balint <cus@passwd.hu>
    88ac76be
Name
Last commit
Last update
compat Loading commit data...
doc Loading commit data...
ffbuild Loading commit data...
fftools Loading commit data...
libavcodec Loading commit data...
libavdevice Loading commit data...
libavfilter Loading commit data...
libavformat Loading commit data...
libavresample Loading commit data...
libavutil Loading commit data...
libpostproc Loading commit data...
libswresample Loading commit data...
libswscale Loading commit data...
presets Loading commit data...
tests Loading commit data...
tools Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.travis.yml Loading commit data...
CONTRIBUTING.md Loading commit data...
COPYING.GPLv2 Loading commit data...
COPYING.GPLv3 Loading commit data...
COPYING.LGPLv2.1 Loading commit data...
COPYING.LGPLv3 Loading commit data...
CREDITS Loading commit data...
Changelog Loading commit data...
INSTALL.md Loading commit data...
LICENSE.md Loading commit data...
MAINTAINERS Loading commit data...
Makefile Loading commit data...
README.md Loading commit data...
RELEASE Loading commit data...
configure Loading commit data...