 |
forums.ps2dev.org Homebrew PS2, PSP & PS3 Development Discussions
|
View previous topic :: View next topic |
Author |
Message |
cooleyes
Joined: 18 May 2006 Posts: 125
|
Posted: Sat Jun 09, 2007 2:43 am Post subject: now,we can use libaudiocodec to decode mp3 and aac |
|
|
hi, all
I just found out how to decode mp3 and aac using libaudiocodec now!
here is some sample code for decode mp3 and aac file:
mp3 file decode:
Code: |
#include <pspkernel.h>
#include <pspctrl.h>
#include <pspdisplay.h>
#include <pspdebug.h>
#include <psppower.h>
#include <stdio.h>
#include <stdlib.h>
#include <pspkernel.h>
#include <pspctrl.h>
#include <psppower.h>
#include <pspdebug.h>
#include <psprtc.h>
#include <pspsdk.h>
#include <pspaudiocodec.h>
#include <pspaudio.h>
#include <string.h>
#include <malloc.h>
int SetupCallbacks();
PSP_MODULE_INFO("MP3 decodeTest", 0x1000, 1, 1);
PSP_MAIN_THREAD_ATTR(0);
__attribute__ ((constructor))
void loaderInit(){
pspKernelSetKernelPC();
pspSdkInstallNoDeviceCheckPatch();
pspSdkInstallNoPlainModuleCheckPatch();
pspSdkInstallKernelLoadModulePatch();
}
SceCtrlData input;
static int bitrates[] = {0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 };
unsigned long mp3_codec_buffer[65] __attribute__((aligned(64)));
short mp3_mix_buffer[1152 * 2] __attribute__((aligned(64)));
SceUID mp3_handle;
u8* mp3_data_buffer;
u16 mp3_data_align;
u32 mp3_sample_per_frame;
u16 mp3_channel_mode;
u32 mp3_data_start;
u32 mp3_data_size;
u8 mp3_getEDRAM;
u32 mp3_channels;
u32 mp3_samplerate;
int main(void)
{
SetupCallbacks();
int result = pspSdkLoadStartModule("flash0:/kd/me_for_vsh.prx", PSP_MEMORY_PARTITION_KERNEL);
result = pspSdkLoadStartModule("flash0:/kd/videocodec.prx", PSP_MEMORY_PARTITION_KERNEL);
result = pspSdkLoadStartModule("flash0:/kd/audiocodec.prx", PSP_MEMORY_PARTITION_KERNEL);
result = pspSdkLoadStartModule("flash0:/kd/mpegbase.prx", PSP_MEMORY_PARTITION_KERNEL);
result = pspSdkLoadStartModule("flash0:/kd/mpeg_vsh.prx", PSP_MEMORY_PARTITION_USER);
pspSdkFixupImports(result);
sceMpegInit();
mp3_handle = sceIoOpen("ms0:/Test.MP3", PSP_O_RDONLY, 0777);
if ( ! mp3_handle )
goto wait;
mp3_channels = 2;
mp3_samplerate = 44100; //this is mp3 file's samplerate, also can be 48000,....
mp3_sample_per_frame = 1152;
mp3_data_start = sceIoLseek32(mp3_handle, 0, PSP_SEEK_CUR);
memset(mp3_codec_buffer, 0, sizeof(mp3_codec_buffer));
if ( sceAudiocodecCheckNeedMem(mp3_codec_buffer, 0x1002) < 0 )
goto wait;
if ( sceAudiocodecGetEDRAM(mp3_codec_buffer, 0x1002) < 0 )
goto wait;
mp3_getEDRAM = 1;
if ( sceAudiocodecInit(mp3_codec_buffer, 0x1002) < 0 ) {
goto wait;
}
int eof = 0;
while( !eof ) {
int samplesdecoded;
memset(mp3_mix_buffer, 0, mp3_sample_per_frame*2*2);
unsigned char mp3_header_buf[4];
if ( sceIoRead( mp3_handle, mp3_header_buf, 4 ) != 4 ) {
eof = 1;
continue;
}
int mp3_header = mp3_header_buf[0];
mp3_header = (mp3_header<<8) | mp3_header_buf[1];
mp3_header = (mp3_header<<8) | mp3_header_buf[2];
mp3_header = (mp3_header<<8) | mp3_header_buf[3];
int bitrate = (mp3_header & 0xf000) >> 12;
int padding = (mp3_header & 0x200) >> 9;
int frame_size = 144000*bitrates[bitrate]/mp3_samplerate + padding;
if ( mp3_data_buffer )
free(mp3_data_buffer);
mp3_data_buffer = (u8*)memalign(64, frame_size);
sceIoLseek32(mp3_handle, mp3_data_start, PSP_SEEK_SET); //seek back
if ( sceIoRead( mp3_handle, mp3_data_buffer, frame_size ) != frame_size ) {
eof = 1;
continue;
}
mp3_data_start += frame_size;
mp3_codec_buffer[6] = (unsigned long)mp3_data_buffer;
mp3_codec_buffer[8] = (unsigned long)mp3_mix_buffer;
mp3_codec_buffer[7] = mp3_codec_buffer[10] = frame_size;
mp3_codec_buffer[9] = mp3_sample_per_frame * 4;
int res = sceAudiocodecDecode(mp3_codec_buffer, 0x1002);
if ( res < 0 ) {
eof = 1;
continue;
}
samplesdecoded = mp3_sample_per_frame;
}
wait:
if ( mp3_handle ) {
sceIoClose(mp3_handle);
}
if ( mp3_data_buffer) {
free(mp3_data_buffer);
}
if ( mp3_getEDRAM ) {
sceAudiocodecReleaseEDRAM(mp3_codec_buffer);
}
sceCtrlReadBufferPositive(&input, 1);
while(!(input.Buttons & PSP_CTRL_TRIANGLE))
{
sceKernelDelayThread(10000); // wait 10 milliseconds
sceCtrlReadBufferPositive(&input, 1);
}
sceKernelExitGame();
return 0;
}
/* Exit callback */
int exit_callback(int arg1, int arg2, void *common)
{
sceKernelExitGame();
return 0;
}
/* Callback thread */
int CallbackThread(SceSize args, void *argp)
{
int cbid;
cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
sceKernelRegisterExitCallback(cbid);
sceKernelSleepThreadCB();
return 0;
}
/* Sets up the callback thread and returns its thread id */
int SetupCallbacks(void)
{
int thid = 0;
thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);
if(thid >= 0)
{
sceKernelStartThread(thid, 0, 0);
}
return thid;
}
|
aac( ADTS header ) file decode( if want to decode m4a, you must use libmp4 to get the aac frame data from mp4 box)
Code: |
#include <pspkernel.h>
#include <pspctrl.h>
#include <pspdisplay.h>
#include <pspdebug.h>
#include <psppower.h>
#include <stdio.h>
#include <stdlib.h>
#include <pspkernel.h>
#include <pspctrl.h>
#include <psppower.h>
#include <pspdebug.h>
#include <psprtc.h>
#include <pspsdk.h>
#include <pspaudiocodec.h>
#include <pspaudio.h>
#include <string.h>
#include <malloc.h>
int SetupCallbacks();
PSP_MODULE_INFO("MP3 decodeTest", 0x1000, 1, 1);
PSP_MAIN_THREAD_ATTR(0);
__attribute__ ((constructor))
void loaderInit(){
pspKernelSetKernelPC();
pspSdkInstallNoDeviceCheckPatch();
pspSdkInstallNoPlainModuleCheckPatch();
pspSdkInstallKernelLoadModulePatch();
}
SceCtrlData input;
static int bitrates[] = {0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 };
unsigned long aac_codec_buffer[65] __attribute__((aligned(64)));
short aac_mix_buffer[1024 * 2] __attribute__((aligned(64)));
SceUID aac_handle;
u8* aac_data_buffer;
u16 aac_data_align;
u32 aac_sample_per_frame;
u16 aac_channel_mode;
u32 aac_data_start;
u32 aac_data_size;
u8 aac_getEDRAM;
u32 aac_channels;
u32 aac_samplerate;
int main(void)
{
SetupCallbacks();
int result = pspSdkLoadStartModule("flash0:/kd/me_for_vsh.prx", PSP_MEMORY_PARTITION_KERNEL);
result = pspSdkLoadStartModule("flash0:/kd/videocodec.prx", PSP_MEMORY_PARTITION_KERNEL);
result = pspSdkLoadStartModule("flash0:/kd/audiocodec.prx", PSP_MEMORY_PARTITION_KERNEL);
result = pspSdkLoadStartModule("flash0:/kd/mpegbase.prx", PSP_MEMORY_PARTITION_KERNEL);
result = pspSdkLoadStartModule("flash0:/kd/mpeg_vsh.prx", PSP_MEMORY_PARTITION_USER);
pspSdkFixupImports(result);
sceMpegInit();
aac_handle = sceIoOpen("ms0:/Test.AAC", PSP_O_RDONLY, 0777);
if ( ! aac_handle )
goto wait;
aac_channels = 2;
aac_samplerate = 44100; //this is aac file's samplerate, also can be 48000,....
aac_sample_per_frame = 1024;
aac_data_start = sceIoLseek32(aac_handle, 0, PSP_SEEK_CUR);
memset(aac_codec_buffer, 0, sizeof(aac_codec_buffer));
if ( sceAudiocodecCheckNeedMem(aac_codec_buffer, 0x1003) < 0 )
goto wait;
if ( sceAudiocodecGetEDRAM(aac_codec_buffer, 0x1003) < 0 )
goto wait;
aac_getEDRAM = 1;
aac_codec_buffer[10] = aac_samplerate;
if ( sceAudiocodecInit(aac_codec_buffer, 0x1003) < 0 ) {
goto wait;
}
int eof = 0;
while( !eof ) {
int samplesdecoded;
memset(aac_mix_buffer, 0, aac_sample_per_frame*2*2);
unsigned char aac_header_buf[7];
if ( sceIoRead( aac_handle, aac_header_buf, 7 ) != 7 ) {
eof = 1;
continue;
}
int aac_header = aac_header_buf[3];
aac_header = (aac_header<<8) | aac_header_buf[4];
aac_header = (aac_header<<8) | aac_header_buf[5];
aac_header = (aac_header<<8) | aac_header_buf[6];
int frame_size = aac_header & 67100672;
frame_size = frame_size >> 13;
frame_size = frame_size - 7;
if ( aac_data_buffer )
free(aac_data_buffer);
aac_data_buffer = (u8*)memalign(64, frame_size);
if ( sceIoRead( aac_handle, aac_data_buffer, frame_size ) != frame_size ) {
eof = 1;
continue;
}
aac_data_start += (frame_size+7);
aac_codec_buffer[6] = (unsigned long)aac_data_buffer;
aac_codec_buffer[8] = (unsigned long)aac_mix_buffer;
aac_codec_buffer[7] = frame_size;
aac_codec_buffer[9] = aac_sample_per_frame * 4;
int res = sceAudiocodecDecode(aac_codec_buffer, 0x1003);
if ( res < 0 ) {
eof = 1;
continue;
}
samplesdecoded = aac_sample_per_frame;
}
wait:
if ( aac_handle ) {
sceIoClose(aac_handle);
}
if ( aac_data_buffer) {
free(aac_data_buffer);
}
if ( aac_getEDRAM ) {
sceAudiocodecReleaseEDRAM(aac_codec_buffer);
}
sceCtrlReadBufferPositive(&input, 1);
while(!(input.Buttons & PSP_CTRL_TRIANGLE))
{
sceKernelDelayThread(10000); // wait 10 milliseconds
sceCtrlReadBufferPositive(&input, 1);
}
sceKernelExitGame();
return 0;
}
/* Exit callback */
int exit_callback(int arg1, int arg2, void *common)
{
sceKernelExitGame();
return 0;
}
/* Callback thread */
int CallbackThread(SceSize args, void *argp)
{
int cbid;
cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
sceKernelRegisterExitCallback(cbid);
sceKernelSleepThreadCB();
return 0;
}
/* Sets up the callback thread and returns its thread id */
int SetupCallbacks(void)
{
int thid = 0;
thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);
if(thid >= 0)
{
sceKernelStartThread(thid, 0, 0);
}
return thid;
}
|
Last edited by cooleyes on Sun Jun 10, 2007 11:35 pm; edited 1 time in total |
|
Back to top |
|
 |
Insert_witty_name
Joined: 10 May 2006 Posts: 376
|
Posted: Sat Jun 09, 2007 3:53 am Post subject: |
|
|
Excellent work again.
I'm gonna play with these right away :) |
|
Back to top |
|
 |
J.F.
Joined: 22 Feb 2004 Posts: 2906
|
Posted: Sat Jun 09, 2007 5:05 am Post subject: |
|
|
Great work! This should be very handy for people wanting background music for their app. Too bad Sony never added ogg support to the firmware. |
|
Back to top |
|
 |
Insert_witty_name
Joined: 10 May 2006 Posts: 376
|
Posted: Sat Jun 09, 2007 6:10 am Post subject: |
|
|
Unfortunately sceAudiocodecDecode returns an error code of 0x807f0002 for me using the mp3 example.
Maybe it's something to do with the mp3 file I am using, what are the specs of your test mp3 file? |
|
Back to top |
|
 |
jockyw2001
Joined: 29 Sep 2005 Posts: 339
|
Posted: Sat Jun 09, 2007 7:17 am Post subject: |
|
|
Holy crap! Despite the heatwave over here this will motivate me to get back to coding business :)
Excellent work cooleyes! |
|
Back to top |
|
 |
cooleyes
Joined: 18 May 2006 Posts: 125
|
Posted: Sat Jun 09, 2007 8:30 am Post subject: |
|
|
Insert_witty_name wrote: | Unfortunately sceAudiocodecDecode returns an error code of 0x807f0002 for me using the mp3 example.
Maybe it's something to do with the mp3 file I am using, what are the specs of your test mp3 file? |
I have test this code, it work well.
maybe your mp3 file have some TAG in the header,
you must skip the TAG, so your data_start will not be zero.
and these code , I will add to my project PPA(PMPlayer advance),
PPA can play PMP(AVC+MP3), PMP(AVC+AAC) , PMP(AVC+48KMP3), PMP(AVC+48KAAC) now. |
|
Back to top |
|
 |
Mihawk
Joined: 03 Apr 2007 Posts: 29
|
Posted: Sat Jun 09, 2007 8:54 pm Post subject: |
|
|
I didn't test it yet, so how exactly does this work?
Is sceAudiocodecDecode a blocking function that decodes and plays the samples directly? Or does it just decode the data and put the samples into the mp3_mix_buffer?
I would prefer the second one ;)
because I would like to use it to just decode an mp3 to do some processing on it (get a DCT, show DCT gfx and eventually play a part of the mp3). |
|
Back to top |
|
 |
Raphael

Joined: 17 Jan 2006 Posts: 646 Location: Germany
|
Posted: Sun Jun 10, 2007 8:48 pm Post subject: |
|
|
Once again, excellent work cooleyes. You have my utter most respect :) _________________ <Don't push the river, it flows.>
http://wordpress.fx-world.org - my devblog
http://wiki.fx-world.org - VFPU documentation wiki
Alexander Berl |
|
Back to top |
|
 |
dot_blank

Joined: 28 Sep 2005 Posts: 498 Location: Brasil
|
Posted: Sun Jun 10, 2007 9:12 pm Post subject: |
|
|
you are def the man cooleyes :) your audio work and also
your translations work for the characters sets of PMPA are just great
thanx alot :)
but why is there SceUID mp3_handle;
and then redeclaration / definition @
SceUID mp3_handle = sceIoOpen("ms0:/Test.MP3", PSP_O_RDONLY, 0777);
if ( ! mp3_handle )
goto wait;
same applies to AAC ...your sample works but i am just curious about above
what design does this provide _________________ 10011011 00101010 11010111 10001001 10111010 |
|
Back to top |
|
 |
cooleyes
Joined: 18 May 2006 Posts: 125
|
Posted: Sun Jun 10, 2007 11:22 pm Post subject: |
|
|
dot_blank wrote: | you are def the man cooleyes :) your audio work and also
your translations work for the characters sets of PMPA are just great
thanx alot :)
but why is there SceUID mp3_handle;
and then redeclaration / definition @
SceUID mp3_handle = sceIoOpen("ms0:/Test.MP3", PSP_O_RDONLY, 0777);
if ( ! mp3_handle )
goto wait;
same applies to AAC ...your sample works but i am just curious about above
what design does this provide |
hehe,that is a little bug.
I forgot I have designed mp3_handle.
:P |
|
Back to top |
|
 |
dot_blank

Joined: 28 Sep 2005 Posts: 498 Location: Brasil
|
Posted: Tue Jun 12, 2007 7:17 am Post subject: |
|
|
ahh :) ok buddy i understand it happens to us all :) _________________ 10011011 00101010 11010111 10001001 10111010 |
|
Back to top |
|
 |
jsharrad
Joined: 20 Oct 2005 Posts: 102
|
Posted: Wed Jun 13, 2007 7:42 am Post subject: |
|
|
That is awesome, thanks cooleyes. |
|
Back to top |
|
 |
raf
Joined: 13 Oct 2005 Posts: 57
|
Posted: Thu Jun 14, 2007 3:39 am Post subject: |
|
|
Excellent job, cooleyes!!. I'll look at adding this into PSPRadio asap; it would really help release some CPU cycles for the visualizers :)
Thanks!,
Raf. |
|
Back to top |
|
 |
jsharrad
Joined: 20 Oct 2005 Posts: 102
|
Posted: Thu Jun 14, 2007 6:43 am Post subject: |
|
|
raf wrote: | Excellent job, cooleyes!!. I'll look at adding this into PSPRadio asap; it would really help release some CPU cycles for the visualizers :)
Thanks!,
Raf. |
heh, I pulled some of the visualizer plugins from your svn last night and tried them with it, they work really well :) |
|
Back to top |
|
 |
jockyw2001
Joined: 29 Sep 2005 Posts: 339
|
Posted: Fri Jun 15, 2007 7:26 pm Post subject: |
|
|
cooleyes wrote: | and these code , I will add to my project PPA(PMPlayer advance),
PPA can play PMP(AVC+MP3), PMP(AVC+AAC) , PMP(AVC+48KMP3), PMP(AVC+48KAAC) now. |
Have you already done this? is the sourcecode available?
I'm trying to get your code to work in PMPVLC player. |
|
Back to top |
|
 |
cooleyes
Joined: 18 May 2006 Posts: 125
|
Posted: Fri Jun 15, 2007 11:23 pm Post subject: |
|
|
jockyw2001 wrote: | cooleyes wrote: | and these code , I will add to my project PPA(PMPlayer advance),
PPA can play PMP(AVC+MP3), PMP(AVC+AAC) , PMP(AVC+48KMP3), PMP(AVC+48KAAC) now. |
Have you already done this? is the sourcecode available?
I'm trying to get your code to work in PMPVLC player. |
yes, I had released a new version PPA.
the source available here:
http://files.cngba.com/cooleyes/PPA/PPA.source.20070613.rar |
|
Back to top |
|
 |
jockyw2001
Joined: 29 Sep 2005 Posts: 339
|
Posted: Sat Jun 16, 2007 12:27 am Post subject: |
|
|
cooleyes: thx, but that link doesn't work, it just shows me a blank page with a link to http://www.cngba.com
Do you have an alternative download location? |
|
Back to top |
|
 |
cooleyes
Joined: 18 May 2006 Posts: 125
|
Posted: Sat Jun 16, 2007 1:26 am Post subject: |
|
|
jockyw2001 wrote: | cooleyes: thx, but that link doesn't work, it just shows me a blank page with a link to http://www.cngba.com
Do you have an alternative download location? |
try this.
http://mihd.net/hxwov1 |
|
Back to top |
|
 |
jockyw2001
Joined: 29 Sep 2005 Posts: 339
|
Posted: Sat Jun 16, 2007 2:01 am Post subject: |
|
|
Great, thx! |
|
Back to top |
|
 |
Raphael

Joined: 17 Jan 2006 Posts: 646 Location: Germany
|
Posted: Sat Jun 16, 2007 2:26 am Post subject: |
|
|
cooleyes, if you want I can offer you webspace for PPA. Just give me a PM if you're interested _________________ <Don't push the river, it flows.>
http://wordpress.fx-world.org - my devblog
http://wiki.fx-world.org - VFPU documentation wiki
Alexander Berl |
|
Back to top |
|
 |
UD1121
Joined: 23 Sep 2006 Posts: 6
|
Posted: Sun Jun 17, 2007 1:59 am Post subject: |
|
|
cooleyes, can i have a link to PPA (not the source code)? and what else is new besides the audio stuff? |
|
Back to top |
|
 |
Art
Joined: 09 Nov 2005 Posts: 648
|
Posted: Sat Jul 07, 2007 10:39 pm Post subject: |
|
|
Could someone who has this working pls provide the makefile used?
Cheers, Art. |
|
Back to top |
|
 |
metlhed
Joined: 08 Jul 2007 Posts: 1
|
Posted: Sun Jul 08, 2007 11:40 am Post subject: |
|
|
I'm having some trouble getting this to work too. I'm using the 20070626 toolchain script built in linux. I can compile the example fine but when running it I see the memory card being accessed but there is no sound. It also finishes much faster than it should if it was playing.
Here is the makefile I'm using:
Code: | TARGET = mp3
OBJS = main.o
CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
LIBDIR =
LIBS = -lpspaudiocodec -lpspmpeg
LDFLAGS =
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = mp3 test
#PSP_EBOOT_ICON = ICON0.PNG
PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak
|
|
|
Back to top |
|
 |
Art
Joined: 09 Nov 2005 Posts: 648
|
Posted: Sun Jul 08, 2007 3:23 pm Post subject: |
|
|
Thanks I'll get back after I have a shot. |
|
Back to top |
|
 |
egorive
Joined: 22 Jun 2006 Posts: 24
|
Posted: Wed Aug 01, 2007 4:55 am Post subject: same problem |
|
|
Sorry but I have the same problem as metlhed, could any one tell us how is the right makefile?, I have used a tag remover just in case but still doesn't play my mp3 file. Thanks a lot!! |
|
Back to top |
|
 |
dot_blank

Joined: 28 Sep 2005 Posts: 498 Location: Brasil
|
Posted: Wed Aug 01, 2007 7:45 am Post subject: |
|
|
is there anyway of decoding without using the vsh modules loaded _________________ 10011011 00101010 11010111 10001001 10111010 |
|
Back to top |
|
 |
DookFook
Joined: 01 Aug 2007 Posts: 6
|
Posted: Wed Aug 01, 2007 11:13 pm Post subject: |
|
|
Hello cooleyes,
the code you wrote is badass, however I get the same problem as other people. my memory stick lights go but I dont hear any audio. I opened the mp3 in a hex editor and it doesn't have a TAG header, just raw data. also, I dont know if my included libs are correct. is it possible to turn this app into a prx that would allow us to listen to mp3s while playing games etc?
thanks |
|
Back to top |
|
 |
egorive
Joined: 22 Jun 2006 Posts: 24
|
Posted: Thu Aug 02, 2007 5:52 am Post subject: bad forms |
|
|
DookFook with bad forms you don't go anywhere... "badass" ?, if other people didn't have the problem you must think the problem is in our makefile, includes,or libraries in pspsdk or something that we don't see. Please, someone that help us and show us the way to make this thing work.thanks (sorry about my English, I'm foreigner). |
|
Back to top |
|
 |
ufoz
Joined: 10 Nov 2005 Posts: 86 Location: Tokyo
|
Posted: Thu Aug 02, 2007 10:04 am Post subject: Re: bad forms |
|
|
egorive wrote: | DookFook with bad forms you don't go anywhere... "badass" ?, if other people didn't have the problem you must think the problem is in our makefile, includes,or libraries in pspsdk or something that we don't see. Please, someone that help us and show us the way to make this thing work.thanks (sorry about my English, I'm foreigner). |
um
you are aware that "badass" is slang for "really awesome", right? |
|
Back to top |
|
 |
Xfacter
Joined: 28 Feb 2007 Posts: 9
|
Posted: Thu Aug 02, 2007 1:24 pm Post subject: |
|
|
It isn't supposed to play anything. It only decodes it. Getting it to play is up to you. |
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|