source: 3DVCSoftware/trunk/source/App/TAppRenderer/TAppRendererCfg.h

Last change on this file was 1405, checked in by tech, 8 years ago

Merged HTM-16.1-dev@1404.

  • Property svn:eol-style set to native
File size: 7.8 KB
Line 
1/* The copyright in this software is being made available under the BSD
2 * License, included below. This software may be subject to other third party
3 * and contributor rights, including patent rights, and no such rights are
4 * granted under this license.
5 *
6 * Copyright (c) 2010-2016, ITU/ISO/IEC
7 * All rights reserved.
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions are met:
11 *
12 *  * Redistributions of source code must retain the above copyright notice,
13 *    this list of conditions and the following disclaimer.
14 *  * Redistributions in binary form must reproduce the above copyright notice,
15 *    this list of conditions and the following disclaimer in the documentation
16 *    and/or other materials provided with the distribution.
17 *  * Neither the name of the ISO/IEC nor the names of its contributors may
18 *    be used to endorse or promote products derived from this software without
19 *    specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
25 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
31 * THE POSSIBILITY OF SUCH DAMAGE.
32 */
33
34#ifndef __TAppRENDERERCFG__
35#define __TAppRENDERERCFG__
36
37#include <list>
38#include <stdio.h>
39#include <fcntl.h>
40#include <assert.h>
41
42#include "../../Lib/TAppCommon/TAppComCamPara.h"
43#include "../../Lib/TLibCommon/CommonDef.h"
44#include "../../Lib/TLibRenderer/TRenModel.h"
45#include "../../Lib/TLibRenderer/TRenModSetupStrParser.h"
46#include <string>
47#include <vector>
48
49#if NH_3D_VSO  || NH_3D
50
51// ====================================================================================================================
52// Class definition
53// ====================================================================================================================
54
55/// encoder configuration class
56class TAppRendererCfg
57{
58protected:
59
60  //// file I/O ////
61  TChar*             m_pchVideoInputFileBaseName;      ///< input video  file base name, placeholder for numbering $$
62  TChar*             m_pchDepthInputFileBaseName;      ///< input depth  file base name, placeholder for numbering $$
63  TChar*             m_pchSynthOutputFileBaseName;     ///< output synth file base name, placeholder for numbering $$
64  Bool               m_bContOutputFileNumbering;       ///< use continous numbering instead of view numbering
65  Bool               m_bSweep;                         ///< 1: Store view range in file
66
67
68  // bit-depth      ( Currently internal, output and input luma and chroma bit-depth are required to be equal to 8 )
69  Int                m_inputBitDepth[2];               ///< bit-depth of input file (luma/chroma component) 
70  Int                m_outputBitDepth[2];              ///< bit-depth of output file (luma/chroma component)   
71  Int                m_internalBitDepth[2];            ///< bit-depth renderer operates at in luma/chroma (input/output files will be converted)
72
73
74  // derived
75  std::vector<TChar*> m_pchVideoInputFileList;         ///< source file names
76  std::vector<TChar*> m_pchDepthInputFileList;         ///< source depth file names
77  std::vector<TChar*> m_pchSynthOutputFileList;        ///< output reconstruction file names
78
79  //// source specification ////
80  Int                m_iSourceWidth;                   ///< source width in pixel
81  Int                m_iSourceHeight;                  ///< source height in pixel
82  Int                m_iFrameSkip;                     ///< number of skipped frames from the beginning
83  Int                m_iFramesToBeRendered;            ///< number of rendered frames
84
85  ////camera specification ////
86  TChar*             m_pchCameraParameterFile;         ///< camera parameter file
87  TChar*             m_pchSynthViewCameraNumbers;      ///< numbers of views to synthesize
88  TChar*             m_pchViewConfig;                  ///< String to setup renderer
89  TChar*             m_pchBaseViewCameraNumbers;       ///< numbers of base views
90
91  // derived
92  TAppComCamPara      m_cCameraData;                    ///< class to store camera parameters
93#if NH_3D_VSO
94  TRenModSetupStrParser m_cRenModStrParser;             ///< class to manage View to be rendered
95#endif
96  Bool                m_bUseSetupString;                ///< true if setup string is used
97
98  Int                 m_iNumberOfInputViews;            ///< number of input Views
99  Int                 m_iNumberOfOutputViews;           ///< number views to synthesize
100
101  //// renderer Modes ////
102  Int                 m_iRenderDirection;               ///< 0: interpolate, 1: extrapolate from left, 2: extrapolate from right
103
104  Int                 m_iLog2SamplingFactor;            ///< factor for horizontal upsampling before processing
105  Bool                m_bUVUp;                          ///< upsampling of chroma planes before processing
106  Int                 m_iPreProcMode;                   ///< depth pre-processing: 0 = none, 1 = binominal filtering
107  Int                 m_iPreFilterSize;                 ///< for PreProcMode = 1: size of filter kernel
108  Bool                m_bSimEnhance;                    ///< Similarity enhancement before blending
109  Int                 m_iBlendMode;                     ///< merging of left and right image: 0 = average, 1 = only holes from right, 2 = only holes from left
110  Int                 m_iBlendZThresPerc;               ///< z-difference threshold for blending in percent of total z-range
111  Bool                m_bBlendUseDistWeight;            ///< 0: blend using average; 1: blend factor depends on view distance
112  Int                 m_iBlendHoleMargin;               ///< Margin around boundaries
113  Bool                m_bTempDepthFilter;               ///< Zheijang temporal enhancement filter
114  Int                 m_iInterpolationMode;             ///< 0: NN, 1: linear, 2: cspline
115  Int                 m_iHoleFillingMode;               ///< 0: none, 1: line wise background extension
116  Int                 m_iPostProcMode;                  ///< 0: none, 1: horizontal 3-tap median
117  Int                 m_iRenderMode;                      ///< 0: use renderer
118  Int                 m_iShiftPrecision;                ///< Precision used for Interpolation Mode 4
119  Int                 m_iUsedPelMapMarExt;              ///< Used Pel map extra margin
120
121  Void xCheckParameter ();                              ///< check validity of configuration values
122  Void xPrintParameter ();                              ///< print configuration values
123  Void xPrintUsage     ();                              ///< print usage
124
125  Void xCreateFileNames();
126  Void xGetMaxPrecision( IntAry1d adIn, Int& iPrecBefore, Int& iPrecAfter );
127  Void xAddNumberToFileName( TChar* pchSourceFileName, TChar*& rpchTargetFileName, Int iNumberToAdd, UInt uiPrecBefore, UInt uiPrecAfter );
128public:
129  TAppRendererCfg();
130  virtual ~TAppRendererCfg();
131
132public:
133  Void  create    ();                                         ///< create option handling class
134  Void  destroy   ();                                         ///< destroy option handling class
135  Bool  parseCfg  ( Int argc, TChar* argv[] );                 ///< parse configuration file to fill member variables
136  Bool  xConfirmParameter(Bool bflag, const TChar* message);
137
138
139};// END CLASS DEFINITION TAppRendererCfg
140
141#endif // __TAppRENDERERCFG__
142#endif // NH_3D
Note: See TracBrowser for help on using the repository browser.