demux: ogg: rewrite pts and pts computation (fix #9828)
authorFrancois Cartegnie <fcvlcdev@free.fr>
Fri, 28 Feb 2014 01:03:15 +0000 (02:03 +0100)
committerFrancois Cartegnie <fcvlcdev@free.fr>
Mon, 10 Mar 2014 16:11:10 +0000 (17:11 +0100)
commitff681fc79fae79f428df272a9d005efef2fc9c87
treee5b8bba36d27fc29b321703707779738e85c0a32
parent5008e1c35f7c5aa79c2f9e69f9e4995f3a539822
demux: ogg: rewrite pts and pts computation (fix #9828)

- Previous algorithm was unable to guess the first packet
pts because of ogg design (some codecs/opus/vorbis have total
sample at page granule and only granule on last packet. You
then need to compute first packet pts backward using packets
duration).
So we were stuck either assuming a start at pts/pcr zero, or
be unable to handle ogg streaming (non zero start) correctly,
or had to always drop the 0..N-1 packets for first page.
We need libvorbis to correcly compute those durations (code
is far more complex than opus's one).
- Refactorized to discard the tons of cases appended
with each new codec.
- lots of other fixes in many places
configure.ac
modules/demux/Makefile.am
modules/demux/ogg.c
modules/demux/ogg.h
modules/demux/oggseek.c
modules/demux/oggseek.h