Exemplo n.º 1
0
INT dabWrite_Init(HANDLE_DAB hDab, CODER_CONFIG *config)
{
  /* Sanity checks */
	if((int)config->aot > 4
    || (int)config->aot < 1 ) {
    return -1;
  }

  /* Sanity checks DAB-specific */
  if ( !(config->nSubFrames == 2 && config->samplingRate == 16000 && (config->flags & CC_SBR)) &&
	   !(config->nSubFrames == 3 && config->samplingRate == 24000 && (config->flags & CC_SBR)) &&
	   !(config->nSubFrames == 4 && config->samplingRate == 32000) &&
	   !(config->nSubFrames == 6 && config->samplingRate == 48000)) {
	  return -1;
  }

  hDab->dac_rate = 0;
  hDab->aac_channel_mode=0;
  hDab->sbr_flag = 0;
  hDab->ps_flag = 0;
  hDab->mpeg_surround_config=0;
  hDab->subchannels_num=config->bitRate/8000;


  if(config->samplingRate == 24000 || config->samplingRate == 48000)
	  hDab->dac_rate = 1;

  if (config->extAOT==AOT_SBR || config->extAOT == AOT_PS)
	  hDab->sbr_flag = 1;

  if(config->extAOT == AOT_PS)
	  hDab->ps_flag = 1;


  if(config->channelMode == MODE_2)
	  hDab->aac_channel_mode =  1;

  fprintf(stderr, "hDab->dac_rate=%d\n", hDab->dac_rate);
  fprintf(stderr, "hDab->sbr_flag=%d\n", hDab->sbr_flag);
  fprintf(stderr, "hDab->ps_flag=%d\n", hDab->ps_flag);
  fprintf(stderr, "hDab->aac_channel_mode=%d\n", hDab->aac_channel_mode);
  fprintf(stderr, "hDab->subchannels_num=%d\n", hDab->subchannels_num);
  fprintf(stderr, "cc->nSubFrames=%d\n", config->nSubFrames);

  hDab->num_raw_blocks=config->nSubFrames-1; /* 0 means 1 raw data block */

  FDKcrcInit(&hDab->crcInfo, 0x1021, 0xFFFF, 16);
  FDKcrcInit(&hDab->crcFire, 0x782d, 0, 16);
  FDKcrcInit(&hDab->crcInfo2, 0x8005, 0xFFFF, 16);

  hDab->currentBlock = 0;
  hDab->headerBits = dabWrite_GetHeaderBits(hDab);

  return 0;
}
INT  FDKsbrEnc_InitSbrBitstream(HANDLE_COMMON_DATA  hCmonData,
                                UCHAR              *memoryBase,      /*!< Pointer to bitstream buffer */
                                INT                 memorySize,      /*!< Length of bitstream buffer in bytes */
                                HANDLE_FDK_CRCINFO  hCrcInfo,
                                UINT                sbrSyntaxFlags)  /*!< SBR syntax flags */
{
  INT crcRegion = 0;

  /* reset bit buffer */
  FDKresetBitbuffer(&hCmonData->sbrBitbuf, BS_WRITER);

  FDKinitBitStream(&hCmonData->tmpWriteBitbuf, memoryBase,
                   memorySize, 0, BS_WRITER);

  if (sbrSyntaxFlags & SBR_SYNTAX_CRC) {
    if (sbrSyntaxFlags & SBR_SYNTAX_DRM_CRC)
    { /* Init and start CRC region */
      FDKwriteBits (&hCmonData->sbrBitbuf, 0x0, SI_SBR_DRM_CRC_BITS);
      FDKcrcInit( hCrcInfo, 0x001d, 0xFFFF, SI_SBR_DRM_CRC_BITS );
      crcRegion = FDKcrcStartReg( hCrcInfo, &hCmonData->sbrBitbuf, 0 );
    } else {
      FDKwriteBits (&hCmonData->sbrBitbuf, 0x0, SI_SBR_CRC_BITS);
    }
  }

  return (crcRegion);
}
Exemplo n.º 3
0
/*
 * Read the extension for height info.
 * return 0 if successfull or -1 if the CRC failed.
 */
static
int CProgramConfig_ReadHeightExt(
                                  CProgramConfig *pPce,
                                  HANDLE_FDK_BITSTREAM bs,
                                  int * const bytesAvailable,
                                  const UINT alignmentAnchor
                                )
{
  int err = 0;
  FDK_CRCINFO crcInfo;    /* CRC state info */
  INT crcReg;
  FDKcrcInit(&crcInfo, 0x07, 0xFF, 8);
  crcReg = FDKcrcStartReg(&crcInfo, bs, 0);
  UINT startAnchor = FDKgetValidBits(bs);

  FDK_ASSERT(pPce != NULL);
  FDK_ASSERT(bs != NULL);
  FDK_ASSERT(bytesAvailable != NULL);

  if ( (startAnchor >= 24) && (*bytesAvailable >= 3)
    && (FDKreadBits(bs,8) == PCE_HEIGHT_EXT_SYNC) )
  {
    int i;

    for (i=0; i < pPce->NumFrontChannelElements; i++)
    {
      pPce->FrontElementHeightInfo[i] = (UCHAR) FDKreadBits(bs,2);
    }
    for (i=0; i < pPce->NumSideChannelElements; i++)
    {
      pPce->SideElementHeightInfo[i] = (UCHAR) FDKreadBits(bs,2);
    }
    for (i=0; i < pPce->NumBackChannelElements; i++)
    {
      pPce->BackElementHeightInfo[i] = (UCHAR) FDKreadBits(bs,2);
    }
    FDKbyteAlign(bs, alignmentAnchor);

    FDKcrcEndReg(&crcInfo, bs, crcReg);
    if ((USHORT)FDKreadBits(bs,8) != FDKcrcGetCRC(&crcInfo)) {
      /* CRC failed */
      err = -1;
    }
  }
  else {
    /* No valid extension data found -> restore the initial bitbuffer state */
    FDKpushBack(bs, startAnchor - FDKgetValidBits(bs));
  }

  /* Always report the bytes read. */
  *bytesAvailable -= (startAnchor - FDKgetValidBits(bs)) >> 3;

  return (err);
}
Exemplo n.º 4
0
INT adtsWrite_Init(HANDLE_ADTS hAdts, CODER_CONFIG *config)
{
  /* Sanity checks */
  if ( config->nSubFrames < 1
    || config->nSubFrames > 4
    || (int)config->aot > 4
    || (int)config->aot < 1 ) {
    return -1;
  }

  /* fixed header */
  if (config->flags & CC_MPEG_ID) {
    hAdts->mpeg_id = 0; /* MPEG 4 */
  } else {
    hAdts->mpeg_id = 1; /* MPEG 2 */
  }
  hAdts->layer=0;
  hAdts->protection_absent = ! (config->flags & CC_PROTECTION);
  hAdts->profile = ((int)config->aot) - 1;
  hAdts->sample_freq_index = getSamplingRateIndex(config->samplingRate);
  hAdts->sample_freq = config->samplingRate;
  hAdts->private_bit=0;
  hAdts->channel_mode = config->channelMode;
  hAdts->original=0;
  hAdts->home=0;
  /* variable header */
  hAdts->copyright_id=0;
  hAdts->copyright_start=0;

  hAdts->num_raw_blocks=config->nSubFrames-1; /* 0 means 1 raw data block */

  FDKcrcInit(&hAdts->crcInfo, 0x8005, 0xFFFF, 16);

  hAdts->currentBlock = 0;


  return 0;
}
Exemplo n.º 5
0
void adtsRead_CrcInit(HANDLE_ADTS pAdts) /*!< pointer to adts crc info stucture */
{
  FDKcrcInit(&pAdts->crcInfo, 0x8005, 0xFFFF, 16);
}