[vlc-devel] Sporadic-Frame Video Codec Problems

Francois Cartegnie fcvlcdev at free.fr
Fri Jan 29 15:58:36 CET 2016

Le 29/01/2016 03:15, Michael Tänzer a écrit :
> 1. It seems that because the OggSpots codec only contains frames when
> the content changes, the video stream is unhappy that it doesn't get

Assuming this is a low fps problem, VLC does not behave well with low
frame per second.
But I believe the Ogg has on flaw in the rewrite to resolve the most
common issues, because it uses min(dts) from video/audio tracks for PCR.

It should increase PCR continuously and return chunks, or empty demux.
This would need queueing data as we have no real forecast about next dts
and interleave.

> enough data. So it thinks that is some kind of Jitter, which means that
> it calls input_clock_Reset() and that causes future target time
> calculation on the picture_t.date to fail:
> [00007f9f0cc25ad8] core decoder error: Timestamp conversion failed
> (delay 300000, buffering 100000, bound 9000000)
> [00007f9f0cc25ad8] core decoder error: Could not convert timestamp
> 10184984908

Could not convert means there's no pcr (or has been reset) before
sending packet.

> 2. Seeking is not possible. Probably because the packages are too far
> apart, but I haven't really tried to pin this down. I wanted to solve
> the other issue first:
> [00007f9f0cc01b28] ogg demux error: Unmatched granule. New codec ?
> [00007f9f140009d8] core input error: INPUT_CONTROL_SET_POSITION(_OFFSET)
> 11.9% failed
> Can you point me into the right direction to solve this issue?

You have to do reverse granule mapping in oggseek.

> Approaches that came to my mind:
> - Rewrite the codec as a subtitle codec instead of a video codec
> (SPU_ES, SUBCAT_INPUT_SCODEC). But does VLC display such a codec if
> there is no video stream? Are there other issues to be aware of that
> come with this approach?

Will never work.

> - There might be some setting that I missed so far that allows me to
> signal to the video output that there is no problem if there is not a
> constant stream of frames.

Demux() returns success and does not send anything to es.
As mentioned above, there might be pcr issues with low fps.

> - Copy the last image into the stream whenever we need one and we
> haven't encountered a fresh one. But how can this copying be triggered?
> The DecodeBlock is only called if there is a new block from the demuxer,
> not when there is the need for a picture.

That belongs to the various hacks section.


More information about the vlc-devel mailing list