6 #define FILE_NAME_WIDTH 40
7 #define NUMBER_WIDTH 10
10 #define DEFAULT_SOURCE_DIR "testvectors/flac/tests"
23 if (pcmFrameCount_libflac != pcmFrameCount_drflac) {
24 printf(
" Decoded frame counts differ: pcmFrameCount=%d, libFLAC=%d, dr_flac=%d", (
int)pcmFrameCount, (
int)pcmFrameCount_libflac, (
int)pcmFrameCount_drflac);
31 for (iPCMFrame = 0; iPCMFrame < pcmFrameCount_libflac; iPCMFrame += 1) {
37 for (iChannel = 0; iChannel < pLibFlac->
channels; iChannel += 1) {
38 if (pPCMFrame_libflac[iChannel] != pPCMFrame_drflac[iChannel]) {
39 printf(
" PCM Frame @ %d[%d] does not match: pcmFrameCount=%d\n", (
int)iPCMFrame, iChannel, (
int)pcmFrameCount);
66 if (pPCMFrames_libflac ==
NULL) {
67 printf(
" [libFLAC] Out of memory");
72 if (pPCMFrames_drflac ==
NULL) {
73 free(pPCMFrames_libflac);
74 printf(
" [dr_flac] Out of memory");
78 for (iPCMFrame = 0; iPCMFrame < pLibFlac->
pcmFrameCount; iPCMFrame += pcmFrameChunkSize) {
85 free(pPCMFrames_libflac);
86 free(pPCMFrames_drflac);
103 if (pcmFrameCount_libflac != pcmFrameCount_drflac) {
104 printf(
" Decoded frame counts differ: pcmFrameCount=%d, libFLAC=%d, dr_flac=%d", (
int)pcmFrameCount, (
int)pLibFlac->
currentPCMFrame, (
int)pFlac->
currentPCMFrame);
109 DRFLAC_ASSERT(pcmFrameCount_libflac == pcmFrameCount_drflac);
111 for (iPCMFrame = 0; iPCMFrame < pcmFrameCount_libflac; iPCMFrame += 1) {
112 float* pPCMFrame_libflac = pPCMFrames_libflac + (iPCMFrame * pLibFlac->
channels);
113 float* pPCMFrame_drflac = pPCMFrames_drflac + (iPCMFrame * pLibFlac->
channels);
117 for (iChannel = 0; iChannel < pLibFlac->
channels; iChannel += 1) {
118 if (pPCMFrame_libflac[iChannel] != pPCMFrame_drflac[iChannel]) {
119 printf(
" PCM Frame @ %d[%d] does not match: pcmFrameCount=%d", (
int)iPCMFrame, iChannel, (
int)pcmFrameCount);
138 float* pPCMFrames_libflac;
139 float* pPCMFrames_drflac;
145 pPCMFrames_libflac = (
float*)malloc((
size_t)(pcmFrameChunkSize * pLibFlac->
channels *
sizeof(float)));
146 if (pPCMFrames_libflac ==
NULL) {
147 printf(
" [libFLAC] Out of memory");
151 pPCMFrames_drflac = (
float*)malloc((
size_t)(pcmFrameChunkSize * pLibFlac->
channels *
sizeof(float)));
152 if (pPCMFrames_drflac ==
NULL) {
153 free(pPCMFrames_libflac);
154 printf(
" [dr_flac] Out of memory");
158 for (iPCMFrame = 0; iPCMFrame < pLibFlac->
pcmFrameCount; iPCMFrame += pcmFrameChunkSize) {
165 free(pPCMFrames_libflac);
166 free(pPCMFrames_drflac);
183 if (pcmFrameCount_libflac != pcmFrameCount_drflac) {
184 printf(
" Decoded frame counts differ: pcmFrameCount=%d, libFLAC=%d, dr_flac=%d", (
int)pcmFrameCount, (
int)pLibFlac->
currentPCMFrame, (
int)pFlac->
currentPCMFrame);
189 DRFLAC_ASSERT(pcmFrameCount_libflac == pcmFrameCount_drflac);
191 for (iPCMFrame = 0; iPCMFrame < pcmFrameCount_libflac; iPCMFrame += 1) {
197 for (iChannel = 0; iChannel < pLibFlac->
channels; iChannel += 1) {
198 if (pPCMFrame_libflac[iChannel] != pPCMFrame_drflac[iChannel]) {
199 printf(
" PCM Frame @ %d[%d] does not match: pcmFrameCount=%d", (
int)iPCMFrame, iChannel, (
int)pcmFrameCount);
226 if (pPCMFrames_libflac ==
NULL) {
227 printf(
" [libFLAC] Out of memory");
232 if (pPCMFrames_drflac ==
NULL) {
233 free(pPCMFrames_libflac);
234 printf(
" [dr_flac] Out of memory");
238 for (iPCMFrame = 0; iPCMFrame < pLibFlac->
pcmFrameCount; iPCMFrame += pcmFrameChunkSize) {
245 free(pPCMFrames_libflac);
246 free(pPCMFrames_drflac);
331 printf(
" Failed to open via libFLAC.");
338 printf(
" Failed to open via dr_flac.");
387 while (pFile !=
NULL) {
428 if (pPCMFrames ==
NULL) {
429 printf(
" drflac_open_and_read failed.");
434 printf(
" Decoded frame counts differ: pcmFrameCount=%d, libFLAC=%d, dr_flac=%d", (
int)pcmFrameCount, (
int)pLibFlac->
currentPCMFrame, (
int)pcmFrameCount);
439 for (iPCMFrame = 0; iPCMFrame < pLibFlac->
pcmFrameCount; iPCMFrame += 1) {
445 for (iChannel = 0; iChannel < pLibFlac->
channels; iChannel += 1) {
446 if (pPCMFrame_libflac[iChannel] != pPCMFrame_drflac[iChannel]) {
447 printf(
" PCM Frame @ %d[%d] does not match: pcmFrameCount=%d", (
int)iPCMFrame, iChannel, (
int)pcmFrameCount);
472 if (pPCMFrames ==
NULL) {
473 printf(
" drflac_open_and_read failed.");
478 printf(
" Decoded frame counts differ: pcmFrameCount=%d, libFLAC=%d, dr_flac=%d", (
int)pcmFrameCount, (
int)pLibFlac->
currentPCMFrame, (
int)pcmFrameCount);
483 for (iPCMFrame = 0; iPCMFrame < pLibFlac->
pcmFrameCount; iPCMFrame += 1) {
485 float* pPCMFrame_drflac = pPCMFrames + (iPCMFrame * pLibFlac->
channels);
489 for (iChannel = 0; iChannel < pLibFlac->
channels; iChannel += 1) {
490 if ((pPCMFrame_libflac[iChannel] / 2147483648.0) != pPCMFrame_drflac[iChannel]) {
491 printf(
" PCM Frame @ %d[%d] does not match: pcmFrameCount=%d", (
int)iPCMFrame, iChannel, (
int)pcmFrameCount);
516 if (pPCMFrames ==
NULL) {
517 printf(
" drflac_open_and_read failed.");
522 printf(
" Decoded frame counts differ: pcmFrameCount=%d, libFLAC=%d, dr_flac=%d", (
int)pcmFrameCount, (
int)pLibFlac->
currentPCMFrame, (
int)pcmFrameCount);
527 for (iPCMFrame = 0; iPCMFrame < pLibFlac->
pcmFrameCount; iPCMFrame += 1) {
533 for (iChannel = 0; iChannel < pLibFlac->
channels; iChannel += 1) {
534 if ((pPCMFrame_libflac[iChannel] >> 16) != pPCMFrame_drflac[iChannel]) {
535 printf(
" PCM Frame @ %d[%d] does not match: pcmFrameCount=%d", (
int)iPCMFrame, iChannel, (
int)pcmFrameCount);
561 printf(
" Failed to open via libFLAC.");
599 while (pFile !=
NULL) {
637 double decodeTimeBeg;
638 double decodeTimeEnd;
639 double drflacDecodeTimeInSeconds;
641 size_t fileSizeInBytes;
648 printf(
" [libFLAC] Failed to load file");
654 if (pFileData ==
NULL) {
655 printf(
" Failed to load file");
662 printf(
" [dr_flac] Failed to load file.");
671 if (pTempBuffer ==
NULL) {
675 printf(
" Out of memory.");
688 drflacDecodeTimeInSeconds = decodeTimeEnd - decodeTimeBeg;
712 while (pFile !=
NULL) {
759 printf(
"=======================================================================\n");
760 printf(
"DECODE TESTING\n");
761 printf(
"=======================================================================\n");
768 printf(
"=======================================================================\n");
769 printf(
"OPEN-AND-READ TESTING - drflac_open_*_and_read_pcm_frames_*()\n");
770 printf(
"=======================================================================\n");
777 printf(
"=======================================================================\n");
778 printf(
"WARNING: Correctness Tests Disabled\n");
779 printf(
"=======================================================================\n");
784 printf(
"=======================================================================\n");
785 printf(
"DECODE PROFILING (LOWER IS BETTER)\n");
786 printf(
"=======================================================================\n");