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

📄 intensity.c

📁 网络MPEG4IP流媒体开发源代码
💻 C
字号:
/************************* MPEG-2 NBC Audio Decoder ************************** *                                                                           *"This software module was originally developed byAT&T, Dolby Laboratories, Fraunhofer Gesellschaft IIS in the course ofdevelopment of the MPEG-2 NBC/MPEG-4 Audio standard ISO/IEC 13818-7,14496-1,2 and 3. This software module is an implementation of a part of one or moreMPEG-2 NBC/MPEG-4 Audio tools as specified by the MPEG-2 NBC/MPEG-4Audio standard. ISO/IEC  gives users of the MPEG-2 NBC/MPEG-4 Audiostandards free license to this software module or modifications thereof for use inhardware or software products claiming conformance to the MPEG-2 NBC/MPEG-4Audio  standards. Those intending to use this software module in hardware orsoftware products are advised that this use may infringe existing patents.The original developer of this software module and his/her company, the subsequenteditors and their companies, and ISO/IEC have no liability for use of this softwaremodule or modifications thereof in an implementation. Copyright is not released fornon MPEG-2 NBC/MPEG-4 Audio conforming products.The original developerretains full right to use the code for his/her  own purpose, assign or donate thecode to a third party and to inhibit third party from using the code for nonMPEG-2 NBC/MPEG-4 Audio conforming products. This copyright notice mustbe included in all copies or derivative works."Copyright(c)1996. *                                                                           * ****************************************************************************//* * $Id$ */#include <math.h>#include "all.h"/* * if (chan==RIGHT) { *  do IS decoding for this channel (scale left ch. values with *  factor(SFr-SFl) ) *  reset all lpflags for which IS is on *  pass decoded IS values to predict * } */void intensity( MC_Info *mip, Info *info, int widx, int ch,               byte *group, byte *cb_map, int *factors,               int *lpflag, Float *coef[Chans] ){    Ch_Info *cip = &mip->ch_info[ch];    Float   *left, *right, *r, *l, scale;    int     cb, sign_sfb, sfb, n, nn, b, bb, nband;    int   *band;    if (!(cip->cpe && !cip->ch_is_left))        return;    right = coef[ ch ];    left  = coef[ cip->paired_ch ];    /* Intensity goes by group */    bb = 0;    for (b = 0; b < info->nsbk; ) {    nband = info->sfb_per_sbk[b];    band = info->sbk_sfb_top[b];    b = *group++;       /* b = index of last sbk in group */    for (; bb < b; bb++) {  /* bb = sbk index */        n = 0;        for (sfb = 0; sfb < nband; sfb++){        nn = band[sfb]; /* band is offset table, nn is last coef in band */        cb = cb_map[sfb];        if (cb == INTENSITY_HCB  ||  cb == INTENSITY_HCB2) {            /* found intensity code book */            /* disable prediction (only important for long blocks) */            lpflag[1+sfb] = 0;                sign_sfb = (cb == INTENSITY_HCB) ? 1 : -1;                scale = sign_sfb * (float)pow( 0.5, 0.25*(factors[sfb]) );            /* reconstruct right intensity values */            r = right + n;            l = left + n;            for (; n < nn; n++) {   /* n is coef index */            *r++ = *l++ * scale;            }        }        n = nn;        }        right += info->bins_per_sbk[bb];        left += info->bins_per_sbk[bb];        factors += nband;    }    cb_map += info->sfb_per_sbk[bb-1];    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -