Previous Page

by hcs at 2:12 AM EST on March 5, 2014
Yeah it looks like the bits are unset.

An illustrative piece of output from vorbose:


info packet: decoding Vorbis stream packet 206
packet mode : 0
block size : 256

info packet: decoding Vorbis stream packet 207
packet mode : 1
block size : 2048
previous : 256
next : 256

info packet: decoding Vorbis stream packet 208
packet mode : 1
block size : 2048
previous : 256
next : 256

info packet: decoding Vorbis stream packet 209
packet mode : 1
block size : 2048
previous : 256
next : 256


Those previous and next numbers should indicate the previous and next block size. Instead it is always reporting that the neighbors are short blocks, which means the decoder may use the wrong window or lapping (see the spec for details).

All the information is there to fix this, it only wants someone to do it. This may not be the only problem, but it is definitely one of them.

edited 2:13 AM EST March 5, 2014
by kode54 at 7:30 PM EST on March 5, 2014
Well, if anyone wants to fix revorb, the source is available:

http://yirkha.fud.cz/progs/foobar2000/revorb.cpp

And with little modification, it could be compiled outside of Windows.

The way I see it, it would need to buffer a full packet ahead on the input file, and keep track of the size of the previous packet, where applicable. Then it could easily regenerate that information for the output packets.

Hmm...

EDIT: It would be most helpful if you could tell me which structure those previous and next members are a part of. Is it the ogg packet, or is it something specific to Vorbis?

edited 11:30 PM EST March 5, 2014
by hcs at 11:26 AM EST on March 6, 2014
Purely Vorbis.

Here's the relevant code from ww2ogg 0.21. Note that this depends on knowing the modes set up for this particular file, the long/short specification is per mode, (vorbis_blockflag) and packets only say what mode they use. As these bits are at the very beginning of a vorbis packet I don't have to deal with parsing the whole packet, I just read the mode bits and insert the window bits if it is a long packet.

gist


edited 11:48 AM EST March 6, 2014

Probably should have been more explicit, this code inserts the packet type bit (always 0) and optionally the prev/next window bits into the wwise packet, which misses them entirely. You will want, instead, to replace the window bits (which were always filled in 0 in an older version of ww2ogg).

edited 11:57 AM EST March 6, 2014

edited 11:59 AM EST March 6, 2014

Previous Page
Go to Page 0 1 2 3

Search this thread

Show all threads

Reply to this thread:

User Name Tags:

bold: [b]bold[/b]
italics: [i]italics[/i]
emphasis: [em]emphasis[/em]
underline: [u]underline[/u]
small: [small]small[/small]
Link: [url=http://www.google.com]Link[/url]

[img=https://www.hcs64.com/images/mm1.png]
Password
Subject
Message

HCS Forum Index
Halley's Comet Software
forum source