From: James <Ja...@su...> - 2011-10-12 21:05:03
|
On 12/10/11 14:56, Torsten Jager wrote: > > >> What stream is this trying to correct? >> What do we need dts for? We always were fine with just pts before? > Well, I never really was. At least not with the actual implementation. Ok, the implementation was wrong then. Only the PTS should be passed from demuxer to decoder in xine-lib. That is why the parameter is called "pts". > If there are b-frames, before decoding dts are monotonically increasing > while pts are not. After decoding, its vice versa. Both fifos only > support one timestamp, and I thought both need to be monotonic which > leads to a nice conflict. Just ignore the dts in the demuxer. Only sent pts to the decoder. The decoder is responsible to re-ordering the pts values, so that the output of the decoder has monotonic pts values. > demux_flv used to send dts (fixed locally), demux_qt still does. > See the big comment in reordered_timestamp_fix_1b on this. > > demux_real was even worse, it tried to create pseudo pts out of both > dts and pts in container (also fixed locally, any one interested?). Ok, looks like what you are doing it correct. Using pts and not dts. > Nobody knows the future, not even video software. Thats why reordering > always comes along with a slight lookahead delay on both encoder and > decoder side. > > Yes I know we can compensate this manually using the 'N' and 'M' keys. > But I am editing video for use on external hardware media players who > dont have that capability. I need correct playback for > testing before burning on dvd. > >> Surely this would be better fixed by fixing the mov/mp4 video decoders >> to output correct PTS values. > No. This would cause a lot of second-guessing. For now, best solution > seems to be letting demuxer send real pts (not dts). > > Torsten > Correct. Fix the sending of PTS values from demuxer to decoder. Then, if needed, correct the decoder to output correct PTS values. xine-lib is designed use use "Presentation Time Stamps" in order to get correct lip sync at the display. xine-lib has no need for "Decoding Time Stamps". DTS values are useful for hardware decoders and resource restricted decoders. Kind Regards James |