Changeset 1442 in SHVCSoftware for branches/SHM-dev/source/App


Ignore:
Timestamp:
13 Aug 2015, 19:11:53 (9 years ago)
Author:
seregin
Message:

port rev 4590

Location:
branches/SHM-dev/source/App
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-dev/source/App/TAppDecoder/TAppDecCfg.cpp

    r1377 r1442  
    6363    \param argv array of arguments
    6464 */
    65 Bool TAppDecCfg::parseCfg( Int argc, Char* argv[] )
     65Bool TAppDecCfg::parseCfg( Int argc, TChar* argv[] )
    6666{
    6767  Bool do_help = false;
    68   string cfg_BitstreamFile;
    69 #if SVC_EXTENSION
    70   string cfg_ReconFile [MAX_LAYERS];
     68#if SVC_EXTENSION 
    7169  Int layerNum, targetLayerId;
    7270  Int olsIdx;
     
    7472  string cfg_confPrefix;
    7573#endif
    76 #if AVC_BASE
    77   string cfg_BLReconFile;
    78 #endif
    79 #else
    80   string cfg_ReconFile;
    8174#endif
    8275
     
    9083
    9184  ("help",                      do_help,                               false,      "this help text")
    92   ("BitstreamFile,b",           cfg_BitstreamFile,                     string(""), "bitstream input file name")
    93 #if SVC_EXTENSION
    94   ("ReconFileL%d,-o%d",                   cfg_ReconFile,   string(""), MAX_LAYERS, "Layer %d reconstructed YUV output file name\n"
     85  ("BitstreamFile,b",           m_bitstreamFileName,                   string(""), "bitstream input file name")
     86#if SVC_EXTENSION
     87  ("ReconFileL%d,-o%d",                 m_reconFileName,   string(""), MAX_LAYERS, "Layer %d reconstructed YUV output file name\n"
    9588                                                                                   "YUV writing is skipped if omitted")
    9689#if AVC_BASE
    97   ("BLReconFile,-ibl",                               cfg_BLReconFile, string(""), "BL reconstructed YUV input file name")
     90  ("BLReconFile,-ibl",                              m_reconFileNameBL, string(""), "BL reconstructed YUV input file name")
    9891#endif
    9992  ("TargetLayerId,-lid",                                        targetLayerId, -1, "Target layer id")
     
    10598#endif
    10699#else
    107   ("ReconFile,o",               cfg_ReconFile,                         string(""), "reconstructed YUV output file name\n"
     100  ("ReconFile,o",               m_reconFileName,                       string(""), "reconstructed YUV output file name\n"
    108101                                                                                   "YUV writing is skipped if omitted")
    109102#endif
     
    134127  po::setDefaults(opts);
    135128  po::ErrorReporter err;
    136   const list<const Char*>& argv_unhandled = po::scanArgv(opts, argc, (const Char**) argv, err);
    137 
    138   for (list<const Char*>::const_iterator it = argv_unhandled.begin(); it != argv_unhandled.end(); it++)
     129  const list<const TChar*>& argv_unhandled = po::scanArgv(opts, argc, (const TChar**) argv, err);
     130
     131  for (list<const TChar*>::const_iterator it = argv_unhandled.begin(); it != argv_unhandled.end(); it++)
    139132  {
    140133    fprintf(stderr, "Unhandled argument ignored: `%s'\n", *it);
     
    163156  }
    164157
    165   /* convert std::string to c string for compatability */
    166   m_pchBitstreamFile = cfg_BitstreamFile.empty() ? NULL : strdup(cfg_BitstreamFile.c_str());
    167158#if SVC_EXTENSION
    168159  if( targetLayerId < 0 )
     
    204195  m_commonDecoderParams.setTargetOutputLayerSetIdx( olsIdx );
    205196  m_commonDecoderParams.setTargetLayerId( targetLayerId );
    206 
    207 #if CONFORMANCE_BITSTREAM_MODE
    208   for(Int layer = 0; layer < MAX_VPS_LAYER_IDX_PLUS1; layer++ )
    209   {
    210 #else
    211   for(UInt layer=0; layer<= m_tgtLayerId; layer++)
    212   {
    213     assert( layer < MAX_LAYERS );
    214 #endif
    215     m_pchReconFile[layer] = cfg_ReconFile[layer].empty() ? NULL : strdup(cfg_ReconFile[layer].c_str());
    216   }
    217 #if AVC_BASE
    218   m_pchBLReconFile = cfg_BLReconFile.empty() ? NULL : strdup(cfg_BLReconFile.c_str());
    219 #endif
    220 #else
    221   m_pchReconFile = cfg_ReconFile.empty() ? NULL : strdup(cfg_ReconFile.c_str());
    222 #endif
    223 
    224   if (!m_pchBitstreamFile)
     197#endif
     198
     199  if (m_bitstreamFileName.empty())
    225200  {
    226201    fprintf(stderr, "No input file specified, aborting\n");
  • branches/SHM-dev/source/App/TAppDecoder/TAppDecCfg.h

    r1323 r1442  
    5757{
    5858protected:
    59   Char*         m_pchBitstreamFile;                     ///< input bitstream file name
     59  std::string   m_bitstreamFileName;                    ///< input bitstream file name
    6060#if SVC_EXTENSION
    61   Char*         m_pchReconFile [MAX_LAYERS];          ///< output reconstruction file name
     61  std::string   m_reconFileName[MAX_LAYERS];            ///< output reconstruction file name
    6262#else
    63   Char*         m_pchReconFile;                         ///< output reconstruction file name
     63  std::string   m_reconFileName;                        ///< output reconstruction file name
    6464#endif
    6565  Int           m_iSkipFrame;                           ///< counter for frames prior to the random access point to skip
     
    8484#if SVC_EXTENSION
    8585#if AVC_BASE
    86   Char*         m_pchBLReconFile;                     ///< input BL reconstruction file name
     86  std::string   m_reconFileNameBL;                     ///< input BL reconstruction file name
    8787#endif
    8888  CommonDecoderParams             m_commonDecoderParams;
     
    9999public:
    100100  TAppDecCfg()
    101   : m_pchBitstreamFile(NULL)
     101  : m_bitstreamFileName()
    102102#if !SVC_EXTENSION
    103   , m_pchReconFile(NULL)
     103  , m_reconFileName()
    104104#endif
    105105  , m_iSkipFrame(0)
     106  // m_outputBitDepth array initialised below
    106107  , m_outputColourSpaceConvert(IPCOLOURSPACE_UNCHANGED)
    107108  , m_iMaxTemporalLayer(-1)
    108109  , m_decodedPictureHashSEIEnabled(0)
    109110  , m_decodedNoDisplaySEIEnabled(false)
     111  , m_targetDecLayerIdSet()
    110112#if Q0074_COLOUR_REMAPPING_SEI
    111113  , m_colourRemapSEIEnabled(0)
     
    115117  , m_forceDecodeBitDepth(0)
    116118#endif
     119  , m_outputDecodedSEIMessagesFilename()
     120  , m_bClipOutputVideoToRec709Range(false)
    117121  {
    118122    for (UInt channelTypeIndex = 0; channelTypeIndex < MAX_NUM_CHANNEL_TYPE; channelTypeIndex++)
     
    124128  virtual ~TAppDecCfg() {}
    125129
    126   Bool  parseCfg        ( Int argc, Char* argv[] );   ///< initialize option class from configuration
     130  Bool  parseCfg        ( Int argc, TChar* argv[] );   ///< initialize option class from configuration
    127131
    128132#if SVC_EXTENSION
  • branches/SHM-dev/source/App/TAppDecoder/TAppDecTop.cpp

    r1420 r1442  
    9090Void TAppDecTop::destroy()
    9191{
    92   if (m_pchBitstreamFile)
    93   {
    94     free (m_pchBitstreamFile);
    95     m_pchBitstreamFile = NULL;
    96   }
     92  m_bitstreamFileName.clear();
    9793#if SVC_EXTENSION
    9894#if CONFORMANCE_BITSTREAM_MODE
     
    10298#endif
    10399  {
    104     if( m_pchReconFile[i] )
    105     {
    106       free ( m_pchReconFile[i] );
    107       m_pchReconFile[i] = NULL;
    108     }
     100    m_reconFileName[i].clear();
    109101
    110102    if( m_apcTDecTop[i] )
     
    121113  }
    122114#if AVC_BASE
    123   if( m_pchBLReconFile )
    124   {
    125     free ( m_pchBLReconFile );
    126     m_pchBLReconFile = NULL;
    127   }
    128 #endif
    129 #else
    130   if (m_pchReconFile)
    131   {
    132     free (m_pchReconFile);
    133     m_pchReconFile = NULL;
    134   }
     115  m_reconFileNameBL.clear();
     116#endif
     117#else
     118  m_reconFileName.clear();
    135119#endif
    136120#if Q0074_COLOUR_REMAPPING_SEI
     
    160144  TComList<TComPic*>* pcListPic = NULL;
    161145
    162   ifstream bitstreamFile(m_pchBitstreamFile, ifstream::in | ifstream::binary);
     146  ifstream bitstreamFile(m_bitstreamFileName.c_str(), ifstream::in | ifstream::binary);
    163147  if (!bitstreamFile)
    164148  {
    165     fprintf(stderr, "\nfailed to open bitstream file `%s' for reading\n", m_pchBitstreamFile);
     149    fprintf(stderr, "\nfailed to open bitstream file `%s' for reading\n", m_bitstreamFileName.c_str());
    166150    exit(EXIT_FAILURE);
    167151  }
     
    203187  TComPic pcBLPic;
    204188  fstream streamYUV;
    205   if( m_pchBLReconFile )
    206   {
    207     streamYUV.open( m_pchBLReconFile, fstream::in | fstream::binary );
     189  if( !m_reconFileNameBL.empty() )
     190  {
     191    streamYUV.open( m_reconFileNameBL, fstream::in | fstream::binary );
    208192  }
    209193  TComList<TComPic*> *cListPic = m_apcTDecTop[0]->getListPic();
     
    329313    if( pcListPic )
    330314    {
    331       if ( m_pchReconFile[curLayerId] && !openedReconFile[curLayerId] )
     315      if ( !m_reconFileName[curLayerId].empty() && !openedReconFile[curLayerId] )
    332316      {
    333317        const BitDepths &bitDepths=pcListPic->front()->getSlice(0)->getBitDepths(); // use bit depths of first reconstructed picture.
     
    339323          }
    340324        }
    341         m_apcTVideoIOYuvReconFile[curLayerId]->open( m_pchReconFile[curLayerId], true, m_outputBitDepth, m_outputBitDepth, bitDepths.recon ); // write mode
     325        m_apcTVideoIOYuvReconFile[curLayerId]->open( m_reconFileName[curLayerId], true, m_outputBitDepth, m_outputBitDepth, bitDepths.recon ); // write mode
    342326
    343327        openedReconFile[curLayerId] = true;
     
    442426  TComList<TComPic*>* pcListPic = NULL;
    443427
    444   ifstream bitstreamFile(m_pchBitstreamFile, ifstream::in | ifstream::binary);
     428  ifstream bitstreamFile(m_bitstreamFileName.c_str(), ifstream::in | ifstream::binary);
    445429  if (!bitstreamFile)
    446430  {
    447     fprintf(stderr, "\nfailed to open bitstream file `%s' for reading\n", m_pchBitstreamFile);
     431    fprintf(stderr, "\nfailed to open bitstream file `%s' for reading\n", m_bitstreamFileName.c_str());
    448432    exit(EXIT_FAILURE);
    449433  }
     
    548532    if( pcListPic )
    549533    {
    550       if ( m_pchReconFile && !openedReconFile )
     534      if ( (!m_reconFileName.empty()) && (!openedReconFile) )
    551535      {
    552536        const BitDepths &bitDepths=pcListPic->front()->getPicSym()->getSPS().getBitDepths(); // use bit depths of first reconstructed picture.
     
    559543        }
    560544
    561         m_cTVideoIOYuvReconFile.open( m_pchReconFile, true, m_outputBitDepth, m_outputBitDepth, bitDepths.recon ); // write mode
     545        m_cTVideoIOYuvReconFile.open( m_reconFileName, true, m_outputBitDepth, m_outputBitDepth, bitDepths.recon ); // write mode
    562546        openedReconFile = true;
    563547      }
     
    648632#endif
    649633  {
    650     if ( m_pchReconFile[layer] )
     634    if ( !m_reconFileName[layer].empty() )
    651635    {
    652636      m_apcTVideoIOYuvReconFile[layer]->close();
     
    657641  }
    658642#else
    659   if ( m_pchReconFile )
    660   {
    661     m_cTVideoIOYuvReconFile. close();
     643  if ( !m_reconFileName.empty() )
     644  {
     645    m_cTVideoIOYuvReconFile.close();
    662646  }
    663647
     
    792776        numPicsNotYetDisplayed = numPicsNotYetDisplayed-2;
    793777#if SVC_EXTENSION
    794         if ( m_pchReconFile[layerId] )
     778        if ( !m_reconFileName[layerId].empty() )
    795779        {
    796780          const Window &conf = pcPicTop->getConformanceWindow();
     
    826810        m_aiPOCLastDisplay[layerId] = pcPicBottom->getPOC();
    827811#else
    828         if ( m_pchReconFile )
     812        if ( !m_reconFileName.empty() )
    829813        {
    830814          const Window &conf = pcPicTop->getConformanceWindow();
     
    901885        }
    902886#if SVC_EXTENSION
    903         if( m_pchReconFile[layerId] )
     887        if ( !m_reconFileName[layerId].empty() )
    904888        {
    905889          const Window &conf = pcPic->getConformanceWindow();
     
    920904        m_aiPOCLastDisplay[layerId] = pcPic->getPOC();
    921905#else
    922         if ( m_pchReconFile )
     906        if ( !m_reconFileName.empty() )
    923907        {
    924908          const Window &conf    = pcPic->getConformanceWindow();
     
    10241008        // write to file
    10251009#if SVC_EXTENSION
    1026         if ( m_pchReconFile[layerId] )
     1010        if ( !m_reconFileName[layerId].empty() )
    10271011        {
    10281012          const Window &conf = pcPicTop->getConformanceWindow();
     
    10431027        m_aiPOCLastDisplay[layerId] = pcPicBottom->getPOC();
    10441028#else
    1045         if ( m_pchReconFile )
     1029        if ( !m_reconFileName.empty() )
    10461030        {
    10471031          const Window &conf = pcPicTop->getConformanceWindow();
     
    11031087        // write to file
    11041088#if SVC_EXTENSION
    1105         if ( m_pchReconFile[layerId] )
     1089        if ( !m_reconFileName[layerId].empty() )
    11061090        {
    11071091          const Window &conf = pcPic->getConformanceWindow();
     
    11231107        m_aiPOCLastDisplay[layerId] = pcPic->getPOC();
    11241108#else
    1125         if ( m_pchReconFile )
     1109        if ( !m_reconFileName.empty() )
    11261110        {
    11271111          const Window &conf    = pcPic->getConformanceWindow();
     
    12341218#if ALIGNED_BUMPING
    12351219// Function outputs a picture, and marks it as not needed for output.
    1236 Void TAppDecTop::xOutputAndMarkPic( TComPic *pic, const Char *reconFile, const Int layerId, Int &pocLastDisplay, DpbStatus &dpbStatus )
    1237 {
    1238   if ( reconFile )
     1220Void TAppDecTop::xOutputAndMarkPic( TComPic *pic, std::string& reconFileName, const Int layerId, Int &pocLastDisplay, DpbStatus &dpbStatus )
     1221{
     1222  if( !reconFileName.empty() )
    12391223  {
    12401224    const Window &conf = pic->getConformanceWindow();
     
    14881472      TComPic *pic = *iterPic;
    14891473
    1490       xOutputAndMarkPic( pic, m_pchReconFile[layerId], layerId, m_aiPOCLastDisplay[layerId], dpbStatus );
     1474      xOutputAndMarkPic( pic, m_reconFileName[layerId], layerId, m_aiPOCLastDisplay[layerId], dpbStatus );
    14911475
    14921476#if CONFORMANCE_BITSTREAM_MODE
     
    19611945
    19621946    //Write remapped picture in decoding order
    1963     Char  cTemp[255];
     1947    TChar  cTemp[255];
    19641948    sprintf(cTemp, "seiColourRemappedPic_L%d_%dx%d_%dbits.yuv", layerId, iWidth, iHeight, storeCriSEI[layerId].m_colourRemapBitDepth );
    19651949    picColourRemapped.dump( cTemp, true, storeCriSEI[layerId].m_colourRemapBitDepth );
     
    19741958    if (storeCriSEI[layerId].m_colourRemapBitDepth == 8 || storeCriSEI[layerId].m_colourRemapBitDepth == 10)
    19751959    {
    1976       Char  cTemp[255];
     1960      TChar  cTemp[255];
    19771961      sprintf(cTemp, "seiColourRemappedPic_L%d_%dx%d_%dbits.yuv", layerId, pic.getWidth(COMPONENT_Y), pic.getHeight(COMPONENT_Y), storeCriSEI[layerId].m_colourRemapBitDepth );
    19781962      pic.dump( cTemp, true, storeCriSEI[layerId].m_colourRemapBitDepth );
  • branches/SHM-dev/source/App/TAppDecoder/TAppDecTop.h

    r1378 r1442  
    136136  Void flushAllPictures(Int layerId, Bool outputPictures);
    137137
    138   Void xOutputAndMarkPic( TComPic *pic, const Char *reconFile, const Int layerId, Int &pocLastDisplay, DpbStatus &dpbStatus);
     138  Void xOutputAndMarkPic( TComPic *pic, std::string& reconFileName, const Int layerId, Int &pocLastDisplay, DpbStatus &dpbStatus);
    139139  Void outputAllPictures(Int layerId, Bool notOutputCurrAu);
    140140  Void xFindDPBStatus( std::vector<Int> &listOfPocs
  • branches/SHM-dev/source/App/TAppEncoder/TAppEncCfg.cpp

    r1441 r1442  
    110110TAppEncCfg::TAppEncCfg()
    111111#if AVC_BASE
    112 : m_nonHEVCBaseLayerFlag(0)
     112: m_nonHEVCBaseLayerFlag(false)
    113113#endif
    114114, m_maxTidRefPresentFlag(1)
    115115, m_defaultTargetOutputLayerIdc (-1)
    116116, m_numOutputLayerSets          (-1)
    117 , m_pchBitstreamFile()
    118117, m_inputColourSpaceConvert(IPCOLOURSPACE_UNCHANGED)
    119118, m_snrInternalColourSpace(false)
     
    126125#else
    127126TAppEncCfg::TAppEncCfg()
    128 : m_pchInputFile()
    129 , m_pchBitstreamFile()
    130 , m_pchReconFile()
    131 , m_inputColourSpaceConvert(IPCOLOURSPACE_UNCHANGED)
     127: m_inputColourSpaceConvert(IPCOLOURSPACE_UNCHANGED)
    132128, m_snrInternalColourSpace(false)
    133129, m_outputInternalColourSpace(false)
    134 , m_pchdQPFile()
    135 , m_scalingListFile()
    136130{
    137131  m_aidQP = NULL;
     
    164158    m_targetPivotValue = NULL;
    165159  }
    166 
    167   free(m_pchInputFile);
    168 #endif
    169   free(m_pchBitstreamFile);
    170 #if !SVC_EXTENSION 
    171   free(m_pchReconFile);
    172   free(m_pchdQPFile);
    173   free(m_scalingListFile);
    174 #endif
     160#endif 
    175161}
    176162
     
    240226}
    241227
    242 Bool confirmPara(Bool bflag, const Char* message);
     228Bool confirmPara(Bool bflag, const TChar* message);
    243229
    244230static inline ChromaFormat numberToChromaFormat(const Int val)
     
    254240}
    255241
    256 #if SVC_EXTENSION
    257 void TAppEncCfg::getDirFilename(string& filename, string& dir, const string path)
    258 {
    259   size_t pos = path.find_last_of("\\");
    260   if(pos != std::string::npos)
    261   {
    262     filename.assign(path.begin() + pos + 1, path.end());
    263     dir.assign(path.begin(), path.begin() + pos + 1);
    264   }
    265   else
    266   {
    267     pos = path.find_last_of("/");
    268     if(pos != std::string::npos)
    269     {
    270       filename.assign(path.begin() + pos + 1, path.end());
    271       dir.assign(path.begin(), path.begin() + pos + 1);
    272     }
    273     else
    274     {
    275       filename = path;
    276       dir.assign("");
    277     }
    278   }
    279 }
    280 #endif
    281 
    282242static const struct MapStrToProfile
    283243{
    284   const Char* str;
     244  const TChar* str;
    285245  Profile::Name value;
    286246}
     
    302262static const struct MapStrToExtendedProfile
    303263{
    304   const Char* str;
     264  const TChar* str;
    305265  ExtendedProfileName value;
    306266}
     
    366326static const struct MapStrToTier
    367327{
    368   const Char* str;
     328  const TChar* str;
    369329  Level::Tier value;
    370330}
     
    377337static const struct MapStrToLevel
    378338{
    379   const Char* str;
     339  const TChar* str;
    380340  Level::Name value;
    381341}
     
    410370static const struct MapStrToCostMode
    411371{
    412   const Char* str;
     372  const TChar* str;
    413373  CostMode    value;
    414374}
     
    423383static const struct MapStrToScalingListMode
    424384{
    425   const Char* str;
     385  const TChar* str;
    426386  ScalingListMode value;
    427387}
     
    526486  SMultiValueInput<T> &operator=(const SMultiValueInput<T> &userValues) { values=userValues.values; return *this; }
    527487
    528   T readValue(const Char *&pStr, Bool &bSuccess);
     488  T readValue(const TChar *&pStr, Bool &bSuccess);
    529489
    530490  istream& readValues(std::istream &in);
     
    538498
    539499template<>
    540 UInt SMultiValueInput<UInt>::readValue(const Char *&pStr, Bool &bSuccess)
     500UInt SMultiValueInput<UInt>::readValue(const TChar *&pStr, Bool &bSuccess)
    541501{
    542   Char *eptr;
     502  TChar *eptr;
    543503  UInt val=strtoul(pStr, &eptr, 0);
    544504  pStr=eptr;
     
    548508
    549509template<>
    550 Int SMultiValueInput<Int>::readValue(const Char *&pStr, Bool &bSuccess)
     510Int SMultiValueInput<Int>::readValue(const TChar *&pStr, Bool &bSuccess)
    551511{
    552   Char *eptr;
     512  TChar *eptr;
    553513  Int val=strtol(pStr, &eptr, 0);
    554514  pStr=eptr;
     
    558518
    559519template<>
    560 Double SMultiValueInput<Double>::readValue(const Char *&pStr, Bool &bSuccess)
     520Double SMultiValueInput<Double>::readValue(const TChar *&pStr, Bool &bSuccess)
    561521{
    562   Char *eptr;
     522  TChar *eptr;
    563523  Double val=strtod(pStr, &eptr);
    564524  pStr=eptr;
     
    568528
    569529template<>
    570 Bool SMultiValueInput<Bool>::readValue(const Char *&pStr, Bool &bSuccess)
     530Bool SMultiValueInput<Bool>::readValue(const TChar *&pStr, Bool &bSuccess)
    571531{
    572   Char *eptr;
     532  TChar *eptr;
    573533  Int val=strtol(pStr, &eptr, 0);
    574534  pStr=eptr;
     
    588548  if (!str.empty())
    589549  {
    590     const Char *pStr=str.c_str();
     550    const TChar *pStr=str.c_str();
    591551    // soak up any whitespace
    592552    for(;isspace(*pStr);pStr++);
     
    703663// ====================================================================================================================
    704664
    705 #if SVC_EXTENSION
    706665/** \param  argc        number of arguments
    707666    \param  argv        array of arguments
    708667    \retval             true when success
    709668 */
    710 Bool TAppEncCfg::parseCfgNumLayersAndInit( Int argc, Char* argv[] )
    711 {
    712   po::Options opts;
    713   opts.addOptions()
    714   ("c",    po::parseConfigFile, "configuration file name")
    715   ("NumLayers",                                     m_numLayers,                                             1, "Number of layers to code")
    716   ;
    717 
    718   po::setDefaults(opts);
    719   po::ErrorReporter err;
    720   err.verbose = false;
    721   po::scanArgv(opts, argc, (const Char**) argv, err);
    722 
    723   if( m_numLayers <= 0 )
    724   {
    725     printf("Wrong number of layers %d\n", m_numLayers);
    726     return false;
    727   }
    728 
    729   for( Int layer = 0; layer < m_numLayers; layer++ )
    730   {
    731     m_apcLayerCfg[layer] = new TAppEncLayerCfg;
    732     m_apcLayerCfg[layer]->setAppEncCfg(this);
    733   }
    734 
    735   return true;
    736 }
    737 #endif
    738 
    739 /** \param  argc        number of arguments
    740     \param  argv        array of arguments
    741     \retval             true when success
    742  */
    743 Bool TAppEncCfg::parseCfg( Int argc, Char* argv[] )
     669Bool TAppEncCfg::parseCfg( Int argc, TChar* argv[] )
    744670{
    745671  Bool do_help = false;
    746672 
    747 #if SVC_EXTENSION
    748   string  cfg_BitstreamFile;
    749   string* cfg_InputFile      [MAX_LAYERS];
    750   string* cfg_ReconFile      [MAX_LAYERS];
    751   Double* cfg_fQP            [MAX_LAYERS];
    752   Int*    cfg_layerId        [MAX_LAYERS];
     673#if SVC_EXTENSION 
     674  string* cfg_InputFile     [MAX_LAYERS];
     675  string* cfg_ReconFile     [MAX_LAYERS];
     676  string* cfg_dQPFileName   [MAX_LAYERS];
     677  Double* cfg_fQP           [MAX_LAYERS];
     678  Int*    cfg_layerId       [MAX_LAYERS];
    753679  Int*    cfg_repFormatIdx  [MAX_LAYERS];
    754680  Int*    cfg_SourceWidth   [MAX_LAYERS];
     
    848774  Int*    cfg_maxTidIlRefPicsPlus1[MAX_LAYERS];
    849775#if Q0074_COLOUR_REMAPPING_SEI
    850   string* cfg_colourRemapSEIFileRoot[MAX_LAYERS];
     776  string* cfg_colourRemapSEIFileName[MAX_LAYERS];
    851777#endif
    852778  Int*    cfg_waveFrontSynchro[MAX_LAYERS];
     
    861787  for( UInt layer = 0; layer < m_numLayers; layer++ )
    862788  {
    863     cfg_InputFile[layer]    = &m_apcLayerCfg[layer]->m_cInputFile;
    864     cfg_ReconFile[layer]    = &m_apcLayerCfg[layer]->m_cReconFile;
     789    cfg_InputFile[layer]    = &m_apcLayerCfg[layer]->m_inputFileName;
     790    cfg_ReconFile[layer]    = &m_apcLayerCfg[layer]->m_reconFileName;
     791    cfg_dQPFileName[layer]  = &m_apcLayerCfg[layer]->m_dQPFileName;
    865792    cfg_fQP[layer]          = &m_apcLayerCfg[layer]->m_fQP;
    866793#if Q0074_COLOUR_REMAPPING_SEI
    867     cfg_colourRemapSEIFileRoot[layer] = &m_apcLayerCfg[layer]->m_colourRemapSEIFileRoot;
     794    cfg_colourRemapSEIFileName[layer] = &m_apcLayerCfg[layer]->m_colourRemapSEIFileName;
    868795#endif
    869796    cfg_repFormatIdx[layer]         = &m_apcLayerCfg[layer]->m_repFormatIdx;
     
    979906  string* cfg_listOfLayerPTLOfOlss   = new string[MAX_VPS_OUTPUT_LAYER_SETS_PLUS1];
    980907#if AVC_BASE
    981   string  cfg_BLInputFile;
     908  string  m_inputFileNameBL;
    982909#endif
    983910#if N0383_IL_CONSTRAINED_TILE_SETS_SEI
    984   string  cfg_tileSets;
    985 #endif
    986 #else //SVC_EXTENSION
    987   string cfg_InputFile;
    988   string cfg_BitstreamFile;
    989   string cfg_ReconFile;
    990   string cfg_dQPFile;
    991 #if Q0074_COLOUR_REMAPPING_SEI
    992   string cfg_colourRemapSEIFileRoot;
    993 #endif
    994   string cfg_ScalingListFile;
     911  string  m_tileSets;
     912#endif
    995913#endif //SVC_EXTENSION
    996914
     
    11211039  ("ScalabilityMask3",                              m_scalabilityMask[AUX_ID],                              0, "scalability_mask[3] (auxiliary pictures)" )
    11221040#endif
    1123   ("BitstreamFile,b",                               cfg_BitstreamFile,                             string(""), "Bitstream output file name")
    1124   ("NumRefLocationOffsets%d",                       cfg_numRefLayerLocationOffsets,            0, m_numLayers,  "Number of reference layer offset sets ")
     1041  ("BitstreamFile,b",                               m_bitstreamFileName,                           string(""), "Bitstream output file name")
     1042  ("NumRefLocationOffsets%d",                       cfg_numRefLayerLocationOffsets,            0, m_numLayers, "Number of reference layer offset sets ")
    11251043  ("RefLocationOffsetLayerId%d",                    cfg_refLocationOffsetLayerIdPtr,  string(""), m_numLayers, "Layer ID of reference location offset")
    11261044  ("ScaledRefLayerLeftOffset%d",                    cfg_scaledRefLayerLeftOffsetPtr,  string(""), m_numLayers, "Horizontal offset of top-left luma sample of scaled base layer picture with respect to"
     
    11481066  ("PhaseVerChroma%d",                              cfg_phaseVerChromaPtr,            string(""), m_numLayers, "chroma shift in the vertical   direction used in resampling proces")
    11491067#if Q0074_COLOUR_REMAPPING_SEI
    1150   ("SEIColourRemappingInfoFileRoot%d",              cfg_colourRemapSEIFileRoot,       string(""), m_numLayers, "Colour Remapping Information SEI parameters file name for layer %d")
     1068  ("SEIColourRemappingInfoFileRoot%d",              cfg_colourRemapSEIFileName,       string(""), m_numLayers, "Colour Remapping Information SEI parameters file name for layer %d")
    11511069#endif
    11521070  ("InputBitDepth%d",                                cfg_InputBitDepth[CHANNEL_TYPE_LUMA],     8, m_numLayers, "Bit-depth of input file for layer %d")
     
    11651083  ("InterLayerWeightedPred",                          m_useInterLayerWeightedPred,                      false, "enable IL WP parameters estimation at encoder" ) 
    11661084#if AVC_BASE
    1167   ("NonHEVCBase,-nonhevc",                            m_nonHEVCBaseLayerFlag,                               0, "BL is available but not internal")
    1168   ("InputBLFile,-ibl",                                cfg_BLInputFile,                             string(""), "Base layer rec YUV input file name")
     1085  ("NonHEVCBase,-nonhevc",                            m_nonHEVCBaseLayerFlag,                           false, "BL is available but not internal")
     1086  ("InputBLFile,-ibl",                                m_inputFileNameBL,                           string(""), "Base layer rec YUV input file name")
    11691087#endif
    11701088  ("EnableElRapB,-use-rap-b",                         m_elRapSliceBEnabled,                             false, "Set ILP over base-layer I picture to B picture (default is P picture)")
     
    11721090  ("ChromaFormatIDC,-cf",                             tmpChromaFormat,                                      0, "ChromaFormatIDC (400|420|422|444 or set 0 (default) for same as InputChromaFormat)")
    11731091#else //SVC_EXTENSION
    1174   ("InputFile,i",                                     cfg_InputFile,                               string(""), "Original YUV input file name")
    1175   ("BitstreamFile,b",                                 cfg_BitstreamFile,                           string(""), "Bitstream output file name")
    1176   ("ReconFile,o",                                     cfg_ReconFile,                               string(""), "Reconstructed YUV output file name")
     1092  ("InputFile,i",                                     m_inputFileName,                             string(""), "Original YUV input file name")
     1093  ("BitstreamFile,b",                                 m_bitstreamFileName,                         string(""), "Bitstream output file name")
     1094  ("ReconFile,o",                                     m_reconFileName,                             string(""), "Reconstructed YUV output file name")
    11771095  ("SourceWidth,-wdt",                                m_iSourceWidth,                                       0, "Source picture width")
    11781096  ("SourceHeight,-hgt",                               m_iSourceHeight,                                      0, "Source picture height")
     
    12171135  ("FrameRate,-fr",                                   m_iFrameRate,                                         0, "Frame rate")
    12181136#if Q0074_COLOUR_REMAPPING_SEI
    1219   ("SEIColourRemappingInfoFileRoot",                  cfg_colourRemapSEIFileRoot, string(""), "Colour Remapping Information SEI parameters file name")
     1137  ("SEIColourRemappingInfoFileRoot",                  m_colourRemapSEIFileName,                    string(""), "Colour Remapping Information SEI parameters file name")
    12201138#endif
    12211139#endif //SVC_EXTENSION
     
    13621280  ("AdaptiveQP,-aq",                                  m_bUseAdaptiveQP,                                 false, "QP adaptation based on a psycho-visual model")
    13631281  ("MaxQPAdaptationRange,-aqr",                       m_iQPAdaptationRange,                                 6, "QP adaptation range")
    1364 #if !SVC_EXTENSION
    1365   ("dQPFile,m",                                       cfg_dQPFile,                                 string(""), "dQP file name")
     1282#if SVC_EXTENSION
     1283  ("dQPFile,m",                                       cfg_dQPFileName,                string(""), m_numLayers, "dQP file name")
     1284#else
     1285  ("dQPFile,m",                                       m_dQPFileName,                               string(""), "dQP file name")
    13661286#endif
    13671287  ("RDOQ",                                            m_useRDOQ,                                         true)
     
    14521372  ("WaveFrontSynchro",                                m_iWaveFrontSynchro,                                  0, "0: no synchro; 1 synchro with top-right-right")
    14531373  ("ScalingList",                                     m_useScalingListId,                    SCALING_LIST_OFF, "0/off: no scaling list, 1/default: default scaling lists, 2/file: scaling lists specified in ScalingListFile")
    1454   ("ScalingListFile",                                 cfg_ScalingListFile,                         string(""), "Scaling list file name. Use an empty string to produce help.")
     1374  ("ScalingListFile",                                 m_scalingListFileName,                       string(""), "Scaling list file name. Use an empty string to produce help.")
    14551375#endif
    14561376  ("SignHideFlag,-SBH",                               m_signHideFlag,                                    true)
     
    17141634  ("SEIInterLayerConstrainedTileSets",       m_interLayerConstrainedTileSetsSEIEnabled, false, "Control generation of inter layer constrained tile sets SEI message")
    17151635  ("IlNumSetsInMessage",                     m_ilNumSetsInMessage,                         0u, "Number of inter layer constrained tile sets")
    1716   ("TileSetsArray",                          cfg_tileSets,                         string(""), "Array containing tile sets params (TopLeftTileIndex, BottonRightTileIndex and ilcIdc for each set) ")
     1636  ("TileSetsArray",                          m_tileSets,                           string(""), "Array containing tile sets params (TopLeftTileIndex, BottonRightTileIndex and ilcIdc for each set) ")
    17171637#endif
    17181638  ("AltOutputLayerFlag",                     m_altOutputLayerFlag,                      false, "Specifies the value of alt_output_layer_flag in VPS extension")
     
    17531673  po::setDefaults(opts);
    17541674  po::ErrorReporter err;
    1755   const list<const Char*>& argv_unhandled = po::scanArgv(opts, argc, (const Char**) argv, err);
    1756 
    1757 #if SVC_EXTENSION
     1675  const list<const TChar*>& argv_unhandled = po::scanArgv(opts, argc, (const TChar**) argv, err);
     1676
     1677#if SVC_EXTENSION
     1678#if AVC_BASE
     1679  if( m_nonHEVCBaseLayerFlag )
     1680  {
     1681    *cfg_InputFile[0] = m_inputFileNameBL;
     1682  }
     1683#endif
     1684
    17581685  for (Int i=1; i<m_numLayers; i++)
    17591686  {
     
    17751702#endif
    17761703 
    1777   for (list<const Char*>::const_iterator it = argv_unhandled.begin(); it != argv_unhandled.end(); it++)
     1704  for (list<const TChar*>::const_iterator it = argv_unhandled.begin(); it != argv_unhandled.end(); it++)
    17781705  {
    17791706    fprintf(stderr, "Unhandled argument ignored: `%s'\n", *it);
     
    17991726   * Set any derived parameters
    18001727   */
    1801   /* convert std::string to c string for compatability */
    1802 #if SVC_EXTENSION
    1803 #if AVC_BASE
    1804   if( m_nonHEVCBaseLayerFlag )
    1805   {
    1806     *cfg_InputFile[0] = cfg_BLInputFile;
    1807   }
    1808 #endif
    1809 #else //SVC_EXTENSION
    1810   m_pchInputFile = cfg_InputFile.empty() ? NULL : strdup(cfg_InputFile.c_str());
    1811 #endif
    1812   m_pchBitstreamFile = cfg_BitstreamFile.empty() ? NULL : strdup(cfg_BitstreamFile.c_str());
    1813 #if !SVC_EXTENSION
    1814   m_pchReconFile = cfg_ReconFile.empty() ? NULL : strdup(cfg_ReconFile.c_str());
    1815   m_pchdQPFile = cfg_dQPFile.empty() ? NULL : strdup(cfg_dQPFile.c_str());
    1816 #if Q0074_COLOUR_REMAPPING_SEI
    1817   if( !cfg_colourRemapSEIFileRoot.empty() )
    1818   {
    1819     m_colourRemapSEIFileRoot = strdup(cfg_colourRemapSEIFileRoot.c_str());
    1820   }
    1821 #endif
    1822 #endif //SVC_EXTENSION
    1823 
    18241728
    18251729  m_adIntraLambdaModifier = cfg_adIntraLambdaModifier.values;
     
    18951799    m_tileRowHeight.clear();
    18961800  }
    1897    
    1898   /* rules for input, output and internal bitdepths as per help text */
     1801 
    18991802#if SVC_EXTENSION
    19001803  for( Int layer = 0; layer < m_numLayers; layer++ )
    19011804  {
    1902     m_apcLayerCfg[layer]->m_scalingListFile = cfg_ScalingListFile[layer].empty() ? NULL : strdup(cfg_ScalingListFile[layer].c_str());
     1805    m_apcLayerCfg[layer]->m_scalingListFileName = cfg_ScalingListFile[layer].empty() ? NULL : strdup(cfg_ScalingListFile[layer].c_str());
    19031806
    19041807    if( m_apcLayerCfg[layer]->m_layerId < 0 )
     
    20341937  }
    20351938#else
    2036   m_scalingListFile = cfg_ScalingListFile.empty() ? NULL : strdup(cfg_ScalingListFile.c_str());
    2037 
    20381939  /* rules for input, output and internal bitdepths as per help text */
    20391940  if (m_MSBExtendedBitDepth[CHANNEL_TYPE_LUMA  ] == 0)
     
    24362337    }
    24372338
    2438     Char* pSamplePredRefLayerIds = cfg_samplePredRefLayerIds[layer].empty() ? NULL: strdup(cfg_samplePredRefLayerIds[layer].c_str());
     2339    TChar* pSamplePredRefLayerIds = cfg_samplePredRefLayerIds[layer].empty() ? NULL: strdup(cfg_samplePredRefLayerIds[layer].c_str());
    24392340    if( m_apcLayerCfg[layer]->m_numSamplePredRefLayers > 0 )
    24402341    {
     
    24712372    }
    24722373
    2473     Char* pMotionPredRefLayerIds = cfg_motionPredRefLayerIds[layer].empty() ? NULL: strdup(cfg_motionPredRefLayerIds[layer].c_str());
     2374    TChar* pMotionPredRefLayerIds = cfg_motionPredRefLayerIds[layer].empty() ? NULL: strdup(cfg_motionPredRefLayerIds[layer].c_str());
    24742375    if( m_apcLayerCfg[layer]->m_numMotionPredRefLayers > 0 )
    24752376    {
     
    25062407    }
    25072408
    2508     Char* pPredLayerIds = cfg_predLayerIds[layer].empty() ? NULL: strdup(cfg_predLayerIds[layer].c_str());
     2409    TChar* pPredLayerIds = cfg_predLayerIds[layer].empty() ? NULL: strdup(cfg_predLayerIds[layer].c_str());
    25092410    if( m_apcLayerCfg[layer]->m_numActiveRefLayers > 0 )
    25102411    {
    2511       char *refLayerId;
    2512       int  i=0;
     2412      TChar *refLayerId;
     2413      Int  i=0;
    25132414      m_apcLayerCfg[layer]->m_predLayerIds = new Int[m_apcLayerCfg[layer]->m_numActiveRefLayers];
    25142415      refLayerId = strtok(pPredLayerIds, " ,-");
     
    26612562    Double& m_fQP                   = m_apcLayerCfg[layer]->m_fQP;
    26622563
    2663     Char* m_pchdQPFile              = m_apcLayerCfg[layer]->m_pchdQPFile;
     2564    string& m_dQPFileName           = m_apcLayerCfg[layer]->m_dQPFileName;
    26642565    Int* m_internalBitDepth         = m_apcLayerCfg[layer]->m_internalBitDepth;
    26652566#endif //SVC_EXTENSION
     2567
    26662568  switch (m_conformanceWindowMode)
    26672569  {
     
    27782680
    27792681  // reading external dQP description from file
    2780   if ( m_pchdQPFile )
    2781   {
    2782     FILE* fpt=fopen( m_pchdQPFile, "r" );
     2682  if ( !m_dQPFileName.empty() )
     2683  {
     2684    FILE* fpt=fopen( m_dQPFileName.c_str(), "r" );
     2685
    27832686    if ( fpt )
    27842687    {
     
    29652868      exit( EXIT_FAILURE );
    29662869    }
    2967     Char* pTileSets = cfg_tileSets.empty() ? NULL : strdup(cfg_tileSets.c_str());
     2870    TChar* pTileSets = m_tileSets.empty() ? NULL : strdup(m_tileSets.c_str());
    29682871    int i = 0;
    2969     char *topLeftTileIndex = strtok(pTileSets, " ,");
     2872    TChar *topLeftTileIndex = strtok(pTileSets, " ,");
    29702873    while(topLeftTileIndex != NULL)
    29712874    {
     
    31613064#define xConfirmPara(a,b) check_failed |= confirmPara(a,b)
    31623065
    3163   xConfirmPara(m_pchBitstreamFile==NULL, "A bitstream file name must be specified (BitstreamFile)");
     3066  xConfirmPara(m_bitstreamFileName.empty(), "A bitstream file name must be specified (BitstreamFile)");
    31643067  const UInt maxBitDepth=(m_chromaFormatIDC==CHROMA_400) ? m_internalBitDepth[CHANNEL_TYPE_LUMA] : std::max(m_internalBitDepth[CHANNEL_TYPE_LUMA], m_internalBitDepth[CHANNEL_TYPE_CHROMA]);
    31653068  xConfirmPara(m_bitDepthConstraint<maxBitDepth, "The internalBitDepth must not be greater than the bitDepthConstraint value");
     
    43944297}
    43954298
    4396 const Char *profileToString(const Profile::Name profile)
     4299const TChar *profileToString(const Profile::Name profile)
    43974300{
    43984301  static const UInt numberOfProfiles = sizeof(strToProfile)/sizeof(*strToProfile);
     
    44544357    Int& m_iSourceHeight                   = m_apcLayerCfg[layerIdx]->m_iSourceHeight;
    44554358
    4456     const Char* m_pchInputFile             = m_apcLayerCfg[layerIdx]->m_cInputFile.c_str();
    4457     const Char* m_pchReconFile             = m_apcLayerCfg[layerIdx]->m_cReconFile.c_str();
     4359    string& m_inputFileName                = m_apcLayerCfg[layerIdx]->m_inputFileName;
     4360    string& m_reconFileName                = m_apcLayerCfg[layerIdx]->m_reconFileName;
    44584361
    44594362    Int& m_iFrameRate                      = m_apcLayerCfg[layerIdx]->m_iFrameRate;
     
    44994402#endif
    45004403
    4501   printf("Input          File                    : %s\n", m_pchInputFile          );
     4404  printf("Input          File                    : %s\n", m_inputFileName.c_str()          );
    45024405
    45034406#if SVC_EXTENSION
     
    45074410#endif
    45084411
    4509   printf("Bitstream      File                    : %s\n", m_pchBitstreamFile      );
     4412  printf("Bitstream      File                    : %s\n", m_bitstreamFileName.c_str()      );
    45104413
    45114414#if SVC_EXTENSION
     
    45144417    {
    45154418#endif
    4516 
    4517   printf("Reconstruction File                    : %s\n", m_pchReconFile          );
     4419 
     4420  printf("Reconstruction File                    : %s\n", m_reconFileName.c_str()          );
    45184421  printf("Real     Format                        : %dx%d %dHz\n", m_iSourceWidth - m_confWinLeft - m_confWinRight, m_iSourceHeight - m_confWinTop - m_confWinBottom, m_iFrameRate );
    45194422  printf("Internal Format                        : %dx%d %dHz\n", m_iSourceWidth, m_iSourceHeight, m_iFrameRate );
     
    48014704  }
    48024705
    4803   printf("\nSHVC TOOL CFG: ");
     4706  printf("SHVC TOOL CFG: ");
    48044707  printf("ElRapSliceType: %c-slice ", m_elRapSliceBEnabled ? 'B' : 'P');
    48054708  printf("REF_IDX_ME_ZEROMV: %d ", REF_IDX_ME_ZEROMV);
     
    48224725}
    48234726
    4824 Bool confirmPara(Bool bflag, const Char* message)
     4727Bool confirmPara(Bool bflag, const TChar* message)
    48254728{
    48264729  if (!bflag)
     
    48364739Void TAppEncCfg::cfgStringToArray(Int **arr, string const cfgString, Int const numEntries, const char* logString)
    48374740{
    4838   Char *tempChar = cfgString.empty() ? NULL : strdup(cfgString.c_str());
     4741  TChar *tempChar = cfgString.empty() ? NULL : strdup(cfgString.c_str());
    48394742  if( numEntries > 0 )
    48404743  {
    4841     Char *arrayEntry;
     4744    TChar *arrayEntry;
    48424745    Int i = 0;
    48434746    *arr = new Int[numEntries];
     
    49184821Void TAppEncCfg::cfgStringToArrayNumEntries(Int **arr, string const cfgString, Int &numEntries, const char* logString)
    49194822{
    4920   Char *tempChar = cfgString.empty() ? NULL : strdup(cfgString.c_str());
     4823  TChar *tempChar = cfgString.empty() ? NULL : strdup(cfgString.c_str());
    49214824  if (numEntries > 0)
    49224825  {
    4923     Char *arrayEntry;
     4826    TChar *arrayEntry;
    49244827    Int i = 0;
    49254828    *arr = new Int[numEntries];
     
    49834886  return false;
    49844887}
     4888
     4889void TAppEncCfg::getDirFilename(string& filename, string& dir, const string path)
     4890{
     4891  size_t pos = path.find_last_of("\\");
     4892  if(pos != std::string::npos)
     4893  {
     4894    filename.assign(path.begin() + pos + 1, path.end());
     4895    dir.assign(path.begin(), path.begin() + pos + 1);
     4896  }
     4897  else
     4898  {
     4899    pos = path.find_last_of("/");
     4900    if(pos != std::string::npos)
     4901    {
     4902      filename.assign(path.begin() + pos + 1, path.end());
     4903      dir.assign(path.begin(), path.begin() + pos + 1);
     4904    }
     4905    else
     4906    {
     4907      filename = path;
     4908      dir.assign("");
     4909    }
     4910  }
     4911}
     4912
     4913/** \param  argc        number of arguments
     4914    \param  argv        array of arguments
     4915    \retval             true when success
     4916 */
     4917Bool TAppEncCfg::parseCfgNumLayersAndInit( Int argc, TChar* argv[] )
     4918{
     4919  po::Options opts;
     4920  opts.addOptions()
     4921  ("c",    po::parseConfigFile, "configuration file name")
     4922  ("NumLayers",                                     m_numLayers,                                             1, "Number of layers to code")
     4923  ;
     4924
     4925  po::setDefaults(opts);
     4926  po::ErrorReporter err;
     4927  err.verbose = false;
     4928  po::scanArgv(opts, argc, (const TChar**) argv, err);
     4929
     4930  if( m_numLayers <= 0 )
     4931  {
     4932    printf("Wrong number of layers %d\n", m_numLayers);
     4933    return false;
     4934  }
     4935
     4936  for( Int layer = 0; layer < m_numLayers; layer++ )
     4937  {
     4938    m_apcLayerCfg[layer] = new TAppEncLayerCfg;
     4939    m_apcLayerCfg[layer]->setAppEncCfg(this);
     4940  }
     4941
     4942  return true;
     4943}
    49854944#endif //SVC_EXTENSION
    49864945//! \}
  • branches/SHM-dev/source/App/TAppEncoder/TAppEncCfg.h

    r1437 r1442  
    6565  Int       m_scalabilityMask[MAX_VPS_NUM_SCALABILITY_TYPES]; ///< scalability_mask
    6666#if AVC_BASE
    67   Int       m_nonHEVCBaseLayerFlag;                           ///< non HEVC BL
     67  Bool      m_nonHEVCBaseLayerFlag;                           ///< non HEVC BL
    6868#endif
    6969  Bool      m_maxTidRefPresentFlag;
     
    8282  std::vector< std::vector<Int> > m_listOfOutputLayers;
    8383#else
    84   Char*     m_pchInputFile;                                   ///< source file name
    85 #endif
    86   Char*     m_pchBitstreamFile;                               ///< output bitstream file
    87 #if !SVC_EXTENSION
    88   Char*     m_pchReconFile;                                   ///< output reconstruction file
     84  std::string m_inputFileName;                                ///< source file name
     85#endif
     86  std::string m_bitstreamFileName;                            ///< output bitstream file
     87#if !SVC_EXTENSION
     88  std::string m_reconFileName;                                ///< output reconstruction file
    8989#endif
    9090  // Lambda modifiers
     
    199199  Double    m_fQP;                                            ///< QP value of key-picture (floating point)
    200200  Int       m_iQP;                                            ///< QP value of key-picture (integer)
    201   Char*     m_pchdQPFile;                                     ///< QP offset for each slice (initialized from external file)
     201  std::string m_dQPFileName;                                  ///< QP offset for each slice (initialized from external file)
    202202  Int*      m_aidQP;                                          ///< array of slice QP values
    203203#endif
     
    419419#if !SVC_EXTENSION
    420420  ScalingListMode m_useScalingListId;                         ///< using quantization matrix
    421   Char*     m_scalingListFile;                                ///< quantization matrix file name
     421  std::string m_scalingListFileName;                          ///< quantization matrix file name
    422422#endif
    423423
     
    495495#if Q0074_COLOUR_REMAPPING_SEI
    496496#if !SVC_EXTENSION
    497   string    m_colourRemapSEIFileRoot;
     497  string    m_colourRemapSEIFileName;
    498498#endif
    499499#endif
     
    567567  Void  create    ();                                         ///< create option handling class
    568568  Void  destroy   ();                                         ///< destroy option handling class
    569   Bool  parseCfg  ( Int argc, Char* argv[] );                 ///< parse configuration file to fill member variables
     569  Bool  parseCfg  ( Int argc, TChar* argv[] );                ///< parse configuration file to fill member variables
    570570 
    571571#if SVC_EXTENSION
    572   Bool parseCfgNumLayersAndInit( Int argc, Char* argv[] );    ///< parse configuration file to to get number of layers and allocate memory
     572  Bool parseCfgNumLayersAndInit( Int argc, TChar* argv[] );   ///< parse configuration file to to get number of layers and allocate memory
    573573  Int  getNumFrameToBeEncoded()                               { return m_framesToBeEncoded;                          }
    574574  Int  getNumLayer()                                          { return m_numLayers;                                  }
  • branches/SHM-dev/source/App/TAppEncoder/TAppEncLayerCfg.cpp

    r1437 r1442  
    4242#if SVC_EXTENSION
    4343TAppEncLayerCfg::TAppEncLayerCfg()
    44 : m_cInputFile(string(""))
    45 , m_cReconFile(string(""))
    46 , m_conformanceWindowMode(0)
    47 , m_scalingListFile(NULL)
    48 , m_pchdQPFile(NULL)
     44: m_conformanceWindowMode(0)
    4945, m_aidQP(NULL)
    5046, m_repFormatIdx(-1)
    51 #if Q0074_COLOUR_REMAPPING_SEI
    52 , m_colourRemapSEIFileRoot(string(""))
    53 #endif
    5447{
    5548#if Q0074_COLOUR_REMAPPING_SEI
     
    107100  }
    108101#endif
    109   free(m_scalingListFile);
    110102}
    111103
  • branches/SHM-dev/source/App/TAppEncoder/TAppEncLayerCfg.h

    r1437 r1442  
    2828protected:
    2929  // file I/O0
    30   string    m_cInputFile;                                     ///< source file name
    31   string    m_cReconFile;                                     ///< output reconstruction file
     30  string    m_inputFileName;                                     ///< source file name
     31  string    m_reconFileName;                                     ///< output reconstruction file
    3232  Int       m_layerId;                                        ///< layer Id
    3333  Int       m_iFrameRate;                                     ///< source frame-rates (Hz)
     
    9595
    9696  ScalingListMode m_useScalingListId;                         ///< using quantization matrix
    97   Char*     m_scalingListFile;                                ///< quantization matrix file name
     97  std::string m_scalingListFileName;                          ///< quantization matrix file name
    9898
    9999  Int       m_maxTidIlRefPicsPlus1;
     
    102102
    103103  Int       m_iQP;                                            ///< QP value of key-picture (integer)
    104   Char*     m_pchdQPFile;                                     ///< QP offset for each slice (initialized from external file)
     104  std::string m_dQPFileName;                                  ///< QP offset for each slice (initialized from external file)
    105105  Int*      m_aidQP;                                          ///< array of slice QP values
    106106  TAppEncCfg* m_cAppEncCfg;                                   ///< pointer to app encoder config
     
    130130  Int       m_repFormatIdx;
    131131#if Q0074_COLOUR_REMAPPING_SEI
    132   string    m_colourRemapSEIFileRoot;                           ///< Colour Remapping Information SEI message parameters file
     132  string    m_colourRemapSEIFileName;                         ///< Colour Remapping Information SEI message parameters file
    133133  Int       m_colourRemapSEIId;
    134134  Bool      m_colourRemapSEICancelFlag;
     
    168168  Void    setAppEncCfg(TAppEncCfg* p) {m_cAppEncCfg = p;          }
    169169
    170   string  getInputFile()              {return m_cInputFile;       }
    171   string  getReconFile()              {return m_cReconFile;       }
    172   Double  getFloatQP()                {return m_fQP;              }
     170  string& getInputFileName()          {return m_inputFileName;       }
     171  string& getReconFileName()          {return m_reconFileName;       }
     172  Double  getFloatQP()                {return m_fQP;                 }
    173173  Int     getConfWinLeft()            {return m_confWinLeft;         }
    174174  Int     getConfWinRight()           {return m_confWinRight;        }
  • branches/SHM-dev/source/App/TAppEncoder/TAppEncTop.cpp

    r1437 r1442  
    499499
    500500    ScalingListMode& m_useScalingListId                         = m_apcLayerCfg[layer]->m_useScalingListId;
    501     Char*          m_scalingListFile                            = m_apcLayerCfg[layer]->m_scalingListFile;
     501    string&        m_scalingListFileName                        = m_apcLayerCfg[layer]->m_scalingListFileName;
    502502    Bool&          m_bUseSAO                                    = m_apcLayerCfg[layer]->m_bUseSAO;
     503
     504    string&        m_colourRemapSEIFileName                     = m_apcLayerCfg[layer]->m_colourRemapSEIFileName;
    503505#endif
    504506
     
    785787  m_cTEncTop.setTMVPModeId                                        ( m_TMVPModeId );
    786788  m_cTEncTop.setUseScalingListId                                  ( m_useScalingListId  );
    787   m_cTEncTop.setScalingListFile                                   ( m_scalingListFile  );
     789  m_cTEncTop.setScalingListFileName                               ( m_scalingListFileName );
    788790  m_cTEncTop.setSignHideFlag                                      ( m_signHideFlag);
    789791  m_cTEncTop.setUseRateCtrl                                       ( m_RCEnableRateControl );
     
    843845
    844846#if Q0074_COLOUR_REMAPPING_SEI
    845 #if SVC_EXTENSION
    846   m_cTEncTop.xSetCRISEIFileRoot                                    ( const_cast<Char*>(m_apcLayerCfg[layer]->m_colourRemapSEIFileRoot.c_str()) );
    847 #else
    848   m_cTEncTop.xSetCRISEIFileRoot                                    ( const_cast<Char*>(m_colourRemapSEIFileRoot.c_str()) );
    849 #endif
     847  m_cTEncTop.xSetCRISEIFileRoot                                   ( m_colourRemapSEIFileName );
    850848#endif
    851849#if LAYERS_NOT_PRESENT_SEI
     
    877875    //2
    878876    // Video I/O
    879     m_apcTVideoIOYuvInputFile[layer]->open( (Char *)m_apcLayerCfg[layer]->getInputFile().c_str(),  false, m_apcLayerCfg[layer]->m_inputBitDepth, m_apcLayerCfg[layer]->m_MSBExtendedBitDepth, m_apcLayerCfg[layer]->m_internalBitDepth );  // read  mode
     877    m_apcTVideoIOYuvInputFile[layer]->open( m_apcLayerCfg[layer]->getInputFileName(),  false, m_apcLayerCfg[layer]->m_inputBitDepth, m_apcLayerCfg[layer]->m_MSBExtendedBitDepth, m_apcLayerCfg[layer]->m_internalBitDepth );  // read  mode
    880878    m_apcTVideoIOYuvInputFile[layer]->skipFrames(m_FrameSkip, m_apcLayerCfg[layer]->m_iSourceWidth - m_apcLayerCfg[layer]->m_aiPad[0], m_apcLayerCfg[layer]->m_iSourceHeight - m_apcLayerCfg[layer]->m_aiPad[1], m_apcLayerCfg[layer]->m_InputChromaFormatIDC);
    881879
    882     if( !m_apcLayerCfg[layer]->getReconFile().empty() )
    883     {
    884       m_apcTVideoIOYuvReconFile[layer]->open((Char *)m_apcLayerCfg[layer]->getReconFile().c_str(), true, m_apcLayerCfg[layer]->m_outputBitDepth, m_apcLayerCfg[layer]->m_MSBExtendedBitDepth, m_apcLayerCfg[layer]->m_internalBitDepth );  // write mode
     880    if( !m_apcLayerCfg[layer]->getReconFileName().empty() )
     881    {
     882      m_apcTVideoIOYuvReconFile[layer]->open( m_apcLayerCfg[layer]->getReconFileName(), true, m_apcLayerCfg[layer]->m_outputBitDepth, m_apcLayerCfg[layer]->m_MSBExtendedBitDepth, m_apcLayerCfg[layer]->m_internalBitDepth );  // write mode
    885883    }
    886884
     
    890888#else //SVC_EXTENSION
    891889  // Video I/O
    892   m_cTVideoIOYuvInputFile.open( m_pchInputFile,     false, m_inputBitDepth, m_MSBExtendedBitDepth, m_internalBitDepth );  // read  mode
     890  m_cTVideoIOYuvInputFile.open( m_inputFileName,     false, m_inputBitDepth, m_MSBExtendedBitDepth, m_internalBitDepth );  // read  mode
    893891  m_cTVideoIOYuvInputFile.skipFrames(m_FrameSkip, m_iSourceWidth - m_aiPad[0], m_iSourceHeight - m_aiPad[1], m_InputChromaFormatIDC);
    894892
    895   if (m_pchReconFile)
    896   {
    897     m_cTVideoIOYuvReconFile.open(m_pchReconFile, true, m_outputBitDepth, m_outputBitDepth, m_internalBitDepth);  // write mode
     893  if (!m_reconFileName.empty())
     894  {
     895    m_cTVideoIOYuvReconFile.open(m_reconFileName, true, m_outputBitDepth, m_outputBitDepth, m_internalBitDepth);  // write mode
    898896  }
    899897
     
    14391437Void TAppEncTop::encode()
    14401438{
    1441   fstream bitstreamFile(m_pchBitstreamFile, fstream::binary | fstream::out);
     1439  fstream bitstreamFile(m_bitstreamFileName.c_str(), fstream::binary | fstream::out);
    14421440  if (!bitstreamFile)
    14431441  {
    1444     fprintf(stderr, "\nfailed to open bitstream file `%s' for writing\n", m_pchBitstreamFile);
     1442    fprintf(stderr, "\nfailed to open bitstream file `%s' for writing\n", m_bitstreamFileName.c_str());
    14451443    exit(EXIT_FAILURE);
    14461444  }
     
    18011799Void TAppEncTop::encode()
    18021800{
    1803   fstream bitstreamFile(m_pchBitstreamFile, fstream::binary | fstream::out);
     1801  fstream bitstreamFile(m_bitstreamFileName.c_str(), fstream::binary | fstream::out);
    18041802  if (!bitstreamFile)
    18051803  {
    1806     fprintf(stderr, "\nfailed to open bitstream file `%s' for writing\n", m_pchBitstreamFile);
     1804    fprintf(stderr, "\nfailed to open bitstream file `%s' for writing\n", m_bitstreamFileName.c_str());
    18071805    exit(EXIT_FAILURE);
    18081806  }
     
    19731971      TComPicYuv*  pcPicYuvRecBottom  = *(iterPicYuvRec++);
    19741972
    1975       if( !m_apcLayerCfg[layer]->getReconFile().empty() && pcPicYuvRecTop->isReconstructed() && pcPicYuvRecBottom->isReconstructed() )
     1973      if( !m_apcLayerCfg[layer]->getReconFileName().empty() && pcPicYuvRecTop->isReconstructed() && pcPicYuvRecBottom->isReconstructed() )
    19761974      {
    19771975        m_apcTVideoIOYuvReconFile[layer]->write( pcPicYuvRecTop, pcPicYuvRecBottom, ipCSC, m_apcLayerCfg[layer]->getConfWinLeft() * xScal, m_apcLayerCfg[layer]->getConfWinRight() * xScal,
     
    19941992    {
    19951993      TComPicYuv*  pcPicYuvRec  = *(iterPicYuvRec++);
    1996       if( !m_apcLayerCfg[layer]->getReconFile().empty() && pcPicYuvRec->isReconstructed() )
     1994      if( !m_apcLayerCfg[layer]->getReconFileName().empty() && pcPicYuvRec->isReconstructed() )
    19971995      {
    19981996        m_apcTVideoIOYuvReconFile[layer]->write( pcPicYuvRec, ipCSC, m_apcLayerCfg[layer]->getConfWinLeft() * xScal, m_apcLayerCfg[layer]->getConfWinRight() * xScal,
     
    21012099      TComPicYuv*  pcPicYuvRecBottom  = *(iterPicYuvRec++);
    21022100
    2103       if (m_pchReconFile)
     2101      if (!m_reconFileName.empty())
    21042102      {
    21052103        m_cTVideoIOYuvReconFile.write( pcPicYuvRecTop, pcPicYuvRecBottom, ipCSC, m_confWinLeft, m_confWinRight, m_confWinTop, m_confWinBottom, NUM_CHROMA_FORMAT, m_isTopFieldFirst );
     
    21302128    {
    21312129      TComPicYuv*  pcPicYuvRec  = *(iterPicYuvRec++);
    2132       if (m_pchReconFile)
     2130      if (!m_reconFileName.empty())
    21332131      {
    21342132        m_cTVideoIOYuvReconFile.write( pcPicYuvRec, ipCSC, m_confWinLeft, m_confWinRight, m_confWinTop, m_confWinBottom,
Note: See TracChangeset for help on using the changeset viewer.