Mercurial > mplayer.hg
annotate mp3lib/test.c @ 31169:ac84149bbdaf
Retry reading even if we hit eof before.
This allows playing growing files even with a large cache.
author | reimar |
---|---|
date | Wed, 26 May 2010 18:23:43 +0000 |
parents | fee09b258e8a |
children | 1c789a1ad0f0 |
rev | line source |
---|---|
30452
fee09b258e8a
Add missing license headers to test programs for external libraries.
diego
parents:
29717
diff
changeset
|
1 /* |
fee09b258e8a
Add missing license headers to test programs for external libraries.
diego
parents:
29717
diff
changeset
|
2 * This file is part of MPlayer. |
fee09b258e8a
Add missing license headers to test programs for external libraries.
diego
parents:
29717
diff
changeset
|
3 * |
fee09b258e8a
Add missing license headers to test programs for external libraries.
diego
parents:
29717
diff
changeset
|
4 * MPlayer is free software; you can redistribute it and/or modify |
fee09b258e8a
Add missing license headers to test programs for external libraries.
diego
parents:
29717
diff
changeset
|
5 * it under the terms of the GNU General Public License as published by |
fee09b258e8a
Add missing license headers to test programs for external libraries.
diego
parents:
29717
diff
changeset
|
6 * the Free Software Foundation; either version 2 of the License, or |
fee09b258e8a
Add missing license headers to test programs for external libraries.
diego
parents:
29717
diff
changeset
|
7 * (at your option) any later version. |
fee09b258e8a
Add missing license headers to test programs for external libraries.
diego
parents:
29717
diff
changeset
|
8 * |
fee09b258e8a
Add missing license headers to test programs for external libraries.
diego
parents:
29717
diff
changeset
|
9 * MPlayer is distributed in the hope that it will be useful, |
fee09b258e8a
Add missing license headers to test programs for external libraries.
diego
parents:
29717
diff
changeset
|
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
fee09b258e8a
Add missing license headers to test programs for external libraries.
diego
parents:
29717
diff
changeset
|
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
fee09b258e8a
Add missing license headers to test programs for external libraries.
diego
parents:
29717
diff
changeset
|
12 * GNU General Public License for more details. |
fee09b258e8a
Add missing license headers to test programs for external libraries.
diego
parents:
29717
diff
changeset
|
13 * |
fee09b258e8a
Add missing license headers to test programs for external libraries.
diego
parents:
29717
diff
changeset
|
14 * You should have received a copy of the GNU General Public License along |
fee09b258e8a
Add missing license headers to test programs for external libraries.
diego
parents:
29717
diff
changeset
|
15 * with MPlayer; if not, write to the Free Software Foundation, Inc., |
fee09b258e8a
Add missing license headers to test programs for external libraries.
diego
parents:
29717
diff
changeset
|
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
fee09b258e8a
Add missing license headers to test programs for external libraries.
diego
parents:
29717
diff
changeset
|
17 */ |
814 | 18 |
19 #define DUMP_PCM | |
788 | 20 |
21 #include <stdio.h> | |
22 #include <stdlib.h> | |
23 | |
24 #include <unistd.h> | |
25 #include <sys/time.h> | |
26 | |
26203 | 27 #include "config.h" |
788 | 28 #include "mp3lib/mp3.h" |
16989 | 29 #include "cpudetect.h" |
10372 | 30 |
28232
8df85ad26746
Add missing 'void' keyword to parameterless function declarations.
diego
parents:
27341
diff
changeset
|
31 static inline unsigned int GetTimer(void){ |
788 | 32 struct timeval tv; |
33 struct timezone tz; | |
34 // float s; | |
35 gettimeofday(&tv,&tz); | |
36 // s=tv.tv_usec;s*=0.000001;s+=tv.tv_sec; | |
29717
afc8b80eb027
cosmetics: Remove some pointless parentheses from return calls.
diego
parents:
29263
diff
changeset
|
37 return tv.tv_sec * 1000000 + tv.tv_usec; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28232
diff
changeset
|
38 } |
788 | 39 |
40 static FILE* mp3file=NULL; | |
41 | |
42 int mplayer_audio_read(char *buf,int size){ | |
43 return fread(buf,1,size,mp3file); | |
44 } | |
45 | |
46 #define BUFFLEN 4608 | |
47 static unsigned char buffer[BUFFLEN]; | |
48 | |
49 int main(int argc,char* argv[]){ | |
50 int len; | |
51 int total=0; | |
52 unsigned int time1; | |
53 float length; | |
814 | 54 #ifdef DUMP_PCM |
55 FILE *f=NULL; | |
56 f=fopen("test.pcm","wb"); | |
57 #endif | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28232
diff
changeset
|
58 |
788 | 59 mp3file=fopen((argc>1)?argv[1]:"test.mp3","rb"); |
60 if(!mp3file){ printf("file not found\n"); exit(1); } | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28232
diff
changeset
|
61 |
10372 | 62 GetCpuCaps(&gCpuCaps); |
788 | 63 |
64 // MPEG Audio: | |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26504
diff
changeset
|
65 #ifdef CONFIG_FAKE_MONO |
788 | 66 MP3_Init(0); |
67 #else | |
68 MP3_Init(); | |
69 #endif | |
70 MP3_samplerate=MP3_channels=0; | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28232
diff
changeset
|
71 |
788 | 72 time1=GetTimer(); |
814 | 73 while((len=MP3_DecodeFrame(buffer,-1))>0 && total<2000000){ |
788 | 74 total+=len; |
75 // play it | |
814 | 76 #ifdef DUMP_PCM |
77 fwrite(buffer,len,1,f); | |
78 #endif | |
788 | 79 //putchar('.');fflush(stdout); |
80 } | |
81 time1=GetTimer()-time1; | |
82 length=(float)total/(float)(MP3_samplerate*MP3_channels*2); | |
83 printf("\nDecoding time: %8.6f\n",(float)time1*0.000001f); | |
84 printf("Uncompressed size: %d bytes (%8.3f secs)\n",total,length); | |
10372 | 85 printf("CPU usage at normal playback: %5.2f %%\n",time1*0.0001f/length); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28232
diff
changeset
|
86 |
788 | 87 fclose(mp3file); |
26502 | 88 return 0; |
788 | 89 } |