summaryrefslogtreecommitdiffstats
path: root/liba52/test.c
diff options
context:
space:
mode:
Diffstat (limited to 'liba52/test.c')
-rw-r--r--liba52/test.c154
1 files changed, 0 insertions, 154 deletions
diff --git a/liba52/test.c b/liba52/test.c
deleted file mode 100644
index 2f445226a5..0000000000
--- a/liba52/test.c
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * liba52 sample by A'rpi/ESP-team
- * Reads an AC-3 stream from stdin, decodes and downmixes to s16 stereo PCM
- * and writes it to stdout. The resulting stream is playable with sox:
- * play -c2 -r48000 -sw -fs out.sw
- *
- * Copyright (C) 2001 Árpád Gereöffy
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-//#define TIMING //needs Pentium or newer
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <inttypes.h>
-#include <string.h>
-
-#include "a52.h"
-#include "mm_accel.h"
-#include "cpudetect.h"
-
-static a52_state_t *state;
-static uint8_t buf[3840];
-static int buf_size=0;
-
-static int16_t out_buf[6*256*6];
-
-void mp_msg( int x, const char *format, ... ) // stub for cpudetect.c
-{
-}
-
-#ifdef TIMING
-static inline long long rdtsc(void)
-{
- long long l;
- __asm__ volatile("rdtsc\n\t"
- : "=A" (l)
- );
-// printf("%d\n", int(l/1000));
- return l;
-}
-
-#define STARTTIMING t=rdtsc();
-#define ENDTIMING sum+=rdtsc()-t; t=rdtsc();
-#else
-#define STARTTIMING ;
-#define ENDTIMING ;
-#endif
-
-
-int main(void){
-int accel=0;
-int sample_rate=0;
-int bit_rate=0;
-#ifdef TIMING
-long long t, sum=0, min=256*256*256*64;
-#endif
-
- FILE *temp= stdout;
- stdout= stderr; //EVIL HACK FIXME
- GetCpuCaps(&gCpuCaps);
- stdout= temp;
-// gCpuCaps.hasMMX=0;
-// gCpuCaps.hasSSE=0;
- if(gCpuCaps.hasMMX) accel |= MM_ACCEL_X86_MMX;
- if(gCpuCaps.hasMMX2) accel |= MM_ACCEL_X86_MMXEXT;
- if(gCpuCaps.hasSSE) accel |= MM_ACCEL_X86_SSE;
- if(gCpuCaps.has3DNow) accel |= MM_ACCEL_X86_3DNOW;
-// if(gCpuCaps.has3DNowExt) accel |= MM_ACCEL_X86_3DNOWEXT;
-
- state = a52_init (accel);
- if (state == NULL) {
- fprintf (stderr, "A52 init failed\n");
- return 1;
- }
-
-while(1){
- int length,i;
- int16_t *s16;
- sample_t level=1, bias=384;
- int flags=0;
- int channels=0;
-
- while(buf_size<7){
- int c=getchar();
- if(c<0) goto eof;
- buf[buf_size++]=c;
- }
-STARTTIMING
- length = a52_syncinfo (buf, &flags, &sample_rate, &bit_rate);
-ENDTIMING
- if(!length){
- // bad file => resync
- memcpy(buf,buf+1,6);
- --buf_size;
- continue;
- }
- fprintf(stderr,"sync. %d bytes 0x%X %d Hz %d kbit\n",length,flags,sample_rate,bit_rate);
- while(buf_size<length){
- buf[buf_size++]=getchar();
- }
-
- buf_size=0;
-
- // decode:
- flags=A52_STEREO; //A52_STEREO; //A52_DOLBY; //A52_STEREO; // A52_DOLBY // A52_2F2R // A52_3F2R | A52_LFE
- channels=2;
-
- flags |= A52_ADJUST_LEVEL;
-STARTTIMING
- if (a52_frame (state, buf, &flags, &level, bias))
- { fprintf(stderr,"error at decoding\n"); continue; }
-ENDTIMING
-
- // a52_dynrng (state, NULL, NULL); // disable dynamic range compensation
-
-STARTTIMING
- a52_resample_init(accel,flags,channels);
- s16 = out_buf;
- for (i = 0; i < 6; i++) {
- if (a52_block (state))
- { fprintf(stderr,"error at sampling\n"); break; }
- // float->int + channels interleaving:
- s16+=a52_resample(a52_samples(state),s16);
-ENDTIMING
- }
-#ifdef TIMING
-if(sum<min) min=sum;
-sum=0;
-#endif
- fwrite(out_buf,6*256*2*channels,1,stdout);
-
-}
-
-eof:
-#ifdef TIMING
-fprintf(stderr, "%4.4fk cycles\n",min/1000.0);
-sum=0;
-#endif
-return 0;
-}