Ignore:
Timestamp:
23 May 2013, 15:40:36 (12 years ago)
Author:
tech
Message:

Integrated 3D encoder control, camera parameters, renderer and MV fixes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-DEV-0.2-dev/source/Lib/TLibEncoder/SEIwrite.cpp

    r362 r438  
    8484    fprintf( g_hTrace, "=========== Decoding Unit Information SEI message ===========\n");
    8585    break;
    86 #if J0149_TONE_MAPPING_SEI
    87   case SEI::TONE_MAPPING_INFO:
    88     fprintf( g_hTrace, "=========== Tone Mapping Info SEI message ===========\n");
    89     break;
    90 #endif
    91 #if L0208_SOP_DESCRIPTION_SEI
    92   case SEI::SOP_DESCRIPTION:
    93     fprintf( g_hTrace, "=========== SOP Description SEI message ===========\n");
    94     break;
    95 #endif
    96 #if K0180_SCALABLE_NESTING_SEI
    97   case SEI::SCALABLE_NESTING:
    98     fprintf( g_hTrace, "=========== Scalable Nesting SEI message ===========\n");
    99     break;
    100 #endif
    10186  default:
    10287    fprintf( g_hTrace, "=========== Unknown SEI message ===========\n");
     
    10691#endif
    10792
    108 #if K0180_SCALABLE_NESTING_SEI
    109 void SEIWriter::xWriteSEIpayloadData(TComBitIf& bs, const SEI& sei, TComSPS *sps)
    110 #else
    11193void SEIWriter::xWriteSEIpayloadData(const SEI& sei, TComSPS *sps)
    112 #endif
    11394{
    11495  switch (sei.payloadType())
     
    147128    xWriteSEIGradualDecodingRefreshInfo(*static_cast<const SEIGradualDecodingRefreshInfo*>(&sei));
    148129    break;
    149 #if J0149_TONE_MAPPING_SEI
    150   case SEI::TONE_MAPPING_INFO:
    151     xWriteSEIToneMappingInfo(*static_cast<const SEIToneMappingInfo*>(&sei));
    152     break;
    153 #endif
    154 #if L0208_SOP_DESCRIPTION_SEI
    155   case SEI::SOP_DESCRIPTION:
    156     xWriteSEISOPDescription(*static_cast<const SEISOPDescription*>(&sei));
    157     break;
    158 #endif
    159 #if K0180_SCALABLE_NESTING_SEI
    160   case SEI::SCALABLE_NESTING:
    161     xWriteSEIScalableNesting(bs, *static_cast<const SEIScalableNesting*>(&sei), sps);
    162     break;
    163 #endif
    164130  default:
    165131    assert(!"Unhandled SEI message");
     
    179145  setBitstream(&bs_count);
    180146
    181 
    182 #if K0180_SCALABLE_NESTING_SEI
    183 
    184 #if ENC_DEC_TRACE
    185   Bool traceEnable = g_HLSTraceEnable;
    186   g_HLSTraceEnable = false;
    187 #endif
    188   xWriteSEIpayloadData(bs_count, sei, sps);
    189 #if ENC_DEC_TRACE
    190   g_HLSTraceEnable = traceEnable;
    191 #endif
    192 
    193 #else
    194 
    195147#if ENC_DEC_TRACE
    196148  g_HLSTraceEnable = false;
     
    200152  g_HLSTraceEnable = true;
    201153#endif
    202 
    203 #endif
    204 
    205154  UInt payload_data_num_bits = bs_count.getNumberOfWrittenBits();
    206155  assert(0 == payload_data_num_bits % 8);
     
    209158
    210159#if ENC_DEC_TRACE
    211 #if K0180_SCALABLE_NESTING_SEI
    212   if (g_HLSTraceEnable)
    213 #endif
    214160  xTraceSEIHeader();
    215161#endif
     
    231177  /* payloadData */
    232178#if ENC_DEC_TRACE
    233 #if K0180_SCALABLE_NESTING_SEI
    234   if (g_HLSTraceEnable)
    235 #endif
    236179  xTraceSEIMessageType(sei.payloadType());
    237180#endif
    238181
    239 #if K0180_SCALABLE_NESTING_SEI
    240   xWriteSEIpayloadData(bs, sei, sps);
    241 #else
    242182  xWriteSEIpayloadData(sei, sps);
    243 #endif
    244183}
    245184
     
    482421  xWriteByteAlign();
    483422}
    484 
    485 #if J0149_TONE_MAPPING_SEI
    486 Void SEIWriter::xWriteSEIToneMappingInfo(const SEIToneMappingInfo& sei)
    487 {
    488   Int i;
    489   WRITE_UVLC( sei.m_toneMapId,                    "tone_map_id" );
    490   WRITE_FLAG( sei.m_toneMapCancelFlag,            "tone_map_cancel_flag" );
    491   if( !sei.m_toneMapCancelFlag )
    492   {
    493     WRITE_FLAG( sei.m_toneMapPersistenceFlag,     "tone_map_persistence_flag" );
    494     WRITE_CODE( sei.m_codedDataBitDepth,    8,    "coded_data_bit_depth" );
    495     WRITE_CODE( sei.m_targetBitDepth,       8,    "target_bit_depth" );
    496     WRITE_UVLC( sei.m_modelId,                    "model_id" );
    497     switch(sei.m_modelId)
    498     {
    499     case 0:
    500       {
    501         WRITE_CODE( sei.m_minValue,  32,        "min_value" );
    502         WRITE_CODE( sei.m_maxValue, 32,         "max_value" );
    503         break;
    504       }
    505     case 1:
    506       {
    507         WRITE_CODE( sei.m_sigmoidMidpoint, 32,  "sigmoid_midpoint" );
    508         WRITE_CODE( sei.m_sigmoidWidth,    32,  "sigmoid_width"    );
    509         break;
    510       }
    511     case 2:
    512       {
    513         UInt num = 1u << sei.m_targetBitDepth;
    514         for(i = 0; i < num; i++)
    515         {
    516           WRITE_CODE( sei.m_startOfCodedInterval[i], (( sei.m_codedDataBitDepth + 7 ) >> 3 ) << 3,  "start_of_coded_interval" );
    517         }
    518         break;
    519       }
    520     case 3:
    521       {
    522         WRITE_CODE( sei.m_numPivots, 16,          "num_pivots" );
    523         for(i = 0; i < sei.m_numPivots; i++ )
    524         {
    525           WRITE_CODE( sei.m_codedPivotValue[i], (( sei.m_codedDataBitDepth + 7 ) >> 3 ) << 3,       "coded_pivot_value" );
    526           WRITE_CODE( sei.m_targetPivotValue[i], (( sei.m_targetBitDepth + 7 ) >> 3 ) << 3,         "target_pivot_value");
    527         }
    528         break;
    529       }
    530     case 4:
    531       {
    532         WRITE_CODE( sei.m_cameraIsoSpeedIdc,    8,    "camera_iso_speed_idc" );
    533         if( sei.m_cameraIsoSpeedIdc == 255) //Extended_ISO
    534         {
    535           WRITE_CODE( sei.m_cameraIsoSpeedValue,    32,    "camera_iso_speed_value" );
    536         }
    537         WRITE_FLAG( sei.m_exposureCompensationValueSignFlag,           "exposure_compensation_value_sign_flag" );
    538         WRITE_CODE( sei.m_exposureCompensationValueNumerator,     16,  "exposure_compensation_value_numerator" );
    539         WRITE_CODE( sei.m_exposureCompensationValueDenomIdc,      16,  "exposure_compensation_value_denom_idc" );
    540         WRITE_CODE( sei.m_refScreenLuminanceWhite,                32,  "ref_screen_luminance_white" );
    541         WRITE_CODE( sei.m_extendedRangeWhiteLevel,                32,  "extended_range_white_level" );
    542         WRITE_CODE( sei.m_nominalBlackLevelLumaCodeValue,         16,  "nominal_black_level_luma_code_value" );
    543         WRITE_CODE( sei.m_nominalWhiteLevelLumaCodeValue,         16,  "nominal_white_level_luma_code_value" );
    544         WRITE_CODE( sei.m_extendedWhiteLevelLumaCodeValue,        16,  "extended_white_level_luma_code_value" );
    545         break;
    546       }
    547     default:
    548       {
    549         assert(!"Undefined SEIToneMapModelId");
    550         break;
    551       }
    552     }//switch m_modelId
    553   }//if(!sei.m_toneMapCancelFlag)
    554 
    555   xWriteByteAlign();
    556 }
    557 #endif
    558 
    559423Void SEIWriter::xWriteSEIDisplayOrientation(const SEIDisplayOrientation &sei)
    560424{
     
    591455}
    592456
    593 #if L0208_SOP_DESCRIPTION_SEI
    594 Void SEIWriter::xWriteSEISOPDescription(const SEISOPDescription& sei)
    595 {
    596   WRITE_UVLC( sei.m_sopSeqParameterSetId,           "sop_seq_parameter_set_id"               );
    597   WRITE_UVLC( sei.m_numPicsInSopMinus1,             "num_pics_in_sop_minus1"               );
    598   for (UInt i = 0; i <= sei.m_numPicsInSopMinus1; i++)
    599   {
    600     WRITE_CODE( sei.m_sopDescVclNaluType[i], 6, "sop_desc_vcl_nalu_type" );
    601     WRITE_CODE( sei.m_sopDescTemporalId[i],  3, "sop_desc_temporal_id" );
    602     if (sei.m_sopDescVclNaluType[i] != NAL_UNIT_CODED_SLICE_IDR_W_RADL && sei.m_sopDescVclNaluType[i] != NAL_UNIT_CODED_SLICE_IDR_N_LP)
    603     {
    604       WRITE_UVLC( sei.m_sopDescStRpsIdx[i],           "sop_desc_st_rps_idx"               );
    605     }
    606     if (i > 0)
    607     {
    608       WRITE_SVLC( sei.m_sopDescPocDelta[i],           "sop_desc_poc_delta"               );
    609     }
    610   }
    611 
    612   xWriteByteAlign();
    613 }
    614 #endif
    615 
    616 #if K0180_SCALABLE_NESTING_SEI
    617 Void SEIWriter::xWriteSEIScalableNesting(TComBitIf& bs, const SEIScalableNesting& sei, TComSPS *sps)
    618 {
    619   WRITE_FLAG( sei.m_bitStreamSubsetFlag,             "bitstream_subset_flag"         );
    620   WRITE_FLAG( sei.m_nestingOpFlag,                   "nesting_op_flag      "         );
    621   if (sei.m_nestingOpFlag)
    622   {
    623     WRITE_FLAG( sei.m_defaultOpFlag,                 "default_op_flag"               );
    624     WRITE_UVLC( sei.m_nestingNumOpsMinus1,           "nesting_num_ops"               );
    625     for (UInt i = (sei.m_defaultOpFlag ? 1 : 0); i <= sei.m_nestingNumOpsMinus1; i++)
    626     {
    627       WRITE_CODE( sei.m_nestingNoOpMaxTemporalIdPlus1, 3, "nesting_no_op_max_temporal_id" );
    628       WRITE_CODE( sei.m_nestingMaxTemporalIdPlus1[i], 3,  "nesting_max_temporal_id"       );
    629       WRITE_UVLC( sei.m_nestingOpIdx[i],                  "nesting_op_idx"                );
    630     }
    631   }
    632   else
    633   {
    634     WRITE_FLAG( sei.m_allLayersFlag,                      "all_layers_flag"               );
    635     if (!sei.m_allLayersFlag)
    636     {
    637       WRITE_CODE( sei.m_nestingNoOpMaxTemporalIdPlus1, 3, "nesting_no_op_max_temporal_id" );
    638       WRITE_UVLC( sei.m_nestingNumLayersMinus1,           "nesting_num_layers"            );
    639       for (UInt i = 0; i <= sei.m_nestingNumLayersMinus1; i++)
    640       {
    641         WRITE_CODE( sei.m_nestingLayerId[i], 6,           "nesting_layer_id"              );
    642       }
    643     }
    644   }
    645  
    646   // byte alignment
    647   while ( m_pcBitIf->getNumberOfWrittenBits() % 8 != 0 )
    648   {
    649     WRITE_FLAG( 0, "nesting_zero_bit" );
    650   }
    651 
    652   // write nested SEI messages
    653   for (SEIMessages::const_iterator it = sei.m_nestedSEIs.begin(); it != sei.m_nestedSEIs.end(); it++)
    654   {
    655     writeSEImessage(bs, *(*it), sps);
    656   }
    657 }
    658 #endif
    659 
    660457Void SEIWriter::xWriteByteAlign()
    661458{
Note: See TracChangeset for help on using the changeset viewer.