Changeset 5 in 3DVCSoftware
- Timestamp:
- 12 Dec 2011, 18:35:44 (13 years ago)
- Location:
- trunk
- Files:
-
- 145 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/cfg/encoder_mvd.cfg
r2 r5 1 2 3 1 #======== File I/O ===================== 4 2 InputFile_0 : BookArrival_256x192\video\BookArrival_256x192_15_08.yuv … … 21 19 22 20 23 24 21 #====== General Coding Parameters ====== 25 22 NumberOfViews : 3 # Number of views to be coded 26 23 CodeDepthMaps : 1 # Encode depth maps 27 24 FramesToBeEncoded : 5 # Number of frames to be coded 28 29 25 SourceWidth : 256 # Input frame width 30 26 SourceHeight : 192 # Input frame height … … 35 31 InternalBitDepth : 10 # Internal bit-depth 36 32 37 38 39 33 #====== Camera Parameters ====== 40 34 CameraParameterFile : BookArrival_256x192\cam_bookarrival.cfg # Camera parameter file 41 35 BaseViewCameraNumbers : 8 10 6 # Cameras in coding order [only NumberOfViews values are used] 42 CodedCamParsPrecision : 2 # precision for camera parameter coding (max. disparity error = 2^(-x)) [default: 2] 43 36 CodedCamParsPrecision : 5 # precision for camera parameter coding (max. disparity error = 2^(-x)) [default: 2] 44 37 45 38 #======== Unit definition ================ … … 53 46 QuadtreeTUMaxDepthIntra : 3 54 47 55 56 57 48 #======== Coding Structure ============= 58 GOPSize : 4# GOP Size (number of B slice = GOPSize-1)59 RateGOPSize : 4# GOP size used for QP assignment49 GOPSize : 8 # GOP Size (number of B slice = GOPSize-1) 50 RateGOPSize : 8 # GOP size used for QP assignment 60 51 LowDelayCoding : 0 # Low-delay coding structure 61 GOPFormatString : IL0PL 0(V0)_0*n{PL0(-4)PL0(-4,V0)_3BL1(-2;+2)BL1(-2;+2,V0)_1BL2(-1;+1)BL2(-1;+1,V0)_0BL2(-1;+1)BL2(-1,V0;+1)_2}62 Code cPictureStoreSize : 16 # size of coded picture buffer52 GOPFormatString : IL0PL3(V0)_0*n{ *2{ PL0(-8)PL3(-8,V0)_7 BL1(-4;+4)BL4(-4,V0;+4)_3 BL2(-2;+2,+6)BL5(-2,V0;+2,+6)_1 BL2(-2,-6;+2)BL5(-2,-6,V0;+2)_5 BL3(-1;+1,+3)BL6(-1,V0;+1,+3)_0 BL3(-1,-3;+1,+5)BL6(-1,-3,V0;+1,+5)_2 BL3(-1,-5;+1,+3)BL6(-1,-5,V0;+1,+3)_4 BL3(-1,-3;+1)BL6(-1,-3,V0;+1)_6 }*1{ IL0PL3(V0)_7 BL1(-4;+4)BL4(-4,V0;+4)_3 BL2(-2;+2,+6)BL5(-2,V0;+2,+6)_1 BL2(-2,-6;+2)BL5(-2,-6,V0;+2)_5 BL3(-1;+1,+3)BL6(-1,V0;+1,+3)_0 BL3(-1,-3;+1,+5)BL6(-1,-3,V0;+1,+5)_2 BL3(-1,-5;+1,+3)BL6(-1,-5,V0;+1,+3)_4 BL3(-1,-3;+1)BL6(-1,-3,V0;+1)_6 } } 53 CodedPictureStoreSize : 9 63 54 TemporalLayerQPOffset_L0 : 0 # QP offset for layer 0 64 TemporalLayerQPOffset_L1 : 3 # QP offset for layer 1 65 TemporalLayerQPOffset_L2 : 4 # QP offset for layer 2 66 TemporalLayerQPOffset_L3 : 5 # QP offset for layer 3 67 68 69 70 #=========== Interpolation Filter ============= 71 RoundingControlBipred : 0 72 73 55 TemporalLayerQPOffset_L1 : 1 # QP offset for layer 1 56 TemporalLayerQPOffset_L2 : 2 # QP offset for layer 2 57 TemporalLayerQPOffset_L3 : 3 # QP offset for layer 3 58 TemporalLayerQPOffset_L4 : 4 # QP offset for layer 4 59 TemporalLayerQPOffset_L5 : 5 # QP offset for layer 5 60 TemporalLayerQPOffset_L6 : 6 # QP offset for layer 6 61 TemporalLayerQPOffset_L7 : 7 # QP offset for layer 7 74 62 75 63 #=========== Motion Search ============= … … 81 69 82 70 #============= VSO ============= 83 VSO Mode : 4 # VSO Mode Currently only (0: off or 4: Using RM)84 #VSOConfig : [cx0 E(s0.5)][cx1 B(cc0) I(s0.5)] #VSO Configuration (2-View) coding order 0 1 85 VSOConfig : [cx0 B(cc1) I(s0.5)][cx1 E(s0 s2)][cx2 B(cc1) I(s1.5)] #VSO Configuration (3-View) coding order 1 0 2 oder 1 2086 AllowNegDist : 1 71 VSO : 1 # View Synthesis Optimization 72 VSOConfig : [cx0 B(cc1) I(s0.5)][cx1 B(oo0) B(oo2) I(s0.5 s1.5)][cx2 B(cc1) I(s1.5)] #VSO Configuration (3-View) coding order 1 0 2 oder 1 2 0 73 #VSOConfig : [cx0 B(cc1) I(s0.5)][cx1 B(oo0) I(s0.5)] #VSO Configuration (2-View) coding order 1 0 74 87 75 #======== Quantization ============= 88 76 QP : 32 34 # Quantization parameter(0-51), second QP for Depth 89 77 MaxDeltaQP : 0 # CU-based multi-QP optimization 90 78 DeltaQpRD : 0 # Slice-based multi-QP optimization 91 RDOQ : 1 # RDOQ 92 93 79 RDOQ : 1 1 # RDOQ 94 80 95 81 #=========== Entropy Coding ============ 96 82 SymbolMode : 1 # 0:LCEC, 1:CABAC 97 98 99 83 100 84 #=========== Deblock Filter ============ … … 102 86 LoopFilterAlphaC0Offset : 0 # Range: -26 ~ 26 103 87 LoopFilterBetaOffset : 0 # Range: -26 ~ 26 104 105 106 88 107 89 #=========== Coding Tools ================= … … 127 109 # If EntropySliceMode==1 it represents max. LCU per entropy slice. 128 110 # If EntropySliceMode==2 it represents max. bins per entropy slice. 129 130 OmitUnusedBlocks : 0 # Omit coding of blocks not used for rendering131 VSO : 1 # View Synthesis Optimization132 111 DMM : 1 # Depth model modes intra luma (0: OFF, 1: ON) 133 112 MVI : 1 # Motion vector inheritance for depth map coding (0: OFF, 1: ON) 134 135 113 136 114 #====== multiview mv/res prediction ====== … … 147 125 148 126 #====== InterViewSkip == 149 InterViewSkip : 1127 InterViewSkip : 0 150 128 InterViewSkipLambdaScale : 8 129 -
trunk/cfg/renderer.cfg
r2 r5 1 1 #======== Input and Output Files ======= 2 VideoInputFileBaseName : C:\md\vids\original\MPEG_MVD_bookarrival_VN$_CTv_RS768X1024.yuv # input video file basename, '$' is replaced by ViewNumber3 DepthInputFileBaseName : C:\md\vids\original\MPEG_MVD_bookarrival_VN$_CTd_RS768X1024.yuv # input depth file basename, '$' is replaced by ViewNumber4 SynthOutputFileBaseName : C:\md\temp\book_synth_$_RS768X1024.yuv # output video file basename, '$' is replaced by ViewNumber2 VideoInputFileBaseName : C:\md\vids\original\MPEG_MVD_bookarrival_VN$_CTv_RS768X1024.yuv # input video file basename, '$' is replaced by BaseViewCameraNumber 3 DepthInputFileBaseName : C:\md\vids\original\MPEG_MVD_bookarrival_VN$_CTd_RS768X1024.yuv # input depth file basename, '$' is replaced by BaseViewCameraNumber 4 SynthOutputFileBaseName : C:\md\temp\book_synth_$_RS768X1024.yuv # output video file basename, '$' is replaced by SynthViewCameraNumber 5 5 ContOutputFileNumbering : 0 # for SynthOutputFileBaseName only: 0 = Replace '$' with real view numbers, 1 = Replace '$' from Left View to Right View beginning with 0 6 7 #======== Input and Output Files (alternatively )======= 8 #VideoInputFile_0 : C:\md\vids\original\MPEG_MVD_bookarrival_VN10_CTv_RS768X1024.yuv 9 #VideoInputFile_1 : C:\md\vids\original\MPEG_MVD_bookarrival_VN08_CTv_RS768X1024.yuv 10 #VideoInputFile_2 : C:\md\vids\original\MPEG_MVD_bookarrival_VN06_CTv_RS768X1024.yuv 11 12 #DepthInputFile_0 : C:\md\vids\original\MPEG_MVD_bookarrival_VN10_CTd_RS768X1024.yuv 13 #DepthInputFile_1 : C:\md\vids\original\MPEG_MVD_bookarrival_VN08_CTd_RS768X1024.yuv 14 #DepthInputFile_2 : C:\md\vids\original\MPEG_MVD_bookarrival_VN06_CTd_RS768X1024.yuv 15 16 #SynthOutputFile_0 : C:\md\temp\book_synth_0_RS768X1024.yuv 17 #SynthOutputFile_1 : C:\md\temp\book_synth_1_RS768X1024.yuv 18 #SynthOutputFile_2 : C:\md\temp\book_synth_2_RS768X1024.yuv 19 # ... 20 6 21 7 22 #======== File Specification ======= … … 12 27 13 28 #======== Camera Specification ======= 14 BaseViewCameraNumbers : 10 8 15 SynthViewCameraNumbers : 0 : 0.25 : 2 # numbers or range of synthesized views 29 BaseViewCameraNumbers : 10 8 6 # numbers of base views, (From left to right) 30 SynthViewCameraNumbers : 0 : 0.25 : 2 # numbers or range of synthesized views (original views are copied) 16 31 CameraParameterFile : c:\md\codecs\MVDC005_64\cfg\cam_para.cfg # name of camera parameter file 17 32 … … 20 35 RendererMode : 0 # 0: use Renderer, 1: use Model, 10: generate used pels map 21 36 22 #======== Sampling ========23 UVup : 1 # upsampling of chroma planes before processing24 Log2SamplingFactor : 0 # factor for horizontal upsampling before processing (Only supported for Interpolation mode 1)25 26 37 #======== Pre/ PostProcesssing ======== 27 PreProcMode : 0 # depth pre-processing: 0 = none, 1 = binominal filtering 28 PreFilterSize : 0 # for PreProcMode = 1: half size of filter kernel 29 TemporalDepthFilter : 1 # 0: off, 1: temporal depth filter of non-moving blocks ( tool from VSRS Software) 30 PostProcMode : 0 # 0: none, 1: horizontal 3-tap median 38 TemporalDepthFilter : 0 # 0: off, 1: temporal depth filter of non-moving blocks ( tool from VSRS Software) 39 SimEnhance : 1 # 0: off, 1: on, Similarity enhancement 31 40 32 41 #======== Interpolation ======== 33 InterpolationMode : 4 # 0: NN, 1:linear (int), 2:linear (double) , 3:cspline (double), 4: 8-tap/4-tap HEVC (int) 34 ShiftPrecision : 2 # precision of Shifts 0: full pel, 1: half pel, 2: quater pel( should be 0 for interpolation modes 0, 2 and 3) 42 ShiftPrecision : 2 # precision of Shifts 0: full pel, 1: half pel, 2: quater pel 35 43 36 44 #======== Hole Filling ======== … … 41 49 BlendZThresPerc : 30 # Z-difference threshold for blending in percent of total Z-range 42 50 BlendUseDistWeight : 1 # 0: blending using average; 1: weight blending depending on view distance 43 BlendHoleMargin : 4 # Margin next holes to fillwith other view in interpolation or to cut in extrapolation ( should be 2 for extrapolation)51 BlendHoleMargin : 6 # Margin next holes to blend with other view in interpolation or to cut in extrapolation ( should be 2 for extrapolation) 44 52 45 #======== Used Pel Map Generation========46 UsedPelMapMarExt : 0 # Dilation width of used pel map 53 #======== Others =========== 54 Sweep : 0 # Output all views to one file -
trunk/source/App/TAppCommon/TAppComCamPara.cpp
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/App/TAppCommon/TAppComCamPara.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/App/TAppCommon/program_options_lite.cpp
r2 r5 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-2011, 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 1 34 2 35 #include <stdlib.h> -
trunk/source/App/TAppCommon/program_options_lite.h
r2 r5 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-2011, 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 1 34 2 35 #include <iostream> -
trunk/source/App/TAppDecoder/TAppDecCfg.cpp
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/App/TAppDecoder/TAppDecCfg.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/App/TAppDecoder/TAppDecTop.cpp
r2 r5 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-2011, 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 1 34 2 35 … … 48 81 m_apcBitstream = NULL; 49 82 } 50 #if SB_MEM_FIX51 83 if( m_pchBitstreamFile ) 52 84 { … … 57 89 free(m_pchReconFile); 58 90 } 59 #endif60 91 } 61 92 -
trunk/source/App/TAppDecoder/TAppDecTop.h
r2 r5 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-2011, 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 1 34 2 35 … … 36 69 std::vector<TVideoIOYuv*> m_acTVideoIOYuvReconFileList; 37 70 std::vector<TVideoIOYuv*> m_acTVideoIOYuvDepthReconFileList; 38 71 39 72 Bool m_bUsingDepth; 40 73 41 74 // for output control 42 //SB can be deleted?43 75 Bool m_abDecFlag[ MAX_GOP ]; ///< decoded flag in one GOP 44 76 // Int m_iPOCLastDisplay; ///< last POC in display order … … 50 82 FILE* m_pScaleOffsetFile; 51 83 CamParsCollector m_cCamParsCollector; 84 #if DEPTH_MAP_GENERATION 52 85 TComSPSAccess m_cSPSAccess; 53 86 TComAUPicAccess m_cAUPicAccess; 54 87 #endif 88 55 89 public: 56 90 TAppDecTop(); 57 91 virtual ~TAppDecTop() {} 58 92 59 93 Void create (); ///< create internal members 60 94 Void destroy (); ///< destroy internal members … … 68 102 // GT FIX END 69 103 104 #if DEPTH_MAP_GENERATION 70 105 TComSPSAccess* getSPSAccess () { return &m_cSPSAccess; } 71 106 TComAUPicAccess* getAUPicAccess() { return &m_cAUPicAccess; } 72 107 #endif 108 73 109 protected: 74 110 Void xCreateDecLib (); ///< create internal classes 75 111 Void xDestroyDecLib (); ///< destroy internal classes 76 112 Void xInitDecLib (); ///< initialize decoder class 77 113 78 114 Void xWriteOutput ( TComList<TComPic*>* pcListPic ); ///< write YUV to file 79 115 }; -
trunk/source/App/TAppDecoder/decmain.cpp
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/App/TAppEncoder/TAppEncCfg.cpp
r2 r5 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-2011, 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 1 34 2 35 … … 39 72 { 40 73 m_aidQP = NULL; 41 //GTVSO74 #if HHI_VSO 42 75 m_aaiERViewRefLutInd.resize( MAX_INPUT_VIEW_NUM ); 43 //GT VSO end 76 #endif 44 77 } 45 78 … … 89 122 free (m_pchBaseViewCameraNumbers); 90 123 124 #if HHI_VSO 91 125 if ( m_pchVSOConfig != NULL) 92 126 free ( m_pchVSOConfig ); 127 #endif 93 128 94 129 } … … 172 207 173 208 /* Coding structure paramters */ 174 ("Code cPictureStoreSize,cpss", m_uiCodedPictureStoreSize, 16u, "Size of coded picture Buffer")209 ("CodedPictureStoreSize,cpss", m_uiCodedPictureStoreSize, 16u, "Size of coded picture Buffer") 175 210 #if DCM_DECODING_REFRESH 176 211 ("DecodingRefreshType,-dr",m_iDecodingRefreshType, 0, "intra refresh, (0:none 1:CDR 2:IDR)") … … 178 213 ("GOPSize,g", m_iGOPSize, 1, "GOP size of temporal structure") 179 214 ("RateGOPSize,-rg",m_iRateGOPSize, -1, "GOP size of hierarchical QP assignment (-1: implies inherit GOPSize value)") 180 #if ! SB_NO_LowDelayCoding215 #if !HHI_NO_LowDelayCoding 181 216 ("LowDelayCoding", m_bUseLDC, false, "low-delay mode") 182 217 #endif … … 221 256 ("LoopFilterBetaOffset", m_iLoopFilterBetaOffset, 0 ) 222 257 223 //GT campara 258 /* Camera Paremetes */ 224 259 ("CameraParameterFile,cpf", m_pchCameraParameterFile, (Char *) 0, "Camera Parameter File Name") 225 260 ("BaseViewCameraNumbers" , m_pchBaseViewCameraNumbers, (Char *) 0, "Numbers of base views") 226 //GT campara end 261 227 262 228 263 /* View Synthesis Optimization */ 229 //GT VSO 264 265 #if HHI_VSO 230 266 ("VSOConfig", m_pchVSOConfig , (Char *) 0 , "VSO configuration") 231 267 ("VSO", m_bUseVSO , false , "Use VSO" ) 232 268 // GT: For development, will be removed later 233 269 ("VSOMode", m_uiVSOMode , (UInt) 4 , "VSO Mode") 234 ("LambdaScaleVSO", m_dLambdaScaleVSO , (Double) 0. 6, "Lambda Scaling for VSO")270 ("LambdaScaleVSO", m_dLambdaScaleVSO , (Double) 0.5 , "Lambda Scaling for VSO") 235 271 ("ForceLambdaScaleVSO", m_bForceLambdaScaleVSO , false , "Force using Lambda Scale VSO also in non-VSO-Mode") 236 #if RDO_DIST_INT272 #if HHI_VSO_DIST_INT 237 273 ("AllowNegDist", m_bAllowNegDist , true , "Allow negative Distortion in VSO") 238 274 #endif … … 242 278 ("VSERViewReferences_%d,evr_%d" , m_aaiERViewRefInd , vector<Int>() , MAX_INPUT_VIEW_NUM, "Numbers of external virtual reference views to be used for this view") 243 279 ("VSBaseViewReferences_%d,bvr_%d", m_aaiBaseViewRefInd , vector<Int>() , MAX_INPUT_VIEW_NUM, "Numbers of external virtual reference views to be used for this view") 244 //GT VSO end 280 #endif 245 281 246 282 /* Coding tools */ … … 281 317 ("FEN", m_bUseFastEnc, false, "fast encoder setting") 282 318 283 #if HHI_DMM_INTRA 284 ("DMM", m_bUseDepthModelModes, false, "add depth modes intra") 285 #endif 319 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 320 ("DMM", m_bUseDMM, false, "add depth modes intra") 321 #endif 322 #if HHI_MPI 286 323 ("MVI", m_bUseMVI, false, "use motion vector inheritance for depth map coding") 324 #endif 287 325 288 326 /* Multiview tools */ 327 #if DEPTH_MAP_GENERATION 289 328 ("PredDepthMapGen", m_uiPredDepthMapGeneration, (UInt)0, "generation of prediction depth maps for motion data prediction" ) 329 #endif 330 #if HHI_INTER_VIEW_MOTION_PRED 290 331 ("MultiviewMvPred", m_uiMultiviewMvPredMode, (UInt)0, "usage of predicted depth maps" ) 291 332 ("MultiviewMvRegMode", m_uiMultiviewMvRegMode, (UInt)0, "regularization mode for multiview motion vectors" ) 292 333 ("MultiviewMvRegLambdaScale", m_dMultiviewMvRegLambdaScale, (Double)0, "lambda scale for multiview motion vector regularization" ) 334 #endif 335 #if HHI_INTER_VIEW_RESIDUAL_PRED 293 336 ("MultiviewResPred", m_uiMultiviewResPredMode, (UInt)0, "usage of inter-view residual prediction" ) 294 295 ("OmitUnusedBlocks", m_bOmitUnusedBlocks, false, "omit blocks not used for rendering") 337 #endif 296 338 297 339 ("QpChangeFrame", m_iQpChangeFrame, PicOrderCnt(0), "start frame for QP change") 298 340 ("QpChangeOffsetVideo", m_iQpChangeOffsetVideo, 0, "QP change offset for video") 299 341 ("QpChangeOffsetDepth", m_iQpChangeOffsetDepth, 0, "QP change offset for depth") 300 #if SB_INTERVIEW_SKIP342 #if HHI_INTERVIEW_SKIP 301 343 ("InterViewSkip", m_uiInterViewSkip, (UInt)0, "usage of interview skip" ) 302 #if SB_INTERVIEW_SKIP_LAMBDA_SCALE344 #if HHI_INTERVIEW_SKIP_LAMBDA_SCALE 303 345 ("InterViewSkipLambdaScale", m_dInterViewSkipLambdaScale, (Double)8, "lambda scale for interview skip" ) 304 346 #endif … … 387 429 //GT QP Depth end 388 430 389 //GTVSO431 #if HHI_VSO 390 432 m_bUseVSO = m_bUseVSO && m_bUsingDepthMaps && (m_uiVSOMode != 0); 391 //GT VSO end 433 #endif 392 434 393 435 xCleanUpVectors(); 394 436 437 #if HHI_VSO 395 438 if ( m_abUseALF .size() < 2) 396 439 m_abUseALF .push_back( m_bUseVSO ? false : m_abUseALF[0] ); 397 440 398 441 if ( m_abUseRDOQ.size() < 2) 399 m_abUseRDOQ.push_back( m_bUseVSO ? false : m_abUseRDOQ[0] );442 m_abUseRDOQ.push_back( m_bUseVSO ? true : m_abUseRDOQ[0] ); 400 443 401 444 if ( m_abLoopFilterDisable.size() < 2) … … 404 447 if (m_abUseSAO.size() < 2) 405 448 m_abUseSAO.push_back ( m_bUseVSO ? false : m_abUseSAO[0] ); 406 407 //GT VSO 449 #else 450 if ( m_abUseALF .size() < 2) 451 m_abUseALF .push_back( m_abUseALF[0] ); 452 453 if ( m_abUseRDOQ.size() < 2) 454 m_abUseRDOQ.push_back( m_abUseRDOQ[0] ); 455 456 if ( m_abLoopFilterDisable.size() < 2) 457 m_abLoopFilterDisable.push_back( m_abLoopFilterDisable[0] ); 458 459 if (m_abUseSAO.size() < 2) 460 m_abUseSAO.push_back ( m_abUseSAO[0] ); 461 #endif 462 463 #if HHI_VSO 408 464 if ( m_bUseVSO ) 409 465 { … … 423 479 } 424 480 } 425 //GT VSO end 481 #endif 426 482 427 483 // set global variables … … 429 485 430 486 // read and check camera parameters 487 #if HHI_VSO 431 488 if ( m_bUseVSO && m_uiVSOMode == 4) 432 489 { … … 468 525 NULL, 469 526 LOG2_DISP_PREC_LUT ); 470 471 } 527 } 528 #else 529 m_cCameraData .init ( (UInt)m_iNumberOfViews, 530 m_uiInputBitDepth, 531 (UInt)m_iCodedCamParPrecision, 532 m_FrameSkip, 533 (UInt)m_iFrameToBeEncoded, 534 m_pchCameraParameterFile, 535 m_pchBaseViewCameraNumbers, 536 NULL, 537 NULL, 538 LOG2_DISP_PREC_LUT ); 539 #endif 540 541 472 542 // check validity of input parameters 473 543 xCheckParameter(); … … 558 628 559 629 xConfirmPara ( m_iCodedCamParPrecision < 0 || m_iCodedCamParPrecision > 5, "CodedCamParsPrecision must be in range of 0..5" ); 630 #if DEPTH_MAP_GENERATION 560 631 xConfirmPara ( m_uiPredDepthMapGeneration > 3, "PredDepthMapGen must be less than or equal to 3" ); 561 632 xConfirmPara ( m_uiPredDepthMapGeneration >= 2 && !m_bUsingDepthMaps, "PredDepthMapGen >= 2 requires CodeDepthMaps = 1" ); 633 #endif 634 #if HHI_INTER_VIEW_MOTION_PRED 562 635 xConfirmPara ( m_uiMultiviewMvPredMode > 7, "MultiviewMvPred must be less than or equal to 7" ); 563 636 xConfirmPara ( m_uiMultiviewMvPredMode > 0 && m_uiPredDepthMapGeneration == 0 , "MultiviewMvPred > 0 requires PredDepthMapGen > 0" ); … … 568 641 xConfirmPara ( Int( m_pchDepthInputFileList.size() ) < m_iNumberOfViews, "MultiviewMvRegMode > 0 requires the presence of input depth maps" ); 569 642 } 643 #endif 644 #if HHI_INTER_VIEW_RESIDUAL_PRED 570 645 xConfirmPara ( m_uiMultiviewResPredMode > 1, "MultiviewResPred must be less than or equal to 1" ); 571 646 xConfirmPara ( m_uiMultiviewResPredMode > 0 && m_uiPredDepthMapGeneration == 0 , "MultiviewResPred > 0 requires PredDepthMapGen > 0" ); 572 573 #if SB_INTERVIEW_SKIP 647 #endif 648 649 #if HHI_INTERVIEW_SKIP 574 650 xConfirmPara ( m_uiInterViewSkip > 1, "RenderingSkipMode > 1 not supported" ); 575 651 xConfirmPara ( m_uiInterViewSkip > 0 && !m_bUsingDepthMaps, "RenderingSkipMode > 0 requires CodeDepthMaps = 1" ); 576 xConfirmPara ( m_uiInterViewSkip > 0 && !m_bOmitUnusedBlocks, "RenderingSkipMode > 0 requires OmitUnusedBlocks = 1" );577 652 #endif 578 653 if( m_bUsingDepthMaps ) … … 581 656 xConfirmPara ( Int( m_pchDepthReconFileList.size() ) < m_iNumberOfViews, "Number of DepthReconFiles must be greater than or equal to NumberOfViews" ); 582 657 583 //GTVSO658 #if HHI_VSO 584 659 if( m_bUseVSO ) 585 660 { … … 592 667 xConfirmPara( Int( m_pchERRefFileList .size() ) < m_iNumberOfExternalRefs, "Number of ERRefFileFiles must be greater than or equal to NumberOfExternalRefs" ); 593 668 } 594 //GT VSO end 669 #endif 595 670 } 596 671 597 672 #if DCM_COMB_LIST 598 #if ! SB_NO_LowDelayCoding673 #if !HHI_NO_LowDelayCoding 599 674 xConfirmPara( m_bUseLComb==false && m_bUseLDC==false, "LComb can only be 0 if LowDelayCoding is 1" ); 600 675 #else … … 659 734 xCleanUpVector( m_pchDepthReconFileList, (char*)0 ); 660 735 661 //GTVSO736 #if HHI_VSO 662 737 if ( m_bUseVSO) 663 738 { 664 739 xCleanUpVector( m_pchERRefFileList, (char*)0 ); 665 740 } 666 //GT VSO end 741 #endif 667 742 } 668 743 … … 784 859 printf("Coded Camera Param. Precision: %d\n", m_iCodedCamParPrecision); 785 860 786 //GTVSO861 #if HHI_VSO 787 862 printf("Force use of Lambda Scale : %d\n", m_bForceLambdaScaleVSO ); 788 863 … … 792 867 printf("VSO Mode : %d\n", m_uiVSOMode ); 793 868 printf("VSO Config : %s\n", m_pchVSOConfig ); 794 #if RDO_DIST_INT869 #if HHI_VSO_DIST_INT 795 870 printf("VSO Negative Distortion : %d\n", m_bAllowNegDist ? 1 : 0); 796 871 #endif 797 872 } 798 //GT VSO end 799 800 printf("Omit unused blocks : %d\n", (m_bOmitUnusedBlocks )?(1):(0)); 873 #endif 874 801 875 802 876 printf("\n"); … … 849 923 printf("SAO:%d ", (m_abUseSAO [1] ? 1 : 0)); 850 924 printf("RDQ:%d ", (m_abUseRDOQ[1] ? 1 : 0)); 925 #if HHI_VSO 851 926 printf("VSO:%d ", m_bUseVSO ); 852 #if HHI_DMM_INTRA 853 printf("DMM:%d ", m_bUseDepthModelModes ); 854 #endif 927 #endif 928 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 929 printf("DMM:%d ", m_bUseDMM ); 930 #endif 931 #if HHI_MPI 855 932 printf("MVI:%d ", m_bUseMVI ? 1 : 0 ); 933 #endif 856 934 printf("\n"); 857 935 -
trunk/source/App/TAppEncoder/TAppEncCfg.h
r2 r5 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-2011, 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 1 34 2 35 … … 35 68 36 69 std::vector<char*> m_pchERRefFileList; ///< virtual external reference view files names 37 70 38 71 // source specification 39 72 Int m_iFrameRate; ///< source frame-rates (Hz) … … 44 77 Bool m_bUsePAD; ///< flag for using source padding 45 78 Int m_aiPad[2]; ///< number of padded pixels for width and height 46 79 47 80 Int m_iNumberOfViews; ///< number Views to Encode 48 81 Bool m_bUsingDepthMaps ; … … 56 89 Int m_iGOPSize; ///< GOP size of hierarchical structure 57 90 Int m_iRateGOPSize; ///< GOP size for QP variance 58 #if ! SB_NO_LowDelayCoding91 #if !HHI_NO_LowDelayCoding 59 92 Bool m_bUseLDC; ///< flag for using low-delay coding mode 60 93 #endif … … 63 96 Bool m_bLCMod; ///< flag for specifying whether the combined reference list for uni-prediction in B-slices is uploaded explicitly 64 97 #endif 65 // SB66 98 std::string m_cInputFormatString ; // GOP string 67 99 // coding quality 68 //GT QP Depth 100 69 101 std::vector<Double> m_adQP; ///< QP value of key-picture (floating point) [0] video, [1] depth 70 102 std::vector<Int> m_aiQP; ///< QP value of key-picture (integer) 71 //GT QP Depth end 103 72 104 Int m_aiTLayerQPOffset[MAX_TLAYER]; ///< QP offset corresponding to temporal layer depth 73 105 char* m_pchdQPFile; ///< QP offset for each slice (initialized from external file) … … 75 107 Int m_iMaxDeltaQP; ///< max. |delta QP| 76 108 UInt m_uiDeltaQpRD; ///< dQP range for multi-pass slice QP optimization 77 109 78 110 // coding unit (CU) definition 79 111 UInt m_uiMaxCUWidth; ///< max. CU width in pixel 80 112 UInt m_uiMaxCUHeight; ///< max. CU height in pixel 81 113 UInt m_uiMaxCUDepth; ///< max. CU depth 82 114 83 115 // transfom unit (TU) definition 84 116 UInt m_uiQuadtreeTULog2MaxSize; 85 117 UInt m_uiQuadtreeTULog2MinSize; 86 118 87 119 UInt m_uiQuadtreeTUMaxDepthInter; 88 120 UInt m_uiQuadtreeTUMaxDepthIntra; 89 121 90 122 // coding tools (bit-depth) 91 123 UInt m_uiInputBitDepth; ///< bit-depth of input file … … 95 127 #endif 96 128 UInt m_uiInternalBitDepth; ///< Internal bit-depth (BitDepth+BitIncrement) 97 129 98 130 #if MTK_SAO 99 vector<Bool> m_abUseSAO; 131 vector<Bool> m_abUseSAO; 100 132 #endif 101 133 … … 105 137 Int m_iALFEncodePassReduction; ///< ALF encoding pass, 0 = original 16-pass, 1 = 1-pass, 2 = 2-pass 106 138 #endif 107 139 108 140 vector<Bool> m_abLoopFilterDisable; ///< flag for using deblocking filter filter [0] - video, [1] - depth 109 141 Int m_iLoopFilterAlphaC0Offset; ///< alpha offset for deblocking filter 110 142 Int m_iLoopFilterBetaOffset; ///< beta offset for deblocking filter 111 143 112 144 // coding tools (entropy coder) 113 145 Int m_iSymbolMode; ///< entropy coder mode, 0 = VLC, 1 = CABAC 114 146 115 147 // coding tools (inter - merge motion partitions) 116 148 Bool m_bUseMRG; ///< SOPH: flag for using motion partition Merge Mode 117 118 #if LM_CHROMA 149 150 #if LM_CHROMA 119 151 Bool m_bUseLMChroma; ///< JL: Chroma intra prediction based on luma signal 120 152 #endif … … 123 155 Bool m_bUseRMP; 124 156 #endif 125 157 126 158 // coding tools (encoder-only parameters) 127 159 Bool m_bUseSBACRD; ///< flag for using RD optimization based on SBAC … … 134 166 Bool m_bUseFastEnc; ///< flag for using fast encoder setting 135 167 168 #if DEPTH_MAP_GENERATION 136 169 UInt m_uiPredDepthMapGeneration; ///< using of (virtual) depth maps for texture coding 170 #endif 171 #if HHI_INTER_VIEW_MOTION_PRED 137 172 UInt m_uiMultiviewMvPredMode; ///< usage of predictors for multi-view mv prediction 138 173 UInt m_uiMultiviewMvRegMode; ///< regularization for multiview motion vectors 139 174 Double m_dMultiviewMvRegLambdaScale; ///< lambda scale for multiview motion vectors regularization 175 #endif 176 #if HHI_INTER_VIEW_RESIDUAL_PRED 140 177 UInt m_uiMultiviewResPredMode; ///< using multiview residual prediction 141 142 #if SB_INTERVIEW_SKIP 178 #endif 179 180 #if HHI_INTERVIEW_SKIP 143 181 UInt m_uiInterViewSkip; ///< usage of interview skip mode ( do not transmit residual) 144 #if SB_INTERVIEW_SKIP_LAMBDA_SCALE182 #if HHI_INTERVIEW_SKIP_LAMBDA_SCALE 145 183 Double m_dInterViewSkipLambdaScale; ///< lambda scale for interview skip 146 184 #endif 147 185 #endif 148 //GT campara 186 149 187 // camera parameter 150 188 Char* m_pchCameraParameterFile; ///< camera parameter file 151 189 Char* m_pchBaseViewCameraNumbers; 152 TAppComCamPara m_cCameraData; 153 //GT campara end 190 TAppComCamPara m_cCameraData; 191 154 192 Int m_iCodedCamParPrecision; ///< precision for coding of camera parameters 155 193 194 #if HHI_INTERVIEW_SKIP 156 195 TRenTop m_cUsedPelsRenderer; ///< renderer for used pels map 157 158 //GT VSO 159 Char* m_pchVSOConfig; 160 Bool m_bUseVSO; ///< flag for using View Synthesis Optimization 161 162 //// Used for development by GT, might be removed later 196 #endif 197 198 #if HHI_VSO 199 Char* m_pchVSOConfig; 200 Bool m_bUseVSO; ///< flag for using View Synthesis Optimization 201 202 //// Used for development by GT, might be removed later 163 203 Double m_dLambdaScaleVSO; ///< Scaling factor for Lambda in VSO mode 164 204 Bool m_bForceLambdaScaleVSO; ///< Use Lambda Scale for depth even if VSO is turned off 165 #if RDO_DIST_INT166 Bool m_bAllowNegDist; ///< Allow negative distortion in VSO 167 #endif 168 UInt m_uiVSOMode; ///< Number of VSO Mode, 1 = , 2 = simple, org vs. ren, 3 = simple, ren vs. ren, 4 = full 205 #if HHI_VSO_DIST_INT 206 Bool m_bAllowNegDist; ///< Allow negative distortion in VSO 207 #endif 208 UInt m_uiVSOMode; ///< Number of VSO Mode, 1 = , 2 = simple, org vs. ren, 3 = simple, ren vs. ren, 4 = full 169 209 Int m_iNumberOfExternalRefs; ///< number Virtual External Reference Views 170 210 std::vector< std::vector<Int> > m_aaiBaseViewRefInd; ///< View numbers of Base View References 171 211 std::vector< std::vector<Int> > m_aaiERViewRefInd; ///< View numbers of External ViewReferences 172 212 std::vector< std::vector<Int> > m_aaiERViewRefLutInd; ///< Indices of LUTs used for External View References 173 174 //GT VSO end 175 213 #endif 214 176 215 Int m_iSliceMode; ///< 0: Disable all Recon slice limits, 1 : Maximum number of largest coding units per slice, 2: Maximum number of bytes in a slice 177 216 Int m_iSliceArgument; ///< If m_iSliceMode==1, m_iSliceArgument=max. # of largest coding units. If m_iSliceMode==2, m_iSliceArgument=max. # of bytes. … … 188 227 Bool m_bUseConstrainedIntraPred; ///< flag for using constrained intra prediction 189 228 #endif 190 #if HHI_DMM_INTRA 191 Bool m_bUseDepthModelModes; 192 #endif 229 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 230 Bool m_bUseDMM; 231 #endif 232 #if HHI_MPI 193 233 Bool m_bUseMVI; ///< flag for using Motion Vector Inheritance for depth map coding 194 Bool m_bOmitUnusedBlocks; ///< flag for not coding blocks not used for rendering 234 #endif 195 235 196 236 PicOrderCnt m_iQpChangeFrame; … … 211 251 Void xPrintParameter (); ///< print configuration values 212 252 Void xPrintUsage (); ///< print usage 213 253 214 254 Void xCleanUpVectors (); ///< clean up vector sizes 215 255 Void xInitCameraPars (); ///< init camera parameters … … 221 261 222 262 // util 223 Void xAppendToFileNameEnd( Char* pchInputFileName, const Char* pchStringToAppend, Char* & rpchOutputFileName); 263 Void xAppendToFileNameEnd( Char* pchInputFileName, const Char* pchStringToAppend, Char* & rpchOutputFileName); 224 264 Bool xConfirmParameter(Bool bflag, const char* message); 225 265 … … 227 267 template <class T> Void xCleanUpVector( std::vector<T>& rcVec, const T& rcInvalid ); 228 268 269 #if HHI_VSO 229 270 // Ren Model String 230 TRenModSetupStrParser m_cRenModStrParser; 271 TRenModSetupStrParser m_cRenModStrParser; 272 #endif 231 273 public: 232 274 233 275 TAppEncCfg(); 234 276 virtual ~TAppEncCfg(); 235 277 236 278 public: 237 279 Void create (); ///< create option handling class 238 280 Void destroy (); ///< destroy option handling class 239 281 Bool parseCfg ( Int argc, Char* argv[] ); ///< parse configuration file to fill member variables 240 282 241 283 };// END CLASS DEFINITION TAppEncCfg 242 284 -
trunk/source/App/TAppEncoder/TAppEncTop.cpp
r2 r5 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-2011, 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 1 34 2 35 … … 18 51 TAppEncTop::TAppEncTop() 19 52 { 20 //GTVSO53 #if HHI_VSO 21 54 m_iLastFramePutInERViewBuffer = -1; 22 //GT VSO end 55 #endif 23 56 } 24 57 … … 55 88 m_acTEncTopList[iViewIdx]->setRateGOPSize ( m_iRateGOPSize ); 56 89 57 // // SB58 90 m_acTEncTopList[iViewIdx]->setSeqStructure ( m_cInputFormatString ); 59 91 … … 79 111 m_acTEncTopList[iViewIdx]->setMaxDeltaQP ( m_iMaxDeltaQP ); 80 112 113 #if HHI_VSO 81 114 //====== VSO ========= 82 //GT VSO83 115 m_acTEncTopList[iViewIdx]->setForceLambdaScaleVSO ( false ); 84 116 m_acTEncTopList[iViewIdx]->setLambdaScaleVSO ( 1 ); 85 117 m_acTEncTopList[iViewIdx]->setVSOMode ( 0 ); 86 //GT VSO end 118 #endif 87 119 88 120 //====== Tool list ======== … … 109 141 m_acTEncTopList[iViewIdx]->setUseFastEnc ( m_bUseFastEnc ); 110 142 111 //GTVSO143 #if HHI_VSO 112 144 m_acTEncTopList[iViewIdx]->setUseVSO ( false ); //GT: might be enabled later for VSO Mode 4 113 //GT VSO end 145 #endif 114 146 115 147 m_acTEncTopList[iViewIdx]->setViewId ( (UInt)iViewIdx ); … … 120 152 m_acTEncTopList[iViewIdx]->setCodedScale ( m_cCameraData.getCodedScale () ); 121 153 m_acTEncTopList[iViewIdx]->setCodedOffset ( m_cCameraData.getCodedOffset () ); 154 #if DEPTH_MAP_GENERATION 122 155 m_acTEncTopList[iViewIdx]->setPredDepthMapGeneration ( m_uiPredDepthMapGeneration ); 156 m_acTEncTopList[iViewIdx]->setPdmPrecision ( (UInt)m_cCameraData.getPdmPrecision () ); 157 m_acTEncTopList[iViewIdx]->setPdmScaleNomDelta ( m_cCameraData.getPdmScaleNomDelta () ); 158 m_acTEncTopList[iViewIdx]->setPdmOffset ( m_cCameraData.getPdmOffset () ); 159 #endif 160 #if HHI_INTER_VIEW_MOTION_PRED 123 161 m_acTEncTopList[iViewIdx]->setMultiviewMvPredMode ( m_uiMultiviewMvPredMode ); 124 162 m_acTEncTopList[iViewIdx]->setMultiviewMvRegMode ( iViewIdx ? m_uiMultiviewMvRegMode : 0 ); 125 163 m_acTEncTopList[iViewIdx]->setMultiviewMvRegLambdaScale ( iViewIdx ? m_dMultiviewMvRegLambdaScale : 0.0 ); 126 m_acTEncTopList[iViewIdx]->setPdmPrecision ( (UInt)m_cCameraData.getPdmPrecision () ); 127 m_acTEncTopList[iViewIdx]->setPdmScaleNomDelta ( m_cCameraData.getPdmScaleNomDelta () ); 128 m_acTEncTopList[iViewIdx]->setPdmOffset ( m_cCameraData.getPdmOffset () ); 164 #endif 165 #if HHI_INTER_VIEW_RESIDUAL_PRED 129 166 m_acTEncTopList[iViewIdx]->setMultiviewResPredMode ( m_uiMultiviewResPredMode ); 130 131 #if SB_INTERVIEW_SKIP 167 #endif 168 169 170 #if HHI_INTERVIEW_SKIP 132 171 m_acTEncTopList[iViewIdx]->setInterViewSkip ( iViewIdx ? m_uiInterViewSkip : 0 ); 133 #if SB_INTERVIEW_SKIP_LAMBDA_SCALE134 m_acTEncTopList[iViewIdx]->setInterViewSkipLambdaScale ( iViewIdx ? m_dInterViewSkipLambdaScale : 1 );172 #if HHI_INTERVIEW_SKIP_LAMBDA_SCALE 173 m_acTEncTopList[iViewIdx]->setInterViewSkipLambdaScale ( iViewIdx ? (Int)m_dInterViewSkipLambdaScale : 1 ); 135 174 #endif 136 175 #endif … … 147 186 m_acTEncTopList[iViewIdx]->setUseRoundingControlBipred(m_useRoundingControlBipred); 148 187 #endif 149 #if HHI_DMM_ INTRA150 m_acTEncTopList[iViewIdx]->setUseD epthModelModes( false );188 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 189 m_acTEncTopList[iViewIdx]->setUseDMM( false ); 151 190 #endif 152 191 #if CONSTRAINED_INTRA_PRED … … 175 214 m_acTEncTopList[iViewIdx]->setUseSAO ( m_abUseSAO[0] ); 176 215 #endif 216 #if HHI_MPI 177 217 m_acTEncTopList[iViewIdx]->setUseMVI( false ); 218 #endif 178 219 179 220 m_acTEncTopList[iViewIdx]->setPictureDigestEnabled(m_pictureDigestEnabled); 180 m_acTEncTopList[iViewIdx]->setOmitUnusedBlocks ( m_bOmitUnusedBlocks && (iViewIdx != 0) );181 182 221 m_acTEncTopList[iViewIdx]->setQpChangeFrame( m_iQpChangeFrame ); 183 222 m_acTEncTopList[iViewIdx]->setQpChangeOffsetVideo( m_iQpChangeOffsetVideo ); … … 187 226 { 188 227 189 //GTVSO228 #if HHI_VSO 190 229 for (Int iViewIdx=0; iViewIdx<m_iNumberOfExternalRefs; iViewIdx++) 191 230 { 192 231 m_acTVideoIOYuvERFileList.push_back(new TVideoIOYuv); 193 232 } 194 //GT VSO end 233 #endif 195 234 196 235 for(Int iViewIdx=0; iViewIdx<m_iNumberOfViews; iViewIdx++) … … 219 258 m_acTEncDepthTopList[iViewIdx]->setRateGOPSize ( m_iRateGOPSize ); 220 259 221 // // SB222 260 m_acTEncDepthTopList[iViewIdx]->setSeqStructure ( m_cInputFormatString ); 223 261 … … 266 304 m_acTEncDepthTopList[iViewIdx]->setUseFastEnc ( m_bUseFastEnc ); 267 305 268 //GTVSO306 #if HHI_VSO 269 307 m_acTEncDepthTopList[iViewIdx]->setUseVSO ( m_bUseVSO ); //GT: might be enabled/disabled later for VSO Mode 4 270 308 m_acTEncDepthTopList[iViewIdx]->setForceLambdaScaleVSO ( m_bForceLambdaScaleVSO ); 271 309 m_acTEncDepthTopList[iViewIdx]->setLambdaScaleVSO ( m_dLambdaScaleVSO ); 272 #if RDO_DIST_INT310 #if HHI_VSO_DIST_INT 273 311 m_acTEncDepthTopList[iViewIdx]->setAllowNegDist ( m_bAllowNegDist ); 274 312 #endif 275 313 m_acTEncDepthTopList[iViewIdx]->setVSOMode ( m_uiVSOMode ); 276 //GT VSO end 314 #endif 277 315 278 316 m_acTEncDepthTopList[iViewIdx]->setViewId ( (UInt)iViewIdx ); … … 283 321 m_acTEncDepthTopList[iViewIdx]->setCodedScale ( 0 ); 284 322 m_acTEncDepthTopList[iViewIdx]->setCodedOffset ( 0 ); 323 #if DEPTH_MAP_GENERATION 285 324 m_acTEncDepthTopList[iViewIdx]->setPredDepthMapGeneration ( 0 ); 325 #endif 326 #if HHI_INTER_VIEW_MOTION_PRED 286 327 m_acTEncDepthTopList[iViewIdx]->setMultiviewMvPredMode ( 0 ); 287 328 m_acTEncDepthTopList[iViewIdx]->setMultiviewMvRegMode ( 0 ); 288 329 m_acTEncDepthTopList[iViewIdx]->setMultiviewMvRegLambdaScale ( 0.0 ); 330 #endif 331 #if HHI_INTER_VIEW_RESIDUAL_PRED 289 332 m_acTEncDepthTopList[iViewIdx]->setMultiviewResPredMode ( 0 ); 290 291 #if SB_INTERVIEW_SKIP 333 #endif 334 335 #if HHI_INTERVIEW_SKIP 292 336 m_acTEncDepthTopList[iViewIdx]->setInterViewSkip ( 0 ); 293 #if SB_INTERVIEW_SKIP_LAMBDA_SCALE337 #if HHI_INTERVIEW_SKIP_LAMBDA_SCALE 294 338 m_acTEncDepthTopList[iViewIdx]->setInterViewSkipLambdaScale ( 1 ); 295 339 #endif … … 307 351 m_acTEncDepthTopList[iViewIdx]->setUseRoundingControlBipred(m_useRoundingControlBipred); 308 352 #endif 309 #if HHI_DMM_ INTRA310 m_acTEncDepthTopList[iViewIdx]->setUseD epthModelModes( m_bUseDepthModelModes);353 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 354 m_acTEncDepthTopList[iViewIdx]->setUseDMM( m_bUseDMM ); 311 355 #endif 312 356 #if CONSTRAINED_INTRA_PRED … … 335 379 m_acTEncDepthTopList[iViewIdx]->setUseSAO ( m_abUseSAO[1] ); 336 380 #endif 381 #if HHI_MPI 337 382 m_acTEncDepthTopList[iViewIdx]->setUseMVI( m_bUseMVI ); 383 #endif 338 384 339 385 m_acTEncDepthTopList[iViewIdx]->setPictureDigestEnabled(m_pictureDigestEnabled); 340 m_acTEncDepthTopList[iViewIdx]->setOmitUnusedBlocks ( m_bOmitUnusedBlocks && (iViewIdx != 0) );341 386 342 387 m_acTEncDepthTopList[iViewIdx]->setQpChangeFrame( m_iQpChangeFrame ); … … 345 390 } 346 391 } 392 #if HHI_INTER_VIEW_MOTION_PRED 347 393 else if( m_uiMultiviewMvRegMode ) 348 394 { … … 352 398 } 353 399 } 354 355 //GT VSO 400 #endif 401 402 #if HHI_VSO 356 403 if ( m_bUseVSO ) 357 404 { 358 405 if ( m_uiVSOMode == 4 ) 359 { 360 #if GERHARD_RM_DEBUG_MM 361 m_cMMCheckModel .create( m_cRenModStrParser.getNumOfBaseViews(), m_cRenModStrParser.getNumOfModels(), m_iSourceWidth, m_iSourceHeight, LOG2_DISP_PREC_LUT, 0 ); 362 #endif 406 { 363 407 m_cRendererModel.create( m_cRenModStrParser.getNumOfBaseViews(), m_cRenModStrParser.getNumOfModels(), m_iSourceWidth, m_iSourceHeight, LOG2_DISP_PREC_LUT, 0 ); 364 408 … … 367 411 for (Int iContent = 0; iContent < 2; iContent++ ) 368 412 { 369 Int iNumOfModels = m_cRenModStrParser.getNumOfModelsForView(iViewNum, iContent); 370 Bool bUseVSO = (iNumOfModels != 0); 371 372 TEncTop* pcEncTop = ( iContent == 0 ) ? m_acTEncTopList[iViewNum] : m_acTEncDepthTopList[iViewNum]; 373 pcEncTop->setUseVSO( bUseVSO ); 374 pcEncTop->getRdCost()->setRenModel( bUseVSO ? &m_cRendererModel : NULL ); 375 413 Int iNumOfModels = m_cRenModStrParser.getNumOfModelsForView(iViewNum, iContent); 414 Bool bUseVSO = (iNumOfModels != 0); 415 416 TEncTop* pcEncTop = ( iContent == 0 ) ? m_acTEncTopList[iViewNum] : m_acTEncDepthTopList[iViewNum]; 417 pcEncTop->setUseVSO( bUseVSO ); 418 pcEncTop->getRdCost()->setRenModel( bUseVSO ? &m_cRendererModel : NULL ); 419 376 420 for (Int iCurModel = 0; iCurModel < iNumOfModels; iCurModel++ ) 377 421 { 378 Int iModelNum; Int iLeftViewNum; Int iRightViewNum; Int iDump; Int iOrgRefNum; Int iBlendMode; 379 380 m_cRenModStrParser.getSingleModelData ( iViewNum, iContent, iCurModel, iModelNum, iBlendMode, iLeftViewNum, iRightViewNum, iOrgRefNum, iDump ) ; 381 m_cRendererModel .createSingleModel ( iViewNum, iContent, iModelNum, iLeftViewNum, iRightViewNum, (iOrgRefNum != -1), iBlendMode ); 382 #if GERHARD_RM_DEBUG_MM 383 m_cMMCheckModel .createSingleModel ( iViewNum, iContent, iModelNum, iLeftViewNum, iRightViewNum, (iOrgRefNum != -1), iBlendMode ); 384 #endif 422 Int iModelNum; Int iLeftViewNum; Int iRightViewNum; Int iDump; Int iOrgRefNum; Int iBlendMode; 423 424 m_cRenModStrParser.getSingleModelData ( iViewNum, iContent, iCurModel, iModelNum, iBlendMode, iLeftViewNum, iRightViewNum, iOrgRefNum, iDump ) ; 425 m_cRendererModel .createSingleModel ( iViewNum, iContent, iModelNum, iLeftViewNum, iRightViewNum, (iOrgRefNum != -1), iBlendMode ); 385 426 } 386 427 } … … 391 432 m_cRendererTop.init(m_iSourceWidth, m_iSourceHeight,true,0,0,true, 0,0,0,0,0,0,0,1,0,0 ); //GT: simplest configuration 392 433 } 393 394 } 395 //GT VSO end 396 m_cUsedPelsRenderer.init(m_iSourceWidth, m_iSourceHeight, true, 0, LOG2_DISP_PREC_LUT, true, 0, 0, 0, 0, 0, 6, 4, 1, 0, 6 ); 434 } 435 #endif 436 437 #if HHI_INTERVIEW_SKIP 438 m_cUsedPelsRenderer.init(m_iSourceWidth, m_iSourceHeight, true, 0, LOG2_DISP_PREC_LUT, true, 0, 0, 0, 0, 0, 6, 4, 1, 0, 6 ); 439 #endif 397 440 } 398 441 … … 421 464 m_acTEncDepthTopList[iViewIdx]->create(); 422 465 } 466 #if HHI_INTER_VIEW_MOTION_PRED 423 467 else if( m_uiMultiviewMvRegMode ) 424 468 { … … 426 470 m_acTVideoIOYuvDepthInputFileList[iViewIdx]->skipFrames(m_FrameSkip, m_iSourceWidth, m_iSourceHeight); 427 471 } 428 } 429 430 //GT VSO 472 #endif 473 } 474 475 #if HHI_VSO 431 476 for(Int iViewIdx=0; iViewIdx < m_iNumberOfExternalRefs; iViewIdx++) 432 477 { 433 478 m_acTVideoIOYuvERFileList[iViewIdx]->open( m_pchERRefFileList[iViewIdx], false, m_uiInputBitDepth, m_uiInternalBitDepth ); // read mode 434 479 } 435 //GT VSO end 480 #endif 436 481 } 437 482 … … 441 486 m_cTVideoIOBitsFile.closeBits(); 442 487 443 //GTVSO488 #if HHI_VSO 444 489 for ( Int iViewIdx = 0; iViewIdx < m_iNumberOfExternalRefs; iViewIdx++ ) 445 490 { … … 448 493 m_acTVideoIOYuvERFileList[iViewIdx] = 0; 449 494 }; 450 //GT VSO end 495 #endif 451 496 452 497 for(Int iViewIdx=0; iViewIdx<m_iNumberOfViews; iViewIdx++) … … 563 608 pcDepthPicYuvOrg->create( m_iSourceWidth, m_iSourceHeight, m_uiMaxCUWidth, m_uiMaxCUHeight, m_uiMaxCUDepth ); 564 609 } 610 #if HHI_INTER_VIEW_MOTION_PRED 565 611 if( m_uiMultiviewMvRegMode ) 566 612 { 567 613 pcPdmDepthOrg->create( m_iSourceWidth, m_iSourceHeight, m_uiMaxCUWidth, m_uiMaxCUHeight, m_uiMaxCUDepth ); 568 614 } 615 #endif 569 616 570 617 TComBitstream* pcBitstream = new TComBitstream; … … 589 636 bAllEos = bAllEos|bEos[iViewIdx] ; 590 637 638 #if HHI_INTER_VIEW_MOTION_PRED 591 639 if( m_uiMultiviewMvRegMode && iViewIdx ) 592 640 { 593 641 m_acTVideoIOYuvDepthInputFileList[iViewIdx]->read( pcPdmDepthOrg, m_aiPad, m_bUsingDepthMaps ); 594 642 } 643 #endif 595 644 596 645 // increase number of received frames … … 598 647 } 599 648 649 #if HHI_INTER_VIEW_MOTION_PRED 600 650 m_acTEncTopList[iViewIdx]->receivePic( bEos[iViewIdx], pcPicYuvOrg, m_cListPicYuvRecList[iViewIdx]->back(), ( m_uiMultiviewMvRegMode && iViewIdx ? pcPdmDepthOrg : 0 ) ); 651 #else 652 m_acTEncTopList[iViewIdx]->receivePic( bEos[iViewIdx], pcPicYuvOrg, m_cListPicYuvRecList[iViewIdx]->back(), 0 ); 653 #endif 601 654 602 655 if( m_bUsingDepthMaps ) … … 628 681 } 629 682 630 //GT VSO 683 #if HHI_VSO 631 684 if ( m_bUseVSO && ( m_uiVSOMode != 4) ) 632 685 { … … 634 687 xStoreVSORefPicsInBuffer(); //GT; 635 688 } 636 //GT VSO end 689 #endif 637 690 638 691 //GT: Encode … … 688 741 689 742 #if AMVP_BUFFERCOMPRESS 690 // compress motion for entire access 743 // compress motion for entire access 691 744 if( bCurrPocCoded ) 692 745 { … … 729 782 pcDepthPicYuvOrg = NULL ; 730 783 731 // SB valgrid732 784 pcBitstream->destroy(); 733 785 delete pcBitstream; … … 751 803 if ( pcPdmDepthOrg ) 752 804 { 753 pcPdmDepthOrg->destroy(); 754 delete pcPdmDepthOrg; 755 pcPdmDepthOrg = NULL; 805 pcPdmDepthOrg->destroy(); 806 delete pcPdmDepthOrg; 807 pcPdmDepthOrg = NULL; 756 808 } 757 809 … … 847 899 // Delete ERFiles 848 900 849 //GTVSO901 #if HHI_VSO 850 902 std::map< Int,vector<TComPicYuv*> >::iterator iterMapPicExtRefView = m_cMapPicExtRefView.begin(); 851 903 while ( iterMapPicExtRefView != m_cMapPicExtRefView.end() ) … … 861 913 iterMapPicExtRefView++; 862 914 } 863 //GT VSO end 915 #endif 864 916 } 865 917 … … 920 972 TComPicYuv* TAppEncTop::xGetPicYuvFromView( Int iViewIdx, Int iPoc, Bool bDepth, Bool bRecon ) 921 973 { 922 TComPic* pcPic = xGetPicFromView( iViewIdx, iPoc, bDepth); 923 TComPicYuv* pcPicYuv = NULL; 974 TComPic* pcPic = xGetPicFromView( iViewIdx, iPoc, bDepth); 975 TComPicYuv* pcPicYuv = NULL; 924 976 925 977 if (pcPic != NULL) … … 929 981 if ( pcPic->getReconMark() ) 930 982 { 931 pcPicYuv = pcPic->getPicYuvRec(); 983 pcPicYuv = pcPic->getPicYuvRec(); 932 984 } 933 985 } 934 986 else 935 987 { 936 pcPicYuv = pcPic->getPicYuvOrg(); 937 } 988 pcPicYuv = pcPic->getPicYuvOrg(); 989 } 938 990 }; 939 991 940 return pcPicYuv; 941 }; 942 992 return pcPicYuv; 993 }; 994 995 #if HHI_VSO 943 996 Void TAppEncTop::xSetBasePicYuv( Int iViewIdx, Int iPoc, TComMVDRefData* pcRefInfo, InterViewReference eView, bool bDepth ) 944 997 { … … 975 1028 } 976 1029 977 //GT campara 1030 978 1031 xSetBaseLUT (iViewIdx, iViewIdx-1 , pcMVDRefData, PREVVIEW ); 979 1032 xSetBaseLUT (iViewIdx, iViewIdx+1 , pcMVDRefData, NEXTVIEW ); 980 //GT campara end 981 982 //GT VSO 1033 1034 983 1035 if ( m_bUseVSO && m_uiVSOMode != 4) 984 1036 { … … 987 1039 pcMVDRefData->setRefViewInd (m_aaiBaseViewRefInd[iViewIdx], m_aaiERViewRefInd[iViewIdx], m_aaiERViewRefLutInd[iViewIdx]); 988 1040 } 989 //GT VSO end990 991 1041 }; 992 1042 993 //GT campara 1043 994 1044 Void TAppEncTop::xSetBaseLUT( Int iViewIdxSource, Int iViewIdxTarget, TComMVDRefData* pcRefInfo, InterViewReference eView ) 995 1045 { … … 999 1049 pcRefInfo->setShiftLUTsBaseView(eView, m_cCameraData.getBaseViewShiftLUTD()[iViewIdxSource][iViewIdxTarget],m_cCameraData.getBaseViewShiftLUTI()[iViewIdxSource][iViewIdxTarget] ); 1000 1050 }; 1001 //GT campara end 1002 1003 1004 //GT VSO 1051 1005 1052 Void TAppEncTop::xSetERPicYuvs( Int iViewIdx, Int iPoc, TComMVDRefData* pcReferenceInfo ) 1006 1053 { … … 1014 1061 pcReferenceInfo->setPicYuvERViews( cMapIt->second ); 1015 1062 } 1016 1017 1018 1063 1019 1064 Void TAppEncTop::xStoreVSORefPicsInBuffer() … … 1130 1175 } 1131 1176 } 1132 // GT VSO end 1133 1177 #endif 1178 1179 #if HHI_INTERVIEW_SKIP 1134 1180 Void TAppEncTop::getUsedPelsMap( Int iViewIdx, Int iPoc, TComPicYuv* pcPicYuvUsedSplsMap ) 1135 1181 { 1136 AOT( iViewIdx <= 0); 1137 AOT( iViewIdx >= m_iNumberOfViews ); 1138 AOF( m_ bOmitUnusedBlocks);1139 AOF( m_cCameraData.getCurFrameId() == iPoc ); 1140 1141 Int iViewSIdx = m_cCameraData.getBaseId2SortedId()[iViewIdx]; 1142 Int iFirstViewSIdx = m_cCameraData.getBaseId2SortedId()[0]; 1182 AOT( iViewIdx <= 0); 1183 AOT( iViewIdx >= m_iNumberOfViews ); 1184 AOF( m_uiInterViewSkip != 0 ); 1185 AOF( m_cCameraData.getCurFrameId() == iPoc ); 1186 1187 Int iViewSIdx = m_cCameraData.getBaseId2SortedId()[iViewIdx]; 1188 Int iFirstViewSIdx = m_cCameraData.getBaseId2SortedId()[0]; 1143 1189 1144 1190 AOT( iViewSIdx == iFirstViewSIdx ); 1145 1191 1146 Bool bFirstIsLeft = (iFirstViewSIdx < iViewSIdx); 1192 Bool bFirstIsLeft = (iFirstViewSIdx < iViewSIdx); 1147 1193 1148 1194 m_cUsedPelsRenderer.setShiftLUTs( … … 1154 1200 m_cCameraData.getBaseViewShiftLUTI()[0][iViewIdx], 1155 1201 -1 1156 ); 1157 1202 ); 1203 1158 1204 1159 1205 TComPicYuv* pcPicYuvDepth = xGetPicYuvFromView(0, iPoc, true, true ); 1160 AOF( pcPicYuvDepth); 1161 1162 m_cUsedPelsRenderer.getUsedSamplesMap( pcPicYuvDepth, pcPicYuvUsedSplsMap, bFirstIsLeft ); 1163 1164 } 1165 1206 AOF( pcPicYuvDepth); 1207 1208 m_cUsedPelsRenderer.getUsedSamplesMap( pcPicYuvDepth, pcPicYuvUsedSplsMap, bFirstIsLeft ); 1209 1210 } 1211 #endif 1212 1213 #if HHI_VSO 1166 1214 Void TAppEncTop::setupRenModel( Int iPoc, Int iEncViewIdx, Int iEncContent ) 1167 1215 { 1168 Int iEncViewSIdx = m_cCameraData.getBaseId2SortedId()[ iEncViewIdx ]; 1216 Int iEncViewSIdx = m_cCameraData.getBaseId2SortedId()[ iEncViewIdx ]; 1169 1217 1170 1218 // setup base views 1171 Int iNumOfBV = m_cRenModStrParser.getNumOfBaseViewsForView( iEncViewSIdx, iEncContent ); 1219 Int iNumOfBV = m_cRenModStrParser.getNumOfBaseViewsForView( iEncViewSIdx, iEncContent ); 1172 1220 1173 1221 for (Int iCurView = 0; iCurView < iNumOfBV; iCurView++ ) 1174 { 1175 Int iBaseViewSIdx; 1176 Int iVideoDistMode; 1177 Int iDepthDistMode; 1178 1179 m_cRenModStrParser.getBaseViewData( iEncViewSIdx, iEncContent, iCurView, iBaseViewSIdx, iVideoDistMode, iDepthDistMode ); 1180 1181 AOT( iVideoDistMode < 0 || iVideoDistMode > 2 ); 1182 1183 Int iBaseViewIdx = m_cCameraData.getBaseSortedId2Id()[ iBaseViewSIdx ]; 1184 1185 TComPicYuv* pcPicYuvVideoRec = xGetPicYuvFromView( iBaseViewIdx, iPoc, false, true ); 1186 TComPicYuv* pcPicYuvDepthRec = xGetPicYuvFromView( iBaseViewIdx, iPoc, true , true ); 1187 TComPicYuv* pcPicYuvVideoOrg = xGetPicYuvFromView( iBaseViewIdx, iPoc, false, false ); 1188 TComPicYuv* pcPicYuvDepthOrg = xGetPicYuvFromView( iBaseViewIdx, iPoc, true , false ); 1189 1190 TComPicYuv* pcPicYuvVideoRef = ( iVideoDistMode == 2 ) ? pcPicYuvVideoOrg : NULL; 1191 TComPicYuv* pcPicYuvDepthRef = ( iDepthDistMode == 2 ) ? pcPicYuvDepthOrg : NULL; 1192 1193 TComPicYuv* pcPicYuvVideoTest = ( iVideoDistMode == 0 ) ? pcPicYuvVideoOrg : pcPicYuvVideoRec; 1194 TComPicYuv* pcPicYuvDepthTest = ( iDepthDistMode == 0 ) ? pcPicYuvDepthOrg : pcPicYuvDepthRec; 1195 1196 AOT( (iVideoDistMode == 2) != (pcPicYuvVideoRef != NULL) ); 1197 AOT( (iDepthDistMode == 2) != (pcPicYuvDepthRef != NULL) ); 1198 AOT( pcPicYuvDepthTest == NULL ); 1199 AOT( pcPicYuvVideoTest == NULL ); 1200 1201 m_cRendererModel.setBaseView( iBaseViewSIdx, pcPicYuvVideoTest, pcPicYuvDepthTest, pcPicYuvVideoRef, pcPicYuvDepthRef ); 1202 #if GERHARD_RM_DEBUG_MM 1203 m_cMMCheckModel .setBaseView( iBaseViewSIdx, pcPicYuvVideoTest, pcPicYuvDepthTest, pcPicYuvVideoRef, pcPicYuvDepthRef ); 1204 #endif 1205 } 1206 1207 m_cRendererModel.setErrorMode( iEncViewSIdx, iEncContent, 0 ); 1208 #if GERHARD_RM_DEBUG_MM 1209 m_cMMCheckModel .setErrorMode( iEncViewSIdx, iEncContent, 0 ); 1210 #endif 1211 1222 { 1223 Int iBaseViewSIdx; 1224 Int iVideoDistMode; 1225 Int iDepthDistMode; 1226 1227 m_cRenModStrParser.getBaseViewData( iEncViewSIdx, iEncContent, iCurView, iBaseViewSIdx, iVideoDistMode, iDepthDistMode ); 1228 1229 AOT( iVideoDistMode < 0 || iVideoDistMode > 2 ); 1230 1231 Int iBaseViewIdx = m_cCameraData.getBaseSortedId2Id()[ iBaseViewSIdx ]; 1232 1233 TComPicYuv* pcPicYuvVideoRec = xGetPicYuvFromView( iBaseViewIdx, iPoc, false, true ); 1234 TComPicYuv* pcPicYuvDepthRec = xGetPicYuvFromView( iBaseViewIdx, iPoc, true , true ); 1235 TComPicYuv* pcPicYuvVideoOrg = xGetPicYuvFromView( iBaseViewIdx, iPoc, false, false ); 1236 TComPicYuv* pcPicYuvDepthOrg = xGetPicYuvFromView( iBaseViewIdx, iPoc, true , false ); 1237 1238 TComPicYuv* pcPicYuvVideoRef = ( iVideoDistMode == 2 ) ? pcPicYuvVideoOrg : NULL; 1239 TComPicYuv* pcPicYuvDepthRef = ( iDepthDistMode == 2 ) ? pcPicYuvDepthOrg : NULL; 1240 1241 TComPicYuv* pcPicYuvVideoTest = ( iVideoDistMode == 0 ) ? pcPicYuvVideoOrg : pcPicYuvVideoRec; 1242 TComPicYuv* pcPicYuvDepthTest = ( iDepthDistMode == 0 ) ? pcPicYuvDepthOrg : pcPicYuvDepthRec; 1243 1244 AOT( (iVideoDistMode == 2) != (pcPicYuvVideoRef != NULL) ); 1245 AOT( (iDepthDistMode == 2) != (pcPicYuvDepthRef != NULL) ); 1246 AOT( pcPicYuvDepthTest == NULL ); 1247 AOT( pcPicYuvVideoTest == NULL ); 1248 1249 m_cRendererModel.setBaseView( iBaseViewSIdx, pcPicYuvVideoTest, pcPicYuvDepthTest, pcPicYuvVideoRef, pcPicYuvDepthRef ); 1250 } 1251 1252 m_cRendererModel.setErrorMode( iEncViewSIdx, iEncContent, 0 ); 1212 1253 // setup virtual views 1213 Int iNumOfSV = m_cRenModStrParser.getNumOfModelsForView( iEncViewSIdx, iEncContent ); 1254 Int iNumOfSV = m_cRenModStrParser.getNumOfModelsForView( iEncViewSIdx, iEncContent ); 1214 1255 for (Int iCurView = 0; iCurView < iNumOfSV; iCurView++ ) 1215 { 1216 Int iOrgRefBaseViewSIdx; 1217 Int iLeftBaseViewSIdx; 1218 Int iRightBaseViewSIdx; 1219 Int iSynthViewRelNum; 1220 Int iModelNum; 1221 Int iBlendMode; 1222 m_cRenModStrParser.getSingleModelData(iEncViewSIdx, iEncContent, iCurView, iModelNum, iBlendMode,iLeftBaseViewSIdx, iRightBaseViewSIdx, iOrgRefBaseViewSIdx, iSynthViewRelNum ); 1223 1224 Int iLeftBaseViewIdx = -1; 1225 Int iRightBaseViewIdx = -1; 1226 1227 TComPicYuv* pcPicYuvOrgRef = NULL; 1228 Int** ppiShiftLUTLeft = NULL; 1229 Int** ppiShiftLUTRight = NULL; 1230 Int** ppiBaseShiftLUTLeft = NULL; 1231 Int** ppiBaseShiftLUTRight = NULL; 1232 1233 1234 Int iDistToLeft = -1; 1235 1236 Int iSynthViewIdx = m_cCameraData.synthRelNum2Idx( iSynthViewRelNum ); 1256 { 1257 Int iOrgRefBaseViewSIdx; 1258 Int iLeftBaseViewSIdx; 1259 Int iRightBaseViewSIdx; 1260 Int iSynthViewRelNum; 1261 Int iModelNum; 1262 Int iBlendMode; 1263 m_cRenModStrParser.getSingleModelData(iEncViewSIdx, iEncContent, iCurView, iModelNum, iBlendMode,iLeftBaseViewSIdx, iRightBaseViewSIdx, iOrgRefBaseViewSIdx, iSynthViewRelNum ); 1264 1265 Int iLeftBaseViewIdx = -1; 1266 Int iRightBaseViewIdx = -1; 1267 1268 TComPicYuv* pcPicYuvOrgRef = NULL; 1269 Int** ppiShiftLUTLeft = NULL; 1270 Int** ppiShiftLUTRight = NULL; 1271 Int** ppiBaseShiftLUTLeft = NULL; 1272 Int** ppiBaseShiftLUTRight = NULL; 1273 1274 1275 Int iDistToLeft = -1; 1276 1277 Int iSynthViewIdx = m_cCameraData.synthRelNum2Idx( iSynthViewRelNum ); 1237 1278 1238 1279 if ( iLeftBaseViewSIdx != -1 ) 1239 1280 { 1240 iLeftBaseViewIdx = m_cCameraData.getBaseSortedId2Id() [ iLeftBaseViewSIdx ]; 1281 iLeftBaseViewIdx = m_cCameraData.getBaseSortedId2Id() [ iLeftBaseViewSIdx ]; 1241 1282 ppiShiftLUTLeft = m_cCameraData.getSynthViewShiftLUTI()[ iLeftBaseViewIdx ][ iSynthViewIdx ]; 1242 1283 } … … 1244 1285 if ( iRightBaseViewSIdx != -1 ) 1245 1286 { 1246 iRightBaseViewIdx = m_cCameraData.getBaseSortedId2Id() [iRightBaseViewSIdx ]; 1287 iRightBaseViewIdx = m_cCameraData.getBaseSortedId2Id() [iRightBaseViewSIdx ]; 1247 1288 ppiShiftLUTRight = m_cCameraData.getSynthViewShiftLUTI()[ iRightBaseViewIdx ][ iSynthViewIdx ]; 1248 1289 } 1249 1290 1250 1291 if ( iRightBaseViewSIdx != -1 && iLeftBaseViewSIdx != -1 ) 1251 { 1252 iDistToLeft = m_cCameraData.getRelDistLeft( iSynthViewIdx , iLeftBaseViewIdx, iRightBaseViewIdx); 1292 { 1293 iDistToLeft = m_cCameraData.getRelDistLeft( iSynthViewIdx , iLeftBaseViewIdx, iRightBaseViewIdx); 1253 1294 ppiBaseShiftLUTLeft = m_cCameraData.getBaseViewShiftLUTI() [ iLeftBaseViewIdx ][ iRightBaseViewIdx ]; 1254 1295 ppiBaseShiftLUTRight = m_cCameraData.getBaseViewShiftLUTI() [ iRightBaseViewIdx ][ iLeftBaseViewIdx ]; … … 1258 1299 if ( iOrgRefBaseViewSIdx != -1 ) 1259 1300 { 1260 pcPicYuvOrgRef = xGetPicYuvFromView( m_cCameraData.getBaseSortedId2Id()[ iOrgRefBaseViewSIdx ] , iPoc, false, false ); 1261 AOF ( pcPicYuvOrgRef ); 1262 } 1263 1264 m_cRendererModel.setSingleModel( iModelNum, ppiShiftLUTLeft, ppiBaseShiftLUTLeft, ppiShiftLUTRight, ppiBaseShiftLUTRight, iDistToLeft, pcPicYuvOrgRef ); 1265 #if GERHARD_RM_DEBUG_MM 1266 m_cMMCheckModel .setSingleModel( iModelNum, ppiShiftLUTLeft, ppiBaseShiftLUTLeft, ppiShiftLUTRight, ppiBaseShiftLUTRight, iDistToLeft, pcPicYuvOrgRef ); 1267 #endif 1268 } 1269 } 1270 1271 // GT VSO end 1301 pcPicYuvOrgRef = xGetPicYuvFromView( m_cCameraData.getBaseSortedId2Id()[ iOrgRefBaseViewSIdx ] , iPoc, false, false ); 1302 AOF ( pcPicYuvOrgRef ); 1303 } 1304 1305 m_cRendererModel.setSingleModel( iModelNum, ppiShiftLUTLeft, ppiBaseShiftLUTLeft, ppiShiftLUTRight, ppiBaseShiftLUTRight, iDistToLeft, pcPicYuvOrgRef ); 1306 } 1307 } 1308 #endif 1309 -
trunk/source/App/TAppEncoder/TAppEncTop.h
r2 r5 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-2011, 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 1 34 2 35 … … 49 82 std::vector<Int> m_iDepthFrameRcvdVector; ///< number of received frames 50 83 84 #if DEPTH_MAP_GENERATION 51 85 TComSPSAccess m_cSPSAccess; 52 86 TComAUPicAccess m_cAUPicAccess; 87 #endif 53 88 89 #if HHI_VSO 54 90 TRenTop m_cRendererTop; 55 #if GERHARD_RM_DEBUG_MM 56 TRenModel m_cMMCheckModel; 91 TRenModel m_cRendererModel; 57 92 #endif 58 TRenModel m_cRendererModel;59 93 60 94 protected: … … 84 118 85 119 // Ref Data 120 #if HHI_VSO 86 121 Void xSetBaseLUT ( Int iViewIdxSource, Int iViewIdxTarget, TComMVDRefData* pcRefInfo, InterViewReference eView ); 87 122 Void xSetBasePicYuv( Int iViewIdx, Int iPoc, TComMVDRefData* pcRefInfo, InterViewReference eView, bool bDepth ); ///< store pics from buffers in pcRefInfo 88 123 #endif 89 124 90 125 public: … … 93 128 94 129 Void encode (); ///< main encoding function 130 #if HHI_VSO 95 131 Void setupRenModel ( Int iPoc, Int iEncViewIdx, Int iEncContent ); 96 132 Void setMVDPic ( Int iViewIdx, Int iPoc, TComMVDRefData* pcReferenceInfo ); // set MultiView References 133 #endif 97 134 Void getUsedPelsMap ( Int iViewIdx, Int iPoc, TComPicYuv* pcPicYuvUsedPelsMap ); 98 135 std::vector<TComPic*> getSpatialRefPics( Int iViewIdx, Int iPoc, Bool bIsDepthCoder ); // only for mvc functionality yet 99 136 TComPic* getPicFromView ( Int iViewIdx, Int iPoc, Bool bDepth ) { return xGetPicFromView( iViewIdx, iPoc, bDepth ); } 100 137 101 #if GERHARD_RM_DEBUG_MM102 TRenModel* get MMCheckModel() { return &m_cMMCheckModel ; };138 #if HHI_VSO 139 TRenModel* getRenModel () { return &m_cRendererModel ; }; 103 140 #endif 104 TRenModel* getRenModel () { return &m_cRendererModel ; };105 141 142 #if DEPTH_MAP_GENERATION 106 143 TComSPSAccess* getSPSAccess () { return &m_cSPSAccess; } 107 144 TComAUPicAccess* getAUPicAccess() { return &m_cAUPicAccess; } 145 #endif 108 146 109 //GTVSO147 #if HHI_VSO 110 148 private: 111 149 std::vector<TVideoIOYuv*> m_acTVideoIOYuvERFileList; … … 115 153 Void xSetERPicYuvs( Int iViewIdx, Int iPoc, TComMVDRefData* pcReferenceInfo ); ///< store pic from buffer in pcReferenceInfo 116 154 Void xStoreVSORefPicsInBuffer(); ///< read in External Ref pic from file and store in buffer 117 //GT VSO end 118 155 #endif 119 156 120 157 };// END CLASS DEFINITION TAppEncTop -
trunk/source/App/TAppEncoder/encmain.cpp
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/App/TAppRenderer/RendererMain.cpp
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/App/TAppRenderer/TAppRendererCfg.cpp
r2 r5 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-2011, 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 1 34 2 35 … … 51 84 free (m_pchSynthOutputFileList[i]); 52 85 } 53 54 86 55 87 if ( m_pchVideoInputFileBaseName ) free( m_pchVideoInputFileBaseName ); … … 60 92 if ( m_pchSynthViewCameraNumbers ) free( m_pchSynthViewCameraNumbers ); 61 93 if ( m_pchViewConfig ) free( m_pchViewConfig ); 62 63 64 94 } 65 95 … … 117 147 ("PreProcMode" , m_iPreProcMode , 0, "Depth preprocessing: 0 = None, 1 = Binomial filtering" ) 118 148 ("PreFilterSize" , m_iPreFilterSize , 0, "For PreProcMode 1: Half Size of filter kernel" ) 119 ("SimEnhance" , m_bSimEnhance , false, "Similarity enhancement of video" )149 ("SimEnhance" , m_bSimEnhance , true, "Similarity enhancement of video" ) 120 150 ("BlendMode" , m_iBlendMode , 0, "Blending of left and right image: 0: average, 1: only holes from right, 2: only holes from left, 3: first view in BaseViewOrder as main view" ) 121 ("BlendZThresPerc" , m_iBlendZThresPerc , 3, "Z-difference threshold for blending in percent of total Z-range" )151 ("BlendZThresPerc" , m_iBlendZThresPerc , 30, "Z-difference threshold for blending in percent of total Z-range" ) 122 152 ("BlendUseDistWeight", m_bBlendUseDistWeight , true, "0: blend using average; 1: blend factor depends on view distance" ) 123 ("BlendHoleMargin" , m_iBlendHoleMargin , 0, "Margin around holes to fill with other view" )124 ("InterpolationMode" , m_iInterpolationMode , 0, "0: NN, 1:linear (int), 2:linear (double) , 3:cubic Hermite spline (double), 4: 8-tap (int)" )153 ("BlendHoleMargin" , m_iBlendHoleMargin , 6, "Margin around holes to fill with other view" ) 154 ("InterpolationMode" , m_iInterpolationMode , 4, "0: NN, 1:linear (int), 2:linear (double) , 3:cubic Hermite spline (double), 4: 8-tap (int)" ) 125 155 ("HoleFillingMode" , m_iHoleFillingMode , 1, "0: None, 1: line wise background extension" ) 126 156 ("PostProcMode" , m_iPostProcMode , 0, "0: None, 1: horizontal 3-tap median" ) 127 157 ("RenderMode" , m_iRenderMode , 0, "0: Use renderer, 1: use model renderer, 10: create used pels map") 128 ("ShiftPrecision" , m_iShiftPrecision , 0, "Shift Precision for Interpolation Mode 4" )158 ("ShiftPrecision" , m_iShiftPrecision , 2, "Shift Precision for Interpolation Mode 4" ) 129 159 ("TemporalDepthFilter", m_bTempDepthFilter , false, "Temporal depth filtering" ) 130 160 ("RenderDirection" , m_iRenderDirection , 0, "0: Interpolate, 1: Extrapolate from left, 2: Extrapolate from right") -
trunk/source/App/TAppRenderer/TAppRendererCfg.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/App/TAppRenderer/TAppRendererTop.cpp
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/App/TAppRenderer/TAppRendererTop.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibCommon/CommonDef.h
r2 r5 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-2011, 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 1 34 2 35 … … 15 48 #include "TComRom.h" 16 49 17 // SB18 50 #include <string> 19 51 #include <assert.h> … … 26 58 27 59 #define HM_VERSION "3.0rc2" ///< Current software version 28 #define NV_VERSION "0.3 1r4" ///< Current software version60 #define NV_VERSION "0.37" ///< Current software version 29 61 30 62 // ==================================================================================================================== … … 70 102 71 103 72 #define SEBASTIAN 173 #if SEBASTIAN74 #define SB_INTERVIEW_SKIP 175 #define SB_INTERVIEW_SKIP_LAMBDA_SCALE 176 #define SB_MEM_FIX 177 #define SB_NO_LowDelayCoding 0 // noch offen in motionestimation78 #endif79 80 #define GERHARD 181 #if GERHARD82 #define GERHARD_VQM_XCHECK 083 #define GERHARD_RM_DEBUG_MM 084 #define GERHARD_RM_HOLE_EXT 085 #define GERHARD_RM_COLOR_PLANES 186 #define GERHARD_RM_SPLAT 187 #endif88 89 90 104 // ==================================================================================================================== 91 105 // Common constants … … 116 130 #define STD_CAM_PARAMETERS_PRECISION 5 ///< quarter luma sample accuarcy for derived disparities (as default) 117 131 118 // SB119 132 #define MAX_INPUT_VIEW_NUM 10 ///< max. number of input view for multiview coding 120 133 121 // GT 134 #if HHI_VSO 122 135 #define MAX_ERREF_VIEW_NUM 15 ///< max. number of virtual external reference views 136 #endif 123 137 #define LOG2_DISP_PREC_LUT 2 ///< log2 of disparity precision used in integer disparity LUTs 124 138 139 140 #if ( HHI_INTER_VIEW_MOTION_PRED || HHI_INTER_VIEW_RESIDUAL_PRED ) 141 #define DEPTH_MAP_GENERATION 1 142 #else 143 #define DEPTH_MAP_GENERATION 0 144 #endif 125 145 126 146 //>>>>> generation and usage of virtual prediction depth maps >>>>> … … 151 171 #define OUTPUT_RESIDUAL_PICTURES 0 // output residual pictures (for debugging) 152 172 153 #define MVI_MERGE_POS 0 // position of mvi in merge list (0..5)173 #define HHI_MPI_MERGE_POS 0 // position of mvi in merge list (0..5) 154 174 155 175 … … 298 318 #endif 299 319 300 // SB from ViCo for formatted string parsing301 320 302 321 class VideoCodecException -
trunk/source/Lib/TLibCommon/ContextModel.cpp
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibCommon/ContextModel.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibCommon/ContextModel3DBuffer.cpp
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibCommon/ContextModel3DBuffer.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibCommon/ContextTables.h
r2 r5 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-2011, 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 1 34 2 35 … … 14 47 15 48 #define NUM_SPLIT_FLAG_CTX 3 ///< number of context models for split flag 16 #if MW_MVI_SIGNALLING_MODE == 017 #define NUM_MVI_FLAG_CTX 3 ///< number of context models for motion inheritance flag18 #endif19 49 #define NUM_SKIP_FLAG_CTX 3 ///< number of context models for skip flag 20 50 … … 72 102 #define NUM_VIEW_IDX_CTX 6 73 103 74 #if HHI_DMM_ INTRA104 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 75 105 #define NUM_DMM_CTX 2 76 106 #define NUM_WEDGE_CTX 4 … … 120 150 } 121 151 }; 122 123 #if MW_MVI_SIGNALLING_MODE == 0124 // initial probability for skip flag125 static const Short126 INIT_MVI_FLAG[3][NUM_MVI_FLAG_CTX][2] =127 {128 {129 { 0, 64 }, { 0, 64 }, { 0, 64 }130 },131 {132 { 0, 64 }, { 0, 64 }, { 0, 64 }133 },134 {135 { 0, 64 }, { 0, 64 }, { 0, 64 }136 }137 };138 #endif139 152 140 153 // initial probability for skip flag … … 1324 1337 }; 1325 1338 1326 #if HHI_DMM_ INTRA1339 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 1327 1340 static const Short 1328 1341 INIT_INTRA_DMM[3][NUM_DMM_CTX][2] = -
trunk/source/Lib/TLibCommon/SEI.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibCommon/TComAdaptiveLoopFilter.cpp
r2 r5 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-2011, 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 1 34 2 35 … … 278 311 m_bUseNonCrossALF = false; 279 312 #endif 280 #if SB_MEM_FIX281 313 m_bIsCreated = false; 282 #endif283 314 } 284 315 … … 471 502 Void TComAdaptiveLoopFilter::create( Int iPicWidth, Int iPicHeight, UInt uiMaxCUWidth, UInt uiMaxCUHeight, UInt uiMaxCUDepth ) 472 503 { 473 #if SB_MEM_FIX474 504 m_bIsCreated = true; 475 #endif476 505 if ( !m_pcTempPicYuv ) 477 506 { … … 514 543 Void TComAdaptiveLoopFilter::destroy() 515 544 { 516 #if SB_MEM_FIX517 545 m_bIsCreated = false ; 518 #endif519 546 if ( m_pcTempPicYuv ) 520 547 { -
trunk/source/Lib/TLibCommon/TComAdaptiveLoopFilter.h
r2 r5 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-2011, 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 1 34 2 35 … … 336 369 Bool m_bIsFirstDecodedSlice; 337 370 338 #if SB_MEM_FIX339 371 Bool m_bIsCreated; 340 #endif341 372 Void xFilterOneSlice (CAlfSlice* pSlice, imgpel* pDec, imgpel* pRest, Int iStride, ALFParam* pcAlfParam); 342 373 Void calcVarforOneSlice (CAlfSlice* pSlice, imgpel **imgY_var, imgpel *imgY_pad, Int pad_size, Int fl, Int img_stride); … … 408 439 Void destroy (); 409 440 410 #if SB_MEM_FIX411 441 Bool isCreated() { return m_bIsCreated;} 412 #endif413 442 // alloc & free & set functions 414 443 Void allocALFParam ( ALFParam* pAlfParam ); -
trunk/source/Lib/TLibCommon/TComBitCounter.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibCommon/TComBitStream.cpp
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibCommon/TComBitStream.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibCommon/TComCABACTables.cpp
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibCommon/TComCABACTables.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibCommon/TComDataCU.cpp
r2 r5 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-2011, 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 1 34 2 35 … … 20 53 m_pcSlice = NULL; 21 54 m_puhDepth = NULL; 55 #if HHI_MPI 22 56 m_piTextureModeDepth = NULL; 57 #endif 23 58 24 59 m_pePartSize = NULL; … … 31 66 m_pbMergeFlag = NULL; 32 67 m_puhMergeIndex = NULL; 68 #if HHI_INTER_VIEW_RESIDUAL_PRED 33 69 m_pbResPredAvailable = NULL; 34 70 m_pbResPredFlag = NULL; 71 #endif 35 72 for( UInt ui = 0; ui < MRG_MAX_NUM_CANDS; ui++ ) 36 73 { … … 71 108 #endif//SNY_DQP 72 109 73 #if HHI_DMM_ INTRA110 #if HHI_DMM_WEDGE_INTRA 74 111 m_puiWedgeFullTabIdx = NULL; 75 112 m_piWedgeFullDeltaDC1 = NULL; … … 80 117 m_piWedgePredDirDeltaDC2 = NULL; 81 118 m_piWedgePredDirDeltaEnd = NULL; 82 119 #endif 120 #if HHI_DMM_PRED_TEX 83 121 m_puiWedgePredTexTabIdx = NULL; 84 122 m_piWedgePredTexDeltaDC1 = NULL; … … 87 125 m_piContourPredTexDeltaDC1 = NULL; 88 126 m_piContourPredTexDeltaDC2 = NULL; 89 90 m_pbTextureModesAllowed = NULL;91 127 #endif 92 128 } … … 108 144 m_phQP = (UChar* )xMalloc(UChar, uiNumPartition); 109 145 m_puhDepth = (UChar* )xMalloc(UChar, uiNumPartition); 146 #if HHI_MPI 110 147 m_piTextureModeDepth = (Int* )xMalloc(Int, uiNumPartition); 148 #endif 111 149 m_puhWidth = (UChar* )xMalloc(UChar, uiNumPartition); 112 150 m_puhHeight = (UChar* )xMalloc(UChar, uiNumPartition); … … 118 156 m_pbMergeFlag = (Bool* )xMalloc(Bool, uiNumPartition); 119 157 m_puhMergeIndex = (UChar* )xMalloc(UChar, uiNumPartition); 158 #if HHI_INTER_VIEW_RESIDUAL_PRED 120 159 m_pbResPredAvailable = (Bool* )xMalloc(Bool, uiNumPartition); 121 160 m_pbResPredFlag = (Bool* )xMalloc(Bool, uiNumPartition); 161 #endif 122 162 for( UInt ui = 0; ui < MRG_MAX_NUM_CANDS; ui++ ) 123 163 { … … 147 187 m_acCUMvField[1].create( uiNumPartition ); 148 188 149 #if HHI_DMM_ INTRA150 m_puiWedgeFullTabIdx = (UInt* )xMalloc(UInt,uiNumPartition);189 #if HHI_DMM_WEDGE_INTRA 190 m_puiWedgeFullTabIdx = (UInt*)xMalloc(UInt, uiNumPartition); 151 191 m_piWedgeFullDeltaDC1 = (Int* )xMalloc(Int, uiNumPartition); 152 192 m_piWedgeFullDeltaDC2 = (Int* )xMalloc(Int, uiNumPartition); … … 156 196 m_piWedgePredDirDeltaDC2 = (Int* )xMalloc(Int, uiNumPartition); 157 197 m_piWedgePredDirDeltaEnd = (Int* )xMalloc(Int, uiNumPartition); 158 198 #endif 199 #if HHI_DMM_PRED_TEX 159 200 m_puiWedgePredTexTabIdx = (UInt*)xMalloc(UInt, uiNumPartition); 160 201 m_piWedgePredTexDeltaDC1 = (Int* )xMalloc(Int, uiNumPartition); … … 163 204 m_piContourPredTexDeltaDC1 = (Int* )xMalloc(Int, uiNumPartition); 164 205 m_piContourPredTexDeltaDC2 = (Int* )xMalloc(Int, uiNumPartition); 165 166 m_pbTextureModesAllowed = (Bool*)xMalloc(Bool, uiNumPartition);167 206 #endif 168 207 } … … 203 242 if ( m_phQP ) { xFree(m_phQP); m_phQP = NULL; } 204 243 if ( m_puhDepth ) { xFree(m_puhDepth); m_puhDepth = NULL; } 244 #if HHI_MPI 205 245 if ( m_piTextureModeDepth ) { xFree(m_piTextureModeDepth); m_piTextureModeDepth= NULL; } 246 #endif 206 247 if ( m_puhWidth ) { xFree(m_puhWidth); m_puhWidth = NULL; } 207 248 if ( m_puhHeight ) { xFree(m_puhHeight); m_puhHeight = NULL; } … … 215 256 if ( m_pbMergeFlag ) { xFree(m_pbMergeFlag); m_pbMergeFlag = NULL; } 216 257 if ( m_puhMergeIndex ) { xFree(m_puhMergeIndex); m_puhMergeIndex = NULL; } 258 #if HHI_INTER_VIEW_RESIDUAL_PRED 217 259 if ( m_pbResPredAvailable ) { xFree(m_pbResPredAvailable); m_pbResPredAvailable= NULL; } 218 260 if ( m_pbResPredFlag ) { xFree(m_pbResPredFlag); m_pbResPredFlag = NULL; } 261 #endif 219 262 for( UInt ui = 0; ui < MRG_MAX_NUM_CANDS; ui++ ) 220 263 { … … 235 278 m_acCUMvField[1].destroy(); 236 279 237 #if HHI_DMM_ INTRA280 #if HHI_DMM_WEDGE_INTRA 238 281 if ( m_puiWedgeFullTabIdx ) { xFree(m_puiWedgeFullTabIdx); m_puiWedgeFullTabIdx = NULL; } 239 282 if ( m_piWedgeFullDeltaDC1 ) { xFree(m_piWedgeFullDeltaDC1); m_piWedgeFullDeltaDC1 = NULL; } … … 244 287 if ( m_piWedgePredDirDeltaDC1 ) { xFree(m_piWedgePredDirDeltaDC1); m_piWedgePredDirDeltaDC1 = NULL; } 245 288 if ( m_piWedgePredDirDeltaDC2 ) { xFree(m_piWedgePredDirDeltaDC2); m_piWedgePredDirDeltaDC2 = NULL; } 246 289 #endif 290 #if HHI_DMM_PRED_TEX 247 291 if ( m_puiWedgePredTexTabIdx ) { xFree(m_puiWedgePredTexTabIdx); m_puiWedgePredTexTabIdx = NULL; } 248 292 if ( m_piWedgePredTexDeltaDC1 ) { xFree(m_piWedgePredTexDeltaDC1); m_piWedgePredTexDeltaDC1 = NULL; } … … 251 295 if ( m_piContourPredTexDeltaDC1 ) { xFree(m_piContourPredTexDeltaDC1); m_piContourPredTexDeltaDC1 = NULL; } 252 296 if ( m_piContourPredTexDeltaDC2 ) { xFree(m_piContourPredTexDeltaDC2); m_piContourPredTexDeltaDC2 = NULL; } 253 254 if ( m_pbTextureModesAllowed ) { xFree(m_pbTextureModesAllowed ); m_pbTextureModesAllowed = NULL; }255 297 #endif 256 298 } … … 308 350 memset( m_pbMergeFlag, 0, iSizeInBool ); 309 351 memset( m_puhMergeIndex, 0, iSizeInUchar ); 352 #if HHI_INTER_VIEW_RESIDUAL_PRED 310 353 memset( m_pbResPredAvailable, 0, iSizeInBool ); 311 354 memset( m_pbResPredFlag, 0, iSizeInBool ); 355 #endif 312 356 for( UInt ui = 0; ui < MRG_MAX_NUM_CANDS; ui++ ) 313 357 { … … 322 366 memset( m_puhCbf[2], 0, iSizeInUchar ); 323 367 memset( m_puhDepth, 0, iSizeInUchar ); 368 #if HHI_MPI 324 369 memset( m_piTextureModeDepth,-1, iSizeInInt ); 370 #endif 325 371 326 372 UChar uhWidth = g_uiMaxCUWidth; … … 390 436 } 391 437 392 #if HHI_DMM_ INTRA438 #if HHI_DMM_WEDGE_INTRA 393 439 memset( m_puiWedgeFullTabIdx, 0, iSizeInUInt ); 394 440 memset( m_piWedgeFullDeltaDC1, 0, iSizeInInt ); … … 399 445 memset( m_piWedgePredDirDeltaDC2, 0, iSizeInInt ); 400 446 memset( m_piWedgePredDirDeltaEnd, 0, iSizeInInt ); 401 447 #endif 448 #if HHI_DMM_PRED_TEX 402 449 memset( m_puiWedgePredTexTabIdx, 0, iSizeInUInt ); 403 450 memset( m_piWedgePredTexDeltaDC1, 0, iSizeInInt ); … … 406 453 memset( m_piContourPredTexDeltaDC1, 0, iSizeInInt ); 407 454 memset( m_piContourPredTexDeltaDC2, 0, iSizeInInt ); 408 409 memset( m_pbTextureModesAllowed, false, iSizeInBool );410 455 #endif 411 456 } … … 426 471 memset( m_pbMergeFlag, 0, iSizeInBool ); 427 472 memset( m_puhMergeIndex, 0, iSizeInUchar ); 473 #if HHI_INTER_VIEW_RESIDUAL_PRED 428 474 memset( m_pbResPredAvailable, 0, iSizeInBool ); 429 475 memset( m_pbResPredFlag, 0, iSizeInBool ); 476 #endif 430 477 for( UInt ui = 0; ui < MRG_MAX_NUM_CANDS; ui++ ) 431 478 { … … 461 508 m_acCUMvField[1].clearMvField(); 462 509 463 #if HHI_DMM_ INTRA510 #if HHI_DMM_WEDGE_INTRA 464 511 memset( m_puiWedgeFullTabIdx, 0, iSizeInUInt ); 465 512 memset( m_piWedgeFullDeltaDC1, 0, iSizeInInt ); … … 470 517 memset( m_piWedgePredDirDeltaDC2, 0, iSizeInInt ); 471 518 memset( m_piWedgePredDirDeltaEnd, 0, iSizeInInt ); 472 519 #endif 520 #if HHI_DMM_PRED_TEX 473 521 memset( m_puiWedgePredTexTabIdx, 0, iSizeInUInt ); 474 522 memset( m_piWedgePredTexDeltaDC1, 0, iSizeInInt ); … … 477 525 memset( m_piContourPredTexDeltaDC1, 0, iSizeInInt ); 478 526 memset( m_piContourPredTexDeltaDC2, 0, iSizeInInt ); 479 480 memset( m_pbTextureModesAllowed, false, iSizeInBool );481 527 #endif 482 528 529 #if HHI_MPI 483 530 memset( m_piTextureModeDepth, -1, iSizeInInt ); 531 #endif 484 532 } 485 533 … … 513 561 memset( m_pbMergeFlag, 0, iSizeInBool ); 514 562 memset( m_puhMergeIndex, 0, iSizeInUchar ); 563 #if HHI_INTER_VIEW_RESIDUAL_PRED 515 564 memset( m_pbResPredAvailable, 0, iSizeInBool ); 516 565 memset( m_pbResPredFlag, 0, iSizeInBool ); 566 #endif 517 567 for( UInt ui = 0; ui < MRG_MAX_NUM_CANDS; ui++ ) 518 568 { … … 527 577 memset( m_puhCbf[2], 0, iSizeInUchar ); 528 578 memset( m_puhDepth, uiDepth, iSizeInUchar ); 579 #if HHI_MPI 529 580 memset( m_piTextureModeDepth, -1, iSizeInInt ); 581 #endif 530 582 531 583 UChar uhWidth = g_uiMaxCUWidth >> uiDepth; … … 565 617 m_uiEntropySliceStartCU = pcCU->getEntropySliceStartCU(); 566 618 567 #if HHI_DMM_ INTRA619 #if HHI_DMM_WEDGE_INTRA 568 620 memset( m_puiWedgeFullTabIdx, 0, iSizeInUInt ); 569 621 memset( m_piWedgeFullDeltaDC1, 0, iSizeInInt ); … … 574 626 memset( m_piWedgePredDirDeltaDC2, 0, iSizeInInt ); 575 627 memset( m_piWedgePredDirDeltaEnd, 0, iSizeInInt ); 576 628 #endif 629 #if HHI_DMM_PRED_TEX 577 630 memset( m_puiWedgePredTexTabIdx, 0, iSizeInUInt ); 578 631 memset( m_piWedgePredTexDeltaDC1, 0, iSizeInInt ); … … 581 634 memset( m_piContourPredTexDeltaDC1, 0, iSizeInInt ); 582 635 memset( m_piContourPredTexDeltaDC2, 0, iSizeInInt ); 583 584 memset( m_pbTextureModesAllowed, false, iSizeInBool );585 636 #endif 586 637 } … … 611 662 m_pbMergeFlag = pcCU->getMergeFlag() + uiPart; 612 663 m_puhMergeIndex = pcCU->getMergeIndex() + uiPart; 664 #if HHI_INTER_VIEW_RESIDUAL_PRED 613 665 m_pbResPredAvailable = pcCU->getResPredAvail() + uiPart; 614 666 m_pbResPredFlag = pcCU->getResPredFlag () + uiPart; 667 #endif 615 668 for( UInt ui = 0; ui < MRG_MAX_NUM_CANDS; ui++ ) 616 669 { … … 630 683 m_puhWidth=pcCU->getWidth() + uiPart; 631 684 m_puhHeight=pcCU->getHeight() + uiPart; 685 #if HHI_MPI 632 686 m_piTextureModeDepth=pcCU->getTextureModeDepth()+ uiPart; 687 #endif 633 688 634 689 m_apiMVPIdx[0]=pcCU->getMVPIdx(REF_PIC_LIST_0) + uiPart; … … 667 722 m_uiEntropySliceStartCU = pcCU->getEntropySliceStartCU(); 668 723 669 #if HHI_DMM_ INTRA724 #if HHI_DMM_WEDGE_INTRA 670 725 m_puiWedgeFullTabIdx = pcCU->getWedgeFullTabIdx() + uiPart; 671 726 m_piWedgeFullDeltaDC1 = pcCU->getWedgeFullDeltaDC1() + uiPart; … … 676 731 m_piWedgePredDirDeltaDC2 = pcCU->getWedgePredDirDeltaDC2() + uiPart; 677 732 m_piWedgePredDirDeltaEnd = pcCU->getWedgePredDirDeltaEnd() + uiPart; 678 733 #endif 734 #if HHI_DMM_PRED_TEX 679 735 m_puiWedgePredTexTabIdx = pcCU->getWedgePredTexTabIdx() + uiPart; 680 736 m_piWedgePredTexDeltaDC1 = pcCU->getWedgePredTexDeltaDC1() + uiPart; … … 683 739 m_piContourPredTexDeltaDC1 = pcCU->getContourPredTexDeltaDC1() + uiPart; 684 740 m_piContourPredTexDeltaDC2 = pcCU->getContourPredTexDeltaDC2() + uiPart; 685 686 m_pbTextureModesAllowed = pcCU->getTextureModeAllowance() + uiPart;687 741 #endif 688 742 } … … 718 772 m_pbMergeFlag = pcCU->getMergeFlag() + uiAbsPartIdx; 719 773 m_puhMergeIndex = pcCU->getMergeIndex() + uiAbsPartIdx; 774 #if HHI_INTER_VIEW_RESIDUAL_PRED 720 775 m_pbResPredAvailable = pcCU->getResPredAvail() + uiAbsPartIdx; 721 776 m_pbResPredFlag = pcCU->getResPredFlag () + uiAbsPartIdx; 777 #endif 722 778 for( UInt ui = 0; ui < MRG_MAX_NUM_CANDS; ui ++ ) 723 779 { … … 731 787 m_acCUMvField[eRefPicList].setMvdPtr(pcCU->getCUMvField(eRefPicList)->getMvd() + uiAbsPartIdx); 732 788 m_acCUMvField[eRefPicList].setRefIdxPtr(pcCU->getCUMvField(eRefPicList)->getRefIdx() + uiAbsPartIdx); 789 #if HHI_MPI 733 790 m_piTextureModeDepth = pcCU->getTextureModeDepth() + uiAbsPartIdx; 791 #endif 734 792 735 793 m_uiSliceStartCU = pcCU->getSliceStartCU(); … … 762 820 memcpy( m_pbMergeFlag + uiOffset, pcCU->getMergeFlag(), iSizeInBool ); 763 821 memcpy( m_puhMergeIndex + uiOffset, pcCU->getMergeIndex(), iSizeInUchar ); 822 #if HHI_INTER_VIEW_RESIDUAL_PRED 764 823 memcpy( m_pbResPredAvailable + uiOffset, pcCU->getResPredAvail(), iSizeInBool ); 765 824 memcpy( m_pbResPredFlag + uiOffset, pcCU->getResPredFlag(), iSizeInBool ); 825 #endif 766 826 for( UInt ui = 0; ui < MRG_MAX_NUM_CANDS; ui++ ) 767 827 { … … 807 867 m_uiEntropySliceStartCU = pcCU->getEntropySliceStartCU(); 808 868 809 #if HHI_DMM_ INTRA869 #if HHI_DMM_WEDGE_INTRA 810 870 memcpy( m_puiWedgeFullTabIdx + uiOffset, pcCU->getWedgeFullTabIdx(), iSizeInUInt ); 811 871 memcpy( m_piWedgeFullDeltaDC1 + uiOffset, pcCU->getWedgeFullDeltaDC1(), iSizeInInt ); … … 816 876 memcpy( m_piWedgePredDirDeltaDC2 + uiOffset, pcCU->getWedgePredDirDeltaDC2(), iSizeInInt ); 817 877 memcpy( m_piWedgePredDirDeltaEnd + uiOffset, pcCU->getWedgePredDirDeltaEnd(), iSizeInInt ); 818 878 #endif 879 #if HHI_DMM_PRED_TEX 819 880 memcpy( m_puiWedgePredTexTabIdx + uiOffset, pcCU->getWedgePredTexTabIdx(), iSizeInUInt ); 820 881 memcpy( m_piWedgePredTexDeltaDC1 + uiOffset, pcCU->getWedgePredTexDeltaDC1(), iSizeInInt ); … … 823 884 memcpy( m_piContourPredTexDeltaDC1 + uiOffset, pcCU->getContourPredTexDeltaDC1(), iSizeInInt ); 824 885 memcpy( m_piContourPredTexDeltaDC2 + uiOffset, pcCU->getContourPredTexDeltaDC2(), iSizeInInt ); 825 826 memcpy( m_pbTextureModesAllowed + uiOffset, pcCU->getTextureModeAllowance(), iSizeInBool ); 827 #endif 828 886 #endif 887 888 #if HHI_MPI 829 889 memcpy( m_piTextureModeDepth + uiOffset, pcCU->getTextureModeDepth(), iSizeInInt ); 890 #endif 830 891 } 831 892 … … 854 915 memcpy( rpcCU->getMergeFlag() + m_uiAbsIdxInLCU, m_pbMergeFlag, iSizeInBool ); 855 916 memcpy( rpcCU->getMergeIndex() + m_uiAbsIdxInLCU, m_puhMergeIndex, iSizeInUchar ); 917 #if HHI_INTER_VIEW_RESIDUAL_PRED 856 918 memcpy( rpcCU->getResPredAvail() + m_uiAbsIdxInLCU, m_pbResPredAvailable, iSizeInBool ); 857 919 memcpy( rpcCU->getResPredFlag() + m_uiAbsIdxInLCU, m_pbResPredFlag, iSizeInBool ); 920 #endif 858 921 for( UInt ui = 0; ui < MRG_MAX_NUM_CANDS; ui++ ) 859 922 { … … 891 954 rpcCU->setEntropySliceStartCU( m_uiEntropySliceStartCU ); 892 955 893 #if HHI_DMM_ INTRA956 #if HHI_DMM_WEDGE_INTRA 894 957 memcpy( rpcCU->getWedgeFullTabIdx() + m_uiAbsIdxInLCU, m_puiWedgeFullTabIdx, iSizeInUInt ); 895 958 memcpy( rpcCU->getWedgeFullDeltaDC1() + m_uiAbsIdxInLCU, m_piWedgeFullDeltaDC1, iSizeInInt ); … … 900 963 memcpy( rpcCU->getWedgePredDirDeltaDC2() + m_uiAbsIdxInLCU, m_piWedgePredDirDeltaDC2, iSizeInInt ); 901 964 memcpy( rpcCU->getWedgePredDirDeltaEnd() + m_uiAbsIdxInLCU, m_piWedgePredDirDeltaEnd, iSizeInInt ); 902 965 #endif 966 #if HHI_DMM_PRED_TEX 903 967 memcpy( rpcCU->getWedgePredTexTabIdx() + m_uiAbsIdxInLCU, m_puiWedgePredTexTabIdx, iSizeInUInt ); 904 968 memcpy( rpcCU->getWedgePredTexDeltaDC1() + m_uiAbsIdxInLCU, m_piWedgePredTexDeltaDC1, iSizeInInt ); … … 907 971 memcpy( rpcCU->getContourPredTexDeltaDC1() + m_uiAbsIdxInLCU, m_piContourPredTexDeltaDC1, iSizeInInt ); 908 972 memcpy( rpcCU->getContourPredTexDeltaDC2() + m_uiAbsIdxInLCU, m_piContourPredTexDeltaDC2, iSizeInInt ); 909 910 memcpy( rpcCU->getTextureModeAllowance() + m_uiAbsIdxInLCU, m_pbTextureModesAllowed, iSizeInBool ); 911 #endif 912 973 #endif 974 975 #if HHI_MPI 913 976 memcpy( rpcCU->getTextureModeDepth() + m_uiAbsIdxInLCU, m_piTextureModeDepth, iSizeInInt ); 977 #endif 914 978 } 915 979 … … 939 1003 memcpy( rpcCU->getMergeFlag() + uiPartOffset, m_pbMergeFlag, iSizeInBool ); 940 1004 memcpy( rpcCU->getMergeIndex() + uiPartOffset, m_puhMergeIndex, iSizeInUchar ); 1005 #if HHI_INTER_VIEW_RESIDUAL_PRED 941 1006 memcpy( rpcCU->getResPredAvail() + uiPartOffset, m_pbResPredAvailable, iSizeInBool ); 942 1007 memcpy( rpcCU->getResPredFlag() + uiPartOffset, m_pbResPredFlag, iSizeInBool ); 1008 #endif 943 1009 for( UInt ui = 0; ui < MRG_MAX_NUM_CANDS; ui++ ) 944 1010 { … … 975 1041 rpcCU->setEntropySliceStartCU( m_uiEntropySliceStartCU ); 976 1042 977 #if HHI_DMM_ INTRA1043 #if HHI_DMM_WEDGE_INTRA 978 1044 memcpy( rpcCU->getWedgeFullTabIdx() + uiPartOffset, m_puiWedgeFullTabIdx, iSizeInUInt ); 979 1045 memcpy( rpcCU->getWedgeFullDeltaDC1() + uiPartOffset, m_piWedgeFullDeltaDC1, iSizeInInt ); … … 984 1050 memcpy( rpcCU->getWedgePredDirDeltaDC2() + uiPartOffset, m_piWedgePredDirDeltaDC2, iSizeInInt ); 985 1051 memcpy( rpcCU->getWedgePredDirDeltaEnd() + uiPartOffset, m_piWedgePredDirDeltaEnd, iSizeInInt ); 986 1052 #endif 1053 #if HHI_DMM_PRED_TEX 987 1054 memcpy( rpcCU->getWedgePredTexTabIdx() + uiPartOffset, m_puiWedgePredTexTabIdx, iSizeInUInt ); 988 1055 memcpy( rpcCU->getWedgePredTexDeltaDC1() + uiPartOffset, m_piWedgePredTexDeltaDC1, iSizeInInt ); … … 991 1058 memcpy( rpcCU->getContourPredTexDeltaDC1() + uiPartOffset, m_piContourPredTexDeltaDC1, iSizeInInt ); 992 1059 memcpy( rpcCU->getContourPredTexDeltaDC2() + uiPartOffset, m_piContourPredTexDeltaDC2, iSizeInInt ); 993 994 memcpy( rpcCU->getTextureModeAllowance() + uiPartOffset, m_pbTextureModesAllowed, iSizeInBool ); 995 #endif 996 1060 #endif 1061 1062 #if HHI_MPI 997 1063 memcpy( rpcCU->getTextureModeDepth() + uiPartOffset, m_piTextureModeDepth, iSizeInInt ); 1064 #endif 998 1065 } 999 1066 … … 1356 1423 } 1357 1424 1358 1359 #if HHI_DMM_INTRA 1425 #if HHI_DMM_WEDGE_INTRA 1360 1426 Void TComDataCU::setWedgeFullTabIdxSubParts( UInt uiTIdx, UInt uiAbsPartIdx, UInt uiDepth ) 1361 1427 { … … 1427 1493 } 1428 1494 } 1429 1495 #endif 1496 #if HHI_DMM_PRED_TEX 1430 1497 Void TComDataCU::setWedgePredTexTabIdxSubParts( UInt uiTIdx, UInt uiAbsPartIdx, UInt uiDepth ) 1431 1498 { … … 1477 1544 } 1478 1545 } 1479 1480 Void TComDataCU::setTextureModeAllowanceSubParts ( Bool bTMAllowed, UInt uiAbsPartIdx, UInt uiDepth ) 1481 { 1482 UInt uiCurrPartNumb = m_pcPic->getNumPartInCU() >> (uiDepth << 1); 1483 1484 memset( m_pbTextureModesAllowed + uiAbsPartIdx, bTMAllowed, sizeof(Bool)*uiCurrPartNumb ); 1485 } 1486 #endif 1487 1546 #endif 1547 1548 #if HHI_INTER_VIEW_MOTION_PRED 1488 1549 Int 1489 1550 TComDataCU::getPdmMergeCandidate( UInt uiPartIdx, Int* paiPdmRefIdx, TComMv* pacPdmMv ) … … 1511 1572 return pcDepthMapGenerator->getIViewOrgDepthMvPred( this, uiPartIdx, eRefPicList, iRefIdx, rcMv ); 1512 1573 } 1513 1574 #endif 1575 1576 1577 #if HHI_INTER_VIEW_RESIDUAL_PRED 1514 1578 Bool 1515 1579 TComDataCU::getResidualSamples( UInt uiPartIdx, TComYuv* pcYuv ) … … 1519 1583 return pcResidualGenerator->getResidualSamples( this, uiPartIdx, pcYuv ); 1520 1584 } 1585 #endif 1521 1586 1522 1587 … … 1533 1598 mapPlanartoDC( iLeftIntraDir ); 1534 1599 #endif 1535 #if HHI_DMM_ INTRA1600 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 1536 1601 mapDMMtoDC( iLeftIntraDir ); 1537 1602 #endif … … 1543 1608 mapPlanartoDC( iAboveIntraDir ); 1544 1609 #endif 1545 #if HHI_DMM_ INTRA1610 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 1546 1611 mapDMMtoDC( iAboveIntraDir ); 1547 1612 #endif … … 1578 1643 mapPlanartoDC( iLeftIntraDir ); 1579 1644 #endif 1580 #if HHI_DMM_ INTRA1645 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 1581 1646 mapDMMtoDC( iLeftIntraDir ); 1582 1647 #endif … … 1588 1653 mapPlanartoDC( iAboveIntraDir ); 1589 1654 #endif 1590 #if HHI_DMM_ INTRA1655 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 1591 1656 mapDMMtoDC( iAboveIntraDir ); 1592 1657 #endif … … 1693 1758 } 1694 1759 1695 #if MW_MVI_SIGNALLING_MODE == 01696 UInt TComDataCU::getCtxMvInheritanceFlag( UInt uiAbsPartIdx, UInt uiDepth )1697 {1698 // return 0; // MW1699 TComDataCU* pcTempCU;1700 UInt uiTempPartIdx;1701 UInt uiCtx;1702 // Get left split flag1703 pcTempCU = getPULeft( uiTempPartIdx, m_uiAbsIdxInLCU + uiAbsPartIdx );1704 uiCtx = ( pcTempCU ) ? ( ( pcTempCU->getTextureModeDepth( uiTempPartIdx ) == uiDepth ) ? 1 : 0 ) : 0;1705 1706 // Get above split flag1707 pcTempCU = getPUAbove( uiTempPartIdx, m_uiAbsIdxInLCU + uiAbsPartIdx );1708 uiCtx += ( pcTempCU ) ? ( ( pcTempCU->getTextureModeDepth( uiTempPartIdx ) == uiDepth ) ? 1 : 0 ) : 0;1709 1710 return uiCtx;1711 }1712 #endif1713 1714 1760 UInt TComDataCU::getCtxIntraDirChroma( UInt uiAbsPartIdx ) 1715 1761 { … … 2148 2194 } 2149 2195 2196 #if HHI_INTER_VIEW_RESIDUAL_PRED 2150 2197 Void TComDataCU::setResPredAvailSubParts( Bool bResPredAvailable, UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth ) 2151 2198 { … … 2157 2204 setSubPartBool( bResPredFlag, m_pbResPredFlag, uiAbsPartIdx, uiDepth, uiPartIdx ); 2158 2205 } 2206 #endif 2159 2207 2160 2208 Void TComDataCU::setChromIntraDirSubParts( UInt uiDir, UInt uiAbsPartIdx, UInt uiDepth ) … … 2632 2680 { 2633 2681 UInt uiAbsPartAddr = m_uiAbsIdxInLCU + uiAbsPartIdx; 2682 #if HHI_INTER_VIEW_MOTION_PRED 2634 2683 Bool bNoPdmMerge = ( m_pcSlice->getSPS()->getViewId() == 0 || ( m_pcSlice->getSPS()->getMultiviewMvPredMode() & PDM_USE_FOR_MERGE ) != PDM_USE_FOR_MERGE ); 2635 2684 UInt uiPdmMergePos = ( bNoPdmMerge ? 5 : PDM_MERGE_POS ); … … 2640 2689 UInt uiCorBLAddr = ( uiPdmMergePos < 5 ? 5 : 4 ); 2641 2690 UInt uiPdmAddr = uiPdmMergePos; 2691 #else 2692 UInt uiLeftAddr = 0; 2693 UInt uiAboveAddr = 1; 2694 UInt uiColocAddr = 2; 2695 UInt uiCorRTAddr = 3; 2696 UInt uiCorBLAddr = 4; 2697 #endif 2642 2698 2643 2699 bool abCandIsInter[ MRG_MAX_NUM_CANDS ]; … … 3099 3155 3100 3156 3157 #if HHI_INTER_VIEW_MOTION_PRED 3101 3158 //===== add merge with predicted depth maps ===== 3102 3159 TComMv acPdmMv [2]; … … 3124 3181 } 3125 3182 } 3183 #endif 3126 3184 3127 3185 … … 3320 3378 Int iLeftIdx = -1; 3321 3379 3380 #if HHI_INTER_VIEW_MOTION_PRED 3322 3381 #if ( PDM_AMVP_POS == 0 ) 3323 3382 // get inter-view mv predictor (at position 0) … … 3328 3387 pInfo->m_acMvCand[ pInfo->iN++ ] = cPdmMvPred; 3329 3388 } 3389 #endif 3330 3390 #endif 3331 3391 … … 3388 3448 3389 3449 3450 #if HHI_INTER_VIEW_MOTION_PRED 3390 3451 #if ( PDM_AMVP_POS == 1 ) 3391 3452 // get inter-view mv predictor (at position 1) … … 3397 3458 } 3398 3459 #endif 3399 3460 #endif 3400 3461 3401 3462 … … 3595 3656 3596 3657 3658 #if HHI_INTER_VIEW_MOTION_PRED 3597 3659 #if ( PDM_AMVP_POS == 2 ) 3598 3660 // get inter-view mv predictor (at position 2) … … 3604 3666 } 3605 3667 #endif 3606 3668 #endif 3607 3669 3608 3670 // Get Temporal Motion Predictor … … 3754 3816 3755 3817 3818 #if HHI_INTER_VIEW_MOTION_PRED 3756 3819 #if ( PDM_AMVP_POS == 3 ) 3757 3820 // get inter-view mv predictor (at position 3) … … 3763 3826 } 3764 3827 #endif 3765 3828 #endif 3766 3829 3767 3830 // Check No MV Candidate … … 3854 3917 { 3855 3918 Int iMvShift = 2; 3856 #if MW_DEPTH_MAP_INTERP_FILTER == 2 && MW_FULL_PEL_DEPTH_MAP_MV_SIGNALLING3919 #if HHI_FULL_PEL_DEPTH_MAP_MV_ACC 3857 3920 if( getSlice()->getSPS()->isDepth() ) 3858 3921 iMvShift = 0; … … 4676 4739 #endif 4677 4740 4741 #if HHI_MPI 4678 4742 Void TComDataCU::setTextureModeDepthSubParts( Int iTextureModeDepth, UInt uiAbsPartIdx, UInt uiDepth ) 4679 4743 { … … 4692 4756 Int iSizeInUchar = sizeof( UChar ) * uiNumPartition; 4693 4757 Int iSizeInInt = sizeof( Int ) * uiNumPartition; 4694 //#if HHI_MRG 4695 // Int iSizeInBool = sizeof( Bool ) * uiNumPartition; 4696 //#endif 4697 4698 // memcpy( m_pePartSize + uiAbsPartIdxDst, pcCU->getPartitionSize() + uiAbsPartIdxSrc, sizeof( PartSize ) * uiNumPartition ); 4758 4699 4759 memcpy( m_pePredMode + uiAbsPartIdxDst, pcCU->getPredictionMode() + uiAbsPartIdxSrc, sizeof( PredMode ) * uiNumPartition ); 4700 4760 memcpy( m_puhInterDir + uiAbsPartIdxDst, pcCU->getInterDir() + uiAbsPartIdxSrc, iSizeInUchar ); 4701 4702 //#if HHI_MRG4703 // m_pbMergeFlag = pcCU->getMergeFlag() + uiAbsPartIdx;4704 // m_puhMergeIndex = pcCU->getMergeIndex() + uiAbsPartIdx;4705 // for( UInt ui = 0; ui < HHI_NUM_MRG_CAND; ui ++ )4706 // {4707 // m_apuhNeighbourCandIdx[ui] = pcCU->getNeighbourCandIdx( ui ) + uiAbsPartIdx;4708 // }4709 //#endif4710 4761 4711 4762 memcpy( m_apiMVPIdx[0] + uiAbsPartIdxDst, pcCU->getMVPIdx(REF_PIC_LIST_0) + uiAbsPartIdxSrc, iSizeInInt ); … … 4714 4765 memcpy( m_apiMVPNum[1] + uiAbsPartIdxDst, pcCU->getMVPNum(REF_PIC_LIST_1) + uiAbsPartIdxSrc, iSizeInInt ); 4715 4766 4716 // m_acCUMvField[0].copyFrom( pcCU->getCUMvField( REF_PIC_LIST_0 ), pcCU->getTotalNumPart(), 0 );4717 // m_acCUMvField[1].copyFrom( pcCU->getCUMvField( REF_PIC_LIST_1 ), pcCU->getTotalNumPart(), 0 );4718 4719 4767 pcCU->getCUMvField( REF_PIC_LIST_0 )->copyTo( &m_acCUMvField[0], -Int(uiAbsPartIdxSrc) + uiAbsPartIdxDst, uiAbsPartIdxSrc, uiNumPartition ); 4720 4768 pcCU->getCUMvField( REF_PIC_LIST_1 )->copyTo( &m_acCUMvField[1], -Int(uiAbsPartIdxSrc) + uiAbsPartIdxDst, uiAbsPartIdxSrc, uiNumPartition ); 4721 #if MW_DEPTH_MAP_INTERP_FILTER == 2 && MW_FULL_PEL_DEPTH_MAP_MV_SIGNALLING4769 #if HHI_FULL_PEL_DEPTH_MAP_MV_ACC 4722 4770 for( UInt ui = 0; ui < uiNumPartition; ui++ ) 4723 4771 { … … 4736 4784 #endif 4737 4785 } 4786 #endif 4738 4787 4739 4788 Void TComDataCU::getPosInPic( UInt uiAbsPartIndex, Int& riPosX, Int& riPosY ) -
trunk/source/Lib/TLibCommon/TComDataCU.h
r2 r5 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-2011, 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 1 34 2 35 … … 51 84 UChar* m_puhHeight; ///< array of heights 52 85 UChar* m_puhDepth; ///< array of depths 86 #if HHI_MPI 53 87 Int* m_piTextureModeDepth; ///< at which depth is prediction data inherited from texture picture ( -1 : none ) 88 #endif 54 89 55 90 // ------------------------------------------------------------------------------------------------------------------- … … 90 125 Bool* m_pbMergeFlag; ///< array of merge flags 91 126 UChar* m_puhMergeIndex; ///< array of merge candidate indices 127 #if HHI_INTER_VIEW_RESIDUAL_PRED 92 128 Bool* m_pbResPredAvailable; ///< array of residual prediction available flags 93 129 Bool* m_pbResPredFlag; ///< array of residual prediction flags 130 #endif 94 131 UChar* m_apuhNeighbourCandIdx[ MRG_MAX_NUM_CANDS ];///< array of motion vector predictor candidates indices 95 132 UChar* m_puhLumaIntraDir; ///< array of intra directions (luma) … … 100 137 UInt* m_puiAlfCtrlFlag; ///< array of ALF flags 101 138 UInt* m_puiTmpAlfCtrlFlag; ///< temporal array of ALF flags 102 #if HHI_DMM_ INTRA139 #if HHI_DMM_WEDGE_INTRA 103 140 UInt* m_puiWedgeFullTabIdx; 104 141 Int* m_piWedgeFullDeltaDC1; … … 109 146 Int* m_piWedgePredDirDeltaDC2; 110 147 Int* m_piWedgePredDirDeltaEnd; 111 148 #endif 149 #if HHI_DMM_PRED_TEX 112 150 UInt* m_puiWedgePredTexTabIdx; 113 151 Int* m_piWedgePredTexDeltaDC1; … … 116 154 Int* m_piContourPredTexDeltaDC1; 117 155 Int* m_piContourPredTexDeltaDC2; 118 119 Bool* m_pbTextureModesAllowed;120 156 #endif 121 157 … … 201 237 Void setDepth ( UInt uiIdx, UChar uh ) { m_puhDepth[uiIdx] = uh; } 202 238 239 #if HHI_MPI 203 240 Int* getTextureModeDepth () { return m_piTextureModeDepth; } 204 241 Int getTextureModeDepth ( UInt uiIdx ) { return m_piTextureModeDepth[uiIdx]; } … … 206 243 Void setTextureModeDepthSubParts( Int iTextureModeDepth, UInt uiAbsPartIdx, UInt uiDepth ); 207 244 Void copyTextureMotionDataFrom( TComDataCU* pcCU, UInt uiDepth, UInt uiAbsPartIdxSrc, UInt uiAbsPartIdxDst = 0 ); 245 #endif 208 246 209 247 Void setDepthSubParts ( UInt uiDepth, UInt uiAbsPartIdx ); … … 291 329 Void setNeighbourCandIdxSubParts ( UInt uiCandIdx, UChar uhNumCands, UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth ); 292 330 331 #if HHI_INTER_VIEW_RESIDUAL_PRED 293 332 Bool* getResPredAvail () { return m_pbResPredAvailable; } 294 333 Bool getResPredAvail ( UInt uiIdx ) { return m_pbResPredAvailable[uiIdx]; } … … 302 341 303 342 Void setResPredIndicator ( Bool bAv, Bool bRP ) { m_pbResPredAvailable[0] = bAv; m_pbResPredFlag[0] = bRP; } 343 #endif 304 344 305 345 Void setSubPartBool ( Bool bParameter, Bool* pbBaseLCU, UInt uiCUAddr, UInt uiCUDepth, UInt uiPUIdx ); … … 331 371 Void copyAlfCtrlFlagFromTmp(); 332 372 333 #if HHI_DMM_ INTRA373 #if HHI_DMM_WEDGE_INTRA 334 374 UInt* getWedgeFullTabIdx () { return m_puiWedgeFullTabIdx; } 335 375 UInt getWedgeFullTabIdx ( UInt uiIdx ) { return m_puiWedgeFullTabIdx[uiIdx]; } … … 366 406 Void setWedgePredDirDeltaEnd ( UInt uiIdx, Int iD ) { m_piWedgePredDirDeltaEnd[uiIdx] = iD; } 367 407 Void setWedgePredDirDeltaEndSubParts( Int iDelta, UInt uiAbsPartIdx, UInt uiDepth ); 368 408 #endif 409 #if HHI_DMM_PRED_TEX 369 410 UInt* getWedgePredTexTabIdx () { return m_puiWedgePredTexTabIdx; } 370 411 UInt getWedgePredTexTabIdx ( UInt uiIdx ) { return m_puiWedgePredTexTabIdx[uiIdx]; } … … 391 432 Void setContourPredTexDeltaDC2 ( UInt uiIdx, Int i ) { m_piContourPredTexDeltaDC2[uiIdx] = i; } 392 433 Void setContourPredTexDeltaDC2SubParts( Int iDC2, UInt uiAbsPartIdx, UInt uiDepth ); 393 394 Bool* getTextureModeAllowance () { return m_pbTextureModesAllowed; } 395 Bool getTextureModeAllowance ( UInt uiIdx ) { return m_pbTextureModesAllowed[uiIdx]; } 396 Void setTextureModeAllowance ( UInt uiIdx, Bool b ) { m_pbTextureModesAllowed[uiIdx] = b; } 397 Void setTextureModeAllowanceSubParts ( Bool bTMAllowed, UInt uiAbsPartIdx, UInt uiDepth ); 398 #endif 399 434 #endif 435 436 #if HHI_INTER_VIEW_MOTION_PRED 400 437 Int getPdmMergeCandidate( UInt uiPartIdx, Int* paiPdmRefIdx, TComMv* pacPdmMv ); 401 438 Bool getPdmMvPred( UInt uiPartIdx, RefPicList eRefPicList, Int iRefIdx, TComMv& rcMv, Bool bMerge = false ); 402 439 Bool getIViewOrgDepthMvPred( UInt uiPartIdx, RefPicList eRefPicList, Int iRefIdx, TComMv& rcMv ); 440 #endif 441 #if HHI_INTER_VIEW_RESIDUAL_PRED 403 442 Bool getResidualSamples( UInt uiPartIdx, TComYuv* pcYuv = 0 ); 443 #endif 404 444 405 445 // ------------------------------------------------------------------------------------------------------------------- … … 517 557 518 558 UInt getCtxSplitFlag ( UInt uiAbsPartIdx, UInt uiDepth ); 519 #if MW_MVI_SIGNALLING_MODE == 0520 UInt getCtxMvInheritanceFlag ( UInt uiAbsPartIdx, UInt uiDepth );521 #endif522 559 UInt getCtxCbf ( UInt uiAbsPartIdx, TextType eType, UInt uiTrDepth ); 523 560 UInt getCtxQtCbf ( UInt uiAbsPartIdx, TextType eType, UInt uiTrDepth ); -
trunk/source/Lib/TLibCommon/TComDepthMapGenerator.cpp
r2 r5 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-2011, 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 1 34 2 35 … … 10 43 #include "TComDepthMapGenerator.h" 11 44 45 46 #if DEPTH_MAP_GENERATION 12 47 13 48 … … 462 497 463 498 499 #if HHI_INTER_VIEW_MOTION_PRED 464 500 Void 465 501 TComDepthMapGenerator::covertOrgDepthMap( TComPic* pcPic ) … … 483 519 } 484 520 } 485 521 #endif 486 522 487 523 Int … … 501 537 502 538 539 #if HHI_INTER_VIEW_MOTION_PRED 503 540 Int 504 541 TComDepthMapGenerator::getPdmMergeCandidate( TComDataCU* pcCU, UInt uiPartIdx, Int* paiPdmRefIdx, TComMv* pacPdmMv ) … … 674 711 return true; 675 712 } 676 713 #endif 677 714 678 715 … … 1409 1446 } 1410 1447 1448 #endif // DEPTH_MAP_GENERATION 1449 -
trunk/source/Lib/TLibCommon/TComDepthMapGenerator.h
r2 r5 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-2011, 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 1 34 2 35 … … 15 48 #include "TComSlice.h" 16 49 50 51 #if DEPTH_MAP_GENERATION 17 52 18 53 … … 29 64 30 65 UInt getPdm () { if( m_aacActiveSPS[0][1] ) { return m_aacActiveSPS[0][1]->getPredDepthMapGeneration(); } return 0; } 66 #if HHI_INTER_VIEW_RESIDUAL_PRED 31 67 UInt getResPrd () { if( m_aacActiveSPS[0][1] ) { return m_aacActiveSPS[0][1]->getMultiviewResPredMode (); } return 0; } 68 #endif 32 69 33 70 private: … … 84 121 Void dumpDepthMap ( TComPic* pcPic, char* pFilenameBase ); 85 122 123 #if HHI_INTER_VIEW_MOTION_PRED 86 124 Void covertOrgDepthMap ( TComPic* pcPic ); 125 #endif 87 126 88 127 UInt getBaseViewId ( UInt uiIdx ) { AOF( uiIdx < m_auiBaseIdList.size() ); return m_auiBaseIdList[uiIdx]; } 89 128 Int getDisparity ( TComPic* pcPic, Int iPosX, Int iPosY, UInt uiRefViewId ); 129 #if HHI_INTER_VIEW_MOTION_PRED 90 130 Int getPdmMergeCandidate ( TComDataCU* pcCU, UInt uiPartIdx, Int* paiPdmRefIdx, TComMv* pacPdmMv ); 91 131 Bool getPdmMvPred ( TComDataCU* pcCU, UInt uiPartIdx, RefPicList eRefPicList, Int iRefIdx, TComMv& rcMv, Bool bMerge ); 92 132 Bool getIViewOrgDepthMvPred( TComDataCU* pcCU, UInt uiPartIdx, RefPicList eRefPicList, Int iRefIdx, TComMv& rcMv ); 133 #endif 93 134 94 135 TComPrediction* getPrediction () { return m_pcPrediction; } … … 177 218 }; 178 219 220 221 #endif // DEPTH_MAP_GENERATION 222 179 223 #endif // __TCOM_DEPTH_MAP_GENERATOR__ 180 224 -
trunk/source/Lib/TLibCommon/TComList.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibCommon/TComLoopFilter.cpp
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibCommon/TComLoopFilter.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibCommon/TComMVDRefData.cpp
r2 r5 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-2011, 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 1 34 2 35 … … 9 42 #include <fstream> 10 43 44 #if HHI_VSO 11 45 Void TComMVDRefData::setPicYuvBaseView( InterViewReference eView, Bool bDepth, TComPicYuv* pcOrgView, TComPicYuv* pcRecView ) 12 46 { … … 31 65 TComMVDRefData::TComMVDRefData() 32 66 { 33 //GT VSO34 67 m_adERViewShiftLUT = 0; 35 68 m_aiERViewShiftLUT = 0; 36 69 m_apcExternalReferenceViews.resize(0); 37 //GT VSO end38 70 39 71 for (UInt uiView = 0; uiView < 3; uiView++) … … 44 76 m_apcDepthRec[uiView] = NULL; 45 77 46 //GT VSO47 78 m_adBaseViewShiftLUT [uiView] = NULL; 48 79 m_aiBaseViewShiftLUT [uiView] = NULL; 49 //GT VSO end 80 50 81 }; 51 82 } 52 83 53 //GT VSO54 84 Void TComMVDRefData::getRefPicYuvAndLUT( TComPicYuv**& rpacDistRefPicList, Int***& rppaiShiftLut ) 55 85 { 56 //GT57 58 86 UInt uiNextEntry = 0; 59 87 for ( UInt uiViewIdx = 0; uiViewIdx < m_aiExtViewRefInd.size(); uiViewIdx++ ) … … 78 106 rppaiShiftLut[2] = m_aiBaseViewShiftLUT[ NEXTVIEW ]; 79 107 80 //GT: Only orginals of this view needed for Mode 1;81 108 rpacDistRefPicList[0] = NULL; 82 109 rpacDistRefPicList[1] = NULL; 83 110 rpacDistRefPicList[2] = NULL; 84 111 } 85 //GT VSO end 86 87 88 89 90 //Void TComMVDRefData::render( TComPicYuv* pOut ) 91 ////Void TComMVDRefData::render( TComPicYuv* pIn, TComPicYuv* pOut, TComPicYuv* pDepth, Long** aalLUT ) 92 //{ 93 // 94 // std::cout << "InRender" << std::endl; 95 // 96 // TComPicYuv* pIn = getPicYuvOrgVideo(CURRVIEW); 97 // // TComPicYuv* pOut = getRecVideo(CURRVIEW); 98 // TComPicYuv* pDepth = getPicYuvOrgDepth(CURRVIEW); 99 // 100 // Int** aaiLUT = getShiftLUTIERView(0); 101 // 102 // Int iHeight = (Int) pIn->getHeight(); 103 // Int iWidth = (Int) pIn->getWidth(); 104 // 105 // Pel* piSourceLumaData = pIn ->getLumaAddr(); 106 // Pel* piTargetLumaData = pOut ->getLumaAddr(); 107 // Pel* piDepthData = pDepth->getLumaAddr(); 108 // 109 // Int iSourceLumaStride = pIn ->getStride(); 110 // Int iTargetLumaStride = pOut ->getStride(); 111 // Int iDepthStride = pDepth->getStride(); 112 // 113 // 114 // for (Int iY = 0; iY < iHeight; iY++) 115 // { 116 // for (Int iX = 0; iX < iWidth; iX++) 117 // { 118 // piTargetLumaData[iX] = 0; 119 // } 120 // piTargetLumaData += iTargetLumaStride; 121 // } 122 // 123 // piTargetLumaData = pOut ->getLumaAddr(); 124 // 125 // Int iNewPos; 126 // for (Int iY = 0; iY < iHeight; iY++) 127 // { 128 // for (Int iX = 0; iX < iWidth; iX++) 129 // { 130 // iNewPos = iX - aaiLUT[0][(piDepthData[iX] >> g_uiBitIncrement)]; 131 // iNewPos = (iNewPos < 0 ) ? 0 : iNewPos; 132 // iNewPos = (iNewPos >= iWidth) ? iWidth - 1 : iNewPos; 133 // 134 // piTargetLumaData[iNewPos] = piSourceLumaData[iX]; 135 // } 136 // piSourceLumaData += iSourceLumaStride; 137 // piTargetLumaData += iTargetLumaStride; 138 // piDepthData += iDepthStride; 139 // } 140 //} 141 // 142 // 143 // 144 // 145 //TComRendererModel::TComRendererModel() 146 //{ 147 // m_pcInputSamples = NULL; 148 // m_pcOutputSamples = NULL; 149 // m_ppiShiftLUT = NULL; 150 //} 151 // 152 //TComRendererModel::~TComRendererModel() 153 //{ 154 // if ( m_pcOutputSamples ) 155 // delete[] m_pcOutputSamples; 156 // 157 // if ( m_pcInputSamples ) 158 // delete[] m_pcInputSamples; 159 // 160 //} 161 // 162 //Void TComRendererModel::createModel( TComPicYuv* pcYuvDepth, TComPicYuv* pcYuvVideo, TComPicYuv* pcYuvRef, Int** ppiShiftLUT ) 163 //{ 164 // createModel(pcYuvDepth->getLumaAddr(), pcYuvDepth->getStride(), pcYuvVideo->getLumaAddr(), pcYuvVideo->getStride(), pcYuvVideo->getCbAddr(), pcYuvVideo->getCrAddr(), pcYuvVideo->getCStride(), pcYuvVideo->getWidth(), pcYuvVideo->getHeight(), ppiShiftLUT ); 165 //} 166 // 167 //Void TComRendererModel::createModel( TComPicYuv* pcYuvDepth, TComPicYuv* pcYuvVideo, Int** ppiShiftLUT ) 168 //{ 169 // 170 //} 171 // 172 //Void TComRendererModel::createModel( Pel* pcPelDisp, Int iStrideDisp, Pel* pcPelY, Int iStrideY, Pel* pcPelU, Pel* pcPelV, Int iStrideC, Int iWidth, Int iHeight, Int** ppiShiftLUT ) 173 //{ 174 // 175 //} 176 // 177 //Void TComRendererModel::xCreateRenderedView( Pel* pcPelDisp, Int iDispStride, Pel* pcPelY, Int iLStride, Pel* pcPelU, Pel* pcPelV, Int iCStride, Int iWidth, Int iHeight, Int** ppiShiftLUT,Bool bSAD ) 178 //{ 179 // m_ppiShiftLUT = ppiShiftLUT; 180 // m_iWidth = iWidth; 181 // m_iHeight = iHeight; 182 // m_iStride = iWidth; 183 // 184 // m_pcOutputSamples = new RendererOutputSample[ iWidth * iHeight]; 185 // m_pcInputSamples = new RendererInputSample [ iWidth * iHeight]; 186 // 187 // RendererInputSample* pcInputSamples = m_pcInputSamples ; 188 // RendererOutputSample* pcOutputSamples = m_pcOutputSamples ; 189 // 190 // for ( Int iRow = 0; iRow < iHeight; iRow++ ) 191 // { 192 // for ( Int iCol = 0; iCol < iWidth; iCol++ ) 193 // { 194 // pcInputSamples[iCol].m_uiPosX = iCol; 195 // pcInputSamples[iCol].m_uiY = pcPelY[ iCol ]; 196 // pcInputSamples[iCol].m_uiU = pcPelU[ iCol >> 1 ]; 197 // pcInputSamples[iCol].m_uiV = pcPelV[ iCol >> 1 ]; 198 // pcOutputSamples[iCol].m_iErr = 0; 199 // 200 // pcInputSamples[iCol].m_iPosShifted = iCol + m_ppiShiftLUT[0][ pcPelDisp[ iCol ] ]; 201 // pcInputSamples[iCol].m_uiDisp = pcPelDisp[ iCol ]; 202 // 203 // } 204 // 205 // pcInputSamples += m_iStride; 206 // pcOutputSamples += m_iStride; 207 // pcPelY += iLStride; 208 // pcPelDisp += iDispStride; 209 // 210 // if ( iRow & 1 ) 211 // { 212 // pcPelU += iCStride; 213 // pcPelV += iCStride; 214 // } 215 // 216 // } 217 // 218 // m_lErr = 0; 219 // Long lDump; 220 // changeModel(0,0,m_iWidth, m_iHeight, pcPelDisp, iDispStride, lDump, bSAD); 221 //} 222 // 223 //Void TComRendererModel::changeModel( Int iPosX, Int iPosY, Int iWidth, Int iHeight, Pel* pcPelDisp, Int iDispStride, Long& rlErr, Bool bSAD ) 224 //{ 225 // RendererInputSample* pcInputSamples = m_pcInputSamples ; 226 // RendererOutputSample* pcOutputSamples = m_pcOutputSamples ; 227 // 228 // Int iMinChangedPosition = 0; 229 // Int iMaxChangedPosition = m_iWidth - 1; 230 // 231 // rlErr = 0; 232 // 233 // for ( Int iRow = iPosX; iRow < iHeight; iRow++ ) 234 // { 235 // // Add and Remove samples (Update Model) 236 // for ( Int iCol = iPosY; iCol < iWidth; iCol++ ) 237 // { 238 // // Remove from old position 239 // Int iOldPosShifted = pcInputSamples[iCol].m_iPosShifted; 240 // 241 // iMinChangedPosition = Min( iOldPosShifted, iMinChangedPosition ); 242 // iMaxChangedPosition = Max( iOldPosShifted, iMaxChangedPosition ); 243 // 244 // pcOutputSamples[ iOldPosShifted ].removeInputSample( &(pcInputSamples[iCol]) ); 245 // 246 // // Add to new position 247 // Int iShift = m_ppiShiftLUT[0][ pcPelDisp[ iCol ] ]; 248 // 249 // Int iPosShifted = iPosX + iShift; 250 // 251 // iPosShifted = Min(Max(iPosShifted, 0), m_iWidth - 1); 252 // iMinChangedPosition = Min(iPosShifted, iMinChangedPosition); 253 // iMaxChangedPosition = Max(iPosShifted, iMaxChangedPosition); 254 // 255 // pcInputSamples[iCol].m_uiDisp = pcPelDisp[ iCol ]; 256 // pcInputSamples[iCol].m_iPosShifted = iPosShifted; 257 // 258 // pcOutputSamples[ iPosShifted ].addInputSample( &(pcInputSamples[iCol]) ); 259 // } 260 // 261 // // ReRender 262 // 263 // // Get Top Plane 264 // Int iMaxInd = -1; 265 // 266 // if ( pcOutputSamples[iMinChangedPosition].m_pcTopSample ) 267 // { 268 // iMaxInd = pcOutputSamples[iMinChangedPosition].m_pcTopSample->m_uiPosX; 269 // } 270 // 271 // if ( iMinChangedPosition > 0 && pcOutputSamples[iMinChangedPosition].m_pcTopSample ) 272 // { 273 // iMaxInd = Max( iMaxInd, pcOutputSamples[iMinChangedPosition-1].m_pcTopSample->m_uiPosX ); 274 // } 275 // 276 // for ( Int iCol = iMinChangedPosition; iCol <= iMaxChangedPosition; iCol++ ) 277 // { 278 // if ( pcOutputSamples[iCol].m_pcTopSample == NULL ) 279 // { 280 // if ( pcOutputSamples[iCol+1].m_pcTopSample == NULL ) 281 // { 282 // // Hole Filling 283 // Int iFillStartCol = iCol; 284 // iCol++; 285 // 286 // while( ( pcOutputSamples[iCol].m_pcTopSample == NULL ) && (iMinChangedPosition < iMaxChangedPosition) ) iCol++; 287 // 288 // for ( int iFillCol = iFillStartCol; iFillCol < iCol; iFillCol++ ) 289 // { 290 // pcOutputSamples[iFillCol].assignValues( pcOutputSamples[iCol], rlErr, bSAD ); 291 // } 292 // 293 // if ( iMaxInd == -1 ) 294 // { 295 // iMaxInd = pcOutputSamples[iCol].m_pcTopSample->m_uiPosX; 296 // } 297 // } 298 // else 299 // { 300 // // Fill Gap here 301 // pcOutputSamples[iCol].assignValues( pcOutputSamples[iCol-1], rlErr, bSAD ); 302 // 303 // }; 304 // } 305 // else 306 // { 307 // if ( pcOutputSamples[iCol].m_pcTopSample->m_uiPosX > iMaxInd) 308 // { 309 // iMaxInd = pcOutputSamples[iCol].m_pcTopSample->m_uiPosX; 310 // 311 // //assign this Sample 312 // pcOutputSamples[iCol].assignValues( pcOutputSamples[iCol], rlErr, bSAD ); 313 // } 314 // else 315 // { 316 // //assign last sample 317 // pcOutputSamples[iCol].assignValues( pcOutputSamples[iCol-1], rlErr, bSAD ); 318 // } 319 // } 320 // } 321 // 322 // pcInputSamples += m_iStride; 323 // pcPelDisp += iDispStride; 324 // 325 // } 326 //} 327 // 328 //Void RendererOutputSample::assignValues( RendererOutputSample& rpcOutputSample, Long& rlErr, Bool bSAD ) 329 //{ 330 // m_uiY = rpcOutputSample.m_uiYRef; 331 // m_uiU = rpcOutputSample.m_uiURef; 332 // m_uiV = rpcOutputSample.m_uiVRef; 333 // 334 // rlErr -= m_iErr; 335 // 336 // int iErr = m_uiY - m_uiYRef; 337 // 338 // if (bSAD) 339 // { 340 // rlErr += abs(iErr); 341 // } 342 // else 343 // { 344 // rlErr += iErr * iErr; 345 // } 346 //} 347 // 348 //Void RendererOutputSample::addInputSample( RendererInputSample* pcInputSample ) 349 //{ 350 // if ( m_acInputSamples.size() == 0 ) 351 // { 352 // m_acInputSamples.push_back( pcInputSample ); 353 // m_pcTopSample = pcInputSample; 354 // pcInputSample->cIter = m_acInputSamples.begin(); 355 // } 356 // else 357 // { 358 // std::vector <RendererInputSample*>::iterator cIter; 359 // 360 // for ( cIter = m_acInputSamples.begin( ) ; cIter != m_acInputSamples.end( ) ; cIter++ ) 361 // { 362 // if ( (*cIter)->m_uiPosX <= pcInputSample->m_uiPosX ) break; 363 // } 364 // 365 // m_acInputSamples.insert( cIter, 1, pcInputSample ); 366 // 367 // pcInputSample->cIter = cIter; 368 // 369 // if ( cIter == m_acInputSamples.begin() ) 370 // { 371 // m_pcTopSample = pcInputSample; 372 // } 373 // } 374 //} 375 // 376 //RendererOutputSample::RendererOutputSample() 377 //{ 378 // m_pcTopSample = 0; 379 //} 380 // 381 //Void RendererOutputSample::removeInputSample( RendererInputSample* pcInputSample ) 382 //{ 383 // m_acInputSamples.erase( pcInputSample->cIter ); 384 //} 385 // 112 #endif -
trunk/source/Lib/TLibCommon/TComMVDRefData.h
r2 r5 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-2011, 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 1 34 2 35 … … 4 37 #define __TCOMMVDREFDATA__ 5 38 39 6 40 // Include files 41 7 42 #include "CommonDef.h" 8 43 #include "TComPicYuv.h" 9 44 #include <vector> 10 45 #if HHI_VSO 11 46 // ==================================================================================================================== 12 47 // Class definition … … 27 62 Int** m_aiBaseViewShiftLUT[3]; 28 63 29 30 //GT VSO31 64 //PicYuvs 32 65 std::vector<TComPicYuv*> m_apcExternalReferenceViews; … … 40 73 std::vector<Int> m_aiExtViewRefInd; 41 74 std::vector<Int> m_aiExtViewRefLUTInd; 42 43 //GT VSO end44 75 45 76 public: … … 64 95 // Void render( TComPicYuv* pOut ) /*Void render( TComPicYuv* pIn, TComPicYuv* pOut, TComPicYuv* pDepth, Long** aalLUT ) */; 65 96 66 //GT VSO 97 67 98 // PicYuvs 68 99 TComPicYuv* getPicYuvERView ( UInt uiReferenceNum ) { return m_apcExternalReferenceViews[uiReferenceNum]; }; … … 82 113 Void getRefPicYuvAndLUT ( TComPicYuv**& rpacDistRefPicList, Int***& rppalShiftLut); 83 114 Void getRefPicYuvAndLUTMode1( TComPicYuv**& rpacDistRefPicList, Int***& rppaiShiftLut ); 84 //GT VSO end85 115 86 116 }; // END CLASS DEFINITION TComMVDRefData 87 117 #endif // HHI_VSO 88 118 #endif // __TCOMMVDREFDATA__ 89 119 -
trunk/source/Lib/TLibCommon/TComMotionInfo.cpp
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibCommon/TComMotionInfo.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibCommon/TComMv.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibCommon/TComPattern.cpp
r2 r5 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-2011, 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 1 34 2 35 … … 91 124 Int iOffsetBottom, 92 125 UInt uiPartDepth, 93 UInt uiAbsPartIdx, 94 Bool bPrdDepthMap ) 126 UInt uiAbsPartIdx 127 #if DEPTH_MAP_GENERATION 128 ,Bool bPrdDepthMap 129 #endif 130 ) 95 131 { 96 132 m_iOffsetLeft = iOffsetLeft; … … 104 140 UInt uiAbsZorderIdx = pcCU->getZorderIdxInCU() + uiAbsPartIdx; 105 141 142 #if DEPTH_MAP_GENERATION 106 143 TComPicYuv* pcPic = ( bPrdDepthMap ? pcCU->getPic()->getPredDepthMap() : pcCU->getPic()->getPicYuvRec() ); 144 #else 145 TComPicYuv* pcPic = pcCU->getPic()->getPicYuvRec(); 146 #endif 107 147 if ( iComp == 0 ) 108 148 { … … 142 182 } 143 183 144 Void TComPattern::initPattern( TComDataCU* pcCU, UInt uiPartDepth, UInt uiAbsPartIdx, Bool bPrdDepthMap ) 184 Void TComPattern::initPattern( TComDataCU* pcCU, UInt uiPartDepth, UInt uiAbsPartIdx 185 #if DEPTH_MAP_GENERATION 186 , Bool bPrdDepthMap 187 #endif 188 ) 145 189 { 146 190 Int uiOffsetLeft = 0; … … 185 229 #endif 186 230 231 #if DEPTH_MAP_GENERATION 187 232 m_cPatternY .setPatternParamCU( pcCU, 0, uiWidth, uiHeight, uiOffsetLeft, uiOffsetRight, uiOffsetAbove, 0, uiPartDepth, uiAbsPartIdx, bPrdDepthMap ); 188 233 m_cPatternCb.setPatternParamCU( pcCU, 1, uiWidth >> 1, uiHeight >> 1, uiOffsetLeft, uiOffsetRight, uiOffsetAbove, 0, uiPartDepth, uiAbsPartIdx, bPrdDepthMap ); 189 234 m_cPatternCr.setPatternParamCU( pcCU, 2, uiWidth >> 1, uiHeight >> 1, uiOffsetLeft, uiOffsetRight, uiOffsetAbove, 0, uiPartDepth, uiAbsPartIdx, bPrdDepthMap ); 190 } 191 192 Void TComPattern::initAdiPattern( TComDataCU* pcCU, UInt uiZorderIdxInPart, UInt uiPartDepth, Int* piAdiBuf, Int iOrgBufStride, Int iOrgBufHeight, Bool& bAbove, Bool& bLeft, Bool bPrdDepthMap ) 235 #else 236 m_cPatternY .setPatternParamCU( pcCU, 0, uiWidth, uiHeight, uiOffsetLeft, uiOffsetRight, uiOffsetAbove, 0, uiPartDepth, uiAbsPartIdx ); 237 m_cPatternCb.setPatternParamCU( pcCU, 1, uiWidth >> 1, uiHeight >> 1, uiOffsetLeft, uiOffsetRight, uiOffsetAbove, 0, uiPartDepth, uiAbsPartIdx ); 238 m_cPatternCr.setPatternParamCU( pcCU, 2, uiWidth >> 1, uiHeight >> 1, uiOffsetLeft, uiOffsetRight, uiOffsetAbove, 0, uiPartDepth, uiAbsPartIdx ); 239 #endif 240 } 241 242 Void TComPattern::initAdiPattern( TComDataCU* pcCU, UInt uiZorderIdxInPart, UInt uiPartDepth, Int* piAdiBuf, Int iOrgBufStride, Int iOrgBufHeight, Bool& bAbove, Bool& bLeft 243 #if DEPTH_MAP_GENERATION 244 , Bool bPrdDepthMap 245 #endif 246 ) 193 247 { 194 248 Pel* piRoiOrigin; … … 330 384 piAdiTemp = piAdiBuf; 331 385 386 #if DEPTH_MAP_GENERATION 332 387 if( bPrdDepthMap ) 333 388 { … … 338 393 #endif 339 394 } 340 341 342 #if REFERENCE_SAMPLE_PADDING 395 #endif 396 397 398 #if REFERENCE_SAMPLE_PADDING 399 #if DEPTH_MAP_GENERATION 343 400 fillReferenceSamples ( pcCU, piRoiOrigin, piAdiTemp, bNeighborFlags, iNumIntraNeighbor, iUnitSize, iNumUnitsInCu, iTotalUnits, uiCuWidth, uiCuHeight, uiWidth, uiHeight, iPicStride, bPrdDepthMap ); 401 #else 402 fillReferenceSamples ( pcCU, piRoiOrigin, piAdiTemp, bNeighborFlags, iNumIntraNeighbor, iUnitSize, iNumUnitsInCu, iTotalUnits, uiCuWidth, uiCuHeight, uiWidth, uiHeight, iPicStride ); 403 #endif 344 404 delete [] bNeighborFlags; 345 405 bNeighborFlags = NULL; … … 586 646 587 647 #if REFERENCE_SAMPLE_PADDING 648 #if DEPTH_MAP_GENERATION 588 649 fillReferenceSamples ( pcCU, piRoiOrigin, piAdiTemp, bNeighborFlags, iNumIntraNeighbor, iUnitSize, iNumUnitsInCu, iTotalUnits, uiCuWidth, uiCuHeight, uiWidth, uiHeight, iPicStride, false ); 650 #else 651 fillReferenceSamples ( pcCU, piRoiOrigin, piAdiTemp, bNeighborFlags, iNumIntraNeighbor, iUnitSize, iNumUnitsInCu, iTotalUnits, uiCuWidth, uiCuHeight, uiWidth, uiHeight, iPicStride ); 652 #endif 589 653 #else // REFERENCE_SAMPLE_PADDING 590 654 for (i=0;i<uiWidth;i++) … … 648 712 649 713 #if REFERENCE_SAMPLE_PADDING 714 #if DEPTH_MAP_GENERATION 650 715 fillReferenceSamples ( pcCU, piRoiOrigin, piAdiTemp, bNeighborFlags, iNumIntraNeighbor, iUnitSize, iNumUnitsInCu, iTotalUnits, uiCuWidth, uiCuHeight, uiWidth, uiHeight, iPicStride, false ); 716 #else 717 fillReferenceSamples ( pcCU, piRoiOrigin, piAdiTemp, bNeighborFlags, iNumIntraNeighbor, iUnitSize, iNumUnitsInCu, iTotalUnits, uiCuWidth, uiCuHeight, uiWidth, uiHeight, iPicStride ); 718 #endif 651 719 delete [] bNeighborFlags; 652 720 bNeighborFlags = NULL; … … 709 777 710 778 #if REFERENCE_SAMPLE_PADDING 711 Void TComPattern::fillReferenceSamples( TComDataCU* pcCU, Pel* piRoiOrigin, Int* piAdiTemp, Bool* bNeighborFlags, Int iNumIntraNeighbor, Int iUnitSize, Int iNumUnitsInCu, Int iTotalUnits, UInt uiCuWidth, UInt uiCuHeight, UInt uiWidth, UInt uiHeight, Int iPicStride, Bool bPrdDepthMap ) 779 Void TComPattern::fillReferenceSamples( TComDataCU* pcCU, Pel* piRoiOrigin, Int* piAdiTemp, Bool* bNeighborFlags, Int iNumIntraNeighbor, Int iUnitSize, Int iNumUnitsInCu, Int iTotalUnits, UInt uiCuWidth, UInt uiCuHeight, UInt uiWidth, UInt uiHeight, Int iPicStride 780 #if DEPTH_MAP_GENERATION 781 , Bool bPrdDepthMap 782 #endif 783 ) 712 784 { 713 785 Pel* piRoiTemp; 714 786 Int i, j; 787 #if DEPTH_MAP_GENERATION 715 788 Int iDCValue = ( bPrdDepthMap ? PDM_UNDEFINED_DEPTH : ( 1<<( g_uiBitDepth + g_uiBitIncrement - 1) ) ); 789 #else 790 Int iDCValue = ( 1<<( g_uiBitDepth + g_uiBitIncrement - 1) ); 791 #endif 716 792 717 793 if (iNumIntraNeighbor == 0) … … 885 961 886 962 #if QC_MDIS 887 #if HHI_DISABLE_INTRA_SMOOTHING_DEPTH888 Int* TComPattern::getPredictorPtr ( UInt uiDirMode, UInt uiWidthBits, Int iCuWidth, Int iCuHeight, Int* piAdiBuf, Bool bDepth )889 #else890 963 Int* TComPattern::getPredictorPtr ( UInt uiDirMode, UInt uiWidthBits, Int iCuWidth, Int iCuHeight, Int* piAdiBuf ) 891 #endif892 964 { 893 965 #if MN_MDIS_SIMPLIFICATION … … 919 991 mapPlanartoDC( uiDirMode ); 920 992 #endif 921 #if HHI_DISABLE_INTRA_SMOOTHING_DEPTH 922 UChar ucFiltIdx = 0; 923 if ( !bDepth ) 924 { 925 ucFiltIdx = g_aucIntraFilter[uiWidthBits][uiDirMode]; 926 } 927 #else 928 #if HHI_DMM_INTRA 993 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 929 994 UChar ucFiltIdx = 0; 930 995 if ( uiDirMode < 34 ) … … 934 999 #else 935 1000 UChar ucFiltIdx = g_aucIntraFilter[uiWidthBits][uiDirMode]; 936 #endif937 1001 #endif 938 1002 -
trunk/source/Lib/TLibCommon/TComPattern.h
r2 r5 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-2011, 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 1 34 2 35 … … 62 95 Int iOffsetBottom, 63 96 UInt uiPartDepth, 64 UInt uiAbsZorderIdx, 65 Bool bPrdDepthMap = false ); 97 UInt uiAbsZorderIdx 98 #if DEPTH_MAP_GENERATION 99 ,Bool bPrdDepthMap = false 100 #endif 101 ); 66 102 }; 67 103 … … 101 137 102 138 #if QC_MDIS 103 #if HHI_DISABLE_INTRA_SMOOTHING_DEPTH104 Int* getPredictorPtr ( UInt uiDirMode, UInt uiWidthBits, Int iCuWidth, Int iCuHeight, Int* piAdiBuf, Bool bDepth = false );105 #else106 139 Int* getPredictorPtr ( UInt uiDirMode, UInt uiWidthBits, Int iCuWidth, Int iCuHeight, Int* piAdiBuf ); 107 #endif108 140 #endif //QC_MDIS 109 141 // ------------------------------------------------------------------------------------------------------------------- … … 126 158 Void initPattern ( TComDataCU* pcCU, 127 159 UInt uiPartDepth, 128 UInt uiAbsPartIdx, 129 Bool bPrdDepthMap = false ); 160 UInt uiAbsPartIdx 161 #if DEPTH_MAP_GENERATION 162 ,Bool bPrdDepthMap = false 163 #endif 164 ); 130 165 131 166 /// set luma parameters from CU data for accessing ADI data … … 137 172 Int iOrgBufHeight, 138 173 Bool& bAbove, 139 Bool& bLeft, 140 Bool bPrdDepthMap = false ); 174 Bool& bLeft 175 #if DEPTH_MAP_GENERATION 176 ,Bool bPrdDepthMap = false 177 #endif 178 ); 141 179 142 180 /// set chroma parameters from CU data for accessing ADI data … … 160 198 #if REFERENCE_SAMPLE_PADDING 161 199 /// padding of unavailable reference samples for intra prediction 162 Void fillReferenceSamples ( TComDataCU* pcCU, Pel* piRoiOrigin, Int* piAdiTemp, Bool* bNeighborFlags, Int iNumIntraNeighbor, Int iUnitSize, Int iNumUnitsInCu, Int iTotalUnits, UInt uiCuWidth, UInt uiCuHeight, UInt uiWidth, UInt uiHeight, Int iPicStride, Bool bPrdDepthMap ); 200 Void fillReferenceSamples ( TComDataCU* pcCU, Pel* piRoiOrigin, Int* piAdiTemp, Bool* bNeighborFlags, Int iNumIntraNeighbor, Int iUnitSize, Int iNumUnitsInCu, Int iTotalUnits, UInt uiCuWidth, UInt uiCuHeight, UInt uiWidth, UInt uiHeight, Int iPicStride 201 #if DEPTH_MAP_GENERATION 202 , Bool bPrdDepthMap 203 #endif 204 ); 163 205 #endif 164 206 #if CONSTRAINED_INTRA_PRED -
trunk/source/Lib/TLibCommon/TComPic.cpp
r2 r5 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-2011, 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 1 34 2 35 … … 17 50 m_apcPicYuv[0] = NULL; 18 51 m_apcPicYuv[1] = NULL; 52 #if DEPTH_MAP_GENERATION 19 53 m_pcPredDepthMap = NULL; 54 #endif 55 #if HHI_INTER_VIEW_MOTION_PRED 20 56 m_pcOrgDepthMap = NULL; 57 #endif 58 #if HHI_INTER_VIEW_RESIDUAL_PRED 21 59 m_pcResidual = NULL; 60 #endif 22 61 m_pcPicYuvPred = NULL; 23 62 m_pcPicYuvResi = NULL; 63 #if HHI_INTERVIEW_SKIP 24 64 m_pcUsedPelsMap = NULL; 65 #endif 25 66 26 67 #if PARALLEL_MERGED_DEBLK … … 76 117 } 77 118 119 #if DEPTH_MAP_GENERATION 78 120 if( m_pcPredDepthMap ) 79 121 { … … 82 124 m_pcPredDepthMap = NULL; 83 125 } 84 126 #endif 127 128 #if HHI_INTER_VIEW_MOTION_PRED 85 129 if( m_pcOrgDepthMap ) 86 130 { … … 89 133 m_pcOrgDepthMap = NULL; 90 134 } 91 135 #endif 136 137 #if HHI_INTER_VIEW_RESIDUAL_PRED 92 138 if( m_pcResidual ) 93 139 { … … 96 142 m_pcResidual = NULL; 97 143 } 98 144 #endif 145 146 #if HHI_INTERVIEW_SKIP 99 147 if( m_pcUsedPelsMap ) 100 148 { … … 103 151 m_pcUsedPelsMap = NULL; 104 152 } 153 #endif 105 154 106 155 #if PARALLEL_MERGED_DEBLK … … 160 209 #endif 161 210 211 #if DEPTH_MAP_GENERATION 162 212 Void 163 213 TComPic::addPrdDepthMapBuffer() … … 173 223 m_pcPredDepthMap ->create( iWidth, iHeight, uiMaxCuWidth, uiMaxCuHeight, uiMaxCuDepth ); 174 224 } 175 225 #endif 226 227 #if HHI_INTER_VIEW_MOTION_PRED 176 228 Void 177 229 TComPic::addOrgDepthMapBuffer() … … 187 239 m_pcOrgDepthMap ->create( iWidth, iHeight, uiMaxCuWidth, uiMaxCuHeight, uiMaxCuDepth ); 188 240 } 189 241 #endif 242 243 #if HHI_INTER_VIEW_RESIDUAL_PRED 190 244 Void 191 245 TComPic::addResidualBuffer() … … 201 255 m_pcResidual ->create( iWidth, iHeight, uiMaxCuWidth, uiMaxCuHeight, uiMaxCuDepth ); 202 256 } 203 257 #endif 258 259 #if HHI_INTERVIEW_SKIP 204 260 Void 205 261 TComPic::addUsedPelsMapBuffer() … … 215 271 m_pcUsedPelsMap ->create( iWidth, iHeight, uiMaxCuWidth, uiMaxCuHeight, uiMaxCuDepth ); 216 272 } 273 #endif 217 274 218 275 Void … … 240 297 #endif 241 298 299 #if DEPTH_MAP_GENERATION 242 300 Void 243 301 TComPic::removePrdDepthMapBuffer() … … 250 308 } 251 309 } 252 310 #endif 311 312 #if HHI_INTER_VIEW_MOTION_PRED 253 313 Void 254 314 TComPic::removeOrgDepthMapBuffer() … … 261 321 } 262 322 } 263 323 #endif 324 325 #if HHI_INTER_VIEW_RESIDUAL_PRED 264 326 Void 265 327 TComPic::removeResidualBuffer() … … 272 334 } 273 335 } 274 336 #endif 337 338 #if HHI_INTERVIEW_SKIP 275 339 Void 276 340 TComPic::removeUsedPelsMapBuffer() … … 283 347 } 284 348 } 285 349 #endif 350 -
trunk/source/Lib/TLibCommon/TComPic.h
r2 r5 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-2011, 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 1 34 2 35 … … 26 59 private: 27 60 TComPicSym* m_apcPicSym; // Symbol 28 61 29 62 TComPicYuv* m_apcPicYuv[2]; // Texture, 0:org / 1:rec 63 #if DEPTH_MAP_GENERATION 30 64 TComPicYuv* m_pcPredDepthMap; // estimated depth map 65 #endif 66 #if HHI_INTER_VIEW_MOTION_PRED 31 67 TComPicYuv* m_pcOrgDepthMap; // original depth map 68 #endif 69 #if HHI_INTER_VIEW_RESIDUAL_PRED 32 70 TComPicYuv* m_pcResidual; // residual buffer (coded or inter-view predicted residual) 33 71 #endif 72 34 73 TComPicYuv* m_pcPicYuvPred; // Prediction 35 74 TComPicYuv* m_pcPicYuvResi; // Residual … … 39 78 Bool m_bReconstructed; 40 79 UInt m_uiCurrSliceIdx; // Index of current slice 41 80 42 81 SEImessages* m_SEIs; ///< Any SEI messages that have been received. If !NULL we own the object. 43 82 44 // SB //GT; Why? can be accesed by getSlice()->getXXX?45 83 SliceType m_eSliceType; 46 84 double m_dQP; … … 55 93 Int** m_aaiCodedOffset; 56 94 57 //GT 95 #if HHI_VSO 58 96 TComMVDRefData m_cReferenceInfo; 59 TComPicYuv* m_pcUsedPelsMap; 97 #endif 98 #if HHI_INTERVIEW_SKIP 99 TComPicYuv* m_pcUsedPelsMap; 100 #endif 60 101 61 102 … … 63 104 TComPic(); 64 105 virtual ~TComPic(); 65 106 66 107 67 108 Void create( Int iWidth, Int iHeight, UInt uiMaxWidth, UInt uiMaxHeight, UInt uiMaxDepth ); 68 109 Void destroy(); 69 110 70 111 TComPicSym* getPicSym() { return m_apcPicSym; } 71 112 TComSlice* getSlice(Int i) { return m_apcPicSym->getSlice(i); } … … 78 119 #endif 79 120 TComDataCU*& getCU( UInt uiCUAddr ) { return m_apcPicSym->getCU( uiCUAddr ); } 80 81 // SB 121 82 122 SliceType getSliceType() { return m_eSliceType ;} 83 123 double getQP() { return m_dQP ;} … … 86 126 TComPicYuv* getPicYuvOrg() { return m_apcPicYuv[0]; } 87 127 TComPicYuv* getPicYuvRec() { return m_apcPicYuv[1]; } 88 128 129 #if DEPTH_MAP_GENERATION 89 130 TComPicYuv* getPredDepthMap() { return m_pcPredDepthMap; } 131 #endif 132 #if HHI_INTER_VIEW_MOTION_PRED 90 133 TComPicYuv* getOrgDepthMap() { return m_pcOrgDepthMap; } 134 #endif 135 #if HHI_INTER_VIEW_RESIDUAL_PRED 91 136 TComPicYuv* getResidual() { return m_pcResidual; } 137 #endif 138 139 #if HHI_INTERVIEW_SKIP 92 140 TComPicYuv* getUsedPelsMap() { return m_pcUsedPelsMap; } 141 #endif 93 142 94 143 … … 97 146 Void setPicYuvPred( TComPicYuv* pcPicYuv ) { m_pcPicYuvPred = pcPicYuv; } 98 147 Void setPicYuvResi( TComPicYuv* pcPicYuv ) { m_pcPicYuvResi = pcPicYuv; } 99 // SB100 148 Void setQP( double dQP ) { m_dQP = dQP; } 101 149 Void setSliceType( SliceType eSliceType ) { m_eSliceType = eSliceType; } … … 116 164 Int** getCodedOffset() { return m_aaiCodedOffset; } 117 165 118 //GT 166 #if HHI_VSO 119 167 TComMVDRefData* getMVDReferenceInfo() { return &m_cReferenceInfo; } 120 168 #endif 169 121 170 UInt getNumCUsInFrame() { return m_apcPicSym->getNumberOfCUsInFrame(); } 122 171 UInt getNumPartInWidth() { return m_apcPicSym->getNumPartInWidth(); } … … 127 176 UInt getMinCUWidth() { return m_apcPicSym->getMinCUWidth(); } 128 177 UInt getMinCUHeight() { return m_apcPicSym->getMinCUHeight(); } 129 178 130 179 UInt getParPelX(UChar uhPartIdx) { return getParPelX(uhPartIdx); } 131 180 UInt getParPelY(UChar uhPartIdx) { return getParPelX(uhPartIdx); } 132 181 133 182 Int getStride() { return m_apcPicYuv[1]->getStride(); } 134 183 Int getCStride() { return m_apcPicYuv[1]->getCStride(); } 135 184 136 185 Void setReconMark (Bool b) { m_bReconstructed = b; } 137 186 Bool getReconMark () { return m_bReconstructed; } 138 187 139 188 #if AMVP_BUFFERCOMPRESS 140 Void compressMotion(); 141 #endif 189 Void compressMotion(); 190 #endif 142 191 UInt getCurrSliceIdx() { return m_uiCurrSliceIdx; } 143 192 Void setCurrSliceIdx(UInt i) { m_uiCurrSliceIdx = i; } … … 150 199 Void addDeblockBuffer (); 151 200 #endif 201 #if DEPTH_MAP_GENERATION 152 202 Void addPrdDepthMapBuffer (); 203 #endif 204 #if HHI_INTER_VIEW_MOTION_PRED 153 205 Void addOrgDepthMapBuffer (); 206 #endif 207 #if HHI_INTER_VIEW_RESIDUAL_PRED 154 208 Void addResidualBuffer (); 209 #endif 210 211 #if HHI_INTERVIEW_SKIP 155 212 Void addUsedPelsMapBuffer (); 156 213 #endif 214 157 215 Void removeOriginalBuffer (); 158 216 #if PARALLEL_MERGED_DEBLK 159 217 Void removeDeblockBuffer (); 160 218 #endif 219 #if DEPTH_MAP_GENERATION 161 220 Void removePrdDepthMapBuffer (); 221 #endif 222 #if HHI_INTER_VIEW_MOTION_PRED 162 223 Void removeOrgDepthMapBuffer (); 224 #endif 225 #if HHI_INTER_VIEW_RESIDUAL_PRED 163 226 Void removeResidualBuffer (); 227 #endif 228 #if HHI_INTERVIEW_SKIP 164 229 Void removeUsedPelsMapBuffer (); 165 230 #endif 231 166 232 #if PARALLEL_MERGED_DEBLK 167 233 TComPicYuv* getPicYuvDeblkBuf() { return m_pcPicYuvDeblkBuf; } -
trunk/source/Lib/TLibCommon/TComPicSym.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibCommon/TComPicYuv.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibCommon/TComPicYuvMD5.cpp
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibCommon/TComPredFilter.cpp
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibCommon/TComPredFilter.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibCommon/TComPrediction.cpp
r2 r5 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-2011, 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 1 34 2 35 … … 268 301 269 302 #if QC_MDIS 270 #if HHI_DISABLE_INTRA_SMOOTHING_DEPTH271 ptrSrc = pcTComPattern->getPredictorPtr( uiDirMode, g_aucConvertToBit[ iWidth ] + 1, iWidth, iHeight, m_piYuvExt, pcCU->getSlice()->getSPS()->isDepth() );272 #else273 303 ptrSrc = pcTComPattern->getPredictorPtr( uiDirMode, g_aucConvertToBit[ iWidth ] + 1, iWidth, iHeight, m_piYuvExt ); 274 #endif275 304 #else 276 305 ptrSrc = pcTComPattern->getAdiOrgBuf( iWidth, iHeight, m_piYuvExt ); … … 433 462 } 434 463 435 #if HHI_DMM_ INTRA464 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 436 465 Void TComPrediction::predIntraLumaDMM( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiMode, Pel* piPred, UInt uiStride, Int iWidth, Int iHeight, Bool bAbove, Bool bLeft, Bool bEncoder ) 437 466 { 467 #if HHI_DMM_WEDGE_INTRA 438 468 if( uiMode == DMM_WEDGE_FULL_IDX ) { xPredIntraWedgeFull ( pcCU, uiAbsPartIdx, piPred, uiStride, iWidth, iHeight, bAbove, bLeft, bEncoder, false, pcCU->getWedgeFullTabIdx ( uiAbsPartIdx ) ); } 439 469 if( uiMode == DMM_WEDGE_FULL_D_IDX ) { xPredIntraWedgeFull ( pcCU, uiAbsPartIdx, piPred, uiStride, iWidth, iHeight, bAbove, bLeft, bEncoder, true, pcCU->getWedgeFullTabIdx( uiAbsPartIdx ), pcCU->getWedgeFullDeltaDC1( uiAbsPartIdx ), pcCU->getWedgeFullDeltaDC2( uiAbsPartIdx ) ); } 440 470 if( uiMode == DMM_WEDGE_PREDDIR_IDX ) { xPredIntraWedgeDir ( pcCU, uiAbsPartIdx, piPred, uiStride, iWidth, iHeight, bAbove, bLeft, bEncoder, false, pcCU->getWedgePredDirDeltaEnd( uiAbsPartIdx ) ); } 441 471 if( uiMode == DMM_WEDGE_PREDDIR_D_IDX ) { xPredIntraWedgeDir ( pcCU, uiAbsPartIdx, piPred, uiStride, iWidth, iHeight, bAbove, bLeft, bEncoder, true, pcCU->getWedgePredDirDeltaEnd( uiAbsPartIdx ), pcCU->getWedgePredDirDeltaDC1( uiAbsPartIdx ), pcCU->getWedgePredDirDeltaDC2( uiAbsPartIdx ) ); } 472 #endif 473 #if HHI_DMM_PRED_TEX 442 474 if( uiMode == DMM_WEDGE_PREDTEX_IDX ) { xPredIntraWedgeTex ( pcCU, uiAbsPartIdx, piPred, uiStride, iWidth, iHeight, bAbove, bLeft, bEncoder, false ); } 443 475 if( uiMode == DMM_WEDGE_PREDTEX_D_IDX ) { xPredIntraWedgeTex ( pcCU, uiAbsPartIdx, piPred, uiStride, iWidth, iHeight, bAbove, bLeft, bEncoder, true, pcCU->getWedgePredTexDeltaDC1( uiAbsPartIdx ), pcCU->getWedgePredTexDeltaDC2( uiAbsPartIdx ) ); } 444 476 if( uiMode == DMM_CONTOUR_PREDTEX_IDX ) { xPredIntraContourTex ( pcCU, uiAbsPartIdx, piPred, uiStride, iWidth, iHeight, bAbove, bLeft, bEncoder, false ); } 445 477 if( uiMode == DMM_CONTOUR_PREDTEX_D_IDX ) { xPredIntraContourTex ( pcCU, uiAbsPartIdx, piPred, uiStride, iWidth, iHeight, bAbove, bLeft, bEncoder, true, pcCU->getContourPredTexDeltaDC1( uiAbsPartIdx ), pcCU->getContourPredTexDeltaDC2( uiAbsPartIdx ) ); } 446 } 478 #endif 479 } 447 480 448 481 Void TComPrediction::xDeltaDCQuantScaleUp( TComDataCU* pcCU, Int& riDeltaDC ) … … 459 492 } 460 493 461 Void TComPrediction::xPredIntraWedgeFull( TComDataCU* pcCU, UInt uiAbsPartIdx, Pel* piPred, UInt uiStride, Int iWidth, Int iHeight, Bool bAbove, Bool bLeft, Bool bEncoder, Bool bDelta, UInt uiTabIdx, Int iDeltaDC1, Int iDeltaDC2 )462 {463 assert( iWidth >= DMM_WEDGEMODEL_MIN_SIZE && iWidth <= DMM_WEDGEMODEL_MAX_SIZE );464 WedgeList* pacWedgeList = &g_aacWedgeLists[(g_aucConvertToBit[iWidth])];465 TComWedgelet* pcWedgelet = &(pacWedgeList->at(uiTabIdx));466 467 // get wedge pred DCs468 Int iPredDC1 = 0;469 Int iPredDC2 = 0;470 471 Int* piMask = pcCU->getPattern()->getAdiOrgBuf( iWidth, iHeight, m_piYuvExt );472 Int iMaskStride = ( iWidth<<1 ) + 1;473 piMask += iMaskStride+1;474 getWedgePredDCs( pcWedgelet, piMask, iMaskStride, iPredDC1, iPredDC2, bAbove, bLeft );475 476 if( bDelta )477 {478 xDeltaDCQuantScaleUp( pcCU, iDeltaDC1 );479 xDeltaDCQuantScaleUp( pcCU, iDeltaDC2 );480 }481 482 // assign wedge pred DCs to prediction483 if( bDelta ) { assignWedgeDCs2Pred( pcWedgelet, piPred, uiStride, Clip( iPredDC1+iDeltaDC1 ), Clip( iPredDC2+iDeltaDC2 ) ); }484 else { assignWedgeDCs2Pred( pcWedgelet, piPred, uiStride, iPredDC1, iPredDC2 ); }485 }486 487 Void TComPrediction::getWedgePredDCs( TComWedgelet* pcWedgelet, Int* piMask, Int iMaskStride, Int& riPredDC1, Int& riPredDC2, Bool bAbove, Bool bLeft )488 {489 riPredDC1 = ( 1<<( g_uiBitDepth + g_uiBitIncrement - 1) ); //pred val, if no neighbors are available490 riPredDC2 = ( 1<<( g_uiBitDepth + g_uiBitIncrement - 1) );491 492 if( !bAbove && !bLeft ) { return; }493 494 UInt uiNumSmpDC1 = 0, uiNumSmpDC2 = 0;495 Int iPredDC1 = 0, iPredDC2 = 0;496 497 Bool* pabWedgePattern = pcWedgelet->getPattern();498 UInt uiWedgeStride = pcWedgelet->getStride();499 500 if( bAbove )501 {502 for( Int k = 0; k < pcWedgelet->getWidth(); k++ )503 {504 if( true == pabWedgePattern[k] )505 {506 iPredDC2 += piMask[k-iMaskStride];507 uiNumSmpDC2++;508 }509 else510 {511 iPredDC1 += piMask[k-iMaskStride];512 uiNumSmpDC1++;513 }514 }515 }516 if( bLeft )517 {518 for( Int k = 0; k < pcWedgelet->getHeight(); k++ )519 {520 if( true == pabWedgePattern[k*uiWedgeStride] )521 {522 iPredDC2 += piMask[k*iMaskStride-1];523 uiNumSmpDC2++;524 }525 else526 {527 iPredDC1 += piMask[k*iMaskStride-1];528 uiNumSmpDC1++;529 }530 }531 }532 533 if( uiNumSmpDC1 > 0 )534 {535 iPredDC1 /= uiNumSmpDC1;536 riPredDC1 = iPredDC1;537 }538 if( uiNumSmpDC2 > 0 )539 {540 iPredDC2 /= uiNumSmpDC2;541 riPredDC2 = iPredDC2;542 }543 }544 545 Void TComPrediction::getBestContourFromText( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, TComWedgelet* pcContourWedge )546 {547 pcContourWedge->clear();548 Bool* pabContourPattern = pcContourWedge->getPattern();549 550 // get copy of according texture luma block551 UInt uiPartAddr = 0;552 Int iBlockWidth, iBlockHeight;553 554 pcCU->getPartIndexAndSize( uiAbsPartIdx, uiPartAddr, iBlockWidth, iBlockHeight );555 556 TComPicYuv* pcPicYuvRef = pcCU->getSlice()->getTexturePic()->getPicYuvRec();557 Int iRefStride = pcPicYuvRef->getStride();558 Pel* piRefY = pcPicYuvRef->getLumaAddr( pcCU->getAddr(), pcCU->getZorderIdxInCU() + uiPartAddr );559 560 TComYuv cTempYuv; cTempYuv.create( pcCU->getWidth(0), pcCU->getHeight(0) ); cTempYuv.clear();561 UInt uiTempStride = cTempYuv.getStride();562 Pel* piTempY = cTempYuv.getLumaAddr( uiAbsPartIdx, uiWidth );563 564 for ( Int y = 0; y < iBlockHeight; y++ )565 {566 ::memcpy(piTempY, piRefY, sizeof(Pel)*iBlockWidth);567 piTempY += uiTempStride;568 piRefY += iRefStride;569 }570 piTempY = cTempYuv.getLumaAddr( uiAbsPartIdx, uiWidth );571 572 // find contour for texture luma block573 UInt iDC = 0;574 for( UInt k = 0; k < (iBlockWidth*iBlockHeight); k++ ) { iDC += piTempY[k]; }575 iDC /= (iBlockWidth*iBlockHeight);576 577 for( UInt k = 0; k < (iBlockWidth*iBlockHeight); k++ )578 {579 pabContourPattern[k] = (piTempY[k] > iDC) ? true : false;580 }581 582 cTempYuv.destroy();583 }584 585 UInt TComPrediction::getBestContinueWedge( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, Int iDeltaEnd )586 {587 UInt uiThisBlockSize = uiWidth;588 assert( uiThisBlockSize >= DMM_WEDGEMODEL_MIN_SIZE && uiThisBlockSize <= DMM_WEDGEMODEL_MAX_SIZE );589 WedgeList* pacContDWedgeList = &g_aacWedgeLists [(g_aucConvertToBit[uiThisBlockSize])];590 WedgeRefList* pacContDWedgeRefList = &g_aacWedgeRefLists[(g_aucConvertToBit[uiThisBlockSize])];591 592 UInt uiPredDirWedgeTabIdx = 0;593 TComDataCU* pcTempCU;594 UInt uiTempPartIdx;595 // 1st: try continue above wedgelet596 pcTempCU = pcCU->getPUAbove( uiTempPartIdx, pcCU->getZorderIdxInCU() + uiAbsPartIdx );597 if( pcTempCU )598 {599 UChar uhLumaIntraDir = pcTempCU->getLumaIntraDir( uiTempPartIdx );600 if( DMM_WEDGE_FULL_IDX == uhLumaIntraDir ||601 DMM_WEDGE_FULL_D_IDX == uhLumaIntraDir ||602 DMM_WEDGE_PREDDIR_IDX == uhLumaIntraDir ||603 DMM_WEDGE_PREDDIR_D_IDX == uhLumaIntraDir ||604 DMM_WEDGE_PREDTEX_IDX == uhLumaIntraDir ||605 DMM_WEDGE_PREDTEX_D_IDX == uhLumaIntraDir )606 {607 UInt uiRefWedgeSize = (UInt)g_aucIntraSizeIdxToWedgeSize[pcTempCU->getIntraSizeIdx( uiTempPartIdx )];608 WedgeList* pacWedgeList = &g_aacWedgeLists[(g_aucConvertToBit[uiRefWedgeSize])];609 610 // get offset between current and reference block611 UInt uiOffsetX = 0;612 UInt uiOffsetY = 0;613 xGetBlockOffset( pcCU, uiAbsPartIdx, pcTempCU, uiTempPartIdx, uiOffsetX, uiOffsetY );614 615 // get reference wedgelet616 UInt uiRefWedgeTabIdx = 0;617 switch( uhLumaIntraDir )618 {619 case( DMM_WEDGE_FULL_IDX ): { uiRefWedgeTabIdx = pcTempCU->getWedgeFullTabIdx ( uiTempPartIdx ); } break;620 case( DMM_WEDGE_FULL_D_IDX ): { uiRefWedgeTabIdx = pcTempCU->getWedgeFullTabIdx ( uiTempPartIdx ); } break;621 case( DMM_WEDGE_PREDDIR_IDX ): { uiRefWedgeTabIdx = pcTempCU->getWedgePredDirTabIdx( uiTempPartIdx ); } break;622 case( DMM_WEDGE_PREDDIR_D_IDX ): { uiRefWedgeTabIdx = pcTempCU->getWedgePredDirTabIdx( uiTempPartIdx ); } break;623 case( DMM_WEDGE_PREDTEX_IDX ): { uiRefWedgeTabIdx = pcTempCU->getWedgePredTexTabIdx( uiTempPartIdx ); } break;624 case( DMM_WEDGE_PREDTEX_D_IDX ): { uiRefWedgeTabIdx = pcTempCU->getWedgePredTexTabIdx( uiTempPartIdx ); } break;625 default: { assert( 0 ); return uiPredDirWedgeTabIdx; }626 }627 TComWedgelet* pcRefWedgelet;628 pcRefWedgelet = &(pacWedgeList->at( uiRefWedgeTabIdx ));629 630 // find reference wedgelet, if direction is suitable for continue wedge631 if( pcRefWedgelet->checkPredDirAbovePossible( uiThisBlockSize, uiOffsetX ) )632 {633 UChar uhContD_Xs, uhContD_Ys, uhContD_Xe, uhContD_Ye;634 pcRefWedgelet->getPredDirStartEndAbove( uhContD_Xs, uhContD_Ys, uhContD_Xe, uhContD_Ye, uiThisBlockSize, uiOffsetX, iDeltaEnd );635 getWedgeListIdx( pacContDWedgeList, pacContDWedgeRefList, uiPredDirWedgeTabIdx, uhContD_Xs, uhContD_Ys, uhContD_Xe, uhContD_Ye );636 return uiPredDirWedgeTabIdx;637 }638 }639 }640 641 // 2nd: try continue left wedglelet642 pcTempCU = pcCU->getPULeft( uiTempPartIdx, pcCU->getZorderIdxInCU() + uiAbsPartIdx );643 if( pcTempCU )644 {645 UChar uhLumaIntraDir = pcTempCU->getLumaIntraDir( uiTempPartIdx );646 if( DMM_WEDGE_FULL_IDX == uhLumaIntraDir ||647 DMM_WEDGE_FULL_D_IDX == uhLumaIntraDir ||648 DMM_WEDGE_PREDDIR_IDX == uhLumaIntraDir ||649 DMM_WEDGE_PREDDIR_D_IDX == uhLumaIntraDir ||650 DMM_WEDGE_PREDTEX_IDX == uhLumaIntraDir ||651 DMM_WEDGE_PREDTEX_D_IDX == uhLumaIntraDir )652 {653 UInt uiRefWedgeSize = (UInt)g_aucIntraSizeIdxToWedgeSize[pcTempCU->getIntraSizeIdx( uiTempPartIdx )];654 WedgeList* pacWedgeList = &g_aacWedgeLists[(g_aucConvertToBit[uiRefWedgeSize])];655 656 // get offset between current and reference block657 UInt uiOffsetX = 0;658 UInt uiOffsetY = 0;659 xGetBlockOffset( pcCU, uiAbsPartIdx, pcTempCU, uiTempPartIdx, uiOffsetX, uiOffsetY );660 661 // get reference wedgelet662 UInt uiRefWedgeTabIdx = 0;663 switch( uhLumaIntraDir )664 {665 case( DMM_WEDGE_FULL_IDX ): { uiRefWedgeTabIdx = pcTempCU->getWedgeFullTabIdx ( uiTempPartIdx ); } break;666 case( DMM_WEDGE_FULL_D_IDX ): { uiRefWedgeTabIdx = pcTempCU->getWedgeFullTabIdx ( uiTempPartIdx ); } break;667 case( DMM_WEDGE_PREDDIR_IDX ): { uiRefWedgeTabIdx = pcTempCU->getWedgePredDirTabIdx( uiTempPartIdx ); } break;668 case( DMM_WEDGE_PREDDIR_D_IDX ): { uiRefWedgeTabIdx = pcTempCU->getWedgePredDirTabIdx( uiTempPartIdx ); } break;669 case( DMM_WEDGE_PREDTEX_IDX ): { uiRefWedgeTabIdx = pcTempCU->getWedgePredTexTabIdx( uiTempPartIdx ); } break;670 case( DMM_WEDGE_PREDTEX_D_IDX ): { uiRefWedgeTabIdx = pcTempCU->getWedgePredTexTabIdx( uiTempPartIdx ); } break;671 default: { assert( 0 ); return uiPredDirWedgeTabIdx; }672 }673 TComWedgelet* pcRefWedgelet;674 pcRefWedgelet = &(pacWedgeList->at( uiRefWedgeTabIdx ));675 676 // find reference wedgelet, if direction is suitable for continue wedge677 if( pcRefWedgelet->checkPredDirLeftPossible( uiThisBlockSize, uiOffsetY ) )678 {679 UChar uhContD_Xs, uhContD_Ys, uhContD_Xe, uhContD_Ye;680 pcRefWedgelet->getPredDirStartEndLeft( uhContD_Xs, uhContD_Ys, uhContD_Xe, uhContD_Ye, uiThisBlockSize, uiOffsetY, iDeltaEnd );681 getWedgeListIdx( pacContDWedgeList, pacContDWedgeRefList, uiPredDirWedgeTabIdx, uhContD_Xs, uhContD_Ys, uhContD_Xe, uhContD_Ye );682 return uiPredDirWedgeTabIdx;683 }684 }685 }686 687 // 3rd: (default) make wedglet from intra dir and max slope point688 Int iSlopeX = 0;689 Int iSlopeY = 0;690 UInt uiStartPosX = 0;691 UInt uiStartPosY = 0;692 if( xGetWedgeIntraDirPredData( pcCU, uiAbsPartIdx, uiThisBlockSize, iSlopeX, iSlopeY, uiStartPosX, uiStartPosY ) )693 {694 UChar uhContD_Xs, uhContD_Ys, uhContD_Xe, uhContD_Ye;695 xGetWedgeIntraDirStartEnd( pcCU, uiAbsPartIdx, uiThisBlockSize, iSlopeX, iSlopeY, uiStartPosX, uiStartPosY, uhContD_Xs, uhContD_Ys, uhContD_Xe, uhContD_Ye, iDeltaEnd );696 getWedgeListIdx( pacContDWedgeList, pacContDWedgeRefList, uiPredDirWedgeTabIdx, uhContD_Xs, uhContD_Ys, uhContD_Xe, uhContD_Ye );697 return uiPredDirWedgeTabIdx;698 }699 700 return uiPredDirWedgeTabIdx;701 }702 703 Void TComPrediction::xGetBlockOffset( TComDataCU* pcCU, UInt uiAbsPartIdx, TComDataCU* pcRefCU, UInt uiRefAbsPartIdx, UInt& ruiOffsetX, UInt& ruiOffsetY )704 {705 ruiOffsetX = 0;706 ruiOffsetY = 0;707 708 // get offset between current and above/left block709 UInt uiThisOriginX = pcCU->getCUPelX() + g_auiRasterToPelX[ g_auiZscanToRaster[uiAbsPartIdx] ];710 UInt uiThisOriginY = pcCU->getCUPelY() + g_auiRasterToPelY[ g_auiZscanToRaster[uiAbsPartIdx] ];711 712 UInt uiNumPartInRefCU = pcRefCU->getTotalNumPart();713 UInt uiMaxDepthRefCU = 0;714 while( uiNumPartInRefCU > 1 )715 {716 uiNumPartInRefCU >>= 2;717 uiMaxDepthRefCU++;718 }719 720 UInt uiDepthRefPU = (pcRefCU->getDepth(uiRefAbsPartIdx)) + (pcRefCU->getPartitionSize(uiRefAbsPartIdx) == SIZE_2Nx2N ? 0 : 1);721 UInt uiShifts = (uiMaxDepthRefCU - uiDepthRefPU)*2;722 UInt uiRefBlockOriginPartIdx = (uiRefAbsPartIdx>>uiShifts)<<uiShifts;723 724 UInt uiRefOriginX = pcRefCU->getCUPelX() + g_auiRasterToPelX[ g_auiZscanToRaster[uiRefBlockOriginPartIdx] ];725 UInt uiRefOriginY = pcRefCU->getCUPelY() + g_auiRasterToPelY[ g_auiZscanToRaster[uiRefBlockOriginPartIdx] ];726 727 if( (uiThisOriginX - uiRefOriginX) > 0 ) { ruiOffsetX = (UInt)(uiThisOriginX - uiRefOriginX); }728 if( (uiThisOriginY - uiRefOriginY) > 0 ) { ruiOffsetY = (UInt)(uiThisOriginY - uiRefOriginY); }729 }730 731 Bool TComPrediction::xGetWedgeIntraDirPredData( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiBlockSize, Int& riSlopeX, Int& riSlopeY, UInt& ruiStartPosX, UInt& ruiStartPosY )732 {733 riSlopeX = 0;734 riSlopeY = 0;735 ruiStartPosX = 0;736 ruiStartPosY = 0;737 738 // 1st step: get wedge start point (max. slope)739 Int* piSource = pcCU->getPattern()->getAdiOrgBuf( uiBlockSize, uiBlockSize, m_piYuvExt );740 Int iSourceStride = ( uiBlockSize<<1 ) + 1;741 742 UInt uiSlopeMaxAbove = 0;743 UInt uiPosSlopeMaxAbove = 0;744 for( UInt uiPosHor = 0; uiPosHor < (uiBlockSize-1); uiPosHor++ )745 {746 if( abs( piSource[uiPosHor+1] - piSource[uiPosHor] ) > uiSlopeMaxAbove )747 {748 uiSlopeMaxAbove = abs( piSource[uiPosHor+1] - piSource[uiPosHor] );749 uiPosSlopeMaxAbove = uiPosHor;750 }751 }752 753 UInt uiSlopeMaxLeft = 0;754 UInt uiPosSlopeMaxLeft = 0;755 for( UInt uiPosVer = 0; uiPosVer < (uiBlockSize-1); uiPosVer++ )756 {757 if( abs( piSource[(uiPosVer+1)*iSourceStride] - piSource[uiPosVer*iSourceStride] ) > uiSlopeMaxLeft )758 {759 uiSlopeMaxLeft = abs( piSource[(uiPosVer+1)*iSourceStride] - piSource[uiPosVer*iSourceStride] );760 uiPosSlopeMaxLeft = uiPosVer;761 }762 }763 764 if( uiSlopeMaxAbove == 0 && uiSlopeMaxLeft == 0 )765 {766 return false;767 }768 769 if( uiSlopeMaxAbove > uiSlopeMaxLeft )770 {771 ruiStartPosX = uiPosSlopeMaxAbove;772 ruiStartPosY = 0;773 }774 else775 {776 ruiStartPosX = 0;777 ruiStartPosY = uiPosSlopeMaxLeft;778 }779 780 // 2nd step: derive wedge direction781 Int angTable[9] = {0,2,5,9,13,17,21,26,32};782 783 Int uiPreds[2] = {-1, -1};784 Int uiPredNum = pcCU->getIntraDirLumaPredictor( uiAbsPartIdx, uiPreds );785 786 UInt uiDirMode = 0;787 if( uiPredNum == 1 )788 {789 uiDirMode = g_aucAngIntraModeOrder[uiPreds[0]];790 }791 else if( uiPredNum == 2 )792 {793 uiDirMode = g_aucAngIntraModeOrder[uiPreds[1]];794 }795 796 if( uiDirMode == 0 )797 {798 return false;799 }800 801 Bool modeVer = (uiDirMode < 18);802 Bool modeHor = !modeVer;803 Int intraPredAngle = modeVer ? uiDirMode - 9 : modeHor ? uiDirMode - 25 : 0;804 Int absAng = abs(intraPredAngle);805 Int signAng = intraPredAngle < 0 ? -1 : 1;806 absAng = angTable[absAng];807 intraPredAngle = signAng * absAng;808 809 // 3rd step: set slope for direction810 if( modeHor )811 {812 if( intraPredAngle > 0 )813 {814 riSlopeX = -32;815 riSlopeY = intraPredAngle;816 }817 else818 {819 riSlopeX = 32;820 riSlopeY = -intraPredAngle;821 }822 }823 else if( modeVer )824 {825 if( intraPredAngle > 0 )826 {827 riSlopeX = intraPredAngle;828 riSlopeY = -32;829 }830 else831 {832 riSlopeX = -intraPredAngle;833 riSlopeY = 32;834 }835 }836 837 return true;838 }839 840 Void TComPrediction::xGetWedgeIntraDirStartEnd( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiBlockSize, Int iDeltaX, Int iDeltaY, UInt uiPMSPosX, UInt uiPMSPosY, UChar& ruhXs, UChar& ruhYs, UChar& ruhXe, UChar& ruhYe, Int iDeltaEnd )841 {842 ruhXs = 0;843 ruhYs = 0;844 ruhXe = 0;845 ruhYe = 0;846 UInt uiOri;847 848 // scaling of start pos and block size to wedge resolution849 UInt uiScaledStartPosX = 0;850 UInt uiScaledStartPosY = 0;851 UInt uiScaledBlockSize = 0;852 WedgeResolution eWedgeRes = g_aeWedgeResolutionList[(UInt)g_aucConvertToBit[uiBlockSize]];853 switch( eWedgeRes )854 {855 case( DOUBLE_PEL ): { uiScaledStartPosX = (uiPMSPosX>>1); uiScaledStartPosY = (uiPMSPosY>>1); uiScaledBlockSize = (uiBlockSize>>1); break; }856 case( FULL_PEL ): { uiScaledStartPosX = uiPMSPosX; uiScaledStartPosY = uiPMSPosY; uiScaledBlockSize = uiBlockSize; break; }857 case( HALF_PEL ): { uiScaledStartPosX = (uiPMSPosX<<1); uiScaledStartPosY = (uiPMSPosY<<1); uiScaledBlockSize = (uiBlockSize<<1); break; }858 }859 860 // case above861 if( uiScaledStartPosX > 0 && uiScaledStartPosY == 0 )862 {863 ruhXs = (UChar)uiScaledStartPosX;864 ruhYs = 0;865 866 if( iDeltaY == 0 )867 {868 if( iDeltaX < 0 )869 {870 uiOri = 0;871 ruhXe = 0;872 ruhYe = (UChar)Min( Max( iDeltaEnd, 0 ), (uiScaledBlockSize-1) );873 return;874 }875 else876 {877 uiOri = 1;878 ruhXe = (UChar)(uiScaledBlockSize-1); ;879 ruhYe = (UChar)Min( Max( -iDeltaEnd, 0 ), (uiScaledBlockSize-1) );880 std::swap( ruhXs, ruhXe );881 std::swap( ruhYs, ruhYe );882 return;883 }884 }885 886 // regular case887 Int iVirtualEndX = (Int)ruhXs + roftoi( (Double)(uiScaledBlockSize-1) * ((Double)iDeltaX / (Double)iDeltaY) );888 889 if( iVirtualEndX < 0 )890 {891 Int iYe = roftoi( (Double)(0 - (Int)ruhXs) * ((Double)iDeltaY / (Double)iDeltaX) ) + iDeltaEnd;892 if( iYe < (Int)uiScaledBlockSize )893 {894 uiOri = 0;895 ruhXe = 0;896 ruhYe = (UChar)Max( iYe, 0 );897 return;898 }899 else900 {901 uiOri = 4;902 ruhXe = (UChar)Min( (iYe - (uiScaledBlockSize-1)), (uiScaledBlockSize-1) );903 ruhYe = (UChar)(uiScaledBlockSize-1);904 return;905 }906 }907 else if( iVirtualEndX > (uiScaledBlockSize-1) )908 {909 Int iYe = roftoi( (Double)((Int)(uiScaledBlockSize-1) - (Int)ruhXs) * ((Double)iDeltaY / (Double)iDeltaX) ) - iDeltaEnd;910 if( iYe < (Int)uiScaledBlockSize )911 {912 uiOri = 1;913 ruhXe = (UChar)(uiScaledBlockSize-1);914 ruhYe = (UChar)Max( iYe, 0 );915 std::swap( ruhXs, ruhXe );916 std::swap( ruhYs, ruhYe );917 return;918 }919 else920 {921 uiOri = 4;922 ruhXe = (UChar)Max( ((uiScaledBlockSize-1) - (iYe - (uiScaledBlockSize-1))), 0 );923 ruhYe = (UChar)(uiScaledBlockSize-1);924 return;925 }926 }927 else928 {929 Int iXe = iVirtualEndX + iDeltaEnd;930 if( iXe < 0 )931 {932 uiOri = 0;933 ruhXe = 0;934 ruhYe = (UChar)Max( ((uiScaledBlockSize-1) + iXe), 0 );935 return;936 }937 else if( iXe > (uiScaledBlockSize-1) )938 {939 uiOri = 1;940 ruhXe = (UChar)(uiScaledBlockSize-1);941 ruhYe = (UChar)Max( ((uiScaledBlockSize-1) - (iXe - (uiScaledBlockSize-1))), 0 );942 std::swap( ruhXs, ruhXe );943 std::swap( ruhYs, ruhYe );944 return;945 }946 else947 {948 uiOri = 4;949 ruhXe = (UChar)iXe;950 ruhYe = (UChar)(uiScaledBlockSize-1);951 return;952 }953 }954 }955 956 // case left957 if( uiScaledStartPosY > 0 && uiScaledStartPosX == 0 )958 {959 ruhXs = 0;960 ruhYs = (UChar)uiScaledStartPosY;961 962 if( iDeltaX == 0 )963 {964 if( iDeltaY < 0 )965 {966 uiOri = 0;967 ruhXe = (UChar)Min( Max( -iDeltaEnd, 0 ), (uiScaledBlockSize-1) );968 ruhYe = 0;969 std::swap( ruhXs, ruhXe );970 std::swap( ruhYs, ruhYe );971 return;972 }973 else974 {975 uiOri = 3;976 ruhXe = (UChar)Min( Max( iDeltaEnd, 0 ), (uiScaledBlockSize-1) );977 ruhYe = (UChar)(uiScaledBlockSize-1);978 return;979 }980 }981 982 // regular case983 Int iVirtualEndY = (Int)ruhYs + roftoi( (Double)(uiScaledBlockSize-1) * ((Double)iDeltaY / (Double)iDeltaX) );984 985 if( iVirtualEndY < 0 )986 {987 Int iXe = roftoi( (Double)(0 - (Int)ruhYs ) * ((Double)iDeltaX / (Double)iDeltaY) ) - iDeltaEnd;988 if( iXe < (Int)uiScaledBlockSize )989 {990 uiOri = 0;991 ruhXe = (UChar)Max( iXe, 0 );992 ruhYe = 0;993 std::swap( ruhXs, ruhXe );994 std::swap( ruhYs, ruhYe );995 return;996 }997 else998 {999 uiOri = 5;1000 ruhXe = (UChar)(uiScaledBlockSize-1);1001 ruhYe = (UChar)Min( (iXe - (uiScaledBlockSize-1)), (uiScaledBlockSize-1) );1002 std::swap( ruhXs, ruhXe );1003 std::swap( ruhYs, ruhYe );1004 return;1005 }1006 }1007 else if( iVirtualEndY > (uiScaledBlockSize-1) )1008 {1009 Int iXe = roftoi( (Double)((Int)(uiScaledBlockSize-1) - (Int)ruhYs ) * ((Double)iDeltaX / (Double)iDeltaY) ) + iDeltaEnd;1010 if( iXe < (Int)uiScaledBlockSize )1011 {1012 uiOri = 3;1013 ruhXe = (UChar)Max( iXe, 0 );1014 ruhYe = (UChar)(uiScaledBlockSize-1);1015 return;1016 }1017 else1018 {1019 uiOri = 5;1020 ruhXe = (UChar)(uiScaledBlockSize-1);1021 ruhYe = (UChar)Max( ((uiScaledBlockSize-1) - (iXe - (uiScaledBlockSize-1))), 0 );1022 std::swap( ruhXs, ruhXe );1023 std::swap( ruhYs, ruhYe );1024 return;1025 }1026 }1027 else1028 {1029 Int iYe = iVirtualEndY - iDeltaEnd;1030 if( iYe < 0 )1031 {1032 uiOri = 0;1033 ruhXe = (UChar)Max( ((uiScaledBlockSize-1) + iYe), 0 );1034 ruhYe = 0;1035 std::swap( ruhXs, ruhXe );1036 std::swap( ruhYs, ruhYe );1037 return;1038 }1039 else if( iYe > (uiScaledBlockSize-1) )1040 {1041 uiOri = 3;1042 ruhXe = (UChar)Max( ((uiScaledBlockSize-1) - (iYe - (uiScaledBlockSize-1))), 0 );1043 ruhYe = (UChar)(uiScaledBlockSize-1);1044 return;1045 }1046 else1047 {1048 uiOri = 5;1049 ruhXe = (UChar)(uiScaledBlockSize-1);1050 ruhYe = (UChar)iYe;1051 std::swap( ruhXs, ruhXe );1052 std::swap( ruhYs, ruhYe );1053 return;1054 }1055 }1056 }1057 1058 // case origin1059 if( uiScaledStartPosX == 0 && uiScaledStartPosY == 0 )1060 {1061 if( iDeltaX*iDeltaY < 0 )1062 {1063 return;1064 }1065 1066 ruhXs = 0;1067 ruhYs = 0;1068 1069 if( iDeltaY == 0 )1070 {1071 uiOri = 1;1072 ruhXe = (UChar)(uiScaledBlockSize-1);1073 ruhYe = 0;1074 std::swap( ruhXs, ruhXe );1075 std::swap( ruhYs, ruhYe );1076 return;1077 }1078 1079 if( iDeltaX == 0 )1080 {1081 uiOri = 0;1082 ruhXe = 0;1083 ruhYe = (UChar)(uiScaledBlockSize-1);1084 return;1085 }1086 1087 Int iVirtualEndX = (Int)ruhXs + roftoi( (Double)(uiScaledBlockSize-1) * ((Double)iDeltaX / (Double)iDeltaY) );1088 1089 if( iVirtualEndX > (uiScaledBlockSize-1) )1090 {1091 Int iYe = roftoi( (Double)((Int)(uiScaledBlockSize-1) - (Int)ruhXs) * ((Double)iDeltaY / (Double)iDeltaX) ) - iDeltaEnd;1092 if( iYe < (Int)uiScaledBlockSize )1093 {1094 uiOri = 1;1095 ruhXe = (UChar)(uiScaledBlockSize-1);1096 ruhYe = (UChar)Max( iYe, 0 );1097 std::swap( ruhXs, ruhXe );1098 std::swap( ruhYs, ruhYe );1099 return;1100 }1101 else1102 {1103 uiOri = 3;1104 ruhXe = (UChar)Max( ((uiScaledBlockSize-1) - (iYe - (uiScaledBlockSize-1))), 0 );1105 ruhYe = (UChar)(uiScaledBlockSize-1);1106 return;1107 }1108 }1109 else1110 {1111 Int iXe = iVirtualEndX + iDeltaEnd;1112 if( iXe < 0 )1113 {1114 uiOri = 0;1115 ruhXe = 0;1116 ruhYe = (UChar)Max( ((uiScaledBlockSize-1) + iXe), 0 );1117 return;1118 }1119 else if( iXe > (uiScaledBlockSize-1) )1120 {1121 uiOri = 1;1122 ruhXe = (UChar)(uiScaledBlockSize-1);1123 ruhYe = (UChar)Max( ((uiScaledBlockSize-1) - (iXe - (uiScaledBlockSize-1))), 0 );1124 std::swap( ruhXs, ruhXe );1125 std::swap( ruhYs, ruhYe );1126 return;1127 }1128 else1129 {1130 uiOri = 3;1131 ruhXe = (UChar)iXe;1132 ruhYe = (UChar)(uiScaledBlockSize-1);1133 return;1134 }1135 }1136 }1137 }1138 1139 Bool TComPrediction::getWedgeListIdx( WedgeList* pcWedgeList, WedgeRefList* pcWedgeRefList, UInt& ruiTabIdx, UChar uhXs, UChar uhYs, UChar uhXe, UChar uhYe )1140 {1141 ruiTabIdx = 0;1142 1143 for( UInt uiIdx = 0; uiIdx < pcWedgeList->size(); uiIdx++ )1144 {1145 TComWedgelet* pcTestWedge = &(pcWedgeList->at(uiIdx));1146 1147 if( pcTestWedge->getStartX() == uhXs &&1148 pcTestWedge->getStartY() == uhYs &&1149 pcTestWedge->getEndX() == uhXe &&1150 pcTestWedge->getEndY() == uhYe )1151 {1152 ruiTabIdx = uiIdx;1153 return true;1154 }1155 }1156 1157 // additionally search in WedgeRef lists of duplicated patterns1158 for( UInt uiIdx = 0; uiIdx < pcWedgeRefList->size(); uiIdx++ )1159 {1160 TComWedgeRef* pcTestWedgeRef = &(pcWedgeRefList->at(uiIdx));1161 1162 if( pcTestWedgeRef->getStartX() == uhXs &&1163 pcTestWedgeRef->getStartY() == uhYs &&1164 pcTestWedgeRef->getEndX() == uhXe &&1165 pcTestWedgeRef->getEndY() == uhYe )1166 {1167 ruiTabIdx = pcTestWedgeRef->getRefIdx();1168 return true;1169 }1170 }1171 1172 return false;1173 }1174 1175 Void TComPrediction::xPredIntraWedgeDir( TComDataCU* pcCU, UInt uiAbsPartIdx, Pel* piPred, UInt uiStride, Int iWidth, Int iHeight, Bool bAbove, Bool bLeft, Bool bEncoder, Bool bDelta, Int iWedgeDeltaEnd, Int iDeltaDC1, Int iDeltaDC2 )1176 {1177 assert( iWidth >= DMM_WEDGEMODEL_MIN_SIZE && iWidth <= DMM_WEDGEMODEL_MAX_SIZE );1178 WedgeList* pacWedgeList = &g_aacWedgeLists[(g_aucConvertToBit[iWidth])];1179 1180 // get wedge pattern1181 UInt uiDirWedgeTabIdx = 0;1182 if( bEncoder )1183 {1184 // encoder: load stored wedge pattern from CU1185 uiDirWedgeTabIdx = pcCU->getWedgePredDirTabIdx( uiAbsPartIdx );1186 }1187 else1188 {1189 uiDirWedgeTabIdx = getBestContinueWedge( pcCU, uiAbsPartIdx, iWidth, iHeight, iWedgeDeltaEnd );1190 1191 UInt uiDepth = (pcCU->getDepth(0)) + (pcCU->getPartitionSize(0) == SIZE_2Nx2N ? 0 : 1);1192 pcCU->setWedgePredDirTabIdxSubParts( uiDirWedgeTabIdx, uiAbsPartIdx, uiDepth );1193 }1194 TComWedgelet* pcWedgelet = &(pacWedgeList->at(uiDirWedgeTabIdx));1195 1196 // get wedge pred DCs1197 Int iPredDC1 = 0;1198 Int iPredDC2 = 0;1199 1200 Int* piMask = pcCU->getPattern()->getAdiOrgBuf( iWidth, iHeight, m_piYuvExt );1201 Int iMaskStride = ( iWidth<<1 ) + 1;1202 piMask += iMaskStride+1;1203 getWedgePredDCs( pcWedgelet, piMask, iMaskStride, iPredDC1, iPredDC2, bAbove, bLeft );1204 1205 if( bDelta )1206 {1207 xDeltaDCQuantScaleUp( pcCU, iDeltaDC1 );1208 xDeltaDCQuantScaleUp( pcCU, iDeltaDC2 );1209 }1210 1211 // assign wedge pred DCs to prediction1212 if( bDelta ) { assignWedgeDCs2Pred( pcWedgelet, piPred, uiStride, Clip ( iPredDC1+iDeltaDC1 ), Clip( iPredDC2+iDeltaDC2 ) ); }1213 else { assignWedgeDCs2Pred( pcWedgelet, piPred, uiStride, iPredDC1, iPredDC2 ); }1214 }1215 1216 Void TComPrediction::xPredIntraWedgeTex( TComDataCU* pcCU, UInt uiAbsPartIdx, Pel* piPred, UInt uiStride, Int iWidth, Int iHeight, Bool bAbove, Bool bLeft, Bool bEncoder, Bool bDelta, Int iDeltaDC1, Int iDeltaDC2 )1217 {1218 assert( iWidth >= DMM_WEDGEMODEL_MIN_SIZE && iWidth <= DMM_WEDGEMODEL_MAX_SIZE );1219 WedgeList* pacWedgeList = &g_aacWedgeLists[(g_aucConvertToBit[iWidth])];1220 1221 // get wedge pattern1222 UInt uiTextureWedgeTabIdx = 0;1223 if( bEncoder )1224 {1225 // encoder: load stored wedge pattern from CU1226 uiTextureWedgeTabIdx = pcCU->getWedgePredTexTabIdx( uiAbsPartIdx );1227 }1228 else1229 {1230 // decoder: get and store wedge pattern in CU1231 uiTextureWedgeTabIdx = getBestWedgeFromText( pcCU, uiAbsPartIdx, (UInt)iWidth, (UInt)iHeight );1232 UInt uiDepth = (pcCU->getDepth(0)) + (pcCU->getPartitionSize(0) == SIZE_2Nx2N ? 0 : 1);1233 pcCU->setWedgePredTexTabIdxSubParts( uiTextureWedgeTabIdx, uiAbsPartIdx, uiDepth );1234 }1235 TComWedgelet* pcWedgelet = &(pacWedgeList->at(uiTextureWedgeTabIdx));1236 1237 // get wedge pred DCs1238 Int iPredDC1 = 0;1239 Int iPredDC2 = 0;1240 Int* piMask = pcCU->getPattern()->getAdiOrgBuf( iWidth, iHeight, m_piYuvExt );1241 Int iMaskStride = ( iWidth<<1 ) + 1;1242 piMask += iMaskStride+1;1243 getWedgePredDCs( pcWedgelet, piMask, iMaskStride, iPredDC1, iPredDC2, bAbove, bLeft );1244 1245 if( bDelta )1246 {1247 xDeltaDCQuantScaleUp( pcCU, iDeltaDC1 );1248 xDeltaDCQuantScaleUp( pcCU, iDeltaDC2 );1249 }1250 1251 // assign wedge pred DCs to prediction1252 if( bDelta ) { assignWedgeDCs2Pred( pcWedgelet, piPred, uiStride, Clip ( iPredDC1+iDeltaDC1 ), Clip( iPredDC2+iDeltaDC2 ) ); }1253 else { assignWedgeDCs2Pred( pcWedgelet, piPred, uiStride, iPredDC1, iPredDC2 ); }1254 }1255 1256 Void TComPrediction::xPredIntraContourTex( TComDataCU* pcCU, UInt uiAbsPartIdx, Pel* piPred, UInt uiStride, Int iWidth, Int iHeight, Bool bAbove, Bool bLeft, Bool bEncoder, Bool bDelta, Int iDeltaDC1, Int iDeltaDC2 )1257 {1258 // get contour pattern1259 TComWedgelet* pcContourWedge = new TComWedgelet( iWidth, iHeight );1260 getBestContourFromText( pcCU, uiAbsPartIdx, (UInt)iWidth, (UInt)iHeight, pcContourWedge );1261 1262 // get wedge pred DCs1263 Int iPredDC1 = 0;1264 Int iPredDC2 = 0;1265 Int* piMask = pcCU->getPattern()->getAdiOrgBuf( iWidth, iHeight, m_piYuvExt );1266 Int iMaskStride = ( iWidth<<1 ) + 1;1267 piMask += iMaskStride+1;1268 getWedgePredDCs( pcContourWedge, piMask, iMaskStride, iPredDC1, iPredDC2, bAbove, bLeft );1269 1270 if( bDelta )1271 {1272 xDeltaDCQuantScaleUp( pcCU, iDeltaDC1 );1273 xDeltaDCQuantScaleUp( pcCU, iDeltaDC2 );1274 }1275 1276 // assign wedge pred DCs to prediction1277 if( bDelta ) { assignWedgeDCs2Pred( pcContourWedge, piPred, uiStride, Clip ( iPredDC1+iDeltaDC1 ), Clip( iPredDC2+iDeltaDC2 ) ); }1278 else { assignWedgeDCs2Pred( pcContourWedge, piPred, uiStride, iPredDC1, iPredDC2 ); }1279 1280 pcContourWedge->destroy();1281 delete pcContourWedge;1282 }1283 #endif1284 #if HHI_DMM_INTRA1285 494 Void TComPrediction::calcWedgeDCs( TComWedgelet* pcWedgelet, Pel* piOrig, UInt uiStride, Int& riDC1, Int& riDC2 ) 1286 495 { … … 1367 576 } 1368 577 else 1369 578 { 1370 579 piTemp[uiX] = iDC1; 1371 580 } … … 1377 586 } 1378 587 1379 UInt TComPrediction::getBestWedgeFromText( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, WedgeDist eWedgeDist ) 588 Void TComPrediction::getWedgePredDCs( TComWedgelet* pcWedgelet, Int* piMask, Int iMaskStride, Int& riPredDC1, Int& riPredDC2, Bool bAbove, Bool bLeft ) 589 { 590 riPredDC1 = ( 1<<( g_uiBitDepth + g_uiBitIncrement - 1) ); //pred val, if no neighbors are available 591 riPredDC2 = ( 1<<( g_uiBitDepth + g_uiBitIncrement - 1) ); 592 593 if( !bAbove && !bLeft ) { return; } 594 595 UInt uiNumSmpDC1 = 0, uiNumSmpDC2 = 0; 596 Int iPredDC1 = 0, iPredDC2 = 0; 597 598 Bool* pabWedgePattern = pcWedgelet->getPattern(); 599 UInt uiWedgeStride = pcWedgelet->getStride(); 600 601 if( bAbove ) 602 { 603 for( Int k = 0; k < pcWedgelet->getWidth(); k++ ) 604 { 605 if( true == pabWedgePattern[k] ) 606 { 607 iPredDC2 += piMask[k-iMaskStride]; 608 uiNumSmpDC2++; 609 } 610 else 611 { 612 iPredDC1 += piMask[k-iMaskStride]; 613 uiNumSmpDC1++; 614 } 615 } 616 } 617 if( bLeft ) 618 { 619 for( Int k = 0; k < pcWedgelet->getHeight(); k++ ) 620 { 621 if( true == pabWedgePattern[k*uiWedgeStride] ) 622 { 623 iPredDC2 += piMask[k*iMaskStride-1]; 624 uiNumSmpDC2++; 625 } 626 else 627 { 628 iPredDC1 += piMask[k*iMaskStride-1]; 629 uiNumSmpDC1++; 630 } 631 } 632 } 633 634 if( uiNumSmpDC1 > 0 ) 635 { 636 iPredDC1 /= uiNumSmpDC1; 637 riPredDC1 = iPredDC1; 638 } 639 if( uiNumSmpDC2 > 0 ) 640 { 641 iPredDC2 /= uiNumSmpDC2; 642 riPredDC2 = iPredDC2; 643 } 644 } 645 #endif 646 647 #if HHI_DMM_WEDGE_INTRA 648 Void TComPrediction::xPredIntraWedgeFull( TComDataCU* pcCU, UInt uiAbsPartIdx, Pel* piPred, UInt uiStride, Int iWidth, Int iHeight, Bool bAbove, Bool bLeft, Bool bEncoder, Bool bDelta, UInt uiTabIdx, Int iDeltaDC1, Int iDeltaDC2 ) 649 { 650 assert( iWidth >= DMM_WEDGEMODEL_MIN_SIZE && iWidth <= DMM_WEDGEMODEL_MAX_SIZE ); 651 WedgeList* pacWedgeList = &g_aacWedgeLists[(g_aucConvertToBit[iWidth])]; 652 TComWedgelet* pcWedgelet = &(pacWedgeList->at(uiTabIdx)); 653 654 // get wedge pred DCs 655 Int iPredDC1 = 0; 656 Int iPredDC2 = 0; 657 658 Int* piMask = pcCU->getPattern()->getAdiOrgBuf( iWidth, iHeight, m_piYuvExt ); 659 Int iMaskStride = ( iWidth<<1 ) + 1; 660 piMask += iMaskStride+1; 661 getWedgePredDCs( pcWedgelet, piMask, iMaskStride, iPredDC1, iPredDC2, bAbove, bLeft ); 662 663 if( bDelta ) 664 { 665 xDeltaDCQuantScaleUp( pcCU, iDeltaDC1 ); 666 xDeltaDCQuantScaleUp( pcCU, iDeltaDC2 ); 667 } 668 669 // assign wedge pred DCs to prediction 670 if( bDelta ) { assignWedgeDCs2Pred( pcWedgelet, piPred, uiStride, Clip( iPredDC1+iDeltaDC1 ), Clip( iPredDC2+iDeltaDC2 ) ); } 671 else { assignWedgeDCs2Pred( pcWedgelet, piPred, uiStride, iPredDC1, iPredDC2 ); } 672 } 673 674 UInt TComPrediction::getBestContinueWedge( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, Int iDeltaEnd ) 675 { 676 UInt uiThisBlockSize = uiWidth; 677 assert( uiThisBlockSize >= DMM_WEDGEMODEL_MIN_SIZE && uiThisBlockSize <= DMM_WEDGEMODEL_MAX_SIZE ); 678 WedgeList* pacContDWedgeList = &g_aacWedgeLists [(g_aucConvertToBit[uiThisBlockSize])]; 679 WedgeRefList* pacContDWedgeRefList = &g_aacWedgeRefLists[(g_aucConvertToBit[uiThisBlockSize])]; 680 681 UInt uiPredDirWedgeTabIdx = 0; 682 TComDataCU* pcTempCU; 683 UInt uiTempPartIdx; 684 // 1st: try continue above wedgelet 685 pcTempCU = pcCU->getPUAbove( uiTempPartIdx, pcCU->getZorderIdxInCU() + uiAbsPartIdx ); 686 if( pcTempCU ) 687 { 688 UChar uhLumaIntraDir = pcTempCU->getLumaIntraDir( uiTempPartIdx ); 689 if( DMM_WEDGE_FULL_IDX == uhLumaIntraDir || 690 DMM_WEDGE_FULL_D_IDX == uhLumaIntraDir || 691 DMM_WEDGE_PREDDIR_IDX == uhLumaIntraDir || 692 DMM_WEDGE_PREDDIR_D_IDX == uhLumaIntraDir 693 #if HHI_DMM_PRED_TEX 694 || 695 DMM_WEDGE_PREDTEX_IDX == uhLumaIntraDir || 696 DMM_WEDGE_PREDTEX_D_IDX == uhLumaIntraDir 697 #endif 698 ) 699 { 700 UInt uiRefWedgeSize = (UInt)g_aucIntraSizeIdxToWedgeSize[pcTempCU->getIntraSizeIdx( uiTempPartIdx )]; 701 WedgeList* pacWedgeList = &g_aacWedgeLists[(g_aucConvertToBit[uiRefWedgeSize])]; 702 703 // get offset between current and reference block 704 UInt uiOffsetX = 0; 705 UInt uiOffsetY = 0; 706 xGetBlockOffset( pcCU, uiAbsPartIdx, pcTempCU, uiTempPartIdx, uiOffsetX, uiOffsetY ); 707 708 // get reference wedgelet 709 UInt uiRefWedgeTabIdx = 0; 710 switch( uhLumaIntraDir ) 711 { 712 case( DMM_WEDGE_FULL_IDX ): { uiRefWedgeTabIdx = pcTempCU->getWedgeFullTabIdx ( uiTempPartIdx ); } break; 713 case( DMM_WEDGE_FULL_D_IDX ): { uiRefWedgeTabIdx = pcTempCU->getWedgeFullTabIdx ( uiTempPartIdx ); } break; 714 case( DMM_WEDGE_PREDDIR_IDX ): { uiRefWedgeTabIdx = pcTempCU->getWedgePredDirTabIdx( uiTempPartIdx ); } break; 715 case( DMM_WEDGE_PREDDIR_D_IDX ): { uiRefWedgeTabIdx = pcTempCU->getWedgePredDirTabIdx( uiTempPartIdx ); } break; 716 #if HHI_DMM_PRED_TEX 717 case( DMM_WEDGE_PREDTEX_IDX ): { uiRefWedgeTabIdx = pcTempCU->getWedgePredTexTabIdx( uiTempPartIdx ); } break; 718 case( DMM_WEDGE_PREDTEX_D_IDX ): { uiRefWedgeTabIdx = pcTempCU->getWedgePredTexTabIdx( uiTempPartIdx ); } break; 719 #endif 720 default: { assert( 0 ); return uiPredDirWedgeTabIdx; } 721 } 722 TComWedgelet* pcRefWedgelet; 723 pcRefWedgelet = &(pacWedgeList->at( uiRefWedgeTabIdx )); 724 725 // find reference wedgelet, if direction is suitable for continue wedge 726 if( pcRefWedgelet->checkPredDirAbovePossible( uiThisBlockSize, uiOffsetX ) ) 727 { 728 UChar uhContD_Xs, uhContD_Ys, uhContD_Xe, uhContD_Ye; 729 pcRefWedgelet->getPredDirStartEndAbove( uhContD_Xs, uhContD_Ys, uhContD_Xe, uhContD_Ye, uiThisBlockSize, uiOffsetX, iDeltaEnd ); 730 getWedgeListIdx( pacContDWedgeList, pacContDWedgeRefList, uiPredDirWedgeTabIdx, uhContD_Xs, uhContD_Ys, uhContD_Xe, uhContD_Ye ); 731 return uiPredDirWedgeTabIdx; 732 } 733 } 734 } 735 736 // 2nd: try continue left wedglelet 737 pcTempCU = pcCU->getPULeft( uiTempPartIdx, pcCU->getZorderIdxInCU() + uiAbsPartIdx ); 738 if( pcTempCU ) 739 { 740 UChar uhLumaIntraDir = pcTempCU->getLumaIntraDir( uiTempPartIdx ); 741 if( DMM_WEDGE_FULL_IDX == uhLumaIntraDir || 742 DMM_WEDGE_FULL_D_IDX == uhLumaIntraDir || 743 DMM_WEDGE_PREDDIR_IDX == uhLumaIntraDir || 744 DMM_WEDGE_PREDDIR_D_IDX == uhLumaIntraDir 745 #if HHI_DMM_PRED_TEX 746 || 747 DMM_WEDGE_PREDTEX_IDX == uhLumaIntraDir || 748 DMM_WEDGE_PREDTEX_D_IDX == uhLumaIntraDir 749 #endif 750 ) 751 { 752 UInt uiRefWedgeSize = (UInt)g_aucIntraSizeIdxToWedgeSize[pcTempCU->getIntraSizeIdx( uiTempPartIdx )]; 753 WedgeList* pacWedgeList = &g_aacWedgeLists[(g_aucConvertToBit[uiRefWedgeSize])]; 754 755 // get offset between current and reference block 756 UInt uiOffsetX = 0; 757 UInt uiOffsetY = 0; 758 xGetBlockOffset( pcCU, uiAbsPartIdx, pcTempCU, uiTempPartIdx, uiOffsetX, uiOffsetY ); 759 760 // get reference wedgelet 761 UInt uiRefWedgeTabIdx = 0; 762 switch( uhLumaIntraDir ) 763 { 764 case( DMM_WEDGE_FULL_IDX ): { uiRefWedgeTabIdx = pcTempCU->getWedgeFullTabIdx ( uiTempPartIdx ); } break; 765 case( DMM_WEDGE_FULL_D_IDX ): { uiRefWedgeTabIdx = pcTempCU->getWedgeFullTabIdx ( uiTempPartIdx ); } break; 766 case( DMM_WEDGE_PREDDIR_IDX ): { uiRefWedgeTabIdx = pcTempCU->getWedgePredDirTabIdx( uiTempPartIdx ); } break; 767 case( DMM_WEDGE_PREDDIR_D_IDX ): { uiRefWedgeTabIdx = pcTempCU->getWedgePredDirTabIdx( uiTempPartIdx ); } break; 768 #if HHI_DMM_PRED_TEX 769 case( DMM_WEDGE_PREDTEX_IDX ): { uiRefWedgeTabIdx = pcTempCU->getWedgePredTexTabIdx( uiTempPartIdx ); } break; 770 case( DMM_WEDGE_PREDTEX_D_IDX ): { uiRefWedgeTabIdx = pcTempCU->getWedgePredTexTabIdx( uiTempPartIdx ); } break; 771 #endif 772 default: { assert( 0 ); return uiPredDirWedgeTabIdx; } 773 } 774 TComWedgelet* pcRefWedgelet; 775 pcRefWedgelet = &(pacWedgeList->at( uiRefWedgeTabIdx )); 776 777 // find reference wedgelet, if direction is suitable for continue wedge 778 if( pcRefWedgelet->checkPredDirLeftPossible( uiThisBlockSize, uiOffsetY ) ) 779 { 780 UChar uhContD_Xs, uhContD_Ys, uhContD_Xe, uhContD_Ye; 781 pcRefWedgelet->getPredDirStartEndLeft( uhContD_Xs, uhContD_Ys, uhContD_Xe, uhContD_Ye, uiThisBlockSize, uiOffsetY, iDeltaEnd ); 782 getWedgeListIdx( pacContDWedgeList, pacContDWedgeRefList, uiPredDirWedgeTabIdx, uhContD_Xs, uhContD_Ys, uhContD_Xe, uhContD_Ye ); 783 return uiPredDirWedgeTabIdx; 784 } 785 } 786 } 787 788 // 3rd: (default) make wedglet from intra dir and max slope point 789 Int iSlopeX = 0; 790 Int iSlopeY = 0; 791 UInt uiStartPosX = 0; 792 UInt uiStartPosY = 0; 793 if( xGetWedgeIntraDirPredData( pcCU, uiAbsPartIdx, uiThisBlockSize, iSlopeX, iSlopeY, uiStartPosX, uiStartPosY ) ) 794 { 795 UChar uhContD_Xs, uhContD_Ys, uhContD_Xe, uhContD_Ye; 796 xGetWedgeIntraDirStartEnd( pcCU, uiAbsPartIdx, uiThisBlockSize, iSlopeX, iSlopeY, uiStartPosX, uiStartPosY, uhContD_Xs, uhContD_Ys, uhContD_Xe, uhContD_Ye, iDeltaEnd ); 797 getWedgeListIdx( pacContDWedgeList, pacContDWedgeRefList, uiPredDirWedgeTabIdx, uhContD_Xs, uhContD_Ys, uhContD_Xe, uhContD_Ye ); 798 return uiPredDirWedgeTabIdx; 799 } 800 801 return uiPredDirWedgeTabIdx; 802 } 803 804 Void TComPrediction::xGetBlockOffset( TComDataCU* pcCU, UInt uiAbsPartIdx, TComDataCU* pcRefCU, UInt uiRefAbsPartIdx, UInt& ruiOffsetX, UInt& ruiOffsetY ) 805 { 806 ruiOffsetX = 0; 807 ruiOffsetY = 0; 808 809 // get offset between current and above/left block 810 UInt uiThisOriginX = pcCU->getCUPelX() + g_auiRasterToPelX[ g_auiZscanToRaster[uiAbsPartIdx] ]; 811 UInt uiThisOriginY = pcCU->getCUPelY() + g_auiRasterToPelY[ g_auiZscanToRaster[uiAbsPartIdx] ]; 812 813 UInt uiNumPartInRefCU = pcRefCU->getTotalNumPart(); 814 UInt uiMaxDepthRefCU = 0; 815 while( uiNumPartInRefCU > 1 ) 816 { 817 uiNumPartInRefCU >>= 2; 818 uiMaxDepthRefCU++; 819 } 820 821 UInt uiDepthRefPU = (pcRefCU->getDepth(uiRefAbsPartIdx)) + (pcRefCU->getPartitionSize(uiRefAbsPartIdx) == SIZE_2Nx2N ? 0 : 1); 822 UInt uiShifts = (uiMaxDepthRefCU - uiDepthRefPU)*2; 823 UInt uiRefBlockOriginPartIdx = (uiRefAbsPartIdx>>uiShifts)<<uiShifts; 824 825 UInt uiRefOriginX = pcRefCU->getCUPelX() + g_auiRasterToPelX[ g_auiZscanToRaster[uiRefBlockOriginPartIdx] ]; 826 UInt uiRefOriginY = pcRefCU->getCUPelY() + g_auiRasterToPelY[ g_auiZscanToRaster[uiRefBlockOriginPartIdx] ]; 827 828 if( (uiThisOriginX - uiRefOriginX) > 0 ) { ruiOffsetX = (UInt)(uiThisOriginX - uiRefOriginX); } 829 if( (uiThisOriginY - uiRefOriginY) > 0 ) { ruiOffsetY = (UInt)(uiThisOriginY - uiRefOriginY); } 830 } 831 832 Bool TComPrediction::xGetWedgeIntraDirPredData( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiBlockSize, Int& riSlopeX, Int& riSlopeY, UInt& ruiStartPosX, UInt& ruiStartPosY ) 833 { 834 riSlopeX = 0; 835 riSlopeY = 0; 836 ruiStartPosX = 0; 837 ruiStartPosY = 0; 838 839 // 1st step: get wedge start point (max. slope) 840 Int* piSource = pcCU->getPattern()->getAdiOrgBuf( uiBlockSize, uiBlockSize, m_piYuvExt ); 841 Int iSourceStride = ( uiBlockSize<<1 ) + 1; 842 843 UInt uiSlopeMaxAbove = 0; 844 UInt uiPosSlopeMaxAbove = 0; 845 for( UInt uiPosHor = 0; uiPosHor < (uiBlockSize-1); uiPosHor++ ) 846 { 847 if( abs( piSource[uiPosHor+1] - piSource[uiPosHor] ) > uiSlopeMaxAbove ) 848 { 849 uiSlopeMaxAbove = abs( piSource[uiPosHor+1] - piSource[uiPosHor] ); 850 uiPosSlopeMaxAbove = uiPosHor; 851 } 852 } 853 854 UInt uiSlopeMaxLeft = 0; 855 UInt uiPosSlopeMaxLeft = 0; 856 for( UInt uiPosVer = 0; uiPosVer < (uiBlockSize-1); uiPosVer++ ) 857 { 858 if( abs( piSource[(uiPosVer+1)*iSourceStride] - piSource[uiPosVer*iSourceStride] ) > uiSlopeMaxLeft ) 859 { 860 uiSlopeMaxLeft = abs( piSource[(uiPosVer+1)*iSourceStride] - piSource[uiPosVer*iSourceStride] ); 861 uiPosSlopeMaxLeft = uiPosVer; 862 } 863 } 864 865 if( uiSlopeMaxAbove == 0 && uiSlopeMaxLeft == 0 ) 866 { 867 return false; 868 } 869 870 if( uiSlopeMaxAbove > uiSlopeMaxLeft ) 871 { 872 ruiStartPosX = uiPosSlopeMaxAbove; 873 ruiStartPosY = 0; 874 } 875 else 876 { 877 ruiStartPosX = 0; 878 ruiStartPosY = uiPosSlopeMaxLeft; 879 } 880 881 // 2nd step: derive wedge direction 882 Int angTable[9] = {0,2,5,9,13,17,21,26,32}; 883 884 Int uiPreds[2] = {-1, -1}; 885 Int uiPredNum = pcCU->getIntraDirLumaPredictor( uiAbsPartIdx, uiPreds ); 886 887 UInt uiDirMode = 0; 888 if( uiPredNum == 1 ) 889 { 890 uiDirMode = g_aucAngIntraModeOrder[uiPreds[0]]; 891 } 892 else if( uiPredNum == 2 ) 893 { 894 uiDirMode = g_aucAngIntraModeOrder[uiPreds[1]]; 895 } 896 897 if( uiDirMode == 0 ) 898 { 899 return false; 900 } 901 902 Bool modeVer = (uiDirMode < 18); 903 Bool modeHor = !modeVer; 904 Int intraPredAngle = modeVer ? uiDirMode - 9 : modeHor ? uiDirMode - 25 : 0; 905 Int absAng = abs(intraPredAngle); 906 Int signAng = intraPredAngle < 0 ? -1 : 1; 907 absAng = angTable[absAng]; 908 intraPredAngle = signAng * absAng; 909 910 // 3rd step: set slope for direction 911 if( modeHor ) 912 { 913 if( intraPredAngle > 0 ) 914 { 915 riSlopeX = -32; 916 riSlopeY = intraPredAngle; 917 } 918 else 919 { 920 riSlopeX = 32; 921 riSlopeY = -intraPredAngle; 922 } 923 } 924 else if( modeVer ) 925 { 926 if( intraPredAngle > 0 ) 927 { 928 riSlopeX = intraPredAngle; 929 riSlopeY = -32; 930 } 931 else 932 { 933 riSlopeX = -intraPredAngle; 934 riSlopeY = 32; 935 } 936 } 937 938 return true; 939 } 940 941 Void TComPrediction::xGetWedgeIntraDirStartEnd( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiBlockSize, Int iDeltaX, Int iDeltaY, UInt uiPMSPosX, UInt uiPMSPosY, UChar& ruhXs, UChar& ruhYs, UChar& ruhXe, UChar& ruhYe, Int iDeltaEnd ) 942 { 943 ruhXs = 0; 944 ruhYs = 0; 945 ruhXe = 0; 946 ruhYe = 0; 947 UInt uiOri; 948 949 // scaling of start pos and block size to wedge resolution 950 UInt uiScaledStartPosX = 0; 951 UInt uiScaledStartPosY = 0; 952 UInt uiScaledBlockSize = 0; 953 WedgeResolution eWedgeRes = g_aeWedgeResolutionList[(UInt)g_aucConvertToBit[uiBlockSize]]; 954 switch( eWedgeRes ) 955 { 956 case( DOUBLE_PEL ): { uiScaledStartPosX = (uiPMSPosX>>1); uiScaledStartPosY = (uiPMSPosY>>1); uiScaledBlockSize = (uiBlockSize>>1); break; } 957 case( FULL_PEL ): { uiScaledStartPosX = uiPMSPosX; uiScaledStartPosY = uiPMSPosY; uiScaledBlockSize = uiBlockSize; break; } 958 case( HALF_PEL ): { uiScaledStartPosX = (uiPMSPosX<<1); uiScaledStartPosY = (uiPMSPosY<<1); uiScaledBlockSize = (uiBlockSize<<1); break; } 959 } 960 961 // case above 962 if( uiScaledStartPosX > 0 && uiScaledStartPosY == 0 ) 963 { 964 ruhXs = (UChar)uiScaledStartPosX; 965 ruhYs = 0; 966 967 if( iDeltaY == 0 ) 968 { 969 if( iDeltaX < 0 ) 970 { 971 uiOri = 0; 972 ruhXe = 0; 973 ruhYe = (UChar)Min( Max( iDeltaEnd, 0 ), (uiScaledBlockSize-1) ); 974 return; 975 } 976 else 977 { 978 uiOri = 1; 979 ruhXe = (UChar)(uiScaledBlockSize-1); ; 980 ruhYe = (UChar)Min( Max( -iDeltaEnd, 0 ), (uiScaledBlockSize-1) ); 981 std::swap( ruhXs, ruhXe ); 982 std::swap( ruhYs, ruhYe ); 983 return; 984 } 985 } 986 987 // regular case 988 Int iVirtualEndX = (Int)ruhXs + roftoi( (Double)(uiScaledBlockSize-1) * ((Double)iDeltaX / (Double)iDeltaY) ); 989 990 if( iVirtualEndX < 0 ) 991 { 992 Int iYe = roftoi( (Double)(0 - (Int)ruhXs) * ((Double)iDeltaY / (Double)iDeltaX) ) + iDeltaEnd; 993 if( iYe < (Int)uiScaledBlockSize ) 994 { 995 uiOri = 0; 996 ruhXe = 0; 997 ruhYe = (UChar)Max( iYe, 0 ); 998 return; 999 } 1000 else 1001 { 1002 uiOri = 4; 1003 ruhXe = (UChar)Min( (iYe - (uiScaledBlockSize-1)), (uiScaledBlockSize-1) ); 1004 ruhYe = (UChar)(uiScaledBlockSize-1); 1005 return; 1006 } 1007 } 1008 else if( iVirtualEndX > (uiScaledBlockSize-1) ) 1009 { 1010 Int iYe = roftoi( (Double)((Int)(uiScaledBlockSize-1) - (Int)ruhXs) * ((Double)iDeltaY / (Double)iDeltaX) ) - iDeltaEnd; 1011 if( iYe < (Int)uiScaledBlockSize ) 1012 { 1013 uiOri = 1; 1014 ruhXe = (UChar)(uiScaledBlockSize-1); 1015 ruhYe = (UChar)Max( iYe, 0 ); 1016 std::swap( ruhXs, ruhXe ); 1017 std::swap( ruhYs, ruhYe ); 1018 return; 1019 } 1020 else 1021 { 1022 uiOri = 4; 1023 ruhXe = (UChar)Max( ((uiScaledBlockSize-1) - (iYe - (uiScaledBlockSize-1))), 0 ); 1024 ruhYe = (UChar)(uiScaledBlockSize-1); 1025 return; 1026 } 1027 } 1028 else 1029 { 1030 Int iXe = iVirtualEndX + iDeltaEnd; 1031 if( iXe < 0 ) 1032 { 1033 uiOri = 0; 1034 ruhXe = 0; 1035 ruhYe = (UChar)Max( ((uiScaledBlockSize-1) + iXe), 0 ); 1036 return; 1037 } 1038 else if( iXe > (uiScaledBlockSize-1) ) 1039 { 1040 uiOri = 1; 1041 ruhXe = (UChar)(uiScaledBlockSize-1); 1042 ruhYe = (UChar)Max( ((uiScaledBlockSize-1) - (iXe - (uiScaledBlockSize-1))), 0 ); 1043 std::swap( ruhXs, ruhXe ); 1044 std::swap( ruhYs, ruhYe ); 1045 return; 1046 } 1047 else 1048 { 1049 uiOri = 4; 1050 ruhXe = (UChar)iXe; 1051 ruhYe = (UChar)(uiScaledBlockSize-1); 1052 return; 1053 } 1054 } 1055 } 1056 1057 // case left 1058 if( uiScaledStartPosY > 0 && uiScaledStartPosX == 0 ) 1059 { 1060 ruhXs = 0; 1061 ruhYs = (UChar)uiScaledStartPosY; 1062 1063 if( iDeltaX == 0 ) 1064 { 1065 if( iDeltaY < 0 ) 1066 { 1067 uiOri = 0; 1068 ruhXe = (UChar)Min( Max( -iDeltaEnd, 0 ), (uiScaledBlockSize-1) ); 1069 ruhYe = 0; 1070 std::swap( ruhXs, ruhXe ); 1071 std::swap( ruhYs, ruhYe ); 1072 return; 1073 } 1074 else 1075 { 1076 uiOri = 3; 1077 ruhXe = (UChar)Min( Max( iDeltaEnd, 0 ), (uiScaledBlockSize-1) ); 1078 ruhYe = (UChar)(uiScaledBlockSize-1); 1079 return; 1080 } 1081 } 1082 1083 // regular case 1084 Int iVirtualEndY = (Int)ruhYs + roftoi( (Double)(uiScaledBlockSize-1) * ((Double)iDeltaY / (Double)iDeltaX) ); 1085 1086 if( iVirtualEndY < 0 ) 1087 { 1088 Int iXe = roftoi( (Double)(0 - (Int)ruhYs ) * ((Double)iDeltaX / (Double)iDeltaY) ) - iDeltaEnd; 1089 if( iXe < (Int)uiScaledBlockSize ) 1090 { 1091 uiOri = 0; 1092 ruhXe = (UChar)Max( iXe, 0 ); 1093 ruhYe = 0; 1094 std::swap( ruhXs, ruhXe ); 1095 std::swap( ruhYs, ruhYe ); 1096 return; 1097 } 1098 else 1099 { 1100 uiOri = 5; 1101 ruhXe = (UChar)(uiScaledBlockSize-1); 1102 ruhYe = (UChar)Min( (iXe - (uiScaledBlockSize-1)), (uiScaledBlockSize-1) ); 1103 std::swap( ruhXs, ruhXe ); 1104 std::swap( ruhYs, ruhYe ); 1105 return; 1106 } 1107 } 1108 else if( iVirtualEndY > (uiScaledBlockSize-1) ) 1109 { 1110 Int iXe = roftoi( (Double)((Int)(uiScaledBlockSize-1) - (Int)ruhYs ) * ((Double)iDeltaX / (Double)iDeltaY) ) + iDeltaEnd; 1111 if( iXe < (Int)uiScaledBlockSize ) 1112 { 1113 uiOri = 3; 1114 ruhXe = (UChar)Max( iXe, 0 ); 1115 ruhYe = (UChar)(uiScaledBlockSize-1); 1116 return; 1117 } 1118 else 1119 { 1120 uiOri = 5; 1121 ruhXe = (UChar)(uiScaledBlockSize-1); 1122 ruhYe = (UChar)Max( ((uiScaledBlockSize-1) - (iXe - (uiScaledBlockSize-1))), 0 ); 1123 std::swap( ruhXs, ruhXe ); 1124 std::swap( ruhYs, ruhYe ); 1125 return; 1126 } 1127 } 1128 else 1129 { 1130 Int iYe = iVirtualEndY - iDeltaEnd; 1131 if( iYe < 0 ) 1132 { 1133 uiOri = 0; 1134 ruhXe = (UChar)Max( ((uiScaledBlockSize-1) + iYe), 0 ); 1135 ruhYe = 0; 1136 std::swap( ruhXs, ruhXe ); 1137 std::swap( ruhYs, ruhYe ); 1138 return; 1139 } 1140 else if( iYe > (uiScaledBlockSize-1) ) 1141 { 1142 uiOri = 3; 1143 ruhXe = (UChar)Max( ((uiScaledBlockSize-1) - (iYe - (uiScaledBlockSize-1))), 0 ); 1144 ruhYe = (UChar)(uiScaledBlockSize-1); 1145 return; 1146 } 1147 else 1148 { 1149 uiOri = 5; 1150 ruhXe = (UChar)(uiScaledBlockSize-1); 1151 ruhYe = (UChar)iYe; 1152 std::swap( ruhXs, ruhXe ); 1153 std::swap( ruhYs, ruhYe ); 1154 return; 1155 } 1156 } 1157 } 1158 1159 // case origin 1160 if( uiScaledStartPosX == 0 && uiScaledStartPosY == 0 ) 1161 { 1162 if( iDeltaX*iDeltaY < 0 ) 1163 { 1164 return; 1165 } 1166 1167 ruhXs = 0; 1168 ruhYs = 0; 1169 1170 if( iDeltaY == 0 ) 1171 { 1172 uiOri = 1; 1173 ruhXe = (UChar)(uiScaledBlockSize-1); 1174 ruhYe = 0; 1175 std::swap( ruhXs, ruhXe ); 1176 std::swap( ruhYs, ruhYe ); 1177 return; 1178 } 1179 1180 if( iDeltaX == 0 ) 1181 { 1182 uiOri = 0; 1183 ruhXe = 0; 1184 ruhYe = (UChar)(uiScaledBlockSize-1); 1185 return; 1186 } 1187 1188 Int iVirtualEndX = (Int)ruhXs + roftoi( (Double)(uiScaledBlockSize-1) * ((Double)iDeltaX / (Double)iDeltaY) ); 1189 1190 if( iVirtualEndX > (uiScaledBlockSize-1) ) 1191 { 1192 Int iYe = roftoi( (Double)((Int)(uiScaledBlockSize-1) - (Int)ruhXs) * ((Double)iDeltaY / (Double)iDeltaX) ) - iDeltaEnd; 1193 if( iYe < (Int)uiScaledBlockSize ) 1194 { 1195 uiOri = 1; 1196 ruhXe = (UChar)(uiScaledBlockSize-1); 1197 ruhYe = (UChar)Max( iYe, 0 ); 1198 std::swap( ruhXs, ruhXe ); 1199 std::swap( ruhYs, ruhYe ); 1200 return; 1201 } 1202 else 1203 { 1204 uiOri = 3; 1205 ruhXe = (UChar)Max( ((uiScaledBlockSize-1) - (iYe - (uiScaledBlockSize-1))), 0 ); 1206 ruhYe = (UChar)(uiScaledBlockSize-1); 1207 return; 1208 } 1209 } 1210 else 1211 { 1212 Int iXe = iVirtualEndX + iDeltaEnd; 1213 if( iXe < 0 ) 1214 { 1215 uiOri = 0; 1216 ruhXe = 0; 1217 ruhYe = (UChar)Max( ((uiScaledBlockSize-1) + iXe), 0 ); 1218 return; 1219 } 1220 else if( iXe > (uiScaledBlockSize-1) ) 1221 { 1222 uiOri = 1; 1223 ruhXe = (UChar)(uiScaledBlockSize-1); 1224 ruhYe = (UChar)Max( ((uiScaledBlockSize-1) - (iXe - (uiScaledBlockSize-1))), 0 ); 1225 std::swap( ruhXs, ruhXe ); 1226 std::swap( ruhYs, ruhYe ); 1227 return; 1228 } 1229 else 1230 { 1231 uiOri = 3; 1232 ruhXe = (UChar)iXe; 1233 ruhYe = (UChar)(uiScaledBlockSize-1); 1234 return; 1235 } 1236 } 1237 } 1238 } 1239 1240 Bool TComPrediction::getWedgeListIdx( WedgeList* pcWedgeList, WedgeRefList* pcWedgeRefList, UInt& ruiTabIdx, UChar uhXs, UChar uhYs, UChar uhXe, UChar uhYe ) 1241 { 1242 ruiTabIdx = 0; 1243 1244 for( UInt uiIdx = 0; uiIdx < pcWedgeList->size(); uiIdx++ ) 1245 { 1246 TComWedgelet* pcTestWedge = &(pcWedgeList->at(uiIdx)); 1247 1248 if( pcTestWedge->getStartX() == uhXs && 1249 pcTestWedge->getStartY() == uhYs && 1250 pcTestWedge->getEndX() == uhXe && 1251 pcTestWedge->getEndY() == uhYe ) 1252 { 1253 ruiTabIdx = uiIdx; 1254 return true; 1255 } 1256 } 1257 1258 // additionally search in WedgeRef lists of duplicated patterns 1259 for( UInt uiIdx = 0; uiIdx < pcWedgeRefList->size(); uiIdx++ ) 1260 { 1261 TComWedgeRef* pcTestWedgeRef = &(pcWedgeRefList->at(uiIdx)); 1262 1263 if( pcTestWedgeRef->getStartX() == uhXs && 1264 pcTestWedgeRef->getStartY() == uhYs && 1265 pcTestWedgeRef->getEndX() == uhXe && 1266 pcTestWedgeRef->getEndY() == uhYe ) 1267 { 1268 ruiTabIdx = pcTestWedgeRef->getRefIdx(); 1269 return true; 1270 } 1271 } 1272 1273 return false; 1274 } 1275 1276 Void TComPrediction::xPredIntraWedgeDir( TComDataCU* pcCU, UInt uiAbsPartIdx, Pel* piPred, UInt uiStride, Int iWidth, Int iHeight, Bool bAbove, Bool bLeft, Bool bEncoder, Bool bDelta, Int iWedgeDeltaEnd, Int iDeltaDC1, Int iDeltaDC2 ) 1277 { 1278 assert( iWidth >= DMM_WEDGEMODEL_MIN_SIZE && iWidth <= DMM_WEDGEMODEL_MAX_SIZE ); 1279 WedgeList* pacWedgeList = &g_aacWedgeLists[(g_aucConvertToBit[iWidth])]; 1280 1281 // get wedge pattern 1282 UInt uiDirWedgeTabIdx = 0; 1283 if( bEncoder ) 1284 { 1285 // encoder: load stored wedge pattern from CU 1286 uiDirWedgeTabIdx = pcCU->getWedgePredDirTabIdx( uiAbsPartIdx ); 1287 } 1288 else 1289 { 1290 uiDirWedgeTabIdx = getBestContinueWedge( pcCU, uiAbsPartIdx, iWidth, iHeight, iWedgeDeltaEnd ); 1291 1292 UInt uiDepth = (pcCU->getDepth(0)) + (pcCU->getPartitionSize(0) == SIZE_2Nx2N ? 0 : 1); 1293 pcCU->setWedgePredDirTabIdxSubParts( uiDirWedgeTabIdx, uiAbsPartIdx, uiDepth ); 1294 } 1295 TComWedgelet* pcWedgelet = &(pacWedgeList->at(uiDirWedgeTabIdx)); 1296 1297 // get wedge pred DCs 1298 Int iPredDC1 = 0; 1299 Int iPredDC2 = 0; 1300 1301 Int* piMask = pcCU->getPattern()->getAdiOrgBuf( iWidth, iHeight, m_piYuvExt ); 1302 Int iMaskStride = ( iWidth<<1 ) + 1; 1303 piMask += iMaskStride+1; 1304 getWedgePredDCs( pcWedgelet, piMask, iMaskStride, iPredDC1, iPredDC2, bAbove, bLeft ); 1305 1306 if( bDelta ) 1307 { 1308 xDeltaDCQuantScaleUp( pcCU, iDeltaDC1 ); 1309 xDeltaDCQuantScaleUp( pcCU, iDeltaDC2 ); 1310 } 1311 1312 // assign wedge pred DCs to prediction 1313 if( bDelta ) { assignWedgeDCs2Pred( pcWedgelet, piPred, uiStride, Clip ( iPredDC1+iDeltaDC1 ), Clip( iPredDC2+iDeltaDC2 ) ); } 1314 else { assignWedgeDCs2Pred( pcWedgelet, piPred, uiStride, iPredDC1, iPredDC2 ); } 1315 } 1316 #endif 1317 1318 #if HHI_DMM_PRED_TEX 1319 Void TComPrediction::xPredIntraWedgeTex( TComDataCU* pcCU, UInt uiAbsPartIdx, Pel* piPred, UInt uiStride, Int iWidth, Int iHeight, Bool bAbove, Bool bLeft, Bool bEncoder, Bool bDelta, Int iDeltaDC1, Int iDeltaDC2 ) 1320 { 1321 assert( iWidth >= DMM_WEDGEMODEL_MIN_SIZE && iWidth <= DMM_WEDGEMODEL_MAX_SIZE ); 1322 WedgeList* pacWedgeList = &g_aacWedgeLists[(g_aucConvertToBit[iWidth])]; 1323 1324 // get wedge pattern 1325 UInt uiTextureWedgeTabIdx = 0; 1326 if( bEncoder ) 1327 { 1328 // encoder: load stored wedge pattern from CU 1329 uiTextureWedgeTabIdx = pcCU->getWedgePredTexTabIdx( uiAbsPartIdx ); 1330 } 1331 else 1332 { 1333 // decoder: get and store wedge pattern in CU 1334 uiTextureWedgeTabIdx = getBestWedgeFromText( pcCU, uiAbsPartIdx, (UInt)iWidth, (UInt)iHeight ); 1335 UInt uiDepth = (pcCU->getDepth(0)) + (pcCU->getPartitionSize(0) == SIZE_2Nx2N ? 0 : 1); 1336 pcCU->setWedgePredTexTabIdxSubParts( uiTextureWedgeTabIdx, uiAbsPartIdx, uiDepth ); 1337 } 1338 TComWedgelet* pcWedgelet = &(pacWedgeList->at(uiTextureWedgeTabIdx)); 1339 1340 // get wedge pred DCs 1341 Int iPredDC1 = 0; 1342 Int iPredDC2 = 0; 1343 Int* piMask = pcCU->getPattern()->getAdiOrgBuf( iWidth, iHeight, m_piYuvExt ); 1344 Int iMaskStride = ( iWidth<<1 ) + 1; 1345 piMask += iMaskStride+1; 1346 getWedgePredDCs( pcWedgelet, piMask, iMaskStride, iPredDC1, iPredDC2, bAbove, bLeft ); 1347 1348 if( bDelta ) 1349 { 1350 xDeltaDCQuantScaleUp( pcCU, iDeltaDC1 ); 1351 xDeltaDCQuantScaleUp( pcCU, iDeltaDC2 ); 1352 } 1353 1354 // assign wedge pred DCs to prediction 1355 if( bDelta ) { assignWedgeDCs2Pred( pcWedgelet, piPred, uiStride, Clip ( iPredDC1+iDeltaDC1 ), Clip( iPredDC2+iDeltaDC2 ) ); } 1356 else { assignWedgeDCs2Pred( pcWedgelet, piPred, uiStride, iPredDC1, iPredDC2 ); } 1357 } 1358 1359 Void TComPrediction::xPredIntraContourTex( TComDataCU* pcCU, UInt uiAbsPartIdx, Pel* piPred, UInt uiStride, Int iWidth, Int iHeight, Bool bAbove, Bool bLeft, Bool bEncoder, Bool bDelta, Int iDeltaDC1, Int iDeltaDC2 ) 1360 { 1361 // get contour pattern 1362 TComWedgelet* pcContourWedge = new TComWedgelet( iWidth, iHeight ); 1363 getBestContourFromText( pcCU, uiAbsPartIdx, (UInt)iWidth, (UInt)iHeight, pcContourWedge ); 1364 1365 // get wedge pred DCs 1366 Int iPredDC1 = 0; 1367 Int iPredDC2 = 0; 1368 Int* piMask = pcCU->getPattern()->getAdiOrgBuf( iWidth, iHeight, m_piYuvExt ); 1369 Int iMaskStride = ( iWidth<<1 ) + 1; 1370 piMask += iMaskStride+1; 1371 getWedgePredDCs( pcContourWedge, piMask, iMaskStride, iPredDC1, iPredDC2, bAbove, bLeft ); 1372 1373 if( bDelta ) 1374 { 1375 xDeltaDCQuantScaleUp( pcCU, iDeltaDC1 ); 1376 xDeltaDCQuantScaleUp( pcCU, iDeltaDC2 ); 1377 } 1378 1379 // assign wedge pred DCs to prediction 1380 if( bDelta ) { assignWedgeDCs2Pred( pcContourWedge, piPred, uiStride, Clip ( iPredDC1+iDeltaDC1 ), Clip( iPredDC2+iDeltaDC2 ) ); } 1381 else { assignWedgeDCs2Pred( pcContourWedge, piPred, uiStride, iPredDC1, iPredDC2 ); } 1382 1383 pcContourWedge->destroy(); 1384 delete pcContourWedge; 1385 } 1386 1387 Void TComPrediction::getBestContourFromText( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, TComWedgelet* pcContourWedge, Pel* piTextureBlock ) 1388 { 1389 pcContourWedge->clear(); 1390 Bool* pabContourPattern = pcContourWedge->getPattern(); 1391 1392 // get copy of according texture luma block 1393 Pel* piTempY = NULL; 1394 TComYuv cTempYuv; 1395 1396 if ( piTextureBlock ) 1397 { 1398 piTempY = piTextureBlock; 1399 } 1400 else 1401 { 1402 cTempYuv.create( uiWidth, uiHeight ); cTempYuv.clear(); 1403 piTempY = cTempYuv.getLumaAddr(); 1404 1405 fillTexturePicTempBlock( pcCU, uiAbsPartIdx, piTempY, uiWidth, uiHeight ); 1406 1407 piTempY = cTempYuv.getLumaAddr(); 1408 } 1409 1410 // find contour for texture luma block 1411 UInt iDC = 0; 1412 for( UInt k = 0; k < (uiWidth*uiHeight); k++ ) { iDC += piTempY[k]; } 1413 iDC /= (uiWidth*uiHeight); 1414 1415 if ( piTextureBlock ) 1416 { 1417 piTempY = piTextureBlock; 1418 } 1419 else 1420 { 1421 piTempY = cTempYuv.getLumaAddr(); 1422 } 1423 1424 for( UInt k = 0; k < (uiWidth*uiHeight); k++ ) 1425 { 1426 pabContourPattern[k] = (piTempY[k] > iDC) ? true : false; 1427 } 1428 1429 cTempYuv.destroy(); 1430 } 1431 1432 UInt TComPrediction::getBestWedgeFromText( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, WedgeDist eWedgeDist, Pel* piTextureBlock ) 1380 1433 { 1381 1434 assert( uiWidth >= DMM_WEDGEMODEL_MIN_SIZE && uiWidth <= DMM_WEDGEMODEL_MAX_SIZE ); … … 1383 1436 1384 1437 // get copy of according texture luma block 1385 UInt uiPartAddr = 0; 1386 Int iBlockWidth, iBlockHeight; 1438 Pel* piTempY = NULL; 1387 1439 TComYuv cTempYuv; 1388 UInt uiTempStride; 1389 Pel* piTempY; 1390 1391 TComPicYuv* pcPicYuvRef = pcCU->getSlice()->getTexturePic()->getPicYuvRec(); 1392 Int iRefStride = pcPicYuvRef->getStride(); 1393 Pel* piRefY; 1394 1395 pcCU->getPartIndexAndSize( uiAbsPartIdx, uiPartAddr, iBlockWidth, iBlockHeight ); 1396 1397 piRefY = pcPicYuvRef->getLumaAddr( pcCU->getAddr(), pcCU->getZorderIdxInCU() + uiPartAddr ); 1398 1399 cTempYuv.create( pcCU->getWidth(0), pcCU->getHeight(0) ); cTempYuv.clear(); 1400 uiTempStride = cTempYuv.getStride(); 1401 piTempY = cTempYuv.getLumaAddr( uiAbsPartIdx, uiWidth ); 1402 1403 for ( Int y = 0; y < iBlockHeight; y++ ) 1404 { 1405 ::memcpy(piTempY, piRefY, sizeof(Pel)*iBlockWidth); 1406 piTempY += uiTempStride; 1407 piRefY += iRefStride; 1408 } 1409 1410 piTempY = cTempYuv.getLumaAddr( uiAbsPartIdx, uiWidth ); 1411 1440 1441 if ( piTextureBlock ) 1442 { 1443 piTempY = piTextureBlock; 1444 } 1445 else 1446 { 1447 cTempYuv.create( uiWidth, uiHeight ); cTempYuv.clear(); 1448 piTempY = cTempYuv.getLumaAddr(); 1449 1450 fillTexturePicTempBlock( pcCU, uiAbsPartIdx, piTempY, uiWidth, uiHeight ); 1451 1452 piTempY = cTempYuv.getLumaAddr(); 1453 } 1454 1412 1455 TComWedgeDist cWedgeDist; 1413 1456 UInt uiTextureWedgeTabIdx = 0; … … 1429 1472 for( UInt uiIdx = 0; uiIdx < pacWedgeList->size(); uiIdx++ ) 1430 1473 { 1431 calcWedgeDCs ( &(pacWedgeList->at(uiIdx)), piTempY, ui TempStride, iDC1, iDC2 );1474 calcWedgeDCs ( &(pacWedgeList->at(uiIdx)), piTempY, uiWidth, iDC1, iDC2 ); 1432 1475 assignWedgeDCs2Pred( &(pacWedgeList->at(uiIdx)), piPred, uiPredStride, iDC1, iDC2 ); 1433 1476 1434 UInt uiActDist = cWedgeDist.getDistPart( piPred, uiPredStride, piTempY, ui TempStride, uiWidth, uiHeight, eWedgeDist );1477 UInt uiActDist = cWedgeDist.getDistPart( piPred, uiPredStride, piTempY, uiWidth, uiWidth, uiHeight, eWedgeDist ); 1435 1478 1436 1479 if( uiActDist < uiBestDist || uiBestDist == MAX_UINT ) … … 1446 1489 return uiTextureWedgeTabIdx; 1447 1490 } 1491 1492 Void TComPrediction::fillTexturePicTempBlock( TComDataCU* pcCU, UInt uiAbsPartIdx, Pel* piTempBlockY, UInt uiWidth, UInt uiHeight ) 1493 { 1494 TComPicYuv* pcPicYuvRef = pcCU->getSlice()->getTexturePic()->getPicYuvRec(); 1495 Int iRefStride = pcPicYuvRef->getStride(); 1496 Pel* piRefY; 1497 1498 piRefY = pcPicYuvRef->getLumaAddr( pcCU->getAddr(), pcCU->getZorderIdxInCU() + uiAbsPartIdx ); 1499 1500 for ( Int y = 0; y < uiHeight; y++ ) 1501 { 1502 ::memcpy(piTempBlockY, piRefY, sizeof(Pel)*uiWidth); 1503 piTempBlockY += uiWidth; 1504 piRefY += iRefStride; 1505 } 1506 } 1448 1507 #endif 1449 1508 … … 1498 1557 1499 1558 #if HIGH_ACCURACY_BI 1559 #if DEPTH_MAP_GENERATION 1500 1560 Void TComPrediction::xPredInterUni ( TComDataCU* pcCU, UInt uiPartAddr, Int iWidth, Int iHeight, RefPicList eRefPicList, TComYuv*& rpcYuvPred, Int iPartIdx, Bool bPrdDepthMap, Bool bi ) 1501 1561 #else 1562 Void TComPrediction::xPredInterUni ( TComDataCU* pcCU, UInt uiPartAddr, Int iWidth, Int iHeight, RefPicList eRefPicList, TComYuv*& rpcYuvPred, Int iPartIdx, Bool bi ) 1563 #endif 1564 #else 1565 #if DEPTH_MAP_GENERATION 1502 1566 Void TComPrediction::xPredInterUni ( TComDataCU* pcCU, UInt uiPartAddr, Int iWidth, Int iHeight, RefPicList eRefPicList, TComYuv*& rpcYuvPred, Int iPartIdx, Bool bPrdDepthMap ) 1567 #else 1568 Void TComPrediction::xPredInterUni ( TComDataCU* pcCU, UInt uiPartAddr, Int iWidth, Int iHeight, RefPicList eRefPicList, TComYuv*& rpcYuvPred, Int iPartIdx ) 1569 #endif 1503 1570 #endif 1504 1571 { … … 1507 1574 pcCU->clipMv(cMv); 1508 1575 1576 #if DEPTH_MAP_GENERATION 1509 1577 if( bPrdDepthMap ) 1510 1578 { … … 1517 1585 return; 1518 1586 } 1519 1520 #if MW_DEPTH_MAP_INTERP_FILTER 1587 #endif 1588 1589 #if HHI_FULL_PEL_DEPTH_MAP_MV_ACC 1521 1590 if( pcCU->getSlice()->getSPS()->isDepth() ) 1522 1591 { … … 1526 1595 UInt uiRShift = 0; 1527 1596 #endif 1528 xPredInterPrdDepthMap( pcCU, pcCU->getSlice()->getRefPic( eRefPicList, iRefIdx )->getPicYuvRec(), uiPartAddr, &cMv, iWidth, iHeight, rpcYuvPred, uiRShift, MW_DEPTH_MAP_INTERP_FILTER);1597 xPredInterPrdDepthMap( pcCU, pcCU->getSlice()->getRefPic( eRefPicList, iRefIdx )->getPicYuvRec(), uiPartAddr, &cMv, iWidth, iHeight, rpcYuvPred, uiRShift, 2 ); 1529 1598 } 1530 1599 else … … 1543 1612 xPredInterLumaBlk ( pcCU, pcCU->getSlice()->getRefPic( eRefPicList, iRefIdx )->getPicYuvRec(), uiPartAddr, &cMv, iWidth, iHeight, rpcYuvPred ); 1544 1613 #endif 1545 #if MW_DEPTH_MAP_INTERP_FILTER1614 #if HHI_FULL_PEL_DEPTH_MAP_MV_ACC 1546 1615 } 1547 1616 #endif … … 1581 1650 #if HIGH_ACCURACY_BI 1582 1651 if( pcCU->getCUMvField( REF_PIC_LIST_0 )->getRefIdx( uiPartAddr ) >= 0 && pcCU->getCUMvField( REF_PIC_LIST_1 )->getRefIdx( uiPartAddr ) >= 0 ) 1652 #if DEPTH_MAP_GENERATION 1583 1653 xPredInterUni ( pcCU, uiPartAddr, iWidth, iHeight, eRefPicList, pcMbYuv, iPartIdx, bPrdDepthMap, true ); 1654 #else 1655 xPredInterUni ( pcCU, uiPartAddr, iWidth, iHeight, eRefPicList, pcMbYuv, iPartIdx, true ); 1656 #endif 1584 1657 else 1585 xPredInterUni ( pcCU, uiPartAddr, iWidth, iHeight, eRefPicList, pcMbYuv, iPartIdx, bPrdDepthMap ); 1658 #if DEPTH_MAP_GENERATION 1659 xPredInterUni ( pcCU, uiPartAddr, iWidth, iHeight, eRefPicList, pcMbYuv, iPartIdx, bPrdDepthMap ); 1586 1660 #else 1661 xPredInterUni ( pcCU, uiPartAddr, iWidth, iHeight, eRefPicList, pcMbYuv, iPartIdx ); 1662 #endif 1663 #else 1664 #if DEPTH_MAP_GENERATION 1587 1665 xPredInterUni ( pcCU, uiPartAddr, iWidth, iHeight, eRefPicList, pcMbYuv, iPartIdx, bPrdDepthMap ); 1666 #else 1667 xPredInterUni ( pcCU, uiPartAddr, iWidth, iHeight, eRefPicList, pcMbYuv, iPartIdx ); 1668 #endif 1588 1669 #endif 1589 1670 } … … 1610 1691 Int iHor = ( uiFilterMode == 2 ? ( pcMv->getHor() + 2 ) & iFPelMask : pcMv->getHor() ); 1611 1692 Int iVer = ( uiFilterMode == 2 ? ( pcMv->getVer() + 2 ) & iFPelMask : pcMv->getVer() ); 1612 #if MW_DEPTH_MAP_INTERP_FILTER == 2 && MW_FULL_PEL_DEPTH_MAP_MV_SIGNALLING1693 #if HHI_FULL_PEL_DEPTH_MAP_MV_ACC 1613 1694 if( pcCU->getSlice()->getSPS()->isDepth() ) 1614 1695 { … … 2561 2642 #endif 2562 2643 2563 #if HHI_DMM_ INTRA2644 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 2564 2645 TComWedgeDist::TComWedgeDist() 2565 2646 { -
trunk/source/Lib/TLibCommon/TComPrediction.h
r2 r5 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-2011, 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 1 34 2 35 … … 55 88 // motion compensation functions 56 89 #if HIGH_ACCURACY_BI 90 #if DEPTH_MAP_GENERATION 57 91 Void xPredInterUni ( TComDataCU* pcCU, UInt uiPartAddr, Int iWidth, Int iHeight, RefPicList eRefPicList, TComYuv*& rpcYuvPred, Int iPartIdx, Bool bPrdDepthMap, Bool bi=false ); 58 92 #else 93 Void xPredInterUni ( TComDataCU* pcCU, UInt uiPartAddr, Int iWidth, Int iHeight, RefPicList eRefPicList, TComYuv*& rpcYuvPred, Int iPartIdx, Bool bi=false ); 94 #endif 95 #else 96 #if DEPTH_MAP_GENERATION 59 97 Void xPredInterUni ( TComDataCU* pcCU, UInt uiPartAddr, Int iWidth, Int iHeight, RefPicList eRefPicList, TComYuv*& rpcYuvPred, Int iPartIdx, Bool bPrdDepthMap ); 98 #else 99 Void xPredInterUni ( TComDataCU* pcCU, UInt uiPartAddr, Int iWidth, Int iHeight, RefPicList eRefPicList, TComYuv*& rpcYuvPred, Int iPartIdx ); 100 #endif 60 101 #endif 61 102 Void xPredInterBi ( TComDataCU* pcCU, UInt uiPartAddr, Int iWidth, Int iHeight, TComYuv*& rpcYuvPred, Int iPartIdx, Bool bPrdDepthMap ); … … 72 113 #endif 73 114 74 #if HHI_DMM_ INTRA115 #if HHI_DMM_WEDGE_INTRA 75 116 Void xPredIntraWedgeFull ( TComDataCU* pcCU, UInt uiAbsPartIdx, Pel* piPred, UInt uiStride, Int iWidth, Int iHeight, Bool bAbove, Bool bLeft, Bool bEncoder, Bool bDelta, UInt uiTabIdx, Int iDeltaDC1 = 0, Int iDeltaDC2 = 0 ); 117 76 118 Void xPredIntraWedgeDir ( TComDataCU* pcCU, UInt uiAbsPartIdx, Pel* piPred, UInt uiStride, Int iWidth, Int iHeight, Bool bAbove, Bool bLeft, Bool bEncoder, Bool bDelta, Int iWedgeDeltaEnd, Int iDeltaDC1 = 0, Int iDeltaDC2 = 0 ); 77 78 Void xPredIntraWedgeTex ( TComDataCU* pcCU, UInt uiAbsPartIdx, Pel* piPred, UInt uiStride, Int iWidth, Int iHeight, Bool bAbove, Bool bLeft, Bool bEncoder, Bool bDelta, Int iDeltaDC1 = 0, Int iDeltaDC2 = 0 );79 Void xPredIntraContourTex ( TComDataCU* pcCU, UInt uiAbsPartIdx, Pel* piPred, UInt uiStride, Int iWidth, Int iHeight, Bool bAbove, Bool bLeft, Bool bEncoder, Bool bDelta, Int iDeltaDC1 = 0, Int iDeltaDC2 = 0 );80 81 119 Void xGetBlockOffset ( TComDataCU* pcCU, UInt uiAbsPartIdx, TComDataCU* pcRefCU, UInt uiRefAbsPartIdx, UInt& ruiOffsetX, UInt& ruiOffsetY ); 82 120 Bool xGetWedgeIntraDirPredData ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiBlockSize, Int& riSlopeX, Int& riSlopeY, UInt& ruiStartPosX, UInt& ruiStartPosY ); 83 121 Void xGetWedgeIntraDirStartEnd ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiBlockSize, Int iDeltaX, Int iDeltaY, UInt uiPMSPosX, UInt uiPMSPosY, UChar& ruhXs, UChar& ruhYs, UChar& ruhXe, UChar& ruhYe, Int iDeltaEnd = 0 ); 122 #endif 123 #if HHI_DMM_PRED_TEX 124 Void xPredIntraWedgeTex ( TComDataCU* pcCU, UInt uiAbsPartIdx, Pel* piPred, UInt uiStride, Int iWidth, Int iHeight, Bool bAbove, Bool bLeft, Bool bEncoder, Bool bDelta, Int iDeltaDC1 = 0, Int iDeltaDC2 = 0 ); 125 Void xPredIntraContourTex ( TComDataCU* pcCU, UInt uiAbsPartIdx, Pel* piPred, UInt uiStride, Int iWidth, Int iHeight, Bool bAbove, Bool bLeft, Bool bEncoder, Bool bDelta, Int iDeltaDC1 = 0, Int iDeltaDC2 = 0 ); 126 #endif 127 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 84 128 Void xDeltaDCQuantScaleUp ( TComDataCU* pcCU, Int& riDeltaDC ); 85 129 #endif … … 110 154 Void predIntraChromaAng ( TComPattern* pcTComPattern, Int* piSrc, UInt uiDirMode, Pel* piPred, UInt uiStride, Int iWidth, Int iHeight, TComDataCU* pcCU, Bool bAbove, Bool bLeft ); 111 155 112 #if HHI_DMM_ INTRA156 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 113 157 Void predIntraLumaDMM ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiMode, Pel* piPred, UInt uiStride, Int iWidth, Int iHeight, Bool bAbove, Bool bLeft, Bool bEncoder ); 114 158 115 UInt getBestContinueWedge ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, Int iDeltaEnd = 0 );116 Void getBestContourFromText ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, TComWedgelet* pcContourWedge );117 118 159 Void getWedgePredDCs ( TComWedgelet* pcWedgelet, Int* piMask, Int iMaskStride, Int& riPredDC1, Int& riPredDC2, Bool bAbove, Bool bLeft ); 119 120 Bool getWedgeListIdx ( WedgeList* pcWedgeList, WedgeRefList* pcWedgeRefList, UInt& ruiTabIdx, UChar uhXs, UChar uhYs, UChar uhXe, UChar uhYe );121 122 UInt getBestWedgeFromText ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, WedgeDist eWedgeDist = WedgeDist_SAD );123 160 Void calcWedgeDCs ( TComWedgelet* pcWedgelet, Pel* piOrig, UInt uiStride, Int& riDC1, Int& riDC2 ); 124 161 Void assignWedgeDCs2Pred ( TComWedgelet* pcWedgelet, Pel* piPred, UInt uiStride, Int iDC1, Int iDC2 ); 162 #endif 163 #if HHI_DMM_PRED_TEX 164 Void getBestContourFromText ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, TComWedgelet* pcContourWedge, Pel* piTextureBlock = NULL ); 165 UInt getBestWedgeFromText ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, WedgeDist eWedgeDist = WedgeDist_SAD, Pel* piTextureBlock = NULL ); 166 Void fillTexturePicTempBlock ( TComDataCU* pcCU, UInt uiAbsPartIdx, Pel* piTempBlockY, UInt uiWidth, UInt uiHeight ); 167 #endif 168 #if HHI_DMM_WEDGE_INTRA 169 UInt getBestContinueWedge ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, Int iDeltaEnd = 0 ); 170 Bool getWedgeListIdx ( WedgeList* pcWedgeList, WedgeRefList* pcWedgeRefList, UInt& ruiTabIdx, UChar uhXs, UChar uhYs, UChar uhXe, UChar uhYe ); 125 171 #endif 126 172 … … 142 188 }; 143 189 144 #if HHI_DMM_ INTRA190 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 145 191 // ==================================================================================================================== 146 192 // Class definition TComWedgeDist -
trunk/source/Lib/TLibCommon/TComRdCost.cpp
r2 r5 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-2011, 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 1 34 2 35 … … 46 79 } 47 80 48 #if SB_INTERVIEW_SKIP_LAMBDA_SCALE81 #if HHI_INTERVIEW_SKIP_LAMBDA_SCALE 49 82 dLambda = m_dLambdaScale * dLambda ; 50 83 #endif … … 125 158 } 126 159 160 #if HHI_INTER_VIEW_MOTION_PRED 127 161 Void 128 162 TComRdCost::setLambdaMVReg( Double dLambda ) … … 131 165 m_uiLambdaMVRegSSE = (UInt)floor( 65536.0 * dLambda ); 132 166 } 167 #endif 133 168 134 169 … … 223 258 m_puiMultiviewRegCostVer = 0; 224 259 225 //GTVSO260 #if HHI_VSO 226 261 m_apRefPics = NULL; 227 262 m_paaiShiftLUTs = NULL; … … 231 266 m_fpDistortFuncVSO = NULL; 232 267 m_pcRenModel = NULL; 233 234 //GT VSO end 235 #if SB_INTERVIEW_SKIP_LAMBDA_SCALE268 #endif 269 270 #if HHI_INTERVIEW_SKIP_LAMBDA_SCALE 236 271 m_dLambdaScale = 1; 237 272 #endif … … 287 322 } 288 323 289 //GTVSO324 #if HHI_VSO 290 325 if ( m_apRefPics != NULL ) 291 326 { … … 298 333 m_paaiShiftLUTs = NULL; 299 334 }; 300 //GT VSO end 335 #endif 301 336 } 302 337 … … 378 413 // initialize 379 414 rcDistParam.iSubShift = 0; 380 #if SB_INTERVIEW_SKIP415 #if HHI_INTERVIEW_SKIP 381 416 rcDistParam.pUsed = 0; 382 417 rcDistParam.iStrideUsed = 0; … … 401 436 // initialize 402 437 rcDistParam.iSubShift = 0; 403 #if SB_INTERVIEW_SKIP438 #if HHI_INTERVIEW_SKIP 404 439 rcDistParam.pUsed = 0; 405 440 rcDistParam.iStrideUsed = 0; … … 436 471 // initialize 437 472 rcDistParam.iSubShift = 0; 438 #if SB_INTERVIEW_SKIP473 #if HHI_INTERVIEW_SKIP 439 474 rcDistParam.pUsed = 0; 440 475 rcDistParam.iStrideUsed = 0; … … 454 489 rcDP.iSubShift = 0; 455 490 rcDP.DistFunc = m_afpDistortFunc[ ( bHadamard ? DF_HADS : DF_SADS ) + g_aucConvertToBit[ iWidth ] + 1 ]; 456 #if SB_INTERVIEW_SKIP491 #if HHI_INTERVIEW_SKIP 457 492 rcDP.pUsed = 0; 458 493 rcDP.iStrideUsed = 0; … … 504 539 return ( uiSum >> g_uiBitIncrement ); 505 540 } 506 #if SB_INTERVIEW_SKIP541 #if HHI_INTERVIEW_SKIP 507 542 UInt TComRdCost::getDistPart( Pel* piCur, Int iCurStride, Pel* piOrg, Int iOrgStride, Pel* piUsed, Int iUsedStride, UInt uiBlkWidth, UInt uiBlkHeight, DFunc eDFunc ) 508 543 { … … 3367 3402 Int iTemp; 3368 3403 3369 #if SB_INTERVIEW_SKIP3404 #if HHI_INTERVIEW_SKIP 3370 3405 if( pcDtParam->pUsed ) 3371 3406 { … … 3400 3435 piCur += iStrideCur; 3401 3436 } 3402 #if SB_INTERVIEW_SKIP3437 #if HHI_INTERVIEW_SKIP 3403 3438 } 3404 3439 #endif … … 3427 3462 Int iTemp; 3428 3463 3429 #if SB_INTERVIEW_SKIP3464 #if HHI_INTERVIEW_SKIP 3430 3465 if( pcDtParam->pUsed ) 3431 3466 { … … 3458 3493 piCur += iStrideCur; 3459 3494 } 3460 #if SB_INTERVIEW_SKIP3495 #if HHI_INTERVIEW_SKIP 3461 3496 } 3462 3497 #endif … … 3485 3520 Int iTemp; 3486 3521 3487 #if SB_INTERVIEW_SKIP3522 #if HHI_INTERVIEW_SKIP 3488 3523 if( pcDtParam->pUsed ) 3489 3524 { … … 3523 3558 piCur += iStrideCur; 3524 3559 } 3525 #if SB_INTERVIEW_SKIP3560 #if HHI_INTERVIEW_SKIP 3526 3561 } 3527 3562 #endif … … 3550 3585 Int iTemp; 3551 3586 3552 #if SB_INTERVIEW_SKIP3587 #if HHI_INTERVIEW_SKIP 3553 3588 if( pcDtParam->pUsed ) 3554 3589 { … … 3605 3640 piCur += iStrideCur; 3606 3641 } 3607 #if SB_INTERVIEW_SKIP3642 #if HHI_INTERVIEW_SKIP 3608 3643 } 3609 3644 #endif … … 3631 3666 Int iTemp; 3632 3667 3633 #if SB_INTERVIEW_SKIP3668 #if HHI_INTERVIEW_SKIP 3634 3669 if( pcDtParam->pUsed ) 3635 3670 { … … 3691 3726 piCur += iStrideCur; 3692 3727 } 3693 #if SB_INTERVIEW_SKIP3728 #if HHI_INTERVIEW_SKIP 3694 3729 } 3695 3730 #endif … … 3717 3752 Int iTemp; 3718 3753 3719 #if SB_INTERVIEW_SKIP3754 #if HHI_INTERVIEW_SKIP 3720 3755 if( pcDtParam->pUsed ) 3721 3756 { … … 3804 3839 piCur += iStrideCur; 3805 3840 } 3806 #if SB_INTERVIEW_SKIP3841 #if HHI_INTERVIEW_SKIP 3807 3842 } 3808 3843 #endif … … 3830 3865 Int iTemp; 3831 3866 3832 #if SB_INTERVIEW_SKIP3867 #if HHI_INTERVIEW_SKIP 3833 3868 if( pcDtParam->pUsed ) 3834 3869 { … … 3980 4015 piCur += iStrideCur; 3981 4016 } 3982 #if SB_INTERVIEW_SKIP4017 #if HHI_INTERVIEW_SKIP 3983 4018 } 3984 4019 #endif … … 4711 4746 4712 4747 4713 //GT VSO 4714 4748 #if HHI_VSO 4715 4749 Void TComRdCost::setLambdaVSO( Double dLambdaVSO ) 4716 4750 { … … 4721 4755 } 4722 4756 4723 Dist TComRdCost::xGetDistVSOMode1( Int iStartPosX, Int iStartPosY, Pel* piCur, Int iCurStride, Pel* piOrg, Int iOrgStride, UInt uiBlkWidth, UInt uiBlkHeight, Bool bSAD )4724 {4725 4726 assert( m_uiVSOMode == 1 );4727 UInt uiShift = g_uiBitIncrement << 1;4728 4729 UInt uiPlane = 0;4730 4731 Int iRefWidth = m_pcVideoPicYuv->getWidth();4732 Int iStrideOrgVid;4733 UInt uiErr = 0;4734 4735 if (uiPlane > 0)4736 {4737 iStartPosX = iStartPosX >> 1;4738 iStartPosY = iStartPosY >> 1;4739 iRefWidth = iRefWidth >> 1;4740 iStrideOrgVid = m_pcVideoPicYuv ->getCStride();4741 }4742 else4743 {4744 iStrideOrgVid = m_pcVideoPicYuv ->getStride();4745 }4746 4747 UInt uiReferenceNumber = 0;4748 for (UInt uiReference = 0; uiReference < 3; uiReference+=2 )4749 {4750 if ( m_paaiShiftLUTs[uiReference] == 0 )4751 continue;4752 4753 uiReferenceNumber++;4754 4755 Pel* piOrgVid;4756 4757 if (uiPlane == 0)4758 {4759 piOrgVid = m_pcVideoPicYuv ->getLumaAddr();4760 }4761 else4762 {4763 if (uiPlane == 1)4764 {4765 piOrgVid = m_pcVideoPicYuv ->getCbAddr();4766 }4767 else4768 {4769 piOrgVid = m_pcVideoPicYuv ->getCrAddr();4770 }4771 }4772 4773 piOrgVid += iStartPosY * iStrideOrgVid;4774 4775 for ( Int iY = 0; iY < uiBlkHeight; iY++ )4776 {4777 Int iPos = iStartPosX;4778 4779 for (Int iX = 0; iX < uiBlkWidth; iX++ )4780 {4781 Int iTargetPos;4782 4783 assert( RemoveBitIncrement(piCur[iX]) >= 0 && RemoveBitIncrement(piCur[iX]) <= 256);4784 assert( RemoveBitIncrement(piOrg[iX]) >= 0 && RemoveBitIncrement(piOrg[iX]) <= 256);4785 4786 iTargetPos = iPos - m_paaiShiftLUTs[uiReference][0][RemoveBitIncrement(piCur[iX])] + m_paaiShiftLUTs[uiReference][0][RemoveBitIncrement(piOrg[iX])];4787 iTargetPos = iTargetPos > 0 ? iTargetPos : 0;4788 iTargetPos = iTargetPos < iRefWidth ? iTargetPos : iRefWidth-1;4789 Int iDiff = piOrgVid[iTargetPos] - piOrgVid[iPos];4790 4791 if ( bSAD )4792 {4793 uiErr += abs(iDiff);4794 }4795 else4796 {4797 uiErr += ((iDiff * iDiff) >> uiShift );4798 }4799 4800 iPos++;4801 }4802 4803 piOrgVid += iStrideOrgVid;4804 4805 piCur += iCurStride;4806 piOrg += iOrgStride;4807 4808 }4809 piCur -= iCurStride * uiBlkHeight;4810 piOrg -= iOrgStride * uiBlkHeight;4811 }4812 4813 if ( bSAD )4814 {4815 uiErr = uiErr >> g_uiBitIncrement;4816 }4817 4818 return ( uiErr + ( uiReferenceNumber >> 1 )) / uiReferenceNumber;4819 }4820 4821 Dist TComRdCost::xGetDistVSOMode2( Int iStartPosX, Int iStartPosY, Pel* piCur, Int iCurStride, Pel* piOrg, Int iOrgStride, UInt uiBlkWidth, UInt uiBlkHeight, Bool bSAD )4822 {4823 assert( m_uiVSOMode == 2 );4824 UInt uiShift = g_uiBitIncrement << 1;4825 UInt uiPlane = 0;4826 4827 Int iRefWidth = m_pcVideoPicYuv->getWidth();4828 Int iStrideOrgVid;4829 4830 UInt uiErr = 0;4831 4832 if (uiPlane > 0)4833 {4834 iStartPosX = iStartPosX >> 1;4835 iStartPosY = iStartPosY >> 1;4836 iRefWidth = iRefWidth >> 1;4837 iStrideOrgVid = m_pcVideoPicYuv ->getCStride();4838 }4839 else4840 {4841 iStrideOrgVid = m_pcVideoPicYuv ->getStride();4842 }4843 4844 for (UInt uiRefPic = 0; uiRefPic < m_uiNumberRefPics; uiRefPic++ )4845 {4846 Pel* piRefVid;4847 Pel* piOrgVid;4848 Int iStrideRefVid;4849 4850 if (uiPlane == 0)4851 {4852 piRefVid = m_apRefPics[uiRefPic]->getLumaAddr();4853 piOrgVid = m_pcVideoPicYuv ->getLumaAddr();4854 iStrideRefVid = m_apRefPics[uiRefPic]->getStride();4855 }4856 else4857 {4858 if (uiPlane == 1)4859 {4860 piRefVid = m_apRefPics[uiRefPic]->getCbAddr();4861 piOrgVid = m_pcVideoPicYuv ->getCbAddr();4862 }4863 else4864 {4865 piRefVid = m_apRefPics[uiRefPic]->getCrAddr();4866 piOrgVid = m_pcVideoPicYuv ->getCrAddr();4867 }4868 iStrideRefVid = m_apRefPics[uiRefPic]->getCStride();4869 }4870 4871 piRefVid += iStartPosY * iStrideRefVid;4872 piOrgVid += iStartPosY * iStrideOrgVid;4873 4874 for (Int iY = 0; iY < uiBlkHeight; iY++ )4875 {4876 Int iPos = iStartPosX;4877 4878 for (Int iX = 0; iX < uiBlkWidth; iX++ )4879 {4880 int iTargetPos;4881 4882 AOF( RemoveBitIncrement(piCur[iX]) >= 0 && RemoveBitIncrement(piCur[iX]) <= 255);4883 iTargetPos = iPos - m_paaiShiftLUTs[uiRefPic][0][RemoveBitIncrement(piCur[iX])];4884 iTargetPos = iTargetPos > 0 ? iTargetPos : 0;4885 iTargetPos = iTargetPos < iRefWidth ? iTargetPos : iRefWidth-1;4886 4887 Int iDiff = piRefVid[iTargetPos] - piOrgVid[iPos];4888 4889 if ( bSAD )4890 {4891 uiErr += abs(iDiff);4892 }4893 else4894 {4895 uiErr += ((iDiff * iDiff) >> uiShift );4896 }4897 4898 iPos++;4899 }4900 4901 piRefVid += iStrideRefVid;4902 piOrgVid += iStrideOrgVid;4903 }4904 piCur -= iCurStride * uiBlkHeight;4905 piOrg -= iOrgStride * uiBlkHeight;4906 }4907 4908 if ( bSAD )4909 {4910 uiErr = uiErr >> g_uiBitIncrement;4911 }4912 4913 4914 return ( uiErr + (m_uiNumberRefPics >> 1)) / m_uiNumberRefPics;4915 }4916 4917 Dist TComRdCost::xGetDistVSOMode3( Int iStartPosX, Int iStartPosY, Pel* piCur, Int iCurStride, Pel* piOrg, Int iOrgStride, UInt uiBlkWidth, UInt uiBlkHeight, Bool bSAD )4918 {4919 assert( m_uiVSOMode == 3 );4920 UInt uiShift = g_uiBitIncrement << 1;4921 4922 UInt uiPlane = 0;4923 4924 Int iRefWidth = m_pcVideoPicYuv->getWidth();4925 Int iStrideOrgVid;4926 4927 UInt uiErr = 0;4928 4929 if (uiPlane > 0)4930 {4931 iStartPosX = iStartPosX >> 1;4932 iStartPosY = iStartPosY >> 1;4933 iRefWidth = iRefWidth >> 1;4934 iStrideOrgVid = m_pcVideoPicYuv ->getCStride();4935 }4936 else4937 {4938 iStrideOrgVid = m_pcVideoPicYuv ->getStride();4939 }4940 4941 for (UInt uiRefPicNum = 0; uiRefPicNum < m_uiNumberRefPics; uiRefPicNum++ )4942 {4943 Pel* piRefVid;4944 Pel* piOrgVid;4945 Int iStrideRefVid;4946 4947 if (uiPlane == 0)4948 {4949 piRefVid = m_apRefPics[uiRefPicNum]->getLumaAddr();4950 piOrgVid = m_pcVideoPicYuv ->getLumaAddr();4951 iStrideRefVid = m_apRefPics[uiRefPicNum]->getStride();4952 }4953 else4954 {4955 if (uiPlane == 1)4956 {4957 piRefVid = m_apRefPics[uiRefPicNum]->getCbAddr();4958 piOrgVid = m_pcVideoPicYuv ->getCbAddr();4959 }4960 else4961 {4962 piRefVid = m_apRefPics[uiRefPicNum]->getCrAddr();4963 piOrgVid = m_pcVideoPicYuv ->getCrAddr();4964 }4965 iStrideRefVid = m_apRefPics[uiRefPicNum]->getCStride();4966 }4967 4968 4969 piRefVid += iStartPosY * iStrideRefVid;4970 piOrgVid += iStartPosY * iStrideOrgVid;4971 4972 for ( Int iY = 0; iY < uiBlkHeight; iY++ )4973 {4974 Int iPos = iStartPosX;4975 4976 for (Int iX = 0; iX < uiBlkWidth; iX++ )4977 {4978 int iTargetPos;4979 4980 4981 assert( RemoveBitIncrement(piCur[iX]) >= 0 && RemoveBitIncrement(piCur[iX]) <= 256 );4982 iTargetPos = iPos - m_paaiShiftLUTs[uiRefPicNum][0][RemoveBitIncrement(piCur[iX])];4983 iTargetPos = iTargetPos > 0 ? iTargetPos : 0;4984 iTargetPos = iTargetPos < iRefWidth ? iTargetPos : iRefWidth-1;4985 4986 int iSourcePos;4987 4988 assert( RemoveBitIncrement(piOrg[iX]) >= 0 && RemoveBitIncrement(piOrg[iX]) <= 256 );4989 iSourcePos = iPos - m_paaiShiftLUTs[uiRefPicNum][0][RemoveBitIncrement(piOrg[iX])];4990 iSourcePos = iSourcePos > 0 ? iSourcePos : 0;4991 iSourcePos = iSourcePos < iRefWidth ? iSourcePos : iRefWidth-1;4992 4993 Int iDiff = piRefVid[iTargetPos] - piRefVid[iSourcePos];4994 4995 if ( bSAD )4996 {4997 uiErr += abs(iDiff);4998 }4999 else5000 {5001 uiErr += ((iDiff * iDiff) >> uiShift) ;5002 }5003 iPos++;5004 }5005 5006 piRefVid += iStrideRefVid;5007 piOrgVid += iStrideOrgVid;5008 5009 piCur += iCurStride;5010 piOrg += iOrgStride;5011 }5012 piCur -= iCurStride * uiBlkHeight;5013 piOrg -= iOrgStride * uiBlkHeight;5014 }5015 5016 if ( bSAD )5017 {5018 uiErr = uiErr >> g_uiBitIncrement;5019 }5020 UInt uiNumRef = Max( 1, m_uiNumberRefPics );5021 return ( uiErr + (uiNumRef >> 1) ) / uiNumRef;5022 }5023 5024 5025 5026 5027 #if GERHARD_VQM_XCHECK5028 UInt TComRdCost::xGetDistXCheck( Int iStartPosX, Int iStartPosY, Pel* piCur, Int iCurStride, Pel* piOrg, Int iOrgStride, UInt uiBlkWidth, UInt uiBlkHeight, Bool bSAD )5029 {5030 UInt uiShift = g_uiBitIncrement << 1;5031 5032 UInt uiPlane = 0;5033 UInt uiErr = 0;5034 Int iStrideOrgVid = m_pcVideoPicYuv ->getStride();5035 5036 Pel* piRefOrg = m_pcVideoPicYuv->getLumaAddr() + iStartPosX + iStrideOrgVid * iStartPosY;5037 5038 for ( Int iY = 0; iY < uiBlkHeight; iY++ )5039 {5040 for (Int iX = 0; iX < uiBlkWidth; iX++ )5041 {5042 Int iDiff;5043 if (uiPlane != 0)5044 {5045 5046 iDiff = piCur[iX] - piOrg[iX];5047 }5048 else5049 {5050 // assert( piOrg[iX] == piRefOrg[iX] );5051 iDiff = piCur[iX] - piRefOrg[iX];5052 }5053 5054 5055 if ( bSAD )5056 {5057 uiErr += abs(iDiff);5058 }5059 else5060 {5061 uiErr += ((iDiff * iDiff) >> uiShift) ;5062 }5063 }5064 piRefOrg += iStrideOrgVid;5065 piCur += iCurStride;5066 piOrg += iOrgStride;5067 }5068 5069 if ( bSAD )5070 {5071 uiErr >>= g_uiBitIncrement;5072 }5073 return uiErr;5074 }5075 5076 5077 #endif5078 5079 4757 Dist TComRdCost::xGetDistVSOMode4( Int iStartPosX, Int iStartPosY, Pel* piCur, Int iCurStride, Pel* piOrg, Int iOrgStride, UInt uiBlkWidth, UInt uiBlkHeight, Bool bSAD ) 5080 4758 { … … 5083 4761 5084 4762 RMDist iDistMin = (RMDist) RDO_DIST_MIN; 5085 #if RDO_DIST_INT4763 #if HHI_VSO_DIST_INT 5086 4764 iDistMin = m_bAllowNegDist ? RDO_DIST_MIN : 0; 5087 4765 #endif … … 5132 4810 pRefInfo->getRefPicYuvAndLUT(m_apRefPics, m_paaiShiftLUTs); 5133 4811 } 5134 5135 5136 4812 m_pcVideoPicYuv = pRefInfo->getPicYuvVideo(); 5137 5138 #if GERHARD_VQM_XCHECK5139 m_pcVideoPicYuv = pRefInfo->getPicYuvOrgDepth(CURRVIEW);5140 #endif5141 5142 4813 } 5143 4814 … … 5147 4818 switch (m_uiVSOMode ) 5148 4819 { 5149 case 1:5150 m_fpDistortFuncVSO = &TComRdCost::xGetDistVSOMode1;5151 break;5152 case 2:5153 m_fpDistortFuncVSO = &TComRdCost::xGetDistVSOMode2;5154 break;5155 case 3:5156 m_fpDistortFuncVSO = &TComRdCost::xGetDistVSOMode3;5157 break;5158 4820 case 4: 5159 4821 m_fpDistortFuncVSO = &TComRdCost::xGetDistVSOMode4; … … 5163 4825 break; 5164 4826 } 5165 #if GERHARD_VQM_XCHECK5166 m_fpDistortFuncVSO = &TComRdCost::xGetDistXCheck;5167 #endif5168 4827 } 5169 4828 … … 5228 4887 } 5229 4888 5230 #if RDO_DIST_INT4889 #if HHI_VSO_DIST_INT 5231 4890 Void TComRdCost::setAllowNegDist( Bool bAllowNegDist ) 5232 4891 { … … 5235 4894 #endif 5236 4895 5237 //GT VSO end 4896 #endif -
trunk/source/Lib/TLibCommon/TComRdCost.h
r2 r5 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-2011, 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 1 34 /** \file TComRdCost.h 2 35 \brief RD cost computation classes (header) … … 58 91 FpDistFuncRnd DistFuncRnd; 59 92 #endif 60 #if SB_INTERVIEW_SKIP93 #if HHI_INTERVIEW_SKIP 61 94 Pel* pUsed; 62 95 Int iStrideUsed; … … 87 120 #endif 88 121 iSubShift = 0; 89 #if SB_INTERVIEW_SKIP122 #if HHI_INTERVIEW_SKIP 90 123 pUsed = 0; 91 124 iStrideUsed = 0; … … 116 149 Double m_dFrameLambda; 117 150 118 #if SB_INTERVIEW_SKIP_LAMBDA_SCALE151 #if HHI_INTERVIEW_SKIP_LAMBDA_SCALE 119 152 Double m_dLambdaScale ; 120 153 #endif … … 148 181 149 182 Void setLambda ( Double dLambda ); 183 #if HHI_INTER_VIEW_MOTION_PRED 150 184 Void setLambdaMVReg ( Double dLambda ); 185 #endif 151 186 Void setFrameLambda ( Double dLambda ) { m_dFrameLambda = dLambda; } 152 187 153 #if SB_INTERVIEW_SKIP_LAMBDA_SCALE188 #if HHI_INTERVIEW_SKIP_LAMBDA_SCALE 154 189 Void setLambdaScale ( Double dLambdaScale) { m_dLambdaScale = dLambdaScale; } 155 190 Double getLambdaScale ( ) { return m_dLambdaScale ; } … … 287 322 288 323 public: 289 #if SB_INTERVIEW_SKIP324 #if HHI_INTERVIEW_SKIP 290 325 UInt getDistPart( Pel* piCur, Int iCurStride, Pel* piOrg, Int iOrgStride, Pel* piUsed, Int iUsedStride, UInt uiBlkWidth, UInt uiBlkHeight, DFunc eDFunc = DF_SSE ); 291 326 #endif 292 327 UInt getDistPart( Pel* piCur, Int iCurStride, Pel* piOrg, Int iOrgStride, UInt uiBlkWidth, UInt uiBlkHeight, DFunc eDFunc = DF_SSE ); 293 328 294 //GT VSO 295 329 #if HHI_VSO 296 330 private: 297 331 Double m_dLambdaVSO; … … 301 335 Double m_dFrameLambdaVSO; 302 336 303 #if RDO_DIST_INT337 #if HHI_VSO_DIST_INT 304 338 Bool m_bAllowNegDist; 305 339 #endif … … 334 368 UInt getVSOMode( ) { return m_uiVSOMode; } 335 369 336 #if RDO_DIST_INT370 #if HHI_VSO_DIST_INT 337 371 Void setAllowNegDist ( Bool bAllowNegDist ); 338 372 #endif … … 346 380 347 381 private: 348 349 Dist xGetDistVSOMode1( Int iStartPosX, Int iStartPosY, Pel* piCur, Int iCurStride, Pel* piOrg, Int iOrgStride, UInt uiBlkWidth, UInt uiBlkHeight, Bool bSAD );350 Dist xGetDistVSOMode2( Int iStartPosX, Int iStartPosY, Pel* piCur, Int iCurStride, Pel* piOrg, Int iOrgStride, UInt uiBlkWidth, UInt uiBlkHeight, Bool bSAD );351 Dist xGetDistVSOMode3( Int iStartPosX, Int iStartPosY, Pel* piCur, Int iCurStride, Pel* piOrg, Int iOrgStride, UInt uiBlkWidth, UInt uiBlkHeight, Bool bSAD );352 382 Dist xGetDistVSOMode4( Int iStartPosX, Int iStartPosY, Pel* piCur, Int iCurStride, Pel* piOrg, Int iOrgStride, UInt uiBlkWidth, UInt uiBlkHeight, Bool bSAD ); 353 383 354 #if GERHARD_VQM_XCHECK 355 Dist xGetDistXCheck( Int iStartPosX, Int iStartPosY, Pel* piCur, Int iCurStride, Pel* piOrg, Int iOrgStride, UInt uiBlkWidth, UInt uiBlkHeight, Bool bSAD ); 356 #endif 357 358 //GT VSO end 384 #endif // HHI_VSO 359 385 360 386 };// END CLASS DEFINITION TComRdCost -
trunk/source/Lib/TLibCommon/TComRdCostWeightPrediction.cpp
r2 r5 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-2011, 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 1 34 2 35 … … 56 89 57 90 UInt uiSum = 0; 58 #if SB_INTERVIEW_SKIP91 #if HHI_INTERVIEW_SKIP 59 92 if( pcDtParam->pUsed ) 60 93 { … … 90 123 } 91 124 #endif 92 #if SB_INTERVIEW_SKIP125 #if HHI_INTERVIEW_SKIP 93 126 } 94 127 #endif -
trunk/source/Lib/TLibCommon/TComRdCostWeightPrediction.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibCommon/TComResidualGenerator.cpp
r2 r5 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-2011, 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 1 34 2 35 … … 10 43 #include "TComResidualGenerator.h" 11 44 45 46 #if HHI_INTER_VIEW_RESIDUAL_PRED 12 47 13 48 … … 541 576 542 577 543 578 #endif // HHI_INTER_VIEW_RESIDUAL_PRED 579 -
trunk/source/Lib/TLibCommon/TComResidualGenerator.h
r2 r5 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-2011, 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 1 34 2 35 … … 17 50 18 51 52 #if HHI_INTER_VIEW_RESIDUAL_PRED 19 53 20 54 class TComResidualGenerator … … 69 103 70 104 105 #endif // __TCOM_RESIDUAL_GENERATOR__ 71 106 72 #endif // __TCOM_RESIDUAL_GENERATOR__107 #endif // HHI_INTER_VIEW_RESIDUAL_PRED 73 108 74 109 -
trunk/source/Lib/TLibCommon/TComRom.cpp
r2 r5 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-2011, 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 1 34 2 35 … … 64 97 } 65 98 66 #if HHI_DMM_ INTRA99 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 67 100 if ( !g_aacWedgeLists.empty() ) 68 101 { … … 2369 2402 // Mapping each Unified Directional Intra prediction direction to DCT/DST transform 2370 2403 // 0 implies use DCT, 1 implies DST 2371 #if ADD_PLANAR_MODE && !HHI_DMM_INTRA 2404 #if ADD_PLANAR_MODE 2405 #if HHI_DMM_WEDGE_INTRA && HHI_DMM_PRED_TEX 2406 const UChar g_aucDCTDSTMode_Vert[NUM_INTRA_MODE+8] = 2407 #elif HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 2408 const UChar g_aucDCTDSTMode_Vert[NUM_INTRA_MODE+4] = 2409 #else 2372 2410 const UChar g_aucDCTDSTMode_Vert[NUM_INTRA_MODE] = 2373 #elif !ADD_PLANAR_MODE && HHI_DMM_INTRA 2374 const UChar g_aucDCTDSTMode_Vert[34+NUM_DMM_INTRA] = 2375 #elif ADD_PLANAR_MODE && HHI_DMM_INTRA 2376 const UChar g_aucDCTDSTMode_Vert[NUM_INTRA_MODE+NUM_DMM_INTRA] = 2411 #endif 2412 #else 2413 #if HHI_DMM_WEDGE_INTRA && HHI_DMM_PRED_TEX 2414 const UChar g_aucDCTDSTMode_Vert[34+8] = 2415 #elif 2416 const UChar g_aucDCTDSTMode_Vert[34+4] = 2377 2417 #else 2378 2418 const UChar g_aucDCTDSTMode_Vert[34] = 2419 #endif 2379 2420 #endif 2380 2421 { //0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 … … 2383 2424 ,1 2384 2425 #endif 2385 #if HHI_DMM_ INTRA2426 #if HHI_DMM_WEDGE_INTRA && HHI_DMM_PRED_TEX 2386 2427 ,0,0,0,0,0,0,0,0 2387 #endif 2388 }; 2389 #if ADD_PLANAR_MODE && !HHI_DMM_INTRA 2428 #elif HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 2429 ,0,0,0,0 2430 #endif 2431 }; 2432 #if ADD_PLANAR_MODE 2433 #if HHI_DMM_WEDGE_INTRA && HHI_DMM_PRED_TEX 2434 const UChar g_aucDCTDSTMode_Hor[NUM_INTRA_MODE+8] = 2435 #elif HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 2436 const UChar g_aucDCTDSTMode_Hor[NUM_INTRA_MODE+4] = 2437 #else 2390 2438 const UChar g_aucDCTDSTMode_Hor[NUM_INTRA_MODE] = 2391 #elif !ADD_PLANAR_MODE && HHI_DMM_INTRA 2392 const UChar g_aucDCTDSTMode_Hor[34+NUM_DMM_INTRA] = 2393 #elif ADD_PLANAR_MODE && HHI_DMM_INTRA 2394 const UChar g_aucDCTDSTMode_Hor[NUM_INTRA_MODE+NUM_DMM_INTRA] = 2439 #endif 2440 #else 2441 #if HHI_DMM_WEDGE_INTRA && HHI_DMM_PRED_TEX 2442 const UChar g_aucDCTDSTMode_Hor[34+8] = 2443 #elif 2444 const UChar g_aucDCTDSTMode_Hor[34+4] = 2395 2445 #else 2396 2446 const UChar g_aucDCTDSTMode_Hor[34] = 2447 #endif 2397 2448 #endif 2398 2449 { //0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 … … 2401 2452 ,1 2402 2453 #endif 2403 #if HHI_DMM_ INTRA2454 #if HHI_DMM_WEDGE_INTRA && HHI_DMM_PRED_TEX 2404 2455 ,0,0,0,0,0,0,0,0 2456 #elif HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 2457 ,0,0,0,0 2405 2458 #endif 2406 2459 }; … … 2536 2589 }; 2537 2590 2538 #if HHI_DMM_ INTRA2591 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 2539 2592 const WedgeResolution g_aeWedgeResolutionList[5] = 2540 2593 { … … 2568 2621 }; 2569 2622 2570 const UChar g_aucAdditionalIntraModeList[NUM_DMM_INTRA] =2571 {2572 DMM_WEDGE_FULL_IDX,2573 DMM_WEDGE_FULL_D_IDX,2574 DMM_WEDGE_PREDTEX_IDX,2575 DMM_WEDGE_PREDTEX_D_IDX,2576 DMM_CONTOUR_PREDTEX_IDX,2577 DMM_CONTOUR_PREDTEX_D_IDX,2578 DMM_WEDGE_PREDDIR_IDX,2579 DMM_WEDGE_PREDDIR_D_IDX2580 };2581 2582 2623 double g_dDeltaDCsQuantOffset = 0.0; 2583 2624 #endif … … 2595 2636 // Misc. 2596 2637 // ==================================================================================================================== 2597 #if SB_DEBUG2598 Bool g_bEncoding = false ;2599 #endif2600 2638 Char g_aucConvertToBit [ MAX_CU_SIZE+1 ]; 2601 2639 … … 2754 2792 #endif 2755 2793 2756 #if HHI_DMM_ INTRA2794 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 2757 2795 std::vector<std::vector<TComWedgelet> > g_aacWedgeLists; 2758 2796 std::vector<std::vector<TComWedgeRef> > g_aacWedgeRefLists; -
trunk/source/Lib/TLibCommon/TComRom.h
r2 r5 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-2011, 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 1 34 2 35 … … 14 47 15 48 16 #if HHI_DMM_ INTRA49 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 17 50 #include "TComWedgelet.h" 18 51 #endif … … 38 71 #endif //QC_MDCS 39 72 40 #if HHI_DMM_ INTRA73 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 41 74 Void initWedgeLists(); 42 75 Void createWedgeList( UInt uiWidth, UInt uiHeight, std::vector<TComWedgelet> &racWedgeList, std::vector<TComWedgeRef> &racWedgeRefList, WedgeResolution eWedgeRes ); … … 72 105 extern UInt g_auiPUOffset[4]; 73 106 74 #if HHI_DMM_ INTRA107 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 75 108 extern std::vector<std::vector<TComWedgelet> > g_aacWedgeLists; 76 109 extern std::vector<std::vector<TComWedgeRef> > g_aacWedgeRefLists; … … 287 320 #endif 288 321 289 #if HHI_DMM_ INTRA322 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 290 323 extern const UChar g_aucWedgeFullBitsListIdx[7]; 291 324 extern const UChar g_aucIntraSizeIdxToWedgeSize[7]; 292 extern const UChar g_aucAdditionalIntraModeList[NUM_DMM_INTRA];293 325 extern const WedgeResolution g_aeWedgeResolutionList[5]; 294 295 326 extern double g_dDeltaDCsQuantOffset; 296 327 #endif … … 315 346 #if INTRA_DST_TYPE_7 316 347 extern const short g_as_DST_MAT_4 [4][4]; 317 #if ADD_PLANAR_MODE && !HHI_DMM_INTRA 348 #if ADD_PLANAR_MODE 349 #if HHI_DMM_WEDGE_INTRA && HHI_DMM_PRED_TEX 350 extern const UChar g_aucDCTDSTMode_Vert[NUM_INTRA_MODE+8]; 351 extern const UChar g_aucDCTDSTMode_Hor[NUM_INTRA_MODE+8]; 352 #elif HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 353 extern const UChar g_aucDCTDSTMode_Vert[NUM_INTRA_MODE+4]; 354 extern const UChar g_aucDCTDSTMode_Hor[NUM_INTRA_MODE+4]; 355 #else 318 356 extern const UChar g_aucDCTDSTMode_Vert[NUM_INTRA_MODE]; 319 357 extern const UChar g_aucDCTDSTMode_Hor[NUM_INTRA_MODE]; 320 #elif !ADD_PLANAR_MODE && HHI_DMM_INTRA 321 extern const UChar g_aucDCTDSTMode_Vert[34+NUM_DMM_INTRA]; 322 extern const UChar g_aucDCTDSTMode_Hor[34+NUM_DMM_INTRA]; 323 #elif ADD_PLANAR_MODE && HHI_DMM_INTRA 324 extern const UChar g_aucDCTDSTMode_Vert[NUM_INTRA_MODE+NUM_DMM_INTRA]; 325 extern const UChar g_aucDCTDSTMode_Hor[NUM_INTRA_MODE+NUM_DMM_INTRA]; 358 #endif 359 #else 360 #if HHI_DMM_WEDGE_INTRA && HHI_DMM_PRED_TEX 361 extern const UChar g_aucDCTDSTMode_Vert[34+8]; 362 extern const UChar g_aucDCTDSTMode_Hor[34+8]; 363 #elif HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 364 extern const UChar g_aucDCTDSTMode_Vert[34+4]; 365 extern const UChar g_aucDCTDSTMode_Hor[34+4]; 326 366 #else 327 367 extern const UChar g_aucDCTDSTMode_Vert[34]; … … 329 369 #endif 330 370 #endif 371 #endif 331 372 // ========================================== 332 373 … … 334 375 // Misc. 335 376 // ==================================================================================================================== 336 #if SB_DEBUG337 extern Bool g_bEncoding ;338 #endif339 377 340 378 #if QC_MOD_LCEC … … 500 538 __inline Void mapPlanartoDC( Int& curDir ) { curDir = (curDir == PLANAR_IDX) ? 2 : curDir; } 501 539 #endif 502 #if HHI_DMM_ INTRA540 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 503 541 __inline Void mapDMMtoDC( UChar& curDir ) { curDir = (curDir > MAX_MODE_ID_INTRA_DIR) ? 2 : curDir; } 504 542 __inline Void mapDMMtoDC( UInt& curDir ) { curDir = (curDir > MAX_MODE_ID_INTRA_DIR) ? 2 : curDir; } -
trunk/source/Lib/TLibCommon/TComSlice.cpp
r2 r5 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-2011, 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 35 1 36 /** \file TComSlice.cpp 2 37 \brief slice header and SPS class … … 17 52 m_aiNumRefIdx[1] = 0; 18 53 m_bLoopFilterDisable = false; 19 54 20 55 m_iSliceQpDelta = 0; 21 56 22 57 m_iDepth = 0; 23 58 24 59 m_pcPic = NULL; 25 60 m_bRefenced = false; … … 28 63 #endif 29 64 m_uiColDir = 0; 30 65 31 66 m_iViewIdx = 0 ; 32 67 … … 36 71 m_bRefIdxCombineCoding = false; 37 72 #endif 38 #if DCM_COMB_LIST 73 #if DCM_COMB_LIST 39 74 m_bRefPicListCombinationFlag = false; 40 75 m_bRefPicListModificationFlagLC = false; … … 61 96 m_aiNumRefIdx[0] = 0; 62 97 m_aiNumRefIdx[1] = 0; 63 98 64 99 m_uiColDir = 0; 65 100 … … 67 102 ::memset( m_aiNumRefIdx, 0, sizeof ( m_aiNumRefIdx )); 68 103 m_pcTexturePic = NULL; 69 104 70 105 initEqualRef(); 71 106 m_bNoBackPredFlag = false; … … 73 108 m_bRefIdxCombineCoding = false; 74 109 #endif 75 #if DCM_COMB_LIST 110 #if DCM_COMB_LIST 76 111 m_bRefPicListCombinationFlag = false; 77 112 m_bRefPicListModificationFlagLC = false; … … 83 118 TComPic* pcPicExtract; 84 119 TComPic* pcPicInsert; 85 120 86 121 TComList<TComPic*>::iterator iterPicExtract; 87 122 TComList<TComPic*>::iterator iterPicExtract_1; 88 123 TComList<TComPic*>::iterator iterPicInsert; 89 124 90 125 for (Int i = 1; i < (Int)(rcListPic.size()); i++) 91 126 { … … 94 129 pcPicExtract = *(iterPicExtract); 95 130 pcPicExtract->setCurrSliceIdx(0); 96 131 97 132 iterPicInsert = rcListPic.begin(); 98 133 while (iterPicInsert != iterPicExtract) … … 104 139 break; 105 140 } 106 141 107 142 iterPicInsert++; 108 143 } 109 144 110 145 iterPicExtract_1 = iterPicExtract; iterPicExtract_1++; 111 146 112 147 // swap iterPicExtract and iterPicInsert, iterPicExtract = curr. / iterPicInsert = insertion position 113 148 rcListPic.insert (iterPicInsert, iterPicExtract, iterPicExtract_1); … … 128 163 } 129 164 130 #if DCM_COMB_LIST 165 #if DCM_COMB_LIST 131 166 Void TComSlice::generateCombinedList() 132 167 { … … 162 197 163 198 if(bTempRefIdxInL2 == true) 164 { 199 { 165 200 m_eListIdFromIdxOfLC[m_aiNumRefIdx[REF_PIC_LIST_C]] = REF_PIC_LIST_0; 166 201 m_iRefIdxFromIdxOfLC[m_aiNumRefIdx[REF_PIC_LIST_C]] = iNumRefIdx; … … 346 381 * \param rcListPic reference to the reference picture list 347 382 * This function marks the reference pictures as "unused for reference" in the following conditions. 348 * If the nal_unit_type is IDR all pictures in the reference picture list 349 * is marked as "unused for reference" 383 * If the nal_unit_type is IDR all pictures in the reference picture list 384 * is marked as "unused for reference" 350 385 * Otherwise do for the CDR case (non CDR case has no effect since both if conditions below will not be true) 351 * If the bRefreshPending flag is true (a deferred decoding refresh is pending) and the current 352 * temporal reference is greater than the temporal reference of the latest CDR picture (uiPOCCDR), 353 * mark all reference pictures except the latest CDR picture as "unused for reference" and set 386 * If the bRefreshPending flag is true (a deferred decoding refresh is pending) and the current 387 * temporal reference is greater than the temporal reference of the latest CDR picture (uiPOCCDR), 388 * mark all reference pictures except the latest CDR picture as "unused for reference" and set 354 389 * the bRefreshPending flag to false. 355 * If the nal_unit_type is CDR, set the bRefreshPending flag to true and iPOCCDR to the temporal 390 * If the nal_unit_type is CDR, set the bRefreshPending flag to true and iPOCCDR to the temporal 356 391 * reference of the current picture. 357 392 * Note that the current picture is already placed in the reference list and its marking is not changed. … … 361 396 { 362 397 TComPic* rpcPic; 363 UInt uiPOCCurr = getPOC(); 398 UInt uiPOCCurr = getPOC(); 364 399 365 400 if (getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR) // IDR … … 377 412 else // CDR or No DR 378 413 { 379 if (bRefreshPending==true && uiPOCCurr > uiPOCCDR) // CDR reference marking pending 414 if (bRefreshPending==true && uiPOCCurr > uiPOCCDR) // CDR reference marking pending 380 415 { 381 416 TComList<TComPic*>::iterator iterPic = rcListPic.begin(); … … 386 421 iterPic++; 387 422 } 388 bRefreshPending = false; 423 bRefreshPending = false; 389 424 } 390 425 if (getNalUnitType() == NAL_UNIT_CODED_SLICE_CDR) // CDR picture found 391 426 { 392 bRefreshPending = true; 427 bRefreshPending = true; 393 428 uiPOCCDR = uiPOCCurr; 394 429 } … … 407 442 #if DCM_DECODING_REFRESH 408 443 m_eNalUnitType = pSrc->m_eNalUnitType; 409 #endif 444 #endif 410 445 m_eSliceType = pSrc->m_eSliceType; 411 446 m_iSliceQp = pSrc->m_iSliceQp; 412 447 m_iSymbolMode = pSrc->m_iSymbolMode; 413 448 m_bLoopFilterDisable = pSrc->m_bLoopFilterDisable; 414 415 #if DCM_COMB_LIST 449 450 #if DCM_COMB_LIST 416 451 for (i = 0; i < 3; i++) 417 452 { … … 440 475 m_aiNumRefIdx[i] = pSrc->m_aiNumRefIdx[i]; 441 476 } 442 #endif 477 #endif 443 478 444 479 m_iSliceQpDelta = pSrc->m_iSliceQpDelta; … … 451 486 m_aiRefViewList[i][j] = pSrc->m_aiRefViewList[i][j]; 452 487 } 453 } 488 } 454 489 m_iDepth = pSrc->m_iDepth; 455 490 … … 489 524 m_uiSliceIdx = pSrc->m_uiSliceIdx; 490 525 m_uiEntropySliceMode = pSrc->m_uiEntropySliceMode; 491 m_uiEntropySliceArgument = pSrc->m_uiEntropySliceArgument; 526 m_uiEntropySliceArgument = pSrc->m_uiEntropySliceArgument; 492 527 m_uiEntropySliceCurStartCUAddr = pSrc->m_uiEntropySliceCurStartCUAddr; 493 528 m_uiEntropySliceCurEndCUAddr = pSrc->m_uiEntropySliceCurEndCUAddr; … … 534 569 } 535 570 536 // Default WP values settings : no weight. 571 // Default WP values settings : no weight. 537 572 Void TComSlice::resetWpScaling(wpScalingParam wp[2][MAX_NUM_REF][3]) 538 573 { … … 608 643 m_uiMaxTrDepth = 1; 609 644 m_uiMaxTrSize = 32; 610 645 611 646 // Tool list 612 647 m_bUseALF = false; 613 648 m_bUseDQP = false; 614 649 615 650 m_bUseMRG = false; // SOPH: 651 #if HHI_MPI 616 652 m_bUseMVI = false; 617 653 #endif 654 618 655 m_uiViewId = 0; 619 656 m_iViewOrderIdx = 0; … … 624 661 ::memset( m_aaiCodedOffset, 0x00, sizeof( m_aaiCodedOffset ) ); 625 662 663 #if DEPTH_MAP_GENERATION 626 664 m_uiPredDepthMapGeneration = 0; 627 m_uiMultiviewMvPredMode = 0;628 665 m_uiPdmPrecision = 0; 629 666 ::memset( m_aiPdmScaleNomDelta, 0x00, sizeof( m_aiPdmScaleNomDelta ) ); 630 667 ::memset( m_aiPdmOffset, 0x00, sizeof( m_aiPdmOffset ) ); 668 #endif 669 #if HHI_INTER_VIEW_MOTION_PRED 670 m_uiMultiviewMvPredMode = 0; 671 #endif 672 #if HHI_INTER_VIEW_RESIDUAL_PRED 631 673 m_uiMultiviewResPredMode = 0; 674 #endif 632 675 633 676 // AMVP parameter 634 677 ::memset( m_aeAMVPMode, 0, sizeof( m_aeAMVPMode ) ); 635 #if SB_MEM_FIX 636 m_bUseDepthModelModes = false; 637 #endif 678 m_bUseDMM = false; 638 679 } 639 680 … … 697 738 698 739 740 #if DEPTH_MAP_GENERATION 699 741 Void 700 742 TComSPS::setPredDepthMapGeneration( UInt uiViewId, Bool bIsDepth, UInt uiPdmGenMode, UInt uiPdmMvPredMode, UInt uiPdmPrec, Int** aaiPdmScaleNomDelta, Int** aaiPdmOffset ) 701 { 743 { 702 744 AOF( m_uiViewId == uiViewId ); 703 745 AOF( m_bDepth == bIsDepth ); … … 705 747 AOT( uiPdmGenMode && ( aaiPdmScaleNomDelta == 0 || aaiPdmOffset == 0 ) ); 706 748 AOT( uiPdmMvPredMode && uiPdmGenMode == 0 ); 707 749 708 750 m_uiPredDepthMapGeneration = uiPdmGenMode; 751 #if HHI_INTER_VIEW_MOTION_PRED 709 752 m_uiMultiviewMvPredMode = uiPdmMvPredMode; 753 #endif 710 754 m_uiPdmPrecision = ( m_uiPredDepthMapGeneration ? uiPdmPrec : 0 ); 711 755 ::memset( m_aiPdmScaleNomDelta, 0x00, sizeof( m_aiPdmScaleNomDelta ) ); … … 720 764 } 721 765 } 722 766 #endif -
trunk/source/Lib/TLibCommon/TComSlice.h
r2 r5 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-2011, 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 1 34 2 35 … … 17 50 18 51 class TComPic; 52 #if DEPTH_MAP_GENERATION 19 53 class TComDepthMapGenerator; 54 #endif 55 #if HHI_INTER_VIEW_RESIDUAL_PRED 20 56 class TComResidualGenerator; 57 #endif 21 58 22 59 // ==================================================================================================================== … … 38 75 UInt m_uiMinTrDepth; 39 76 UInt m_uiMaxTrDepth; 40 77 41 78 UInt m_uiViewId; 42 79 Int m_iViewOrderIdx; … … 54 91 Bool m_bUseALF; 55 92 Bool m_bUseDQP; 56 #if ! SB_NO_LowDelayCoding93 #if !HHI_NO_LowDelayCoding 57 94 Bool m_bUseLDC; 58 95 #endif … … 60 97 Bool m_bUseMRG; // SOPH: 61 98 62 #if LM_CHROMA 99 #if LM_CHROMA 63 100 Bool m_bUseLMChroma; // JL: 64 101 #endif … … 68 105 Bool m_bLCMod; 69 106 #endif 70 107 71 108 #if HHI_RMP_SWITCH 72 109 Bool m_bUseRMP; … … 76 113 UInt m_uiBitDepth; 77 114 UInt m_uiBitIncrement; 78 115 79 116 // Max physical transform size 80 117 UInt m_uiMaxTrSize; 81 118 82 119 Int m_iAMPAcc[MAX_CU_DEPTH]; 83 120 … … 86 123 #endif 87 124 #if MTK_SAO 88 Bool m_bUseSAO; 89 #endif 125 Bool m_bUseSAO; 126 #endif 127 #if HHI_MPI 90 128 Bool m_bUseMVI; 129 #endif 91 130 92 131 UInt m_uiCodedPictureBufferSize ; 93 132 94 #if HHI_DMM_INTRA 95 Bool m_bUseDepthModelModes; 96 #endif 97 133 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 134 Bool m_bUseDMM; 135 #endif 136 137 #if DEPTH_MAP_GENERATION 98 138 UInt m_uiPredDepthMapGeneration; 99 UInt m_uiMultiviewMvPredMode;100 139 UInt m_uiPdmPrecision; 101 140 Int m_aiPdmScaleNomDelta[MAX_NUMBER_VIEWS]; 102 141 Int m_aiPdmOffset [MAX_NUMBER_VIEWS]; 142 #endif 143 #if HHI_INTER_VIEW_MOTION_PRED 144 UInt m_uiMultiviewMvPredMode; 145 #endif 146 #if HHI_INTER_VIEW_RESIDUAL_PRED 103 147 UInt m_uiMultiviewResPredMode; 104 148 #endif 149 150 #if DEPTH_MAP_GENERATION 105 151 TComDepthMapGenerator* m_pcDepthMapGenerator; 152 #endif 153 #if HHI_INTER_VIEW_RESIDUAL_PRED 106 154 TComResidualGenerator* m_pcResidualGenerator; 155 #endif 107 156 108 157 public: 109 158 TComSPS(); 110 159 virtual ~TComSPS(); 111 160 112 161 // structure 113 162 Void setSPSId ( UInt u ) { m_uiSPSId = u; } … … 140 189 Int getPad ( Int u ) { assert(u < 2); return m_aiPad[u];} 141 190 Int* getPad ( ) { return m_aiPad; } 142 191 143 192 Void initMultiviewSPS ( UInt uiViewId, Int iViewOrderIdx = 0, UInt uiCamParPrecision = 0, Bool bCamParSlice = false, Int** aaiScale = 0, Int** aaiOffset = 0 ); 144 193 Void initMultiviewSPSDepth ( UInt uiViewId, Int iViewOrderIdx ); … … 157 206 Void setMaxTrSize ( UInt u ) { m_uiMaxTrSize = u; } 158 207 UInt getMaxTrSize () { return m_uiMaxTrSize; } 159 208 160 209 // Tool list 161 210 Bool getUseALF () { return m_bUseALF; } 162 211 Bool getUseDQP () { return m_bUseDQP; } 163 164 #if ! SB_NO_LowDelayCoding212 213 #if !HHI_NO_LowDelayCoding 165 214 Bool getUseLDC () { return m_bUseLDC; } 166 215 #endif 167 216 Bool getUsePAD () { return m_bUsePAD; } 168 217 Bool getUseMRG () { return m_bUseMRG; } // SOPH: 169 218 170 219 Void setUseALF ( Bool b ) { m_bUseALF = b; } 171 220 Void setUseDQP ( Bool b ) { m_bUseDQP = b; } 172 173 #if ! SB_NO_LowDelayCoding221 222 #if !HHI_NO_LowDelayCoding 174 223 Void setUseLDC ( Bool b ) { m_bUseLDC = b; } 175 224 #endif … … 177 226 Void setUseMRG ( Bool b ) { m_bUseMRG = b; } // SOPH: 178 227 179 #if HHI_DMM_ INTRA180 Bool getUseD epthModelModes() { return m_bUseDepthModelModes; }181 Void setUseD epthModelModes( Bool b ) { m_bUseDepthModelModes= b; }228 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 229 Bool getUseDMM() { return m_bUseDMM; } 230 Void setUseDMM( Bool b ) { m_bUseDMM = b; } 182 231 #endif 183 232 … … 194 243 Void setUseRMP ( Bool b ) { m_bUseRMP = b; } 195 244 #endif 196 197 #if LM_CHROMA 245 246 #if LM_CHROMA 198 247 Bool getUseLMChroma () { return m_bUseLMChroma; } 199 248 Void setUseLMChroma ( Bool b ) { m_bUseLMChroma = b; } … … 203 252 AMVP_MODE getAMVPMode ( UInt uiDepth ) { assert(uiDepth < g_uiMaxCUDepth); return m_aeAMVPMode[uiDepth]; } 204 253 Void setAMVPMode ( UInt uiDepth, AMVP_MODE eMode) { assert(uiDepth < g_uiMaxCUDepth); m_aeAMVPMode[uiDepth] = eMode; } 205 254 206 255 // Bit-depth 207 256 UInt getBitDepth () { return m_uiBitDepth; } … … 212 261 #if MTK_NONCROSS_INLOOP_FILTER 213 262 Void setLFCrossSliceBoundaryFlag ( Bool bValue ) { m_bLFCrossSliceBoundaryFlag = bValue; } 214 Bool getLFCrossSliceBoundaryFlag () { return m_bLFCrossSliceBoundaryFlag; } 263 Bool getLFCrossSliceBoundaryFlag () { return m_bLFCrossSliceBoundaryFlag; } 215 264 #endif 216 265 … … 220 269 #endif 221 270 271 #if HHI_MPI 222 272 Void setUseMVI (Bool bVal) {m_bUseMVI = bVal;} 223 273 Bool getUseMVI () {return m_bUseMVI;} 274 #endif 224 275 225 276 Void setCodedPictureBufferSize( UInt u ) { m_uiCodedPictureBufferSize = u ;} 226 277 UInt getCodedPictureBufferSize( ) { return m_uiCodedPictureBufferSize ;} 227 278 279 #if DEPTH_MAP_GENERATION 228 280 Void setPredDepthMapGeneration( UInt uiViewId, Bool bIsDepth, UInt uiPdmGenMode = 0, UInt uiPdmMvPredMode = 0, UInt uiPdmPrec = 0, Int** aaiPdmScaleNomDelta = 0, Int** aaiPdmOffset = 0 ); 281 #endif 282 #if HHI_INTER_VIEW_RESIDUAL_PRED 229 283 Void setMultiviewResPredMode ( UInt uiResPrdMode ) { m_uiMultiviewResPredMode = uiResPrdMode; } 230 284 #endif 285 286 #if DEPTH_MAP_GENERATION 231 287 UInt getPredDepthMapGeneration() { return m_uiPredDepthMapGeneration; } 232 UInt getMultiviewMvPredMode () { return m_uiMultiviewMvPredMode; }233 288 UInt getPdmPrecision () { return m_uiPdmPrecision; } 234 289 Int* getPdmScaleNomDelta () { return m_aiPdmScaleNomDelta; } 235 290 Int* getPdmOffset () { return m_aiPdmOffset; } 291 #endif 292 #if HHI_INTER_VIEW_MOTION_PRED 293 UInt getMultiviewMvPredMode () { return m_uiMultiviewMvPredMode; } 294 #endif 295 #if HHI_INTER_VIEW_RESIDUAL_PRED 236 296 UInt getMultiviewResPredMode () { return m_uiMultiviewResPredMode; } 237 297 #endif 298 299 #if DEPTH_MAP_GENERATION 238 300 Void setDepthMapGenerator( TComDepthMapGenerator* pcDepthMapGenerator ) { m_pcDepthMapGenerator = pcDepthMapGenerator; } 239 301 TComDepthMapGenerator* getDepthMapGenerator() { return m_pcDepthMapGenerator; } 240 302 #endif 303 #if HHI_INTER_VIEW_RESIDUAL_PRED 241 304 Void setResidualGenerator( TComResidualGenerator* pcResidualGenerator ) { m_pcResidualGenerator = pcResidualGenerator; } 242 305 TComResidualGenerator* getResidualGenerator() { return m_pcResidualGenerator; } 306 #endif 243 307 }; 244 308 … … 256 320 UInt m_uiPPSId; 257 321 UInt m_uiSPSId; 258 322 259 323 public: 260 324 TComPPS(); 261 325 virtual ~TComPPS(); 262 326 263 327 Void setPPSId ( UInt u ) { m_uiPPSId = u; } 264 328 UInt getPPSId () { return m_uiPPSId; } … … 301 365 class TComSlice 302 366 { 303 367 304 368 private: 305 369 // Bitstream writing … … 313 377 Int m_iSymbolMode; 314 378 Bool m_bLoopFilterDisable; 315 379 316 380 #if DCM_COMB_LIST 317 381 Int m_aiNumRefIdx [3]; // for multiple reference of current slice … … 326 390 #else 327 391 Int m_aiNumRefIdx [2]; // for multiple reference of current slice 328 #endif 392 #endif 329 393 330 394 // Data … … 334 398 Int m_iDepth; 335 399 TComPic* m_pcTexturePic; 336 400 337 401 // referenced slice? 338 402 Bool m_bRefenced; … … 340 404 Bool m_bRounding; 341 405 #endif 342 406 343 407 // access channel 344 408 TComSPS* m_pcSPS; 345 409 TComPPS* m_pcPPS; 346 410 TComPic* m_pcPic; 347 411 348 412 UInt m_uiColDir; // direction to get colocated CUs 349 413 350 414 Double m_dLambda; 351 415 352 416 Bool m_abEqualRef [2][MAX_NUM_REF][MAX_NUM_REF]; 353 417 354 // SB355 418 Int m_iViewIdx; 356 419 Int m_aiRefViewList[2][MAX_INPUT_VIEW_NUM]; 357 420 358 421 Bool m_bNoBackPredFlag; 359 422 #if MS_LCEC_LOOKUP_TABLE_EXCEPTION … … 381 444 wpACDCParam m_weightACDCParam[3]; // [0:Y, 1:U, 2:V] 382 445 #endif 383 446 384 447 public: 385 448 TComSlice(); 386 449 virtual ~TComSlice(); 387 450 388 451 Void initSlice (); 389 452 390 453 Void setSPS ( TComSPS* pcSPS ) { m_pcSPS = pcSPS; } 391 454 TComSPS* getSPS () { return m_pcSPS; } 392 455 393 456 Void setPPS ( TComPPS* pcPPS ) { m_pcPPS = pcPPS; } 394 457 TComPPS* getPPS () { return m_pcPPS; } 395 458 396 459 UInt getPPSId () { return m_uiPPSId; } 397 460 SliceType getSliceType () { return m_eSliceType; } … … 407 470 Int getDepth () { return m_iDepth; } 408 471 UInt getColDir () { return m_uiColDir; } 409 410 #if DCM_COMB_LIST 472 473 #if DCM_COMB_LIST 411 474 Int getRefIdxOfLC (RefPicList e, Int iRefIdx) { return m_iRefIdxOfLC[e][iRefIdx]; } 412 475 Int getListIdFromIdxOfLC(Int iRefIdx) { return m_eListIdFromIdxOfLC[iRefIdx]; } … … 415 478 Int getRefIdxOfL1FromRefIdxOfL0(Int iRefIdx) { return m_iRefIdxOfL1FromRefIdxOfL0[iRefIdx];} 416 479 Bool getRefPicListModificationFlagLC() {return m_bRefPicListModificationFlagLC;} 417 Void setRefPicListModificationFlagLC(Bool bflag) {m_bRefPicListModificationFlagLC=bflag;} 480 Void setRefPicListModificationFlagLC(Bool bflag) {m_bRefPicListModificationFlagLC=bflag;} 418 481 Bool getRefPicListCombinationFlag() {return m_bRefPicListCombinationFlag;} 419 Void setRefPicListCombinationFlag(Bool bflag) {m_bRefPicListCombinationFlag=bflag;} 482 Void setRefPicListCombinationFlag(Bool bflag) {m_bRefPicListCombinationFlag=bflag;} 420 483 Void setListIdFromIdxOfLC(Int iRefIdx, UInt uiVal) { m_eListIdFromIdxOfLC[iRefIdx]=uiVal; } 421 484 Void setRefIdxFromIdxOfLC(Int iRefIdx, UInt uiVal) { m_iRefIdxFromIdxOfLC[iRefIdx]=uiVal; } … … 429 492 Bool isRounding() { return m_bRounding; } 430 493 #endif 431 494 432 495 Void setPPSId ( UInt u ) { m_uiPPSId = u; } 433 496 Void setPOC ( Int i ) { m_iPOC = i; } … … 442 505 Void setSymbolMode ( Int b ) { m_iSymbolMode = b; } 443 506 Void setLoopFilterDisable( Bool b ) { m_bLoopFilterDisable= b; } 444 507 445 508 Void setRefPic ( TComPic* p, RefPicList e, Int iRefIdx ) { m_apcRefPicList[e][iRefIdx] = p; } 446 509 Void setRefPOC ( Int i, RefPicList e, Int iRefIdx ) { m_aiRefPOCList[e][iRefIdx] = i; } … … 448 511 Void setPic ( TComPic* p ) { m_pcPic = p; } 449 512 Void setDepth ( Int iDepth ) { m_iDepth = iDepth; } 450 513 451 514 Void setRefPicList ( TComList<TComPic*>& rcListPic ); 452 515 Void setRefPOCList (); 453 516 Void setColDir ( UInt uiDir ) { m_uiColDir = uiDir; } 454 517 455 518 Void setRefPicListFromGOPSTring( TComList<TComPic*>& rcListPic, std::vector<TComPic*>& rapcSpatRefPics ); 456 519 Void setRefPicListExplicitlyDecoderSided( TComList<TComPic*>& rcListPic, std::vector<TComPic*>& rapcSpatRefPics ); … … 459 522 Bool isInterB () { return m_eSliceType == B_SLICE; } 460 523 Bool isInterP () { return m_eSliceType == P_SLICE; } 461 524 462 525 Void setLambda( Double d ) { m_dLambda = d; } 463 526 Double getLambda() { return m_dLambda; } 464 465 //SB 527 466 528 Void setViewIdx(Int i) { m_iViewIdx = i; } 467 529 Int getViewIdx() { return m_iViewIdx; } … … 476 538 return m_abEqualRef[e][iRefIdx1][iRefIdx2]; 477 539 } 478 540 479 541 Void setEqualRef( RefPicList e, Int iRefIdx1, Int iRefIdx2, Bool b) 480 542 { 481 543 m_abEqualRef[e][iRefIdx1][iRefIdx2] = m_abEqualRef[e][iRefIdx2][iRefIdx1] = b; 482 544 } 483 545 484 546 static Void sortPicList ( TComList<TComPic*>& rcListPic ); 485 547 486 548 Bool getNoBackPredFlag() { return m_bNoBackPredFlag; } 487 549 Void setNoBackPredFlag( Bool b ) { m_bNoBackPredFlag = b; } … … 517 579 Bool isNextEntropySlice () { return m_bNextEntropySlice; } 518 580 Void setSliceBits ( UInt uiVal ) { m_uiSliceBits = uiVal; } 519 UInt getSliceBits () { return m_uiSliceBits; } 520 581 UInt getSliceBits () { return m_uiSliceBits; } 582 521 583 Void initMultiviewSlice ( Int** aaiScale = 0, Int** aaiOffset = 0 ); 522 584 … … 537 599 Void initWpScaling(); 538 600 inline Bool applyWP() { return( (m_eSliceType==P_SLICE && m_pcPPS->getUseWP()) || (m_eSliceType==B_SLICE && m_pcPPS->getWPBiPredIdc()) ); } 539 601 540 602 Void setWpAcDcParam ( wpACDCParam wp[3] ) { memcpy(m_weightACDCParam, wp, sizeof(wpACDCParam)*3); } 541 603 Void getWpAcDcParam ( wpACDCParam *&wp ); … … 552 614 UInt uiNthRefPic ); 553 615 #endif 554 616 555 617 };// END CLASS DEFINITION TComSlice 556 618 -
trunk/source/Lib/TLibCommon/TComTrQuant.cpp
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibCommon/TComTrQuant.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibCommon/TComWedgelet.cpp
r2 r5 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-2011, 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 1 34 2 35 … … 107 140 } 108 141 109 #if HHI_DMM_ INTRA142 #if HHI_DMM_WEDGE_INTRA 110 143 Bool TComWedgelet::checkPredDirAbovePossible( UInt uiPredDirBlockSize, UInt uiPredDirBlockOffset ) 111 144 { -
trunk/source/Lib/TLibCommon/TComWedgelet.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibCommon/TComWeightPrediction.cpp
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibCommon/TComYuv.cpp
r2 r5 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-2011, 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 1 34 2 35 … … 321 354 } 322 355 323 //GT VSO324 356 Void TComYuv::addClipPartLuma( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiTrUnitIdx, UInt uiPartSize ) 325 357 { … … 344 376 } 345 377 } 346 //GT VSO end347 348 378 349 379 Void … … 918 948 return m_apiBufV + (iBlkX + iBlkY * getCStride()) * iBlkSize; 919 949 } 920 921 #if HHI_DMM_INTRA922 UInt64 TComYuv::getLumaDistDCSAD( UInt uiPartUnitIdx, UInt iBlkSize )923 {924 UInt iBlkX;925 UInt iBlkY;926 iBlkX = g_auiRasterToPelX[g_auiZscanToRaster[uiPartUnitIdx]];927 iBlkY = g_auiRasterToPelY[g_auiZscanToRaster[uiPartUnitIdx]];928 929 Pel* piAct = m_apiBufY + iBlkY*getStride() + iBlkX;930 931 Int iDC = 0;932 for( UInt uiY = 0; uiY < iBlkSize; uiY++ )933 {934 for( UInt uiX = 0; uiX < iBlkSize; uiX++ )935 {936 iDC += piAct[uiX];937 }938 piAct += getStride();939 }940 iDC /= (iBlkSize*iBlkSize);941 942 piAct = m_apiBufY + iBlkY*getStride() + iBlkX;943 944 UInt64 uiDistSAD = 0;945 946 for( UInt uiY = 0; uiY < iBlkSize; uiY++ )947 {948 for( UInt uiX = 0; uiX < iBlkSize; uiX++ )949 {950 uiDistSAD += abs( piAct[uiX] - iDC );951 }952 piAct += getStride();953 }954 955 uiDistSAD /= ( iBlkSize * iBlkSize );956 957 return uiDistSAD;958 }959 960 UInt64 TComYuv::getLumaDistDCSAD( UInt iBlkSize )961 {962 Pel* piAct = m_apiBufY;963 964 Int iDC = 0;965 for( UInt uiY = 0; uiY < iBlkSize; uiY++ )966 {967 for( UInt uiX = 0; uiX < iBlkSize; uiX++ )968 {969 iDC += piAct[uiX];970 }971 piAct += getStride();972 }973 iDC /= (iBlkSize*iBlkSize);974 975 piAct = m_apiBufY;976 977 UInt64 uiDistSAD = 0;978 979 for( UInt uiY = 0; uiY < iBlkSize; uiY++ )980 {981 for( UInt uiX = 0; uiX < iBlkSize; uiX++ )982 {983 uiDistSAD += abs( piAct[uiX] - iDC );984 }985 piAct += getStride();986 }987 988 uiDistSAD /= ( iBlkSize * iBlkSize );989 990 return uiDistSAD;991 }992 #endif993 -
trunk/source/Lib/TLibCommon/TComYuv.h
r2 r5 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-2011, 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 1 34 2 35 … … 89 122 Void addClipLuma ( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiTrUnitIdx, UInt uiPartSize ); 90 123 Void addClipChroma ( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiTrUnitIdx, UInt uiPartSize ); 91 //GT VSO92 124 Void addClipPartLuma ( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiTrUnitIdx, UInt uiPartSize ); //GT 93 //GT VSO end 125 94 126 95 127 // pcYuvSrc0 - pcYuvSrc1 -> m_apiBuf … … 152 184 __inline Pel xClip (Pel x ) { return ( (x < 0) ? 0 : (x > (Pel)g_uiIBDI_MAX) ? (Pel)g_uiIBDI_MAX : x ); } 153 185 154 #if HHI_DMM_INTRA155 UInt64 getLumaDistDCSAD( UInt uiPartUnitIdx, UInt iBlkSize );156 UInt64 getLumaDistDCSAD( UInt iBlkSize );157 #endif158 159 186 };// END CLASS DEFINITION TComYuv 160 187 -
trunk/source/Lib/TLibCommon/TypeDef.h
r2 r5 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-2011, 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 1 34 /** \file TypeDef.h 2 35 \brief Define basic types, new types and enumerations … … 6 39 #define _TYPEDEF__ 7 40 8 #define MW_DEPTH_MAP_INTERP_FILTER 2 // 0:std, 1:bilin, 2:nearest neighbour 9 #define MW_FULL_PEL_DEPTH_MAP_MV_SIGNALLING 1 10 #define MW_MVI_SIGNALLING_MODE 1 // 0: mvi_flags at each layer, 1: using merge_flag 11 #define SB_DEBUG 1 41 42 //>>>>> HHI 3DV tools >>>>> 43 #define HHI_INTER_VIEW_MOTION_PRED 1 // inter-view motion parameter prediction 44 #define HHI_INTER_VIEW_RESIDUAL_PRED 1 // inter-view residual prediction 45 #define HHI_FULL_PEL_DEPTH_MAP_MV_ACC 1 // full-pel mv accuracy for depth maps 46 #define HHI_MPI 1 // motion parameter inheritance from texture picture for depth map coding 47 #define HHI_INTERVIEW_SKIP 1 // skipping of residual for renderable regions 48 #define HHI_INTERVIEW_SKIP_LAMBDA_SCALE 1 // scaling of lambda in cost calculation in rederable regions 49 #define HHI_VSO 1 // view synthesis optimization 50 #define HHI_VSO_COLOR_PLANES 1 // view synthesis optimization in color planes 51 #define HHI_VSO_DIST_INT 1 // view synthesis optimization integer distorition in rdo process 52 53 #if HHI_INTERVIEW_SKIP_LAMBDA_SCALE && !HHI_INTERVIEW_SKIP 54 #error "HHI_INTERVIEW_SKIP_LAMBDA_SCALE cannot be enabled if HHI_INTERVIEW_SKIP is not" 55 #endif 56 57 #define HHI_DMM_WEDGE_INTRA 1 // depth model modes independent on texture (explicit and intra-predicted Wedgelet prediction) 58 #define HHI_DMM_PRED_TEX 1 // depth model model dependent on texture (inter-component Wedgelet and Contour prediction ) 59 60 #define HHI_NO_LowDelayCoding 0 // old-fashioned encoder control, should be adapted to hm5.0 61 //<<<<< HHI 3DV tools <<<<< 62 12 63 13 64 //////////////////////////// … … 42 93 #define PART_MRG 1 // If the number of partitions is two and size > 8, only merging mode is enabled for the first partition & do not code merge_flag for the first partition 43 94 #define HHI_MRG_SKIP 1 // (JCTVC-E481 - merge skip) replaces the AMVP based skip by merge based skip (E481 - MERGE skip) 44 45 #define HHI_DMM_INTRA 1 //< PM: depth modelling modes for intra46 #if HHI_DMM_INTRA47 #define NUM_DMM_INTRA 848 #define DMM_INTRA_MODE_BITS 349 #define DMM_WEDGEMODEL_MIN_SIZE 4 //< PM: do not change50 #define DMM_WEDGEMODEL_MAX_SIZE 3251 #define DMM_WEDGE_PREDDIR_DELTAEND_MAX 4 //< PM: do not change52 #define DMM_RES_CHECK_INTRA 1 //< CB: skip residual for intra blocks53 #define HHI_DISABLE_INTRA_SMOOTHING_DEPTH 054 #define DMM_NO_TEXTURE_MODES 055 #endif56 95 57 96 #if HHI_RQT_INTRA_SPEEDUP_MOD && !HHI_RQT_INTRA_SPEEDUP … … 150 189 #define PLANAR_IDX (NUM_INTRA_MODE-1) 151 190 #endif 152 #if HHI_DMM_INTRA 191 192 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 193 #define DMM_WEDGEMODEL_MIN_SIZE 4 194 #define DMM_WEDGEMODEL_MAX_SIZE 32 195 #define DMM_WEDGE_PREDDIR_DELTAEND_MAX 4 196 153 197 #if ADD_PLANAR_MODE 154 198 #define MAX_MODE_ID_INTRA_DIR 34 199 #else 200 #define MAX_MODE_ID_INTRA_DIR 33 201 #endif 202 #if HHI_DMM_WEDGE_INTRA && HHI_DMM_PRED_TEX 155 203 enum MODE_IDX 156 204 { 157 DMM_WEDGE_FULL_IDX = 35, 158 DMM_WEDGE_FULL_D_IDX = 36, 159 DMM_WEDGE_PREDTEX_IDX = 37, 160 DMM_WEDGE_PREDTEX_D_IDX = 38, 161 DMM_CONTOUR_PREDTEX_IDX = 39, 162 DMM_CONTOUR_PREDTEX_D_IDX = 40, 163 DMM_WEDGE_PREDDIR_IDX = 41, 164 DMM_WEDGE_PREDDIR_D_IDX = 42 165 }; 166 #else 167 #define MAX_MODE_ID_INTRA_DIR 33 205 DMM_WEDGE_FULL_IDX = MAX_MODE_ID_INTRA_DIR+1, 206 DMM_WEDGE_FULL_D_IDX = MAX_MODE_ID_INTRA_DIR+2, 207 DMM_WEDGE_PREDTEX_IDX = MAX_MODE_ID_INTRA_DIR+3, 208 DMM_WEDGE_PREDTEX_D_IDX = MAX_MODE_ID_INTRA_DIR+4, 209 DMM_CONTOUR_PREDTEX_IDX = MAX_MODE_ID_INTRA_DIR+5, 210 DMM_CONTOUR_PREDTEX_D_IDX = MAX_MODE_ID_INTRA_DIR+6, 211 DMM_WEDGE_PREDDIR_IDX = MAX_MODE_ID_INTRA_DIR+7, 212 DMM_WEDGE_PREDDIR_D_IDX = MAX_MODE_ID_INTRA_DIR+8 213 }; 214 #elif HHI_DMM_WEDGE_INTRA && !HHI_DMM_PRED_TEX 168 215 enum MODE_IDX 169 216 { 170 DMM_WEDGE_FULL_IDX = 34, 171 DMM_WEDGE_FULL_D_IDX = 35, 172 DMM_WEDGE_PREDTEX_IDX = 36, 173 DMM_WEDGE_PREDTEX_D_IDX = 37, 174 DMM_CONTOUR_PREDTEX_IDX = 38, 175 DMM_CONTOUR_PREDTEX_D_IDX = 39, 176 DMM_WEDGE_PREDDIR_IDX = 40, 177 DMM_WEDGE_PREDDIR_D_IDX = 41 217 DMM_WEDGE_FULL_IDX = MAX_MODE_ID_INTRA_DIR+1, 218 DMM_WEDGE_FULL_D_IDX = MAX_MODE_ID_INTRA_DIR+2, 219 DMM_WEDGE_PREDDIR_IDX = MAX_MODE_ID_INTRA_DIR+3, 220 DMM_WEDGE_PREDDIR_D_IDX = MAX_MODE_ID_INTRA_DIR+4 221 }; 222 #elif !HHI_DMM_WEDGE_INTRA && HHI_DMM_PRED_TEX 223 enum MODE_IDX 224 { 225 DMM_WEDGE_PREDTEX_IDX = MAX_MODE_ID_INTRA_DIR+1, 226 DMM_WEDGE_PREDTEX_D_IDX = MAX_MODE_ID_INTRA_DIR+2, 227 DMM_CONTOUR_PREDTEX_IDX = MAX_MODE_ID_INTRA_DIR+3, 228 DMM_CONTOUR_PREDTEX_D_IDX = MAX_MODE_ID_INTRA_DIR+4, 178 229 }; 179 230 #endif … … 325 376 typedef Int64 RMDist; ///< renderer model distortion 326 377 327 #define RDO_DIST_INT 1 328 329 #if RDO_DIST_INT 378 #if HHI_VSO_DIST_INT 330 379 typedef Int Dist; ///< RDO distortion 331 380 #define RDO_DIST_MIN MIN_INT -
trunk/source/Lib/TLibDecoder/SEIread.cpp
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibDecoder/SEIread.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibDecoder/TDecBinCoder.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibDecoder/TDecBinCoderCABAC.cpp
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibDecoder/TDecBinCoderCABAC.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibDecoder/TDecCAVLC.cpp
r2 r5 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-2011, 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 1 34 2 35 … … 145 178 xReadFlag( uiCode ); pcSPS->setUseALF ( uiCode ? true : false ); 146 179 xReadFlag( uiCode ); pcSPS->setUseDQP ( uiCode ? true : false ); 147 #if ! SB_NO_LowDelayCoding180 #if !HHI_NO_LowDelayCoding 148 181 xReadFlag( uiCode ); pcSPS->setUseLDC ( uiCode ? true : false ); 149 182 #endif … … 193 226 #endif 194 227 195 #if HHI_DMM_ INTRA228 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 196 229 g_dDeltaDCsQuantOffset = Double(g_uiBitIncrement) - 2.0; 197 230 #endif … … 209 242 { // baseview SPS -> set standard values 210 243 pcSPS->initMultiviewSPS ( 0 ); 244 #if DEPTH_MAP_GENERATION 211 245 pcSPS->setPredDepthMapGeneration( 0, false ); 246 #endif 247 #if HHI_INTER_VIEW_RESIDUAL_PRED 212 248 pcSPS->setMultiviewResPredMode ( 0 ); 249 #endif 213 250 } 214 251 else … … 220 257 xReadSvlc( iCode ); // view order index 221 258 pcSPS->initMultiviewSPSDepth ( uiCode, iCode ); 259 #if DEPTH_MAP_GENERATION 222 260 pcSPS->setPredDepthMapGeneration( uiCode, true ); 261 #endif 262 #if HHI_INTER_VIEW_RESIDUAL_PRED 223 263 pcSPS->setMultiviewResPredMode ( 0 ); 224 #if HHI_DMM_INTRA 264 #endif 265 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 225 266 xReadFlag( uiCode ); 226 pcSPS->setUseDepthModelModes( uiCode ? true : false ); 227 #endif 267 pcSPS->setUseDMM( uiCode ? true : false ); 268 #endif 269 #if HHI_MPI 228 270 xReadFlag( uiCode ); 229 271 pcSPS->setUseMVI( uiCode ? true : false ); 272 #endif 230 273 } 231 274 else … … 250 293 pcSPS->initMultiviewSPS( uiViewId, iVOI, uiCamParPrecision, bCamParSlice, m_aaiTempScale, m_aaiTempOffset ); 251 294 252 UInt uiPredDepthMapGeneration = 0, uiMultiviewMvPredMode = 0, uiPdmPrecision = 0, uiMultiviewResPredMode = 0; 295 #if DEPTH_MAP_GENERATION 296 UInt uiPredDepthMapGeneration = 0, uiPdmPrecision = 0; 297 #if HHI_INTER_VIEW_MOTION_PRED 298 UInt uiMultiviewMvPredMode = 0; 299 #endif 300 #if HHI_INTER_VIEW_RESIDUAL_PRED 301 UInt uiMultiviewResPredMode = 0; 302 #endif 253 303 xReadUvlc( uiPredDepthMapGeneration ); 254 304 if( uiPredDepthMapGeneration ) … … 260 310 xReadSvlc( iCode ); m_aaiTempPdmOffset [ uiViewId ][ uiBaseId ] = iCode; 261 311 } 312 #if HHI_INTER_VIEW_MOTION_PRED 262 313 xReadUvlc ( uiMultiviewMvPredMode ); 314 #endif 315 #if HHI_INTER_VIEW_RESIDUAL_PRED 263 316 xReadFlag ( uiMultiviewResPredMode ); 264 } 317 #endif 318 } 319 #if HHI_INTER_VIEW_MOTION_PRED 265 320 pcSPS->setPredDepthMapGeneration( uiViewId, false, uiPredDepthMapGeneration, uiMultiviewMvPredMode, uiPdmPrecision, m_aaiTempPdmScaleNomDelta, m_aaiTempPdmOffset ); 321 #else 322 pcSPS->setPredDepthMapGeneration( uiViewId, false, uiPredDepthMapGeneration, 0, uiPdmPrecision, m_aaiTempPdmScaleNomDelta, m_aaiTempPdmOffset ); 323 #endif 324 #if HHI_INTER_VIEW_RESIDUAL_PRED 266 325 pcSPS->setMultiviewResPredMode ( uiMultiviewResPredMode ); 326 #endif 327 #endif 328 #if HHI_MPI 267 329 pcSPS->setUseMVI( false ); 330 #endif 268 331 } 269 332 } … … 844 907 845 908 return ; 846 }847 #endif848 849 #if MW_MVI_SIGNALLING_MODE == 0850 Void TDecCavlc::parseMvInheritanceFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )851 {852 const Int iTextureModeDepth = pcCU->getTextureModeDepth( uiAbsPartIdx );853 if( iTextureModeDepth != -1 && uiDepth > iTextureModeDepth )854 return;855 856 UInt uiSymbol;857 xReadFlag( uiSymbol );858 if( uiSymbol == 1 )859 {860 pcCU->setTextureModeDepthSubParts( uiDepth, uiAbsPartIdx, uiDepth );861 }862 909 } 863 910 #endif … … 2574 2621 2575 2622 2623 #if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI 2576 2624 Void 2577 2625 TDecCavlc::parseMergeIndexMV( TComDataCU* pcCU, UInt& ruiMergeIndex, UInt uiAbsPartIdx, UInt uiDepth ) 2578 2626 { 2579 2627 UInt uiNumCand = 0; 2580 #if MW_MVI_SIGNALLING_MODE == 12628 #if HHI_MPI 2581 2629 const Bool bMVIAvailable = pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE; 2582 const UInt uiMviMergePos = bMVIAvailable ? MVI_MERGE_POS : MRG_MAX_NUM_CANDS;2630 const UInt uiMviMergePos = bMVIAvailable ? HHI_MPI_MERGE_POS : MRG_MAX_NUM_CANDS; 2583 2631 if( bMVIAvailable ) 2584 2632 uiNumCand++; … … 2605 2653 for( UInt uiIdx = 0; uiIdx <= ruiMergeIndex; uiIdx++ ) 2606 2654 { 2607 #if MW_MVI_SIGNALLING_MODE == 12655 #if HHI_MPI 2608 2656 if( uiIdx > uiMviMergePos ) 2609 2657 { … … 2620 2668 } 2621 2669 } 2622 #if MW_MVI_SIGNALLING_MODE == 12670 #if HHI_MPI 2623 2671 if( ruiMergeIndex > uiMviMergePos ) 2624 2672 { … … 2631 2679 #endif 2632 2680 } 2681 #endif 2633 2682 2634 2683 … … 2642 2691 Void TDecCavlc::parseMergeIndex ( TComDataCU* pcCU, UInt& ruiMergeIndex, UInt uiAbsPartIdx, UInt uiDepth ) 2643 2692 { 2644 #if MW_MVI_SIGNALLING_MODE == 1 2645 if( ( pcCU->getSlice()->getSPS()->getViewId() > 0 && ( pcCU->getSlice()->getSPS()->getMultiviewMvPredMode() & PDM_USE_FOR_MERGE ) == PDM_USE_FOR_MERGE ) || 2646 ( pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE && pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_2Nx2N ) ) 2647 #else 2648 if( pcCU->getSlice()->getSPS()->getViewId() > 0 && ( pcCU->getSlice()->getSPS()->getMultiviewMvPredMode() & PDM_USE_FOR_MERGE ) == PDM_USE_FOR_MERGE ) 2649 #endif 2693 #if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI 2694 if( 2695 #if HHI_INTER_VIEW_MOTION_PRED 2696 ( pcCU->getSlice()->getSPS()->getViewId() > 0 && ( pcCU->getSlice()->getSPS()->getMultiviewMvPredMode() & PDM_USE_FOR_MERGE ) == PDM_USE_FOR_MERGE ) || 2697 #endif 2698 #if HHI_MPI 2699 ( pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE && pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_2Nx2N ) || 2700 #endif 2701 0 2702 ) 2650 2703 { 2651 2704 parseMergeIndexMV( pcCU, ruiMergeIndex, uiAbsPartIdx, uiDepth ); 2652 2705 return; 2653 2706 } 2707 #endif 2654 2708 2655 2709 Bool bLeftInvolved = false; -
trunk/source/Lib/TLibDecoder/TDecCAVLC.h
r2 r5 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-2011, 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 1 34 2 35 … … 162 195 Void parseMergeFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiPUIdx ); 163 196 Void parseMergeIndex ( TComDataCU* pcCU, UInt& ruiMergeIndex, UInt uiAbsPartIdx, UInt uiDepth ); 197 #if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI 164 198 Void parseMergeIndexMV ( TComDataCU* pcCU, UInt& ruiMergeIndex, UInt uiAbsPartIdx, UInt uiDepth ); 199 #endif 165 200 Void parseResPredFlag ( TComDataCU* pcCU, Bool& rbResPredFlag, UInt uiAbsPartIdx, UInt uiDepth ); 166 201 Void parseSplitFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 167 #if MW_MVI_SIGNALLING_MODE == 0168 Void parseMvInheritanceFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );169 #endif170 202 Void parsePartSize ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 171 203 Void parsePredMode ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); -
trunk/source/Lib/TLibDecoder/TDecCu.cpp
r2 r5 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-2011, 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 1 34 2 35 … … 160 193 UInt uiBPelY = uiTPelY + (g_uiMaxCUHeight>>uiDepth) - 1; 161 194 162 #if MW_MVI_SIGNALLING_MODE == 0163 if( pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE )164 {165 m_pcEntropyDecoder->decodeMvInheritanceFlag( pcCU, uiAbsPartIdx, uiDepth );166 167 if( pcCU->getTextureModeDepth( uiAbsPartIdx ) == uiDepth )168 {169 assert( pcCU->getZorderIdxInCU() == 0 );170 TComDataCU *pcTextureCU = pcCU->getSlice()->getTexturePic()->getCU( pcCU->getAddr() );171 pcCU->copyTextureMotionDataFrom( pcTextureCU, uiDepth, pcCU->getZorderIdxInCU() + uiAbsPartIdx, uiAbsPartIdx );172 173 UInt uiCurrPartNumb = pcCU->getPic()->getNumPartInCU() >> (uiDepth << 1);174 for( UInt ui = 0; ui < uiCurrPartNumb; ui++ )175 {176 const UChar uhNewDepth = max( uiDepth, pcTextureCU->getDepth( uiAbsPartIdx + ui ) );177 if( pcCU->getPredictionMode( uiAbsPartIdx + ui ) == MODE_SKIP )178 pcCU->setPredictionMode( uiAbsPartIdx + ui, MODE_INTER );179 assert( pcCU->getPredictionMode( uiAbsPartIdx + ui ) == MODE_INTER );180 pcCU->setPartitionSize( uiAbsPartIdx + ui, SIZE_NxN );181 pcCU->setDepth( uiAbsPartIdx + ui, uhNewDepth );182 pcCU->setWidth( uiAbsPartIdx + ui, g_uiMaxCUWidth>>uhNewDepth );183 pcCU->setHeight( uiAbsPartIdx + ui, g_uiMaxCUHeight>>uhNewDepth );184 }185 }186 }187 #endif188 189 195 if( ( uiRPelX < pcCU->getSlice()->getSPS()->getWidth() ) && ( uiBPelY < pcCU->getSlice()->getSPS()->getHeight() ) ) 190 196 { 197 #if HHI_MPI 191 198 if( pcCU->getTextureModeDepth( uiAbsPartIdx ) == -1 || uiDepth < pcCU->getTextureModeDepth( uiAbsPartIdx ) ) 199 #endif 192 200 m_pcEntropyDecoder->decodeSplitFlag( pcCU, uiAbsPartIdx, uiDepth ); 193 201 } … … 220 228 221 229 // decode CU mode and the partition size 230 #if HHI_MPI 222 231 if( !pcCU->getSlice()->isIntra() && pcCU->getTextureModeDepth( uiAbsPartIdx ) == -1 ) 232 #else 233 if( !pcCU->getSlice()->isIntra() ) 234 #endif 223 235 { 224 236 m_pcEntropyDecoder->decodeSkipFlag( pcCU, uiAbsPartIdx, uiDepth ); … … 262 274 } 263 275 #endif 264 #if MW_MVI_SIGNALLING_MODE == 1276 #if HHI_MPI 265 277 if( pcCU->getTextureModeDepth( uiAbsPartIdx ) == uiDepth ) 266 278 { … … 281 293 #endif 282 294 295 #if HHI_INTER_VIEW_RESIDUAL_PRED 283 296 m_pcEntropyDecoder->decodeResPredFlag( pcCU, uiAbsPartIdx, uiDepth, m_ppcCU[uiDepth], 0 ); 297 #endif 284 298 return; 285 299 } 286 300 301 #if HHI_MPI 287 302 if( pcCU->getTextureModeDepth( uiAbsPartIdx ) == -1 ) 288 303 { 304 #endif 289 305 m_pcEntropyDecoder->decodePredMode( pcCU, uiAbsPartIdx, uiDepth ); 290 306 … … 294 310 m_pcEntropyDecoder->decodePredInfo( pcCU, uiAbsPartIdx, uiDepth, m_ppcCU[uiDepth]); 295 311 312 #if HHI_MPI 296 313 if( !pcCU->isIntra( uiAbsPartIdx ) ) 297 314 { 298 315 m_ppcCU[uiDepth] ->copyInterPredInfoFrom( pcCU, uiAbsPartIdx, REF_PIC_LIST_0 ); 299 316 m_ppcCU[uiDepth] ->copyInterPredInfoFrom( pcCU, uiAbsPartIdx, REF_PIC_LIST_1 ); 317 #if HHI_INTER_VIEW_RESIDUAL_PRED 300 318 m_pcEntropyDecoder->decodeResPredFlag ( pcCU, uiAbsPartIdx, uiDepth, m_ppcCU[uiDepth], 0 ); 301 } 302 303 #if MW_MVI_SIGNALLING_MODE == 1 319 #endif 320 } 321 304 322 if( pcCU->getTextureModeDepth( uiAbsPartIdx ) == uiDepth ) 305 323 { … … 335 353 } 336 354 } 337 #endif 338 } 355 } 356 #endif 357 339 358 UInt uiCurrWidth = pcCU->getWidth ( uiAbsPartIdx ); 340 359 UInt uiCurrHeight = pcCU->getHeight( uiAbsPartIdx ); … … 402 421 Void TDecCu::xReconInter( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) 403 422 { 404 #if MW_MVI_SIGNALLING_MODE == 1423 #if HHI_MPI 405 424 if( pcCU->getTextureModeDepth( 0 ) != -1 ) 406 425 pcCU->setPartSizeSubParts( SIZE_NxN, 0, uiDepth ); … … 410 429 m_pcPrediction->motionCompensation( pcCU, m_ppcYuvReco[uiDepth] ); 411 430 412 #if MW_MVI_SIGNALLING_MODE == 1431 #if HHI_MPI 413 432 if( pcCU->getTextureModeDepth( 0 ) != -1 ) 414 433 pcCU->setPartSizeSubParts( SIZE_2Nx2N, 0, uiDepth ); 415 434 #endif 416 435 436 #if HHI_INTER_VIEW_RESIDUAL_PRED 417 437 if( pcCU->getResPredFlag( 0 ) ) 418 438 { … … 422 442 m_ppcYuvReco[uiDepth]->add( m_ppcYuvResPred[uiDepth], pcCU->getWidth( 0 ), pcCU->getHeight( 0 ) ); 423 443 } 424 444 #endif 445 425 446 // inter recon 426 447 xDecodeInterTexture( pcCU, 0, uiDepth ); … … 433 454 else 434 455 { 456 #if HHI_INTER_VIEW_RESIDUAL_PRED 435 457 if( pcCU->getResPredFlag( 0 ) ) 436 458 { 437 459 m_ppcYuvReco[uiDepth]->clip( pcCU->getWidth( 0 ), pcCU->getHeight( 0 ) ); 438 460 } 461 #endif 439 462 m_ppcYuvReco[uiDepth]->copyPartToPartYuv( m_ppcYuvReco[uiDepth],0, pcCU->getWidth( 0 ),pcCU->getHeight( 0 )); 440 463 } … … 647 670 bAboveAvail, bLeftAvail ); 648 671 649 #if HHI_DMM_ INTRA672 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 650 673 if( uiLumaPredMode > MAX_MODE_ID_INTRA_DIR ) 651 674 { -
trunk/source/Lib/TLibDecoder/TDecCu.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibDecoder/TDecEntropy.cpp
r2 r5 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-2011, 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 1 34 2 35 … … 371 404 } 372 405 } 373 #if MW_MVI_SIGNALLING_MODE == 1406 #if HHI_MPI 374 407 if( pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE && pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_2Nx2N ) 375 408 uiNumCand++; … … 416 449 417 450 451 #if HHI_INTER_VIEW_RESIDUAL_PRED 418 452 Void 419 453 TDecEntropy::decodeResPredFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, TComDataCU* pcSubCU, UInt uiPUIdx ) … … 443 477 pcCU->setResPredFlagSubParts ( bResPredFlag, uiAbsPartIdx, uiPUIdx, uiDepth ); 444 478 } 479 #endif 445 480 446 481 … … 449 484 m_pcEntropyDecoderIf->parseSplitFlag( pcCU, uiAbsPartIdx, uiDepth ); 450 485 } 451 452 #if MW_MVI_SIGNALLING_MODE == 0453 Void TDecEntropy::decodeMvInheritanceFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )454 {455 m_pcEntropyDecoderIf->parseMvInheritanceFlag( pcCU, uiAbsPartIdx, uiDepth );456 }457 #endif458 486 459 487 Void TDecEntropy::decodePredMode( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) … … 1805 1833 #if HHI_MRG_SKIP 1806 1834 UInt uiQtRootCbf = 1; 1807 #if MW_MVI_SIGNALLING_MODE == 11835 #if HHI_MPI 1808 1836 if( !(pcCU->getMergeFlag( uiAbsPartIdx ) && pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_2Nx2N && 1809 1837 ( pcCU->getTextureModeDepth( uiAbsPartIdx ) == -1 || uiDepth == pcCU->getTextureModeDepth( uiAbsPartIdx ) ) ) ) -
trunk/source/Lib/TLibDecoder/TDecEntropy.h
r2 r5 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-2011, 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 1 34 2 35 … … 30 63 virtual Void setAlfCtrl(Bool bAlfCtrl) = 0; 31 64 virtual Void setMaxAlfCtrlDepth(UInt uiMaxAlfCtrlDepth) = 0; 32 65 33 66 virtual Void resetEntropy (TComSlice* pcSlice) = 0; 34 67 virtual Void setBitstream ( TComBitstream* p ) = 0; 35 36 virtual Void parseNalUnitHeader ( NalUnitType& eNalUnitType, UInt& TemporalId, Bool& bOutputFlag ) = 0; 68 69 virtual Void parseNalUnitHeader ( NalUnitType& eNalUnitType, UInt& TemporalId, Bool& bOutputFlag ) = 0; 37 70 38 71 virtual Void parseSPS ( TComSPS* pcSPS ) = 0; … … 41 74 virtual Void parseSliceHeader ( TComSlice*& rpcSlice ) = 0; 42 75 virtual Void parseTerminatingBit ( UInt& ruilsLast ) = 0; 43 76 44 77 virtual Void parseMVPIdx ( TComDataCU* pcCU, Int& riMVPIdx, Int iMVPNum, UInt uiAbsPartIdx, UInt uiDepth, RefPicList eRefList ) = 0; 45 78 46 79 public: 47 80 virtual Void parseSkipFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) = 0; 48 81 virtual Void parseSplitFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) = 0; 49 #if MW_MVI_SIGNALLING_MODE == 050 virtual Void parseMvInheritanceFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) = 0;51 #endif52 82 virtual Void parseMergeFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiPUIdx ) = 0; 53 83 virtual Void parseMergeIndex ( TComDataCU* pcCU, UInt& ruiMergeIndex, UInt uiAbsPartIdx, UInt uiDepth ) = 0; … … 55 85 virtual Void parsePartSize ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) = 0; 56 86 virtual Void parsePredMode ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) = 0; 57 87 58 88 virtual Void parseIntraDirLumaAng( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) = 0; 59 89 60 90 virtual Void parseIntraDirChroma( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) = 0; 61 91 62 92 virtual Void parseInterDir ( TComDataCU* pcCU, UInt& ruiInterDir, UInt uiAbsPartIdx, UInt uiDepth ) = 0; 63 93 virtual Void parseRefFrmIdx ( TComDataCU* pcCU, Int& riRefFrmIdx, UInt uiAbsPartIdx, UInt uiDepth, RefPicList eRefList ) = 0; 64 94 virtual Void parseMvd ( TComDataCU* pcCU, UInt uiAbsPartAddr, UInt uiPartIdx, UInt uiDepth, RefPicList eRefList ) = 0; 65 95 66 96 virtual Void parseTransformSubdivFlag( UInt& ruiSubdivFlag, UInt uiLog2TransformBlockSize ) = 0; 67 97 virtual Void parseQtCbf ( TComDataCU* pcCU, UInt uiAbsPartIdx, TextType eType, UInt uiTrDepth, UInt uiDepth ) = 0; 68 98 virtual Void parseQtRootCbf ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt& uiQtRootCbf ) = 0; 69 99 70 100 virtual Void parseDeltaQP ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) = 0; 71 101 72 102 virtual Void parseCbf ( TComDataCU* pcCU, UInt uiAbsPartIdx, TextType eType, UInt uiTrDepth, UInt uiDepth ) = 0; 73 103 virtual Void parseBlockCbf ( TComDataCU* pcCU, UInt uiAbsPartIdx, TextType eType, UInt uiTrDepth, UInt uiDepth, UInt uiQPartNum ) = 0; … … 75 105 virtual Void parseCbfTrdiv ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiTrDepth, UInt uiDepth, UInt& uiSubdiv ) = 0; 76 106 #endif 77 107 78 108 virtual Void parseCoeffNxN( TComDataCU* pcCU, TCoeff* pcCoef, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, UInt uiDepth, TextType eTType ) = 0; 79 109 80 110 virtual Void parseAlfFlag ( UInt& ruiVal ) = 0; 81 111 virtual Void parseAlfUvlc ( UInt& ruiVal ) = 0; … … 103 133 TDecEntropyIf* m_pcEntropyDecoderIf; 104 134 TComPrediction* m_pcPrediction; 105 135 106 136 public: 107 137 Void init (TComPrediction* p) {m_pcPrediction = p;} … … 112 142 Void decodeMvdPU ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiPartIdx, RefPicList eRefList ); 113 143 Void decodeMVPIdxPU ( TComDataCU* pcSubCU, UInt uiPartAddr, UInt uiDepth, UInt uiPartIdx, RefPicList eRefList ); 114 144 115 145 Void setEntropyDecoder ( TDecEntropyIf* p ); 116 146 Void setBitstream ( TComBitstream* p ) { m_pcEntropyDecoderIf->setBitstream(p); } 117 147 Void resetEntropy ( TComSlice* p) { m_pcEntropyDecoderIf->resetEntropy(p); } 118 148 119 Void decodeNalUnitHeader ( NalUnitType& eNalUnitType, UInt& TemporalId, Bool& bOutputFlag ) 149 Void decodeNalUnitHeader ( NalUnitType& eNalUnitType, UInt& TemporalId, Bool& bOutputFlag ) 120 150 { m_pcEntropyDecoderIf->parseNalUnitHeader(eNalUnitType, TemporalId, bOutputFlag ); } 121 151 … … 126 156 Void decodeSliceHeader ( TComSlice*& rpcSlice ) { m_pcEntropyDecoderIf->parseSliceHeader(rpcSlice); } 127 157 Void decodeTerminatingBit ( UInt& ruiIsLast ) { m_pcEntropyDecoderIf->parseTerminatingBit(ruiIsLast); } 128 158 129 159 // Adaptive Loop filter 130 160 Void decodeAlfParam(ALFParam* pAlfParam); 131 161 //--Adaptive Loop filter 132 162 133 163 TDecEntropyIf* getEntropyDecoder() { return m_pcEntropyDecoderIf; } 134 164 135 165 public: 136 166 Void decodeSplitFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 137 #if MW_MVI_SIGNALLING_MODE == 0138 Void decodeMvInheritanceFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );139 #endif140 167 Void decodeSkipFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 141 168 Void decodeMergeFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiPUIdx ); 142 169 Void decodeMergeIndex ( TComDataCU* pcSubCU, UInt uiPartIdx, UInt uiPartAddr, PartSize eCUMode, UChar* puhInterDirNeighbours, TComMvField* pcMvFieldNeighbours, UInt uiDepth ); 170 #if HHI_INTER_VIEW_RESIDUAL_PRED 143 171 Void decodeResPredFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, TComDataCU* pcSubCU, UInt uiPUIdx ); 172 #endif 144 173 Void decodeAlfCtrlFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 145 174 #if TSB_ALF_HEADER 146 175 Void decodeAlfCtrlParam ( ALFParam *pAlfParam ); 147 176 #endif 148 177 149 178 Void decodePredMode ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 150 179 Void decodePartSize ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 151 180 152 181 Void decodePredInfo ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, TComDataCU* pcSubCU ); 153 182 154 183 Void decodeIntraDirModeLuma ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 155 184 Void decodeIntraDirModeChroma( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); … … 157 186 Void decodeRefFrmIdx ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, RefPicList eRefList ); 158 187 Void decodeMvd ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, RefPicList eRefList ); 159 // SB160 188 Void decodeRefViewIdx ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, RefPicList eRefList ); 161 189 // 162 190 Void decodeTransformIdx ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 163 191 Void decodeQP ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 164 192 165 193 Void decodeViewidx ( Int& riViewIdx ); 166 167 194 195 168 196 private: 169 197 Void xDecodeTransformSubdiv ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiInnerQuadIdx, UInt& uiYCbfFront3, UInt& uiUCbfFront3, UInt& uiVCbfFront3 ); 170 198 171 199 Void xDecodeCoeff ( TComDataCU* pcCU, TCoeff* pcCoeff, UInt uiAbsPartIdx, UInt uiDepth, UInt uiWidth, UInt uiHeight, UInt uiTrIdx, UInt uiCurrTrIdx, TextType eType ); 172 200 public: 173 201 Void decodeCoeff ( TComDataCU* pcCU , UInt uiAbsPartIdx, UInt uiDepth, UInt uiWidth, UInt uiHeight ); 174 202 175 203 // ALF-related 176 204 Void decodeAux(ALFParam* pAlfParam); -
trunk/source/Lib/TLibDecoder/TDecGop.cpp
r2 r5 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-2011, 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 1 34 2 35 … … 53 86 TComAdaptiveLoopFilter* pcAdaptiveLoopFilter, 54 87 #if MTK_SAO 55 TComSampleAdaptiveOffset* pcSAO ,88 TComSampleAdaptiveOffset* pcSAO 56 89 #endif 57 TComDepthMapGenerator* pcDepthMapGenerator, 58 TComResidualGenerator* pcResidualGenerator ) 90 #if DEPTH_MAP_GENERATION 91 ,TComDepthMapGenerator* pcDepthMapGenerator 92 #endif 93 #if HHI_INTER_VIEW_RESIDUAL_PRED 94 ,TComResidualGenerator* pcResidualGenerator 95 #endif 96 ) 59 97 { 60 98 m_pcEntropyDecoder = pcEntropyDecoder; … … 68 106 m_pcSAO = pcSAO; 69 107 #endif 108 #if DEPTH_MAP_GENERATION 70 109 m_pcDepthMapGenerator = pcDepthMapGenerator; 110 #endif 111 #if HHI_INTER_VIEW_RESIDUAL_PRED 71 112 m_pcResidualGenerator = pcResidualGenerator; 113 #endif 72 114 } 73 115 … … 145 187 } 146 188 189 #if DEPTH_MAP_GENERATION 147 190 // init view component and predict virtual depth map 148 191 if( uiStartCUAddr == 0 ) … … 150 193 m_pcDepthMapGenerator->initViewComponent( rpcPic ); 151 194 m_pcDepthMapGenerator->predictDepthMap ( rpcPic ); 195 #if HHI_INTER_VIEW_RESIDUAL_PRED 152 196 m_pcResidualGenerator->initViewComponent( rpcPic ); 153 } 197 #endif 198 } 199 #endif 154 200 155 201 // decode slice … … 160 206 else 161 207 { 208 #if HHI_INTER_VIEW_RESIDUAL_PRED 162 209 // set residual picture 163 210 m_pcResidualGenerator->setRecResidualPic( rpcPic ); 164 211 #endif 212 #if DEPTH_MAP_GENERATION 165 213 // update virtual depth map 166 214 m_pcDepthMapGenerator->updateDepthMap( rpcPic ); 215 #endif 167 216 168 217 // deblocking filter -
trunk/source/Lib/TLibDecoder/TDecGop.h
r2 r5 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-2011, 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 1 34 2 35 … … 46 79 TComLoopFilter* m_pcLoopFilter; 47 80 81 #if DEPTH_MAP_GENERATION 48 82 TComDepthMapGenerator* m_pcDepthMapGenerator; 83 #endif 84 #if HHI_INTER_VIEW_RESIDUAL_PRED 49 85 TComResidualGenerator* m_pcResidualGenerator; 86 #endif 50 87 51 88 // Adaptive Loop filter … … 72 109 TComAdaptiveLoopFilter* pcAdaptiveLoopFilter, 73 110 #if MTK_SAO 74 TComSampleAdaptiveOffset* pcSAO ,111 TComSampleAdaptiveOffset* pcSAO 75 112 #endif 76 TComDepthMapGenerator* pcDepthMapGenerator, 77 TComResidualGenerator* pcResidualGenerator ); 113 #if DEPTH_MAP_GENERATION 114 ,TComDepthMapGenerator* pcDepthMapGenerator 115 #endif 116 #if HHI_INTER_VIEW_RESIDUAL_PRED 117 ,TComResidualGenerator* pcResidualGenerator 118 #endif 119 ); 78 120 Void create (); 79 121 Void destroy (); -
trunk/source/Lib/TLibDecoder/TDecSbac.cpp
r2 r5 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-2011, 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 1 34 2 35 … … 19 52 , m_cCUSkipFlagSCModel ( 1, 1, NUM_SKIP_FLAG_CTX ) 20 53 , m_cCUSplitFlagSCModel ( 1, 1, NUM_SPLIT_FLAG_CTX ) 21 #if MW_MVI_SIGNALLING_MODE == 022 , m_cCUMvInheritanceFlagSCModel(1, 1, NUM_MVI_FLAG_CTX )23 #endif24 54 , m_cCUMergeFlagExtSCModel ( 1, 1, NUM_MERGE_FLAG_EXT_CTX ) 25 55 , m_cCUMergeIdxExtSCModel ( 1, 1, NUM_MERGE_IDX_EXT_CTX ) … … 64 94 #endif 65 95 , m_cViewIdxSCModel ( 1, 1, NUM_VIEW_IDX_CTX ) 66 #if HHI_DMM_ INTRA96 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 67 97 , m_cIntraDMMSCModel ( 1, 1, NUM_DMM_CTX ) 68 98 , m_cIntraWedgeSCModel ( 1, 1, NUM_WEDGE_CTX ) … … 85 115 86 116 m_cCUSplitFlagSCModel.initBuffer ( eSliceType, iQp, (Short*)INIT_SPLIT_FLAG ); 87 #if MW_MVI_SIGNALLING_MODE == 088 m_cCUMvInheritanceFlagSCModel.initBuffer( eSliceType, iQp, (Short*)INIT_MVI_FLAG );89 #endif90 117 m_cCUSkipFlagSCModel.initBuffer ( eSliceType, iQp, (Short*)INIT_SKIP_FLAG ); 91 118 m_cCUMergeFlagExtSCModel.initBuffer ( eSliceType, iQp, (Short*)INIT_MERGE_FLAG_EXT ); … … 127 154 m_cCUTransSubdivFlagSCModel.initBuffer ( eSliceType, iQp, (Short*)INIT_TRANS_SUBDIV_FLAG ); 128 155 m_cViewIdxSCModel.initBuffer ( eSliceType, iQp, (Short*)INIT_VIEW_IDX ); 129 #if HHI_DMM_ INTRA156 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 130 157 m_cIntraDMMSCModel.initBuffer ( eSliceType, iQp, (Short*)INIT_INTRA_DMM ); 131 158 m_cIntraWedgeSCModel.initBuffer ( eSliceType, iQp, (Short*)INIT_INTRA_WEDGELET ); … … 361 388 return; 362 389 } 363 #if HHI_DMM_ INTRA390 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 364 391 Void TDecSbac::xReadExGolombLevel( UInt& ruiSymbol, ContextModel& rcSCModel ) 365 392 { … … 552 579 553 580 581 #if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI 554 582 Void TDecSbac::parseMergeIndexMV( TComDataCU* pcCU, UInt& ruiMergeIndex, UInt uiAbsPartIdx, UInt uiDepth ) 555 583 { 556 #if MW_MVI_SIGNALLING_MODE == 1584 #if HHI_MPI 557 585 const Bool bMVIAvailable = pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE; 558 const UInt uiMviMergePos = bMVIAvailable ? MVI_MERGE_POS : MRG_MAX_NUM_CANDS;586 const UInt uiMviMergePos = bMVIAvailable ? HHI_MPI_MERGE_POS : MRG_MAX_NUM_CANDS; 559 587 #endif 560 588 //--- set number of candidates and availability --- … … 563 591 for( UInt uiIdx = 0; uiIdx < MRG_MAX_NUM_CANDS; uiIdx++ ) 564 592 { 565 #if MW_MVI_SIGNALLING_MODE == 1593 #if HHI_MPI 566 594 if( uiIdx == uiMviMergePos ) 567 595 { … … 629 657 } 630 658 631 #if MW_MVI_SIGNALLING_MODE == 1659 #if HHI_MPI 632 660 if( ruiMergeIndex > uiMviMergePos ) 633 661 { … … 661 689 DTRACE_CABAC_T( "\n" ); 662 690 } 691 #endif 663 692 664 693 665 694 Void TDecSbac::parseMergeIndex ( TComDataCU* pcCU, UInt& ruiMergeIndex, UInt uiAbsPartIdx, UInt uiDepth ) 666 695 { 667 #if MW_MVI_SIGNALLING_MODE == 1 668 if( ( pcCU->getSlice()->getSPS()->getViewId() > 0 && ( pcCU->getSlice()->getSPS()->getMultiviewMvPredMode() & PDM_USE_FOR_MERGE ) == PDM_USE_FOR_MERGE ) || 669 ( pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE && pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_2Nx2N ) ) 670 #else 671 if( pcCU->getSlice()->getSPS()->getViewId() > 0 && ( pcCU->getSlice()->getSPS()->getMultiviewMvPredMode() & PDM_USE_FOR_MERGE ) == PDM_USE_FOR_MERGE ) 672 #endif 696 #if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI 697 if( 698 #if HHI_INTER_VIEW_MOTION_PRED 699 ( pcCU->getSlice()->getSPS()->getViewId() > 0 && ( pcCU->getSlice()->getSPS()->getMultiviewMvPredMode() & PDM_USE_FOR_MERGE ) == PDM_USE_FOR_MERGE ) || 700 #endif 701 #if HHI_MPI 702 ( pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE && pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_2Nx2N ) || 703 #endif 704 0 705 ) 673 706 { 674 707 parseMergeIndexMV( pcCU, ruiMergeIndex, uiAbsPartIdx, uiDepth ); 675 708 return; 676 709 } 710 #endif 677 711 678 712 Bool bLeftInvolved = false; … … 827 861 } 828 862 829 #if MW_MVI_SIGNALLING_MODE == 0830 Void TDecSbac::parseMvInheritanceFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )831 {832 const Int iTextureModeDepth = pcCU->getTextureModeDepth( uiAbsPartIdx );833 if( iTextureModeDepth != -1 && uiDepth > iTextureModeDepth )834 return;835 836 UInt uiSymbol;837 m_pcTDecBinIf->decodeBin( uiSymbol, m_cCUMvInheritanceFlagSCModel.get( 0, 0, pcCU->getCtxMvInheritanceFlag( uiAbsPartIdx, uiDepth ) ) );838 if( uiSymbol == 1 )839 {840 pcCU->setTextureModeDepthSubParts( uiDepth, uiAbsPartIdx, uiDepth );841 }842 }843 #endif844 845 863 /** parse partition size 846 864 * \param pcCU … … 965 983 } 966 984 967 #if HHI_DMM_ INTRA985 #if HHI_DMM_WEDGE_INTRA 968 986 Void TDecSbac::xParseWedgeFullInfo( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) 969 987 { … … 1136 1154 pcCU->setWedgePredDirDeltaDC2SubParts( iDC2, uiAbsPartIdx, uiDepth ); 1137 1155 } 1138 1156 #endif 1157 #if HHI_DMM_PRED_TEX 1139 1158 Void TDecSbac::xParseWedgePredTexDeltaInfo( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) 1140 1159 { … … 1204 1223 UInt uiSymbol; 1205 1224 1206 #if HHI_DMM_ INTRA1225 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 1207 1226 UInt uiFlag = 0; 1208 if ( pcCU->getSlice()->getSPS()->isDepth() && pcCU->getSlice()->getSPS()->getUseD epthModelModes() && g_uiMaxCUWidth>>uiDepth < 64 )1227 if ( pcCU->getSlice()->getSPS()->isDepth() && pcCU->getSlice()->getSPS()->getUseDMM() && g_uiMaxCUWidth>>uiDepth < 64 ) 1209 1228 { 1210 1229 m_pcTDecBinIf->decodeBin( uiFlag, m_cIntraDMMSCModel.get(0, 0, 0) ); … … 1214 1233 UInt uiDMMode; 1215 1234 1216 #if DMM_NO_TEXTURE_MODES1217 pcCU->setTextureModeAllowanceSubParts( false, uiAbsPartIdx, uiDepth );1218 1235 #if HHI_DMM_WEDGE_INTRA && HHI_DMM_PRED_TEX 1236 m_pcTDecBinIf->decodeBin( uiSymbol, m_cIntraDMMSCModel.get(0, 0, 1) ); uiDMMode = uiSymbol; 1237 m_pcTDecBinIf->decodeBin( uiSymbol, m_cIntraDMMSCModel.get(0, 0, 1) ); uiDMMode |= uiSymbol << 1; 1219 1238 if ( pcCU->getPartitionSize( uiAbsPartIdx ) != SIZE_NxN && g_uiMaxCUWidth>>uiDepth > 4 ) 1220 1239 { 1221 m_pcTDecBinIf->decodeBin( uiSymbol, m_cIntraDMMSCModel.get(0, 0, 1) ); uiDMMode = uiSymbol; 1222 if( DMM_INTRA_MODE_BITS > 1 ) { m_pcTDecBinIf->decodeBin( uiSymbol, m_cIntraDMMSCModel.get(0, 0, 1) ); uiDMMode |= uiSymbol << 1; } 1223 1224 if( uiDMMode > 1 ) 1225 { 1226 uiDMMode += 4; 1227 } 1228 } 1229 else 1230 { 1231 m_pcTDecBinIf->decodeBin( uiSymbol, m_cIntraDMMSCModel.get(0, 0, 1) ); uiDMMode = uiSymbol; 1240 m_pcTDecBinIf->decodeBin( uiSymbol, m_cIntraDMMSCModel.get(0, 0, 1) ); uiDMMode |= uiSymbol << 2; 1232 1241 } 1233 1242 #else 1234 TComPicYuv* pcPicYuvRef = pcCU->getSlice()->getTexturePic()->getPicYuvRec(); 1235 Int iRefStride = pcPicYuvRef->getStride(); 1236 Pel* piRefY; 1237 1238 TComYuv cTempYuv; 1239 UInt uiTempStride = 0; 1240 Pel* piTempY; 1241 1242 UInt uiWidth = g_uiMaxCUWidth>>uiDepth; 1243 UInt uiHeight = g_uiMaxCUHeight>>uiDepth; 1244 piRefY = pcPicYuvRef->getLumaAddr( pcCU->getAddr(), uiAbsPartIdx ); 1245 cTempYuv.create( uiWidth, uiHeight ); cTempYuv.clear(); 1246 piTempY = cTempYuv.getLumaAddr( 0, uiWidth ); 1247 uiTempStride = cTempYuv.getStride(); 1248 1249 for ( Int y = 0; y < uiHeight; y++ ) 1250 { 1251 ::memcpy(piTempY, piRefY, sizeof(Pel)*uiWidth); 1252 piTempY += uiTempStride; 1253 piRefY += iRefStride; 1254 } 1255 1256 UInt64 uiDCSAD = cTempYuv.getLumaDistDCSAD( uiWidth ); 1257 1258 cTempYuv.destroy(); 1259 1260 if( uiDCSAD < (UInt)(pcCU->getQP(0))/2 ) 1261 { 1262 pcCU->setTextureModeAllowanceSubParts( false, uiAbsPartIdx, uiDepth ); 1263 1243 m_pcTDecBinIf->decodeBin( uiSymbol, m_cIntraDMMSCModel.get(0, 0, 1) ); uiDMMode = uiSymbol; 1264 1244 if ( pcCU->getPartitionSize( uiAbsPartIdx ) != SIZE_NxN && g_uiMaxCUWidth>>uiDepth > 4 ) 1265 1245 { 1266 m_pcTDecBinIf->decodeBin( uiSymbol, m_cIntraDMMSCModel.get(0, 0, 1) ); uiDMMode = uiSymbol; 1267 if( DMM_INTRA_MODE_BITS > 1 ) { m_pcTDecBinIf->decodeBin( uiSymbol, m_cIntraDMMSCModel.get(0, 0, 1) ); uiDMMode |= uiSymbol << 1; } 1268 1269 if( uiDMMode > 1 ) 1270 { 1271 uiDMMode += 4; 1272 } 1273 } 1274 else 1275 { 1276 pcCU->setTextureModeAllowanceSubParts( true, uiAbsPartIdx, uiDepth ); 1277 1278 m_pcTDecBinIf->decodeBin( uiSymbol, m_cIntraDMMSCModel.get(0, 0, 1) ); uiDMMode = uiSymbol; 1279 } 1280 } 1281 else 1282 { 1283 m_pcTDecBinIf->decodeBin( uiSymbol, m_cIntraDMMSCModel.get(0, 0, 1) ); uiDMMode = uiSymbol; 1284 if( DMM_INTRA_MODE_BITS > 1 ) { m_pcTDecBinIf->decodeBin( uiSymbol, m_cIntraDMMSCModel.get(0, 0, 1) ); uiDMMode |= uiSymbol << 1; } 1285 if ( pcCU->getPartitionSize( uiAbsPartIdx ) != SIZE_NxN && g_uiMaxCUWidth>>uiDepth > 4 ) 1286 { 1287 if( DMM_INTRA_MODE_BITS > 2 ) { m_pcTDecBinIf->decodeBin( uiSymbol, m_cIntraDMMSCModel.get(0, 0, 1) ); uiDMMode |= uiSymbol << 2; } 1288 } 1289 } 1290 #endif 1291 uiIPredMode = g_aucAdditionalIntraModeList[uiDMMode]; 1292 1246 m_pcTDecBinIf->decodeBin( uiSymbol, m_cIntraDMMSCModel.get(0, 0, 1) ); uiDMMode |= uiSymbol << 1; 1247 } 1248 #endif 1249 uiIPredMode = uiDMMode + MAX_MODE_ID_INTRA_DIR + 1; 1250 1251 #if HHI_DMM_WEDGE_INTRA 1293 1252 if( uiIPredMode == DMM_WEDGE_FULL_IDX ) { xParseWedgeFullInfo ( pcCU, uiAbsPartIdx, uiDepth ); } 1294 1253 if( uiIPredMode == DMM_WEDGE_FULL_D_IDX ) { xParseWedgeFullDeltaInfo ( pcCU, uiAbsPartIdx, uiDepth ); } 1295 1254 if( uiIPredMode == DMM_WEDGE_PREDDIR_IDX ) { xParseWedgePredDirInfo ( pcCU, uiAbsPartIdx, uiDepth ); } 1296 1255 if( uiIPredMode == DMM_WEDGE_PREDDIR_D_IDX ) { xParseWedgePredDirDeltaInfo ( pcCU, uiAbsPartIdx, uiDepth ); } 1256 #endif 1257 #if HHI_DMM_PRED_TEX 1297 1258 if( uiIPredMode == DMM_WEDGE_PREDTEX_D_IDX ) { xParseWedgePredTexDeltaInfo ( pcCU, uiAbsPartIdx, uiDepth ); } 1298 1259 if( uiIPredMode == DMM_CONTOUR_PREDTEX_D_IDX ) { xParseContourPredTexDeltaInfo( pcCU, uiAbsPartIdx, uiDepth ); } 1260 #endif 1299 1261 } 1300 1262 else … … 1370 1332 UInt uiSymbol; 1371 1333 1372 #if HHI_DMM_ INTRA1334 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 1373 1335 UInt uiFlag = 0; 1374 if ( pcCU->getSlice()->getSPS()->isDepth() && pcCU->getSlice()->getSPS()->getUseD epthModelModes() && g_uiMaxCUWidth>>uiDepth < 64 )1336 if ( pcCU->getSlice()->getSPS()->isDepth() && pcCU->getSlice()->getSPS()->getUseDMM() && g_uiMaxCUWidth>>uiDepth < 64 ) 1375 1337 { 1376 1338 m_pcTDecBinIf->decodeBin( uiFlag, m_cIntraDMMSCModel.get(0, 0, 0) ); … … 1379 1341 { 1380 1342 UInt uiDMMode; 1381 TComPicYuv* pcPicYuvRef = pcCU->getSlice()->getTexturePic()->getPicYuvRec(); 1382 Int iRefStride = pcPicYuvRef->getStride(); 1383 Pel* piRefY; 1384 1385 TComYuv cTempYuv; 1386 UInt uiTempStride = 0; 1387 Pel* piTempY; 1388 1389 UInt uiWidth = g_uiMaxCUWidth>>uiDepth; 1390 UInt uiHeight = g_uiMaxCUHeight>>uiDepth; 1391 piRefY = pcPicYuvRef->getLumaAddr( pcCU->getAddr(), uiAbsPartIdx ); 1392 cTempYuv.create( uiWidth, uiHeight ); cTempYuv.clear(); 1393 piTempY = cTempYuv.getLumaAddr( 0, uiWidth ); 1394 uiTempStride = cTempYuv.getStride(); 1395 1396 for ( Int y = 0; y < uiHeight; y++ ) 1397 { 1398 ::memcpy(piTempY, piRefY, sizeof(Pel)*uiWidth); 1399 piTempY += uiTempStride; 1400 piRefY += iRefStride; 1401 } 1402 1403 UInt64 uiDCSAD = cTempYuv.getLumaDistDCSAD( uiWidth ); 1404 1405 if( uiDCSAD < 23 ) 1406 { 1343 1344 #if HHI_DMM_WEDGE_INTRA && HHI_DMM_PRED_TEX 1345 m_pcTDecBinIf->decodeBin( uiSymbol, m_cIntraDMMSCModel.get(0, 0, 1) ); uiDMMode = uiSymbol; 1346 m_pcTDecBinIf->decodeBin( uiSymbol, m_cIntraDMMSCModel.get(0, 0, 1) ); uiDMMode |= uiSymbol << 1; 1407 1347 if ( pcCU->getPartitionSize( uiAbsPartIdx ) != SIZE_NxN && g_uiMaxCUWidth>>uiDepth > 4 ) 1408 1348 { 1409 m_pcTDecBinIf->decodeBin( uiSymbol, m_cIntraDMMSCModel.get(0, 0, 1) ); uiDMMode = uiSymbol; 1410 if( DMM_INTRA_MODE_BITS > 1 ) { m_pcTDecBinIf->decodeBin( uiSymbol, m_cIntraDMMSCModel.get(0, 0, 1) ); uiDMMode |= uiSymbol << 1; } 1411 1412 if( uiDMMode > 1 ) 1413 { 1414 uiDMMode += 4; 1349 m_pcTDecBinIf->decodeBin( uiSymbol, m_cIntraDMMSCModel.get(0, 0, 1) ); uiDMMode |= uiSymbol << 2; 1415 1350 } 1416 } 1417 else 1418 { 1419 m_pcTDecBinIf->decodeBin( uiSymbol, m_cIntraDMMSCModel.get(0, 0, 1) ); uiDMMode = uiSymbol; 1420 } 1421 } 1422 else 1423 { 1351 #else 1424 1352 m_pcTDecBinIf->decodeBin( uiSymbol, m_cIntraDMMSCModel.get(0, 0, 1) ); uiDMMode = uiSymbol; 1425 if( DMM_INTRA_MODE_BITS > 1 ) { m_pcTDecBinIf->decodeBin( uiSymbol, m_cIntraDMMSCModel.get(0, 0, 1) ); uiDMMode |= uiSymbol << 1; }1426 1353 if ( pcCU->getPartitionSize( uiAbsPartIdx ) != SIZE_NxN && g_uiMaxCUWidth>>uiDepth > 4 ) 1427 1354 { 1428 if( DMM_INTRA_MODE_BITS > 2 ) { m_pcTDecBinIf->decodeBin( uiSymbol, m_cIntraDMMSCModel.get(0, 0, 1) ); uiDMMode |= uiSymbol << 2; }1429 1430 } 1355 m_pcTDecBinIf->decodeBin( uiSymbol, m_cIntraDMMSCModel.get(0, 0, 1) ); uiDMMode |= uiSymbol << 1; 1356 } 1357 #endif 1431 1358 uiIPredMode = g_aucAdditionalIntraModeList[uiDMMode]; 1432 1359 1360 #if HHI_DMM_WEDGE_INTRA 1433 1361 if( uiIPredMode == DMM_WEDGE_FULL_IDX ) { xParseWedgeFullInfo ( pcCU, uiAbsPartIdx, uiDepth ); } 1434 1362 if( uiIPredMode == DMM_WEDGE_FULL_D_IDX ) { xParseWedgeFullDeltaInfo ( pcCU, uiAbsPartIdx, uiDepth ); } 1435 1363 if( uiIPredMode == DMM_WEDGE_PREDDIR_IDX ) { xParseWedgePredDirInfo ( pcCU, uiAbsPartIdx, uiDepth ); } 1436 1364 if( uiIPredMode == DMM_WEDGE_PREDDIR_D_IDX ) { xParseWedgePredDirDeltaInfo ( pcCU, uiAbsPartIdx, uiDepth ); } 1365 #endif 1366 #if HHI_DMM_PRED_TEX 1437 1367 if( uiIPredMode == DMM_WEDGE_PREDTEX_D_IDX ) { xParseWedgePredTexDeltaInfo ( pcCU, uiAbsPartIdx, uiDepth ); } 1438 1368 if( uiIPredMode == DMM_CONTOUR_PREDTEX_D_IDX ) { xParseContourPredTexDeltaInfo( pcCU, uiAbsPartIdx, uiDepth ); } 1369 #endif 1439 1370 } 1440 1371 else -
trunk/source/Lib/TLibDecoder/TDecSbac.h
r2 r5 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-2011, 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 1 34 2 35 … … 66 99 #if E253 67 100 Void xReadGoRiceExGolomb ( UInt &ruiSymbol, UInt &ruiGoRiceParam ); 68 #if HHI_DMM_ INTRA101 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 69 102 Void xReadExGolombLevel ( UInt& ruiSymbol, ContextModel& rcSCModel ); 70 103 #endif … … 81 114 Void xReadExGolombMvd ( UInt& ruiSymbol, ContextModel* pcSCModel, UInt uiMaxBin ); 82 115 83 #if HHI_DMM_ INTRA116 #if HHI_DMM_WEDGE_INTRA 84 117 Void xParseWedgeFullInfo ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 85 118 Void xParseWedgeFullDeltaInfo ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 119 86 120 Void xParseWedgePredDirInfo ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 87 121 Void xParseWedgePredDirDeltaInfo ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 122 #endif 123 #if HHI_DMM_PRED_TEX 88 124 Void xParseWedgePredTexDeltaInfo ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 89 125 Void xParseContourPredTexDeltaInfo( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); … … 106 142 Void parseSkipFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 107 143 Void parseSplitFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 108 #if MW_MVI_SIGNALLING_MODE == 0109 Void parseMvInheritanceFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );110 #endif111 144 Void parseMergeFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiPUIdx ); 112 145 Void parseMergeIndex ( TComDataCU* pcCU, UInt& ruiMergeIndex, UInt uiAbsPartIdx, UInt uiDepth ); 146 #if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI 113 147 Void parseMergeIndexMV ( TComDataCU* pcCU, UInt& ruiMergeIndex, UInt uiAbsPartIdx, UInt uiDepth ); 148 #endif 114 149 Void parseResPredFlag ( TComDataCU* pcCU, Bool& rbResPredFlag, UInt uiAbsPartIdx, UInt uiDepth ); 115 150 Void parsePartSize ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); … … 149 184 ContextModel3DBuffer m_cCUSkipFlagSCModel; 150 185 ContextModel3DBuffer m_cCUSplitFlagSCModel; 151 #if MW_MVI_SIGNALLING_MODE == 0152 ContextModel3DBuffer m_cCUMvInheritanceFlagSCModel;153 #endif154 186 ContextModel3DBuffer m_cCUMergeFlagExtSCModel; 155 187 ContextModel3DBuffer m_cCUMergeIdxExtSCModel; … … 196 228 #endif 197 229 ContextModel3DBuffer m_cViewIdxSCModel; 198 #if HHI_DMM_ INTRA230 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 199 231 ContextModel3DBuffer m_cIntraDMMSCModel; 200 232 ContextModel3DBuffer m_cIntraWedgeSCModel; -
trunk/source/Lib/TLibDecoder/TDecSlice.cpp
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibDecoder/TDecSlice.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibDecoder/TDecTop.cpp
r2 r5 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-2011, 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 1 34 /** \file TDecTop.cpp 2 35 \brief decoder class … … 258 291 m_cSliceDecoder.destroy(); 259 292 293 #if DEPTH_MAP_GENERATION 260 294 m_cDepthMapGenerator.destroy(); 295 #endif 296 #if HHI_INTER_VIEW_RESIDUAL_PRED 261 297 m_cResidualGenerator.destroy(); 298 #endif 262 299 } 263 300 … … 268 305 initROM(); 269 306 #if MTK_SAO 270 m_cGopDecoder. init( &m_cEntropyDecoder, &m_cSbacDecoder, &m_cBinCABAC, &m_cCavlcDecoder, &m_cSliceDecoder, &m_cLoopFilter, &m_cAdaptiveLoopFilter, &m_cSAO, &m_cDepthMapGenerator, &m_cResidualGenerator ); 307 m_cGopDecoder. init( &m_cEntropyDecoder, &m_cSbacDecoder, &m_cBinCABAC, &m_cCavlcDecoder, &m_cSliceDecoder, &m_cLoopFilter, &m_cAdaptiveLoopFilter, &m_cSAO 308 #if DEPTH_MAP_GENERATION 309 , &m_cDepthMapGenerator 310 #endif 311 #if HHI_INTER_VIEW_RESIDUAL_PRED 312 , &m_cResidualGenerator 313 #endif 314 ); 271 315 #else 272 m_cGopDecoder. init( &m_cEntropyDecoder, &m_cSbacDecoder, &m_cBinCABAC, &m_cCavlcDecoder, &m_cSliceDecoder, &m_cLoopFilter, &m_cAdaptiveLoopFilter, &m_cDepthMapGenerator, &m_cResidualGenerator ); 316 m_cGopDecoder. init( &m_cEntropyDecoder, &m_cSbacDecoder, &m_cBinCABAC, &m_cCavlcDecoder, &m_cSliceDecoder, &m_cLoopFilter, &m_cAdaptiveLoopFilter 317 #if DEPTH_MAP_GENERATION 318 , &m_cDepthMapGenerator 319 #endif 320 #if HHI_INTER_VIEW_RESIDUAL_PRED 321 , &m_cResidualGenerator 322 #endif 323 ); 273 324 #endif 274 325 m_cSliceDecoder.init( &m_cEntropyDecoder, &m_cCuDecoder ); … … 276 327 277 328 m_pcTAppDecTop = pcTAppDecTop; 329 #if DEPTH_MAP_GENERATION 278 330 m_cDepthMapGenerator.init( &m_cPrediction, m_pcTAppDecTop->getSPSAccess(), m_pcTAppDecTop->getAUPicAccess() ); 331 #endif 332 #if HHI_INTER_VIEW_RESIDUAL_PRED 279 333 m_cResidualGenerator.init( &m_cTrQuant, &m_cDepthMapGenerator ); 334 #endif 280 335 } 281 336 … … 283 338 { 284 339 m_cSPS = cSPS ; 285 #if SB_MEM_FIX286 340 if ( !m_cAdaptiveLoopFilter.isCreated()) 287 341 { … … 292 346 m_cLoopFilter. create( g_uiMaxCUDepth ); 293 347 } 294 #else295 m_cAdaptiveLoopFilter.create( m_cSPS.getWidth(), m_cSPS.getHeight(), g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth );296 #if MTK_SAO297 m_cSAO.create( m_cSPS.getWidth(), m_cSPS.getHeight(), g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth );298 #endif299 m_cLoopFilter. create( g_uiMaxCUDepth );300 #endif301 348 m_uiValidPS |= 1; 302 349 } … … 334 381 m_iMaxRefPicNum = getCodedPictureBufferSize( ); 335 382 383 #if DEPTH_MAP_GENERATION 336 384 Bool bNeedPrdDepthMapBuffer = ( !pcSlice->getSPS()->isDepth() && ( pcSlice->getSPS()->getViewId() == 0 || pcSlice->getSPS()->getPredDepthMapGeneration() > 0 ) ); 385 #endif 337 386 338 387 if (m_cListPic.size() < (UInt)m_iMaxRefPicNum) … … 340 389 rpcPic = new TComPic; 341 390 rpcPic->create ( pcSlice->getSPS()->getWidth(), pcSlice->getSPS()->getHeight(), g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth ); 391 #if DEPTH_MAP_GENERATION 342 392 if( bNeedPrdDepthMapBuffer ) 343 393 { 344 394 rpcPic->addPrdDepthMapBuffer(); 345 395 } 396 #endif 346 397 m_cListPic.pushBack( rpcPic ); 347 398 … … 372 423 rpcPic->getPicYuvRec()->setBorderExtension(false); 373 424 425 #if DEPTH_MAP_GENERATION 374 426 if( bNeedPrdDepthMapBuffer && !rpcPic->getPredDepthMap() ) 375 427 { 376 428 rpcPic->addPrdDepthMapBuffer(); 377 429 } 430 #endif 378 431 } 379 432 … … 397 450 { 398 451 pcPic->removeOriginalBuffer (); 452 #if HHI_INTER_VIEW_MOTION_PRED 399 453 pcPic->removeOrgDepthMapBuffer(); 454 #endif 455 #if HHI_INTER_VIEW_RESIDUAL_PRED 400 456 pcPic->removeResidualBuffer (); 457 #endif 458 #if HHI_INTERVIEW_SKIP 401 459 pcPic->removeUsedPelsMapBuffer(); 402 } 403 }404 460 #endif 461 } 462 } 405 463 406 464 #if AMVP_BUFFERCOMPRESS … … 492 550 493 551 // create ALF temporary buffer 494 #if SB_MEM_FIX495 552 if ( !m_cAdaptiveLoopFilter.isCreated()) 496 553 { … … 501 558 m_cLoopFilter. create( g_uiMaxCUDepth ); 502 559 } 503 #else504 m_cAdaptiveLoopFilter.create( m_cSPS.getWidth(), m_cSPS.getHeight(), g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth );505 #if MTK_SAO506 m_cSAO.create( m_cSPS.getWidth(), m_cSPS.getHeight(), g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth );507 #endif508 m_cLoopFilter. create( g_uiMaxCUDepth );509 #endif510 560 m_uiValidPS |= 1; 511 561 … … 594 644 m_cSliceDecoder.create( m_apcSlicePilot, m_apcSlicePilot->getSPS()->getWidth(), m_apcSlicePilot->getSPS()->getHeight(), g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth ); 595 645 646 #if DEPTH_MAP_GENERATION 596 647 m_cDepthMapGenerator.create( true, m_apcSlicePilot->getSPS()->getWidth(), m_apcSlicePilot->getSPS()->getHeight(), g_uiMaxCUDepth, g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiBitDepth + g_uiBitIncrement ); 648 #endif 649 #if HHI_INTER_VIEW_RESIDUAL_PRED 597 650 m_cResidualGenerator.create( true, m_apcSlicePilot->getSPS()->getWidth(), m_apcSlicePilot->getSPS()->getHeight(), g_uiMaxCUDepth, g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiBitDepth + g_uiBitIncrement ); 651 #endif 598 652 } 599 653 … … 663 717 pcPic->setCurrSliceIdx(m_uiSliceIdx); 664 718 665 #if HHI_DMM_ INTRA666 if ( m_cSPS.getUseD epthModelModes() && g_aacWedgeLists.empty() && m_bIsDepth )719 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 720 if ( m_cSPS.getUseDMM() && g_aacWedgeLists.empty() && m_bIsDepth ) 667 721 { 668 722 initWedgeLists(); -
trunk/source/Lib/TLibDecoder/TDecTop.h
r2 r5 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-2011, 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 1 34 2 35 … … 66 99 Bool m_bGopSizeSet; 67 100 int m_iMaxRefPicNum; 68 101 69 102 #if DCM_DECODING_REFRESH 70 103 Bool m_bRefreshPending; ///< refresh pending flag … … 80 113 TComPPS m_cPPS; 81 114 TComSlice* m_apcSlicePilot; 82 115 83 116 SEImessages *m_SEIs; ///< "all" SEI messages. If not NULL, we own the object. 84 117 … … 98 131 TComSampleAdaptiveOffset m_cSAO; 99 132 #endif 133 #if DEPTH_MAP_GENERATION 100 134 TComDepthMapGenerator m_cDepthMapGenerator; 135 #endif 136 #if HHI_INTER_VIEW_RESIDUAL_PRED 101 137 TComResidualGenerator m_cResidualGenerator; 138 #endif 102 139 103 140 Bool m_bIsDepth; … … 119 156 TDecTop(); 120 157 virtual ~TDecTop(); 121 158 122 159 Void create (); 123 160 Void destroy (); 124 161 125 162 void setPictureDigestEnabled(bool enabled) { m_cGopDecoder.setPictureDigestEnabled(enabled); } 126 163 127 164 Void init( TAppDecTop* pcTAppDecTop, Bool bFirstInstance = true ); 128 165 #if DCM_SKIP_DECODING_FRAMES … … 131 168 Void decode ( Bool bEos, TComBitstream* pcBitstream, UInt& ruiPOC, TComList<TComPic*>*& rpcListPic, NalUnitType& reNalUnitType, TComSPS& cComSPS ); 132 169 #endif 133 170 134 171 TComSPS *getSPS() { return (m_uiValidPS & 1) ? &m_cSPS : NULL; } 135 172 136 173 Void deletePicBuffer(); 137 174 … … 149 186 Void setCamParsCollector( CamParsCollector* pcCamParsCollector ) { m_pcCamParsCollector = pcCamParsCollector; } 150 187 151 // SB152 188 TComList<TComPic*>* getListPic () { return &m_cListPic; } 153 189 TAppDecTop* getDecTop ( ){ return m_pcTAppDecTop ;}; … … 161 197 protected: 162 198 Void xGetNewPicBuffer (TComSlice* pcSlice, TComPic*& rpcPic); 163 199 164 200 };// END CLASS DEFINITION TDecTop 165 201 -
trunk/source/Lib/TLibEncoder/SEIwrite.cpp
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibEncoder/SEIwrite.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibEncoder/TEncAdaptiveLoopFilter.cpp
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibEncoder/TEncAdaptiveLoopFilter.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibEncoder/TEncAnalyze.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibEncoder/TEncBinCoder.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibEncoder/TEncBinCoderCABAC.cpp
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibEncoder/TEncBinCoderCABAC.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibEncoder/TEncCavlc.cpp
r2 r5 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-2011, 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 1 34 2 35 … … 258 291 xWriteFlag ( (pcSPS->getUseALF ()) ? 1 : 0 ); 259 292 xWriteFlag ( (pcSPS->getUseDQP ()) ? 1 : 0 ); 260 #if ! SB_NO_LowDelayCoding293 #if !HHI_NO_LowDelayCoding 261 294 xWriteFlag ( (pcSPS->getUseLDC ()) ? 1 : 0 ); 262 295 #endif … … 302 335 xWriteUvlc( pcSPS->getViewId() ); 303 336 xWriteSvlc( pcSPS->getViewOrderIdx() ); 304 #if HHI_DMM_INTRA 305 xWriteFlag( pcSPS->getUseDepthModelModes() ? 1 : 0 ); 306 #endif 337 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 338 xWriteFlag( pcSPS->getUseDMM() ? 1 : 0 ); 339 #endif 340 #if HHI_MPI 307 341 xWriteFlag( pcSPS->getUseMVI() ? 1 : 0 ); 342 #endif 308 343 } 309 344 else … … 324 359 } 325 360 } 361 #if DEPTH_MAP_GENERATION 326 362 xWriteUvlc( pcSPS->getPredDepthMapGeneration() ); 327 363 if( pcSPS->getPredDepthMapGeneration() ) … … 333 369 xWriteSvlc( pcSPS->getPdmOffset ()[ uiId ] ); 334 370 } 371 #if HHI_INTER_VIEW_MOTION_PRED 335 372 xWriteUvlc ( pcSPS->getMultiviewMvPredMode() ); 373 #endif 374 #if HHI_INTER_VIEW_RESIDUAL_PRED 336 375 xWriteFlag ( pcSPS->getMultiviewResPredMode() ); 337 } 376 #endif 377 } 378 #endif 338 379 } 339 380 } … … 686 727 687 728 729 #if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI 688 730 Void 689 731 TEncCavlc::codeMergeIndexMV( TComDataCU* pcCU, UInt uiAbsPartIdx ) … … 691 733 UInt uiNumCand = 0; 692 734 UInt uiMergeIdx = pcCU->getMergeIndex( uiAbsPartIdx ); 693 #if MW_MVI_SIGNALLING_MODE == 1735 #if HHI_MPI 694 736 const Bool bMVIAvailable = pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE; 695 const UInt uiMviMergePos = bMVIAvailable ? MVI_MERGE_POS : MRG_MAX_NUM_CANDS;737 const UInt uiMviMergePos = bMVIAvailable ? HHI_MPI_MERGE_POS : MRG_MAX_NUM_CANDS; 696 738 if( bMVIAvailable ) 697 739 { … … 699 741 const Bool bUseMVI = pcCU->getTextureModeDepth( uiAbsPartIdx ) != -1; 700 742 if( bUseMVI ) 701 uiMergeIdx = MVI_MERGE_POS;702 else if( uiMergeIdx >= MVI_MERGE_POS )743 uiMergeIdx = HHI_MPI_MERGE_POS; 744 else if( uiMergeIdx >= HHI_MPI_MERGE_POS ) 703 745 uiMergeIdx++; 704 746 } … … 754 796 } 755 797 } 756 798 #endif 757 799 758 800 … … 764 806 Void TEncCavlc::codeMergeIndex ( TComDataCU* pcCU, UInt uiAbsPartIdx ) 765 807 { 766 #if MW_MVI_SIGNALLING_MODE == 1 808 #if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI 809 #if HHI_INTER_VIEW_MOTION_PRED && HHI_MPI 767 810 if( ( pcCU->getSlice()->getSPS()->getViewId() > 0 && ( pcCU->getSlice()->getSPS()->getMultiviewMvPredMode() & PDM_USE_FOR_MERGE ) == PDM_USE_FOR_MERGE ) || 768 811 ( pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE && pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_2Nx2N ) ) 812 #elif HHI_MPI 813 if( pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE && pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_2Nx2N ) 769 814 #else 770 815 if( pcCU->getSlice()->getSPS()->getViewId() > 0 && ( pcCU->getSlice()->getSPS()->getMultiviewMvPredMode() & PDM_USE_FOR_MERGE ) == PDM_USE_FOR_MERGE ) … … 774 819 return; 775 820 } 821 #endif 776 822 777 823 Bool bLeftInvolved = false; … … 833 879 834 880 881 #if HHI_INTER_VIEW_RESIDUAL_PRED 835 882 Void 836 883 TEncCavlc::codeResPredFlag( TComDataCU* pcCU, UInt uiAbsPartIdx ) … … 839 886 xWriteFlag( uiSymbol ); 840 887 } 841 888 #endif 842 889 843 890 Void TEncCavlc::codeAlfCtrlFlag( TComDataCU* pcCU, UInt uiAbsPartIdx ) … … 940 987 #endif 941 988 } 942 943 #if MW_MVI_SIGNALLING_MODE == 0944 Void TEncCavlc::codeMvInheritanceFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )945 {946 const Int iTextureModeDepth = pcCU->getTextureModeDepth( uiAbsPartIdx );947 if( iTextureModeDepth != -1 && uiDepth > iTextureModeDepth )948 return;949 UInt uiSymbol = iTextureModeDepth == uiDepth ? 1 : 0;950 xWriteFlag( uiSymbol );951 }952 #endif953 989 954 990 Void TEncCavlc::codeSplitFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) -
trunk/source/Lib/TLibEncoder/TEncCavlc.h
r2 r5 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-2011, 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 1 34 2 35 … … 193 226 #endif 194 227 Void codeSkipFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 195 #if MW_MVI_SIGNALLING_MODE == 0196 Void codeMvInheritanceFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );197 #endif198 228 Void codeMergeFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 199 229 Void codeMergeIndex ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 230 #if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI 200 231 Void codeMergeIndexMV ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 232 #endif 233 #if HHI_INTER_VIEW_RESIDUAL_PRED 201 234 Void codeResPredFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 235 #endif 202 236 Void codeAlfCtrlFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 203 237 #if TSB_ALF_HEADER -
trunk/source/Lib/TLibEncoder/TEncCfg.h
r2 r5 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-2011, 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 1 34 2 35 /** \file TEncCfg.h … … 41 74 Int m_iRateGOPSize; 42 75 43 // SB44 76 std::string m_cInputFormatString ; 45 77 … … 75 107 Int m_iMaxDeltaQP; // Max. absolute delta QP (1:default) 76 108 77 //GTVSO109 #if HHI_VSO 78 110 //====== View Synthesis Optimization ====== 79 111 Bool m_bForceLambdaScale; 80 #if RDO_DIST_INT112 #if HHI_VSO_DIST_INT 81 113 Bool m_bAllowNegDist; 82 114 #endif 83 115 Double m_dLambdaScaleVSO; 84 116 UInt m_uiVSOMode; 85 //GT VSO end 117 #endif 86 118 87 119 //====== Tool list ======== … … 98 130 #endif 99 131 Bool m_bUseRDOQ; 100 #if ! SB_NO_LowDelayCoding132 #if !HHI_NO_LowDelayCoding 101 133 Bool m_bUseLDC; 102 134 #endif … … 104 136 Bool m_bUseFastEnc; 105 137 106 //GTVSO138 #if HHI_VSO 107 139 Bool m_bUseVSO; 108 //GT VSO end 109 110 Bool m_bOmitUnusedBlocks; 140 #endif 111 141 Bool m_bUseMRG; // SOPH: 112 142 #if LM_CHROMA … … 126 156 Bool m_bUseConstrainedIntraPred; 127 157 #endif 128 #if HHI_DMM_INTRA 129 Bool m_bUseDepthModelModes; 130 #endif 158 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 159 Bool m_bUseDMM; 160 #endif 161 #if HHI_MPI 131 162 Bool m_bUseMVI; 163 #endif 132 164 133 165 //====== Slice ======== … … 160 192 Int** m_aaiCodedOffset; 161 193 194 #if DEPTH_MAP_GENERATION 162 195 UInt m_uiPredDepthMapGeneration; 163 UInt m_uiMultiviewMvPredMode;164 196 UInt m_uiPdmPrecision; 165 197 Int** m_aaiPdmScaleNomDelta; 166 198 Int** m_aaiPdmOffset; 199 #endif 200 #if HHI_INTER_VIEW_MOTION_PRED 201 UInt m_uiMultiviewMvPredMode; 167 202 UInt m_uiMultiviewMvRegMode; 168 203 Double m_dMultiviewMvRegLambdaScale; 204 #endif 205 #if HHI_INTER_VIEW_RESIDUAL_PRED 169 206 UInt m_uiMultiviewResPredMode; 207 #endif 170 208 171 209 PicOrderCnt m_iQpChangeFrame; 172 210 Int m_iQpChangeOffsetVideo; 173 211 Int m_iQpChangeOffsetDepth; 174 #if SB_INTERVIEW_SKIP212 #if HHI_INTERVIEW_SKIP 175 213 UInt m_uiInterViewSkip; 176 #if SB_INTERVIEW_SKIP_LAMBDA_SCALE214 #if HHI_INTERVIEW_SKIP_LAMBDA_SCALE 177 215 Double m_dInterViewSkipLambdaScale; 178 216 #endif … … 205 243 Void setCodedOffset ( Int** p ) { m_aaiCodedOffset = p; } 206 244 245 #if DEPTH_MAP_GENERATION 207 246 Void setPredDepthMapGeneration ( UInt u ) { m_uiPredDepthMapGeneration = u; } 208 Void setMultiviewMvPredMode ( UInt u ) { m_uiMultiviewMvPredMode = u; }209 247 Void setPdmPrecision ( UInt u ) { m_uiPdmPrecision = u; } 210 248 Void setPdmScaleNomDelta ( Int** p ) { m_aaiPdmScaleNomDelta = p; } 211 249 Void setPdmOffset ( Int** p ) { m_aaiPdmOffset = p; } 250 #endif 251 #if HHI_INTER_VIEW_MOTION_PRED 252 Void setMultiviewMvPredMode ( UInt u ) { m_uiMultiviewMvPredMode = u; } 212 253 Void setMultiviewMvRegMode ( UInt u ) { m_uiMultiviewMvRegMode = u; } 213 254 Void setMultiviewMvRegLambdaScale ( Double d) { m_dMultiviewMvRegLambdaScale = d; } 255 #endif 256 #if HHI_INTER_VIEW_RESIDUAL_PRED 214 257 Void setMultiviewResPredMode ( UInt u ) { m_uiMultiviewResPredMode = u; } 215 216 #if SB_INTERVIEW_SKIP 258 #endif 259 260 #if HHI_INTERVIEW_SKIP 217 261 Void setInterViewSkip ( UInt u ) { m_uiInterViewSkip = u; } 218 Bool getInterViewSkip ( ) { return bool(m_uiInterViewSkip) ;}219 #if SB_INTERVIEW_SKIP_LAMBDA_SCALE262 Bool getInterViewSkip ( ) { return (m_uiInterViewSkip?true:false) ;} 263 #if HHI_INTERVIEW_SKIP_LAMBDA_SCALE 220 264 Void setInterViewSkipLambdaScale ( UInt u ) { m_dInterViewSkipLambdaScale = u; } 221 265 Double getInterViewSkipLambdaScale () { return m_dInterViewSkipLambdaScale; } … … 254 298 Void setMaxDeltaQP ( Int i ) { m_iMaxDeltaQP = i; } 255 299 256 //GTVSO300 #if HHI_VSO 257 301 //==== VSO ========== 258 302 Void setVSOMode ( UInt ui ) { m_uiVSOMode = ui; } 259 303 Void setForceLambdaScaleVSO ( Bool b ) { m_bForceLambdaScale = b; }; 260 304 Void setLambdaScaleVSO ( Double d ) { m_dLambdaScaleVSO = d; }; 261 #if RDO_DIST_INT305 #if HHI_VSO_DIST_INT 262 306 Void setAllowNegDist ( Bool b ) { m_bAllowNegDist = b; }; 263 307 #endif 264 //GT VSO end 308 #endif 265 309 266 310 //====== Sequence ======== … … 306 350 Int getMaxDeltaQP () { return m_iMaxDeltaQP; } 307 351 352 #if HHI_INTER_VIEW_MOTION_PRED 308 353 UInt getMultiviewMvRegMode () { return m_uiMultiviewMvRegMode; } 309 354 Double getMultiviewMvRegLambdaScale () { return m_dMultiviewMvRegLambdaScale; } 310 311 //GT VSO 355 #endif 356 357 #if HHI_VSO 312 358 //==== VSO ========== 313 359 UInt getVSOMode () { return m_uiVSOMode; } 314 360 Bool getForceLambdaScaleVSO () { return m_bForceLambdaScale; } 315 361 Double getLambdaScaleVSO () { return m_dLambdaScaleVSO; } 316 #if RDO_DIST_INT362 #if HHI_VSO_DIST_INT 317 363 Bool getAllowNegDist () { return m_bAllowNegDist; } 318 364 #endif 319 320 //GT VSO end 365 #endif 321 366 322 367 //==== Tool list ======== … … 330 375 #endif 331 376 Void setUseRDOQ ( Bool b ) { m_bUseRDOQ = b; } 332 #if ! SB_NO_LowDelayCoding377 #if !HHI_NO_LowDelayCoding 333 378 Void setUseLDC ( Bool b ) { m_bUseLDC = b; } 334 379 #endif 335 380 Void setUsePAD ( Bool b ) { m_bUsePAD = b; } 336 381 Void setUseFastEnc ( Bool b ) { m_bUseFastEnc = b; } 337 //GTVSO382 #if HHI_VSO 338 383 Void setUseVSO ( Bool b ) { m_bUseVSO = b; } 339 //GT VSO end 384 #endif 340 385 Void setUseMRG ( Bool b ) { m_bUseMRG = b; } // SOPH: 341 386 #if CONSTRAINED_INTRA_PRED … … 344 389 Void setdQPs ( Int* p ) { m_aidQP = p; } 345 390 Void setDeltaQpRD ( UInt u ) {m_uiDeltaQpRD = u; } 346 347 Void setOmitUnusedBlocks ( Bool b ) { m_bOmitUnusedBlocks = b; }348 391 349 392 Bool getUseSBACRD () { return m_bUseSBACRD; } … … 360 403 #endif 361 404 Bool getUseRDOQ () { return m_bUseRDOQ; } 362 #if ! SB_NO_LowDelayCoding405 #if !HHI_NO_LowDelayCoding 363 406 Bool getUseLDC () { return m_bUseLDC; } 364 407 #endif … … 366 409 Bool getUseFastEnc () { return m_bUseFastEnc; } 367 410 368 //GTVSO411 #if HHI_VSO 369 412 Bool getUseVSO () { return m_bUseVSO; } 370 //GT VSO end 413 #endif 371 414 Bool getUseMRG () { return m_bUseMRG; } // SOPH: 372 415 #if CONSTRAINED_INTRA_PRED 373 416 Bool getUseConstrainedIntraPred () { return m_bUseConstrainedIntraPred; } 374 417 #endif 375 #if HHI_DMM_INTRA 376 Void setUseDepthModelModes( Bool b) { m_bUseDepthModelModes = b; } 377 Bool getUseDepthModelModes() { return m_bUseDepthModelModes; } 378 #endif 379 380 Bool getOmitUnusedBlocks () { return m_bOmitUnusedBlocks; } 418 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 419 Void setUseDMM( Bool b) { m_bUseDMM = b; } 420 Bool getUseDMM() { return m_bUseDMM; } 421 #endif 381 422 382 423 #if LM_CHROMA … … 413 454 Bool getUseSAO () {return m_bUseSAO;} 414 455 #endif 456 #if HHI_MPI 415 457 Void setUseMVI (Bool bVal) {m_bUseMVI = bVal;} 458 #endif 416 459 417 460 void setPictureDigestEnabled(bool b) { m_pictureDigestEnabled = b; } -
trunk/source/Lib/TLibEncoder/TEncCu.cpp
r2 r5 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-2011, 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 */ 1 33 2 34 … … 36 68 m_ppcResPredTmp = new TComYuv*[m_uhTotalDepth-1]; 37 69 38 #if MW_MVI_SIGNALLING_MODE == 170 #if HHI_MPI 39 71 m_puhDepthSaved = new UChar[1ll<<( ( m_uhTotalDepth - 1 )<<1 )]; 40 72 m_puhWidthSaved = new UChar[1ll<<( ( m_uhTotalDepth - 1 )<<1 )]; … … 77 109 Int i; 78 110 79 #if MW_MVI_SIGNALLING_MODE == 1111 #if HHI_MPI 80 112 delete[] m_puhDepthSaved; m_puhDepthSaved = NULL; 81 113 delete[] m_puhWidthSaved; m_puhWidthSaved = NULL; … … 245 277 246 278 247 //GTVSO279 #if HHI_VSO 248 280 if ( m_pcRdCost->getUseLambdaScaleVSO() ) 249 281 { … … 251 283 } 252 284 else 285 #endif 253 286 { 254 287 m_ppcBestCU[0]->getTotalCost() = m_pcRdCost->calcRdCost( m_ppcBestCU[0]->getTotalBits(), m_ppcBestCU[0]->getTotalDistortion() ); 255 288 } 256 //GT VSO end 289 257 290 fBestCost = m_ppcBestCU[0]->getTotalCost(); 258 291 … … 276 309 m_ppcBestCU[0]->getTotalBits() += m_pcEntropyCoder->getNumberOfWrittenBits(); // dQP bits 277 310 278 //GTVSO311 #if HHI_VSO 279 312 if (m_pcRdCost->getUseLambdaScaleVSO()) 280 313 { … … 282 315 } 283 316 else 317 #endif 284 318 { 285 319 m_ppcBestCU[0]->getTotalCost() = m_pcRdCost->calcRdCost( m_ppcBestCU[0]->getTotalBits(), m_ppcBestCU[0]->getTotalDistortion() ); 286 320 } 287 //GT VSO end288 321 289 322 if ( fBestCost > m_ppcBestCU[0]->getTotalCost() ) … … 309 342 m_ppcBestCU[0]->getTotalBits() += m_pcEntropyCoder->getNumberOfWrittenBits(); // dQP bits 310 343 311 //GTVSO344 #if HHI_VSO 312 345 if (m_pcRdCost->getUseLambdaScaleVSO()) 313 346 { … … 315 348 } 316 349 else 350 #endif 317 351 { 318 352 m_ppcBestCU[0]->getTotalCost() = m_pcRdCost->calcRdCost( m_ppcBestCU[0]->getTotalBits(), m_ppcBestCU[0]->getTotalDistortion() ); 319 353 } 320 //GT VSO end321 354 } 322 355 } … … 415 448 UInt uiBPelY = uiTPelY + rpcBestCU->getHeight(0) - 1; 416 449 417 #if ( SB_INTERVIEW_SKIP)450 #if ( HHI_INTERVIEW_SKIP) 418 451 Bool bFullyRenderedSec = true ; 419 452 if( m_pcEncCfg->getInterViewSkip() ) … … 445 478 bFullyRenderedSec = false ; 446 479 } 447 #if SB_INTERVIEW_SKIP_LAMBDA_SCALE480 #if HHI_INTERVIEW_SKIP_LAMBDA_SCALE 448 481 if( bFullyRenderedSec ) 449 482 { … … 463 496 if( rpcBestCU->getSlice()->getSliceType() != I_SLICE ) 464 497 { 498 #if HHI_INTER_VIEW_RESIDUAL_PRED 465 499 // check availability of residual prediction 466 500 Bool bResPredAvailable = false; … … 476 510 { 477 511 Bool bResPredFlag = ( uiResPrdId > 0 ); 512 #endif 478 513 479 514 // SKIP … … 483 518 { 484 519 #if !HHI_MRG_SKIP 520 #if HHI_INTER_VIEW_RESIDUAL_PRED 485 521 rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag ); 522 #endif 486 523 xCheckRDCostAMVPSkip ( rpcBestCU, rpcTempCU ); rpcTempCU->initEstData(); 487 524 #endif 525 #if HHI_INTER_VIEW_RESIDUAL_PRED 488 526 rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag ); 489 #if SB_INTERVIEW_SKIP 527 #endif 528 #if HHI_INTERVIEW_SKIP 490 529 xCheckRDCostMerge2Nx2N( rpcBestCU, rpcTempCU, bFullyRenderedSec ); rpcTempCU->initEstData(); 491 530 #else … … 495 534 else 496 535 { 536 #if HHI_INTER_VIEW_RESIDUAL_PRED 497 537 rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag ); 538 #endif 498 539 xCheckRDCostAMVPSkip ( rpcBestCU, rpcTempCU ); rpcTempCU->initEstData(); 499 540 } … … 514 555 { 515 556 #if HHI_DISABLE_INTER_NxN_SPLIT 557 #if HHI_INTER_VIEW_RESIDUAL_PRED 516 558 rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag ); 517 #if SB_INTERVIEW_SKIP 559 #endif 560 #if HHI_INTERVIEW_SKIP 518 561 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2Nx2N, bFullyRenderedSec ); rpcTempCU->initEstData(); 519 562 #else … … 522 565 if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth ) 523 566 { 567 #if HHI_INTER_VIEW_RESIDUAL_PRED 524 568 rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag ); 525 #if SB_INTERVIEW_SKIP 569 #endif 570 #if HHI_INTERVIEW_SKIP 526 571 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2Nx2N, bFullyRenderedSec ); rpcTempCU->initEstData(); 527 572 #else … … 530 575 } 531 576 #else 577 #if HHI_INTER_VIEW_RESIDUAL_PRED 532 578 rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag ); 533 #if SB_INTERVIEW_SKIP 579 #endif 580 #if HHI_INTERVIEW_SKIP 534 581 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2Nx2N, bFullyRenderedSec ); rpcTempCU->initEstData(); 535 582 #else 536 583 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2Nx2N ); rpcTempCU->initEstData(); 537 584 #endif 585 #if HHI_INTER_VIEW_RESIDUAL_PRED 538 586 rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag ); 539 #if SB_INTERVIEW_SKIP 587 #endif 588 #if HHI_INTERVIEW_SKIP 540 589 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_NxN, bFullyRenderedSec ); rpcTempCU->initEstData(); 541 590 #else … … 549 598 #endif 550 599 { // 2NxN, Nx2N 600 #if HHI_INTER_VIEW_RESIDUAL_PRED 551 601 rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag ); 552 #if SB_INTERVIEW_SKIP 602 #endif 603 #if HHI_INTERVIEW_SKIP 553 604 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_Nx2N, bFullyRenderedSec ); rpcTempCU->initEstData(); 554 605 #else 555 606 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_Nx2N ); rpcTempCU->initEstData(); 556 607 #endif 608 #if HHI_INTER_VIEW_RESIDUAL_PRED 557 609 rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag ); 558 #if SB_INTERVIEW_SKIP 610 #endif 611 #if HHI_INTERVIEW_SKIP 559 612 xCheckRDCostInter ( rpcBestCU, rpcTempCU, SIZE_2NxN, bFullyRenderedSec ); rpcTempCU->initEstData(); 560 613 #else … … 563 616 } 564 617 618 #if HHI_INTER_VIEW_RESIDUAL_PRED 565 619 } // uiResPrdId 620 #endif 566 621 } 567 622 … … 570 625 { 571 626 // speedup for inter frames 572 #if SB_INTERVIEW_SKIP627 #if HHI_INTERVIEW_SKIP 573 628 if( ( rpcBestCU->getSlice()->getSliceType() == I_SLICE || 574 629 rpcBestCU->getCbf( 0, TEXT_LUMA ) != 0 || … … 596 651 597 652 m_pcEntropyCoder->resetBits(); 598 #if MW_MVI_SIGNALLING_MODE == 0599 if( rpcBestCU->getSlice()->getSPS()->getUseMVI() && rpcBestCU->getSlice()->getSliceType() != I_SLICE )600 m_pcEntropyCoder->encodeMvInheritanceFlag( rpcBestCU, 0, uiDepth, true );601 #endif602 653 m_pcEntropyCoder->encodeSplitFlag( rpcBestCU, 0, uiDepth, true ); 603 654 rpcBestCU->getTotalBits() += m_pcEntropyCoder->getNumberOfWrittenBits(); // split bits 604 655 605 //GTVSO656 #if HHI_VSO 606 657 if (m_pcRdCost->getUseLambdaScaleVSO()) 607 658 { … … 609 660 } 610 661 else 611 { 612 #if SB_INTERVIEW_SKIP 662 #endif 663 { 664 #if HHI_INTERVIEW_SKIP 613 665 if( m_pcEncCfg->getInterViewSkip()) 614 666 { … … 631 683 rpcBestCU->getTotalCost() = m_pcRdCost->calcRdCost( rpcBestCU->getTotalBits(), rpcBestCU->getTotalDistortion() ); 632 684 } 633 //GT VSO end685 634 686 635 687 // accumulate statistics for early skip … … 643 695 } 644 696 } 645 #if MW_MVI_SIGNALLING_MODE == 0 646 if( rpcBestCU->getSlice()->getSPS()->getUseMVI() && rpcBestCU->getSlice()->getSliceType() != I_SLICE ) 647 { 648 xCheckRDCostMvInheritance( rpcBestCU, rpcTempCU, uiDepth, false ); rpcTempCU->initEstData(); 649 } 650 #elif MW_MVI_SIGNALLING_MODE == 1 697 #if HHI_MPI 651 698 if( rpcBestCU->getSlice()->getSPS()->getUseMVI() && rpcBestCU->getSlice()->getSliceType() != I_SLICE ) 652 699 { … … 666 713 if( bTrySplit && uiDepth < g_uiMaxCUDepth - g_uiAddCUDepth ) 667 714 { 715 #if HHI_VSO 668 716 // reset Model 669 717 if( m_pcRdCost->getUseRenModel() ) … … 675 723 m_pcRdCost->setRenModelData( m_ppcBestCU[uiDepth], 0, piSrc, uiSrcStride, uiWidth, uiHeight ); 676 724 } 725 #endif 677 726 678 727 UChar uhNextDepth = uiDepth+1; … … 701 750 xCompressCU( pcSubBestPartCU, pcSubTempPartCU, uhNextDepth ); 702 751 752 #if HHI_VSO 703 753 if( m_pcRdCost->getUseRenModel() ) 704 754 { … … 709 759 m_pcRdCost->setRenModelData( pcSubBestPartCU, 0, piSrc, uiSrcStride, uiWidth, uiHeight ); 710 760 } 761 #endif 711 762 rpcTempCU->copyPartFrom( pcSubBestPartCU, uiPartUnitIdx, uhNextDepth ); // Keep best part data to current temporary data. 712 763 xCopyYuv2Tmp( pcSubBestPartCU->getTotalNumPart()*uiPartUnitIdx, uhNextDepth ); … … 718 769 m_pcEntropyCoder->resetBits(); 719 770 m_pcEntropyCoder->encodeSplitFlag( rpcTempCU, 0, uiDepth, true ); 720 #if MW_MVI_SIGNALLING_MODE == 0721 if( rpcBestCU->getSlice()->getSPS()->getUseMVI() && rpcBestCU->getSlice()->getSliceType() != I_SLICE )722 m_pcEntropyCoder->encodeMvInheritanceFlag( rpcTempCU, 0, uiDepth, true );723 #endif724 771 725 772 rpcTempCU->getTotalBits() += m_pcEntropyCoder->getNumberOfWrittenBits(); // split bits 726 773 } 727 774 728 #if SB_INTERVIEW_SKIP_LAMBDA_SCALE775 #if HHI_INTERVIEW_SKIP_LAMBDA_SCALE 729 776 if( bFullyRenderedSec ) 730 777 { … … 736 783 } 737 784 #endif 738 //GTVSO785 #if HHI_VSO 739 786 if ( m_pcRdCost->getUseLambdaScaleVSO()) 740 787 { … … 742 789 } 743 790 else 791 #endif 744 792 { 745 793 rpcTempCU->getTotalCost() = m_pcRdCost->calcRdCost( rpcTempCU->getTotalBits(), rpcTempCU->getTotalDistortion() ); 746 794 } 747 //GT VSO end748 795 749 796 if( m_bUseSBACRD ) … … 753 800 xCheckBestMode( rpcBestCU, rpcTempCU, uiDepth ); // RD compare current larger prediction 754 801 802 #if HHI_VSO 755 803 if( m_pcRdCost->getUseRenModel() ) 756 804 { … … 761 809 m_pcRdCost->setRenModelData( rpcBestCU, 0, piSrc, uiSrcStride, uiWidth, uiHeight ); 762 810 } 811 #endif 763 812 } // with sub partitioned prediction. 764 813 … … 793 842 UInt uiBPelY = uiTPelY + (g_uiMaxCUHeight>>uiDepth) - 1; 794 843 795 #if MW_MVI_SIGNALLING_MODE == 0796 if( pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE )797 {798 m_pcEntropyCoder->encodeMvInheritanceFlag( pcCU, uiAbsPartIdx, uiDepth );799 }800 #endif801 844 if( ( uiRPelX < pcCU->getSlice()->getSPS()->getWidth() ) && ( uiBPelY < pcCU->getSlice()->getSPS()->getHeight() ) ) 802 845 { 846 #if HHI_MPI 803 847 if( pcCU->getTextureModeDepth( uiAbsPartIdx ) == -1 || uiDepth < pcCU->getTextureModeDepth( uiAbsPartIdx ) ) 848 #endif 804 849 m_pcEntropyCoder->encodeSplitFlag( pcCU, uiAbsPartIdx, uiDepth ); 805 850 } … … 809 854 } 810 855 811 #if MW_MVI_SIGNALLING_MODE == 1856 #if HHI_MPI 812 857 if( uiDepth == pcCU->getTextureModeDepth( uiAbsPartIdx ) ) 813 858 { … … 870 915 #endif 871 916 917 #if HHI_MPI 872 918 if( !pcCU->getSlice()->isIntra() && pcCU->getTextureModeDepth( uiAbsPartIdx ) == -1 ) 919 #else 920 if( !pcCU->getSlice()->isIntra() ) 921 #endif 873 922 { 874 923 m_pcEntropyCoder->encodeSkipFlag( pcCU, uiAbsPartIdx ); … … 889 938 } 890 939 #endif 940 #if HHI_INTER_VIEW_RESIDUAL_PRED 891 941 m_pcEntropyCoder->encodeResPredFlag( pcCU, uiAbsPartIdx, 0 ); 942 #endif 892 943 return; 893 944 } 945 #if HHI_MPI 894 946 if( pcCU->getTextureModeDepth( uiAbsPartIdx ) == -1 ) 895 947 { 948 #endif 896 949 m_pcEntropyCoder->encodePredMode( pcCU, uiAbsPartIdx ); 897 950 … … 901 954 m_pcEntropyCoder->encodePredInfo( pcCU, uiAbsPartIdx ); 902 955 956 #if HHI_INTER_VIEW_RESIDUAL_PRED 903 957 if( !pcCU->isIntra( uiAbsPartIdx ) ) 904 958 { 905 959 m_pcEntropyCoder->encodeResPredFlag( pcCU, uiAbsPartIdx, 0 ); 906 960 } 907 } 961 #endif 962 #if HHI_MPI 963 } 964 #endif 908 965 909 966 // Encode Coefficients … … 915 972 UChar uhDepth = rpcTempCU->getDepth( 0 ); 916 973 974 #if HHI_VSO 917 975 if( m_pcRdCost->getUseRenModel() ) 918 976 { … … 923 981 m_pcRdCost->setRenModelData( rpcTempCU, 0, piSrc, uiSrcStride, uiWidth, uiHeight ); 924 982 } 983 #endif 925 984 926 985 rpcTempCU->setPredModeSubParts( MODE_SKIP, 0, uhDepth ); … … 950 1009 * \returns Void 951 1010 */ 952 #if SB_INTERVIEW_SKIP1011 #if HHI_INTERVIEW_SKIP 953 1012 Void TEncCu::xCheckRDCostMerge2Nx2N( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, Bool bSkipRes ) 954 1013 #else … … 961 1020 UInt uiNeighbourCandIdx[MRG_MAX_NUM_CANDS]; //MVs with same idx => same cand 962 1021 1022 #if HHI_INTER_VIEW_RESIDUAL_PRED 963 1023 Bool bResPrdAvail = rpcTempCU->getResPredAvail( 0 ); 964 1024 Bool bResPrdFlag = rpcTempCU->getResPredFlag ( 0 ); 1025 #endif 965 1026 966 1027 for( UInt ui = 0; ui < MRG_MAX_NUM_CANDS; ++ui ) … … 971 1032 UChar uhDepth = rpcTempCU->getDepth( 0 ); 972 1033 1034 #if HHI_VSO 973 1035 if( m_pcRdCost->getUseRenModel() ) 974 1036 { … … 979 1041 m_pcRdCost->setRenModelData( rpcTempCU, 0, piSrc, uiSrcStride, uiWidth, uiHeight ); 980 1042 } 1043 #endif 981 1044 982 1045 rpcTempCU->setPartSizeSubParts( SIZE_2Nx2N, 0, uhDepth ); // interprets depth relative to LCU level … … 990 1053 #if HHI_MRG_SKIP 991 1054 TComYuv* pcPredYuvTemp = NULL; 992 #if SB_INTERVIEW_SKIP1055 #if HHI_INTERVIEW_SKIP 993 1056 for( UInt uiNoResidual = (bSkipRes ? 1:0); uiNoResidual < 2; ++uiNoResidual ) 994 1057 #else … … 1015 1078 rpcTempCU->getCUMvField( REF_PIC_LIST_1 )->setAllMvField( cMvFieldNeighbours[1 + 2*uiMergeCand].getMv(), cMvFieldNeighbours[1 + 2*uiMergeCand].getRefIdx(), SIZE_2Nx2N, 0, 0, 0 ); // interprets depth relative to rpcTempCU level 1016 1079 1080 #if HHI_INTER_VIEW_RESIDUAL_PRED 1017 1081 rpcTempCU->setResPredAvailSubParts( bResPrdAvail, 0, 0, uhDepth ); 1018 1082 rpcTempCU->setResPredFlagSubParts ( bResPrdFlag, 0, 0, uhDepth ); 1083 #endif 1019 1084 1020 1085 #if HHI_MRG_SKIP 1021 1086 // do MC 1022 #if SB_INTERVIEW_SKIP1087 #if HHI_INTERVIEW_SKIP 1023 1088 if ( (uiNoResidual == 0) || bSkipRes ){ 1024 1089 #else … … 1036 1101 } 1037 1102 } 1038 1103 #if HHI_VSO 1039 1104 if( m_pcRdCost->getUseRenModel() ) 1040 1105 { //Reset … … 1045 1110 m_pcRdCost->setRenModelData( rpcTempCU, 0, piSrc, uiSrcStride, uiWidth, uiHeight ); 1046 1111 } 1112 #endif 1047 1113 1048 1114 // estimate residual and encode everything … … 1082 1148 } 1083 1149 1084 #if SB_INTERVIEW_SKIP1150 #if HHI_INTERVIEW_SKIP 1085 1151 Void TEncCu::xCheckRDCostInter( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize ePartSize, Bool bSkipRes) 1086 1152 #else … … 1090 1156 UChar uhDepth = rpcTempCU->getDepth( 0 ); 1091 1157 1158 #if HHI_VSO 1092 1159 if( m_pcRdCost->getUseRenModel() ) 1093 1160 { … … 1098 1165 m_pcRdCost->setRenModelData( rpcTempCU, 0, piSrc, uiSrcStride, uiWidth, uiHeight ); 1099 1166 } 1167 #endif 1100 1168 1101 1169 rpcTempCU->setDepthSubParts( uhDepth, 0 ); 1102 1170 1171 #if HHI_INTER_VIEW_RESIDUAL_PRED 1103 1172 Bool bResPrdAvail = rpcTempCU->getResPredAvail( 0 ); 1104 1173 Bool bResPrdFlag = rpcTempCU->getResPredFlag ( 0 ); 1174 #endif 1105 1175 rpcTempCU->setPartSizeSubParts ( SIZE_2Nx2N, 0, uhDepth ); 1176 #if HHI_INTER_VIEW_RESIDUAL_PRED 1106 1177 rpcTempCU->setResPredAvailSubParts( bResPrdAvail, 0, 0, uhDepth ); 1107 1178 rpcTempCU->setResPredFlagSubParts ( bResPrdFlag, 0, 0, uhDepth ); 1179 #endif 1108 1180 rpcTempCU->setPartSizeSubParts ( ePartSize, 0, uhDepth ); 1109 1181 rpcTempCU->setPredModeSubParts ( MODE_INTER, 0, uhDepth ); 1110 1182 1183 #if HHI_INTER_VIEW_RESIDUAL_PRED 1111 1184 if( rpcTempCU->getResPredFlag( 0 ) ) 1112 1185 { // subtract residual prediction from original in motion search 1113 1186 m_ppcOrigYuv[uhDepth]->add( m_ppcResPredTmp [uhDepth], rpcTempCU->getWidth( 0 ), rpcTempCU->getHeight( 0 ), true ); 1114 1187 } 1115 #if SB_INTERVIEW_SKIP 1188 #endif 1189 #if HHI_INTERVIEW_SKIP 1116 1190 m_pcPredSearch->predInterSearch ( rpcTempCU, m_ppcOrigYuv[uhDepth], m_ppcPredYuvTemp[uhDepth], m_ppcResiYuvTemp[uhDepth], m_ppcRecoYuvTemp[uhDepth], bSkipRes ); 1117 1191 #else 1118 1192 m_pcPredSearch->predInterSearch ( rpcTempCU, m_ppcOrigYuv[uhDepth], m_ppcPredYuvTemp[uhDepth], m_ppcResiYuvTemp[uhDepth], m_ppcRecoYuvTemp[uhDepth] ); 1119 1193 #endif 1194 #if HHI_INTER_VIEW_RESIDUAL_PRED 1120 1195 if( rpcTempCU->getResPredFlag( 0 ) ) 1121 1196 { // add residual prediction to original again 1122 1197 m_ppcOrigYuv[uhDepth]->add( m_ppcResPredTmp [uhDepth], rpcTempCU->getWidth( 0 ), rpcTempCU->getHeight( 0 ) ); 1123 1198 } 1199 #endif 1124 1200 1125 1201 #if PART_MRG … … 1129 1205 } 1130 1206 #endif 1131 #if SB_INTERVIEW_SKIP1207 #if HHI_INTERVIEW_SKIP 1132 1208 m_pcPredSearch->encodeResAndCalcRdInterCU( rpcTempCU, m_ppcOrigYuv[uhDepth], m_ppcPredYuvTemp[uhDepth], m_ppcResiYuvTemp[uhDepth], m_ppcResiYuvBest[uhDepth], m_ppcRecoYuvTemp[uhDepth], m_ppcResPredTmp [uhDepth],bSkipRes ); 1133 1209 #else 1134 1210 m_pcPredSearch->encodeResAndCalcRdInterCU( rpcTempCU, m_ppcOrigYuv[uhDepth], m_ppcPredYuvTemp[uhDepth], m_ppcResiYuvTemp[uhDepth], m_ppcResiYuvBest[uhDepth], m_ppcRecoYuvTemp[uhDepth], m_ppcResPredTmp [uhDepth], false ); 1135 1211 #endif 1136 //GT VSO 1212 1213 #if HHI_VSO 1137 1214 if( m_pcRdCost->getUseLambdaScaleVSO() ) 1138 1215 { … … 1140 1217 } 1141 1218 else 1219 #endif 1142 1220 { 1143 1221 rpcTempCU->getTotalCost() = m_pcRdCost->calcRdCost( rpcTempCU->getTotalBits(), rpcTempCU->getTotalDistortion() ); 1144 1222 } 1145 //GT VSO end1146 1223 1147 1224 xCheckBestMode( rpcBestCU, rpcTempCU, uhDepth ); … … 1152 1229 UInt uiDepth = rpcTempCU->getDepth( 0 ); 1153 1230 1154 // reset Model 1231 #if HHI_VSO 1155 1232 if( m_pcRdCost->getUseRenModel() ) 1156 1233 { … … 1161 1238 m_pcRdCost->setRenModelData( rpcTempCU, 0, piSrc, uiSrcStride, uiWidth, uiHeight ); 1162 1239 } 1240 #endif 1163 1241 1164 1242 rpcTempCU->setPartSizeSubParts( eSize, 0, uiDepth ); … … 1191 1269 1192 1270 rpcTempCU->getTotalBits() = m_pcEntropyCoder->getNumberOfWrittenBits(); 1193 //GTVSO1271 #if HHI_VSO 1194 1272 if( m_pcRdCost->getUseLambdaScaleVSO()) 1195 1273 { … … 1197 1275 } 1198 1276 else 1277 #endif 1199 1278 { 1200 1279 rpcTempCU->getTotalCost() = m_pcRdCost->calcRdCost( rpcTempCU->getTotalBits(), rpcTempCU->getTotalDistortion() ); 1201 1280 } 1202 //GT VSO end1203 1281 1204 1282 xCheckBestMode( rpcBestCU, rpcTempCU, uiDepth ); … … 1239 1317 UChar uhDepth = rpcTempCU->getDepth(0); 1240 1318 1319 #if HHI_INTER_VIEW_RESIDUAL_PRED 1241 1320 Bool bResPrdAvail = rpcTempCU->getResPredAvail( 0 ); 1242 1321 Bool bResPrdFlag = rpcTempCU->getResPredFlag ( 0 ); 1322 #endif 1243 1323 1244 1324 AMVPInfo cAMVPInfo0; … … 1278 1358 rpcTempCU->setPredModeSubParts( MODE_SKIP, 0, uhDepth ); 1279 1359 rpcTempCU->setPartSizeSubParts( SIZE_2Nx2N, 0, uhDepth ); 1360 #if HHI_INTER_VIEW_RESIDUAL_PRED 1280 1361 rpcTempCU->setResPredAvailSubParts( bResPrdAvail, 0, 0, uhDepth ); 1281 1362 rpcTempCU->setResPredFlagSubParts ( bResPrdFlag, 0, 0, uhDepth ); 1363 #endif 1282 1364 1283 1365 if (rpcTempCU->getSlice()->isInterB()) … … 1317 1399 } 1318 1400 1319 #if MW_MVI_SIGNALLING_MODE == 0 1320 Void TEncCu::xCheckRDCostMvInheritance( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, UChar uhTextureModeDepth, Bool bRecursiveCall ) 1321 #elif MW_MVI_SIGNALLING_MODE == 1 1401 #if HHI_MPI 1322 1402 Void TEncCu::xCheckRDCostMvInheritance( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, UChar uhTextureModeDepth, Bool bSkipResidual, Bool bRecursiveCall ) 1323 #else1324 #error1325 #endif1326 1403 { 1327 1404 assert( rpcTempCU->getSlice()->getSPS()->isDepth() ); … … 1342 1419 } 1343 1420 1421 #if HHI_VSO 1344 1422 if( m_pcRdCost->getUseRenModel() && !bRecursiveCall) 1345 1423 { … … 1350 1428 m_pcRdCost->setRenModelData( m_ppcTempCU[uhDepth], 0, piSrc, uiSrcStride, uiWidth, uiHeight ); 1351 1429 } 1430 #endif 1352 1431 1353 1432 Bool bSplit = uhDepth < pcTextureCU->getDepth( rpcTempCU->getZorderIdxInCU() ); … … 1377 1456 } 1378 1457 1379 #if MW_MVI_SIGNALLING_MODE == 01380 xCheckRDCostMvInheritance( pcSubBestPartCU, pcSubTempPartCU, uhTextureModeDepth, true );1381 #elif MW_MVI_SIGNALLING_MODE == 11382 1458 xCheckRDCostMvInheritance( pcSubBestPartCU, pcSubTempPartCU, uhTextureModeDepth, bSkipResidual, true ); 1383 #endif1384 1459 1385 1460 rpcTempCU->copyPartFrom( pcSubBestPartCU, uiPartUnitIdx, uhNextDepth ); // Keep best part data to current temporary data. … … 1408 1483 assert( rpcTempCU->getPredictionMode( ui ) != MODE_NONE ); 1409 1484 } 1410 #if MW_MVI_SIGNALLING_MODE == 01411 if( rpcTempCU->getPredictionMode( 0 ) == MODE_SKIP )1412 {1413 rpcTempCU->setPredModeSubParts( MODE_INTER, 0, uhDepth );1414 }1415 #elif MW_MVI_SIGNALLING_MODE == 11416 1485 rpcTempCU->setPredModeSubParts( bSkipResidual ? MODE_SKIP : MODE_INTER, 0, uhDepth ); 1417 #endif1418 1486 m_pcPredSearch->motionCompensation( rpcTempCU, m_ppcPredYuvTemp[uhDepth] ); 1419 1487 1420 1488 // get Original YUV data from picture 1421 1489 m_ppcOrigYuv[uhDepth]->copyFromPicYuv( rpcBestCU->getPic()->getPicYuvOrg(), rpcBestCU->getAddr(), rpcBestCU->getZorderIdxInCU() ); 1422 #if MW_MVI_SIGNALLING_MODE == 01423 m_pcPredSearch->encodeResAndCalcRdInterCU( rpcTempCU, m_ppcOrigYuv[uhDepth], m_ppcPredYuvTemp[uhDepth], m_ppcResiYuvTemp[uhDepth], m_ppcResiYuvBest[uhDepth], m_ppcRecoYuvTemp[uhDepth], m_ppcResPredTmp [uhDepth], false );1424 #elif MW_MVI_SIGNALLING_MODE == 11425 1490 m_pcPredSearch->encodeResAndCalcRdInterCU( rpcTempCU, m_ppcOrigYuv[uhDepth], m_ppcPredYuvTemp[uhDepth], m_ppcResiYuvTemp[uhDepth], m_ppcResiYuvBest[uhDepth], m_ppcRecoYuvTemp[uhDepth], m_ppcResPredTmp [uhDepth], bSkipResidual ); 1426 #endif1427 1491 1428 1492 if( uhDepth == uhTextureModeDepth ) … … 1431 1495 } 1432 1496 } 1433 //GT VSO 1497 1498 #if HHI_VSO 1434 1499 if( m_pcRdCost->getUseLambdaScaleVSO() ) 1435 1500 { … … 1437 1502 } 1438 1503 else 1504 #endif 1439 1505 { 1440 1506 rpcTempCU->getTotalCost() = m_pcRdCost->calcRdCost( rpcTempCU->getTotalBits(), rpcTempCU->getTotalDistortion() ); 1441 1507 } 1442 //GT VSO end1443 1508 1444 1509 xCheckBestMode( rpcBestCU, rpcTempCU, uhDepth ); 1445 1510 1511 #if HHI_VSO 1446 1512 if( !bSplit && bRecursiveCall && m_pcRdCost->getUseRenModel() ) 1447 1513 { … … 1452 1518 m_pcRdCost->setRenModelData( rpcBestCU, 0, piSrc, uiSrcStride, uiWidth, uiHeight ); 1453 1519 } 1520 #endif 1454 1521 } 1455 1522 … … 1458 1525 const UChar uhDepth = pcCU->getTextureModeDepth( 0 ); 1459 1526 m_pcEntropyCoder->resetBits(); 1460 #if MW_MVI_SIGNALLING_MODE == 01461 m_pcEntropyCoder->encodeMvInheritanceFlag( pcCU, 0, uhDepth, true );1462 #elif MW_MVI_SIGNALLING_MODE == 11463 1527 xSaveDepthWidthHeight( pcCU ); 1464 1528 pcCU->setSizeSubParts( g_uiMaxCUWidth>>uhDepth, g_uiMaxCUHeight>>uhDepth, 0, uhDepth ); … … 1527 1591 } 1528 1592 xRestoreDepthWidthHeight( pcCU ); 1529 #endif1530 1593 1531 1594 pcCU->getTotalBits() += m_pcEntropyCoder->getNumberOfWrittenBits(); 1532 1595 } 1533 1596 1534 #if MW_MVI_SIGNALLING_MODE == 11535 1597 Void TEncCu::xSaveDepthWidthHeight( TComDataCU* pcCU ) 1536 1598 { -
trunk/source/Lib/TLibEncoder/TEncCu.h
r2 r5 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-2011, 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 1 34 2 35 … … 68 101 Bool m_bUseSBACRD; 69 102 70 #if MW_MVI_SIGNALLING_MODE == 1103 #if HHI_MPI 71 104 UChar *m_puhDepthSaved; 72 105 UChar *m_puhWidthSaved; … … 99 132 Void xCheckRDCostAMVPSkip( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU ); 100 133 101 #if SB_INTERVIEW_SKIP134 #if HHI_INTERVIEW_SKIP 102 135 Void xCheckRDCostMerge2Nx2N( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, Bool bFullyRendered ) ; 103 136 #else … … 106 139 107 140 Void xCheckRDCostSkip ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, Bool bBSkipRes ); 108 #if SB_INTERVIEW_SKIP141 #if HHI_INTERVIEW_SKIP 109 142 Void xCheckRDCostInter( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize ePartSize, Bool bFullyRendered ) ; 110 143 #else … … 118 151 Void xCopyYuv2Tmp ( UInt uhPartUnitIdx, UInt uiDepth ); 119 152 Void xAddMVISignallingBits( TComDataCU* pcCU ); 120 #if MW_MVI_SIGNALLING_MODE == 0 121 Void xCheckRDCostMvInheritance( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, UChar uhTextureModeDepth, Bool bRecursiveCall ); 122 #elif MW_MVI_SIGNALLING_MODE == 1 153 #if HHI_MPI 123 154 Void xCheckRDCostMvInheritance( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, UChar uhTextureModeDepth, Bool bSkipResidual, Bool bRecursiveCall ); 124 155 Void xSaveDepthWidthHeight( TComDataCU* pcCU ); -
trunk/source/Lib/TLibEncoder/TEncEntropy.cpp
r2 r5 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-2011, 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 1 34 2 35 … … 408 441 } 409 442 } 410 #if MW_MVI_SIGNALLING_MODE == 1443 #if HHI_MPI 411 444 if( pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE && pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_2Nx2N ) 412 445 uiNumCand++; … … 419 452 420 453 454 #if HHI_INTER_VIEW_RESIDUAL_PRED 421 455 Void 422 456 TEncEntropy::encodeResPredFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiPUIdx, Bool bRD ) … … 437 471 m_pcEntropyCoderIf->codeResPredFlag( pcCU, uiAbsPartIdx ); 438 472 } 473 #endif 439 474 440 475 … … 517 552 m_pcEntropyCoderIf->codeSplitFlag( pcCU, uiAbsPartIdx, uiDepth ); 518 553 } 519 520 #if MW_MVI_SIGNALLING_MODE == 0521 Void TEncEntropy::encodeMvInheritanceFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, Bool bRD )522 {523 if( bRD )524 uiAbsPartIdx = 0;525 m_pcEntropyCoderIf->codeMvInheritanceFlag( pcCU, uiAbsPartIdx, uiDepth );526 }527 #endif528 554 529 555 /** encode partition size … … 1568 1594 { 1569 1595 #if HHI_MRG_SKIP 1570 #if MW_MVI_SIGNALLING_MODE == 11596 #if HHI_MPI 1571 1597 if( !(pcCU->getMergeFlag( uiAbsPartIdx ) && pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_2Nx2N && 1572 1598 ( pcCU->getTextureModeDepth( uiAbsPartIdx ) == -1 || uiDepth == pcCU->getTextureModeDepth( uiAbsPartIdx ) ) ) ) -
trunk/source/Lib/TLibEncoder/TEncEntropy.h
r2 r5 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-2011, 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 1 34 2 35 … … 57 90 58 91 virtual Void codeSkipFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0; 59 #if MW_MVI_SIGNALLING_MODE == 060 virtual Void codeMvInheritanceFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) = 0;61 #endif62 92 virtual Void codeMergeFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0; 63 93 virtual Void codeMergeIndex ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0; 94 #if HHI_INTER_VIEW_RESIDUAL_PRED 64 95 virtual Void codeResPredFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0; 96 #endif 65 97 virtual Void codeSplitFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) = 0; 66 98 … … 138 170 Void encodeSplitFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, Bool bRD = false ); 139 171 Void encodeSkipFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false ); 140 #if MW_MVI_SIGNALLING_MODE == 0141 Void encodeMvInheritanceFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, Bool bRD = false );142 #endif143 172 Void encodePUWise ( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false ); 144 173 Void encodeInterDirPU ( TComDataCU* pcSubCU, UInt uiAbsPartIdx ); … … 152 181 Void encodeMergeIndex ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiPUIdx ); 153 182 #endif 183 #if HHI_INTER_VIEW_RESIDUAL_PRED 154 184 Void encodeResPredFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiPUIdx, Bool bRD = false ); 185 #endif 155 186 Void encodeAlfCtrlFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false ); 156 187 #if TSB_ALF_HEADER -
trunk/source/Lib/TLibEncoder/TEncFormattedStringParser.cpp
r2 r5 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-2011, 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 1 34 2 35 #include "TEncFormattedStringParser.h" -
trunk/source/Lib/TLibEncoder/TEncFormattedStringParser.h
r2 r5 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-2011, 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 1 34 #if !defined(AFX_TEncFormattedStringParser_H__268768B8_4D1D_484A_904E_586985833BAC__INCLUDED_) 2 35 #define AFX_TEncFormattedStringParser_H__268768B8_4D1D_484A_904E_586985833BAC__INCLUDED_ -
trunk/source/Lib/TLibEncoder/TEncGOP.cpp
r2 r5 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-2011, 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 1 34 2 35 … … 13 46 #include <time.h> 14 47 15 // SB16 48 #include "../../App/TAppEncoder/TAppEncTop.h" 17 49 … … 25 57 m_pcSliceEncoder = NULL; 26 58 m_pcListPic = NULL; 27 59 28 60 m_pcEntropyCoder = NULL; 29 61 m_pcCavlcCoder = NULL; 30 62 m_pcSbacCoder = NULL; 31 63 m_pcBinCABAC = NULL; 64 #if DEPTH_MAP_GENERATION 32 65 m_pcDepthMapGenerator = NULL; 66 #endif 67 #if HHI_INTER_VIEW_RESIDUAL_PRED 33 68 m_pcResidualGenerator = NULL; 34 69 #endif 70 35 71 #if DCM_DECODING_REFRESH 36 72 m_bRefreshPending = 0; … … 69 105 m_pcSliceEncoder = pcTEncTop->getSliceEncoder(); 70 106 m_pcListPic = pcTEncTop->getListPic(); 71 107 72 108 m_pcEntropyCoder = pcTEncTop->getEntropyCoder(); 73 109 m_pcCavlcCoder = pcTEncTop->getCavlcCoder(); … … 76 112 m_pcLoopFilter = pcTEncTop->getLoopFilter(); 77 113 m_pcBitCounter = pcTEncTop->getBitCounter(); 114 #if DEPTH_MAP_GENERATION 78 115 m_pcDepthMapGenerator = pcTEncTop->getDepthMapGenerator(); 116 #endif 117 #if HHI_INTER_VIEW_RESIDUAL_PRED 79 118 m_pcResidualGenerator = pcTEncTop->getResidualGenerator(); 80 119 #endif 120 81 121 // Adaptive Loop filter 82 122 m_pcAdaptiveLoopFilter = pcTEncTop->getAdaptiveLoopFilter(); … … 97 137 { 98 138 TComSlice* pcSlice; 99 139 100 140 //-- For time output for each slice 101 141 long iBeforeTime = clock(); … … 104 144 pcBitstreamOut->resetBits(); 105 145 pcBitstreamOut->rewindStreamPacket(); 106 146 107 147 // Slice data initialization 108 148 pcPic->clearSliceBuffer(); … … 112 152 m_pcSliceEncoder->initEncSlice ( pcPic, pcSlice ); 113 153 pcSlice->setSliceIdx(0); 114 154 115 155 // Set SPS 116 156 pcSlice->setSPS( m_pcEncTop->getSPS() ); … … 120 160 // set mutliview parameters 121 161 pcSlice->initMultiviewSlice( pcPic->getCodedScale(), pcPic->getCodedOffset() ); 122 162 123 163 #if DCM_DECODING_REFRESH 124 164 // Set the nal unit type … … 129 169 130 170 //pcSlice->setNalUnitType(getNalUnitType(uiPOCCurr)); 131 // Do decoding refresh marking if any 171 // Do decoding refresh marking if any 132 172 pcSlice->decodingRefreshMarking(m_uiPOCCDR, m_bRefreshPending, rcListPic); 133 173 #endif … … 140 180 141 181 pcSlice->setRefPicListFromGOPSTring( rcListPic, apcSpatRefPics ); 182 183 #if HHI_VSO 142 184 m_pcEncTop->getEncTop()->setMVDPic(pcPic->getViewIdx(), pcSlice->getPOC(), pcPic->getMVDReferenceInfo() ); 143 185 144 //GT VSO 145 Bool bUseVSO = m_pcEncTop->getUseVSO(); 186 187 Bool bUseVSO = m_pcEncTop->getUseVSO(); 146 188 m_pcRdCost->setUseVSO( bUseVSO ); 147 189 148 190 if ( bUseVSO ) 149 { 191 { 150 192 Int iVSOMode = m_pcEncTop->getVSOMode(); 151 m_pcRdCost->setVSOMode( iVSOMode ); 152 #if RDO_DIST_INT153 m_pcRdCost->setAllowNegDist( m_pcEncTop->getAllowNegDist() ); 193 m_pcRdCost->setVSOMode( iVSOMode ); 194 #if HHI_VSO_DIST_INT 195 m_pcRdCost->setAllowNegDist( m_pcEncTop->getAllowNegDist() ); 154 196 #endif 155 197 156 198 if ( iVSOMode == 4 ) 157 199 { 158 m_pcEncTop->getEncTop()->setupRenModel( pcSlice->getPOC(), pcPic->getViewIdx(), m_pcEncTop->isDepthCoder() ? 1 : 0 ); 200 m_pcEncTop->getEncTop()->setupRenModel( pcSlice->getPOC(), pcPic->getViewIdx(), m_pcEncTop->isDepthCoder() ? 1 : 0 ); 159 201 } 160 202 else … … 163 205 } 164 206 } 165 //GT VSO end 166 167 if ( m_pcEncTop->getOmitUnusedBlocks() ) 168 { 169 m_pcEncTop->getEncTop()->getUsedPelsMap( pcPic->getViewIdx(), pcPic->getPOC(), pcPic->getUsedPelsMap() ); 170 } 171 207 #endif 208 209 #if HHI_INTERVIEW_SKIP 210 if ( m_pcEncTop->getInterViewSkip() ) 211 { 212 m_pcEncTop->getEncTop()->getUsedPelsMap( pcPic->getViewIdx(), pcPic->getPOC(), pcPic->getUsedPelsMap() ); 213 } 214 #endif 215 172 216 pcSlice->setNoBackPredFlag( false ); 173 217 #if DCM_COMB_LIST … … 183 227 for ( i=0; i < pcSlice->getNumRefIdx(RefPicList( 1 ) ); i++ ) 184 228 { 185 if ( pcSlice->getRefPOC(RefPicList(1), i) != pcSlice->getRefPOC(RefPicList(0), i) ) 229 if ( pcSlice->getRefPOC(RefPicList(1), i) != pcSlice->getRefPOC(RefPicList(0), i) ) 186 230 { 187 231 pcSlice->setNoBackPredFlag( false ); … … 199 243 pcSlice->generateCombinedList(); 200 244 #endif 201 245 202 246 /////////////////////////////////////////////////////////////////////////////////////////////////// Compress a slice 203 247 // Slice compression … … 237 281 m_uiStoredStartCUAddrForEncodingEntropySlice[uiStartCUAddrEntropySliceIdx++] = uiNextCUAddr; 238 282 283 #if DEPTH_MAP_GENERATION 239 284 // init view component and predict virtual depth map 240 285 m_pcDepthMapGenerator->initViewComponent( pcPic ); 241 286 m_pcDepthMapGenerator->predictDepthMap ( pcPic ); 287 #if HHI_INTER_VIEW_MOTION_PRED 242 288 m_pcDepthMapGenerator->covertOrgDepthMap( pcPic ); 289 #endif 290 #if HHI_INTER_VIEW_RESIDUAL_PRED 243 291 m_pcResidualGenerator->initViewComponent( pcPic ); 292 #endif 293 #endif 244 294 245 295 while(uiNextCUAddr<pcPic->getPicSym()->getNumberOfCUsInFrame()) // determine slice boundaries … … 262 312 m_uiStoredStartCUAddrForEncodingEntropySlice[uiStartCUAddrEntropySliceIdx++] = uiStartCUAddrSlice; 263 313 } 264 314 265 315 if (uiStartCUAddrSlice < pcPic->getPicSym()->getNumberOfCUsInFrame()) 266 316 { 267 pcPic->allocateNewSlice(); 317 pcPic->allocateNewSlice(); 268 318 pcPic->setCurrSliceIdx ( uiStartCUAddrSliceIdx-1 ); 269 319 m_pcSliceEncoder->setSliceIdx ( uiStartCUAddrSliceIdx-1 ); … … 286 336 uiStartCUAddrSlice = pcSlice->getSliceCurEndCUAddr(); 287 337 uiStartCUAddrEntropySlice = pcSlice->getEntropySliceCurEndCUAddr(); 288 } 338 } 289 339 290 340 uiNextCUAddr = (uiStartCUAddrSlice > uiStartCUAddrEntropySlice) ? uiStartCUAddrSlice : uiStartCUAddrEntropySlice; … … 292 342 m_uiStoredStartCUAddrForEncodingSlice[uiStartCUAddrSliceIdx++] = pcSlice->getSliceCurEndCUAddr(); 293 343 m_uiStoredStartCUAddrForEncodingEntropySlice[uiStartCUAddrEntropySliceIdx++] = pcSlice->getSliceCurEndCUAddr(); 294 344 295 345 pcSlice = pcPic->getSlice(0); 296 346 #if MTK_SAO // PRE_DF … … 298 348 #endif 299 349 350 #if HHI_INTER_VIEW_RESIDUAL_PRED 300 351 // set residual picture 301 352 m_pcResidualGenerator->setRecResidualPic( pcPic ); 302 353 #endif 354 #if DEPTH_MAP_GENERATION 303 355 // update virtual depth map 304 356 m_pcDepthMapGenerator->updateDepthMap( pcPic ); 357 #endif 305 358 306 359 //-- Loop filter … … 329 382 for(UInt i=0; i< uiNumSlices ; i++) 330 383 { 331 (*m_pcAdaptiveLoopFilter)[i].create(pcPic, i, 332 m_uiStoredStartCUAddrForEncodingSlice[i], 384 (*m_pcAdaptiveLoopFilter)[i].create(pcPic, i, 385 m_uiStoredStartCUAddrForEncodingSlice[i], 333 386 m_uiStoredStartCUAddrForEncodingSlice[i+1]-1 334 387 ); … … 359 412 // generate start code 360 413 bs_SPS_PPS_SEI.write( 1, 32); 361 414 362 415 m_pcEntropyCoder->encodePPS( pcSlice->getPPS() ); 363 416 bs_SPS_PPS_SEI.write( 1, 1 ); … … 367 420 rbSeqFirst = false; 368 421 } 369 422 370 423 /* use the main bitstream buffer for storing the marshalled picture */ 371 424 m_pcEntropyCoder->setBitstream(pcBitstreamOut); 372 425 373 426 uiStartCUAddrSliceIdx = 0; 374 uiStartCUAddrSlice = 0; 427 uiStartCUAddrSlice = 0; 375 428 pcBitstreamOut->allocateMemoryForSliceLocations( pcPic->getPicSym()->getNumberOfCUsInFrame() ); // Assuming number of slices <= number of LCU. Needs to be changed for sub-LCU slice coding. 376 429 pcBitstreamOut->setSliceCount( 0 ); // intialize number of slices to zero, used while converting RBSP to NALU 377 430 378 431 uiStartCUAddrEntropySliceIdx = 0; 379 uiStartCUAddrEntropySlice = 0; 432 uiStartCUAddrEntropySlice = 0; 380 433 uiNextCUAddr = 0; 381 434 pcSlice = pcPic->getSlice(uiStartCUAddrSliceIdx); … … 401 454 uiStartCUAddrSliceIdx++; 402 455 uiStartCUAddrEntropySliceIdx++; 403 } 456 } 404 457 else if (uiNextCUAddr == m_uiStoredStartCUAddrForEncodingEntropySlice[uiStartCUAddrEntropySliceIdx]) 405 458 { … … 422 475 423 476 // write SliceHeader 424 #if SB_DEBUG425 g_bEncoding = true ;426 #endif427 477 m_pcEntropyCoder->encodeSliceHeader ( pcSlice ); 428 #if SB_DEBUG 429 g_bEncoding = false ; 430 #endif 431 478 432 479 // is it needed? 433 480 if ( pcSlice->getSymbolMode() ) … … 437 484 m_pcEntropyCoder->resetEntropy (); 438 485 } 439 486 440 487 if (uiNextCUAddr==0) // Compute ALF params and write only for first slice header 441 488 { … … 452 499 #endif 453 500 m_pcAdaptiveLoopFilter->allocALFParam(&cAlfParam); 454 501 455 502 // set entropy coder for RD 456 503 if ( pcSlice->getSymbolMode() ) … … 464 511 m_pcEntropyCoder->resetEntropy (); 465 512 m_pcEntropyCoder->setBitstream ( m_pcBitCounter ); 466 513 467 514 m_pcAdaptiveLoopFilter->startALFEnc(pcPic, m_pcEntropyCoder ); 468 515 #if MTK_SAO // PostDF … … 478 525 #endif 479 526 UInt uiMaxAlfCtrlDepth; 480 527 481 528 UInt64 uiDist, uiBits; 482 529 #if MTK_SAO … … 489 536 #endif 490 537 m_pcAdaptiveLoopFilter->endALFEnc(); 491 538 492 539 // set entropy coder for writing 493 540 m_pcSbacCoder->init( (TEncBinIf*)m_pcBinCABAC ); 494 #if SB_DEBUG495 g_bEncoding = true;496 #endif497 541 if ( pcSlice->getSymbolMode() ) 498 542 { … … 527 571 #endif 528 572 m_pcEntropyCoder->encodeAlfParam(&cAlfParam); 529 573 530 574 #if TSB_ALF_HEADER 531 575 if(cAlfParam.cu_control_flag) … … 534 578 } 535 579 #endif 536 g_bEncoding = false;537 580 m_pcAdaptiveLoopFilter->freeALFParam(&cAlfParam); 538 581 } 539 582 } 540 583 541 584 // File writing 542 #if SB_DEBUG543 g_bEncoding = true ;544 #endif545 585 m_pcSliceEncoder->encodeSlice( pcPic, pcBitstreamOut ); 546 #if SB_DEBUG 547 g_bEncoding = false ; 548 #endif 549 586 550 587 // End of bitstream & byte align 551 588 pcBitstreamOut->write( 1, 1 ); 552 589 pcBitstreamOut->writeAlignZero(); 553 590 554 591 UInt uiBoundingAddrSlice, uiBoundingAddrEntropySlice; 555 uiBoundingAddrSlice = m_uiStoredStartCUAddrForEncodingSlice[uiStartCUAddrSliceIdx]; 556 uiBoundingAddrEntropySlice = m_uiStoredStartCUAddrForEncodingEntropySlice[uiStartCUAddrEntropySliceIdx]; 592 uiBoundingAddrSlice = m_uiStoredStartCUAddrForEncodingSlice[uiStartCUAddrSliceIdx]; 593 uiBoundingAddrEntropySlice = m_uiStoredStartCUAddrForEncodingEntropySlice[uiStartCUAddrEntropySliceIdx]; 557 594 uiNextCUAddr = min(uiBoundingAddrSlice, uiBoundingAddrEntropySlice); 558 595 if (uiNextCUAddr < pcPic->getPicSym()->getNumberOfCUsInFrame()) // if more slices to be encoded insert start code … … 564 601 } 565 602 } // end iteration over slices 566 567 603 604 568 605 #if MTK_NONCROSS_INLOOP_FILTER 569 606 if(pcSlice->getSPS()->getUseALF()) … … 572 609 m_pcAdaptiveLoopFilter->destroySlice(); 573 610 } 574 #endif 575 576 611 #endif 612 613 577 614 pcBitstreamOut->flushBuffer(); 578 615 pcBitstreamOut->convertRBSPToPayload(0); 579 616 580 617 /*#if AMVP_BUFFERCOMPRESS 581 618 pcPic->compressMotion(); // moved to end of access unit 582 619 #endif */ 583 620 pcBitstreamOut->freeMemoryAllocatedForSliceLocations(); 584 621 585 622 //-- For time output for each slice 586 623 Double dEncTime = (double)(clock()-iBeforeTime) / CLOCKS_PER_SEC; 587 624 588 625 xCalculateAddPSNR( pcPic, pcPic->getPicYuvRec(), pcBitstreamOut->getNumberOfWrittenBits(), dEncTime ); 589 590 #if GERHARD_RM_DEBUG_MM591 if (m_pcRdCost->getUseRenModel() )592 {593 TRenModel* pcMMCheckModel = m_pcEncTop->getEncTop()->getMMCheckModel();594 TRenModel* pcRenModel = m_pcEncTop->getEncTop()->getRenModel ();595 TComPicYuv* pcPicYuvRec = pcPic->getPicYuvRec();596 pcMMCheckModel->setData(0,0, pcPicYuvRec->getWidth(), pcPicYuvRec->getHeight(), pcPicYuvRec->getStride(), pcPicYuvRec->getLumaAddr());597 Bool bEqual = pcRenModel->compare( pcMMCheckModel );598 599 if ( !bEqual )600 {601 std::cout << "Mismatch in Renderer Model !" << std::endl;602 }603 }604 #endif605 626 606 627 #if FIXED_ROUNDING_FRAME_MEMORY … … 643 664 pcBitstreamOut->insertAt(bs_SPS_PPS_SEI, 0); 644 665 645 #if SB_MEM_FIX646 666 bs_SPS_PPS_SEI.destroy(); 647 #endif648 667 pcPic->getPicYuvRec()->copyToPic(pcPicYuvRecOut); 649 668 650 669 pcPic->setReconMark ( true ); 651 670 652 671 } 653 672 … … 656 675 TComSlice* pcSlice = pcPic->getSlice(pcPic->getCurrSliceIdx()); 657 676 Bool bCalcDist = false; 658 677 659 678 m_pcLoopFilter->setCfg(pcSlice->getLoopFilterDisable(), m_pcCfg->getLoopFilterAlphaC0Offget(), m_pcCfg->getLoopFilterBetaOffget()); 660 679 m_pcLoopFilter->loopFilterPic( pcPic ); 661 680 662 681 m_pcEntropyCoder->setEntropyCoder ( m_pcEncTop->getRDGoOnSbacCoder(), pcSlice ); 663 682 m_pcEntropyCoder->resetEntropy (); 664 683 m_pcEntropyCoder->setBitstream ( m_pcBitCounter ); 665 684 666 685 // Adaptive Loop filter 667 686 if( pcSlice->getSPS()->getUseALF() ) … … 672 691 #endif 673 692 m_pcAdaptiveLoopFilter->allocALFParam(&cAlfParam); 674 693 675 694 m_pcAdaptiveLoopFilter->startALFEnc(pcPic, m_pcEntropyCoder); 676 695 677 696 UInt uiMaxAlfCtrlDepth; 678 697 m_pcAdaptiveLoopFilter->ALFProcess(&cAlfParam, pcSlice->getLambda(), ruiDist, ruiBits, uiMaxAlfCtrlDepth ); … … 680 699 m_pcAdaptiveLoopFilter->freeALFParam(&cAlfParam); 681 700 } 682 701 683 702 m_pcEntropyCoder->resetEntropy (); 684 703 ruiBits += m_pcEntropyCoder->getNumberOfWrittenBits(); 685 704 686 705 if (!bCalcDist) 687 706 ruiDist = xFindDistortionFrame(pcPic->getPicYuvOrg(), pcPic->getPicYuvRec()); … … 704 723 #endif 705 724 Int iTemp; 706 725 707 726 Int iStride = pcPic0->getStride(); 708 727 Int iWidth = pcPic0->getWidth(); 709 728 Int iHeight = pcPic0->getHeight(); 710 729 711 730 UInt64 uiTotalDiff = 0; 712 731 713 732 for( y = 0; y < iHeight; y++ ) 714 733 { … … 724 743 pSrc1 += iStride; 725 744 } 726 745 727 746 iHeight >>= 1; 728 747 iWidth >>= 1; 729 748 iStride >>= 1; 730 749 731 750 pSrc0 = pcPic0->getCbAddr(); 732 751 pSrc1 = pcPic1->getCbAddr(); 733 752 734 753 for( y = 0; y < iHeight; y++ ) 735 754 { … … 745 764 pSrc1 += iStride; 746 765 } 747 766 748 767 pSrc0 = pcPic0->getCrAddr(); 749 768 pSrc1 = pcPic1->getCrAddr(); 750 769 751 770 for( y = 0; y < iHeight; y++ ) 752 771 { … … 762 781 pSrc1 += iStride; 763 782 } 764 783 765 784 return uiTotalDiff; 766 785 } … … 772 791 UInt64 uiSSDU = 0; 773 792 UInt64 uiSSDV = 0; 774 793 775 794 Double dYPSNR = 0.0; 776 795 Double dUPSNR = 0.0; 777 796 Double dVPSNR = 0.0; 778 797 779 798 //===== calculate PSNR ===== 780 799 Pel* pOrg = pcPic ->getPicYuvOrg()->getLumaAddr(); 781 800 Pel* pRec = pcPicD->getLumaAddr(); 782 801 Int iStride = pcPicD->getStride(); 783 802 784 803 Int iWidth; 785 804 Int iHeight; 786 805 787 806 iWidth = pcPicD->getWidth () - m_pcEncTop->getPad(0); 788 807 iHeight = pcPicD->getHeight() - m_pcEncTop->getPad(1); 789 808 790 809 Int iSize = iWidth*iHeight; 791 810 792 811 UInt maxval = 255 * (1<<(g_uiBitDepth + g_uiBitIncrement -8)); 793 812 Double fRefValueY = (double) maxval * maxval * iSize; … … 804 823 pRec += iStride; 805 824 } 806 807 825 826 #if HHI_VSO 808 827 if ( m_pcRdCost->getUseRenModel() ) 809 828 { 810 TRenModel* pcRenModel = m_pcEncTop->getEncTop()->getRenModel(); 811 Int64 iDistVSOY, iDistVSOU, iDistVSOV; 812 pcRenModel->getTotalSSE( iDistVSOY, iDistVSOU, iDistVSOV ); 829 TRenModel* pcRenModel = m_pcEncTop->getEncTop()->getRenModel(); 830 Int64 iDistVSOY, iDistVSOU, iDistVSOV; 831 pcRenModel->getTotalSSE( iDistVSOY, iDistVSOU, iDistVSOV ); 813 832 dYPSNR = ( iDistVSOY ? 10.0 * log10( fRefValueY / (Double) iDistVSOY ) : 99.99 ); 814 833 dUPSNR = ( iDistVSOU ? 10.0 * log10( fRefValueC / (Double) iDistVSOU ) : 99.99 ); … … 816 835 } 817 836 else 818 { 837 #endif 838 { 819 839 iHeight >>= 1; 820 840 iWidth >>= 1; … … 822 842 pOrg = pcPic ->getPicYuvOrg()->getCbAddr(); 823 843 pRec = pcPicD->getCbAddr(); 824 844 825 845 for( y = 0; y < iHeight; y++ ) 826 846 { … … 833 853 pRec += iStride; 834 854 } 835 855 836 856 pOrg = pcPic ->getPicYuvOrg()->getCrAddr(); 837 857 pRec = pcPicD->getCrAddr(); 838 858 839 859 for( y = 0; y < iHeight; y++ ) 840 860 { … … 851 871 dVPSNR = ( uiSSDV ? 10.0 * log10( fRefValueC / (Double)uiSSDV ) : 99.99 ); 852 872 } 853 854 873 // fix: total bits should consider slice size bits (32bit) 855 874 uibits += 32; 856 875 857 876 #if RVM_VCEGAM10 858 877 m_vRVM_RP.push_back( uibits ); … … 906 925 printf( "[Y %6.4lf dB U %6.4lf dB V %6.4lf dB] ", dYPSNR, dUPSNR, dVPSNR ); 907 926 printf ("[ET %5.0f ] ", dEncTime ); 908 927 909 928 for (Int iRefList = 0; iRefList < 2; iRefList++) 910 929 { … … 972 991 { 973 992 Double dRVM = 0; 974 993 975 994 //if( m_pcCfg->getGOPSize() == 1 && m_pcCfg->getIntraPeriod() != 1 && m_pcCfg->getFrameToBeEncoded() > RVM_VCEGAM10_M * 2 ) 976 995 { … … 980 999 vRL.resize( N ); 981 1000 vB.resize( N ); 982 1001 983 1002 Int i; 984 1003 Double dRavg = 0 , dBavg = 0; … … 994 1013 dBavg += vB[i]; 995 1014 } 996 1015 997 1016 dRavg /= ( N - 2 * RVM_VCEGAM10_M ); 998 1017 dBavg /= ( N - 2 * RVM_VCEGAM10_M ); 999 1018 1000 1019 double dSigamB = 0; 1001 1020 for( i = RVM_VCEGAM10_M + 1 ; i < N - RVM_VCEGAM10_M + 1 ; i++ ) … … 1005 1024 } 1006 1025 dSigamB = sqrt( dSigamB / ( N - 2 * RVM_VCEGAM10_M ) ); 1007 1026 1008 1027 double f = sqrt( 12.0 * ( RVM_VCEGAM10_M - 1 ) / ( RVM_VCEGAM10_M + 1 ) ); 1009 1028 1010 1029 dRVM = dSigamB / dRavg * f; 1011 1030 } 1012 1031 1013 1032 return( dRVM ); 1014 1033 } -
trunk/source/Lib/TLibEncoder/TEncGOP.h
r2 r5 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-2011, 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 1 34 2 35 … … 57 90 TEncBinCABAC* m_pcBinCABAC; 58 91 TComLoopFilter* m_pcLoopFilter; 92 #if DEPTH_MAP_GENERATION 59 93 TComDepthMapGenerator* m_pcDepthMapGenerator; 94 #endif 95 #if HHI_INTER_VIEW_RESIDUAL_PRED 60 96 TComResidualGenerator* m_pcResidualGenerator; 97 #endif 61 98 62 99 // Adaptive Loop filter -
trunk/source/Lib/TLibEncoder/TEncSbac.cpp
r2 r5 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-2011, 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 1 34 2 35 … … 26 59 , m_uiMaxAlfCtrlDepth ( 0 ) 27 60 , m_cCUSplitFlagSCModel ( 1, 1, NUM_SPLIT_FLAG_CTX ) 28 #if MW_MVI_SIGNALLING_MODE == 029 , m_cCUMvInheritanceFlagSCModel(1, 1, NUM_MVI_FLAG_CTX )30 #endif31 61 , m_cCUSkipFlagSCModel ( 1, 1, NUM_SKIP_FLAG_CTX ) 32 62 , m_cCUMergeFlagExtSCModel ( 1, 1, NUM_MERGE_FLAG_EXT_CTX ) … … 72 102 #endif 73 103 , m_cViewIdxSCModel ( 1, 1, NUM_VIEW_IDX_CTX ) 74 #if HHI_DMM_ INTRA104 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 75 105 , m_cIntraDMMSCModel ( 1, 1, NUM_DMM_CTX ) 76 106 , m_cIntraWedgeSCModel ( 1, 1, NUM_WEDGE_CTX ) … … 94 124 95 125 m_cCUSplitFlagSCModel.initBuffer ( eSliceType, iQp, (Short*)INIT_SPLIT_FLAG ); 96 #if MW_MVI_SIGNALLING_MODE == 097 m_cCUMvInheritanceFlagSCModel.initBuffer( eSliceType, iQp, (Short*)INIT_MVI_FLAG );98 #endif99 126 100 127 m_cCUSkipFlagSCModel.initBuffer ( eSliceType, iQp, (Short*)INIT_SKIP_FLAG ); … … 137 164 #endif 138 165 m_cViewIdxSCModel.initBuffer ( eSliceType, iQp, (Short*)INIT_VIEW_IDX ); 139 #if HHI_DMM_ INTRA166 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 140 167 m_cIntraDMMSCModel.initBuffer ( eSliceType, iQp, (Short*)INIT_INTRA_DMM ); 141 168 m_cIntraWedgeSCModel.initBuffer ( eSliceType, iQp, (Short*)INIT_INTRA_WEDGELET ); … … 307 334 return; 308 335 } 309 #if HHI_DMM_ INTRA336 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 310 337 Void TEncSbac::xWriteExGolombLevel( UInt uiSymbol, ContextModel& rcSCModel ) 311 338 { … … 388 415 389 416 this->m_cCUSplitFlagSCModel .copyFrom( &pSrc->m_cCUSplitFlagSCModel ); 390 #if MW_MVI_SIGNALLING_MODE == 0391 this->m_cCUMvInheritanceFlagSCModel.copyFrom( &pSrc->m_cCUMvInheritanceFlagSCModel );392 #endif393 417 this->m_cCUSkipFlagSCModel .copyFrom( &pSrc->m_cCUSkipFlagSCModel ); 394 418 this->m_cCUMergeFlagExtSCModel .copyFrom( &pSrc->m_cCUMergeFlagExtSCModel); … … 421 445 this->m_cMVPIdxSCModel .copyFrom( &pSrc->m_cMVPIdxSCModel ); 422 446 this->m_cViewIdxSCModel .copyFrom( &pSrc->m_cViewIdxSCModel ); 423 #if HHI_DMM_ INTRA447 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 424 448 this->m_cIntraDMMSCModel .copyFrom( &pSrc->m_cIntraDMMSCModel ); 425 449 this->m_cIntraWedgeSCModel .copyFrom( &pSrc->m_cIntraWedgeSCModel ); … … 636 660 637 661 662 #if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI 638 663 Void TEncSbac::codeMergeIndexMV( TComDataCU* pcCU, UInt uiAbsPartIdx ) 639 664 { … … 641 666 Bool abAvailable[ MRG_MAX_NUM_CANDS ]; 642 667 UInt uiNumCand = 0; 643 #if MW_MVI_SIGNALLING_MODE == 1668 #if HHI_MPI 644 669 const Bool bMVIAvailable = pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE; 645 const UInt uiMviMergePos = bMVIAvailable ? MVI_MERGE_POS : MRG_MAX_NUM_CANDS;670 const UInt uiMviMergePos = bMVIAvailable ? HHI_MPI_MERGE_POS : MRG_MAX_NUM_CANDS; 646 671 #endif 647 672 for( UInt uiIdx = 0; uiIdx < MRG_MAX_NUM_CANDS; uiIdx++ ) 648 673 { 649 #if MW_MVI_SIGNALLING_MODE == 1674 #if HHI_MPI 650 675 if( uiIdx == uiMviMergePos ) 651 676 { … … 693 718 //--- determine unary index --- 694 719 UInt uiMergeIdx = pcCU->getMergeIndex( uiAbsPartIdx ); 695 #if MW_MVI_SIGNALLING_MODE == 1720 #if HHI_MPI 696 721 if( bMVIAvailable ) 697 722 { … … 699 724 if( bUseMVI ) 700 725 { 701 uiMergeIdx = MVI_MERGE_POS;702 } 703 else if( uiMergeIdx >= MVI_MERGE_POS )726 uiMergeIdx = HHI_MPI_MERGE_POS; 727 } 728 else if( uiMergeIdx >= HHI_MPI_MERGE_POS ) 704 729 { 705 730 uiMergeIdx++; … … 748 773 DTRACE_CABAC_T( "\n" ); 749 774 } 750 775 #endif 751 776 752 777 … … 758 783 Void TEncSbac::codeMergeIndex( TComDataCU* pcCU, UInt uiAbsPartIdx ) 759 784 { 760 #if MW_MVI_SIGNALLING_MODE == 1 785 #if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI 786 #if HHI_INTER_VIEW_MOTION_PRED && HHI_MPI 761 787 if( ( pcCU->getSlice()->getSPS()->getViewId() > 0 && ( pcCU->getSlice()->getSPS()->getMultiviewMvPredMode() & PDM_USE_FOR_MERGE ) == PDM_USE_FOR_MERGE ) || 762 788 ( pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE && pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_2Nx2N ) ) 789 #elif HHI_MPI 790 if( pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE && pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_2Nx2N ) 763 791 #else 764 792 if( pcCU->getSlice()->getSPS()->getViewId() > 0 && ( pcCU->getSlice()->getSPS()->getMultiviewMvPredMode() & PDM_USE_FOR_MERGE ) == PDM_USE_FOR_MERGE ) … … 768 796 return; 769 797 } 798 #endif 770 799 771 800 Bool bLeftInvolved = false; … … 884 913 885 914 915 #if HHI_INTER_VIEW_RESIDUAL_PRED 886 916 Void 887 917 TEncSbac::codeResPredFlag( TComDataCU* pcCU, UInt uiAbsPartIdx ) … … 891 921 m_pcBinIf->encodeBin( uiSymbol, m_cResPredFlagSCModel.get( 0, 0, uiCtx ) ); 892 922 } 923 #endif 893 924 894 925 … … 907 938 return; 908 939 } 909 910 #if MW_MVI_SIGNALLING_MODE == 0911 Void TEncSbac::codeMvInheritanceFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )912 {913 const Int iTextureModeDepth = pcCU->getTextureModeDepth( uiAbsPartIdx );914 if( iTextureModeDepth != -1 && uiDepth > iTextureModeDepth )915 return;916 917 UInt uiCtx = pcCU->getCtxMvInheritanceFlag( uiAbsPartIdx, uiDepth );918 UInt uiSymbol = iTextureModeDepth == uiDepth ? 1 : 0;919 920 assert( uiCtx < 3 );921 m_pcBinIf->encodeBin( uiSymbol, m_cCUMvInheritanceFlagSCModel.get( 0, 0, uiCtx ) );922 }923 #endif924 940 925 941 Void TEncSbac::codeTransformSubdivFlag( UInt uiSymbol, UInt uiCtx ) … … 935 951 } 936 952 937 #if HHI_DMM_ INTRA953 #if HHI_DMM_WEDGE_INTRA 938 954 Void TEncSbac::xCodeWedgeFullInfo( TComDataCU* pcCU, UInt uiAbsPartIdx ) 939 955 { … … 1031 1047 } 1032 1048 } 1033 1049 #endif 1050 #if HHI_DMM_PRED_TEX 1034 1051 Void TEncSbac::xCodeWedgePredTexDeltaInfo( TComDataCU* pcCU, UInt uiAbsPartIdx ) 1035 1052 { … … 1076 1093 UInt uiDir = pcCU->getLumaIntraDir( uiAbsPartIdx ); 1077 1094 1078 #if HHI_DMM_ INTRA1079 if ( pcCU->getSlice()->getSPS()->isDepth() && pcCU->getSlice()->getSPS()->getUseD epthModelModes() && pcCU->getWidth( uiAbsPartIdx ) < 64 )1095 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 1096 if ( pcCU->getSlice()->getSPS()->isDepth() && pcCU->getSlice()->getSPS()->getUseDMM() && pcCU->getWidth( uiAbsPartIdx ) < 64 ) 1080 1097 { 1081 1098 m_pcBinIf->encodeBin( uiDir > MAX_MODE_ID_INTRA_DIR, m_cIntraDMMSCModel.get(0, 0, 0) ); … … 1086 1103 UInt uiDMMode = uiDir - (MAX_MODE_ID_INTRA_DIR+1); 1087 1104 1088 if( !pcCU->getTextureModeAllowance( uiAbsPartIdx ) ) 1089 { 1105 #if HHI_DMM_WEDGE_INTRA && HHI_DMM_PRED_TEX 1106 m_pcBinIf->encodeBin( (uiDMMode & 0x01), m_cIntraDMMSCModel.get(0, 0, 1) ); 1107 m_pcBinIf->encodeBin( (uiDMMode & 0x02) >> 1, m_cIntraDMMSCModel.get(0, 0, 1) ); 1108 1090 1109 if ( pcCU->getPartitionSize( uiAbsPartIdx ) != SIZE_NxN && pcCU->getWidth( uiAbsPartIdx ) > 4 ) 1091 1110 { 1092 if( uiDMMode > 1 ) 1093 { 1094 uiDMMode -= 4; 1111 m_pcBinIf->encodeBin( (uiDMMode & 0x04) >> 2, m_cIntraDMMSCModel.get(0, 0, 1) ); 1095 1112 } 1113 #else 1096 1114 m_pcBinIf->encodeBin( (uiDMMode & 0x01), m_cIntraDMMSCModel.get(0, 0, 1) ); 1097 if( DMM_INTRA_MODE_BITS > 1 ) m_pcBinIf->encodeBin( (uiDMMode & 0x02) >> 1, m_cIntraDMMSCModel.get(0, 0, 1) );1098 }1099 else1100 {1101 m_pcBinIf->encodeBin( (uiDMMode & 0x01), m_cIntraDMMSCModel.get(0, 0, 1) );1102 }1103 }1104 else1105 {1106 m_pcBinIf->encodeBin( (uiDMMode & 0x01), m_cIntraDMMSCModel.get(0, 0, 1) );1107 if( DMM_INTRA_MODE_BITS > 1 ) m_pcBinIf->encodeBin( (uiDMMode & 0x02) >> 1, m_cIntraDMMSCModel.get(0, 0, 1) );1108 1115 1109 1116 if ( pcCU->getPartitionSize( uiAbsPartIdx ) != SIZE_NxN && pcCU->getWidth( uiAbsPartIdx ) > 4 ) 1110 1117 { 1111 if( DMM_INTRA_MODE_BITS > 2 ) m_pcBinIf->encodeBin( (uiDMMode & 0x04) >> 2, m_cIntraDMMSCModel.get(0, 0, 1) );1112 } 1113 } 1114 1118 m_pcBinIf->encodeBin( (uiDMMode & 0x02) >> 1, m_cIntraDMMSCModel.get(0, 0, 1) ); 1119 } 1120 #endif 1121 #if HHI_DMM_WEDGE_INTRA 1115 1122 if( uiDir == DMM_WEDGE_FULL_IDX ) { xCodeWedgeFullInfo ( pcCU, uiAbsPartIdx ); } 1116 1123 if( uiDir == DMM_WEDGE_FULL_D_IDX ) { xCodeWedgeFullDeltaInfo ( pcCU, uiAbsPartIdx ); } 1117 1124 if( uiDir == DMM_WEDGE_PREDDIR_IDX ) { xCodeWedgePredDirInfo ( pcCU, uiAbsPartIdx ); } 1118 1125 if( uiDir == DMM_WEDGE_PREDDIR_D_IDX ) { xCodeWedgePredDirDeltaInfo ( pcCU, uiAbsPartIdx ); } 1126 #endif 1127 #if HHI_DMM_PRED_TEX 1119 1128 if( uiDir == DMM_WEDGE_PREDTEX_D_IDX ) { xCodeWedgePredTexDeltaInfo ( pcCU, uiAbsPartIdx ); } 1120 1129 if( uiDir == DMM_CONTOUR_PREDTEX_D_IDX ) { xCodeContourPredTexDeltaInfo( pcCU, uiAbsPartIdx ); } 1130 #endif 1121 1131 } 1122 1132 else … … 1204 1214 { 1205 1215 UInt uiDir = pcCU->getLumaIntraDir( uiAbsPartIdx ); 1206 #if HHI_DMM_ INTRA1207 if ( pcCU->getSlice()->getSPS()->isDepth() && pcCU->getSlice()->getSPS()->getUseD epthModelModes() && pcCU->getWidth( uiAbsPartIdx ) < 64 )1216 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 1217 if ( pcCU->getSlice()->getSPS()->isDepth() && pcCU->getSlice()->getSPS()->getUseDMM() && pcCU->getWidth( uiAbsPartIdx ) < 64 ) 1208 1218 { 1209 1219 m_pcBinIf->encodeBin( uiDir > MAX_MODE_ID_INTRA_DIR, m_cIntraDMMSCModel.get(0, 0, 0) ); … … 1214 1224 UInt uiDMMode = uiDir - (MAX_MODE_ID_INTRA_DIR+1); 1215 1225 1216 if( !pcCU->getTextureModeAllowance( uiAbsPartIdx ) ) 1217 { 1226 #if HHI_DMM_WEDGE_INTRA && HHI_DMM_PRED_TEX 1227 m_pcBinIf->encodeBin( (uiDMMode & 0x01), m_cIntraDMMSCModel.get(0, 0, 1) ); 1228 m_pcBinIf->encodeBin( (uiDMMode & 0x02) >> 1, m_cIntraDMMSCModel.get(0, 0, 1) ); 1229 1218 1230 if ( pcCU->getPartitionSize( uiAbsPartIdx ) != SIZE_NxN && pcCU->getWidth( uiAbsPartIdx ) > 4 ) 1219 1231 { 1220 if( uiDMMode > 1 ) 1221 { 1222 uiDMMode -= 4; 1232 m_pcBinIf->encodeBin( (uiDMMode & 0x04) >> 2, m_cIntraDMMSCModel.get(0, 0, 1) ); 1223 1233 } 1234 #else 1224 1235 m_pcBinIf->encodeBin( (uiDMMode & 0x01), m_cIntraDMMSCModel.get(0, 0, 1) ); 1225 if( DMM_INTRA_MODE_BITS > 1 ) m_pcBinIf->encodeBin( (uiDMMode & 0x02) >> 1, m_cIntraDMMSCModel.get(0, 0, 1) );1226 }1227 else1228 {1229 m_pcBinIf->encodeBin( (uiDMMode & 0x01), m_cIntraDMMSCModel.get(0, 0, 1) );1230 }1231 }1232 else1233 {1234 m_pcBinIf->encodeBin( (uiDMMode & 0x01), m_cIntraDMMSCModel.get(0, 0, 1) );1235 if( DMM_INTRA_MODE_BITS > 1 ) m_pcBinIf->encodeBin( (uiDMMode & 0x02) >> 1, m_cIntraDMMSCModel.get(0, 0, 1) );1236 1236 1237 1237 if ( pcCU->getPartitionSize( uiAbsPartIdx ) != SIZE_NxN && pcCU->getWidth( uiAbsPartIdx ) > 4 ) 1238 1238 { 1239 if( DMM_INTRA_MODE_BITS > 2 ) m_pcBinIf->encodeBin( (uiDMMode & 0x04) >> 2, m_cIntraDMMSCModel.get(0, 0, 1) );1240 } 1241 } 1242 1239 m_pcBinIf->encodeBin( (uiDMMode & 0x02) >> 1, m_cIntraDMMSCModel.get(0, 0, 1) ); 1240 } 1241 #endif 1242 #if HHI_DMM_WEDGE_INTRA 1243 1243 if( uiDir == DMM_WEDGE_FULL_IDX ) { xCodeWedgeFullInfo ( pcCU, uiAbsPartIdx ); } 1244 1244 if( uiDir == DMM_WEDGE_FULL_D_IDX ) { xCodeWedgeFullDeltaInfo ( pcCU, uiAbsPartIdx ); } 1245 1245 if( uiDir == DMM_WEDGE_PREDDIR_IDX ) { xCodeWedgePredDirInfo ( pcCU, uiAbsPartIdx ); } 1246 1246 if( uiDir == DMM_WEDGE_PREDDIR_D_IDX ) { xCodeWedgePredDirDeltaInfo ( pcCU, uiAbsPartIdx ); } 1247 #endif 1248 #if HHI_DMM_PRED_TEX 1247 1249 if( uiDir == DMM_WEDGE_PREDTEX_D_IDX ) { xCodeWedgePredTexDeltaInfo ( pcCU, uiAbsPartIdx ); } 1248 1250 if( uiDir == DMM_CONTOUR_PREDTEX_D_IDX ) { xCodeContourPredTexDeltaInfo( pcCU, uiAbsPartIdx ); } 1251 #endif 1249 1252 } 1250 1253 else -
trunk/source/Lib/TLibEncoder/TEncSbac.h
r2 r5 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-2011, 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 1 34 2 35 … … 85 118 #if E253 86 119 Void xWriteGoRiceExGolomb ( UInt uiSymbol, UInt &ruiGoRiceParam ); 87 #if HHI_DMM_ INTRA120 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 88 121 Void xWriteExGolombLevel ( UInt uiSymbol, ContextModel& rcSCModel ); 89 122 #endif … … 103 136 Void xCopyFrom ( TEncSbac* pSrc ); 104 137 105 #if HHI_DMM_ INTRA138 #if HHI_DMM_WEDGE_INTRA 106 139 Void xCodeWedgeFullInfo ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 107 140 Void xCodeWedgeFullDeltaInfo ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 141 108 142 Void xCodeWedgePredDirInfo ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 109 143 Void xCodeWedgePredDirDeltaInfo ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 144 #endif 145 #if HHI_DMM_PRED_TEX 110 146 Void xCodeWedgePredTexDeltaInfo ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 111 147 Void xCodeContourPredTexDeltaInfo( TComDataCU* pcCU, UInt uiAbsPartIdx ); … … 130 166 Void codeMergeFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 131 167 Void codeMergeIndex ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 168 #if HHI_INTER_VIEW_MOTION_PRED || HHI_MPI 132 169 Void codeMergeIndexMV ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 170 #endif 171 #if HHI_INTER_VIEW_RESIDUAL_PRED 133 172 Void codeResPredFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 173 #endif 134 174 Void codeSplitFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 135 #if MW_MVI_SIGNALLING_MODE == 0136 Void codeMvInheritanceFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );137 #endif138 175 Void codeMVPIdx ( TComDataCU* pcCU, UInt uiAbsPartIdx, RefPicList eRefList ); 139 176 … … 182 219 UInt m_uiLastQp; 183 220 ContextModel3DBuffer m_cCUSplitFlagSCModel; 184 #if MW_MVI_SIGNALLING_MODE == 0185 ContextModel3DBuffer m_cCUMvInheritanceFlagSCModel;186 #endif187 221 ContextModel3DBuffer m_cCUSkipFlagSCModel; 188 222 ContextModel3DBuffer m_cCUMergeFlagExtSCModel; … … 227 261 #endif 228 262 ContextModel3DBuffer m_cViewIdxSCModel; 229 #if HHI_DMM_ INTRA263 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 230 264 ContextModel3DBuffer m_cIntraDMMSCModel; 231 265 ContextModel3DBuffer m_cIntraWedgeSCModel; -
trunk/source/Lib/TLibEncoder/TEncSearch.cpp
r2 r5 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-2011, 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 1 34 2 35 /** \file TEncSearch.cpp … … 911 944 Bool bLuma, 912 945 Bool bChroma, 913 Bool bRealCoeff /* just for test */ ) 946 Bool bRealCoeff /* just for test */ 947 ) 914 948 { 915 949 m_pcEntropyCoder->resetBits(); 916 950 xEncIntraHeader ( pcCU, uiTrDepth, uiAbsPartIdx, bLuma, bChroma ); 917 951 xEncSubdivCbfQT ( pcCU, uiTrDepth, uiAbsPartIdx, bLuma, bChroma ); 918 952 919 953 if( bLuma ) 920 954 { … … 940 974 TComYuv* pcResiYuv, 941 975 Dist& ruiDist 942 #if DMM_RES_CHECK_INTRA943 ,944 Bool bCheckNoRes945 #endif946 976 ) 947 977 { … … 973 1003 pcCU->getPattern()->initAdiPattern( pcCU, uiAbsPartIdx, uiTrDepth, m_piYuvExt, m_iYuvExtStride, m_iYuvExtHeight, bAboveAvail, bLeftAvail ); 974 1004 975 #if HHI_DMM_ INTRA1005 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 976 1006 if( uiLumaPredMode > MAX_MODE_ID_INTRA_DIR ) 977 1007 { … … 984 1014 predIntraLumaAng( pcCU->getPattern(), uiLumaPredMode, piPred, uiStride, uiWidth, uiHeight, pcCU, bAboveAvail, bLeftAvail ); 985 1015 } 986 987 #if DMM_RES_CHECK_INTRA988 if ( bCheckNoRes )989 {990 //prediction signal is already filled in this case991 //===== update distortion =====992 //GT VSO993 if ( m_pcRdCost->getUseVSO() )994 {995 ruiDist += m_pcRdCost->getDistVS ( pcCU, uiAbsPartIdx, piPred, uiStride, piOrg, uiStride, uiWidth, uiHeight, false, 0 );996 997 #if GERHARD_VQM_XCHECK998 UInt uiDist1 = m_pcRdCost->getDistVS ( pcCU, uiAbsPartIdx, piReco, uiStride, piOrg, uiStride, uiWidth, uiHeight, false, 0 );999 UInt uiDist2 = m_pcRdCost->getDistPart( piReco, uiStride, piOrg, uiStride, uiWidth, uiHeight );1000 assert(uiDist1 == uiDist2);1001 #endif1002 }1003 else1004 {1005 ruiDist += m_pcRdCost->getDistPart( piPred, uiStride, piOrg, uiStride, uiWidth, uiHeight );1006 }1007 //GT VSO end1008 1009 pcCU->setCbfSubParts( 0, TEXT_LUMA, uiAbsPartIdx, uiFullDepth );1010 return;1011 }1012 #endif1013 1016 1014 1017 //===== get residual signal ===== … … 1088 1091 1089 1092 //===== update distortion ===== 1090 //GTVSO1093 #if HHI_VSO 1091 1094 if ( m_pcRdCost->getUseVSO() ) 1092 1095 { 1093 1096 ruiDist += m_pcRdCost->getDistVS ( pcCU, uiAbsPartIdx, piReco, uiStride, piOrg, uiStride, uiWidth, uiHeight, false, 0 ); 1094 1095 #if GERHARD_VQM_XCHECK1096 UInt uiDist1 = m_pcRdCost->getDistVS ( pcCU, uiAbsPartIdx, piReco, uiStride, piOrg, uiStride, uiWidth, uiHeight, false, 0 );1097 UInt uiDist2 = m_pcRdCost->getDistPart( piReco, uiStride, piOrg, uiStride, uiWidth, uiHeight );1098 assert(uiDist1 == uiDist2);1099 #endif1100 1097 } 1101 1098 else 1099 #endif 1102 1100 { 1103 1101 ruiDist += m_pcRdCost->getDistPart( piReco, uiStride, piOrg, uiStride, uiWidth, uiHeight ); 1104 1102 } 1105 //GT VSO end1106 1103 } 1107 1108 #if DMM_RES_CHECK_INTRA1109 Void1110 TEncSearch::xSetIntraNoResi( TComDataCU* pcCU,1111 UInt uiTrDepth,1112 UInt uiAbsPartIdx,1113 TComYuv* pcPredYuv,1114 TComYuv* pcResiYuv,1115 Bool bNoRes1116 )1117 {1118 UInt uiFullDepth = pcCU ->getDepth ( 0 ) + uiTrDepth;1119 UInt uiWidth = pcCU ->getWidth ( 0 ) >> uiTrDepth;1120 UInt uiHeight = pcCU ->getHeight ( 0 ) >> uiTrDepth;1121 UInt uiStride = pcPredYuv->getStride ();1122 Pel* piPred = pcPredYuv->getLumaAddr( uiAbsPartIdx );1123 Pel* piResi = pcResiYuv->getLumaAddr( uiAbsPartIdx );1124 Pel* piReco = pcPredYuv->getLumaAddr( uiAbsPartIdx );1125 1126 UInt uiLog2TrSize = g_aucConvertToBit[ pcCU->getSlice()->getSPS()->getMaxCUWidth() >> uiFullDepth ] + 2;1127 UInt uiQTLayer = pcCU->getSlice()->getSPS()->getQuadtreeTULog2MaxSize() - uiLog2TrSize;1128 UInt uiNumCoeffPerInc = pcCU->getSlice()->getSPS()->getMaxCUWidth() * pcCU->getSlice()->getSPS()->getMaxCUHeight() >> ( pcCU->getSlice()->getSPS()->getMaxCUDepth() << 1 );1129 TCoeff* pcCoeff = m_ppcQTTempCoeffY[ uiQTLayer ] + uiNumCoeffPerInc * uiAbsPartIdx;1130 Pel* piRecQt = m_pcQTTempTComYuv[ uiQTLayer ].getLumaAddr( uiAbsPartIdx );1131 UInt uiRecQtStride = m_pcQTTempTComYuv[ uiQTLayer ].getStride ();1132 1133 UInt uiZOrder = pcCU->getZorderIdxInCU() + uiAbsPartIdx;1134 Pel* piRecIPred = pcCU->getPic()->getPicYuvRec()->getLumaAddr( pcCU->getAddr(), uiZOrder );1135 UInt uiRecIPredStride = pcCU->getPic()->getPicYuvRec()->getStride ();1136 1137 if ( bNoRes )1138 {1139 pcCU->setCbfSubParts( 0, TEXT_LUMA, uiAbsPartIdx, uiFullDepth );1140 1141 Pel* pResi = piResi;1142 memset( pcCoeff, 0, sizeof( TCoeff ) * uiWidth * uiHeight );1143 for( UInt uiY = 0; uiY < uiHeight; uiY++ )1144 {1145 memset( pResi, 0, sizeof( Pel ) * uiWidth );1146 pResi += uiStride;1147 }1148 }1149 else1150 {1151 pcCU->setCbfSubParts( 1 << uiTrDepth, TEXT_LUMA, uiAbsPartIdx, uiFullDepth );1152 }1153 1154 //===== reconstruction =====1155 {1156 Pel* pPred = piPred;1157 Pel* pResi = piResi;1158 Pel* pReco = piReco;1159 Pel* pRecQt = piRecQt;1160 Pel* pRecIPred = piRecIPred;1161 for( UInt uiY = 0; uiY < uiHeight; uiY++ )1162 {1163 for( UInt uiX = 0; uiX < uiWidth; uiX++ )1164 {1165 pReco [ uiX ] = Clip( pPred[ uiX ] + pResi[uiX] );1166 pRecQt [ uiX ] = pReco[ uiX ];1167 pRecIPred[ uiX ] = pReco[ uiX ];1168 }1169 pPred += uiStride;1170 pResi += uiStride;1171 pReco += uiStride;1172 pRecQt += uiRecQtStride;1173 pRecIPred += uiRecIPredStride;1174 }1175 }1176 }1177 #endif1178 1104 1179 1105 Void … … 1362 1288 } 1363 1289 #endif 1364 #if HHI_DMM_ INTRA1290 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 1365 1291 if( pcCU->getLumaIntraDir( uiAbsPartIdx ) > MAX_MODE_ID_INTRA_DIR ) 1366 1292 { … … 1378 1304 { 1379 1305 //----- store original entropy coding status ----- 1380 #if DMM_RES_CHECK_INTRA 1381 if( m_bUseSBACRD && ( bCheckSplit || pcCU->getSlice()->getSPS()->isDepth() ) ) 1306 if( m_bUseSBACRD && bCheckSplit ) 1382 1307 { 1383 1308 m_pcRDGoOnSbacCoder->store( m_pppcRDSbacCoder[ uiFullDepth ][ CI_QT_TRAFO_ROOT ] ); 1384 1309 } 1385 #else 1386 if( m_bUseSBACRD && bCheckSplit ) 1387 { 1388 m_pcRDGoOnSbacCoder->store( m_pppcRDSbacCoder[ uiFullDepth ][ CI_QT_TRAFO_ROOT ] ); 1389 } 1390 #endif 1310 1391 1311 //----- code luma block with given intra prediction mode and store Cbf----- 1392 1312 dSingleCost = 0.0; … … 1409 1329 //----- determine rate and r-d cost ----- 1410 1330 UInt uiSingleBits = xGetIntraBitsQT( pcCU, uiTrDepth, uiAbsPartIdx, true, !bLumaOnly, false ); 1411 //GT VSO 1331 1332 #if HHI_VSO 1412 1333 if ( m_pcRdCost->getUseLambdaScaleVSO()) 1413 1334 { … … 1418 1339 dSingleCost = m_pcRdCost->calcRdCost( uiSingleBits, uiSingleDistY + uiSingleDistC ); 1419 1340 } 1420 //GT VSO end 1421 1422 #if DMM_RES_CHECK_INTRA 1423 if ( pcCU->getSlice()->getSPS()->isDepth() && pcCU->getCbf( uiAbsPartIdx, TEXT_LUMA, uiTrDepth ) == 1 && pcCU->getLumaIntraDir( uiAbsPartIdx ) > MAX_MODE_ID_INTRA_DIR ) 1424 { 1425 m_pcRDGoOnSbacCoder->load ( m_pppcRDSbacCoder[ uiFullDepth ][ CI_QT_TRAFO_ROOT ] ); 1426 1427 Double dSingleCostNoRes = MAX_DOUBLE; 1428 Dist uiSingleDistYNoRes = 0; 1429 //save cbf and coeffs 1430 xIntraCodingLumaBlk( pcCU, uiTrDepth, uiAbsPartIdx, pcOrgYuv, pcPredYuv, pcResiYuv, uiSingleDistYNoRes, true ); 1431 1432 //----- determine rate and r-d cost ----- 1433 UInt uiSingleBitsNoRes = xGetIntraBitsQT( pcCU, uiTrDepth, uiAbsPartIdx, true, !bLumaOnly, false ); 1434 //GT VSO 1435 if ( m_pcRdCost->getUseLambdaScaleVSO()) 1436 { 1437 dSingleCostNoRes = m_pcRdCost->calcRdCostVSO( uiSingleBitsNoRes, uiSingleDistYNoRes + uiSingleDistC ); 1438 } 1439 else 1440 { 1441 dSingleCostNoRes = m_pcRdCost->calcRdCost( uiSingleBitsNoRes, uiSingleDistYNoRes + uiSingleDistC ); 1442 } 1443 //GT VSO end 1444 1445 if ( dSingleCostNoRes < dSingleCost ) 1446 { 1447 xSetIntraNoResi( pcCU, uiTrDepth, uiAbsPartIdx, pcPredYuv, pcResiYuv, true ); 1448 dSingleCost = dSingleCostNoRes; 1449 uiSingleCbfY = pcCU->getCbf( uiAbsPartIdx, TEXT_LUMA, uiTrDepth ); 1450 1451 } 1452 else 1453 { 1454 xSetIntraNoResi( pcCU, uiTrDepth, uiAbsPartIdx, pcPredYuv, pcResiYuv, false ); 1455 uiSingleCbfY = pcCU->getCbf( uiAbsPartIdx, TEXT_LUMA, uiTrDepth ); 1456 } 1457 } 1341 #else 1342 dSingleCost = m_pcRdCost->calcRdCost( uiSingleBits, uiSingleDistY + uiSingleDistC ); 1458 1343 #endif 1459 1344 } … … 1520 1405 //----- determine rate and r-d cost ----- 1521 1406 UInt uiSplitBits = xGetIntraBitsQT( pcCU, uiTrDepth, uiAbsPartIdx, true, !bLumaOnly, false ); 1522 //GTVSO1407 #if HHI_VSO 1523 1408 if( m_pcRdCost->getUseLambdaScaleVSO() ) 1524 1409 { … … 1529 1414 dSplitCost = m_pcRdCost->calcRdCost( uiSplitBits, uiSplitDistY + uiSplitDistC ); 1530 1415 } 1531 //GT VSO end 1416 #else 1417 dSplitCost = m_pcRdCost->calcRdCost( uiSplitBits, uiSplitDistY + uiSplitDistC ); 1418 #endif 1532 1419 1533 1420 //===== compare and set best ===== … … 1601 1488 } 1602 1489 1490 #if HHI_VSO 1603 1491 if ( m_pcRdCost->getUseRenModel() && bCheckFull ) 1604 1492 { … … 1611 1499 m_pcRdCost->setRenModelData( pcCU, uiAbsPartIdx, piSrc, (Int) uiSrcStride, (Int) uiWidth, (Int) uiHeight ); 1612 1500 } 1501 #endif 1613 1502 1614 1503 ruiDistY += uiSingleDistY; … … 1858 1747 uiMaxMode += 1; 1859 1748 #endif 1860 #if HHI_DMM_ INTRA1749 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 1861 1750 Bool bTestDmm = false; 1862 if ( m_pcEncCfg->isDepthCoder() && m_pcEncCfg->getUseD epthModelModes() )1751 if ( m_pcEncCfg->isDepthCoder() && m_pcEncCfg->getUseDMM() ) 1863 1752 bTestDmm = true; 1864 1753 #endif … … 1900 1789 // use hadamard transform here 1901 1790 Dist uiSad; 1902 //GTVSO1791 #if HHI_VSO 1903 1792 if ( m_pcRdCost->getUseVSO() ) 1904 1793 { 1905 1794 Bool bSad = !m_pcRdCost->getUseRenModel(); 1906 1795 uiSad = m_pcRdCost->getDistVS(pcCU, uiPartOffset, piPred, uiStride, piOrg, uiStride, uiWidth, uiHeight, bSad, 0 ); 1907 #if GERHARD_VQM_XCHECK1908 UInt uiDist1 = m_pcRdCost->getDistVS ( pcCU, uiPartOffset, piPred, uiStride, piOrg, uiStride, uiWidth, uiHeight, false, 0 );1909 UInt uiDist2 = m_pcRdCost->getDistPart( piOrg, uiStride, piPred, uiStride, uiWidth, uiHeight );1910 assert(uiDist1 == uiDist2);1911 #endif1912 1796 } 1913 1797 else … … 1915 1799 uiSad = (Dist) m_pcRdCost->calcHAD( piOrg, uiStride, piPred, uiStride, uiWidth, uiHeight ); 1916 1800 } 1917 //GT VSO end 1801 #else 1802 uiSad = (Dist) m_pcRdCost->calcHAD( piOrg, uiStride, piPred, uiStride, uiWidth, uiHeight ); 1803 #endif 1918 1804 1919 1805 UInt iModeBits = xModeBitsIntra( pcCU, uiMode, uiPU, uiPartOffset, uiDepth, uiInitTrDepth ); 1920 //GT VSO 1806 1921 1807 Double dLambda; 1922 1808 #if HHI_VSO 1923 1809 if ( m_pcRdCost->getUseLambdaScaleVSO() ) 1924 1810 { 1925 1811 dLambda = m_pcRdCost->getUseRenModel() ? m_pcRdCost->getLambdaVSO() : m_pcRdCost->getSqrtLambdaVSO(); 1812 //GT: Sad is SSE for VSO4 1926 1813 } 1927 1814 else … … 1929 1816 dLambda = m_pcRdCost->getSqrtLambda(); 1930 1817 } 1931 1932 //GT: Sad is SSE for VSO4 1818 #else 1819 dLambda = m_pcRdCost->getSqrtLambda(); 1820 #endif 1821 1933 1822 Double cost = (Double)uiSad + (Double)iModeBits * dLambda; 1934 //GT VSO end 1823 1935 1824 CandNum += xUpdateCandList( uiMode, cost, uiFastCandNum, CandModeList, CandCostList ); 1936 #if HHI_DMM_ INTRA1825 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 1937 1826 if ( bTestDmm ) bTestDmm = uiSad ? true : false; 1938 1827 #endif … … 2004 1893 } 2005 1894 2006 #if HHI_DMM_INTRA 2007 if( m_pcEncCfg->isDepthCoder() && uiWidth >= 4 && uiWidth < 64 && m_pcEncCfg->getUseDepthModelModes() && bTestDmm ) 2008 { 2009 #if DMM_NO_TEXTURE_MODES 2010 pcCU->setTextureModeAllowanceSubParts( false, uiPartOffset, uiDepth + uiInitTrDepth ); 2011 #else 2012 UInt uiPartAddr = 0; 2013 Int iBlockWidth, iBlockHeight; 2014 2015 pcCU->getPartIndexAndSize( uiPU, uiPartAddr, iBlockWidth, iBlockHeight ); 2016 2017 TComPicYuv* pcPicYuvRef = pcCU->getSlice()->getTexturePic()->getPicYuvRec(); 2018 Int iRefStride = pcPicYuvRef->getStride(); 2019 Pel* piRefY = pcPicYuvRef->getLumaAddr( pcCU->getAddr(), pcCU->getZorderIdxInCU() + uiPartAddr ); 2020 2021 TComYuv cTempYuv; cTempYuv.create( pcCU->getWidth(0), pcCU->getHeight(0) ); cTempYuv.clear(); 2022 UInt uiTempStride = cTempYuv.getStride(); 2023 Pel* piTempY = cTempYuv.getLumaAddr( uiPU, uiWidth ); 2024 2025 for ( Int y = 0; y < uiHeight; y++ ) 2026 { 2027 ::memcpy(piTempY, piRefY, sizeof(Pel)*uiWidth); 2028 piTempY += uiTempStride; 2029 piRefY += iRefStride; 2030 } 2031 2032 UInt64 uiDCSAD = cTempYuv.getLumaDistDCSAD( uiPartAddr, uiWidth ); 1895 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 1896 if( m_pcEncCfg->isDepthCoder() && uiWidth >= 4 && uiWidth < 64 && m_pcEncCfg->getUseDMM() && bTestDmm && uiWidth == uiHeight ) 1897 { 1898 #if HHI_DMM_WEDGE_INTRA 1899 UInt uiTabIdx = 0; 1900 Int iDeltaDC1 = 0; 1901 Int iDeltaDC2 = 0; 1902 findWedgeFullMinDist( pcCU, uiPartOffset, piOrg, piPred, uiStride, uiWidth, uiHeight, uiTabIdx, iDeltaDC1, iDeltaDC2, bAboveAvail, bLeftAvail, WedgeDist_SAD ); 1903 pcCU->setWedgeFullTabIdxSubParts ( uiTabIdx, uiPartOffset, uiDepth + uiInitTrDepth ); 1904 pcCU->setWedgeFullDeltaDC1SubParts( iDeltaDC1, uiPartOffset, uiDepth + uiInitTrDepth ); 1905 pcCU->setWedgeFullDeltaDC2SubParts( iDeltaDC2, uiPartOffset, uiDepth + uiInitTrDepth ); 1906 1907 uiRdModeList[ uiNewMaxMode++ ] = DMM_WEDGE_FULL_IDX; 1908 uiRdModeList[ uiNewMaxMode++ ] = DMM_WEDGE_FULL_D_IDX; 1909 1910 if ( uiWidth > 4 ) 1911 { 1912 Int iWedgeDeltaEnd = 0; 1913 1914 iDeltaDC1 = 0; 1915 iDeltaDC2 = 0; 1916 1917 findWedgePredDirMinDist( pcCU, uiPartOffset, piOrg, piPred, uiStride, uiWidth, uiHeight, uiTabIdx, iWedgeDeltaEnd, iDeltaDC1, iDeltaDC2, bAboveAvail, bLeftAvail, WedgeDist_SAD ); 1918 pcCU->setWedgePredDirTabIdxSubParts ( uiTabIdx, uiPartOffset, uiDepth + uiInitTrDepth ); 1919 pcCU->setWedgePredDirDeltaEndSubParts( iWedgeDeltaEnd, uiPartOffset, uiDepth + uiInitTrDepth ); 1920 pcCU->setWedgePredDirDeltaDC1SubParts( iDeltaDC1, uiPartOffset, uiDepth + uiInitTrDepth ); 1921 pcCU->setWedgePredDirDeltaDC2SubParts( iDeltaDC2, uiPartOffset, uiDepth + uiInitTrDepth ); 1922 1923 uiRdModeList[ uiNewMaxMode++ ] = DMM_WEDGE_PREDDIR_IDX; 1924 uiRdModeList[ uiNewMaxMode++ ] = DMM_WEDGE_PREDDIR_D_IDX; 1925 } 1926 #endif 1927 #if HHI_DMM_PRED_TEX 1928 TComYuv cTempYuv; cTempYuv.create( uiWidth, uiHeight ); cTempYuv.clear(); 1929 Pel* piTempY = cTempYuv.getLumaAddr(); 1930 1931 fillTexturePicTempBlock( pcCU, uiPartOffset, piTempY, uiWidth, uiHeight ); 1932 1933 piTempY = cTempYuv.getLumaAddr(); 1934 1935 UInt uiTexTabIdx = 0; 1936 Int iTexDeltaDC1 = 0; 1937 Int iTexDeltaDC2 = 0; 1938 findWedgeTexMinDist( pcCU, uiPartOffset, piOrg, piPred, uiStride, uiWidth, uiHeight, uiTexTabIdx, iTexDeltaDC1, iTexDeltaDC2, bAboveAvail, bLeftAvail, WedgeDist_SAD, piTempY ); 1939 pcCU->setWedgePredTexTabIdxSubParts ( uiTexTabIdx, uiPartOffset, uiDepth + uiInitTrDepth ); 1940 pcCU->setWedgePredTexDeltaDC1SubParts( iTexDeltaDC1, uiPartOffset, uiDepth + uiInitTrDepth ); 1941 pcCU->setWedgePredTexDeltaDC2SubParts( iTexDeltaDC2, uiPartOffset, uiDepth + uiInitTrDepth ); 1942 1943 uiRdModeList[ uiNewMaxMode++ ] = DMM_WEDGE_PREDTEX_IDX; 1944 uiRdModeList[ uiNewMaxMode++ ] = DMM_WEDGE_PREDTEX_D_IDX; 1945 1946 if ( uiWidth > 4 ) 1947 { 1948 piTempY = cTempYuv.getLumaAddr(); 1949 1950 iTexDeltaDC1 = 0; 1951 iTexDeltaDC2 = 0; 1952 1953 findContourPredTex( pcCU, uiPartOffset, piOrg, piPred, uiStride, uiWidth, uiHeight, iTexDeltaDC1, iTexDeltaDC2, bAboveAvail, bLeftAvail, piTempY ); 1954 pcCU->setContourPredTexDeltaDC1SubParts( iTexDeltaDC1, uiPartOffset, uiDepth + uiInitTrDepth ); 1955 pcCU->setContourPredTexDeltaDC2SubParts( iTexDeltaDC2, uiPartOffset, uiDepth + uiInitTrDepth ); 1956 1957 uiRdModeList[ uiNewMaxMode++ ] = DMM_CONTOUR_PREDTEX_IDX; 1958 uiRdModeList[ uiNewMaxMode++ ] = DMM_CONTOUR_PREDTEX_D_IDX; 1959 } 2033 1960 2034 1961 cTempYuv.destroy(); 2035 2036 if ( uiDCSAD < (UInt)(pcCU->getQP(0))/2 ) 2037 { 2038 pcCU->setTextureModeAllowanceSubParts( false, uiPartOffset, uiDepth + uiInitTrDepth ); 2039 } 2040 else 2041 { 2042 pcCU->setTextureModeAllowanceSubParts( true, uiPartOffset, uiDepth + uiInitTrDepth ); 2043 } 2044 #endif 2045 UChar uhNumAdd = 0; 2046 if ( uiWidth > 4 ) 2047 { 2048 uhNumAdd = 8; 2049 } 2050 else 2051 { 2052 uhNumAdd = 4; 2053 } 2054 Bool bWedgePredFull = false; 2055 Bool bWedgePredDir = false; 2056 Bool bWedgePredTex = false; 2057 Bool bContourPredTex = false; 2058 2059 for ( Int i = 0; i < uhNumAdd; i++ ) 2060 { 2061 UInt uiDMMid = g_aucAdditionalIntraModeList[i]; 2062 2063 if( !predIntraLumaDMMAvailable( uiDMMid, bAboveAvail, bLeftAvail, uiWidth, uiHeight, pcCU, uiPartOffset ) ) 2064 continue; 2065 2066 if( uiDMMid >= DMM_WEDGE_PREDTEX_IDX && uiDMMid <= DMM_CONTOUR_PREDTEX_D_IDX && pcCU->getTextureModeAllowance( uiPartOffset ) == false ) 2067 { 2068 continue; 2069 } 2070 if( !bWedgePredFull && (uiDMMid == DMM_WEDGE_FULL_IDX || uiDMMid == DMM_WEDGE_FULL_D_IDX) ) 2071 { 2072 UInt uiTabIdx = 0; 2073 Int iDeltaDC1 = 0; 2074 Int iDeltaDC2 = 0; 2075 findWedgeFullMinDist( pcCU, uiPU, piOrg, piPred, uiStride, uiWidth, uiHeight, uiTabIdx, iDeltaDC1, iDeltaDC2, bAboveAvail, bLeftAvail, WedgeDist_SAD ); 2076 pcCU->setWedgeFullTabIdxSubParts ( uiTabIdx, uiPartOffset, uiDepth + uiInitTrDepth ); 2077 pcCU->setWedgeFullDeltaDC1SubParts( iDeltaDC1, uiPartOffset, uiDepth + uiInitTrDepth ); 2078 pcCU->setWedgeFullDeltaDC2SubParts( iDeltaDC2, uiPartOffset, uiDepth + uiInitTrDepth ); 2079 bWedgePredFull = true; 2080 } 2081 2082 if( !bWedgePredDir && (uiDMMid == DMM_WEDGE_PREDDIR_IDX || uiDMMid == DMM_WEDGE_PREDDIR_D_IDX) ) 2083 { 2084 UInt uiTabIdx = 0; 2085 Int iWedgeDeltaEnd = 0; 2086 Int iDeltaDC1 = 0; 2087 Int iDeltaDC2 = 0; 2088 findWedgePredDirMinDist( pcCU, uiPU, piOrg, piPred, uiStride, uiWidth, uiHeight, uiTabIdx, iWedgeDeltaEnd, iDeltaDC1, iDeltaDC2, bAboveAvail, bLeftAvail, WedgeDist_SAD ); 2089 pcCU->setWedgePredDirTabIdxSubParts ( uiTabIdx, uiPartOffset, uiDepth + uiInitTrDepth ); 2090 pcCU->setWedgePredDirDeltaEndSubParts( iWedgeDeltaEnd, uiPartOffset, uiDepth + uiInitTrDepth ); 2091 pcCU->setWedgePredDirDeltaDC1SubParts( iDeltaDC1, uiPartOffset, uiDepth + uiInitTrDepth ); 2092 pcCU->setWedgePredDirDeltaDC2SubParts( iDeltaDC2, uiPartOffset, uiDepth + uiInitTrDepth ); 2093 bWedgePredDir = true; 2094 } 2095 2096 if( !bWedgePredTex && (uiDMMid == DMM_WEDGE_PREDTEX_IDX || uiDMMid == DMM_WEDGE_PREDTEX_D_IDX) ) 2097 { 2098 UInt uiTabIdx = 0; 2099 Int iDeltaDC1 = 0; 2100 Int iDeltaDC2 = 0; 2101 findWedgeTexMinDist( pcCU, uiPU, piOrg, piPred, uiStride, uiWidth, uiHeight, uiTabIdx, iDeltaDC1, iDeltaDC2, bAboveAvail, bLeftAvail, WedgeDist_SAD ); 2102 pcCU->setWedgePredTexTabIdxSubParts ( uiTabIdx, uiPartOffset, uiDepth + uiInitTrDepth ); 2103 pcCU->setWedgePredTexDeltaDC1SubParts( iDeltaDC1, uiPartOffset, uiDepth + uiInitTrDepth ); 2104 pcCU->setWedgePredTexDeltaDC2SubParts( iDeltaDC2, uiPartOffset, uiDepth + uiInitTrDepth ); 2105 bWedgePredTex = true; 2106 } 2107 2108 if( !bContourPredTex && (uiDMMid == DMM_CONTOUR_PREDTEX_IDX || uiDMMid == DMM_CONTOUR_PREDTEX_D_IDX) ) 2109 { 2110 Int iDeltaDC1 = 0; 2111 Int iDeltaDC2 = 0; 2112 findContourPredTex( pcCU, uiPU, piOrg, piPred, uiStride, uiWidth, uiHeight, iDeltaDC1, iDeltaDC2, bAboveAvail, bLeftAvail ); 2113 pcCU->setContourPredTexDeltaDC1SubParts( iDeltaDC1, uiPartOffset, uiDepth + uiInitTrDepth ); 2114 pcCU->setContourPredTexDeltaDC2SubParts( iDeltaDC2, uiPartOffset, uiDepth + uiInitTrDepth ); 2115 bContourPredTex = true; 2116 } 2117 2118 uiRdModeList[ uiNewMaxMode ] = uiDMMid; 2119 uiNewMaxMode++; 2120 } 1962 #endif 2121 1963 } 2122 1964 #endif … … 2137 1979 2138 1980 #if (!REFERENCE_SAMPLE_PADDING) 2139 #if HHI_DMM_ INTRA1981 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 2140 1982 if ( !predIntraLumaDirAvailable( uiOrgMode, uiWidthBit, bAboveAvail, bLeftAvail, uiWidth, uiHeight, pcCU, uiPartOffset ) ) 2141 1983 continue; … … 2145 1987 #endif 2146 1988 #else 2147 #if HHI_DMM_ INTRA2148 if( m_pcEncCfg->isDepthCoder() && !predIntraLumaDMMAvailable( uiOrgMode, bAboveAvail, bLeftAvail, uiWidth, uiHeight, pcCU, uiPartOffset ) )1989 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 1990 if( m_pcEncCfg->isDepthCoder() && !predIntraLumaDMMAvailable( uiOrgMode, uiWidth, uiHeight ) ) 2149 1991 continue; 2150 1992 #endif … … 2166 2008 2167 2009 // reset Model 2010 #if HHI_VSO 2168 2011 if( m_pcRdCost->getUseRenModel() ) 2169 2012 { 2170 2013 m_pcRdCost->setRenModelData( pcCU, uiPartOffset, piOrg, uiStride, uiWidth, uiHeight ); 2171 2014 } 2015 #endif 2172 2016 2173 2017 #if HHI_RQT_INTRA_SPEEDUP … … 2223 2067 2224 2068 #if (!REFERENCE_SAMPLE_PADDING) 2225 #if HHI_DMM_ INTRA2069 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 2226 2070 if ( !predIntraLumaDirAvailable( uiOrgMode, uiWidthBit, bAboveAvail, bLeftAvail, uiWidth, uiHeight, pcCU, uiPartOffset ) ) 2227 2071 continue; … … 2231 2075 #endif 2232 2076 #else 2233 #if HHI_DMM_ INTRA2234 if( m_pcEncCfg->isDepthCoder() && !predIntraLumaDMMAvailable( uiOrgMode, bAboveAvail, bLeftAvail, uiWidth, uiHeight, pcCU, uiPartOffset ) )2077 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 2078 if( m_pcEncCfg->isDepthCoder() && !predIntraLumaDMMAvailable( uiOrgMode, uiWidth, uiHeight ) ) 2235 2079 continue; 2236 2080 #endif … … 2250 2094 Double dPUCost = 0.0; 2251 2095 2096 #if HHI_VSO 2252 2097 // reset Model 2253 2098 if( m_pcRdCost->getUseRenModel() ) … … 2255 2100 m_pcRdCost->setRenModelData( pcCU, uiPartOffset, piOrg, uiStride, uiWidth, uiHeight ); 2256 2101 } 2102 #endif 2257 2103 2258 2104 xRecurIntraCodingQT( pcCU, uiInitTrDepth, uiPartOffset, bLumaOnly, pcOrgYuv, pcPredYuv, pcResiYuv, uiPUDistY, uiPUDistC, false, dPUCost ); … … 2317 2163 } 2318 2164 2165 #if HHI_VSO 2319 2166 // set model 2320 2167 if( m_pcRdCost->getUseRenModel() ) … … 2323 2170 m_pcRdCost->setRenModelData( pcCU, uiPartOffset, piSrc, uiSrcStride, uiCompWidth, uiCompHeight); 2324 2171 } 2172 #endif 2325 2173 2326 2174 if( !bLumaOnly && !bSkipChroma ) … … 2483 2331 } 2484 2332 #endif 2485 #if HHI_DMM_ INTRA2333 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 2486 2334 #if ADD_PLANAR_MODE 2487 2335 if ( uiModeList[uiMode] == 4 && pcCU->getLumaIntraDir(0) > MAX_MODE_ID_INTRA_DIR ) … … 2545 2393 2546 2394 #if (!REFERENCE_SAMPLE_PADDING) 2547 #if HHI_DMM_ INTRA2395 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 2548 2396 Bool TEncSearch::predIntraLumaDirAvailable( UInt uiMode, UInt uiWidthBit, Bool bAboveAvail, Bool bLeftAvail, UInt uiWidth, UInt uiHeight, TComDataCU* pcCU, UInt uiAbsPartIdx ) 2549 2397 #else … … 2552 2400 { 2553 2401 Bool bDirAvailable; 2554 #if HHI_DMM_ INTRA2402 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 2555 2403 if( uiMode > MAX_MODE_ID_INTRA_DIR ) 2556 2404 { 2557 return predIntraLumaDMMAvailable( uiMode, bAboveAvail, bLeftAvail, uiWidth, uiHeight , pcCU, uiAbsPartIdx);2405 return predIntraLumaDMMAvailable( uiMode, bAboveAvail, bLeftAvail, uiWidth, uiHeight ); 2558 2406 } 2559 2407 else … … 2572 2420 #endif 2573 2421 2574 #if HHI_DMM_INTRA 2575 Void TEncSearch::xSearchWedgeFullMinDist( TComDataCU* pcCU, UInt uiAbsPtIdx, WedgeList* pacWedgeList, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx ) 2576 { 2577 ruiTabIdx = 0; 2578 2579 // local pred buffer 2580 TComYuv cPredYuv; 2581 cPredYuv.create( uiWidth, uiHeight ); 2582 cPredYuv.clear(); 2583 2584 UInt uiPredStride = cPredYuv.getStride(); 2585 Pel* piPred = cPredYuv.getLumaAddr(); 2586 2587 Int iDC1 = 0; 2588 Int iDC2 = 0; 2589 // regular wedge search 2590 Dist uiBestDist = RDO_DIST_MAX; 2591 UInt uiBestTabIdx = 0; 2592 2593 for( UInt uiIdx = 0; uiIdx < pacWedgeList->size(); uiIdx++ ) 2594 { 2595 calcWedgeDCs ( &(pacWedgeList->at(uiIdx)), piRef, uiRefStride, iDC1, iDC2 ); 2596 assignWedgeDCs2Pred( &(pacWedgeList->at(uiIdx)), piPred, uiPredStride, iDC1, iDC2 ); 2597 2598 Dist uiActDist = RDO_DIST_MAX; 2599 if( m_pcRdCost->getUseVSO() ) 2600 { 2601 uiActDist = m_pcRdCost->getDistVS( pcCU, 0, piPred, uiPredStride, piRef, uiRefStride, uiWidth, uiHeight, false, 0 ); 2602 } 2603 else 2604 { 2605 uiActDist = m_pcRdCost->getDistPart( piPred, uiPredStride, piRef, uiRefStride, uiWidth, uiHeight, DF_SAD ); 2606 } 2607 2608 if( uiActDist < uiBestDist || uiBestDist == RDO_DIST_MAX ) 2609 { 2610 uiBestDist = uiActDist; 2611 uiBestTabIdx = uiIdx; 2612 } 2613 } 2614 ruiTabIdx = uiBestTabIdx; 2615 2616 cPredYuv.destroy(); 2617 return; 2618 } 2619 2620 Void TEncSearch::xSearchWedgePredDirMinDist( TComDataCU* pcCU, UInt uiAbsPtIdx, WedgeList* pacWedgeList, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx, Int& riWedgeDeltaEnd ) 2621 { 2622 ruiTabIdx = 0; 2623 riWedgeDeltaEnd = 0; 2624 2625 // local pred buffer 2626 TComYuv cPredYuv; 2627 cPredYuv.create( uiWidth, uiHeight ); 2628 cPredYuv.clear(); 2629 2630 UInt uiPredStride = cPredYuv.getStride(); 2631 Pel* piPred = cPredYuv.getLumaAddr(); 2632 2633 Int iDC1 = 0; 2634 Int iDC2 = 0; 2635 2636 // regular wedge search 2637 Dist uiBestDist = RDO_DIST_MAX; 2638 UInt uiBestTabIdx = 0; 2639 Int iBestDeltaEnd = 0; 2640 2641 UInt uiIdx = 0; 2642 for( Int iTestDeltaEnd = -DMM_WEDGE_PREDDIR_DELTAEND_MAX; iTestDeltaEnd <= DMM_WEDGE_PREDDIR_DELTAEND_MAX; iTestDeltaEnd++ ) 2643 { 2644 uiIdx = getBestContinueWedge( pcCU, uiAbsPtIdx, uiWidth, uiHeight, iTestDeltaEnd ); 2645 calcWedgeDCs ( &(pacWedgeList->at(uiIdx)), piRef, uiRefStride, iDC1, iDC2 ); 2646 assignWedgeDCs2Pred( &(pacWedgeList->at(uiIdx)), piPred, uiPredStride, iDC1, iDC2 ); 2647 2648 Dist uiActDist = RDO_DIST_MAX; 2649 if( m_pcRdCost->getUseVSO() ) 2650 { 2651 uiActDist = m_pcRdCost->getDistVS( pcCU, 0, piPred, uiPredStride, piRef, uiRefStride, uiWidth, uiHeight, false, 0 ); 2652 } 2653 else 2654 { 2655 uiActDist = m_pcRdCost->getDistPart( piPred, uiPredStride, piRef, uiRefStride, uiWidth, uiHeight, DF_SAD ); 2656 } 2657 2658 if( uiActDist < uiBestDist || uiBestDist == RDO_DIST_MAX ) 2659 { 2660 uiBestDist = uiActDist; 2661 uiBestTabIdx = uiIdx; 2662 iBestDeltaEnd = iTestDeltaEnd; 2663 } 2664 else if( uiIdx == uiBestTabIdx && abs(iTestDeltaEnd) < abs(iBestDeltaEnd) ) 2665 { 2666 iBestDeltaEnd = iTestDeltaEnd; 2667 } 2668 } 2669 2670 ruiTabIdx = uiBestTabIdx; 2671 riWedgeDeltaEnd = iBestDeltaEnd; 2672 2673 cPredYuv.destroy(); 2674 return; 2675 } 2676 2677 Bool TEncSearch::predIntraLumaDMMAvailable( UInt uiMode, Bool bAboveAvail, Bool bLeftAvail, UInt uiWidth, UInt uiHeight, TComDataCU* pcCU, UInt uiAbsPartIdx ) 2678 { 2679 if( uiMode <= MAX_MODE_ID_INTRA_DIR ) return true; 2680 2681 Bool bDMMAvailable = m_pcEncCfg->getUseDepthModelModes(); 2682 2683 if( uiMode == DMM_WEDGE_FULL_IDX || 2684 uiMode == DMM_WEDGE_FULL_D_IDX || 2685 uiMode == DMM_WEDGE_PREDTEX_IDX || 2686 uiMode == DMM_WEDGE_PREDTEX_D_IDX || 2687 uiMode == DMM_CONTOUR_PREDTEX_IDX || 2688 uiMode == DMM_CONTOUR_PREDTEX_D_IDX || 2689 uiMode == DMM_WEDGE_PREDDIR_IDX || 2690 uiMode == DMM_WEDGE_PREDDIR_D_IDX ) 2691 { 2692 if( (uiWidth != uiHeight) || (uiWidth < DMM_WEDGEMODEL_MIN_SIZE) || (uiWidth > DMM_WEDGEMODEL_MAX_SIZE) ) 2693 { 2694 bDMMAvailable = false; 2695 } 2696 } 2697 2698 return bDMMAvailable; 2699 } 2700 2422 #if HHI_DMM_WEDGE_INTRA 2701 2423 Void TEncSearch::findWedgeFullMinDist( TComDataCU* pcCU, 2702 UInt uiAbsPtIdx,2703 Pel* piOrig,2704 Pel* piPredic,2705 UInt uiStride,2706 UInt uiWidth,2707 UInt uiHeight,2708 UInt& ruiTabIdx,2709 Int& riDeltaDC1,2710 Int& riDeltaDC2,2711 Bool bAbove,2712 Bool bLeft,2713 WedgeDist eWedgeDist2714 )2715 {2716 assert( uiWidth >= DMM_WEDGEMODEL_MIN_SIZE && uiWidth <= DMM_WEDGEMODEL_MAX_SIZE );2717 2718 WedgeList* pacWedgeList = &g_aacWedgeLists[(g_aucConvertToBit[uiWidth])];2719 xSearchWedgeFullMinDist( pcCU, uiAbsPtIdx, pacWedgeList, piOrig, uiStride, uiWidth, uiHeight, ruiTabIdx );2720 2721 TComWedgelet* pcBestWedgelet = &(pacWedgeList->at(ruiTabIdx));2722 xGetWedgeDeltaDCsMinDist( pcBestWedgelet, pcCU, uiAbsPtIdx, piOrig, piPredic, uiStride, uiWidth, uiHeight, riDeltaDC1, riDeltaDC2, bAbove, bLeft );2723 }2724 2725 Void TEncSearch::findWedgePredDirMinDist( TComDataCU* pcCU,2726 UInt uiAbsPtIdx,2727 Pel* piOrig,2728 Pel* piPredic,2729 UInt uiStride,2730 UInt uiWidth,2731 UInt uiHeight,2732 UInt& ruiTabIdx,2733 Int& riWedgeDeltaEnd,2734 Int& riDeltaDC1,2735 Int& riDeltaDC2,2736 Bool bAbove,2737 Bool bLeft,2738 WedgeDist eWedgeDist )2739 {2740 assert( uiWidth >= DMM_WEDGEMODEL_MIN_SIZE && uiWidth <= DMM_WEDGEMODEL_MAX_SIZE );2741 WedgeList* pacWedgeList = &g_aacWedgeLists[(g_aucConvertToBit[uiWidth])];2742 2743 ruiTabIdx = 0;2744 riWedgeDeltaEnd = 0;2745 2746 xSearchWedgePredDirMinDist( pcCU, uiAbsPtIdx, pacWedgeList, piOrig, uiStride, uiWidth, uiHeight, ruiTabIdx, riWedgeDeltaEnd );2747 2748 TComWedgelet* pcBestWedgelet = &(pacWedgeList->at(ruiTabIdx));2749 xGetWedgeDeltaDCsMinDist( pcBestWedgelet, pcCU, uiAbsPtIdx, piOrig, piPredic, uiStride, uiWidth, uiHeight, riDeltaDC1, riDeltaDC2, bAbove, bLeft );2750 }2751 2752 Void TEncSearch::findWedgeTexMinDist( TComDataCU* pcCU,2753 2424 UInt uiAbsPtIdx, 2754 2425 Pel* piOrig, … … 2763 2434 Bool bLeft, 2764 2435 WedgeDist eWedgeDist 2765 ) 2766 { 2436 ) 2437 { 2438 assert( uiWidth >= DMM_WEDGEMODEL_MIN_SIZE && uiWidth <= DMM_WEDGEMODEL_MAX_SIZE ); 2439 2440 WedgeList* pacWedgeList = &g_aacWedgeLists[(g_aucConvertToBit[uiWidth])]; 2441 xSearchWedgeFullMinDist( pcCU, uiAbsPtIdx, pacWedgeList, piOrig, uiStride, uiWidth, uiHeight, ruiTabIdx ); 2442 2443 TComWedgelet* pcBestWedgelet = &(pacWedgeList->at(ruiTabIdx)); 2444 xGetWedgeDeltaDCsMinDist( pcBestWedgelet, pcCU, uiAbsPtIdx, piOrig, piPredic, uiStride, uiWidth, uiHeight, riDeltaDC1, riDeltaDC2, bAbove, bLeft ); 2445 } 2446 2447 Void TEncSearch::xSearchWedgeFullMinDist( TComDataCU* pcCU, UInt uiAbsPtIdx, WedgeList* pacWedgeList, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx ) 2448 { 2449 ruiTabIdx = 0; 2450 2451 // local pred buffer 2452 TComYuv cPredYuv; 2453 cPredYuv.create( uiWidth, uiHeight ); 2454 cPredYuv.clear(); 2455 2456 UInt uiPredStride = cPredYuv.getStride(); 2457 Pel* piPred = cPredYuv.getLumaAddr(); 2458 2459 Int iDC1 = 0; 2460 Int iDC2 = 0; 2461 // regular wedge search 2462 Dist uiBestDist = RDO_DIST_MAX; 2463 UInt uiBestTabIdx = 0; 2464 2465 for( UInt uiIdx = 0; uiIdx < pacWedgeList->size(); uiIdx++ ) 2466 { 2467 calcWedgeDCs ( &(pacWedgeList->at(uiIdx)), piRef, uiRefStride, iDC1, iDC2 ); 2468 assignWedgeDCs2Pred( &(pacWedgeList->at(uiIdx)), piPred, uiPredStride, iDC1, iDC2 ); 2469 2470 Dist uiActDist = RDO_DIST_MAX; 2471 #if HHI_VSO 2472 if( m_pcRdCost->getUseVSO() ) 2473 { 2474 uiActDist = m_pcRdCost->getDistVS( pcCU, 0, piPred, uiPredStride, piRef, uiRefStride, uiWidth, uiHeight, false, 0 ); 2475 } 2476 else 2477 { 2478 uiActDist = m_pcRdCost->getDistPart( piPred, uiPredStride, piRef, uiRefStride, uiWidth, uiHeight, DF_SAD ); 2479 } 2480 #else 2481 uiActDist = m_pcRdCost->getDistPart( piPred, uiPredStride, piRef, uiRefStride, uiWidth, uiHeight, DF_SAD ); 2482 #endif 2483 2484 if( uiActDist < uiBestDist || uiBestDist == RDO_DIST_MAX ) 2485 { 2486 uiBestDist = uiActDist; 2487 uiBestTabIdx = uiIdx; 2488 } 2489 } 2490 ruiTabIdx = uiBestTabIdx; 2491 2492 cPredYuv.destroy(); 2493 return; 2494 } 2495 2496 Void TEncSearch::findWedgePredDirMinDist( TComDataCU* pcCU, 2497 UInt uiAbsPtIdx, 2498 Pel* piOrig, 2499 Pel* piPredic, 2500 UInt uiStride, 2501 UInt uiWidth, 2502 UInt uiHeight, 2503 UInt& ruiTabIdx, 2504 Int& riWedgeDeltaEnd, 2505 Int& riDeltaDC1, 2506 Int& riDeltaDC2, 2507 Bool bAbove, 2508 Bool bLeft, 2509 WedgeDist eWedgeDist ) 2510 { 2767 2511 assert( uiWidth >= DMM_WEDGEMODEL_MIN_SIZE && uiWidth <= DMM_WEDGEMODEL_MAX_SIZE ); 2768 2512 WedgeList* pacWedgeList = &g_aacWedgeLists[(g_aucConvertToBit[uiWidth])]; 2769 2513 2770 ruiTabIdx = getBestWedgeFromText( pcCU, uiAbsPtIdx, uiWidth, uiHeight ); 2514 ruiTabIdx = 0; 2515 riWedgeDeltaEnd = 0; 2516 2517 xSearchWedgePredDirMinDist( pcCU, uiAbsPtIdx, pacWedgeList, piOrig, uiStride, uiWidth, uiHeight, ruiTabIdx, riWedgeDeltaEnd ); 2518 2519 TComWedgelet* pcBestWedgelet = &(pacWedgeList->at(ruiTabIdx)); 2520 xGetWedgeDeltaDCsMinDist( pcBestWedgelet, pcCU, uiAbsPtIdx, piOrig, piPredic, uiStride, uiWidth, uiHeight, riDeltaDC1, riDeltaDC2, bAbove, bLeft ); 2521 } 2522 2523 Void TEncSearch::xSearchWedgePredDirMinDist( TComDataCU* pcCU, UInt uiAbsPtIdx, WedgeList* pacWedgeList, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx, Int& riWedgeDeltaEnd ) 2524 { 2525 ruiTabIdx = 0; 2526 riWedgeDeltaEnd = 0; 2527 2528 // local pred buffer 2529 TComYuv cPredYuv; 2530 cPredYuv.create( uiWidth, uiHeight ); 2531 cPredYuv.clear(); 2532 2533 UInt uiPredStride = cPredYuv.getStride(); 2534 Pel* piPred = cPredYuv.getLumaAddr(); 2535 2536 Int iDC1 = 0; 2537 Int iDC2 = 0; 2538 2539 // regular wedge search 2540 Dist uiBestDist = RDO_DIST_MAX; 2541 UInt uiBestTabIdx = 0; 2542 Int iBestDeltaEnd = 0; 2543 2544 UInt uiIdx = 0; 2545 for( Int iTestDeltaEnd = -DMM_WEDGE_PREDDIR_DELTAEND_MAX; iTestDeltaEnd <= DMM_WEDGE_PREDDIR_DELTAEND_MAX; iTestDeltaEnd++ ) 2546 { 2547 uiIdx = getBestContinueWedge( pcCU, uiAbsPtIdx, uiWidth, uiHeight, iTestDeltaEnd ); 2548 calcWedgeDCs ( &(pacWedgeList->at(uiIdx)), piRef, uiRefStride, iDC1, iDC2 ); 2549 assignWedgeDCs2Pred( &(pacWedgeList->at(uiIdx)), piPred, uiPredStride, iDC1, iDC2 ); 2550 2551 Dist uiActDist = RDO_DIST_MAX; 2552 #if HHI_VSO 2553 if( m_pcRdCost->getUseVSO() ) 2554 { 2555 uiActDist = m_pcRdCost->getDistVS( pcCU, 0, piPred, uiPredStride, piRef, uiRefStride, uiWidth, uiHeight, false, 0 ); 2556 } 2557 else 2558 { 2559 uiActDist = m_pcRdCost->getDistPart( piPred, uiPredStride, piRef, uiRefStride, uiWidth, uiHeight, DF_SAD ); 2560 } 2561 #else 2562 uiActDist = m_pcRdCost->getDistPart( piPred, uiPredStride, piRef, uiRefStride, uiWidth, uiHeight, DF_SAD ); 2563 #endif 2564 2565 if( uiActDist < uiBestDist || uiBestDist == RDO_DIST_MAX ) 2566 { 2567 uiBestDist = uiActDist; 2568 uiBestTabIdx = uiIdx; 2569 iBestDeltaEnd = iTestDeltaEnd; 2570 } 2571 else if( uiIdx == uiBestTabIdx && abs(iTestDeltaEnd) < abs(iBestDeltaEnd) ) 2572 { 2573 iBestDeltaEnd = iTestDeltaEnd; 2574 } 2575 } 2576 2577 ruiTabIdx = uiBestTabIdx; 2578 riWedgeDeltaEnd = iBestDeltaEnd; 2579 2580 cPredYuv.destroy(); 2581 return; 2582 } 2583 #endif 2584 2585 #if HHI_DMM_PRED_TEX 2586 Void TEncSearch::findWedgeTexMinDist( TComDataCU* pcCU, 2587 UInt uiAbsPtIdx, 2588 Pel* piOrig, 2589 Pel* piPredic, 2590 UInt uiStride, 2591 UInt uiWidth, 2592 UInt uiHeight, 2593 UInt& ruiTabIdx, 2594 Int& riDeltaDC1, 2595 Int& riDeltaDC2, 2596 Bool bAbove, 2597 Bool bLeft, 2598 WedgeDist eWedgeDist, 2599 Pel* piTextureRef 2600 ) 2601 { 2602 assert( uiWidth >= DMM_WEDGEMODEL_MIN_SIZE && uiWidth <= DMM_WEDGEMODEL_MAX_SIZE ); 2603 WedgeList* pacWedgeList = &g_aacWedgeLists[(g_aucConvertToBit[uiWidth])]; 2604 2605 ruiTabIdx = getBestWedgeFromText( pcCU, uiAbsPtIdx, uiWidth, uiHeight, eWedgeDist, piTextureRef ); 2771 2606 2772 2607 TComWedgelet* pcBestWedgelet = &(pacWedgeList->at(ruiTabIdx)); … … 2784 2619 Int& riDeltaDC2, 2785 2620 Bool bAbove, 2786 Bool bLeft ) 2621 Bool bLeft, 2622 Pel* piTextureRef ) 2787 2623 { 2788 2624 // get contour pattern 2789 2625 TComWedgelet* pcContourWedge = new TComWedgelet( uiWidth, uiHeight ); 2790 getBestContourFromText( pcCU, uiAbsPtIdx, uiWidth, uiHeight, pcContourWedge );2626 getBestContourFromText( pcCU, uiAbsPtIdx, uiWidth, uiHeight, pcContourWedge, piTextureRef ); 2791 2627 2792 2628 xGetWedgeDeltaDCsMinDist( pcContourWedge, pcCU, uiAbsPtIdx, piOrig, piPredic, uiStride, uiWidth, uiHeight, riDeltaDC1, riDeltaDC2, bAbove, bLeft ); … … 2795 2631 delete pcContourWedge; 2796 2632 } 2797 2633 #endif 2634 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 2798 2635 Void TEncSearch::xGetWedgeDeltaDCsMinDist( TComWedgelet* pcWedgelet, 2799 2636 TComDataCU* pcCU, … … 2824 2661 riDeltaDC2 = iDC2 - iPredDC2; 2825 2662 2663 #if HHI_VSO 2826 2664 if( m_pcRdCost->getUseVSO() ) 2827 2665 { … … 2875 2713 riDeltaDC2 = iFullDeltaDC2; 2876 2714 } 2715 #endif 2877 2716 2878 2717 xDeltaDCQuantScaleDown( pcCU, riDeltaDC1 ); 2879 2718 xDeltaDCQuantScaleDown( pcCU, riDeltaDC2 ); 2719 } 2720 2721 Bool TEncSearch::predIntraLumaDMMAvailable( UInt uiMode, UInt uiWidth, UInt uiHeight ) 2722 { 2723 if( uiMode <= MAX_MODE_ID_INTRA_DIR ) return true; 2724 2725 Bool bDMMAvailable = m_pcEncCfg->getUseDMM(); 2726 2727 #if HHI_DMM_WEDGE_INTRA 2728 if( uiMode == DMM_WEDGE_FULL_IDX || 2729 uiMode == DMM_WEDGE_FULL_D_IDX || 2730 uiMode == DMM_WEDGE_PREDDIR_IDX || 2731 uiMode == DMM_WEDGE_PREDDIR_D_IDX ) 2732 { 2733 if( (uiWidth != uiHeight) || (uiWidth < DMM_WEDGEMODEL_MIN_SIZE) || (uiWidth > DMM_WEDGEMODEL_MAX_SIZE) || ( ( uiMode == DMM_WEDGE_PREDDIR_IDX || uiMode == DMM_WEDGE_PREDDIR_D_IDX ) && uiWidth == 4 ) ) 2734 { 2735 bDMMAvailable = false; 2736 } 2737 } 2738 #endif 2739 #if HHI_DMM_PRED_TEX 2740 if( uiMode == DMM_WEDGE_PREDTEX_IDX || 2741 uiMode == DMM_WEDGE_PREDTEX_D_IDX || 2742 uiMode == DMM_CONTOUR_PREDTEX_IDX || 2743 uiMode == DMM_CONTOUR_PREDTEX_D_IDX ) 2744 { 2745 if( (uiWidth != uiHeight) || (uiWidth < DMM_WEDGEMODEL_MIN_SIZE) || (uiWidth > DMM_WEDGEMODEL_MAX_SIZE) || ( ( uiMode == DMM_CONTOUR_PREDTEX_IDX || uiMode == DMM_CONTOUR_PREDTEX_D_IDX ) && uiWidth == 4 ) ) 2746 { 2747 bDMMAvailable = false; 2748 } 2749 } 2750 2751 #endif 2752 2753 return bDMMAvailable; 2880 2754 } 2881 2755 … … 4033 3907 uiCost = ruiDist + m_pcRdCost->getCost( m_auiMVPIdxCost[iMVPIdx][iMVPNum] ); 4034 3908 #else 4035 //GTVSO3909 #if HHI_VSO 4036 3910 if ( false /*m_pcRdCost->getUseVSO()*/ ) // GT: currently disabled 4037 3911 { 4038 #if GERHARD_VQM_XCHECK4039 UInt uiCost1 = m_pcRdCost->getDistVS ( pcCU, uiPartAddr, pcTemplateCand->getLumaAddr(uiPartAddr), pcTemplateCand->getStride(), pcOrgYuv->getLumaAddr(uiPartAddr), pcOrgYuv->getStride(), iSizeX, iSizeY, true, 0);4040 UInt uiCost2 = m_pcRdCost->getDistPart( pcTemplateCand->getLumaAddr(uiPartAddr), pcTemplateCand->getStride(), pcOrgYuv->getLumaAddr(uiPartAddr), pcOrgYuv->getStride(), iSizeX, iSizeY, DF_SAD );4041 assert(uiCost1 == uiCost2);4042 #endif4043 3912 uiCost = m_pcRdCost->getDistVS ( pcCU, uiPartAddr, pcTemplateCand->getLumaAddr(uiPartAddr), pcTemplateCand->getStride(), pcOrgYuv->getLumaAddr(uiPartAddr), pcOrgYuv->getStride(), iSizeX, iSizeY, true, 0); 4044 3913 uiCost = (UInt) m_pcRdCost->calcRdCostVSO( m_auiMVPIdxCost[iMVPIdx][iMVPNum], uiCost, false, DF_SAD ); 4045 3914 } 4046 3915 else 3916 #endif 4047 3917 { 4048 3918 uiCost = m_pcRdCost->getDistPart( pcTemplateCand->getLumaAddr(uiPartAddr), pcTemplateCand->getStride(), pcOrgYuv->getLumaAddr(uiPartAddr), pcOrgYuv->getStride(), iSizeX, iSizeY, DF_SAD ); 4049 3919 uiCost = (UInt) m_pcRdCost->calcRdCost( m_auiMVPIdxCost[iMVPIdx][iMVPNum], uiCost, false, DF_SAD ); 4050 3920 } 4051 //GT VSO end4052 3921 #endif 4053 3922 return uiCost; … … 4123 3992 4124 3993 m_pcRdCost->setPredictor ( *pcMvPred ); 4125 #if MW_DEPTH_MAP_INTERP_FILTER == 2 && MW_FULL_PEL_DEPTH_MAP_MV_SIGNALLING3994 #if HHI_FULL_PEL_DEPTH_MAP_MV_ACC 4126 3995 if( pcCU->getSlice()->getSPS()->isDepth() ) 4127 3996 m_pcRdCost->setCostScale ( 0 ); … … 4130 3999 m_pcRdCost->setCostScale ( 2 ); 4131 4000 4001 #if HHI_INTER_VIEW_MOTION_PRED 4132 4002 { // init inter-view regularization 4133 4003 TComMv cOrgDepthMapMv; 4134 4004 Bool bMultiviewReg = pcCU->getIViewOrgDepthMvPred( iPartIdx, eRefPicList, iRefIdxPred, cOrgDepthMapMv ); 4135 #if MW_DEPTH_MAP_INTERP_FILTER == 2 && MW_FULL_PEL_DEPTH_MAP_MV_SIGNALLING4005 #if HHI_FULL_PEL_DEPTH_MAP_MV_ACC 4136 4006 if( bMultiviewReg && pcCU->getSlice()->getSPS()->isDepth() ) 4137 4007 { … … 4146 4016 } 4147 4017 } 4018 #endif 4148 4019 4149 4020 // Do integer search … … 4179 4050 4180 4051 m_pcRdCost->getMotionCost( 1, 0 ); 4181 #if MW_DEPTH_MAP_INTERP_FILTER == 2 && MW_FULL_PEL_DEPTH_MAP_MV_SIGNALLING4052 #if HHI_FULL_PEL_DEPTH_MAP_MV_ACC 4182 4053 if( ! pcCU->getSlice()->getSPS()->isDepth() ) 4183 4054 { … … 4203 4074 rcMv += (cMvHalf <<= 1); 4204 4075 rcMv += cMvQter; 4205 #if MW_DEPTH_MAP_INTERP_FILTER == 2 && MW_FULL_PEL_DEPTH_MAP_MV_SIGNALLING4076 #if HHI_FULL_PEL_DEPTH_MAP_MV_ACC 4206 4077 } 4207 4078 #endif 4208 4079 4209 4080 UInt uiMvBits = m_pcRdCost->getBits( rcMv.getHor(), rcMv.getVer() ); 4210 #if MW_DEPTH_MAP_INTERP_FILTER == 2 && MW_FULL_PEL_DEPTH_MAP_MV_SIGNALLING4081 #if HHI_FULL_PEL_DEPTH_MAP_MV_ACC 4211 4082 if( pcCU->getSlice()->getSPS()->isDepth() ) 4212 4083 ruiCost += m_pcRdCost->getCost( uiMvBits ); … … 4221 4092 { 4222 4093 Int iMvShift = 2; 4223 #if MW_DEPTH_MAP_INTERP_FILTER == 2 && MW_FULL_PEL_DEPTH_MAP_MV_SIGNALLING4094 #if HHI_FULL_PEL_DEPTH_MAP_MV_ACC 4224 4095 if( pcCU->getSlice()->getSPS()->isDepth() ) 4225 4096 iMvShift = 0; … … 4394 4265 UInt uiSearchRange = m_iSearchRange; 4395 4266 pcCU->clipMv( rcMv ); 4396 #if MW_DEPTH_MAP_INTERP_FILTER == 2 && MW_FULL_PEL_DEPTH_MAP_MV_SIGNALLING4267 #if HHI_FULL_PEL_DEPTH_MAP_MV_ACC 4397 4268 if( ! pcCU->getSlice()->getSPS()->isDepth() ) 4398 4269 #endif … … 4414 4285 TComMv cMv = m_acMvPredictors[index]; 4415 4286 pcCU->clipMv( cMv ); 4416 #if MW_DEPTH_MAP_INTERP_FILTER == 2 && MW_FULL_PEL_DEPTH_MAP_MV_SIGNALLING4287 #if HHI_FULL_PEL_DEPTH_MAP_MV_ACC 4417 4288 if( ! pcCU->getSlice()->getSPS()->isDepth() ) 4418 4289 #endif … … 4726 4597 pcYuvPred->copyToPartYuv( rpcYuvRec, 0 ); 4727 4598 4599 #if HHI_INTER_VIEW_RESIDUAL_PRED 4728 4600 // add residual prediction 4729 4601 if( pcCU->getResPredFlag( 0 ) ) … … 4732 4604 rpcYuvRec->clip( uiWidth, uiHeight ); 4733 4605 } 4734 4735 //GT VSO 4606 #endif 4607 4608 #if HHI_VSO 4736 4609 if ( m_pcRdCost->getUseVSO() ) 4737 4610 { 4738 #if GERHARD_VQM_XCHECK4739 UInt uiDistortion1 = m_pcRdCost->getDistPart( rpcYuvRec->getLumaAddr(), rpcYuvRec->getStride(), pcYuvOrg->getLumaAddr(), pcYuvOrg->getStride(), uiWidth, uiHeight );4740 UInt uiDistortion2 = m_pcRdCost->getDistVS( pcCU, 0, rpcYuvRec->getLumaAddr(), rpcYuvRec->getStride(), pcYuvOrg->getLumaAddr(), pcYuvOrg->getStride(), uiWidth, uiHeight , false, 0 );4741 assert( uiDistortion1 == uiDistortion2 );4742 #endif4743 4611 uiDistortion = m_pcRdCost->getDistVS( pcCU, 0, rpcYuvRec->getLumaAddr(), rpcYuvRec->getStride(), pcYuvOrg->getLumaAddr(), pcYuvOrg->getStride(), uiWidth, uiHeight , false, 0 ); 4744 4612 } 4745 4613 else 4614 #endif 4746 4615 { 4747 4616 uiDistortion = m_pcRdCost->getDistPart( rpcYuvRec->getLumaAddr(), rpcYuvRec->getStride(), pcYuvOrg->getLumaAddr(), pcYuvOrg->getStride(), uiWidth, uiHeight ) … … 4749 4618 + m_pcRdCost->getDistPart( rpcYuvRec->getCrAddr(), rpcYuvRec->getCStride(), pcYuvOrg->getCrAddr(), pcYuvOrg->getCStride(), uiWidth >> 1, uiHeight >> 1 ); 4750 4619 } 4751 //GT VSO end4620 4752 4621 4753 4622 if( m_bUseSBACRD ) … … 4755 4624 4756 4625 m_pcEntropyCoder->resetBits(); 4757 #if MW_MVI_SIGNALLING_MODE == 14626 #if HHI_MPI 4758 4627 if( pcCU->getTextureModeDepth( 0 ) == -1 ) 4759 4628 { … … 4772 4641 } 4773 4642 #endif 4643 #if HHI_INTER_VIEW_RESIDUAL_PRED 4774 4644 m_pcEntropyCoder->encodeResPredFlag( pcCU, 0, 0, true ); 4775 #if MW_MVI_SIGNALLING_MODE == 1 4645 #endif 4646 #if HHI_MPI 4776 4647 } 4777 4648 #endif … … 4780 4651 pcCU->getTotalBits() = uiBits; 4781 4652 pcCU->getTotalDistortion() = uiDistortion; 4782 //GT VSO 4653 4654 #if HHI_VSO 4783 4655 if ( m_pcRdCost->getUseLambdaScaleVSO() ) 4784 4656 { … … 4786 4658 } 4787 4659 else 4660 #endif 4788 4661 { 4789 4662 pcCU->getTotalCost() = m_pcRdCost->calcRdCost( uiBits, uiDistortion ); 4790 4663 } 4791 //GT VSO end4792 4664 4793 4665 if( m_bUseSBACRD ) … … 4797 4669 pcCU->setTrIdxSubParts( 0, 0, pcCU->getDepth(0) ); 4798 4670 4671 #if HHI_VSO 4799 4672 // set Model 4800 4673 if( m_pcRdCost->getUseRenModel() ) … … 4804 4677 m_pcRdCost->setRenModelData( pcCU, 0, piSrc, uiSrcStride, uiWidth, uiHeight ); 4805 4678 } 4679 #endif 4806 4680 4807 4681 return; … … 4828 4702 pcYuvPred->copyToPartYuv( rpcYuvRec, 0 ); 4829 4703 4704 #if HHI_INTER_VIEW_RESIDUAL_PRED 4830 4705 // add residual prediction 4831 4706 if( pcCU->getResPredFlag( 0 ) ) … … 4833 4708 rpcYuvRec->add( rpcYuvResPrd, uiWidth, uiHeight ); 4834 4709 } 4835 #if SB_INTERVIEW_SKIP 4710 #endif 4711 #if HHI_INTERVIEW_SKIP 4836 4712 if( bSkipRes) 4837 4713 { … … 4858 4734 4859 4735 Dist uiZeroDistortion = 0; 4860 //GTVSO4736 #if HHI_VSO 4861 4737 if ( m_pcRdCost->getUseVSO() ) 4862 4738 { 4863 4739 m_cYuvRecTemp.create( pcYuvPred->getWidth(), pcYuvPred->getHeight() ); 4864 4740 } 4741 #endif 4865 4742 4866 4743 xEstimateResidualQT( pcCU, 0, 0, pcYuvOrg, rpcYuvRec, rpcYuvResi, pcCU->getDepth(0), dCost, uiBits, uiDistortion, &uiZeroDistortion ); 4867 4744 4745 #if HHI_VSO 4868 4746 if ( m_pcRdCost->getUseVSO() ) 4869 4747 { 4870 4748 m_cYuvRecTemp.destroy(); 4871 4749 } 4872 //GT VSO end 4750 #endif 4751 4873 4752 4874 4753 double dZeroCost; 4754 #if HHI_VSO 4875 4755 if( m_pcRdCost->getUseLambdaScaleVSO() ) 4876 4756 { … … 4878 4758 } 4879 4759 else 4760 #endif 4880 4761 { 4881 4762 dZeroCost = m_pcRdCost->calcRdCost( 0, uiZeroDistortion ); … … 4926 4807 4927 4808 Double dExactCost; 4809 #if HHI_VSO 4928 4810 if( m_pcRdCost->getUseLambdaScaleVSO() ) 4929 4811 { … … 4931 4813 } 4932 4814 else 4815 #endif 4933 4816 { 4934 4817 dExactCost = m_pcRdCost->calcRdCost( uiBits, uiDistortion ); … … 4970 4853 } 4971 4854 4855 #if HHI_VSO 4972 4856 // reset Model 4973 4857 if( m_pcRdCost->getUseRenModel() ) … … 4977 4861 m_pcRdCost->setRenModelData( pcCU, 0, piSrc, uiSrcStride, uiWidth, uiHeight ); 4978 4862 } 4863 #endif 4979 4864 } 4980 4865 … … 5002 4887 // update with clipped distortion and cost (qp estimation loop uses unclipped values) 5003 4888 5004 //GTVSO4889 #if HHI_VSO 5005 4890 if ( m_pcRdCost->getUseVSO() ) 5006 4891 { 5007 #if GERHARD_VQM_XCHECK5008 UInt uiDistortionBest1 = m_pcRdCost->getDistVS ( pcCU, 0, rpcYuvRec->getLumaAddr(), rpcYuvRec->getStride(), pcYuvOrg->getLumaAddr(), pcYuvOrg->getStride(), uiWidth, uiHeight, false, 0 );5009 UInt uiDistortionBest2 = m_pcRdCost->getDistPart( rpcYuvRec->getLumaAddr(), rpcYuvRec->getStride(), pcYuvOrg->getLumaAddr(), pcYuvOrg->getStride(), uiWidth, uiHeight );5010 assert( uiDistortionBest1 == uiDistortionBest2 );5011 #endif5012 4892 uiDistortionBest = m_pcRdCost->getDistVS ( pcCU, 0, rpcYuvRec->getLumaAddr(), rpcYuvRec->getStride(), pcYuvOrg->getLumaAddr(), pcYuvOrg->getStride(), uiWidth, uiHeight, false, 0 ); 5013 4893 } 5014 4894 else 4895 #endif 5015 4896 { 5016 4897 uiDistortionBest = m_pcRdCost->getDistPart( rpcYuvRec->getLumaAddr(), rpcYuvRec->getStride(), pcYuvOrg->getLumaAddr(), pcYuvOrg->getStride(), uiWidth, uiHeight ) … … 5018 4899 + m_pcRdCost->getDistPart( rpcYuvRec->getCrAddr(), rpcYuvRec->getCStride(), pcYuvOrg->getCrAddr(), pcYuvOrg->getCStride(), uiWidth >> 1, uiHeight >> 1 ); 5019 4900 } 5020 //GT VSO end 5021 5022 //GT VSO 4901 4902 #if HHI_VSO 5023 4903 if ( m_pcRdCost->getUseLambdaScaleVSO() ) 5024 4904 { … … 5026 4906 } 5027 4907 else 4908 #endif 5028 4909 { 5029 4910 dCostBest = m_pcRdCost->calcRdCost( uiBitsBest, uiDistortionBest ); 5030 4911 } 5031 //GT VSO end5032 4912 5033 4913 pcCU->getTotalBits() = uiBitsBest; … … 5044 4924 5045 4925 // set Model 4926 #if HHI_VSO 5046 4927 if( m_pcRdCost->getUseRenModel() ) 5047 4928 { … … 5050 4931 m_pcRdCost->setRenModelData( pcCU, 0, piSrc, uiSrcStride, uiWidth, uiHeight ); 5051 4932 } 4933 #endif 5052 4934 } 5053 4935 … … 5167 5049 ::memset( m_pTempPel, 0, sizeof( Pel ) * uiNumSamplesLuma ); // not necessary needed for inside of recursion (only at the beginning) 5168 5050 5051 #if HHI_VSO 5169 5052 if ( m_pcRdCost->getUseVSO() ) 5170 5053 { 5171 5054 uiDistY = m_pcRdCost->getDistVS ( pcCU, uiAbsPartIdx, pcPred->getLumaAddr( uiAbsPartIdx ), pcPred->getStride(), pcOrg->getLumaAddr( uiAbsPartIdx), pcOrg->getStride(), 1<< uiLog2TrSize, 1<< uiLog2TrSize, false, 0 ); // initialized with zero residual distortion 5172 5173 #if GERHARD_VQM_XCHECK5174 UInt uiDist1 = m_pcRdCost->getDistPart( pcOrg->getLumaAddr( uiAbsPartIdx), pcOrg->getStride(), pcPred->getLumaAddr( uiAbsPartIdx ), pcPred->getStride(), 1<< uiLog2TrSize, 1<< uiLog2TrSize ); // initialized with zero residual distortion5175 UInt uiDist2 = m_pcRdCost->getDistPart( m_pTempPel, 1<< uiLog2TrSize, pcResi->getLumaAddr( uiAbsPartIdx ), pcResi->getStride(), 1<< uiLog2TrSize, 1<< uiLog2TrSize ); // initialized with zero residual distortion5176 assert( uiDist1 == uiDist2 );5177 #endif5178 5055 } 5179 5056 else 5057 #endif 5180 5058 { 5181 5059 #if IBDI_DISTORTION … … 5185 5063 #endif 5186 5064 } 5187 //GT VSO end 5065 5188 5066 5189 5067 if ( puiZeroDist ) … … 5203 5081 Dist uiNonzeroDistY; 5204 5082 5205 //GT VSO 5083 #if HHI_VSO 5206 5084 if ( m_pcRdCost->getUseVSO() ) 5207 5085 { … … 5209 5087 uiNonzeroDistY = m_pcRdCost->getDistVS( pcCU, uiAbsPartIdx, m_cYuvRecTemp.getLumaAddr(uiAbsPartIdx), m_cYuvRecTemp.getStride(), 5210 5088 pcOrg->getLumaAddr( uiAbsPartIdx ), pcOrg->getStride(), 1<< uiLog2TrSize, 1<< uiLog2TrSize, false, 0 ); 5211 5212 #if GERHARD_VQM_XCHECK5213 UInt uiDist1 = m_pcRdCost->getDistPart( m_cYuvRecTemp.getLumaAddr(uiAbsPartIdx), m_cYuvRecTemp.getStride(),5214 pcOrg->getLumaAddr( uiAbsPartIdx ), pcOrg->getStride(), 1<< uiLog2TrSize, 1<< uiLog2TrSize );5215 5216 UInt uiDist2 = m_pcRdCost->getDistPart( m_pcQTTempTComYuv[uiQTTempAccessLayer].getLumaAddr( uiAbsPartIdx ), m_pcQTTempTComYuv[uiQTTempAccessLayer].getStride(),5217 pcResi->getLumaAddr( uiAbsPartIdx ), pcResi->getStride(), 1<< uiLog2TrSize, 1<< uiLog2TrSize );5218 assert( uiDist1 == uiDist2);5219 #endif5220 5089 } 5221 5090 else 5091 #endif 5222 5092 { 5223 5093 uiNonzeroDistY = m_pcRdCost->getDistPart( m_pcQTTempTComYuv[uiQTTempAccessLayer].getLumaAddr( uiAbsPartIdx ), m_pcQTTempTComYuv[uiQTTempAccessLayer].getStride(), 5224 5094 pcResi->getLumaAddr( uiAbsPartIdx ), pcResi->getStride(), 1<< uiLog2TrSize, 1<< uiLog2TrSize ); 5225 5095 } 5226 //GT VSO end5227 5096 5228 5097 Double dSingleCostY; 5229 5098 Double dNullCostY; 5230 5099 5231 //GT VSO 5100 #if HHI_VSO 5232 5101 if ( m_pcRdCost->getUseLambdaScaleVSO()) 5233 5102 { … … 5236 5105 } 5237 5106 else 5107 #endif 5238 5108 { 5239 5109 dSingleCostY = m_pcRdCost->calcRdCost( uiSingleBitsY, uiNonzeroDistY ); 5240 5110 dNullCostY = m_pcRdCost->calcRdCost( 0, uiDistY ); 5241 5111 } 5242 //GT VSO end5243 5112 5244 5113 … … 5406 5275 5407 5276 uiSingleDist = uiDistY + uiDistU + uiDistV; 5408 //GTVSO5277 #if HHI_VSO 5409 5278 if ( m_pcRdCost->getUseLambdaScaleVSO()) 5410 5279 { … … 5412 5281 } 5413 5282 else 5283 #endif 5414 5284 { 5415 5285 dSingleCost = m_pcRdCost->calcRdCost( uiSingleBits, uiSingleDist ); 5416 5286 } 5417 //GT VSO end5418 5287 } 5419 5288 … … 5467 5336 uiSubdivBits = m_pcEntropyCoder->getNumberOfWrittenBits(); 5468 5337 5469 //GTVSO5338 #if HHI_VSO 5470 5339 if ( m_pcRdCost->getUseLambdaScaleVSO()) 5471 5340 { … … 5473 5342 } 5474 5343 else 5344 #endif 5475 5345 { 5476 5346 dSubdivCost = m_pcRdCost->calcRdCost( uiSubdivBits, uiSubdivDist ); 5477 5347 } 5478 //GT VSO end5479 5348 5480 5349 if( uiYCbf || uiUCbf || uiVCbf || !bCheckFull ) … … 5495 5364 } 5496 5365 5366 #if HHI_VSO 5497 5367 if ( m_pcRdCost->getUseRenModel() ) 5498 5368 { … … 5515 5385 uiSrcStride = pcPred->getStride (); 5516 5386 } 5387 5517 5388 m_pcRdCost->setRenModelData( pcCU, uiAbsPartIdx, piSrc, (Int) uiSrcStride, (Int) uiWidth, (Int) uiHeight ); 5518 5389 } 5390 #endif 5519 5391 5520 5392 rdCost += dSingleCost; … … 5762 5634 if ( pcCU->isSkipped( 0 ) ) 5763 5635 { 5764 #if MW_MVI_SIGNALLING_MODE == 0 5765 assert( pcCU->getTextureModeDepth( 0 ) == -1 ); 5766 #elif MW_MVI_SIGNALLING_MODE == 1 5636 #if HHI_MPI 5767 5637 if( pcCU->getTextureModeDepth( 0 ) != -1 ) 5768 5638 { … … 5787 5657 } 5788 5658 #endif 5659 #if HHI_INTER_VIEW_RESIDUAL_PRED 5789 5660 m_pcEntropyCoder->encodeResPredFlag( pcCU, 0, 0, true ); 5661 #endif 5790 5662 ruiBits += m_pcEntropyCoder->getNumberOfWrittenBits(); 5791 5663 } … … 5793 5665 { 5794 5666 m_pcEntropyCoder->resetBits(); 5795 #if MW_MVI_SIGNALLING_MODE == 15667 #if HHI_MPI 5796 5668 if( pcCU->getTextureModeDepth( 0 ) == -1 ) 5797 5669 { 5798 5670 #endif 5799 m_pcEntropyCoder->encodeSkipFlag ( pcCU, 0, true );5671 m_pcEntropyCoder->encodeSkipFlag ( pcCU, 0, true ); 5800 5672 #if HHI_MRG_SKIP 5801 if (pcCU->getPredictionMode(0) == MODE_SKIP) 5802 { 5803 pcCU->setPredModeSubParts( MODE_INTER, 0, pcCU->getDepth(0) ); 5804 } 5805 #endif 5806 #if MW_MVI_SIGNALLING_MODE == 0 5807 if( pcCU->getTextureModeDepth( 0 ) == -1 ) 5808 { 5673 if (pcCU->getPredictionMode(0) == MODE_SKIP) 5674 { 5675 pcCU->setPredModeSubParts( MODE_INTER, 0, pcCU->getDepth(0) ); 5676 } 5809 5677 #endif 5810 5678 m_pcEntropyCoder->encodePredMode( pcCU, 0, true ); … … 5812 5680 m_pcEntropyCoder->encodePredInfo( pcCU, 0, true ); 5813 5681 5682 #if HHI_INTER_VIEW_RESIDUAL_PRED 5814 5683 m_pcEntropyCoder->encodeResPredFlag( pcCU, 0, 0, true ); 5815 } 5684 #endif 5685 #if HHI_MPI 5686 } 5687 #endif 5816 5688 m_pcEntropyCoder->encodeCoeff ( pcCU, 0, pcCU->getDepth(0), pcCU->getWidth(0), pcCU->getHeight(0) ); 5817 5689 -
trunk/source/Lib/TLibEncoder/TEncSearch.h
r2 r5 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-2011, 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 1 34 2 35 … … 71 104 72 105 73 //GTVSO106 #if HHI_VSO 74 107 TComYuv m_cYuvRecTemp; 75 //GT VSO end 108 #endif 76 109 77 110 // AMVP cost computation … … 104 137 105 138 #if (!REFERENCE_SAMPLE_PADDING) 106 #if HHI_DMM_ INTRA139 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 107 140 Bool predIntraLumaDirAvailable( UInt uiMode, UInt uiWidthBit, Bool bAboveAvail, Bool bLeftAvail, UInt uiWidth, UInt uiHeight, TComDataCU* pcCU, UInt uiAbsPartIdx ); 108 141 #else … … 111 144 #endif 112 145 113 #if HHI_DMM_ INTRA146 #if HHI_DMM_WEDGE_INTRA 114 147 Void xSearchWedgeFullMinDist ( TComDataCU* pcCU, UInt uiAbsPtIdx, WedgeList* pacWedgeList, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx ); 115 148 Void xSearchWedgePredDirMinDist( TComDataCU* pcCU, UInt uiAbsPtIdx, WedgeList* pacWedgeList, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx, Int& riWedgeDeltaEnd ); 116 149 #endif 150 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 117 151 Void xGetWedgeDeltaDCsMinDist ( TComWedgelet* pcWedgelet, 118 152 TComDataCU* pcCU, … … 170 204 Dist uiPreCalcDistC ); 171 205 172 #if HHI_DMM_ INTRA206 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 173 207 Bool predIntraLumaDMMAvailable( UInt uiMode, 174 Bool bAboveAvail,175 Bool bLeftAvail,176 208 UInt uiWidth, 177 UInt uiHeight ,178 TComDataCU* pcCU, 179 UInt uiAbsPartIdx ); 209 UInt uiHeight ); 210 #endif 211 #if HHI_DMM_WEDGE_INTRA 180 212 Void findWedgeFullMinDist ( TComDataCU* pcCU, 181 213 UInt uiAbsPtIdx, … … 205 237 Bool bLeft, 206 238 WedgeDist eWedgeDist ); 239 #endif 240 #if HHI_DMM_PRED_TEX 207 241 Void findWedgeTexMinDist ( TComDataCU* pcCU, 208 242 UInt uiAbsPtIdx, … … 217 251 Bool bAbove, 218 252 Bool bLeft, 219 WedgeDist eWedgeDist ); 253 WedgeDist eWedgeDist, 254 Pel* piTextureRef = NULL ); 255 220 256 Void findContourPredTex ( TComDataCU* pcCU, 221 257 UInt uiAbsPtIdx, … … 228 264 Int& riDeltaDC2, 229 265 Bool bAbove, 230 Bool bLeft );231 266 Bool bLeft, 267 Pel* piTextureRef = NULL ); 232 268 #endif 233 269 … … 286 322 Bool bLuma, 287 323 Bool bChroma, 288 Bool bRealCoeff ); 324 Bool bRealCoeff 325 ); 289 326 290 327 Void xIntraCodingLumaBlk ( TComDataCU* pcCU, … … 295 332 TComYuv* pcResiYuv, 296 333 Dist& ruiDist 297 #if DMM_RES_CHECK_INTRA298 ,299 Bool bCheckNoRes = false300 #endif301 334 ); 302 303 #if DMM_RES_CHECK_INTRA304 Void xSetIntraNoResi ( TComDataCU* pcCU,305 UInt uiTrDepth,306 UInt uiAbsPartIdx,307 TComYuv* pcPredYuv,308 TComYuv* pcResiYuv,309 Bool bNoRes310 );311 #endif312 335 313 336 Void xIntraCodingChromaBlk ( TComDataCU* pcCU, -
trunk/source/Lib/TLibEncoder/TEncSeqStructure.cpp
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibEncoder/TEncSeqStructure.h
r2 r5 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-2011, 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 1 34 2 35 … … 8 41 #include <vector> 9 42 10 //SB11 43 #include <map> 12 44 -
trunk/source/Lib/TLibEncoder/TEncSlice.cpp
r2 r5 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-2011, 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 1 34 2 35 … … 16 49 m_apcPicYuvPred = NULL; 17 50 m_apcPicYuvResi = NULL; 18 51 19 52 m_pdRdPicLambda = NULL; 20 53 m_pdRdPicQp = NULL; … … 34 67 m_apcPicYuvPred->create( iWidth, iHeight, iMaxCUWidth, iMaxCUHeight, uhTotalDepth ); 35 68 } 36 69 37 70 // create residual picture 38 71 if( m_apcPicYuvResi == NULL ) … … 52 85 m_apcPicYuvPred = NULL; 53 86 } 54 87 55 88 // destroy residual picture 56 89 if ( m_apcPicYuvResi ) … … 60 93 m_apcPicYuvResi = NULL; 61 94 } 62 95 63 96 // free lambda and QP arrays 64 97 if ( m_pdRdPicLambda ) { xFree( m_pdRdPicLambda ); m_pdRdPicLambda = NULL; } … … 71 104 m_pcCfg = pcEncTop; 72 105 m_pcListPic = pcEncTop->getListPic(); 73 74 //SB 106 75 107 m_pcPicEncoder = pcEncTop->getPicEncoder(); 76 108 m_pcCuEncoder = pcEncTop->getCuEncoder(); 77 109 m_pcPredSearch = pcEncTop->getPredSearch(); 78 110 79 111 m_pcEntropyCoder = pcEncTop->getEntropyCoder(); 80 112 m_pcCavlcCoder = pcEncTop->getCavlcCoder(); … … 82 114 m_pcBinCABAC = pcEncTop->getBinCABAC(); 83 115 m_pcTrQuant = pcEncTop->getTrQuant(); 84 116 85 117 m_pcBitCounter = pcEncTop->getBitCounter(); 86 118 m_pcRdCost = pcEncTop->getRdCost(); 87 119 m_pppcRDSbacCoder = pcEncTop->getRDSbacCoder(); 88 120 m_pcRDGoOnSbacCoder = pcEncTop->getRDGoOnSbacCoder(); 89 121 90 122 // create lambda and QP arrays 91 123 m_pdRdPicLambda = (Double*)xMalloc( Double, m_pcCfg->getDeltaQpRD() * 2 + 1 ); … … 111 143 Double dQP; 112 144 Double dLambda; 113 145 114 146 rpcSlice = pcPic->getSlice(0); 115 147 rpcSlice->setSliceBits(0); … … 117 149 rpcSlice->initSlice(); 118 150 rpcSlice->setPOC( pcPic->getPOC() ); 119 151 120 152 // slice type 121 153 SliceType eSliceType = pcPic->getSliceType() ; 122 154 rpcSlice->setSliceType ( eSliceType ); 123 155 124 156 // ------------------------------------------------------------------------------------------------------------------ 125 157 // Non-referenced frame marking 126 158 // ------------------------------------------------------------------------------------------------------------------ 127 159 128 160 rpcSlice->setReferenced(pcPic->getReferenced()) ; 129 161 130 162 // ------------------------------------------------------------------------------------------------------------------ 131 163 // QP setting … … 133 165 134 166 Double dOrigQP = double(pcPic->getQP()); 135 167 136 168 // ------------------------------------------------------------------------------------------------------------------ 137 169 // Lambda computation 138 170 // ------------------------------------------------------------------------------------------------------------------ 139 171 140 172 Int iQP; 141 173 … … 149 181 // compute QP value 150 182 dQP = dOrigQP + ((iDQpIdx+1)>>1)*(iDQpIdx%2 ? -1 : 1); 151 183 152 184 // compute lambda value 153 185 Int NumberBFrames = ( m_pcCfg->getRateGOPSize() - 1 ); … … 206 238 // if hadamard is used in ME process 207 239 if ( !m_pcCfg->getUseHADME() ) dLambda *= 0.95; 208 240 209 241 iQP = Max( MIN_QP, Min( MAX_QP, (Int)floor( dQP + 0.5 ) ) ); 210 242 211 243 m_pdRdPicLambda[iDQpIdx] = dLambda; 212 244 m_pdRdPicQp [iDQpIdx] = dQP; 213 245 m_piRdPicQp [iDQpIdx] = iQP; 214 246 } 215 247 216 248 // obtain dQP = 0 case 217 249 dLambda = m_pdRdPicLambda[0]; 218 250 dQP = m_pdRdPicQp [0]; 219 251 iQP = m_piRdPicQp [0]; 220 252 221 253 // store lambda 222 //GTVSO223 m_pcRdCost->setUseLambdaScaleVSO ( (m_pcCfg->getUseVSO() || m_pcCfg->getForceLambdaScaleVSO()) && m_pcCfg->isDepthCoder() ); 224 m_pcRdCost->setLambdaVSO( dLambda * m_pcCfg->getLambdaScaleVSO() ); 225 //GT VSO end 254 #if HHI_VSO 255 m_pcRdCost->setUseLambdaScaleVSO ( (m_pcCfg->getUseVSO() || m_pcCfg->getForceLambdaScaleVSO()) && m_pcCfg->isDepthCoder() ); 256 m_pcRdCost->setLambdaVSO( dLambda * m_pcCfg->getLambdaScaleVSO() ); 257 #endif 226 258 227 259 m_pcRdCost ->setLambda ( dLambda ); 228 260 m_pcTrQuant->setLambda ( dLambda ); 229 261 rpcSlice ->setLambda ( dLambda ); 262 #if HHI_INTER_VIEW_MOTION_PRED 230 263 m_pcRdCost ->setLambdaMVReg ( dLambda * m_pcCfg->getMultiviewMvRegLambdaScale() ); 231 264 #endif 265 232 266 //#if HB_LAMBDA_FOR_LDC 233 267 // // restore original slice type … … 237 271 // } 238 272 // eSliceType = (iPOCLast == 0 || uiPOCCurr % m_pcCfg->getIntraPeriod() == 0 || m_pcGOPEncoder->getGOPSize() == 0) ? I_SLICE : eSliceType; 239 // 273 // 240 274 // rpcSlice->setSliceType ( eSliceType ); 241 275 //#endif 242 276 243 277 rpcSlice->setSliceQp ( iQP ); 244 278 rpcSlice->setSliceQpDelta ( 0 ); 245 279 rpcSlice->setNumRefIdx ( REF_PIC_LIST_0, eSliceType == I_SLICE ? 0 : pcPic->getNumRefs(REF_PIC_LIST_0) ) ; 246 280 rpcSlice->setNumRefIdx ( REF_PIC_LIST_1, eSliceType == I_SLICE ? 0 : pcPic->getNumRefs(REF_PIC_LIST_1) ) ; 247 281 248 282 rpcSlice->setSymbolMode ( m_pcCfg->getSymbolMode()); 249 283 rpcSlice->setLoopFilterDisable( m_pcCfg->getLoopFilterDisable() ); 250 284 251 285 rpcSlice->setDepth ( 0 ); 252 286 rpcSlice->setViewIdx ( pcPic->getViewIdx() ); … … 256 290 assert( m_apcPicYuvPred ); 257 291 assert( m_apcPicYuvResi ); 258 292 259 293 pcPic->setPicYuvPred( m_apcPicYuvPred ); 260 294 pcPic->setPicYuvResi( m_apcPicYuvResi ); … … 277 311 Int iMaxSR = m_pcCfg->getSearchRange(); 278 312 Int iNumPredDir = pcSlice->isInterP() ? 1 : 2; 279 313 280 314 for (Int iDir = 0; iDir <= iNumPredDir; iDir++) 281 315 { … … 299 333 // if deltaQP RD is not used, simply return 300 334 if ( m_pcCfg->getDeltaQpRD() == 0 ) return; 301 335 302 336 TComSlice* pcSlice = rpcPic->getSlice(getSliceIdx()); 303 337 Double dPicRdCostBest = MAX_DOUBLE; … … 306 340 UInt64 uiPicBitsBest; 307 341 UInt uiQpIdxBest = 0; 308 342 309 343 Double dFrameLambda; 310 344 #if FULL_NBIT … … 313 347 Int SHIFT_QP = 12; 314 348 #endif 315 349 316 350 // set frame lambda 317 351 if (m_pcCfg->getGOPSize() > 1) … … 324 358 } 325 359 m_pcRdCost ->setFrameLambda(dFrameLambda); 326 m_pcRdCost ->setFrameLambdaVSO( dFrameLambda * m_pcCfg->getLambdaScaleVSO() ); 327 360 #if HHI_VSO 361 m_pcRdCost ->setFrameLambdaVSO( dFrameLambda * m_pcCfg->getLambdaScaleVSO() ); 362 #endif 363 328 364 // for each QP candidate 329 365 for ( UInt uiQpIdx = 0; uiQpIdx < 2 * m_pcCfg->getDeltaQpRD() + 1; uiQpIdx++ ) … … 333 369 m_pcTrQuant ->setLambda ( m_pdRdPicLambda[uiQpIdx] ); 334 370 pcSlice ->setLambda ( m_pdRdPicLambda[uiQpIdx] ); 371 #if HHI_INTER_VIEW_MOTION_PRED 335 372 m_pcRdCost ->setLambdaMVReg ( m_pdRdPicLambda[uiQpIdx] * m_pcCfg->getMultiviewMvRegLambdaScale() ); 336 373 #endif 374 337 375 // try compress 338 376 compressSlice ( rpcPic ); 339 377 340 378 Double dPicRdCost; 341 379 UInt64 uiPicDist = m_uiPicDist; 342 380 UInt64 uiALFBits = 0; 343 381 344 382 m_pcPicEncoder->preLoopFilterPicAll( rpcPic, uiPicDist, uiALFBits ); 345 383 346 384 // compute RD cost and choose the best 347 385 dPicRdCost = m_pcRdCost->calcRdCost64( m_uiPicTotalBits + uiALFBits, uiPicDist, true, DF_SSE_FRAME); 348 386 349 387 if ( dPicRdCost < dPicRdCostBest ) 350 388 { … … 352 390 dPicRdCostBest = dPicRdCost; 353 391 dSumCURdCostBest = m_dPicRdCost; 354 392 355 393 uiPicBitsBest = m_uiPicTotalBits + uiALFBits; 356 394 uiPicDistBest = uiPicDist; 357 395 } 358 396 } 359 397 360 398 // set best values 361 399 pcSlice ->setSliceQp ( m_piRdPicQp [uiQpIdxBest] ); … … 363 401 m_pcTrQuant ->setLambda ( m_pdRdPicLambda[uiQpIdxBest] ); 364 402 pcSlice ->setLambda ( m_pdRdPicLambda[uiQpIdxBest] ); 403 #if HHI_INTER_VIEW_MOTION_PRED 365 404 m_pcRdCost ->setLambdaMVReg ( m_pdRdPicLambda[uiQpIdxBest] * m_pcCfg->getMultiviewMvRegLambdaScale() ); 405 #endif 366 406 } 367 407 … … 377 417 TComSlice* pcSlice = rpcPic->getSlice(getSliceIdx()); 378 418 xDetermineStartAndBoundingCUAddr ( uiStartCUAddr, uiBoundingCUAddr, rpcPic, false ); 379 419 380 420 #ifdef WEIGHT_PRED 381 421 //------------------------------------------------------------------------------ … … 411 451 m_dPicRdCost = 0; 412 452 m_uiPicDist = 0; 413 453 414 454 // set entropy coder 415 455 if( m_pcCfg->getUseSBACRD() ) … … 430 470 m_pcEntropyCoder->setBitstream ( m_pcBitCounter ); 431 471 } 432 472 433 473 // initialize ALF parameters 434 474 m_pcEntropyCoder->setAlfCtrl(false); 435 475 m_pcEntropyCoder->setMaxAlfCtrlDepth(0); //unnecessary 436 476 437 477 // for every CU in slice 438 478 for( uiCUAddr = uiStartCUAddr; uiCUAddr < uiBoundingCUAddr; uiCUAddr++ ) … … 443 483 TComDataCU*& pcCU = rpcPic->getCU( uiCUAddr ); 444 484 pcCU->initCU( rpcPic, uiCUAddr ); 445 485 446 486 // if RD based on SBAC is used 447 487 if( m_pcCfg->getUseSBACRD() ) … … 450 490 m_pcEntropyCoder->setEntropyCoder ( m_pcRDGoOnSbacCoder, pcSlice ); 451 491 m_pcEntropyCoder->setBitstream ( m_pcBitCounter ); 452 492 453 493 // run CU encoder 454 494 m_pcCuEncoder->compressCU( pcCU ); 455 495 456 496 // restore entropy coder to an initial stage 457 497 m_pcEntropyCoder->setEntropyCoder ( m_pppcRDSbacCoder[0][CI_CURR_BEST], pcSlice ); 458 498 m_pcEntropyCoder->setBitstream ( m_pcBitCounter ); 459 499 pppcRDSbacCoder->setBinCountingEnableFlag( true ); 460 500 461 501 m_pcCuEncoder->encodeCU( pcCU ); 462 502 … … 474 514 break; 475 515 } 476 516 477 517 UInt uiBinsCoded = pppcRDSbacCoder->getBinsCoded(); 478 518 if (m_pcCfg->getEntropySliceMode()==SHARP_MULTIPLE_CONSTRAINT_BASED_ENTROPY_SLICE && uiBinsCoded > m_pcCfg->getEntropySliceArgument()) … … 494 534 m_pcCavlcCoder ->setAdaptFlag(true); 495 535 m_pcCuEncoder->encodeCU( pcCU ); 496 536 497 537 uiBitsCoded += m_pcBitCounter->getNumberOfWrittenBits(); 498 538 if (m_pcCfg->getSliceMode()==AD_HOC_SLICES_FIXED_NUMBER_OF_BYTES_IN_SLICE && ( ( pcSlice->getSliceBits() + uiBitsCoded ) >> 3 ) > m_pcCfg->getSliceArgument()) … … 521 561 m_pcCavlcCoder ->setAdaptFlag(false); 522 562 } 523 563 524 564 m_uiPicTotalBits += pcCU->getTotalBits(); 525 565 m_dPicRdCost += pcCU->getTotalCost(); … … 556 596 m_pcEntropyCoder->resetEntropy(); 557 597 } 558 598 559 599 // set bitstream 560 600 m_pcEntropyCoder->setBitstream( rpcBitstream ); … … 588 628 #if ENC_DEC_TRACE 589 629 g_bJustDoIt = g_bEncDecTraceDisable; 590 #endif 630 #endif 591 631 } 592 632 } … … 603 643 UInt uiNumberOfCUsInFrame = rpcPic->getNumCUsInFrame(); 604 644 uiBoundingCUAddrSlice = uiNumberOfCUsInFrame; 605 if (bEncodeSlice) 645 if (bEncodeSlice) 606 646 { 607 647 UInt uiCUAddrIncrement; … … 620 660 uiBoundingCUAddrSlice = uiNumberOfCUsInFrame; 621 661 break; 622 } 662 } 623 663 pcSlice->setSliceCurEndCUAddr( uiBoundingCUAddrSlice ); 624 664 } … … 636 676 uiBoundingCUAddrSlice = uiNumberOfCUsInFrame; 637 677 break; 638 } 678 } 639 679 pcSlice->setSliceCurEndCUAddr( uiBoundingCUAddrSlice ); 640 680 } … … 644 684 uiStartCUAddrEntropySlice = pcSlice->getEntropySliceCurStartCUAddr(); 645 685 uiBoundingCUAddrEntropySlice = uiNumberOfCUsInFrame; 646 if (bEncodeSlice) 686 if (bEncodeSlice) 647 687 { 648 688 UInt uiCUAddrIncrement; … … 661 701 uiBoundingCUAddrEntropySlice = uiNumberOfCUsInFrame; 662 702 break; 663 } 703 } 664 704 pcSlice->setEntropySliceCurEndCUAddr( uiBoundingCUAddrEntropySlice ); 665 705 } … … 677 717 uiBoundingCUAddrEntropySlice = uiNumberOfCUsInFrame; 678 718 break; 679 } 719 } 680 720 pcSlice->setEntropySliceCurEndCUAddr( uiBoundingCUAddrEntropySlice ); 681 721 } -
trunk/source/Lib/TLibEncoder/TEncSlice.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibEncoder/TEncTop.cpp
r2 r5 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-2011, 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 1 34 2 35 … … 58 91 m_cAdaptiveLoopFilter.create( getSourceWidth(), getSourceHeight(), g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth ); 59 92 m_cLoopFilter. create( g_uiMaxCUDepth ); 93 #if DEPTH_MAP_GENERATION 60 94 m_cDepthMapGenerator. create( false, getSourceWidth(), getSourceHeight(), g_uiMaxCUDepth, g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiBitDepth + g_uiBitIncrement ); 95 #endif 96 #if HHI_INTER_VIEW_RESIDUAL_PRED 61 97 m_cResidualGenerator. create( false, getSourceWidth(), getSourceHeight(), g_uiMaxCUDepth, g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiBitDepth + g_uiBitIncrement ); 98 #endif 62 99 63 100 #if MQT_BA_RA && MQT_ALF_NPASS … … 89 126 } 90 127 91 #if HHI_DMM_ INTRA92 if( g_aacWedgeLists.empty() && m_bUseD epthModelModes&& m_bIsDepth )128 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 129 if( g_aacWedgeLists.empty() && m_bUseDMM && m_bIsDepth ) 93 130 { 94 131 initWedgeLists(); … … 119 156 m_cAdaptiveLoopFilter.destroy(); 120 157 m_cLoopFilter. destroy(); 158 #if DEPTH_MAP_GENERATION 121 159 m_cDepthMapGenerator. destroy(); 160 #endif 161 #if HHI_INTER_VIEW_RESIDUAL_PRED 122 162 m_cResidualGenerator. destroy(); 163 #endif 123 164 124 165 // SBAC RD … … 172 213 173 214 m_pcTAppEncTop = pcTAppEncTop; 215 #if DEPTH_MAP_GENERATION 174 216 m_cDepthMapGenerator.init( (TComPrediction*)this->getPredSearch(), m_pcTAppEncTop->getSPSAccess(), m_pcTAppEncTop->getAUPicAccess() ); 217 #endif 218 #if HHI_INTER_VIEW_RESIDUAL_PRED 175 219 m_cResidualGenerator.init( &m_cTrQuant, &m_cDepthMapGenerator ); 220 #endif 176 221 177 222 // initialize transform & quantization class … … 254 299 pcPic = cIter->second ; 255 300 301 #if DEPTH_MAP_GENERATION 256 302 // add extra pic buffers 257 303 Bool bNeedPrdDepthMapBuf = ( m_uiPredDepthMapGeneration > 0 ); … … 260 306 pcPic->addPrdDepthMapBuffer(); 261 307 } 308 #endif 262 309 263 310 // needed? dont think so … … 323 370 xGetNewPicBuffer( pcPicCurr ); //GT: assigns next POC to input pic and stores it in m_cListPic 324 371 pcPicYuvOrg->copyToPic( pcPicCurr->getPicYuvOrg() ); 372 #if HHI_INTER_VIEW_MOTION_PRED 325 373 if( m_uiMultiviewMvRegMode ) 326 374 { … … 334 382 AOT( pcPicCurr->getOrgDepthMap() ); 335 383 } 384 #endif 336 385 m_acInputPicMap.insert( std::make_pair(pcPicCurr->getPOC(), pcPicCurr)); //GT: input pic to m_acInputPicMap 337 386 assert( m_acOutputPicMap.find( pcPicCurr->getPOC() ) == m_acOutputPicMap.end() ); … … 367 416 { 368 417 pcPic->removeOriginalBuffer (); 418 #if HHI_INTER_VIEW_MOTION_PRED 369 419 pcPic->removeOrgDepthMapBuffer(); 420 #endif 421 #if HHI_INTER_VIEW_RESIDUAL_PRED 370 422 pcPic->removeResidualBuffer (); 423 #endif 424 #if HHI_INTERVIEW_SKIP 371 425 pcPic->removeUsedPelsMapBuffer(); 426 #endif 372 427 } 373 428 } … … 434 489 435 490 rpcPic->addOriginalBuffer(); 491 #if HHI_INTER_VIEW_MOTION_PRED 436 492 if( m_uiMultiviewMvRegMode ) 437 493 { 438 494 rpcPic->addOrgDepthMapBuffer(); 439 495 } 440 if( m_bOmitUnusedBlocks ) 496 #endif 497 498 #if HHI_INTERVIEW_SKIP 499 if( getInterViewSkip() ) 441 500 { 442 501 rpcPic->addUsedPelsMapBuffer(); 443 502 } 503 #endif 444 504 445 505 rpcPic->setCurrSliceIdx( 0 ); // MW … … 470 530 471 531 m_cSPS.setUseDQP ( m_iMaxDeltaQP != 0 ); 472 #if ! SB_NO_LowDelayCoding532 #if !HHI_NO_LowDelayCoding 473 533 m_cSPS.setUseLDC ( m_bUseLDC ); 474 534 #endif … … 486 546 { 487 547 m_cSPS.initMultiviewSPSDepth ( m_uiViewId, m_iViewOrderIdx ); 548 #if DEPTH_MAP_GENERATION 488 549 m_cSPS.setPredDepthMapGeneration( m_uiViewId, true ); 550 #endif 551 #if HHI_INTER_VIEW_RESIDUAL_PRED 489 552 m_cSPS.setMultiviewResPredMode ( 0 ); 553 #endif 490 554 } 491 555 else … … 494 558 if( m_uiViewId ) 495 559 { 560 #if DEPTH_MAP_GENERATION 561 #if HHI_INTER_VIEW_MOTION_PRED 496 562 m_cSPS.setPredDepthMapGeneration( m_uiViewId, false, m_uiPredDepthMapGeneration, m_uiMultiviewMvPredMode, m_uiPdmPrecision, m_aaiPdmScaleNomDelta, m_aaiPdmOffset ); 563 #else 564 m_cSPS.setPredDepthMapGeneration( m_uiViewId, false, m_uiPredDepthMapGeneration, 0, m_uiPdmPrecision, m_aaiPdmScaleNomDelta, m_aaiPdmOffset ); 565 #endif 566 #endif 567 #if HHI_INTER_VIEW_RESIDUAL_PRED 497 568 m_cSPS.setMultiviewResPredMode ( m_uiMultiviewResPredMode ); 569 #endif 498 570 } 499 571 else 500 572 { 573 #if DEPTH_MAP_GENERATION 501 574 m_cSPS.setPredDepthMapGeneration( m_uiViewId, false ); 575 #endif 576 #if HHI_INTER_VIEW_RESIDUAL_PRED 502 577 m_cSPS.setMultiviewResPredMode ( 0 ); 578 #endif 503 579 } 504 580 } … … 537 613 m_cSPS.setUseSAO ( m_bUseSAO ); 538 614 #endif 539 #if HHI_DMM_INTRA 540 m_cSPS.setUseDepthModelModes( m_bUseDepthModelModes ); 541 #endif 615 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 616 m_cSPS.setUseDMM( m_bUseDMM ); 617 #endif 618 #if HHI_MPI 542 619 m_cSPS.setUseMVI( m_bUseMVI ); 620 #endif 543 621 544 622 m_cSPS.setCodedPictureBufferSize( m_uiCodedPictureStoreSize ); -
trunk/source/Lib/TLibEncoder/TEncTop.h
r2 r5 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-2011, 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 1 34 2 35 /** \file TEncTop.h … … 27 60 #include "TEncAdaptiveLoopFilter.h" 28 61 29 //SB30 62 #include "TEncSeqStructure.h" 31 63 #include <map> … … 71 103 72 104 // processing unit 73 // SB74 105 TEncPic m_cPicEncoder; ///< Pic encoder 75 106 TEncSlice m_cSliceEncoder; ///< slice encoder 76 107 TEncCu m_cCuEncoder; ///< CU encoder 108 #if DEPTH_MAP_GENERATION 77 109 TComDepthMapGenerator m_cDepthMapGenerator; ///< depth map generator 110 #endif 111 #if HHI_INTER_VIEW_RESIDUAL_PRED 78 112 TComResidualGenerator m_cResidualGenerator; ///< generator for residual pictures 113 #endif 79 114 80 115 // SPS … … 151 186 TEncSbac*** getRDSbacCoder () { return m_pppcRDSbacCoder; } 152 187 TEncSbac* getRDGoOnSbacCoder () { return &m_cRDGoOnSbacCoder; } 188 #if DEPTH_MAP_GENERATION 153 189 TComDepthMapGenerator* getDepthMapGenerator () { return &m_cDepthMapGenerator; } 190 #endif 191 #if HHI_INTER_VIEW_RESIDUAL_PRED 154 192 TComResidualGenerator* getResidualGenerator () { return &m_cResidualGenerator; } 193 #endif 155 194 156 195 TComSPS* getSPS () { return &m_cSPS; } … … 164 203 Void printOutSummary ( UInt uiNumAllPicCoded ); 165 204 166 //SB167 205 TEncAnalyze m_cAnalyzeAll; 168 206 TEncAnalyze m_cAnalyzeI; … … 179 217 Void encode ( bool bEos, std::map<PicOrderCnt, TComPicYuv*>& rcMapPicYuvRecOut, TComBitstream* pcBitstreamOut, Bool& bNewPicNeeded ); 180 218 Void receivePic( bool bEos, TComPicYuv* pcPicYuvOrg, TComPicYuv* pcPicYuvRec, TComPicYuv* pcOrgPdmDepth = 0 ); 181 182 219 }; 183 220 184 185 221 #endif // __TENCTOP__ 186 222 -
trunk/source/Lib/TLibEncoder/WeightPredAnalysis.cpp
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibEncoder/WeightPredAnalysis.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibRenderer/TRenFilter.cpp
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibRenderer/TRenFilter.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibRenderer/TRenImage.cpp
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibRenderer/TRenImage.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibRenderer/TRenImagePlane.cpp
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibRenderer/TRenImagePlane.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibRenderer/TRenModSetupStrParser.cpp
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibRenderer/TRenModSetupStrParser.h
r2 r5 1 2 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-2011, 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 */ 3 33 4 34 #ifndef __TRENMODSETUPSTRPARSER__ … … 95 125 Void xGetNextChar ( Char& rcNextChar ); 96 126 }; 127 97 128 #endif //__TRENMODEL__ -
trunk/source/Lib/TLibRenderer/TRenModel.cpp
r2 r5 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-2011, 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 1 34 2 35 … … 614 647 TRenFilter::sampleDown2Tap13( ppiSrcVideoPel[2], piStrides[2], m_iWidth, m_iHeight, rpcPicYuvTarget->getCrAddr (), rpcPicYuvTarget->getCStride() ); 615 648 } 616 617 #if GERHARD_RM_DEBUG_MM618 Bool619 TRenModel::compareAll( TRenModel* pcModel )620 {621 Bool bEqual = true;622 for (Int iCurModel = 0; iCurModel < m_iNumOfRenModels; iCurModel++)623 {624 bEqual = bEqual && m_apcRenModels[iCurModel]->compare( pcModel->m_apcRenModels[iCurModel] );625 }626 return bEqual;627 }628 629 Bool630 TRenModel::compare( TRenModel* pcModel )631 {632 Bool bEqual = true;633 for (Int iCurModel = 0; iCurModel < m_iNumOfCurRenModels; iCurModel++)634 {635 bEqual = bEqual && m_apcCurRenModels[iCurModel]->compare( pcModel->m_apcCurRenModels[iCurModel] );636 }637 return bEqual;638 }639 #endif -
trunk/source/Lib/TLibRenderer/TRenModel.h
r2 r5 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-2011, 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 1 34 2 35 … … 40 73 Void getTotalSSE (Int64& riSSEY, Int64& riSSEU, Int64& riSSEV ); 41 74 42 #if GERHARD_RM_DEBUG_MM43 Bool compareAll ( TRenModel* pcModel);44 Bool compare ( TRenModel* pcModel);45 public:46 #else47 75 private: 48 #endif49 50 76 // helpers 51 77 Void xSetLRViewAndAddModel( Int iModelNum, Int iBaseViewNum, Int iContent, Int iViewPos, Bool bAdd ); -
trunk/source/Lib/TLibRenderer/TRenSingleModel.cpp
r2 r5 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-2011, 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 1 34 2 35 #include "TRenImage.h" … … 451 484 if ( iCurSPos < iMinChangedSPos ) 452 485 { 453 #if GERHARD_RM_HOLE_EXT454 if ( (iCurSPos > 0) && (m_apiFilledRow[m_iCurViewPos][ iCurSPos-1 ] != REN_IS_FILLED) || (iCurSPos > 1) && (m_apiFilledRow[m_iCurViewPos][ iCurSPos-2 ] != REN_IS_FILLED) )455 {456 iMinChangedSPos = iMinChangedSPos - m_iHoleMargin - 2;457 }458 else459 {460 486 break; 461 487 } 462 #else 463 break; 464 #endif 465 } 488 466 489 iCurPosX--; 467 490 iLastSPos = iCurSPos; … … 554 577 if ( iCurSPos > iMaxChangedSPos ) 555 578 { 556 #if GERHARD_RM_HOLE_EXT557 if ( (iCurSPos > 0) && (m_apiFilledRow[m_iCurViewPos][ iCurSPos-1 ] != REN_IS_FILLED) || (iCurSPos > 1) && (m_apiFilledRow[m_iCurViewPos][ iCurSPos-2 ] != REN_IS_FILLED) )558 {559 iMaxChangedSPos = iMaxChangedSPos - m_iHoleMargin - 2;560 }561 else562 {563 579 break; 564 580 } 565 #else566 break;567 #endif568 }569 581 iCurPosX++; 570 582 iLastSPos = iCurSPos; … … 584 596 Int iCurPosX = iEndChangePos; 585 597 586 #if GERHARD_RM_HOLE_EXT587 Int iEndFillSPos = iLastSPos + m_iHoleMargin;588 while ( (iCurPosX + 1 < m_iWidth) && ( xShift(iCurPosX + 1) <= iEndFillSPos) && !(m_apbOccludedRow[m_iCurViewPos][ iCurPosX + 1] ) )589 iCurPosX++;590 #endif591 592 598 if ( ( iCurPosX + 1 < m_iWidth ) && (m_apbOccludedRow[m_iCurViewPos][ iCurPosX + 1] ) ) 593 599 { … … 615 621 616 622 m_bInOcclusion = iLastSPos >= m_iLastOccludedSPos; 617 618 #if GERHARD_RM_HOLE_EXT619 // RE-RENDER if not filled620 if ( ( ( ( iLastSPos < m_iLastOccludedSPos) && ( m_apiFilledRow[m_iCurViewPos][ iLastSPos ] != REN_IS_FILLED ) )))621 {622 xRemoveHoleExtL(iLastSPos, iEndChangePos+1, iError );623 }624 #endif625 623 }; 626 624 … … 630 628 // GET MINIMAL OCCLUDED SAMPLE POSITION 631 629 Int iCurPosX = iStartChangePos; 632 633 #if GERHARD_RM_HOLE_EXT634 Int iEndFillSPos = iLastSPos + m_iHoleMargin;635 while ( (iCurPosX + 1 < m_iWidth) && ( xShift(iCurPosX + 1) <= iEndFillSPos) && !(m_apbOccludedRow[m_iCurViewPos][ iCurPosX + 1] ) )636 iCurPosX++;637 #endif638 630 639 631 if ( ( iCurPosX - 1 > -1 ) && (m_apbOccludedRow[m_iCurViewPos][ iCurPosX - 1] ) ) … … 652 644 m_iLastOccludedSPos = xShift(iCurPosX) - 1; 653 645 } 654 #if GERHARD_RM_SPLAT655 646 m_iLastOccludedSPosFP = xRoundR( m_iLastOccludedSPos ); 656 #else657 m_iLastOccludedSPosFP = xRangeLeftR( m_iLastOccludedSPos );658 #endif659 647 } 660 648 else … … 665 653 666 654 m_bInOcclusion = iLastSPos <= m_iLastOccludedSPos; 667 668 #if GERHARD_RM_HOLE_EXT669 // RE-RENDER if not filled670 if ( ( ( ( iLastSPos < m_iLastOccludedSPos) && ( m_apiFilledRow[m_iCurViewPos][ iLastSPos ] != REN_IS_FILLED ) )))671 {672 xRemoveHoleExtL(iLastSPos, iStartChangePos+1, iError );673 }674 #endif675 655 }; 676 656 … … 752 732 { 753 733 m_iLastOccludedSPos = iLastSPos; 754 #if GERHARD_RM_SPLAT 734 755 735 Int iRightSPosFP = xRoundL( iLastSPos ); 756 736 if ( ( iRightSPosFP == xRangeRightL(iLastSPos)) && (iRightSPosFP >= 0) ) … … 760 740 } 761 741 m_iLastOccludedSPosFP = iRightSPosFP; 762 #else763 m_iLastOccludedSPosFP = xRangeLeftL( m_iLastOccludedSPos );764 #endif765 742 766 743 m_bInOcclusion = true; … … 813 790 m_iLastOccludedSPos = iLastSPos; 814 791 815 #if GERHARD_RM_SPLAT816 792 Int iLeftSPosFP = xRoundR( iLastSPos ); 817 793 if ( ( iLeftSPosFP == xRangeLeftR(iLastSPos)) && (iLeftSPosFP <= m_iWidth - 1) ) … … 821 797 } 822 798 m_iLastOccludedSPosFP = iLeftSPosFP; 823 #endif824 799 825 800 m_bInOcclusion = true; … … 862 837 } 863 838 864 865 866 839 __inline Void 867 840 TRenSingleModel::xFillHoleL( Int iCurSPos, Int iLastSPos, Int iCurPos, RMDist& riError ) … … 874 847 Int iLastPos = iCurPos + 1; 875 848 876 #if GERHARD_RM_HOLE_EXT877 Int iErrorCorrection = 0;878 Int iLastPosInNewData = iLastPos - m_iStartChangePosX;879 Int iEndFillSPos = iLastSPos + m_iHoleMargin;880 ////////// Go back hole margin width and correct error ///////881 while( ( (iLastPos+1) < m_iWidth) && (iLastSPos > iEndFillSPos) )882 {883 iCurPos++;884 iLastPos++;885 iLastPosInNewData++;886 iCurSPos = iLastSPos;887 888 iLastSPos = xShift( iLastPos, iLastPosInNewData);889 890 if ( iLastSPos < 0 ) iLastSPos = 0;891 if ( iLastSPos >= m_iWidth ) iLastSPos = m_iWidth-1;892 893 Int iDiff = iLastSPos - iCurSPos;894 895 // Stop if other hole begins, or if position is occluded896 if (iDiff > 2 || iLastSPos >= Min( iEndFillSPos, m_iLastOccludedSPos ) || iCurSPos == 0)897 {898 iCurPos--;899 iLastPos--;900 iLastPosInNewData--;901 iLastSPos = iCurSPos;902 iCurSPos = xShift( iCurPos, iLastPosInNewData-1);903 break;904 }905 906 if ( !m_bSet )907 {908 xRenderShiftedRangeL(iCurSPos, iLastSPos, iCurPos, iLastPos, iErrorCorrection );909 }910 }911 912 riError -= iErrorCorrection;913 914 ////////// Fill enlarged hole ///////915 #endif916 917 849 Int iStartFillSPosFP = xRangeLeftL(iStartFillSPos); 918 850 919 #if GERHARD_RM_SPLAT920 851 if (iStartFillSPosFP == xRoundL(iStartFillSPos)) 921 852 { 922 #endif923 853 if ((iStartFillSPosFP >= 0) && (iStartFillSPosFP < m_iLastOccludedSPosFP) ) 924 854 { … … 926 856 xSetShiftedPel ( iStartFillPos << m_iShiftPrec, iStartFillSPosFP, REN_IS_FILLED, riError ); 927 857 } 928 #if GERHARD_RM_SPLAT929 858 } 930 859 else … … 932 861 iStartFillSPosFP--; 933 862 } 934 #endif935 863 936 864 m_iThisDepth = m_iLastDepth; … … 951 879 Int iLastPos = iCurPos - 1; 952 880 953 954 #if GERHARD_RM_HOLE_EXT955 Int iErrorCorrection = 0;956 Int iLPosInNewData = iLastPos - m_iStartChangePosX;957 Int iEndFillSPos = iLastSPos + m_iHoleMargin;958 ////////// Go back hole margin width and correct error ///////959 while( ( (iLastPos+1) < m_iWidth) && (iLastSPos > iEndFillSPos) )960 {961 iCurPos++;962 iLastPos++;963 iLPosInNewData++;964 iCurSPos = iLastSPos;965 966 iLastSPos = xShift( iLastPos, iLPosInNewData);967 968 if ( iLastSPos < 0 ) iLastSPos = 0;969 if ( iLastSPos >= m_iWidth ) iLastSPos = m_iWidth-1;970 971 Int iDiff = iLastSPos - iCurSPos;972 973 // Stop if other hole begins, or if position is occluded974 if (iDiff > 2 || iLastSPos >= Min( iEndFillSPos, m_iLastOccludedSPos ) || iCurSPos == 0)975 {976 iCurPos--;977 iLastPos--;978 iLPosInNewData--;979 iLastSPos = iCurSPos;980 iCurSPos = xShift( iCurPos, iLPosInNewData-1);981 break;982 }983 984 if ( !m_bSet )985 {986 xRenderShiftedRangeL(iCurSPos, iLastSPos, iCurPos, iLastPos, iErrorCorrection );987 }988 }989 990 riError -= iErrorCorrection;991 992 ////////// Fill enlarged hole ///////993 #endif994 995 881 Int iStartFillSPosFP = xRangeRightR(iStartFillSPos); 996 882 997 #if GERHARD_RM_SPLAT998 883 if (iStartFillSPosFP == xRoundR(iStartFillSPos)) 999 884 { 1000 #endif1001 885 if ((iStartFillSPosFP < m_iWidth) && (iStartFillSPosFP > m_iLastOccludedSPosFP) ) 1002 886 { … … 1004 888 xSetShiftedPel( iEndFillPos << m_iShiftPrec, iStartFillSPosFP, REN_IS_FILLED, riError ); 1005 889 } 1006 #if GERHARD_RM_SPLAT1007 890 } 1008 891 else … … 1010 893 iStartFillSPosFP++; 1011 894 } 1012 #endif1013 895 1014 896 m_iThisDepth = m_iLastDepth; … … 1018 900 } 1019 901 } 1020 1021 #if GERHARD_RM_HOLE_EXT1022 Void TRenSingleModel::xRemoveHoleExtL( Int iShiftedLeftPos, Int iLeftPos, Int& riError )1023 {1024 if (iShiftedLeftPos < 0 || iShiftedLeftPos == (m_iWidth - 1) )1025 return;1026 1027 Int iStartRemovePos = iLeftPos;1028 Int iEndRemoveSPos = iShiftedLeftPos + m_iHoleMargin;1029 Int iRightPos = iLeftPos + 1;1030 1031 Int iShiftedRightPos;1032 1033 ////////// Go back hole margin width ///////1034 while( iRightPos < m_iWidth )1035 {1036 iShiftedRightPos = xShift(iRightPos);1037 1038 if ( iShiftedRightPos < 0 ) iShiftedRightPos = 0;1039 if ( iShiftedRightPos >= m_iWidth ) iShiftedRightPos = m_iWidth-1;1040 1041 Int iDiff = iShiftedRightPos - iShiftedLeftPos;1042 1043 // Stop if other hole begins, or if position is occluded1044 if ( iDiff > 2 || iShiftedRightPos >= m_iLastOccludedSPos )1045 {1046 // Go back one1047 iShiftedRightPos = iShiftedLeftPos;1048 iRightPos--;1049 iLeftPos--;1050 iShiftedLeftPos = xShift(iLeftPos);1051 break;1052 }1053 1054 if ( (iShiftedRightPos > iEndRemoveSPos) )1055 {1056 break;1057 }1058 1059 iShiftedLeftPos = iShiftedRightPos;1060 iLeftPos++;1061 iRightPos++;1062 }1063 1064 ////////// Remove Hole margin ///////1065 while( iLeftPos >= iStartRemovePos )1066 {1067 xRenderShiftedRangeL(iShiftedLeftPos, iShiftedRightPos, iLeftPos, iRightPos, riError );1068 iLeftPos--;1069 iRightPos--;1070 iShiftedRightPos = iShiftedLeftPos;1071 iShiftedLeftPos = xShift(iLeftPos);1072 }1073 }1074 #endif1075 902 1076 903 __inline Void … … 1266 1093 { 1267 1094 m_aapiSynthVideoPelRow[m_iCurViewPos][0][iTargetSPos] = m_aapiBaseVideoPelRow[m_iCurViewPos][0][iSourcePos]; 1268 #if GERHARD_RM_COLOR_PLANES1095 #if HHI_VSO_COLOR_PLANES 1269 1096 m_aapiSynthVideoPelRow[m_iCurViewPos][1][iTargetSPos] = m_aapiBaseVideoPelRow[m_iCurViewPos][1][iSourcePos]; 1270 1097 m_aapiSynthVideoPelRow[m_iCurViewPos][2][iTargetSPos] = m_aapiBaseVideoPelRow[m_iCurViewPos][2][iSourcePos]; … … 1272 1099 m_apiFilledRow [m_iCurViewPos] [iTargetSPos] = iFilled; 1273 1100 Int iDiffY = m_aapiRefVideoPelRow [0][iTargetSPos] - m_aapiSynthVideoPelRow[m_iCurViewPos][0][iTargetSPos]; 1274 #if GERHARD_RM_COLOR_PLANES1101 #if HHI_VSO_COLOR_PLANES 1275 1102 Int iDiffU = m_aapiRefVideoPelRow [1][iTargetSPos] - m_aapiSynthVideoPelRow[m_iCurViewPos][1][iTargetSPos]; 1276 1103 Int iDiffV = m_aapiRefVideoPelRow [2][iTargetSPos] - m_aapiSynthVideoPelRow[m_iCurViewPos][2][iTargetSPos]; … … 1284 1111 Int iSDOld = m_apiErrorRow [iTargetSPos]; 1285 1112 Int iDiffY = m_aapiRefVideoPelRow [0][iTargetSPos] - m_aapiBaseVideoPelRow [m_iCurViewPos][0][iSourcePos]; 1286 #if GERHARD_RM_COLOR_PLANES1113 #if HHI_VSO_COLOR_PLANES 1287 1114 Int iDiffU = m_aapiRefVideoPelRow [1][iTargetSPos] - m_aapiBaseVideoPelRow [m_iCurViewPos][1][iSourcePos]; 1288 1115 Int iDiffV = m_aapiRefVideoPelRow [2][iTargetSPos] - m_aapiBaseVideoPelRow [m_iCurViewPos][2][iSourcePos]; … … 1305 1132 1306 1133 Pel piBlendedValueY; 1307 #if GERHARD_RM_COLOR_PLANES1134 #if HHI_VSO_COLOR_PLANES 1308 1135 Pel piBlendedValueU; 1309 1136 Pel piBlendedValueV; … … 1316 1143 m_aapiBaseVideoPelRow [0][0][iSourcePos ] , 1317 1144 m_aapiSynthVideoPelRow [1][0][iTargetSPos] , 1318 #if GERHARD_RM_COLOR_PLANES1145 #if HHI_VSO_COLOR_PLANES 1319 1146 m_aapiBaseVideoPelRow [0][1][iSourcePos ] , 1320 1147 m_aapiSynthVideoPelRow [1][1][iTargetSPos] , … … 1327 1154 m_apiFilledRow [1] [iTargetSPos] , 1328 1155 piBlendedValueY 1329 #if GERHARD_RM_COLOR_PLANES1156 #if HHI_VSO_COLOR_PLANES 1330 1157 , piBlendedValueU, 1331 1158 piBlendedValueV … … 1338 1165 m_aapiSynthVideoPelRow [0][0][iTargetSPos], 1339 1166 m_aapiBaseVideoPelRow [1][0][iSourcePos ], 1340 #if GERHARD_RM_COLOR_PLANES1167 #if HHI_VSO_COLOR_PLANES 1341 1168 m_aapiSynthVideoPelRow [0][1][iTargetSPos], 1342 1169 m_aapiBaseVideoPelRow [1][1][iSourcePos ], … … 1349 1176 iFilled , 1350 1177 piBlendedValueY 1351 #if GERHARD_RM_COLOR_PLANES1178 #if HHI_VSO_COLOR_PLANES 1352 1179 , piBlendedValueU, 1353 1180 piBlendedValueV … … 1361 1188 m_aapiSynthVideoPelRow[m_iCurViewPos][0][iTargetSPos] = m_aapiBaseVideoPelRow[m_iCurViewPos][0][iSourcePos]; 1362 1189 m_aapiSynthVideoPelRow[2 ][0][iTargetSPos] = piBlendedValueY; 1363 #if GERHARD_RM_COLOR_PLANES1190 #if HHI_VSO_COLOR_PLANES 1364 1191 m_aapiSynthVideoPelRow[m_iCurViewPos][1][iTargetSPos] = m_aapiBaseVideoPelRow[m_iCurViewPos][1][iSourcePos]; 1365 1192 m_aapiSynthVideoPelRow[2 ][1][iTargetSPos] = piBlendedValueU; … … 1370 1197 1371 1198 Int iDiffY = m_aapiRefVideoPelRow [0][iTargetSPos] - piBlendedValueY; 1372 #if GERHARD_RM_COLOR_PLANES1199 #if HHI_VSO_COLOR_PLANES 1373 1200 Int iDiffU = m_aapiRefVideoPelRow [1][iTargetSPos] - piBlendedValueU; 1374 1201 Int iDiffV = m_aapiRefVideoPelRow [2][iTargetSPos] - piBlendedValueV; … … 1382 1209 Int iSDOld = m_apiErrorRow [iTargetSPos]; 1383 1210 Int iDiffY = m_aapiRefVideoPelRow [0][iTargetSPos] - piBlendedValueY; 1384 #if GERHARD_RM_COLOR_PLANES1211 #if HHI_VSO_COLOR_PLANES 1385 1212 Int iDiffU = m_aapiRefVideoPelRow [1][iTargetSPos] - piBlendedValueU; 1386 1213 Int iDiffV = m_aapiRefVideoPelRow [2][iTargetSPos] - piBlendedValueV; … … 1411 1238 } 1412 1239 1413 #if GERHARD_RM_COLOR_PLANES1240 #if HHI_VSO_COLOR_PLANES 1414 1241 __inline Void 1415 1242 TRenSingleModel::xGetBlendedValue( Pel iYL, Pel iYR, Pel iUL, Pel iUR, Pel iVL, Pel iVR, Pel iDepthL, Pel iDepthR, Int iFilledL, Int iFilledR, Pel& riY, Pel& riU, Pel&riV ) … … 1423 1250 if (m_iBlendMode == 1 ) 1424 1251 { 1252 #if HHI_VSO_COLOR_PLANES 1425 1253 xGetBlendedValueBM1( iYL, iYR, iUL, iUR, iVL, iVR, iDepthL, iDepthR, iFilledL, iFilledR, riY, riU, riV ); 1254 #else 1255 xGetBlendedValueBM1( iYL, iYR, iDepthL, iDepthR, iFilledL, iFilledR, riY ); 1256 #endif 1426 1257 } 1427 1258 else 1428 1259 { 1260 #if HHI_VSO_COLOR_PLANES 1429 1261 xGetBlendedValueBM2( iYL, iYR, iUL, iUR, iVL, iVR, iDepthL, iDepthR, iFilledL, iFilledR, riY, riU, riV ); 1262 #else 1263 xGetBlendedValueBM2( iYL, iYR, iDepthL, iDepthR, iFilledL, iFilledR, riY ); 1264 #endif 1430 1265 } 1431 1266 return; … … 1441 1276 { 1442 1277 riY = xBlend( iYL, iYR, iFilledR >> 1 ); 1443 #if GERHARD_RM_COLOR_PLANES1278 #if HHI_VSO_COLOR_PLANES 1444 1279 riU = xBlend( iUL, iUR, iFilledR >> 1 ); 1445 1280 riV = xBlend( iVL, iVR, iFilledR >> 1 ); … … 1450 1285 { 1451 1286 riY = xBlend( iYR, iYL, (iFilledL >> 1) ); 1452 #if GERHARD_RM_COLOR_PLANES1287 #if HHI_VSO_COLOR_PLANES 1453 1288 riU = xBlend( iUR, iUL, (iFilledL >> 1) ); 1454 1289 riV = xBlend( iVR, iVL, (iFilledL >> 1) ); … … 1458 1293 { 1459 1294 riY = xBlend( iYR, iYL, m_iBlendDistWeight ); 1460 #if GERHARD_RM_COLOR_PLANES1295 #if HHI_VSO_COLOR_PLANES 1461 1296 riU = xBlend( iUR, iUL, m_iBlendDistWeight ); 1462 1297 riV = xBlend( iVR, iVL, m_iBlendDistWeight ); … … 1467 1302 { 1468 1303 riY = iYL; 1469 #if GERHARD_RM_COLOR_PLANES1304 #if HHI_VSO_COLOR_PLANES 1470 1305 riU = iUL; 1471 1306 riV = iVL; … … 1475 1310 { 1476 1311 riY = iYR; 1477 #if GERHARD_RM_COLOR_PLANES1312 #if HHI_VSO_COLOR_PLANES 1478 1313 riU = iUR; 1479 1314 riV = iVR; … … 1486 1321 { 1487 1322 riY = iYR; 1488 #if GERHARD_RM_COLOR_PLANES1323 #if HHI_VSO_COLOR_PLANES 1489 1324 riU = iUR; 1490 1325 riV = iVR; … … 1494 1329 { 1495 1330 riY = iYL; 1496 #if GERHARD_RM_COLOR_PLANES1331 #if HHI_VSO_COLOR_PLANES 1497 1332 riU = iUL; 1498 1333 riV = iVL; … … 1505 1340 { 1506 1341 riY = iYL; 1507 #if GERHARD_RM_COLOR_PLANES1342 #if HHI_VSO_COLOR_PLANES 1508 1343 riU = iUL; 1509 1344 riV = iVL; … … 1513 1348 { 1514 1349 riY = iYR; 1515 #if GERHARD_RM_COLOR_PLANES1350 #if HHI_VSO_COLOR_PLANES 1516 1351 riU = iUR; 1517 1352 riV = iVR; … … 1523 1358 1524 1359 __inline Void 1360 #if HHI_VSO_COLOR_PLANES 1525 1361 TRenSingleModel::xGetBlendedValueBM1( Pel iYL, Pel iYR, Pel iUL, Pel iUR, Pel iVL, Pel iVR, Pel iDepthL, Pel iDepthR, Int iFilledL, Int iFilledR, Pel& riY, Pel& riU, Pel&riV ) 1362 #else 1363 TRenSingleModel::xGetBlendedValueBM1( Pel iYL, Pel iYR, Pel iDepthL, Pel iDepthR, Int iFilledL, Int iFilledR, Pel& riY ) 1364 #endif 1526 1365 { 1527 1366 if ( iFilledL == REN_IS_FILLED || iFilledR == REN_IS_HOLE ) 1528 1367 { 1529 1368 riY = iYL; 1530 #if GERHARD_RM_COLOR_PLANES1369 #if HHI_VSO_COLOR_PLANES 1531 1370 riU = iUL; 1532 1371 riV = iVL; … … 1536 1375 { 1537 1376 riY = iYR; 1538 #if GERHARD_RM_COLOR_PLANES1377 #if HHI_VSO_COLOR_PLANES 1539 1378 riU = iUR; 1540 1379 riV = iVR; … … 1544 1383 { 1545 1384 riY = xBlend( iYR, iYL, iFilledL ); 1546 #if GERHARD_RM_COLOR_PLANES1385 #if HHI_VSO_COLOR_PLANES 1547 1386 riU = xBlend( iUR, iUL, iFilledL ); 1548 1387 riV = xBlend( iVR, iUL, iFilledL ); … … 1552 1391 1553 1392 __inline Void 1393 #if HHI_VSO_COLOR_PLANES 1554 1394 TRenSingleModel::xGetBlendedValueBM2( Pel iYL, Pel iYR, Pel iUL, Pel iUR, Pel iVL, Pel iVR, Pel iDepthL, Pel iDepthR, Int iFilledL, Int iFilledR, Pel& riY, Pel& riU, Pel&riV ) 1395 #else 1396 TRenSingleModel::xGetBlendedValueBM2( Pel iYL, Pel iYR, Pel iDepthL, Pel iDepthR, Int iFilledL, Int iFilledR, Pel& riY ) 1397 #endif 1555 1398 { 1556 1399 if ( iFilledR == REN_IS_FILLED || iFilledL == REN_IS_HOLE ) 1557 1400 { 1558 1401 riY = iYR; 1559 #if GERHARD_RM_COLOR_PLANES1402 #if HHI_VSO_COLOR_PLANES 1560 1403 riU = iUR; 1561 1404 riV = iVR; … … 1565 1408 { 1566 1409 riY = iYL; 1567 #if GERHARD_RM_COLOR_PLANES1410 #if HHI_VSO_COLOR_PLANES 1568 1411 riU = iUL; 1569 1412 riV = iVL; … … 1573 1416 { 1574 1417 riY = xBlend( iYL, iYR, iFilledR ); 1575 #if GERHARD_RM_COLOR_PLANES1418 #if HHI_VSO_COLOR_PLANES 1576 1419 riU = xBlend( iUL, iUR, iFilledR ); 1577 1420 riV = xBlend( iVL, iUR, iFilledR ); … … 1580 1423 } 1581 1424 1582 1583 1584 1425 __inline Pel 1585 1426 TRenSingleModel::xBlend( Pel pVal1, Pel pVal2, Int iWeightVal2 ) … … 1587 1428 return pVal1 + (Pel) ( ( (Int) ( pVal2 - pVal1) * iWeightVal2 + (1 << (REN_VDWEIGHT_PREC - 1)) ) >> REN_VDWEIGHT_PREC ); 1588 1429 } 1589 1590 #if GERHARD_RM_DEBUG_MM1591 Bool1592 TRenSingleModel::compare( TRenSingleModel* pcRefModel )1593 {1594 Bool bNoDirectStop = true;1595 Bool bEqual = true;1596 1597 for (Int iBaseView = 0; iBaseView < 2; iBaseView++ )1598 {1599 for (Int iPosY = 0; iPosY < m_iHeight; iPosY++ ) //GT: change to 1 !!! for small tests1600 {1601 for (Int iPosX = 0; iPosX < m_iWidth; iPosX++ )1602 {1603 if (( iBaseView == m_iMode ) || ( m_iMode == 2 ))1604 {1605 // MEV_RF( "imswitch", &mxAW(m_iWidth, m_iHeight, m_aiBaseDepthStrides[iBaseView], m_apiBaseDepthPel [iBaseView] ), &mxAW(m_iWidth, m_iHeight, pcRefModel->m_aiBaseDepthStrides[iBaseView], pcRefModel->m_apiBaseDepthPel [iBaseView] ), &mxAW("u" ), 0);1606 bEqual = bEqual && ( m_apiBaseDepthPel [iBaseView] [iPosX+iPosY* m_aiBaseDepthStrides[iBaseView]] == pcRefModel->m_apiBaseDepthPel [iBaseView] [iPosX+iPosY* pcRefModel->m_aiBaseDepthStrides[iBaseView] ] );AOF( bNoDirectStop || bEqual );1607 bEqual = bEqual && ( m_apiFilled [iBaseView] [iPosX+iPosY* m_iStride] == pcRefModel->m_apiFilled [iBaseView] [iPosX+iPosY* m_iStride] ); AOF( bNoDirectStop || bEqual );1608 bEqual = bEqual && ( m_piError [iPosX+iPosY* m_iStride] == pcRefModel->m_piError [iPosX+iPosY* m_iStride] ); AOF( bNoDirectStop || bEqual );1609 bEqual = bEqual && ( m_apbOccluded [iBaseView] [iPosX+iPosY* m_iStride] == pcRefModel->m_apbOccluded [iBaseView] [iPosX+iPosY* m_iStride] ); AOF( bNoDirectStop || bEqual );1610 bEqual = bEqual && ( m_aapiSynthVideoPel[iBaseView][0][iPosX+iPosY* m_iStride] == pcRefModel->m_aapiSynthVideoPel[iBaseView][0][iPosX+iPosY* m_iStride] ); AOF( bNoDirectStop || bEqual );1611 bEqual = bEqual && ( m_aapiSynthVideoPel[iBaseView][0][iPosX+iPosY* m_iStride] >= 0 ); AOF( bNoDirectStop || bEqual );1612 bEqual = bEqual && ( m_aapiSynthVideoPel[iBaseView][0][iPosX+iPosY* m_iStride] <= g_uiIBDI_MAX ); AOF( bNoDirectStop || bEqual );1613 if (m_iMode == 2 )1614 {1615 bEqual = bEqual && ( m_apiSynthDepthPel [iBaseView] [iPosX+iPosY* m_iStride] == pcRefModel->m_apiSynthDepthPel [iBaseView] [iPosX+iPosY* m_iStride] ); AOF( bNoDirectStop || bEqual );1616 }1617 //if (!bEqual)1618 //{1619 // std::cout << "Mismatch in PosX: " << iPosX << " PosY: " << iPosY << std::endl;1620 // AOF(false);1621 // exit(55);1622 //}1623 }1624 }1625 }1626 }1627 return bEqual;1628 }1629 1630 #endif -
trunk/source/Lib/TLibRenderer/TRenSingleModel.h
r2 r5 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-2011, 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 1 34 2 35 … … 34 67 Void create ( Int iMode, Int iWidth, Int iHeight, Int iShiftPrec, Int*** aaaiSubPelShiftTable, Int iHoleMargin, Bool bUseOrgRef, Int iBlendMode ); 35 68 36 // Set Frame dependent data s69 // Set Frame dependent data 37 70 Void setLRView ( Int iViewPos, Pel** apiCurVideoPel, Int* aiCurVideoStride, Pel* piCurDepthPel, Int iCurDepthStride ); 38 71 Void setup ( TComPicYuv* pcOrgVideo, Int** ppiShiftLutLeft, Int** ppiBaseShiftLutLeft, Int** ppiShiftLutRight, Int** ppiBaseShiftLutRight, Int iDistToLeft, Bool bKeepReference ); … … 51 84 // Get Reference Data 52 85 Void getRefView ( TComPicYuv*& rpcPicYuvRefView, Pel**& rppiRefVideoPel, Int*& raiStrides ); 53 54 #if GERHARD_RM_DEBUG_MM55 Bool compare( TRenSingleModel* pcRefModel );56 #endif57 86 58 87 private: … … 86 115 // Blending 87 116 __inline Void xSetShiftedPelBlend ( Int iSourcePos, Int iTargetSPos, Pel iFilled, RMDist& riError ); 117 118 #if HHI_VSO_COLOR_PLANES 119 __inline Void xGetBlendedValue ( Pel iYL, Pel iYR, Pel iUL, Pel iUR, Pel iVL, Pel iVR, Pel iDepthL, Pel iDepthR, Int iFilledL, Int iFilledR, Pel& riY, Pel& riU, Pel&riV ); 88 120 __inline Void xGetBlendedValueBM1 ( Pel iYL, Pel iYR, Pel iUL, Pel iUR, Pel iVL, Pel iVR, Pel iDepthL, Pel iDepthR, Int iFilledL, Int iFilledR, Pel& riY, Pel& riU, Pel&riV ); 89 121 __inline Void xGetBlendedValueBM2 ( Pel iYL, Pel iYR, Pel iUL, Pel iUR, Pel iVL, Pel iVR, Pel iDepthL, Pel iDepthR, Int iFilledL, Int iFilledR, Pel& riY, Pel& riU, Pel&riV ); 90 91 #if GERHARD_RM_COLOR_PLANES92 __inline Void xGetBlendedValue ( Pel iYL, Pel iYR, Pel iUL, Pel iUR, Pel iVL, Pel iVR, Pel iDepthL, Pel iDepthR, Int iFilledL, Int iFilledR, Pel& riY, Pel& riU, Pel&riV );93 122 #else 94 123 __inline Void xGetBlendedValue ( Pel iYL, Pel iYR, Pel iDepthL, Pel iDepthR, Int iFilledL, Int iFilledR, Pel& riY ); 124 __inline Void xGetBlendedValueBM1 ( Pel iYL, Pel iYR, Pel iDepthL, Pel iDepthR, Int iFilledL, Int iFilledR, Pel& riY ); 125 __inline Void xGetBlendedValueBM2 ( Pel iYL, Pel iYR, Pel iDepthL, Pel iDepthR, Int iFilledL, Int iFilledR, Pel& riY ); 95 126 #endif 96 127 __inline Pel xBlend ( Pel pVal1, Pel pVal2, Int iWeightVal2 ); … … 110 141 __inline Void xSetInts ( Int* piPelSource , Int iSourceStride, Int iWidth, Int iHeight, Int iVal ); 111 142 112 #if GERHARD_RM_DEBUG_MM113 public:114 #else115 143 private: 116 #endif117 144 118 145 // Image sizes -
trunk/source/Lib/TLibRenderer/TRenTop.cpp
r2 r5 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-2011, 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 1 34 2 35 #include "TRenImage.h" … … 879 912 Void TRenTop::xShiftPlanePixels8Tap( PelImagePlane** apcInputPlanes, PelImagePlane* pcDepthPlane, PelImagePlane** apcOutputPlanes, PelImagePlane* pcFilledPlane, UInt uiNumberOfPlanes ) 880 913 { 881 882 914 Bool bRenderDepth = (apcInputPlanes[0] == pcDepthPlane); 883 915 … … 1496 1528 } 1497 1529 1498 Void TRenTop::xChangePixels( PelImage* pcDispImage )1499 {1500 if (m_uNumelauiChangePixels < 3 )1501 {1502 return;1503 };1504 1505 UInt* puiCP = m_auiChangePixels;1506 UInt uiWidth = pcDispImage->getPlane(0)->getWidth();1507 1508 for (UInt uiIdx = 0; uiIdx < m_uNumelauiChangePixels; uiIdx+= 3 )1509 {1510 pcDispImage->getPlane(0)->getPlaneData()[ puiCP[ uiIdx ] * uiWidth + puiCP[ uiIdx + 1 ] ] = puiCP[uiIdx + 2 ];1511 };1512 };1513 1514 1530 1515 1531 Void TRenTop::xCutPlaneMargin( PelImagePlane* pcImagePlane, Pel cFill, UInt uiScale ) … … 1603 1619 Pel* pcLeftImageData = (*apcLeftPlane) ->getPlaneData(); 1604 1620 1605 //Int iSumLeft = 0; 1606 //Int iSumRight = 0; 1607 //Int iSumLeftSquare = 0; 1608 //Int iSumRightSquare = 0; 1621 1609 1622 1610 1623 for (UInt uiYPos = 0; uiYPos < iHeight; uiYPos++ ) 1611 1624 { 1612 //Int iRowSumLeft = 0;1613 //Int iRowSumRight = 0;1614 //Int iRowSumLeftSquare = 0;1615 //Int iRowSumRightSquare = 0;1616 1617 1625 for (UInt uiXPos = 0; uiXPos < iWidth; uiXPos++ ) 1618 1626 { … … 1621 1629 aiHistLeft [pcLeftImageData [uiXPos] ]++; 1622 1630 aiHistRight[pcRightImageData [uiXPos] ]++; 1623 //iNumElem++;1624 //iRowSumLeft += ;1625 //iRowSumRight += pcRightImageData [uiXPos];1626 //iRowSumLeftSquare += pcLeftImageData [uiXPos] * pcLeftImageData [uiXPos];1627 //iRowSumRightSquare += pcRightImageData [uiXPos] * pcRightImageData[uiXPos];1628 1631 } 1629 1632 } … … 1660 1663 while( iCurChangeVal <= g_uiIBDI_MAX ) 1661 1664 { 1662 #if 0 //GERHARD_DEBUG1663 std::cout << iCumSumBase << " " << iCumSumChange << " " << iCurBaseVal << " " << iCurChangeVal << std::endl;1664 #endif1665 1665 if ( iCumSumBase == iCumSumChange ) 1666 1666 { … … 1710 1710 delete[] aiHistRight; 1711 1711 delete[] aiConvLUT ; 1712 1713 1714 1712 } 1715 1713 … … 1892 1890 } 1893 1891 1894 1895 Void TRenTop::xReEstimateDisp( Pel* pcInputLeftImageRow, Pel* pcInputRightImageRow, Int iLeftImageStride, Int iRightImageStride, Int iPosX, Pel cLeftDepth, Pel cRightDepth, Int iLut, Pel& rcBestDepth, Int& riBestSAD )1896 {1897 Int iHalfBlkSizeMin1 = 3;1898 UInt uiStep = m_iRelShiftLUTPrec;1899 1900 AOT(iHalfBlkSizeMin1 > 3);1901 1902 Pel cInc = (cRightDepth < cLeftDepth) ? 1 : -1;1903 1904 UInt uiBestSAD = -1;1905 1906 for (Pel cCurDepth = cRightDepth; cCurDepth <= cLeftDepth; cCurDepth += cInc )1907 {1908 Int iShiftLeft = m_ppiShiftLUTLeft [iLut][ RemoveBitIncrement( cCurDepth)];1909 Int iShiftRight = m_ppiShiftLUTLeft [iLut][ RemoveBitIncrement( cCurDepth)];1910 1911 Int iShiftedPosLeft = iPosX - iShiftLeft;1912 Int iShiftedPosRight = iPosX - iShiftRight;1913 1914 if ( !(( iShiftedPosLeft < 0 ) || (iShiftedPosLeft >= m_uiSampledWidth) || ( iShiftedPosRight < 0 ) || (iShiftedPosRight >= m_uiSampledWidth)))1915 {1916 Pel* pcCurLeftIm = pcInputLeftImageRow - iLeftImageStride * iHalfBlkSizeMin1 - iHalfBlkSizeMin1*uiStep - iShiftLeft;1917 Pel* pcCurRightIm = pcInputRightImageRow - iRightImageStride * iHalfBlkSizeMin1 - iHalfBlkSizeMin1*uiStep - iShiftRight;1918 1919 UInt uiSAD = 0;1920 1921 for ( Int iCurPosY= 0; iCurPosY < (iHalfBlkSizeMin1 << 1) + 1; iCurPosY++ )1922 {1923 for ( Int iCurPosX = 0; iCurPosX < (iHalfBlkSizeMin1 << 1) * uiStep + uiStep; iCurPosX += uiStep )1924 {1925 uiSAD += abs( pcCurLeftIm[iCurPosX] - pcCurRightIm[iCurPosX] );1926 }1927 pcCurLeftIm += iLeftImageStride;1928 pcCurRightIm += iRightImageStride;1929 }1930 1931 if (uiSAD < uiBestSAD)1932 {1933 uiBestSAD = uiSAD;1934 rcBestDepth = cCurDepth;1935 }1936 }1937 }1938 }1939 1940 Int TRenTop::xVSRSHoleCount( Pel* pcFilledData, Int iFilledStride, Int iCenterPosX, Int iCenterPosY )1941 {1942 // Counts holes in a 6x6 Block around iPosX and iPosY1943 //GT: currently not supported for rendering in up sampled domain ( padding to less )1944 if ( m_iLog2SamplingFactor > 0 )1945 {1946 return 0;1947 }1948 1949 Int iHalfBlkSizeY = 3;1950 Int iHalfBlkSizeX = 3; // iHalfBlkSizeY * ( 1 << m_iLog2SamplingFactor );1951 1952 Int iNumOfHolePels = 0;1953 pcFilledData -= ( iHalfBlkSizeX + iHalfBlkSizeY * iFilledStride );1954 1955 for (Int iPosY = 0; iPosY < (iHalfBlkSizeY << 1) + 1; iPosY++)1956 {1957 for (Int iPosX = 0; iPosX < (iHalfBlkSizeX << 1) + 1; iPosX++)1958 {1959 if (*pcFilledData == REN_IS_HOLE)1960 {1961 iNumOfHolePels++;1962 }1963 pcFilledData++;1964 }1965 pcFilledData += iFilledStride;1966 }1967 return iNumOfHolePels;1968 }1969 1970 1892 // Temporal Filter from Zhejiang University: (a little different from m16041: Temporal Improvement Method in View Synthesis) 1971 1893 Void TRenTop::temporalFilterVSRS( TComPicYuv* pcPicYuvVideoCur, TComPicYuv* pcPicYuvDepthCur, TComPicYuv* pcPicYuvVideoLast, TComPicYuv* pcPicYuvDepthLast, Bool bFirstFrame ) … … 2095 2017 // PostProcessing 2096 2018 m_iPostProcMode = eRenPostProNone; 2097 2098 //ChangePixels2099 m_auiChangePixels[0] = 0;2100 m_uNumelauiChangePixels = 0;2101 2019 2102 2020 // Cut … … 2211 2129 m_iPostProcMode = iPostProcMode; 2212 2130 2213 //ChangePixels2214 m_auiChangePixels[0] = 0;2215 m_uNumelauiChangePixels = 0;2216 2217 2131 // Used pel map 2218 2132 m_iUsedPelMapMarExt = iUsedPelMapMarExt; … … 2262 2176 2263 2177 2264 Void TRenTop::xGetChangePixels( UInt& ruiNumPixels, UInt* & rauiChangePixels )2265 {2266 ruiNumPixels = m_uNumelauiChangePixels;2267 rauiChangePixels = m_auiChangePixels;2268 }2269 2270 2178 TRenTop::~TRenTop() 2271 2179 { -
trunk/source/Lib/TLibRenderer/TRenTop.h
r2 r5 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-2011, 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 1 34 2 35 … … 126 159 Void xBlendPlanesAvg ( PelImagePlane** apcLeftPlane, PelImagePlane** apcRightPlane, PelImagePlane* pcFilledLeftPlane, PelImagePlane* pcFilledRightPlane, PelImagePlane* pcLeftDepthPlane, PelImagePlane* pcRightDepthPlane, PelImagePlane** apcOutputImagePlane, UInt uNumPlanes ); 127 160 Void xBlendPlanesOneView ( PelImagePlane** apcLeftPlane, PelImagePlane** apcRightPlane, PelImagePlane* pcFilledLeftPlane, PelImagePlane* pcFilledRightPlane, PelImagePlane* pcLeftDepthPlane, PelImagePlane* pcRightDepthPlane, PelImagePlane** apcOutputImagePlane, UInt uNumPlanes ); 128 Int xVSRSHoleCount ( Pel* pcFilledData, Int iFilledStride, Int iCenterPosX, Int iCenterPosY );129 161 130 162 // PostProcessing … … 132 164 Void xCutPlaneMargin ( PelImagePlane* pcImagePlane, Pel cFill, UInt uiScale); 133 165 Void xPostProcessImage ( PelImage* pcInImage, PelImage* pCOutImage); 134 135 // Others136 Void xChangePixels ( PelImage* pcDispImage );137 Void xGetChangePixels ( UInt& ruiNumPixels, UInt* & rauiChangePixels );138 Void xReEstimateDisp ( Pel* pcInputLeftImageRow, Pel* pcInputRightImageRow, Int iLeftImageStride, Int iRightImageStride, Int iPosX, Pel cLeftDepth, Pel cRightDepth, Int iLut, Pel& rcBestDepth, Int& riBestSAD );139 166 140 167 // Input Output Data Conversion … … 191 218 Int m_iRelShiftLUTPrec; 192 219 193 // Change Pixels and Cut 194 UInt m_auiChangePixels[2000]; 195 UInt m_uNumelauiChangePixels; 220 // Cut 196 221 UInt m_auiCut[2]; 197 222 -
trunk/source/Lib/TLibVideoIO/TVideoIOBits.cpp
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibVideoIO/TVideoIOBits.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibVideoIO/TVideoIOYuv.cpp
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/TLibVideoIO/TVideoIOYuv.h
r2 r5 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-2011, 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 1 34 2 35 -
trunk/source/Lib/libmd5/libmd5.h
r2 r5 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-2011, 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 1 34 2 35 #pragma once
Note: See TracChangeset for help on using the changeset viewer.