Re: Splitting Ogg Vorbis file

Timur Elzhov <[email protected]>
Newsgroups gmane.comp.multimedia.ogg.vorbis.devel
Message-ID <[email protected]>
ogg.k & Conrad, thanks for yours reply.

2009/6/28 Conrad Parker <[email protected]>:
> My understanding is that for Vorbis, no data will be produced until
> the third packet is received, so if you're missing the 2 previous
> preroll packets then the output PCM stream will simply be shorter, ie.
> missing the first 2 packets worth of audio (a few hundredths of a
> second).

Well, I tried to insert 2 logging lines in decoding_example.c from
libvrbis examples, the first one is

  fprintf(stderr, "decoding packet no %lld\n", op.packetno);

as we got full data packet from the stream; and second

  fprintf(stderr, "  and have %d samples\n", samples);

after every call of "samples = vorbis_synthesis_pcmout(&vd, &pcm)".
The log looks like:

-----------------------------------------------------------
Bitstream is 2 channel, 44100Hz
Encoded by: Xiph.Org libVorbis I 20050304

decoding packet no 3
  and have 0 samples
decoding packet no 4
  and have 576 samples
  and have 0 samples
decoding packet no 5
  and have 1024 samples
  and have 0 samples
decoding packet no 6
  and have 1024 samples
  and have 0 samples
decoding packet no 7
  and have 1024 samples
  and have 0 samples
  ...
-----------------------------------------------------------

I believe we start from 4th packet (no 3) because of three first are
occupied by Vorbis headers, but from this log pcm samples (namely 576)
seem to appear just *in* second data packet, not *after* them!

Next, I looked at the vcut.c, found there get_blocksize() function,
and logged packet's blocksize too:

  blocksize = 64
  blocksize = 576
  blocksize = 1024
  blocksize = 1024
  blocksize = 1024
  ...

the values are the same as in previous log, except that first data
packet has size of 64 intead of expected 0. Is this allowed?

I probably misunderstand something, but how should I interpret that
packets begin to return decoded samples from second (not third)
packet, and also two first packets *both* have non-zero blocksizes?

Thanks again for your assistance.

--
WBR,
Timur.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.