Ralph Giles | 10 Feb 20:22
Favicon

New repo and moving tremor discussion here

All,

I've consolidated our various svn branches of the fixed-point vorbis
decoder (known as tremor or tremolo) into a single git repository,
hoping that it facilitates review and merging of the various trees. In
particular, android has a branch of Robin Watts' Tremolo code
(arm-optimized tremor-lowmem) which I don't think anyone on the Xiph
side has looked at.

I used git-svn to import the history, which isn't great at following
svn branches, so a sanity check that we've got the appropriate history
would be appreciated. You can find the new repository at

  https://git.xiph.org/?p=tremor.git

Core developers should already have push access using the git <at> git.xiph.org url.

N.B. We used to have a separate list for tremor discussions, but it's
seen very little traffic in the past few years. I've marked it as
deprecated; we can just as well discuss maintenance issues for all the
implementations here.

Cheers,
 -r

--

-- 
Ralph Giles
Xiph.org Foundation for open multimedia
Georg Holzmann | 6 Jan 11:25
Picon

Enhanced Podcasts with Ogg Vorbis (Chapter Marks)

Hello list!

Since it is more and more common these days to create enhanced podcasts 
(= audio files with additional chapter markers [1]), I am searching for 
an alternative to the currently used MP4 format.
ID3 also puplished an official standard for chapters [2], but nobody 
seems to use and support it.

Now I am trying to get something similar with vorbis audio (and maybe an 
additional container).
So far I am aware of the following possibilities:

1) Matroska Audio with Chapter Marks

Using the matroska container, it is possible to generate a matroska 
audio file (mka) with included chapters (see [3] for the exact command).

PROS:
- many media players and some hardware players support matroska, see [4]
- with e.g. VLC (or foobar) you see chapters and are able to seek in the 
audio file - very nice!
- android 4 should support matroska natively [5] (but I don't think that 
it's possible to see the chapters ?)

CONS:
- many hardward players, which support ogg vorbis, are not able to play 
mka files
- I found no app on android so far which can play mka files

2) OGM Container with Chapter Marks
(Continue reading)

Thomas Eschenbacher | 17 Nov 19:33
Picon
Picon

multithreaded vorbis encoding

Hello,

I have some code that encodes PCM data into a vorbis stream, using the
workflow shown in http://www.xiph.org/vorbis/doc/libvorbis/overview.html.

By analyzing that process with valgrind/cachegrind I found out that 95%
of the time used for encoding is spent in the function
"vorbis_analysis(&vb, 0)".

My question now is: would it be technically possible to parallelize this?
I think about using multiple worker threads for the vorbis_analysis calls,
especiall on multi core systems this would be a big benefit.

=> Are the blocks passed as "vb" independent from each other,
   so that I can encode them in parallel?

regards,
   Thomas
--

-- 
______________________________________________________________________
Thomas Eschenbacher                       <Thomas.Eschenbacher <at> gmx.de>
Daniel James | 16 Nov 11:54
Favicon

Multi-channel labels in Vorbis comments

Hi devs :-)

At the Mozilla Festival in London recently, I took part in a Hack the DJ
workshop, looking at ways to take digital DJ'ing to the next level:
http://www.bbc.co.uk/blogs/researchanddevelopment/2011/11/setting-a-dj-challenge-at-the.shtml

One of the ideas proposed was stem mixing, using multichannel files in
DJ applications. A proprietary implementation of this idea is Fireplayer
(http://itunes.apple.com/gb/app/fireplayer-remixer/id367791455?mt=8) but
this app is built with the intention that users will buy remixable
versions of (a very limited number of) well-known songs from an in-app
store.

We would like to work towards a new open standard for stem mixing,
something that is compatible with sharing our mixes on the open web -
legally, of course - but could also be used by record labels that sell
tracks to DJs.

For example, eight channel Ogg Vorbis files where the first two tracks
are a stereo mix of the drums, third and fourth stereo bass, fifth and
sixth stereo vocals, and seventh and eighth tracks everything else. This
means that you can mute or solo individual stems in the mix, giving you
the versatility of four-deck or eight-deck mixing but without the
problems of keeping many decks in sync.

It seems that Ogg Vorbis already has all the features we need in a stem
format for DJs, but there's the question of how we identify individual
channels within the file. There are conventions for 5.1 and 7.1 surround
mixes, of course, but we're not aware of any published convention for
stems. So it would be useful to have a text label for each channel saved
(Continue reading)

Gábor Kovács | 7 Nov 09:43
Picon

Out of memory handling?

Hi,

As far as I see in libvorbis most of the places where _ogg_malloc(), _ogg_realloc and _ogg_calloc() is called the return value is not checked for out of memory condition. Is there any plan to change this?

For my use-case the application is not allowed to crash. So if libvorbis can not handle this condition, I guess I would need to preallocate a large enough custom memory heap for all kind of vorbis files and override the ogg allocation macros.

Best regards,
Gábor

_______________________________________________
Vorbis-dev mailing list
Vorbis-dev <at> xiph.org
http://lists.xiph.org/mailman/listinfo/vorbis-dev
Gábor Kovács | 7 Nov 09:02
Picon

vorbis_fpu_setround()

Hi,

I think there is a minor bug in vorbis_fpu_setround().
The "temp" is an output argument instead of input.
Intel compiler warning:

lib/os.h(102): warning #592: variable "temp" is used before its value is set
            "fldcw %1\n\t":"=m"(ret):"m"(temp): "dx");

I would recommend something like:
            "fldcw %1\n\t":"=m"(ret),"=m"(temp): : "dx");

Best regards,
Gábor

_______________________________________________
Vorbis-dev mailing list
Vorbis-dev <at> xiph.org
http://lists.xiph.org/mailman/listinfo/vorbis-dev
Foo Bar | 1 Aug 15:05
Picon
Favicon

Inverse MDCT formula missing from Specification

Hi

The inverse MDCT formula seems to be missing from the vorbis specification. From reading the source code of stb_vorbis (http://nothings.org/stb_vorbis/) I've a good idea of what it might be, but cannot find the formula anywhere in the official specification (the one on http://xiph.org/vorbis/doc/Vorbis_I_spec.html ). I also understand that the formula stated in the eusipco_corrected.ps paper is incorrect (the link from the specification to the paper is also dead).

From the stb_vorbis.c source:

void inverse_mdct_slow(float *buffer, int n)
{
   int i,j;
   int n2 = n >> 1;
   float *x = (float *) malloc(sizeof(*x) * n2);
   memcpy(x, buffer, sizeof(*x) * n2);
   for (i=0; i < n; ++i) {
      float acc = 0;
      for (j=0; j < n2; ++j)
         // formula from paper:
         //acc += n/4.0f * x[j] * (float) cos(M_PI / 2 / n * (2 * i + 1 + n/2.0)*(2*j+1));
         // formula from wikipedia
         //acc += 2.0f / n2 * x[j] * (float) cos(M_PI/n2 * (i + 0.5 + n2/2)*(j + 0.5));
         // these are equivalent, except the formula from the paper inverts the multiplier!
         // however, what actually works is NO MULTIPLIER!?!
         //acc += 64 * 2.0f / n2 * x[j] * (float) cos(M_PI/n2 * (i + 0.5 + n2/2)*(j + 0.5));
         acc += x[j] * (float) cos(M_PI / 2 / n * (2 * i + 1 + n/2.0)*(2*j+1));
      buffer[i] = acc;
   }
   free(x);
}

Thanks
Liam Wilson
_______________________________________________
Vorbis-dev mailing list
Vorbis-dev <at> xiph.org
http://lists.xiph.org/mailman/listinfo/vorbis-dev
Picon

ov_read error on macosx

Hi, I have this code to decode ogg data:


  unsigned long PSS_OggStream::DecodeOggVorbis(OggVorbis_File *psOggVorbisFile, char *pDecodeBuffer, unsigned long ulBufferSize, unsigned long ulChannels)
  {
 int current_section;
 long lDecodeSize;
 unsigned long ulSamples;
 short *pSamples;

 unsigned long ulBytesDone = 0;
 while (true)
 {
#ifdef WIN32
lDecodeSize = ov_read(psOggVorbisFile, pDecodeBuffer + ulBytesDone, ulBufferSize - ulBytesDone, 0, 2, 1, &current_section);
#elif MACOSX // El cuarto parametro es lo del big endian de los cojones
lDecodeSize = ov_read(psOggVorbisFile, pDecodeBuffer + ulBytesDone, ulBufferSize - ulBytesDone, 1, 2, 1, &current_section);
#endif
 if (lDecodeSize > 0)
 {
 ulBytesDone += lDecodeSize;

 if (ulBytesDone >= ulBufferSize)
 break;
 }
 else
 {
 break;
 }
 }

 return ulBytesDone;
  }

This works fine on Windows, but on MacOSX, after ov_read call, pDecodeBuffer is full of 128, -128, 0... I mean, non sense data.

Any idea???

Thanks!
_______________________________________________
Vorbis-dev mailing list
Vorbis-dev <at> xiph.org
http://lists.xiph.org/mailman/listinfo/vorbis-dev
Ramkumar R | 1 Jul 14:08
Picon

Porting TREMOR low mem on memory limited systems

Hi,

We are trying to port Vorbis Tremor low memory branch on a system with 48KB RAM. Doing mallocs is out of question and we have to store the code books in external DRAM and retrieve them back.

Is there somebody who has done that before and any pointers on how to do it?

Regards
Ramkumar

_______________________________________________
Vorbis-dev mailing list
Vorbis-dev <at> xiph.org
http://lists.xiph.org/mailman/listinfo/vorbis-dev
Picon
Favicon

Error in floor0 decode specification

Hello,

It seems there is an error in the algorithm for floor0 decode in section
6.2.2 of the Vorbis specification.

Here's the relevant part:

3         3) [coefficients] is an empty, zero length vector
4         4) [booknumber] = read an unsigned integer of ilog(
   [floor0_number_of_books] ) bits
5         5) if ( [booknumber] is greater than the highest number decode
   codebook ) then packet is undecodable
6         6) [last] = zero;
7         7) vector [temp_vector] = read vector from bitstream using
   codebook number [floor0_book_list] element [booknumber] in VQ context.
8         8) add the scalar value [last] to each scalar in vector
   [temp_vector]
9         9) [last] = the value of the last scalar in vector [temp_vector]
10        10) concatenate [temp_vector] onto the end of the [coefficients]
   vector
11        11) if (length of vector [coefficients] is less than
   [floor0_order], continue at step 6

If implemented as written, it would mean that [last] does nothing, since
the only time it is used it always equals to zero. I've looked at the
corresponding code in libvorbis (which seems to be floor0_inverse1 in
floor0.c), and it does this:

         float last=0.f;

         /* ... */

         for(j=0;j<look->m;){
           for(k=0;k<b->dim;k++,j++)lsp[j]+=last;
           last=lsp[j-1];
         }

which suggests that step 11 in the algorithm should say "continue at step
7" (skipping the initialization of [last]).

Coincidentally, there's also a cosmetic error in the same algorithm - step
7 is too long and is truncated in the PDF version.

Roman.
Dmitriy Reznik | 10 Mar 17:27
Favicon

Wav to Ogg Vorbis conversion

Dear experts,

 

I am trying to use an example I found here:

 

http://svn.xiph.org/trunk/vorbis/examples/encoder_example.c

 

 

Could you please tell me what float** buffer is needed for (I don’t see it used anywhere).

Also, could you please tell me what this code is doing:

 

      for(i=0;i<bytes/4;i++){

        buffer[0][i]=((readbuffer[i*4+1]<<8)|

                      (0x00ff&(int)readbuffer[i*4]))/32768.f;

        buffer[1][i]=((readbuffer[i*4+3]<<8)|

                      (0x00ff&(int)readbuffer[i*4+2]))/32768.f;

      }

Again, buffer is not used afterwards.

And where does the actual encoding happens?

Maybe you could recommend some tutorial to understand how this works?

Thank you very much,

 

Dmitriy

 

_______________________________________________
Vorbis-dev mailing list
Vorbis-dev <at> xiph.org
http://lists.xiph.org/mailman/listinfo/vorbis-dev

Gmane