⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dolby_adapt.c

📁 网络MPEG4IP流媒体开发源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
            *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 + -