X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=test%2Famrnb-dec.c;fp=test%2Famrnb-dec.cpp;h=f5583926a8c188107a18f80fe85a43afcda8ce76;hb=bee20294e0d8e1eb6502688d5b9112c7854c70fa;hp=98a352d94fb4f6caf5c8259a805605266e19eb40;hpb=973ce02144a6929a7a7f2f6fb4f54695a9619132;p=external%2Fopencore-amr.git diff --git a/test/amrnb-dec.cpp b/test/amrnb-dec.c similarity index 74% rename from test/amrnb-dec.cpp rename to test/amrnb-dec.c index 98a352d..f558392 100644 --- a/test/amrnb-dec.cpp +++ b/test/amrnb-dec.c @@ -19,65 +19,69 @@ #include #include #include -#include "wav.h" -extern "C" { +#include "wavwriter.h" #include -} /* From WmfDecBytesPerFrame in dec_input_format_tab.cpp */ const int sizes[] = { 12, 13, 15, 17, 19, 20, 26, 31, 5, 6, 5, 5, 0, 0, 0, 0 }; int main(int argc, char *argv[]) { - if (argc < 2) { - fprintf(stderr, "%s in.amr\n", argv[0]); + FILE* in; + char header[6]; + int n; + void *wav, *amr; + if (argc < 3) { + fprintf(stderr, "%s in.amr out.wav\n", argv[0]); return 1; } - FILE* in = fopen(argv[1], "rb"); + in = fopen(argv[1], "rb"); if (!in) { perror(argv[1]); return 1; } - char header[6]; - int n = fread(header, 1, 6, in); + n = fread(header, 1, 6, in); if (n != 6 || memcmp(header, "#!AMR\n", 6)) { fprintf(stderr, "Bad header\n"); return 1; } - WavWriter wav("out.wav", 8000, 16, 1); + wav = wav_write_open(argv[2], 8000, 16, 1); + if (!wav) { + fprintf(stderr, "Unable to open %s\n", argv[2]); + return 1; + } - void* amr = Decoder_Interface_init(); - while (true) { - uint8_t buffer[500]; + amr = Decoder_Interface_init(); + while (1) { + uint8_t buffer[500], littleendian[320], *ptr; + int size, i; + int16_t outbuffer[160]; /* Read the mode byte */ n = fread(buffer, 1, 1, in); if (n <= 0) break; /* Find the packet size */ - int size = sizes[(buffer[0] >> 3) & 0x0f]; - if (size <= 0) - break; + size = sizes[(buffer[0] >> 3) & 0x0f]; n = fread(buffer + 1, 1, size, in); if (n != size) break; /* Decode the packet */ - int16_t outbuffer[160]; Decoder_Interface_Decode(amr, buffer, outbuffer, 0); /* Convert to little endian and write to wav */ - uint8_t littleendian[320]; - uint8_t* ptr = littleendian; - for (int i = 0; i < 160; i++) { + ptr = littleendian; + for (i = 0; i < 160; i++) { *ptr++ = (outbuffer[i] >> 0) & 0xff; *ptr++ = (outbuffer[i] >> 8) & 0xff; } - wav.writeData(littleendian, 320); + wav_write_data(wav, littleendian, 320); } fclose(in); Decoder_Interface_exit(amr); + wav_write_close(wav); return 0; }