📄 dolby_adapt.c
字号:
*destPtr++ = *transBuffPtr++ + *timeBuffPtr++; *destPtr++ = *transBuffPtr++ + *timeBuffPtr++; *destPtr++ = *transBuffPtr++ + *timeBuffPtr++; *destPtr++ = *transBuffPtr++ + *timeBuffPtr++; *destPtr++ = *transBuffPtr++ + *timeBuffPtr++; *destPtr++ = *transBuffPtr++ + *timeBuffPtr++; } /* Save second half as old data */ timeBuffPtr = timeBuff; for (i = BLOCK_LEN_LONG/16 - 1; i >= 0; --i) { *timeBuffPtr++ = *transBuffPtr++; *timeBuffPtr++ = *transBuffPtr++; *timeBuffPtr++ = *transBuffPtr++; *timeBuffPtr++ = *transBuffPtr++; *timeBuffPtr++ = *transBuffPtr++; *timeBuffPtr++ = *transBuffPtr++; *timeBuffPtr++ = *transBuffPtr++; *timeBuffPtr++ = *transBuffPtr++; *timeBuffPtr++ = *transBuffPtr++; *timeBuffPtr++ = *transBuffPtr++; *timeBuffPtr++ = *transBuffPtr++; *timeBuffPtr++ = *transBuffPtr++; *timeBuffPtr++ = *transBuffPtr++; *timeBuffPtr++ = *transBuffPtr++; *timeBuffPtr++ = *transBuffPtr++; *timeBuffPtr++ = *transBuffPtr++; } hDecoder->dolbyShortOffset_f2t = 0; } else if (blockType == STOP_TYPE) { unfold (freqInPtr, transBuff, BLOCK_LEN_LONG); /* Do 1 LONG transforms */ ITransformBlock (hDecoder, transBuff, STOP_FLAT_BLOCK, wnd_shape, timeBuff); /* Add first half and old data */ transBuffPtr = transBuff; timeBuffPtr = timeBuff; destPtr = timeOutPtr; for (i = (BLOCK_LEN_LONG - NFLAT)/16 - 1; i>=0;--i) { *destPtr++ = *transBuffPtr++ + *timeBuffPtr++; *destPtr++ = *transBuffPtr++ + *timeBuffPtr++; *destPtr++ = *transBuffPtr++ + *timeBuffPtr++; *destPtr++ = *transBuffPtr++ + *timeBuffPtr++; *destPtr++ = *transBuffPtr++ + *timeBuffPtr++; *destPtr++ = *transBuffPtr++ + *timeBuffPtr++; *destPtr++ = *transBuffPtr++ + *timeBuffPtr++; *destPtr++ = *transBuffPtr++ + *timeBuffPtr++; *destPtr++ = *transBuffPtr++ + *timeBuffPtr++; *destPtr++ = *transBuffPtr++ + *timeBuffPtr++; *destPtr++ = *transBuffPtr++ + *timeBuffPtr++; *destPtr++ = *transBuffPtr++ + *timeBuffPtr++; *destPtr++ = *transBuffPtr++ + *timeBuffPtr++; *destPtr++ = *transBuffPtr++ + *timeBuffPtr++; *destPtr++ = *transBuffPtr++ + *timeBuffPtr++; *destPtr++ = *transBuffPtr++ + *timeBuffPtr++; } for ( i = NFLAT/16-1; i>=0;--i) { *destPtr++ = *transBuffPtr++; *destPtr++ = *transBuffPtr++; *destPtr++ = *transBuffPtr++; *destPtr++ = *transBuffPtr++; *destPtr++ = *transBuffPtr++; *destPtr++ = *transBuffPtr++; *destPtr++ = *transBuffPtr++; *destPtr++ = *transBuffPtr++; *destPtr++ = *transBuffPtr++; *destPtr++ = *transBuffPtr++; *destPtr++ = *transBuffPtr++; *destPtr++ = *transBuffPtr++; *destPtr++ = *transBuffPtr++; *destPtr++ = *transBuffPtr++; *destPtr++ = *transBuffPtr++; *destPtr++ = *transBuffPtr++; } /* Save second half as old data */ timeBuffPtr = timeBuff; for (i = BLOCK_LEN_LONG/16 - 1; i >= 0; --i ) { *timeBuffPtr++ = *transBuffPtr++; *timeBuffPtr++ = *transBuffPtr++; *timeBuffPtr++ = *transBuffPtr++; *timeBuffPtr++ = *transBuffPtr++; *timeBuffPtr++ = *transBuffPtr++; *timeBuffPtr++ = *transBuffPtr++; *timeBuffPtr++ = *transBuffPtr++; *timeBuffPtr++ = *transBuffPtr++; *timeBuffPtr++ = *transBuffPtr++; *timeBuffPtr++ = *transBuffPtr++; *timeBuffPtr++ = *transBuffPtr++; *timeBuffPtr++ = *transBuffPtr++; *timeBuffPtr++ = *transBuffPtr++; *timeBuffPtr++ = *transBuffPtr++; *timeBuffPtr++ = *transBuffPtr++; *timeBuffPtr++ = *transBuffPtr++; } } i=0; do { *(ftimeOutPtr++) = (timeOutPtr[i]); i++; *(ftimeOutPtr++) = (timeOutPtr[i]); i++; *(ftimeOutPtr++) = (timeOutPtr[i]); i++; *(ftimeOutPtr++) = (timeOutPtr[i]); i++; *(ftimeOutPtr++) = (timeOutPtr[i]); i++; *(ftimeOutPtr++) = (timeOutPtr[i]); i++; *(ftimeOutPtr++) = (timeOutPtr[i]); i++; *(ftimeOutPtr++) = (timeOutPtr[i]); i++; } while(i<BLOCK_LEN_LONG); FreeMemory(timeOutPtr); FreeMemory(transBuff);}/******************************************************************************* time2freq_adapt* transform to time domain data to freq. domain.* Blocks composed of multiple segments (i.e. all but long) have* input spectrums interleaved.* Notice: currently verified only for certain blocktypes* input: see below* output: see below* local static:* none* globals: none******************************************************************************/void time2freq_adapt(faacDecHandle hDecoder, WINDOW_TYPE blockType, /* input: blockType 0-3 */ Wnd_Shape *wnd_shape, /* input/output */ Float *timeInPtr, /* input: time domain data */ Float *ffreqOutPtr) /* output: 1/2 block of new freq values */{ Float *transBuff, *transBuffPtr; int i, j; Float *srcPtr; Float *destPtr; Float *freqOutPtr; transBuff = AllocMemory(2*BLOCK_LEN_LONG*sizeof(Float)); freqOutPtr = AllocMemory(BLOCK_LEN_LONG*sizeof(Float)); if (blockType == NORM_TYPE) { srcPtr = timeInPtr; destPtr = transBuff; for (i = 2 * BLOCK_LEN_LONG / 16 - 1; i >= 0; --i) { *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; } /* Do 1 LONG transform */ TransformBlock (hDecoder, transBuff, LONG_BLOCK, wnd_shape); srcPtr = transBuff; destPtr = freqOutPtr; for (i = BLOCK_LEN_LONG/16-1; i>=0; --i) { *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; } } else if (blockType == SHORT_TYPE) { /* Do 8 SHORT transforms */ srcPtr = timeInPtr + (BLOCK_LEN_LONG - BLOCK_LEN_SHORT) / 2; destPtr = freqOutPtr; for (i = 0; i < 8; i++) { transBuffPtr = transBuff; for (i = 2 * BLOCK_LEN_SHORT/16-1; i>=0; --i) { *transBuffPtr++ = *srcPtr++; *transBuffPtr++ = *srcPtr++; *transBuffPtr++ = *srcPtr++; *transBuffPtr++ = *srcPtr++; *transBuffPtr++ = *srcPtr++; *transBuffPtr++ = *srcPtr++; *transBuffPtr++ = *srcPtr++; *transBuffPtr++ = *srcPtr++; *transBuffPtr++ = *srcPtr++; *transBuffPtr++ = *srcPtr++; *transBuffPtr++ = *srcPtr++; *transBuffPtr++ = *srcPtr++; *transBuffPtr++ = *srcPtr++; *transBuffPtr++ = *srcPtr++; *transBuffPtr++ = *srcPtr++; *transBuffPtr++ = *srcPtr++; } srcPtr -= BLOCK_LEN_SHORT; TransformBlock (hDecoder, transBuff, SHORT_BLOCK, wnd_shape); /* Copy data to output buffer */ transBuffPtr = transBuff; for (j = BLOCK_LEN_SHORT/16-1; j>=0;--j) { *destPtr++ = *transBuffPtr++; *destPtr++ = *transBuffPtr++; *destPtr++ = *transBuffPtr++; *destPtr++ = *transBuffPtr++; *destPtr++ = *transBuffPtr++; *destPtr++ = *transBuffPtr++; *destPtr++ = *transBuffPtr++; *destPtr++ = *transBuffPtr++; *destPtr++ = *transBuffPtr++; *destPtr++ = *transBuffPtr++; *destPtr++ = *transBuffPtr++; *destPtr++ = *transBuffPtr++; *destPtr++ = *transBuffPtr++; *destPtr++ = *transBuffPtr++; *destPtr++ = *transBuffPtr++; *destPtr++ = *transBuffPtr++; } } } else if (blockType == START_TYPE) { srcPtr = timeInPtr; destPtr = transBuff; for (i = 2 * BLOCK_LEN_LONG/16-1; i>=0;--i) { *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; } TransformBlock (hDecoder, transBuff, START_FLAT_BLOCK, wnd_shape); srcPtr = transBuff; destPtr = freqOutPtr; for (i = BLOCK_LEN_LONG/16-1; i>=0;--i) { *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; } hDecoder->dolbyShortOffset_t2f = 0; } else if (blockType == STOP_TYPE) { srcPtr = timeInPtr; destPtr = transBuff; for (i = 2 * BLOCK_LEN_LONG/16-1; i>=0;--i) { *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; } TransformBlock (hDecoder, transBuff, STOP_FLAT_BLOCK, wnd_shape); srcPtr = transBuff; destPtr = freqOutPtr; for (i = BLOCK_LEN_LONG/16-1; i>=0;--i) { *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; } } srcPtr = freqOutPtr; destPtr = ffreqOutPtr; for (i = BLOCK_LEN_LONG/16-1; i>=0;--i) { *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; *destPtr++ = *srcPtr++; } FreeMemory(freqOutPtr); FreeMemory(transBuff);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -