Пример #1
0
/*****************************************************************************

    description:  encodes sbr SCE information
    returns:      number of bits written

*****************************************************************************/
static int
encodeSbrSingleChannelElement (HANDLE_SBR_ENV_DATA   sbrEnvData,
                               HANDLE_BIT_BUF        hBitStream,
                               int                   data_extra)

{
  int payloadBits = 0;

  

   /* counting previous operation */

     
    payloadBits += WriteBits (hBitStream, 0, 1); /* no reserved bits */



   
  payloadBits += encodeSbrGrid (sbrEnvData, hBitStream);

   
  payloadBits += encodeSbrDtdf (sbrEnvData, hBitStream);

  {
    int i;

     /* sbrEnvData->sbr_invf_mode_vec[] */
     
    for (i = 0; i < sbrEnvData->noOfnoisebands; i++) {

       
      payloadBits += WriteBits (hBitStream, sbrEnvData->sbr_invf_mode_vec[i], SI_SBR_INVF_MODE_BITS);
    }
  }


   
  payloadBits += writeEnvelopeData (sbrEnvData, hBitStream, 0);

   
  payloadBits += writeNoiseLevelData (sbrEnvData, hBitStream, 0);

   
  payloadBits += writeSyntheticCodingData (sbrEnvData,hBitStream);


  

  return payloadBits;
}
Пример #2
0
/*****************************************************************************

    functionname: encodeSbrSingleChannelElement
    description:  encodes sbr SCE information
    returns:      number of bits written
    input:
    output:

*****************************************************************************/
static INT encodeSbrSingleChannelElement(
    HANDLE_SBR_ENV_DATA sbrEnvData, HANDLE_FDK_BITSTREAM hBitStream,
    HANDLE_PARAMETRIC_STEREO hParametricStereo, const UINT sbrSyntaxFlags) {
  INT i, payloadBits = 0;

  payloadBits += FDKwriteBits(hBitStream, 0,
                              SI_SBR_DATA_EXTRA_BITS); /* no reserved bits */

  if (sbrEnvData->ldGrid) {
    if (sbrEnvData->hSbrBSGrid->frameClass != FIXFIXonly) {
      /* encode normal SbrGrid */
      payloadBits += encodeSbrGrid(sbrEnvData, hBitStream);
    } else {
      /* use FIXFIXonly frame Grid */
      payloadBits += encodeLowDelaySbrGrid(
          sbrEnvData, hBitStream, encodeFreqs(LD_TRANSMISSION), sbrSyntaxFlags);
    }
  } else {
    if (sbrSyntaxFlags & SBR_SYNTAX_SCALABLE) {
      payloadBits += FDKwriteBits(hBitStream, 1, SI_SBR_COUPLING_BITS);
    }
    payloadBits += encodeSbrGrid(sbrEnvData, hBitStream);
  }

  payloadBits += encodeSbrDtdf(sbrEnvData, hBitStream);

  for (i = 0; i < sbrEnvData->noOfnoisebands; i++) {
    payloadBits += FDKwriteBits(hBitStream, sbrEnvData->sbr_invf_mode_vec[i],
                                SI_SBR_INVF_MODE_BITS);
  }

  payloadBits += writeEnvelopeData(sbrEnvData, hBitStream, 0);
  payloadBits += writeNoiseLevelData(sbrEnvData, hBitStream, 0);

  payloadBits += writeSyntheticCodingData(sbrEnvData, hBitStream);

  payloadBits += encodeExtendedData(hParametricStereo, hBitStream);

  return payloadBits;
}
Пример #3
0
/*****************************************************************************

    functionname: encodeSbrChannelPairElement
    description:  encodes sbr CPE information
    returns:
    input:
    output:

*****************************************************************************/
static INT encodeSbrChannelPairElement(
    HANDLE_SBR_ENV_DATA sbrEnvDataLeft, HANDLE_SBR_ENV_DATA sbrEnvDataRight,
    HANDLE_PARAMETRIC_STEREO hParametricStereo, HANDLE_FDK_BITSTREAM hBitStream,
    const INT coupling, const UINT sbrSyntaxFlags) {
  INT payloadBits = 0;
  INT i = 0;

  payloadBits += FDKwriteBits(hBitStream, 0,
                              SI_SBR_DATA_EXTRA_BITS); /* no reserved bits */

  payloadBits += FDKwriteBits(hBitStream, coupling, SI_SBR_COUPLING_BITS);

  if (coupling) {
    if (sbrEnvDataLeft->ldGrid) {
      if (sbrEnvDataLeft->hSbrBSGrid->frameClass != FIXFIXonly) {
        /* normal SbrGrid */
        payloadBits += encodeSbrGrid(sbrEnvDataLeft, hBitStream);

      } else {
        /* FIXFIXonly frame Grid */
        payloadBits +=
            encodeLowDelaySbrGrid(sbrEnvDataLeft, hBitStream,
                                  encodeFreqs(LD_TRANSMISSION), sbrSyntaxFlags);
      }
    } else
      payloadBits += encodeSbrGrid(sbrEnvDataLeft, hBitStream);

    payloadBits += encodeSbrDtdf(sbrEnvDataLeft, hBitStream);
    payloadBits += encodeSbrDtdf(sbrEnvDataRight, hBitStream);

    for (i = 0; i < sbrEnvDataLeft->noOfnoisebands; i++) {
      payloadBits +=
          FDKwriteBits(hBitStream, sbrEnvDataLeft->sbr_invf_mode_vec[i],
                       SI_SBR_INVF_MODE_BITS);
    }

    payloadBits += writeEnvelopeData(sbrEnvDataLeft, hBitStream, 1);
    payloadBits += writeNoiseLevelData(sbrEnvDataLeft, hBitStream, 1);
    payloadBits += writeEnvelopeData(sbrEnvDataRight, hBitStream, 1);
    payloadBits += writeNoiseLevelData(sbrEnvDataRight, hBitStream, 1);

    payloadBits += writeSyntheticCodingData(sbrEnvDataLeft, hBitStream);
    payloadBits += writeSyntheticCodingData(sbrEnvDataRight, hBitStream);

  } else { /* no coupling */
    FDK_ASSERT(sbrEnvDataLeft->ldGrid == sbrEnvDataRight->ldGrid);

    if (sbrEnvDataLeft->ldGrid || sbrEnvDataRight->ldGrid) {
      /* sbrEnvDataLeft (left channel) */
      if (sbrEnvDataLeft->hSbrBSGrid->frameClass != FIXFIXonly) {
        /* no FIXFIXonly Frame so we dont need encodeLowDelaySbrGrid */
        /* normal SbrGrid */
        payloadBits += encodeSbrGrid(sbrEnvDataLeft, hBitStream);

      } else {
        /* FIXFIXonly frame Grid */
        payloadBits +=
            encodeLowDelaySbrGrid(sbrEnvDataLeft, hBitStream,
                                  encodeFreqs(LD_TRANSMISSION), sbrSyntaxFlags);
      }

      /* sbrEnvDataRight (right channel) */
      if (sbrEnvDataRight->hSbrBSGrid->frameClass != FIXFIXonly) {
        /* no FIXFIXonly Frame so we dont need encodeLowDelaySbrGrid */
        /* normal SbrGrid */
        payloadBits += encodeSbrGrid(sbrEnvDataRight, hBitStream);

      } else {
        /* FIXFIXonly frame Grid */
        payloadBits +=
            encodeLowDelaySbrGrid(sbrEnvDataRight, hBitStream,
                                  encodeFreqs(LD_TRANSMISSION), sbrSyntaxFlags);
      }
    } else {
      payloadBits += encodeSbrGrid(sbrEnvDataLeft, hBitStream);
      payloadBits += encodeSbrGrid(sbrEnvDataRight, hBitStream);
    }
    payloadBits += encodeSbrDtdf(sbrEnvDataLeft, hBitStream);
    payloadBits += encodeSbrDtdf(sbrEnvDataRight, hBitStream);

    for (i = 0; i < sbrEnvDataLeft->noOfnoisebands; i++) {
      payloadBits +=
          FDKwriteBits(hBitStream, sbrEnvDataLeft->sbr_invf_mode_vec[i],
                       SI_SBR_INVF_MODE_BITS);
    }
    for (i = 0; i < sbrEnvDataRight->noOfnoisebands; i++) {
      payloadBits +=
          FDKwriteBits(hBitStream, sbrEnvDataRight->sbr_invf_mode_vec[i],
                       SI_SBR_INVF_MODE_BITS);
    }

    payloadBits += writeEnvelopeData(sbrEnvDataLeft, hBitStream, 0);
    payloadBits += writeEnvelopeData(sbrEnvDataRight, hBitStream, 0);
    payloadBits += writeNoiseLevelData(sbrEnvDataLeft, hBitStream, 0);
    payloadBits += writeNoiseLevelData(sbrEnvDataRight, hBitStream, 0);

    payloadBits += writeSyntheticCodingData(sbrEnvDataLeft, hBitStream);
    payloadBits += writeSyntheticCodingData(sbrEnvDataRight, hBitStream);

  } /* coupling */

  payloadBits += encodeExtendedData(hParametricStereo, hBitStream);

  return payloadBits;
}
Пример #4
0
/*****************************************************************************

    description:  encodes sbr CPE information

*****************************************************************************/
static int
encodeSbrChannelPairElement (HANDLE_SBR_ENV_DATA   sbrEnvDataLeft,
                             HANDLE_SBR_ENV_DATA   sbrEnvDataRight,
                             HANDLE_BIT_BUF        hBitStream,
                             int                   data_extra,
                             int                   coupling)
{
  int payloadBits = 0;
  int i = 0;

  

   /* counting previous operation */

     
    payloadBits += WriteBits (hBitStream, 0, 1); /* no reserved bits */

   
  payloadBits += WriteBits (hBitStream, coupling, SI_SBR_COUPLING_BITS);

  
  if (coupling) {

     
    payloadBits += encodeSbrGrid (sbrEnvDataLeft, hBitStream);

     
    payloadBits += encodeSbrDtdf (sbrEnvDataLeft, hBitStream);

     
    payloadBits += encodeSbrDtdf (sbrEnvDataRight, hBitStream);

     /* sbrEnvDataLeft->sbr_invf_mode_vec[] */
     
    for (i = 0; i < sbrEnvDataLeft->noOfnoisebands; i++) {

       
      payloadBits += WriteBits (hBitStream, sbrEnvDataLeft->sbr_invf_mode_vec[i], SI_SBR_INVF_MODE_BITS);
    }




     
    payloadBits += writeEnvelopeData  (sbrEnvDataLeft,  hBitStream,1);

     
    payloadBits += writeNoiseLevelData (sbrEnvDataLeft,  hBitStream,1);

     
    payloadBits += writeEnvelopeData  (sbrEnvDataRight, hBitStream,1);

     
    payloadBits += writeNoiseLevelData (sbrEnvDataRight, hBitStream,1);




     
    payloadBits += writeSyntheticCodingData (sbrEnvDataLeft,hBitStream);

     
    payloadBits += writeSyntheticCodingData (sbrEnvDataRight,hBitStream);


  } else { /* no coupling */

     
    payloadBits += encodeSbrGrid (sbrEnvDataLeft,  hBitStream);

     
    payloadBits += encodeSbrGrid (sbrEnvDataRight, hBitStream);

     
    payloadBits += encodeSbrDtdf (sbrEnvDataLeft,  hBitStream);

     
    payloadBits += encodeSbrDtdf (sbrEnvDataRight, hBitStream);

     /* sbrEnvDataLeft->sbr_invf_mode_vec[] */
     
    for (i = 0; i < sbrEnvDataLeft->noOfnoisebands; i++) {

       
      payloadBits += WriteBits (hBitStream, sbrEnvDataLeft->sbr_invf_mode_vec[i],
                                SI_SBR_INVF_MODE_BITS);
    }

     /* sbrEnvDataRight->sbr_invf_mode_vec[] */
     
    for (i = 0; i < sbrEnvDataRight->noOfnoisebands; i++) {

       
      payloadBits += WriteBits (hBitStream, sbrEnvDataRight->sbr_invf_mode_vec[i],
                                SI_SBR_INVF_MODE_BITS);
    }



     
    payloadBits += writeEnvelopeData  (sbrEnvDataLeft,  hBitStream,0);

     
    payloadBits += writeEnvelopeData  (sbrEnvDataRight, hBitStream,0);

     
    payloadBits += writeNoiseLevelData (sbrEnvDataLeft,  hBitStream,0);

     
    payloadBits += writeNoiseLevelData (sbrEnvDataRight, hBitStream,0);


     
    payloadBits += writeSyntheticCodingData (sbrEnvDataLeft,hBitStream);

     
    payloadBits += writeSyntheticCodingData (sbrEnvDataRight,hBitStream);

  } /* coupling */



  

  return payloadBits;
}