Audio - OGG

I am new to CUDA and believe this is the right forum to post this.

I was given a project to work on where it will takes a MP3 and converts it to the OGG format. I never worked with audio files before, but my basic understanding is first decode the MP3 file to another format and than take that file to convert it to the OGG format. My understanding is both the OGG and MP3 are lossy formats so converting a MP3 directly to OGG could generate undesirable results.

With this being said, does anyone have any pointers on how to begin working on this? As I mentioned, I never worked with audio files and I have some CUDA experience writing small programs with CUDA C. Oh yeah, the goal of this project is to do most of the work on the GPU.

I appreciate any pointers given.

I am new to CUDA and believe this is the right forum to post this.

I was given a project to work on where it will takes a MP3 and converts it to the OGG format. I never worked with audio files before, but my basic understanding is first decode the MP3 file to another format and than take that file to convert it to the OGG format. My understanding is both the OGG and MP3 are lossy formats so converting a MP3 directly to OGG could generate undesirable results.

With this being said, does anyone have any pointers on how to begin working on this? As I mentioned, I never worked with audio files and I have some CUDA experience writing small programs with CUDA C. Oh yeah, the goal of this project is to do most of the work on the GPU.

I appreciate any pointers given.

Let me give the answer in a ‘different’ format.

Since you asked for a pointer, here we go…

...

int possibilites[INF] = {1,};

...

{

   unsigned int retval;

System.io.video.MPEG2Video.properties.set(lossy);

   System.io.video.H264Video.properties.set(lossy);

retval = transcode(H264Video, MPEG2Video, sizeof(video), transcodeToolOfYourChoice);

   if (possibilites[retval] == 1)

   {

	  System.io.console.println("If it is possible to transcode MPEG2 to H264 video then...why should it be any different for Audio?\n");

	  return (void*)possibilities;

   } else {

	  return NULL;

   }

}

Let me give the answer in a ‘different’ format.

Since you asked for a pointer, here we go…

...

int possibilites[INF] = {1,};

...

{

   unsigned int retval;

System.io.video.MPEG2Video.properties.set(lossy);

   System.io.video.H264Video.properties.set(lossy);

retval = transcode(H264Video, MPEG2Video, sizeof(video), transcodeToolOfYourChoice);

   if (possibilites[retval] == 1)

   {

	  System.io.console.println("If it is possible to transcode MPEG2 to H264 video then...why should it be any different for Audio?\n");

	  return (void*)possibilities;

   } else {

	  return NULL;

   }

}

The used frequency transformatrions such as MDCT and the inverse transformation could be mapped to the GPU in a parallelized way. Also multiple audio granules could be processed in parallel to provide better use of all GPU resources (a single MDCT is very small, so it may occupy just one multiprocessor).

Entropy coding (huffman etc) is pretty impossible to map to the GPU efficiently.

Overall don’t expect a huge speed boost, as the CUDA contest (MP3 encoder optimization) has shown.

The used frequency transformatrions such as MDCT and the inverse transformation could be mapped to the GPU in a parallelized way. Also multiple audio granules could be processed in parallel to provide better use of all GPU resources (a single MDCT is very small, so it may occupy just one multiprocessor).

Entropy coding (huffman etc) is pretty impossible to map to the GPU efficiently.

Overall don’t expect a huge speed boost, as the CUDA contest (MP3 encoder optimization) has shown.

@cbuchner1,

thanks for sharing the good information. Do you know where more information about this CUDA contest is posted? I did some searching and only found that there was a contest where $5000 was offered.

@cbuchner1,

thanks for sharing the good information. Do you know where more information about this CUDA contest is posted? I did some searching and only found that there was a contest where $5000 was offered.

find a thread about it HERE, but the contest website is now down and points to a generic hosting site.

http://forums.nvidia.com/index.php?showtopic=6816

Encoding multiple granules in parallel may be difficult as the PSY model has a bit of a memory (loud signals can mask out weak signals for quite some time after they have occured…) and therefore this introduces data dependencies.

Decoding in parallel should be much easier than encoding.

find a thread about it HERE, but the contest website is now down and points to a generic hosting site.

http://forums.nvidia.com/index.php?showtopic=6816

Encoding multiple granules in parallel may be difficult as the PSY model has a bit of a memory (loud signals can mask out weak signals for quite some time after they have occured…) and therefore this introduces data dependencies.

Decoding in parallel should be much easier than encoding.