Changeset 1323 in SHVCSoftware
- Timestamp:
- 22 Jul 2015, 00:03:09 (9 years ago)
- Location:
- branches/SHM-dev/source
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/SHM-dev/source/App/TAppDecoder/TAppDecCfg.cpp
r1301 r1323 124 124 #endif 125 125 ("OutputDecodedSEIMessagesFilename", m_outputDecodedSEIMessagesFilename, string(""), "When non empty, output decoded SEI messages to the indicated file. If file is '-', then output to stdout\n") 126 ("ClipOutputVideoToRec709Range", m_bClipOutputVideoToRec709Range, false, "If true then clip output video to the Rec. 709 Range on saving") 126 127 #if Q0074_COLOUR_REMAPPING_SEI 127 128 ("SEIColourRemappingInfo,-cri", m_colourRemapSEIEnabled, false, "Control handling of Colour Remapping Information SEI messages\n" -
branches/SHM-dev/source/App/TAppDecoder/TAppDecCfg.h
r1282 r1323 80 80 #endif 81 81 std::string m_outputDecodedSEIMessagesFilename; ///< filename to output decoded SEI messages to. If '-', then use stdout. If empty, do not output details. 82 Bool m_bClipOutputVideoToRec709Range; ///< If true, clip the output video to the Rec 709 range on saving. 82 83 83 84 #if SVC_EXTENSION -
branches/SHM-dev/source/App/TAppDecoder/TAppDecTop.cpp
r1319 r1323 915 915 conf.getWindowRightOffset() * xScal + defDisp.getWindowRightOffset(), 916 916 conf.getWindowTopOffset() * yScal + defDisp.getWindowTopOffset(), 917 conf.getWindowBottomOffset()* yScal + defDisp.getWindowBottomOffset() ); 917 conf.getWindowBottomOffset()* yScal + defDisp.getWindowBottomOffset(), 918 NUM_CHROMA_FORMAT, m_bClipOutputVideoToRec709Range ); 918 919 } 919 920 … … 931 932 conf.getWindowRightOffset() + defDisp.getWindowRightOffset(), 932 933 conf.getWindowTopOffset() + defDisp.getWindowTopOffset(), 933 conf.getWindowBottomOffset() + defDisp.getWindowBottomOffset() ); 934 conf.getWindowBottomOffset() + defDisp.getWindowBottomOffset(), 935 NUM_CHROMA_FORMAT, m_bClipOutputVideoToRec709Range ); 934 936 } 935 937 … … 1138 1140 Int xScal = TComSPS::getWinUnitX( chromaFormatIdc ), yScal = TComSPS::getWinUnitY( chromaFormatIdc ); 1139 1141 1140 m_acTVideoIOYuvReconFile[layerId].write( pcPic->getPicYuvRec(), m_outputColourSpaceConvert, 1141 conf.getWindowLeftOffset() *xScal + defDisp.getWindowLeftOffset(), 1142 conf.getWindowRightOffset() *xScal + defDisp.getWindowRightOffset(), 1143 conf.getWindowTopOffset() *yScal + defDisp.getWindowTopOffset(), 1144 conf.getWindowBottomOffset()*yScal + defDisp.getWindowBottomOffset() ); 1142 m_acTVideoIOYuvReconFile[layerId].write( pcPic->getPicYuvRec(), 1143 m_outputColourSpaceConvert, 1144 conf.getWindowLeftOffset() *xScal + defDisp.getWindowLeftOffset(), 1145 conf.getWindowRightOffset() *xScal + defDisp.getWindowRightOffset(), 1146 conf.getWindowTopOffset() *yScal + defDisp.getWindowTopOffset(), 1147 conf.getWindowBottomOffset()*yScal + defDisp.getWindowBottomOffset(), 1148 NUM_CHROMA_FORMAT, m_bClipOutputVideoToRec709Range ); 1145 1149 } 1146 1150 … … 1158 1162 conf.getWindowRightOffset() + defDisp.getWindowRightOffset(), 1159 1163 conf.getWindowTopOffset() + defDisp.getWindowTopOffset(), 1160 conf.getWindowBottomOffset() + defDisp.getWindowBottomOffset() ); 1164 conf.getWindowBottomOffset() + defDisp.getWindowBottomOffset(), 1165 NUM_CHROMA_FORMAT, m_bClipOutputVideoToRec709Range ); 1161 1166 } 1162 1167 -
branches/SHM-dev/source/App/TAppEncoder/TAppEncCfg.cpp
r1322 r1323 1197 1197 ("FrameSkip,-fs", m_FrameSkip, 0u, "Number of frames to skip at start of input YUV") 1198 1198 ("FramesToBeEncoded,f", m_framesToBeEncoded, 0, "Number of frames to be encoded (default=all)") 1199 ("ClipInputVideoToRec709Range", m_bClipInputVideoToRec709Range, false, "If true then clip input video to the Rec. 709 Range on loading when InternalBitDepth is less than MSBExtendedBitDepth") 1200 ("ClipOutputVideoToRec709Range", m_bClipOutputVideoToRec709Range, false, "If true then clip output video to the Rec. 709 Range on saving when OutputBitDepth is less than InternalBitDepth") 1199 1201 1200 1202 //Field coding parameters -
branches/SHM-dev/source/App/TAppEncoder/TAppEncCfg.h
r1322 r1323 123 123 Bool m_printSequenceMSE; 124 124 Bool m_cabacZeroWordPaddingEnabled; 125 Bool m_bClipInputVideoToRec709Range; 126 Bool m_bClipOutputVideoToRec709Range; 125 127 126 128 #if SVC_EXTENSION -
branches/SHM-dev/source/App/TAppEncoder/TAppEncTop.cpp
r1322 r1323 1714 1714 1715 1715 // read input YUV file 1716 m_acTVideoIOYuvInputFile[layer].read( pcPicYuvOrg[layer], &acPicYuvTrueOrg[layer], ipCSC, m_acLayerCfg[layer].getPad(), m_acLayerCfg[layer].getInputChromaFormat() );1716 m_acTVideoIOYuvInputFile[layer].read( pcPicYuvOrg[layer], &acPicYuvTrueOrg[layer], ipCSC, m_acLayerCfg[layer].getPad(), m_acLayerCfg[layer].getInputChromaFormat(), m_bClipInputVideoToRec709Range ); 1717 1717 1718 1718 #if AUXILIARY_PICTURES … … 2051 2051 2052 2052 // read input YUV file 2053 m_cTVideoIOYuvInputFile.read( pcPicYuvOrg, &cPicYuvTrueOrg, ipCSC, m_aiPad, m_InputChromaFormatIDC );2053 m_cTVideoIOYuvInputFile.read( pcPicYuvOrg, &cPicYuvTrueOrg, ipCSC, m_aiPad, m_InputChromaFormatIDC, m_bClipInputVideoToRec709Range ); 2054 2054 2055 2055 // increase number of received frames … … 2200 2200 if( !m_acLayerCfg[layer].getReconFile().empty() && pcPicYuvRec->isReconstructed() ) 2201 2201 { 2202 #if SVC_EXTENSION2203 2202 m_acTVideoIOYuvReconFile[layer].write( pcPicYuvRec, ipCSC, m_acLayerCfg[layer].getConfWinLeft() * xScal, m_acLayerCfg[layer].getConfWinRight() * xScal, 2204 m_acLayerCfg[layer].getConfWinTop() * yScal, m_acLayerCfg[layer].getConfWinBottom() * yScal ); 2205 #else 2206 m_acTVideoIOYuvReconFile[layer].write( pcPicYuvRec, ipCSC, m_acLayerCfg[layer].getConfWinLeft(), m_acLayerCfg[layer].getConfWinRight(), 2207 m_acLayerCfg[layer].getConfWinTop(), m_acLayerCfg[layer].getConfWinBottom() ); 2208 #endif 2203 m_acLayerCfg[layer].getConfWinTop() * yScal, m_acLayerCfg[layer].getConfWinBottom() * yScal, 2204 NUM_CHROMA_FORMAT, m_bClipOutputVideoToRec709Range ); 2209 2205 } 2210 2206 } … … 2340 2336 if (m_pchReconFile) 2341 2337 { 2342 m_cTVideoIOYuvReconFile.write( pcPicYuvRec, ipCSC, m_confWinLeft, m_confWinRight, m_confWinTop, m_confWinBottom ); 2338 m_cTVideoIOYuvReconFile.write( pcPicYuvRec, ipCSC, m_confWinLeft, m_confWinRight, m_confWinTop, m_confWinBottom, 2339 NUM_CHROMA_FORMAT, m_bClipOutputVideoToRec709Range ); 2343 2340 } 2344 2341 -
branches/SHM-dev/source/Lib/TLibCommon/CommonDef.h
r1304 r1323 213 213 #define ADAPT_SR_SCALE 1 ///< division factor for adaptive search range 214 214 215 #define CLIP_TO_709_RANGE 0216 217 215 // Early-skip threshold (encoder) 218 216 #define EARLY_SKIP_THRES 1.50 ///< if RD < thres*avg[BestSkipRD] -
branches/SHM-dev/source/Lib/TLibVideoIO/TVideoIOYuv.cpp
r1320 r1323 678 678 * @return true for success, false in case of error 679 679 */ 680 Bool TVideoIOYuv::read ( TComPicYuv* pPicYuvUser, TComPicYuv* pPicYuvTrueOrg, const InputColourSpaceConversion ipcsc, Int aiPad[2], ChromaFormat format )680 Bool TVideoIOYuv::read ( TComPicYuv* pPicYuvUser, TComPicYuv* pPicYuvTrueOrg, const InputColourSpaceConversion ipcsc, Int aiPad[2], ChromaFormat format, const Bool bClipToRec709 ) 681 681 { 682 682 // check end-of-file … … 720 720 const Int desired_bitdepth = m_MSBExtendedBitDepth[chType] + m_bitdepthShift[chType]; 721 721 722 #if !CLIP_TO_709_RANGE 723 const Pel minval = 0; 724 const Pel maxval = (1 << desired_bitdepth) - 1; 725 #else 726 const Bool b709Compliance=(m_bitdepthShift[chType] < 0 && desired_bitdepth >= 8); /* ITU-R BT.709 compliant clipping for converting say 10b to 8b */ 722 const Bool b709Compliance=(bClipToRec709) && (m_bitdepthShift[chType] < 0 && desired_bitdepth >= 8); /* ITU-R BT.709 compliant clipping for converting say 10b to 8b */ 727 723 const Pel minval = b709Compliance? (( 1 << (desired_bitdepth - 8)) ) : 0; 728 724 const Pel maxval = b709Compliance? ((0xff << (desired_bitdepth - 8)) -1) : (1 << desired_bitdepth) - 1; 729 #endif730 725 731 726 if (! readPlane(pPicYuv->getAddr(compID), m_cHandle, is16bit, stride444, width444, height444, pad_h444, pad_v444, compID, pPicYuv->getChromaFormat(), format, m_fileBitdepth[chType])) … … 760 755 * @return true for success, false in case of error 761 756 */ 762 Bool TVideoIOYuv::write( TComPicYuv* pPicYuvUser, const InputColourSpaceConversion ipCSC, Int confLeft, Int confRight, Int confTop, Int confBottom, ChromaFormat format )757 Bool TVideoIOYuv::write( TComPicYuv* pPicYuvUser, const InputColourSpaceConversion ipCSC, Int confLeft, Int confRight, Int confTop, Int confBottom, ChromaFormat format, const Bool bClipToRec709 ) 763 758 { 764 759 TComPicYuv cPicYuvCSCd; … … 811 806 const ComponentID compID=ComponentID(comp); 812 807 const ChannelType ch=toChannelType(compID); 813 #if !CLIP_TO_709_RANGE 814 const Pel minval = 0; 815 const Pel maxval = (1 << m_MSBExtendedBitDepth[ch]) - 1; 816 #else 817 const Bool b709Compliance=(-m_bitdepthShift[ch] < 0 && m_MSBExtendedBitDepth[ch] >= 8); /* ITU-R BT.709 compliant clipping for converting say 10b to 8b */ 808 const Bool b709Compliance = bClipToRec709 && (-m_bitdepthShift[ch] < 0 && m_MSBExtendedBitDepth[ch] >= 8); /* ITU-R BT.709 compliant clipping for converting say 10b to 8b */ 818 809 const Pel minval = b709Compliance? (( 1 << (m_MSBExtendedBitDepth[ch] - 8)) ) : 0; 819 810 const Pel maxval = b709Compliance? ((0xff << (m_MSBExtendedBitDepth[ch] - 8)) -1) : (1 << m_MSBExtendedBitDepth[ch]) - 1; 820 #endif821 811 822 812 scalePlane(dstPicYuv->getAddr(compID), dstPicYuv->getStride(compID), dstPicYuv->getWidth(compID), dstPicYuv->getHeight(compID), -m_bitdepthShift[ch], minval, maxval); … … 852 842 } 853 843 854 Bool TVideoIOYuv::write( TComPicYuv* pPicYuvUserTop, TComPicYuv* pPicYuvUserBottom, const InputColourSpaceConversion ipCSC, Int confLeft, Int confRight, Int confTop, Int confBottom, ChromaFormat format, const Bool isTff )844 Bool TVideoIOYuv::write( TComPicYuv* pPicYuvUserTop, TComPicYuv* pPicYuvUserBottom, const InputColourSpaceConversion ipCSC, Int confLeft, Int confRight, Int confTop, Int confBottom, ChromaFormat format, const Bool isTff, const Bool bClipToRec709 ) 855 845 { 856 846 … … 906 896 const ComponentID compID=ComponentID(comp); 907 897 const ChannelType ch=toChannelType(compID); 908 #if !CLIP_TO_709_RANGE 909 const Pel minval = 0; 910 const Pel maxval = (1 << m_MSBExtendedBitDepth[ch]) - 1; 911 #else 912 const Bool b709Compliance=(-m_bitdepthShift[ch] < 0 && m_MSBExtendedBitDepth[ch] >= 8); /* ITU-R BT.709 compliant clipping for converting say 10b to 8b */ 898 const Bool b709Compliance=bClipToRec709 && (-m_bitdepthShift[ch] < 0 && m_MSBExtendedBitDepth[ch] >= 8); /* ITU-R BT.709 compliant clipping for converting say 10b to 8b */ 913 899 const Pel minval = b709Compliance? (( 1 << (m_MSBExtendedBitDepth[ch] - 8)) ) : 0; 914 900 const Pel maxval = b709Compliance? ((0xff << (m_MSBExtendedBitDepth[ch] - 8)) -1) : (1 << m_MSBExtendedBitDepth[ch]) - 1; 915 #endif916 901 917 902 scalePlane(dstPicYuv->getAddr(compID), dstPicYuv->getStride(compID), dstPicYuv->getWidth(compID), dstPicYuv->getHeight(compID), -m_bitdepthShift[ch], minval, maxval); -
branches/SHM-dev/source/Lib/TLibVideoIO/TVideoIOYuv.h
r1307 r1323 72 72 73 73 74 Bool read ( TComPicYuv* pPicYuv, TComPicYuv* pPicYuvTrueOrg, const InputColourSpaceConversion ipcsc, Int aiPad[2], ChromaFormat fileFormat=NUM_CHROMA_FORMAT ); ///< read one frame with padding parameter 75 Bool write ( TComPicYuv* pPicYuv, const InputColourSpaceConversion ipCSC, Int confLeft=0, Int confRight=0, Int confTop=0, Int confBottom=0, ChromaFormat fileFormat=NUM_CHROMA_FORMAT ); ///< write one YUV frame with padding parameter 76 Bool write ( TComPicYuv* pPicYuvTop, TComPicYuv* pPicYuvBottom, const InputColourSpaceConversion ipCSC, Int confLeft=0, Int confRight=0, Int confTop=0, Int confBottom=0, ChromaFormat fileFormat=NUM_CHROMA_FORMAT, Bool isTff=false); 74 // If fileFormat=NUM_CHROMA_FORMAT, use the format defined by pPicYuvTrueOrg 75 Bool read ( TComPicYuv* pPicYuv, TComPicYuv* pPicYuvTrueOrg, const InputColourSpaceConversion ipcsc, Int aiPad[2], ChromaFormat fileFormat=NUM_CHROMA_FORMAT, const Bool bClipToRec709=false ); ///< read one frame with padding parameter 76 77 // If fileFormat=NUM_CHROMA_FORMAT, use the format defined by pPicYuv 78 Bool write ( TComPicYuv* pPicYuv, const InputColourSpaceConversion ipCSC, Int confLeft=0, Int confRight=0, Int confTop=0, Int confBottom=0, ChromaFormat fileFormat=NUM_CHROMA_FORMAT, const Bool bClipToRec709=false ); ///< write one YUV frame with padding parameter 79 80 // If fileFormat=NUM_CHROMA_FORMAT, use the format defined by pPicYuvTop and pPicYuvBottom 81 Bool write ( TComPicYuv* pPicYuvTop, TComPicYuv* pPicYuvBottom, const InputColourSpaceConversion ipCSC, Int confLeft=0, Int confRight=0, Int confTop=0, Int confBottom=0, ChromaFormat fileFormat=NUM_CHROMA_FORMAT, const Bool isTff=false, const Bool bClipToRec709=false); 77 82 static Void ColourSpaceConvert(const TComPicYuv &src, TComPicYuv &dest, const InputColourSpaceConversion conversion, Bool bIsForwards); 78 83
Note: See TracChangeset for help on using the changeset viewer.