Skip to content
Snippets Groups Projects
VLCWriter.cpp 85.1 KiB
Newer Older
  • Learn to ignore specific revisions
  •   {
        uiThresh = g_tbMax[uiMaxSymbol];
      }
    
      int uiVal = 1 << uiThresh;
      assert( uiVal <= uiMaxSymbol );
      assert( ( uiVal << 1 ) > uiMaxSymbol );
      assert( uiSymbol < uiMaxSymbol );
      int b = uiMaxSymbol - uiVal;
      assert( b < uiVal );
      if( uiSymbol < uiVal - b )
      {
        xWriteCode( uiSymbol, uiThresh );
      }
      else
      {
        uiSymbol += uiVal - b;
        assert( uiSymbol < ( uiVal << 1 ) );
        assert( ( uiSymbol >> 1 ) >= uiVal - b );
        xWriteCode( uiSymbol, uiThresh + 1 );
      }
    }
    
    void HLSWriter::truncatedUnaryEqProb( int symbol, const int maxSymbol )
    {
      if( maxSymbol == 0 )
      {
        return;
      }
    
      bool codeLast = ( maxSymbol > symbol );
      int bins = 0;
      int numBins = 0;
    
      while( symbol-- )
      {
        bins <<= 1;
        bins++;
        numBins++;
      }
      if( codeLast )
      {
        bins <<= 1;
        numBins++;
      }
      CHECK( !( numBins <= 32 ), "Unspecified error" );
      xWriteCode( bins, numBins );
    }
    
    //! \}