Changeset 193 in 3DVCSoftware for branches/HTM-4.0.1-VSP-dev0


Ignore:
Timestamp:
19 Nov 2012, 21:15:40 (12 years ago)
Author:
mitsubishi-htm
Message:

A second release, as planned

  • Migrate to HTM 4.1
  • Move VSP related switches to cfg file instead of #define in the source code
  • A few bug fixes
  • For VC project files, only VC9 file is updated

TODO

  • Migrate to HTM 5.0, to be used as anchor for CE1 toward Geneva meeting
Location:
branches/HTM-4.0.1-VSP-dev0
Files:
5 added
3 deleted
50 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-4.0.1-VSP-dev0/CommonTestConditionsCfgs/baseCfg_2view+depth.cfg

    r133 r193  
    5151DecodingRefreshType       : 1                                      # Random Accesss 0:none, 1:CDR, 2:IDR
    5252GOPSize                   : 8                                      # GOP Size (number of B slice = GOPSize-1)
    53 # V0        Type POC QPoffset QPfactor temporal_id #ref_pics_active ref_pic #ref_pics reference pictures predict deltaRIdx-1 deltaRPS #ref_idcs reference idcs  #IV_ref_pics  IV reference pics  IV ref list pos
    54 Frame1    : B    8   1        0.442    0           4                1       4         -8 -10 -12 -16     0                                                      0
    55 Frame2    : B    4   2        0.3536   0           2                1       3         -4 -6  4           1       0           4        5         1 1 0 0 1       0
    56 Frame3    : B    2   3        0.3536   0           2                1       4         -2 -4  2 6         1       0           2        4         1 1 1 1         0
    57 Frame4    : B    1   4        0.68     0           2                0       4         -1  1  3 7         1       0           1        5         1 0 1 1 1       0
    58 Frame5    : B    3   4        0.68     0           2                0       4         -1 -3  1 5         1       0          -2        5         1 1 1 1 0       0
    59 Frame6    : B    6   3        0.3536   0           2                1       4         -2 -4 -6 2         1       0          -3        5         1 1 1 1 0       0
    60 Frame7    : B    5   4        0.68     0           2                0       4         -1 -5  1 3         1       0           1        5         1 0 1 1 1       0
    61 Frame8    : B    7   4        0.68     0           2                0       4         -1 -3 -7 1         1       0          -2        5         1 1 1 1 0       0
    62 FrameI_v1 : P    0   3        0.442    0           1                1       0                            0                                                      1             -1                 1                  0
    63 Frame1_v1 : B    8   4        0.442    0           4                1       4         -8 -10 -12 -16     0                                                      1             -1                 2                  0
    64 Frame2_v1 : B    4   5        0.3536   0           3                1       3         -4 -6  4           1       0           4        5         1 1 0 0 1       1             -1                 2                  0
    65 Frame3_v1 : B    2   6        0.3536   0           3                1       4         -2 -4  2 6         1       0           2        4         1 1 1 1         1             -1                 2                  0 
    66 Frame4_v1 : B    1   7        0.68     0           3                0       4         -1  1  3 7         1       0           1        5         1 0 1 1 1       1             -1                 2                  0 
    67 Frame5_v1 : B    3   7        0.68     0           3                0       4         -1 -3  1 5         1       0          -2        5         1 1 1 1 0       1             -1                 3                  0 
    68 Frame6_v1 : B    6   6        0.3536   0           3                1       4         -2 -4 -6 2         1       0          -3        5         1 1 1 1 0       1             -1                 3                  0 
    69 Frame7_v1 : B    5   7        0.68     0           3                0       4         -1 -5  1 3         1       0           1        5         1 0 1 1 1       1             -1                 3                  0 
    70 Frame8_v1 : B    7   7        0.68     0           3                0       4         -1 -3 -7 1         1       0          -2        5         1 1 1 1 0       1             -1                 3                  0 
    71 FrameI_v2 : P    0   3        0.442    0           1                1       0                            0                                                      1             -2                 1                  0 
    72 Frame1_v2 : B    8   4        0.442    0           4                1       4         -8 -10 -12 -16     0                                                      1             -2                 2                  0 
    73 Frame2_v2 : B    4   5        0.3536   0           3                1       3         -4 -6  4           1       0           4        5         1 1 0 0 1       1             -2                 2                  0 
    74 Frame3_v2 : B    2   6        0.3536   0           3                1       4         -2 -4  2 6         1       0           2        4         1 1 1 1         1             -2                 2                  0 
    75 Frame4_v2 : B    1   7        0.68     0           3                0       4         -1  1  3 7         1       0           1        5         1 0 1 1 1       1             -2                 2                  0 
    76 Frame5_v2 : B    3   7        0.68     0           3                0       4         -1 -3  1 5         1       0          -2        5         1 1 1 1 0       1             -2                 3                  0 
    77 Frame6_v2 : B    6   6        0.3536   0           3                1       4         -2 -4 -6 2         1       0          -3        5         1 1 1 1 0       1             -2                 3                  0 
    78 Frame7_v2 : B    5   7        0.68     0           3                0       4         -1 -5  1 3         1       0           1        5         1 0 1 1 1       1             -2                 3                  0 
    79 Frame8_v2 : B    7   7        0.68     0           3                0       4         -1 -3 -7 1         1       0          -2        5         1 1 1 1 0       1             -2                 3                  0 
     53# V0        Type POC QPoffset QPfactor temporal_id #ref_pics_active ref_pic #ref_pics reference pictures predict deltaRIdx-1 deltaRPS #ref_idcs reference idcs  #IV_ref_pics  IV reference pics  IV ref list pos          #VSP_ref_pics  VSP_ref_pics  VSP_ref_list_pos
     54Frame1    : B    8   1        0.442    0           4                1       4         -8 -10 -12 -16     0                                                      0                                                         0
     55Frame2    : B    4   2        0.3536   0           2                1       3         -4 -6  4           1       0           4        5         1 1 0 0 1       0                                                         0
     56Frame3    : B    2   3        0.3536   0           2                1       4         -2 -4  2 6         1       0           2        4         1 1 1 1         0                                                         0
     57Frame4    : B    1   4        0.68     0           2                0       4         -1  1  3 7         1       0           1        5         1 0 1 1 1       0                                                         0
     58Frame5    : B    3   4        0.68     0           2                0       4         -1 -3  1 5         1       0          -2        5         1 1 1 1 0       0                                                         0
     59Frame6    : B    6   3        0.3536   0           2                1       4         -2 -4 -6 2         1       0          -3        5         1 1 1 1 0       0                                                         0
     60Frame7    : B    5   4        0.68     0           2                0       4         -1 -5  1 3         1       0           1        5         1 0 1 1 1       0                                                         0
     61Frame8    : B    7   4        0.68     0           2                0       4         -1 -3 -7 1         1       0          -2        5         1 1 1 1 0       0                                                         0
     62FrameI_v1 : P    0   3        0.442    0           1                1       0                            0                                                      1             -1                 1                  0     1              -1            2                 0
     63Frame1_v1 : B    8   4        0.442    0           4                1       4         -8 -10 -12 -16     0                                                      1             -1                 2                  0     1              -1            3                 0
     64Frame2_v1 : B    4   5        0.3536   0           3                1       3         -4 -6  4           1       0           4        5         1 1 0 0 1       1             -1                 2                  0     1              -1            3                 0
     65Frame3_v1 : B    2   6        0.3536   0           3                1       4         -2 -4  2 6         1       0           2        4         1 1 1 1         1             -1                 2                  0     1              -1            3                 0
     66Frame4_v1 : B    1   7        0.68     0           3                0       4         -1  1  3 7         1       0           1        5         1 0 1 1 1       1             -1                 2                  0     1              -1            3                 0
     67Frame5_v1 : B    3   7        0.68     0           3                0       4         -1 -3  1 5         1       0          -2        5         1 1 1 1 0       1             -1                 3                  0     1              -1            4                 0
     68Frame6_v1 : B    6   6        0.3536   0           3                1       4         -2 -4 -6 2         1       0          -3        5         1 1 1 1 0       1             -1                 3                  0     1              -1            4                 0
     69Frame7_v1 : B    5   7        0.68     0           3                0       4         -1 -5  1 3         1       0           1        5         1 0 1 1 1       1             -1                 3                  0     1              -1            4                 0
     70Frame8_v1 : B    7   7        0.68     0           3                0       4         -1 -3 -7 1         1       0          -2        5         1 1 1 1 0       1             -1                 3                  0     1              -1            4                 0
     71FrameI_v2 : P    0   3        0.442    0           1                1       0                            0                                                      1             -2                 1                  0     1              -2            2                 0
     72Frame1_v2 : B    8   4        0.442    0           4                1       4         -8 -10 -12 -16     0                                                      1             -2                 2                  0     1              -2            3                 0
     73Frame2_v2 : B    4   5        0.3536   0           3                1       3         -4 -6  4           1       0           4        5         1 1 0 0 1       1             -2                 2                  0     1              -2            3                 0
     74Frame3_v2 : B    2   6        0.3536   0           3                1       4         -2 -4  2 6         1       0           2        4         1 1 1 1         1             -2                 2                  0     1              -2            3                 0
     75Frame4_v2 : B    1   7        0.68     0           3                0       4         -1  1  3 7         1       0           1        5         1 0 1 1 1       1             -2                 2                  0     1              -2            3                 0
     76Frame5_v2 : B    3   7        0.68     0           3                0       4         -1 -3  1 5         1       0          -2        5         1 1 1 1 0       1             -2                 3                  0     1              -2            4                 0
     77Frame6_v2 : B    6   6        0.3536   0           3                1       4         -2 -4 -6 2         1       0          -3        5         1 1 1 1 0       1             -2                 3                  0     1              -2            4                 0
     78Frame7_v2 : B    5   7        0.68     0           3                0       4         -1 -5  1 3         1       0           1        5         1 0 1 1 1       1             -2                 3                  0     1              -2            4                 0
     79Frame8_v2 : B    7   7        0.68     0           3                0       4         -1 -3 -7 1         1       0          -2        5         1 1 1 1 0       1             -2                 3                  0     1              -2            4                 0
    8080
    8181ListCombination           : 1                                      # Use combined list for uni-prediction in B-slices
     
    203203
    204204
     205#========== texture coding tools based on depth ==========
     206VSP                       : 1
     207VSPDepthDisable           : 0
     208
    205209#========== view synthesis optimization (VSO) ==========
    206210VSOConfig                 : [cx0 B(cc1) I(s0.25 s0.5 s0.75)][cx1 B(oo0) I(s0.25 s0.5 s0.75)]  # VSO configuration string
     211WVSO                      : 0
     212VSOWeight                 : 10
     213VSDWeight                 : 1
     214DWeight                   : 1
     215
     216#========== Non-normative encoder techniques ==========
     217DPL                       : 0
    207218
    208219#============ Misc. ================
  • branches/HTM-4.0.1-VSP-dev0/CommonTestConditionsCfgs/baseCfg_3view+depth.cfg

    r133 r193  
    5555DecodingRefreshType       : 1                                      # Random Accesss 0:none, 1:CDR, 2:IDR
    5656GOPSize                   : 8                                      # GOP Size (number of B slice = GOPSize-1)
    57 # V0        Type POC QPoffset QPfactor temporal_id #ref_pics_active ref_pic #ref_pics reference pictures predict deltaRIdx-1 deltaRPS #ref_idcs reference idcs  #IV_ref_pics  IV reference pics  IV ref list pos
    58 Frame1    : B    8   1        0.442    0           4                1       4         -8 -10 -12 -16     0                                                      0
    59 Frame2    : B    4   2        0.3536   0           2                1       3         -4 -6  4           1       0           4        5         1 1 0 0 1       0
    60 Frame3    : B    2   3        0.3536   0           2                1       4         -2 -4  2 6         1       0           2        4         1 1 1 1         0
    61 Frame4    : B    1   4        0.68     0           2                0       4         -1  1  3 7         1       0           1        5         1 0 1 1 1       0
    62 Frame5    : B    3   4        0.68     0           2                0       4         -1 -3  1 5         1       0          -2        5         1 1 1 1 0       0
    63 Frame6    : B    6   3        0.3536   0           2                1       4         -2 -4 -6 2         1       0          -3        5         1 1 1 1 0       0
    64 Frame7    : B    5   4        0.68     0           2                0       4         -1 -5  1 3         1       0           1        5         1 0 1 1 1       0
    65 Frame8    : B    7   4        0.68     0           2                0       4         -1 -3 -7 1         1       0          -2        5         1 1 1 1 0       0
    66 FrameI_v1 : P    0   3        0.442    0           1                1       0                            0                                                      1             -1                 1                  0
    67 Frame1_v1 : B    8   4        0.442    0           4                1       4         -8 -10 -12 -16     0                                                      1             -1                 2                  0
    68 Frame2_v1 : B    4   5        0.3536   0           3                1       3         -4 -6  4           1       0           4        5         1 1 0 0 1       1             -1                 2                  0
    69 Frame3_v1 : B    2   6        0.3536   0           3                1       4         -2 -4  2 6         1       0           2        4         1 1 1 1         1             -1                 2                  0 
    70 Frame4_v1 : B    1   7        0.68     0           3                0       4         -1  1  3 7         1       0           1        5         1 0 1 1 1       1             -1                 2                  0 
    71 Frame5_v1 : B    3   7        0.68     0           3                0       4         -1 -3  1 5         1       0          -2        5         1 1 1 1 0       1             -1                 3                  0 
    72 Frame6_v1 : B    6   6        0.3536   0           3                1       4         -2 -4 -6 2         1       0          -3        5         1 1 1 1 0       1             -1                 3                  0 
    73 Frame7_v1 : B    5   7        0.68     0           3                0       4         -1 -5  1 3         1       0           1        5         1 0 1 1 1       1             -1                 3                  0 
    74 Frame8_v1 : B    7   7        0.68     0           3                0       4         -1 -3 -7 1         1       0          -2        5         1 1 1 1 0       1             -1                 3                  0 
    75 FrameI_v2 : P    0   3        0.442    0           1                1       0                            0                                                      1             -2                 1                  0 
    76 Frame1_v2 : B    8   4        0.442    0           4                1       4         -8 -10 -12 -16     0                                                      1             -2                 2                  0 
    77 Frame2_v2 : B    4   5        0.3536   0           3                1       3         -4 -6  4           1       0           4        5         1 1 0 0 1       1             -2                 2                  0 
    78 Frame3_v2 : B    2   6        0.3536   0           3                1       4         -2 -4  2 6         1       0           2        4         1 1 1 1         1             -2                 2                  0 
    79 Frame4_v2 : B    1   7        0.68     0           3                0       4         -1  1  3 7         1       0           1        5         1 0 1 1 1       1             -2                 2                  0 
    80 Frame5_v2 : B    3   7        0.68     0           3                0       4         -1 -3  1 5         1       0          -2        5         1 1 1 1 0       1             -2                 3                  0 
    81 Frame6_v2 : B    6   6        0.3536   0           3                1       4         -2 -4 -6 2         1       0          -3        5         1 1 1 1 0       1             -2                 3                  0 
    82 Frame7_v2 : B    5   7        0.68     0           3                0       4         -1 -5  1 3         1       0           1        5         1 0 1 1 1       1             -2                 3                  0 
    83 Frame8_v2 : B    7   7        0.68     0           3                0       4         -1 -3 -7 1         1       0          -2        5         1 1 1 1 0       1             -2                 3                  0 
     57# V0        Type POC QPoffset QPfactor temporal_id #ref_pics_active ref_pic #ref_pics reference pictures predict deltaRIdx-1 deltaRPS #ref_idcs reference idcs  #IV_ref_pics  IV reference pics  IV ref list pos          #VSP_ref_pics  VSP_ref_pics  VSP_ref_list_pos
     58Frame1    : B    8   1        0.442    0           4                1       4         -8 -10 -12 -16     0                                                      0                                                         0
     59Frame2    : B    4   2        0.3536   0           2                1       3         -4 -6  4           1       0           4        5         1 1 0 0 1       0                                                         0
     60Frame3    : B    2   3        0.3536   0           2                1       4         -2 -4  2 6         1       0           2        4         1 1 1 1         0                                                         0
     61Frame4    : B    1   4        0.68     0           2                0       4         -1  1  3 7         1       0           1        5         1 0 1 1 1       0                                                         0
     62Frame5    : B    3   4        0.68     0           2                0       4         -1 -3  1 5         1       0          -2        5         1 1 1 1 0       0                                                         0
     63Frame6    : B    6   3        0.3536   0           2                1       4         -2 -4 -6 2         1       0          -3        5         1 1 1 1 0       0                                                         0
     64Frame7    : B    5   4        0.68     0           2                0       4         -1 -5  1 3         1       0           1        5         1 0 1 1 1       0                                                         0
     65Frame8    : B    7   4        0.68     0           2                0       4         -1 -3 -7 1         1       0          -2        5         1 1 1 1 0       0                                                         0
     66FrameI_v1 : P    0   3        0.442    0           1                1       0                            0                                                      1             -1                 1                  0     1              -1            2                 0
     67Frame1_v1 : B    8   4        0.442    0           4                1       4         -8 -10 -12 -16     0                                                      1             -1                 2                  0     1              -1            3                 0
     68Frame2_v1 : B    4   5        0.3536   0           3                1       3         -4 -6  4           1       0           4        5         1 1 0 0 1       1             -1                 2                  0     1              -1            3                 0
     69Frame3_v1 : B    2   6        0.3536   0           3                1       4         -2 -4  2 6         1       0           2        4         1 1 1 1         1             -1                 2                  0     1              -1            3                 0
     70Frame4_v1 : B    1   7        0.68     0           3                0       4         -1  1  3 7         1       0           1        5         1 0 1 1 1       1             -1                 2                  0     1              -1            3                 0
     71Frame5_v1 : B    3   7        0.68     0           3                0       4         -1 -3  1 5         1       0          -2        5         1 1 1 1 0       1             -1                 3                  0     1              -1            4                 0
     72Frame6_v1 : B    6   6        0.3536   0           3                1       4         -2 -4 -6 2         1       0          -3        5         1 1 1 1 0       1             -1                 3                  0     1              -1            4                 0
     73Frame7_v1 : B    5   7        0.68     0           3                0       4         -1 -5  1 3         1       0           1        5         1 0 1 1 1       1             -1                 3                  0     1              -1            4                 0
     74Frame8_v1 : B    7   7        0.68     0           3                0       4         -1 -3 -7 1         1       0          -2        5         1 1 1 1 0       1             -1                 3                  0     1              -1            4                 0
     75FrameI_v2 : P    0   3        0.442    0           1                1       0                            0                                                      1             -2                 1                  0     1              -2            2                 0
     76Frame1_v2 : B    8   4        0.442    0           4                1       4         -8 -10 -12 -16     0                                                      1             -2                 2                  0     1              -2            3                 0
     77Frame2_v2 : B    4   5        0.3536   0           3                1       3         -4 -6  4           1       0           4        5         1 1 0 0 1       1             -2                 2                  0     1              -2            3                 0
     78Frame3_v2 : B    2   6        0.3536   0           3                1       4         -2 -4  2 6         1       0           2        4         1 1 1 1         1             -2                 2                  0     1              -2            3                 0
     79Frame4_v2 : B    1   7        0.68     0           3                0       4         -1  1  3 7         1       0           1        5         1 0 1 1 1       1             -2                 2                  0     1              -2            3                 0
     80Frame5_v2 : B    3   7        0.68     0           3                0       4         -1 -3  1 5         1       0          -2        5         1 1 1 1 0       1             -2                 3                  0     1              -2            4                 0
     81Frame6_v2 : B    6   6        0.3536   0           3                1       4         -2 -4 -6 2         1       0          -3        5         1 1 1 1 0       1             -2                 3                  0     1              -2            4                 0
     82Frame7_v2 : B    5   7        0.68     0           3                0       4         -1 -5  1 3         1       0           1        5         1 0 1 1 1       1             -2                 3                  0     1              -2            4                 0
     83Frame8_v2 : B    7   7        0.68     0           3                0       4         -1 -3 -7 1         1       0          -2        5         1 1 1 1 0       1             -2                 3                  0     1              -2            4                 0
    8484
    8585ListCombination           : 1                                      # Use combined list for uni-prediction in B-slices
     
    206206VSO                       : 1                                      # use of view synthesis optimization for depth coding
    207207
     208#========== texture coding tools based on depth ==========
     209VSP                       : 1
     210VSPDepthDisable           : 0
    208211
    209212#========== view synthesis optimization (VSO) ==========
    210213VSOConfig                 : [cx0 B(cc1) I(s0.25 s0.5 s0.75)][cx1 B(oo0) B(oo2) I(s0.25 s0.5 s0.75 s1.25 s1.5 s1.75)][cx2 B(cc1) I(s1.25 s1.5 s1.75)] # VSO configuration string
     214WVSO                      : 0
     215VSOWeight                 : 10
     216VSDWeight                 : 1
     217DWeight                   : 1
     218
     219#========== Non-normative encoder techniques ==========
     220DPL                       : 0
     221
    211222#============ Misc. ================
    212223SEIpictureDigest          : 0                                      # Control generation of picture_digest SEI messages
  • branches/HTM-4.0.1-VSP-dev0/build/vc9/TLibCommon_vc9.vcproj

    r166 r193  
    292292                        </File>
    293293                        <File
    294                                 RelativePath="..\..\source\Lib\TLibCommon\DebugLog.cpp"
    295                                 >
    296                         </File>
    297                         <File
    298294                                RelativePath="..\..\source\Lib\libmd5\libmd5.c"
    299295                                >
     
    422418                        </File>
    423419                        <File
    424                                 RelativePath="..\..\source\Lib\TLibCommon\DebugLog.h"
    425                                 >
    426                         </File>
    427                         <File
    428420                                RelativePath="..\..\source\Lib\libmd5\libmd5.h"
    429421                                >
  • branches/HTM-4.0.1-VSP-dev0/source/App/TAppDecoder/TAppDecCfg.cpp

    r100 r193  
    103103  if (!m_pchBitstreamFile)
    104104  {
    105     fprintf(stderr, "No input file specifed, aborting\n");
     105    fprintf(stderr, "No input file specified, aborting\n");
    106106    return false;
    107107  }
  • branches/HTM-4.0.1-VSP-dev0/source/App/TAppDecoder/TAppDecTop.cpp

    r166 r193  
    262262    }
    263263  }
    264 #if DEBUGIMGOUT
    265   for(Int viewDepthIdx=0; viewDepthIdx<m_tVideoIOYuvReconDbgFile.size() ; viewDepthIdx++)
    266   {
    267     if( m_tVideoIOYuvReconDbgFile[viewDepthIdx] )
    268     {
    269       m_tVideoIOYuvReconDbgFile[viewDepthIdx]->close();
    270       delete m_tVideoIOYuvReconDbgFile[viewDepthIdx];
    271       m_tVideoIOYuvReconDbgFile[viewDepthIdx] = NULL ;
    272     }
    273   }
    274 #endif
    275264
    276265  for(Int viewDepthIdx=0; viewDepthIdx<m_tDecTop.size() ; viewDepthIdx++)
     
    341330#endif
    342331      }
    343 #if DEBUGIMGOUT
    344 #if PIC_CROPPING
    345       m_tVideoIOYuvReconDbgFile[viewDepthId]->write( pcPic->getPicYuvRecDbg(), sps->getPicCropLeftOffset(), sps->getPicCropRightOffset(), sps->getPicCropTopOffset(), sps->getPicCropBottomOffset() );
    346 #else
    347       m_tVideoIOYuvReconDbgFile[viewDepthId]->write( pcPic->getPicYuvRecDbg(), pcPic->getSlice(0)->getSPS()->getPad() );
    348 #endif
    349 #endif   
    350332     
    351333      // update POC of display order
     
    406388#endif
    407389      }
    408 #if DEBUGIMGOUT
    409 #if PIC_CROPPING
    410       m_tVideoIOYuvReconDbgFile[viewDepthId]->write( pcPic->getPicYuvRecDbg(), sps->getPicCropLeftOffset(), sps->getPicCropRightOffset(), sps->getPicCropTopOffset(), sps->getPicCropBottomOffset() );
    411 #else
    412       m_tVideoIOYuvReconDbgFile[viewDepthId]->write( pcPic->getPicYuvRecDbg(), pcPic->getSlice(0)->getSPS()->getPad() );
    413 #endif
    414 #endif
    415390     
    416391      // update POC of display order
     
    501476  }
    502477#endif
    503 #if DEBUGIMGOUT
    504   while( m_tVideoIOYuvReconDbgFile.size() < newNumberOfViewDepth)
    505   {
    506     m_tVideoIOYuvReconDbgFile.push_back(new TVideoIOYuv);
    507     Char buffer[4];
    508     sprintf(buffer,"_%i", (Int)(m_tVideoIOYuvReconDbgFile.size()-1) / 2 );
    509     Char* nextFilename = NULL;
    510     if( (m_tVideoIOYuvReconDbgFile.size() % 2) == 0 )
    511     {
    512       Char* pchTempFilename = NULL;
    513       xAppendToFileNameEnd( "DebugImg.yuv", "_depth", pchTempFilename);
    514       xAppendToFileNameEnd( pchTempFilename, buffer, nextFilename);
    515       free ( pchTempFilename );
    516     }
    517     else
    518     {
    519       xAppendToFileNameEnd( "DebugImg.yuv", buffer, nextFilename);
    520     }
    521     if( isDepth || ( !isDepth && (m_tVideoIOYuvReconDbgFile.size() % 2) == 1 ) )
    522     {
    523       m_tVideoIOYuvReconDbgFile.back()->open( nextFilename, true, m_outputBitDepth, g_uiBitDepth + g_uiBitIncrement );
    524     }
    525     free ( nextFilename );
    526   }
    527 #endif
     478
    528479  while( m_pocLastDisplay.size() < newNumberOfViewDepth )
    529480  {
     
    587538{
    588539  //first view does not have VSP
    589 #if VSP_TEXT_ONLY
    590   if((iCodedViewIdx == 0)||(bDepth))
    591 #else
    592540  if((iCodedViewIdx == 0))
    593 #endif
    594541    return;
    595542  pcPicVSP->getSlice(0)->setPOC( iCurPoc );
     543  pcPicVSP->getSlice(0)->setViewId( iCodedViewIdx );
    596544  Int iNeighborViewId = 0;
    597545  Bool bRenderFromLeft;
  • branches/HTM-4.0.1-VSP-dev0/source/App/TAppDecoder/TAppDecTop.h

    r166 r193  
    6868
    6969  std::vector<TVideoIOYuv*>       m_tVideoIOYuvReconFile;         ///< reconstruction YUV class
    70 #if DEBUGIMGOUT
    71   std::vector<TVideoIOYuv*>       m_tVideoIOYuvReconDbgFile;      ///< debug YUV class
    72 #endif
    7370
    7471  // for output control
  • branches/HTM-4.0.1-VSP-dev0/source/App/TAppEncoder/TAppEncCfg.cpp

    r166 r193  
    120120#endif
    121121
     122#if FIX_MEM_LEAKS
     123 if ( m_pchCameraParameterFile != NULL )
     124   free ( m_pchCameraParameterFile );
     125
     126 if ( m_pchBaseViewCameraNumbers != NULL )
     127   free ( m_pchBaseViewCameraNumbers );
     128
     129 if ( m_pchdQPFile      != NULL )
     130   free ( m_pchdQPFile      );
     131
     132 if ( m_pchColumnWidth  != NULL )
     133   free ( m_pchColumnWidth  );
     134
     135 if ( m_pchRowHeight    != NULL )
     136   free ( m_pchRowHeight    );
     137
     138 if ( m_scalingListFile != NULL )
     139   free ( m_scalingListFile );
     140
     141#endif   
     142
    122143}
    123144
     
    168189    in>>entry.m_interViewRefPosL1[i];
    169190  }
     191#if VSP_CFG
     192  in>>entry.m_numVSPRefPics;
     193  for( Int i = 0; i < entry.m_numVSPRefPics; i++ )
     194  {
     195    in>>entry.m_VSPRefPics[i];
     196  }
     197  for( Int i = 0; i < entry.m_numVSPRefPics; i++ )
     198  {
     199    in>>entry.m_VSPRefPosL0[i];
     200  }
     201  for( Int i = 0; i < entry.m_numVSPRefPics; i++ )
     202  {
     203    in>>entry.m_VSPRefPosL1[i];
     204  }
     205#endif
     206
    170207  return in;
    171208}
     
    339376  ("AllowNegDist",                    m_bAllowNegDist           , true          , "Allow negative Distortion in VSO")
    340377#endif
    341 
     378#if LGE_WVSO_A0119
     379  ("WVSO",                            m_bUseWVSO                , false         , "Use depth fidelity term for VSO" )
     380  ("VSOWeight",                       m_iVSOWeight              , 10            , "Synthesized View Distortion Change weight" )
     381  ("VSDWeight",                       m_iVSDWeight              , 1             , "View Synthesis Distortion estimate weight" )
     382  ("DWeight",                         m_iDWeight                , 1             , "Depth Distortion weight" )
     383#endif
     384
     385#if OL_DEPTHLIMIT_A0044
     386  ("DPL",                             m_bDepthPartitionLimiting , false         , "Use DepthPartitionLimiting" )
     387#endif
     388#endif
     389
     390#if VSP_N
     391  ("VSP",                             m_bUseVSP                 , false         , "Use VSP" )   
     392  ("VSPDepthDisable",                 m_bVSPDepthDisable        , false         , "Use VSP Depth Disable" )   
    342393#endif
    343394
     
    498549  m_pchRowHeight = cfg_RowHeight.empty() ? NULL : strdup(cfg_RowHeight.c_str());
    499550  m_scalingListFile = cfg_ScalingListFile.empty() ? NULL : strdup(cfg_ScalingListFile.c_str());
    500 
     551 
    501552  if ( m_bUsingDepthMaps )
    502553  {
     
    648699#endif
    649700
     701#if LGE_WVSO_A0119
     702  m_bUseWVSO = m_bUseVSO && m_bUseWVSO && m_bUsingDepthMaps;
     703#endif
    650704  xCleanUpVectors();
    651705
     
    11071161  }
    11081162  xConfirmPara( bErrorIvpEnhV, "Invalid inter-view coding structure for enhancement views given" );
     1163
     1164#if VSP_CFG
     1165  // validate vsp refs
     1166  Bool bErrorVspEnhV = false;
     1167  if( m_iNumberOfViews > 1 )
     1168  {
     1169    for( Int k = 1; k < m_iNumberOfViews; k++ )
     1170    {
     1171      for( Int i = 0; i < MAX_GOP+1; i++ )
     1172      {
     1173        if( m_GOPListsMvc[k][i].m_numVSPRefPics < 0 || m_GOPListsMvc[k][i].m_numVSPRefPics > 1 )
     1174        {
     1175          printf( "\nError: m_numVSPRefPics < 0 or m_numVSPRefPics > 1 \n" );
     1176          bErrorVspEnhV = true;
     1177        }
     1178
     1179        for( Int j = 0; j < m_GOPListsMvc[k][i].m_numVSPRefPics; j++ )
     1180        {
     1181          Int iAbsViewId = m_GOPListsMvc[k][i].m_VSPRefPics[j] + k;
     1182          if( iAbsViewId != 0 )
     1183          {
     1184            printf( "\nError: VSP is allowed to reference only base view\n" );
     1185            bErrorVspEnhV = true;
     1186          }
     1187          if( m_GOPListsMvc[k][i].m_sliceType == 'P' && m_GOPListsMvc[k][i].m_VSPRefPosL1[j] != 0 )
     1188          {
     1189            printf( "\nError: m_sliceType == P and m_VSPRefPosL1 != 0\n" );
     1190            bErrorVspEnhV = true;
     1191          }
     1192        }
     1193
     1194        for( Int j = 0; j < m_GOPListsMvc[k][i].m_numVSPRefPics || j < m_GOPListsMvc[k][i].m_numInterViewRefPics; j++ )
     1195        {
     1196          if( (m_GOPListsMvc[k][i].m_VSPRefPosL0[j] != 0 && m_GOPListsMvc[k][i].m_VSPRefPosL0[j] == m_GOPListsMvc[k][i].m_interViewRefPosL0[j])
     1197           || (m_GOPListsMvc[k][i].m_VSPRefPosL1[j] != 0 && m_GOPListsMvc[k][i].m_VSPRefPosL1[j] == m_GOPListsMvc[k][i].m_interViewRefPosL1[j]) )
     1198          {
     1199            printf( "\nError: vsp_ref_list_pos[%d] == IV ref list pos[%d]\n", j, j );
     1200            bErrorVspEnhV = true;
     1201          }
     1202        }
     1203      }
     1204    }
     1205  }
     1206  xConfirmPara( bErrorVspEnhV, "Invalid VSP coding structure for enhancement views given" );
     1207#endif
    11091208
    11101209  // validate temporal coding structure
     
    16921791#if HHI_VSO
    16931792  printf("VSO:%d ", m_bUseVSO             );
    1694 #endif 
     1793#endif
     1794#if LGE_WVSO_A0119
     1795  printf("WVSO:%d ", m_bUseWVSO );
     1796#endif
     1797#if OL_DEPTHLIMIT_A0044
     1798  printf("DPL:%d ", m_bDepthPartitionLimiting);
     1799#endif
    16951800#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
    16961801  printf("DMM:%d ", m_bUseDMM );
     
    16981803#if HHI_MPI
    16991804  printf("MVI:%d ", m_bUseMVI ? 1 : 0 );
     1805#endif
     1806#if LGE_WVSO_A0119
     1807  printf("\nVSO : VSD : SAD weight = %d : %d : %d ", m_iVSOWeight, m_iVSDWeight, m_iDWeight );
    17001808#endif
    17011809  printf("\n\n");
  • branches/HTM-4.0.1-VSP-dev0/source/App/TAppEncoder/TAppEncCfg.h

    r102 r193  
    297297  Bool      m_bUseEstimatedVSD;                           ///< Flag for using model based VSD estimation instead of VSO for some encoder decisions (JCT3V-A0033 modification 3) 
    298298#endif
     299#if LGE_WVSO_A0119
     300  Bool      m_bUseWVSO;                                    ///< flag for using View Synthesis Optimization 
     301  Int       m_iVSOWeight;
     302  Int       m_iVSDWeight;
     303  Int       m_iDWeight;
     304#endif
     305#if VSP_N
     306  Bool      m_bUseVSP;
     307  Bool      m_bVSPDepthDisable;
     308#endif
    299309
    300310  // coding tools (depth intra modes)
    301311#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
    302312  Bool      m_bUseDMM;                                        ///< flag for using DMM
     313#endif
     314
     315#if OL_DEPTHLIMIT_A0044
     316  Bool      m_bDepthPartitionLimiting;
    303317#endif
    304318
  • branches/HTM-4.0.1-VSP-dev0/source/App/TAppEncoder/TAppEncTop.cpp

    r166 r193  
    207207    m_acTEncTopList[iViewIdx]->setUseEstimatedVSD              ( false );
    208208#endif
     209#if LGE_WVSO_A0119
     210    m_acTEncTopList[iViewIdx]->setUseWVSO                      ( false );
     211#endif
    209212#endif
    210213
     
    361364    m_acTEncTopList[iViewIdx]->setUseDMM                     ( false );
    362365#endif
     366#if OL_DEPTHLIMIT_A0044
     367    m_acTEncTopList[iViewIdx]->setUseDPL                     ( false );
     368#endif
    363369#if HHI_MPI
    364370    m_acTEncTopList[iViewIdx]->setUseMVI( false );
     371#endif
     372
     373#if VSP_N
     374    m_acTEncTopList[iViewIdx]->setUseVSP( m_bUseVSP );
     375    m_acTEncTopList[iViewIdx]->setVSPDepthDisable( m_bVSPDepthDisable );
    365376#endif
    366377  }
     
    524535      m_acTEncDepthTopList[iViewIdx]->setUseEstimatedVSD              ( m_bUseEstimatedVSD );
    525536#endif
     537#if LGE_WVSO_A0119
     538      m_acTEncDepthTopList[iViewIdx]->setUseWVSO                      ( m_bUseWVSO         );
     539#endif
    526540#endif
    527541
     
    634648    m_acTEncDepthTopList[iViewIdx]->setUseDMM                     ( m_bUseDMM );
    635649#endif
     650#if OL_DEPTHLIMIT_A0044
     651    m_acTEncDepthTopList[iViewIdx]->setUseDPL                      (m_bDepthPartitionLimiting);
     652#endif
    636653#if HHI_MPI
    637654     m_acTEncDepthTopList[iViewIdx]->setUseMVI( m_bUseMVI );
     655#endif
     656
     657#if VSP_N
     658      m_acTEncDepthTopList[iViewIdx]->setUseVSP( m_bUseVSP );
     659      m_acTEncDepthTopList[iViewIdx]->setVSPDepthDisable( m_bVSPDepthDisable );
    638660#endif
    639661    }
     
    690712      AOT(true);
    691713    }
     714#if LGE_WVSO_A0119
     715    for ( Int iViewNum = 0; iViewNum < m_iNumberOfViews; iViewNum++ )
     716    {
     717      for (Int iContent = 0; iContent < 2; iContent++ )
     718      {
     719        TEncTop* pcEncTop = ( iContent == 0 ) ? m_acTEncTopList[iViewNum] : m_acTEncDepthTopList[iViewNum];
     720        pcEncTop->setUseWVSO  ( m_bUseWVSO );
     721        pcEncTop->setVSOWeight( m_iVSOWeight );
     722        pcEncTop->setVSDWeight( m_iVSDWeight );
     723        pcEncTop->setDWeight  ( m_iDWeight );
     724      }
     725    }
     726#endif
    692727  }
    693728#endif
     
    938973        iNumEncoded = 0;
    939974
    940 #if VSP_SLICE_HEADER
    941         m_acTEncTopList     [iViewIdx]->setUseVSP( (gopId%VSP_FRAME_INTERVAL==0) );
    942         m_acTEncDepthTopList[iViewIdx]->setUseVSP( (gopId%VSP_FRAME_INTERVAL==0) );
     975#if VSP_SLICE_HEADER && !VSP_CFG
     976        if( m_acTEncTopList     [iViewIdx]->getUseVSP() ) m_acTEncTopList     [iViewIdx]->setUseVSP( (gopId%VSP_FRAME_INTERVAL==0) );
     977        if( m_acTEncDepthTopList[iViewIdx]->getUseVSP() ) m_acTEncDepthTopList[iViewIdx]->setUseVSP( (gopId%VSP_FRAME_INTERVAL==0) );
    943978#endif
    944979
     
    963998#if VSP_SLICE_HEADER
    964999          if( m_acTEncDepthTopList[iViewIdx]->getUseVSP() )
     1000          if( !m_acTEncDepthTopList[iViewIdx]->getVSPDepthDisable() )
    9651001#endif
    9661002            xStoreVSPInBuffer(m_acTEncDepthTopList[iViewIdx]->getVSPBuf(), m_acTEncDepthTopList[iViewIdx]->getVSPAvailBuf(), iViewIdx, true, gopId);
     
    10031039  delete pcDepthPicYuvOrg;
    10041040  pcDepthPicYuvOrg = NULL;
     1041 
     1042#if FIX_MEM_LEAKS
     1043  if ( pcPdmDepthOrg != NULL )
     1044  {
     1045    pcPdmDepthOrg->destroy();
     1046    delete pcPdmDepthOrg;     
     1047    pcPdmDepthOrg = NULL;
     1048  };
     1049#endif
     1050
    10051051 
    10061052  for(Int iViewIdx=0; iViewIdx < m_iNumberOfViews; iViewIdx++ )
     
    12631309Void TAppEncTop::setupRenModel( Int iPoc, Int iEncViewIdx, Int iEncContent, Int iHorOffset )
    12641310{
     1311#if FIX_VSO_SETUP
     1312  m_cRendererModel.setupPart( iHorOffset, Min( g_uiMaxCUHeight, m_iSourceHeight - iHorOffset ) );
     1313#else
    12651314  m_cRendererModel.setHorOffset( iHorOffset );
     1315#endif
    12661316#else
    12671317Void TAppEncTop::setupRenModel( Int iPoc, Int iEncViewIdx, Int iEncContent )
     
    14101460{
    14111461  //first view does not have VSP
    1412 #if VSP_TEXT_ONLY
    1413   if((iCodedViewIdx == 0)||(bDepth))
    1414 #else
    14151462  if((iCodedViewIdx == 0))
    1416 #endif
    14171463    return;
    14181464
     
    14391485  }
    14401486  pcPicVSP->getSlice(0)->setPOC( iCurPoc );
    1441 
    1442   Int iNeighborViewId = 0;
     1487  pcPicVSP->getSlice(0)->setViewId( iCodedViewIdx );
     1488
     1489  Int iNeighborViewId = 0;  //iCodedViewIdx + m_GOPListsMvc[iCodedViewIdx][gopId].m_VSPRefPics[0];
    14431490  Bool bRenderFromLeft;
    14441491  //check if the neighboring view is situated to the left of the current view
  • branches/HTM-4.0.1-VSP-dev0/source/App/TAppRenderer/TAppRendererTop.cpp

    r101 r193  
    533533
    534534#if HHI_VSO_SPEEDUP_A0033
     535#if FIX_VSO_SETUP
     536    cCurModel.setupPart( 0, m_iSourceHeight  );
     537#else
    535538    cCurModel.setHorOffset( 0 );
     539#endif
    536540#endif
    537541
     
    710714  AOT( m_iLog2SamplingFactor != 0 );
    711715#if HHI_VSO_SPEEDUP_A0033
     716#if FIX_VSO_SETUP
     717  cCurModel.setupPart( 0, m_iSourceHeight  );
     718#else
    712719  cCurModel.setHorOffset( 0 );
     720#endif
    713721#endif
    714722#if LGE_VSO_EARLY_SKIP_A0093
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibCommon/CommonDef.h

    r166 r193  
    5858
    5959#define HM_VERSION        "6.1"
    60 #define NV_VERSION        "4.0.1"                 ///< Current software version
     60#define NV_VERSION        "4.1"                  ///< Current software version
    6161
    6262// ====================================================================================================================
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibCommon/TComDataCU.cpp

    r166 r193  
    7676  if( ucVspMergePos == VSP_MERGE_POS )
    7777  {
    78 #if VSP_TEXT_ONLY
    79     if( !getSlice()->getSPS()->isDepth() )
     78#if VSP_CFG
     79    if( getSlice()->getSPS()->getVspDepthPresentFlag() || !getSlice()->getSPS()->isDepth() )
     80#else
     81    if( !getSlice()->getVspDepthDisableFlag() || !getSlice()->getSPS()->isDepth() )
    8082#endif
    8183    if( getSlice()->getSPS()->getViewId()!=0 && !bVspMvZeroDone )
     
    150152  m_pcTrCoeffCr        = NULL;
    151153#if ADAPTIVE_QP_SELECTION 
     154#if FIX_MEM_LEAKS
     155  m_ArlCoeffIsAliasedAllocation = false;
    152156  m_pcArlCoeffY        = NULL;
    153157  m_pcArlCoeffCb       = NULL;
    154158  m_pcArlCoeffCr       = NULL;
     159#endif
    155160#endif
    156161 
     
    211216  m_piEdgeDeltaDC1      = NULL;
    212217#endif
     218#endif
     219#if OL_DEPTHLIMIT_A0044
     220  //add a variable to store the partition information
     221  //a 2D array in part_symbol, uidepth format
     222  //initialize m_partInfo to OL_END_CU
     223  for (Int i=0; i < OL_PART_BUF_SIZE; i++)
     224  {
     225    for (Int j=0; j < 2; j++)
     226    {
     227      m_uiPartInfo[i][j] = OL_END_CU;
     228    }
     229  }
    213230#endif
    214231}
     
    295312      m_pcArlCoeffCb       = m_pcGlbArlCoeffCb;
    296313      m_pcArlCoeffCr       = m_pcGlbArlCoeffCr;
     314#if FIX_MEM_LEAKS
     315      m_ArlCoeffIsAliasedAllocation = true;
     316#endif
    297317    }
    298318    else
     
    410430    if ( m_pcTrCoeffCr        ) { xFree(m_pcTrCoeffCr);         m_pcTrCoeffCr       = NULL; }
    411431#if ADAPTIVE_QP_SELECTION
     432#if FIX_MEM_LEAKS
     433    if (!m_ArlCoeffIsAliasedAllocation)
     434    {
     435      xFree(m_pcArlCoeffY); m_pcArlCoeffY = 0;
     436      xFree(m_pcArlCoeffCb); m_pcArlCoeffCb = 0;
     437      xFree(m_pcArlCoeffCr); m_pcArlCoeffCr = 0;
     438    }
     439#endif
    412440    if ( m_pcGlbArlCoeffY     ) { xFree(m_pcGlbArlCoeffY);      m_pcGlbArlCoeffY    = NULL; }
    413441    if ( m_pcGlbArlCoeffCb    ) { xFree(m_pcGlbArlCoeffCb);     m_pcGlbArlCoeffCb   = NULL; }
     
    516544Void TComDataCU::initCU( TComPic* pcPic, UInt iCUAddr )
    517545{
     546#if OL_DEPTHLIMIT_A0044
     547  TComDataCU* pcCU     = pcPic->getCU(iCUAddr);
     548#endif
    518549
    519550  m_pcPic              = pcPic;
     
    732763    m_apcCUColocated[1] = getSlice()->getRefPic( REF_PIC_LIST_1, 0)->getCU( m_uiCUAddr );
    733764  }
     765#if OL_DEPTHLIMIT_A0044
     766  setPartDumpFlag (pcCU->getPartDumpFlag());
     767#endif
    734768}
    735769
     
    10611095  memcpy(m_uiSliceStartCU,pcCU->m_uiSliceStartCU+uiPartOffset,sizeof(UInt)*m_uiNumPartition);
    10621096  memcpy(m_uiEntropySliceStartCU,pcCU->m_uiEntropySliceStartCU+uiPartOffset,sizeof(UInt)*m_uiNumPartition);
     1097#if OL_DEPTHLIMIT_A0044
     1098  setPartDumpFlag (pcCU->getPartDumpFlag());
     1099#endif
    10631100}
    10641101
     
    23462383#if H0204_QP_PREDICTION
    23472384  UInt        lPartIdx, aPartIdx;
     2385#if FIX_COMP_WARNING_INIT
     2386  lPartIdx = 0;
     2387  aPartIdx = 0;
     2388#endif
    23482389  TComDataCU* cULeft  = getQpMinCuLeft ( lPartIdx, m_uiAbsIdxInLCU + uiCurrAbsIdxInLCU );
    23492390  TComDataCU* cUAbove = getQpMinCuAbove( aPartIdx, m_uiAbsIdxInLCU + uiCurrAbsIdxInLCU );
     
    31463187    RefPicList eRefList = uiRefIdx ? REF_PIC_LIST_1 : REF_PIC_LIST_0;
    31473188    Int iBestRefIdx = getCUMvField(eRefList)->getRefIdx(uiPartAddr);
    3148     if(iBestRefIdx >= 0 && getSlice()->getViewId() == getSlice()->getRefViewId(eRefList, iBestRefIdx))
     3189    if(iBestRefIdx >= 0 && getSlice()->getViewId() == getSlice()->getRefViewId(eRefList, iBestRefIdx)
     3190#if VSP_N
     3191                        && getSlice()->getPOC() != getSlice()->getRefPOC(eRefList, iBestRefIdx)
     3192#endif
     3193      )
    31493194      iAddResiShift++;
    31503195  }
     
    46144659#endif
    46154660  if(pcTmpCU != NULL && !pcTmpCU->isIntra( uiIdx ) )
    4616 #if VSP_N
    4617   if(pcTmpCU->getSlice()->getViewId() != NUM_VIEW_VSP)
    4618 #endif
    46194661  {
    46204662    for(Int iList = 0; iList < (getSlice()->isInterB() ? 2: 1); iList ++)
     
    46254667      {
    46264668        Int refViewIdx  = pcTmpCU->getSlice()->getRefViewId( eRefPicList, refId);
     4669#if VSP_N & VSP_BUGFIX
     4670        Int refPOC = pcTmpCU->getSlice()->getRefPOC( eRefPicList, refId);
     4671        //if( !pcTmpCU->isVspRef( eRefPicList, refId ) )
     4672        if ( refViewIdx!= m_pcSlice->getViewId() || refPOC != m_pcSlice->getPOC())
     4673#else
    46274674        if (refViewIdx!= m_pcSlice->getViewId())
     4675#endif
    46284676        {
    46294677           TComMv cMvPred = pcTmpCU->getCUMvField(eRefPicList)->getMv(uiIdx);
     
    46434691
    46444692  if(pcTmpCU != NULL && !pcTmpCU->isIntra( uiIdx ))
    4645 #if VSP_N
    4646   if(pcTmpCU->getSlice()->getViewId() != NUM_VIEW_VSP)
    4647 #endif
    46484693  {
    46494694    for(Int iList = 0; iList < (getSlice()->isInterB() ? 2: 1); iList ++)
     
    46544699      {
    46554700        Int refViewIdx  = pcTmpCU->getSlice()->getRefViewId( eRefPicList, refId);
     4701#if VSP_N & VSP_BUGFIX
     4702        Int refPOC = pcTmpCU->getSlice()->getRefPOC( eRefPicList, refId);
     4703        //if( !pcTmpCU->isVspRef( eRefPicList, refId ) )
     4704        if ( refViewIdx!= m_pcSlice->getViewId() || refPOC != m_pcSlice->getPOC())
     4705#else
    46564706        if (refViewIdx!= m_pcSlice->getViewId())
     4707#endif
    46574708        {
    46584709           TComMv cMvPred = pcTmpCU->getCUMvField(eRefPicList)->getMv(uiIdx);
     
    46724723#endif
    46734724  if(pcTmpCU != NULL && !pcTmpCU->isIntra( uiIdx ) )
    4674 #if VSP_N
    4675   if(pcTmpCU->getSlice()->getViewId() != NUM_VIEW_VSP)
    4676 #endif
    46774725  {
    46784726    for(Int iList = 0; iList < (getSlice()->isInterB() ? 2: 1); iList ++)
     
    46834731      {
    46844732        Int refViewIdx  = pcTmpCU->getSlice()->getRefViewId( eRefPicList, refId);
     4733#if VSP_N & VSP_BUGFIX
     4734        Int refPOC = pcTmpCU->getSlice()->getRefPOC( eRefPicList, refId);
     4735        //if( !pcTmpCU->isVspRef( eRefPicList, refId ) )
     4736        if ( refViewIdx!= m_pcSlice->getViewId() || refPOC != m_pcSlice->getPOC())
     4737#else
    46854738        if (refViewIdx!= m_pcSlice->getViewId())
     4739#endif
    46864740        {
    46874741           TComMv cMvPred = pcTmpCU->getCUMvField(eRefPicList)->getMv(uiIdx);
     
    47004754#endif
    47014755  if(pcTmpCU != NULL && !pcTmpCU->isIntra( uiIdx ))
    4702 #if VSP_N
    4703   if(pcTmpCU->getSlice()->getViewId() != NUM_VIEW_VSP)
    4704 #endif
    47054756  {
    47064757    for(Int iList = 0; iList < (getSlice()->isInterB() ? 2: 1); iList ++)
     
    47114762      {
    47124763        Int refViewIdx  = pcTmpCU->getSlice()->getRefViewId( eRefPicList, refId);
     4764#if VSP_N & VSP_BUGFIX
     4765        Int refPOC = pcTmpCU->getSlice()->getRefPOC( eRefPicList, refId);
     4766        //if( !pcTmpCU->isVspRef( eRefPicList, refId ) )
     4767        if ( refViewIdx!= m_pcSlice->getViewId() || refPOC != m_pcSlice->getPOC())
     4768#else
    47134769        if (refViewIdx!= m_pcSlice->getViewId())
     4770#endif
    47144771        {
    47154772           TComMv cMvPred = pcTmpCU->getCUMvField(eRefPicList)->getMv(uiIdx);
     
    47314788#endif
    47324789  if(pcTmpCU != NULL && !pcTmpCU->isIntra( uiIdx ))
    4733 #if VSP_N
    4734   if(pcTmpCU->getSlice()->getViewId() != NUM_VIEW_VSP)
    4735 #endif
    47364790  {
    47374791    for(Int iList = 0; iList < (getSlice()->isInterB() ? 2: 1); iList ++)
     
    47424796      {
    47434797        Int refViewIdx  = pcTmpCU->getSlice()->getRefViewId( eRefPicList, refId);
     4798#if VSP_N & VSP_BUGFIX
     4799        Int refPOC = pcTmpCU->getSlice()->getRefPOC( eRefPicList, refId);
     4800        //if( !pcTmpCU->isVspRef( eRefPicList, refId ) )
     4801        if ( refViewIdx!= m_pcSlice->getViewId() || refPOC != m_pcSlice->getPOC())
     4802#else
    47444803        if (refViewIdx!= m_pcSlice->getViewId())
     4804#endif
    47454805        {
    47464806           TComMv cMvPred = pcTmpCU->getCUMvField(eRefPicList)->getMv(uiIdx);
     
    49655025  UInt uiLeftPartIdx = uiIdx;
    49665026  if(pcTmpCU != NULL && !pcTmpCU->isIntra( uiIdx ) )
    4967 #if VSP_N
    4968   if(pcTmpCU->getSlice()->getViewId() != NUM_VIEW_VSP)
    4969 #endif
    49705027  {
    49715028    bTmpIsSkipped = pcTmpCU->isSkipped( uiIdx );
     
    49855042          return;
    49865043        }
     5044#if VSP_N & VSP_BUGFIX
     5045        else if (pcTmpCU->getSlice()->getRefPOC( eRefPicList, refId) != m_pcSlice->getPOC()) // MCP
     5046#else
    49875047        else // MCP
     5048#endif
    49885049        {
    49895050          cTmpMvPred = pcTmpCU->getCUMvField(eRefPicList)->getMv(uiIdx);
     
    50065067
    50075068  if(pcTmpCU != NULL && !pcTmpCU->isIntra( uiIdx ))
    5008 #if VSP_N
    5009   if(pcTmpCU->getSlice()->getViewId() != NUM_VIEW_VSP)
    5010 #endif
    50115069  {
    50125070    bTmpIsSkipped = pcTmpCU->isSkipped( uiIdx );
     
    50265084          return;
    50275085        }
     5086#if VSP_N & VSP_BUGFIX
     5087        else if (pcTmpCU->getSlice()->getRefPOC( eRefPicList, refId) != m_pcSlice->getPOC()) // MCP
     5088#else
    50285089        else // MCP
     5090#endif
    50295091        {
    50305092          cTmpMvPred = pcTmpCU->getCUMvField(eRefPicList)->getMv(uiIdx);
     
    50465108#endif
    50475109  if(pcTmpCU != NULL && !pcTmpCU->isIntra( uiIdx ) )
    5048 #if VSP_N
    5049   if(pcTmpCU->getSlice()->getViewId() != NUM_VIEW_VSP)
    5050 #endif
    50515110  {
    50525111    bTmpIsSkipped = pcTmpCU->isSkipped( uiIdx );
     
    50665125          return;
    50675126        }
    5068         else  // MCP
     5127#if VSP_N & VSP_BUGFIX
     5128        else if (pcTmpCU->getSlice()->getRefPOC( eRefPicList, refId) != m_pcSlice->getPOC()) // MCP
     5129#else
     5130        else // MCP
     5131#endif
    50695132        {
    50705133          cTmpMvPred = pcTmpCU->getCUMvField(eRefPicList)->getMv(uiIdx);
     
    50865149#endif
    50875150  if(pcTmpCU != NULL && !pcTmpCU->isIntra( uiIdx ))
    5088 #if VSP_N
    5089   if(pcTmpCU->getSlice()->getViewId() != NUM_VIEW_VSP)
    5090 #endif
    50915151  {
    50925152    bTmpIsSkipped = pcTmpCU->isSkipped( uiIdx );
     
    51065166          return;
    51075167        }
     5168#if VSP_N & VSP_BUGFIX
     5169        else if (pcTmpCU->getSlice()->getRefPOC( eRefPicList, refId) != m_pcSlice->getPOC()) // MCP
     5170#else
    51085171        else // MCP
     5172#endif
    51095173        {
    51105174          cTmpMvPred = pcTmpCU->getCUMvField(eRefPicList)->getMv(uiIdx);
     
    51285192#endif
    51295193  if(pcTmpCU != NULL && !pcTmpCU->isIntra( uiIdx ))
    5130 #if VSP_N
    5131   if(pcTmpCU->getSlice()->getViewId() != NUM_VIEW_VSP)
    5132 #endif
    51335194  {
    51345195    bTmpIsSkipped = pcTmpCU->isSkipped( uiIdx );
     
    51485209          return;
    51495210        }
     5211#if VSP_N & VSP_BUGFIX
     5212        else if (pcTmpCU->getSlice()->getRefPOC( eRefPicList, refId) != m_pcSlice->getPOC()) // MCP
     5213#else
    51505214        else // MCP
     5215#endif
    51515216        {
    51525217          cTmpMvPred = pcTmpCU->getCUMvField(eRefPicList)->getMv(uiIdx);
     
    57535818  {
    57545819    aiRefIdx[iList] = getCUMvField( RefPicList(iList) )->getRefIdx( uiPartIdx );
    5755     if( aiRefIdx[iList] >= 0 && getSlice()->getRefViewId( RefPicList(iList), aiRefIdx[iList] ) == NUM_VIEW_VSP )
     5820    if( aiRefIdx[iList] >= 0 && isVspRef( RefPicList(iList), aiRefIdx[iList] ) )
    57565821    {
    57575822      iRet |= (iList ? 0x02 : 0x01); // L0=1, L1=2, BI=3
     
    58025867  return iRet;
    58035868}
     5869
     5870Bool TComDataCU::isVspRef ( RefPicList e, Int iRefIdx )
     5871{
     5872  if( iRefIdx < 0 ) return false;
     5873
     5874  if( getSlice()->getRefPic( e, iRefIdx )->getViewId() == getSlice()->getViewId()
     5875   && getSlice()->getRefPic( e, iRefIdx )->getPOC()    == getSlice()->getPOC()   )
     5876  {
     5877    return true;
     5878  }
     5879
     5880  return false;
     5881}
    58045882#endif
    58055883
     
    58665944 
    58675945#if AMVP_VSP_UNAVAILABLE
    5868   if( pcTmpCU != NULL && pcTmpCU->getCUMvField(eRefPicList)->getRefIdx(uiIdx) >= 0 && pcTmpCU->getSlice()->getRefViewId( eRefPicList, pcTmpCU->getCUMvField(eRefPicList)->getRefIdx(uiIdx) ) == NUM_VIEW_VSP )
     5946  if( pcTmpCU != NULL && pcTmpCU->getCUMvField(eRefPicList)->getRefIdx(uiIdx) >= 0 && pcTmpCU->isVspRef( eRefPicList, pcTmpCU->getCUMvField(eRefPicList)->getRefIdx(uiIdx) ) )
    58695947  {
    58705948    return false;
     
    59085986      return false;
    59095987    }
     5988#if VSP_N ///
     5989    if( pcTmpCU->isVspRef( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) ) )
     5990      return false;
     5991#endif
    59105992    iNeibRefPOC = pcTmpCU->getSlice()->getRefPOC( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) );
    59115993    if( iNeibRefPOC == iCurrRefPOC ) // Same Reference Frame But Diff List//
     
    60356117
    60366118#if AMVP_VSP_UNAVAILABLE
    6037   if( pcTmpCU->getCUMvField(eRefPicList)->getRefIdx(uiIdx) >= 0 && pcTmpCU->getSlice()->getRefViewId( eRefPicList, pcTmpCU->getCUMvField(eRefPicList)->getRefIdx(uiIdx) ) == NUM_VIEW_VSP )
     6119  if( pcTmpCU->getCUMvField(eRefPicList)->getRefIdx(uiIdx) >= 0 && pcTmpCU->isVspRef( eRefPicList, pcTmpCU->getCUMvField(eRefPicList)->getRefIdx(uiIdx) ) )
    60386120  {
    60396121    return false;
     
    60616143    if( pcTmpCU->getSlice()->getRefViewId( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) ) != m_pcSlice->getRefViewId( eRefPicList, iRefIdx ) )
    60626144      return false;
     6145#if VSP_N ///
     6146    if( pcTmpCU->isVspRef( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) ) )
     6147      return false;
     6148#endif
    60636149    if( iNeibRefPOC == iCurrRefPOC ) // Same Reference Frame But Diff List//
    60646150    {
     
    60846170      return false;
    60856171    }
     6172#if VSP_N ///
     6173    if( pcTmpCU->isVspRef( eRefPicList, pcTmpCU->getCUMvField(eRefPicList)->getRefIdx(uiIdx) ) )
     6174      return false;
     6175#endif
    60866176
    60876177#if VSP_N
    6088     if( pcTmpCU->getSlice()->getRefViewId( eRefPicList, pcTmpCU->getCUMvField(eRefPicList)->getRefIdx(uiIdx) ) == NUM_VIEW_VSP )
     6178    if( pcTmpCU->isVspRef( eRefPicList, pcTmpCU->getCUMvField(eRefPicList)->getRefIdx(uiIdx) ) )
    60896179    {
    60906180      bRefVsp = true;
     
    61196209      return false;
    61206210    }
     6211#if VSP_N ///
     6212    if( pcTmpCU->isVspRef( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) ) )
     6213      return false;
     6214#endif
    61216215
    61226216#if VSP_N
    6123     if( pcTmpCU->getSlice()->getRefViewId( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) ) == NUM_VIEW_VSP )
     6217    if( pcTmpCU->isVspRef( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) ) )
    61246218    {
    61256219      bRefVsp = true;
     
    61616255  Int iColViewIdx, iColRefViewIdx;
    61626256  TComPic *pColPic = getSlice()->getRefPic( eRefPicList, refidx);
    6163 #if VSP_MV_ZERO // shimizu
     6257#if VSP_N
     6258  if( pColPic->getSlice(0)->getViewId() == getSlice()->getViewId() && pColPic->getSlice(0)->getPOC() == getSlice()->getPOC() )
     6259  {
     6260    return false;
     6261  }
     6262#endif
    61646263  TComDataCU *pColCU = pColPic->getCU( uiCUAddr );
    61656264  iColViewIdx = pColCU->getSlice()->getViewId();
    6166 #if VSP_N
    6167   if( iColViewIdx == NUM_VIEW_VSP )
    6168   {
    6169     return false;
    6170   }
    6171 #endif
    6172 #else 
    6173 #if VSP_N
    6174   if( pColPic->getSlice(0)->getViewId() == NUM_VIEW_VSP )
    6175   {
    6176     return false;
    6177   }
    6178 #endif
    6179   TComDataCU *pColCU = pColPic->getCU( uiCUAddr );
    6180   iColViewIdx = pColCU->getSlice()->getViewId();
    6181 #endif
     6265
    61826266
    61836267  if (pColCU->getPic()==0||pColCU->getPartitionSize(uiPartUnitIdx)==SIZE_NONE||pColCU->isIntra(uiAbsPartAddr))
     
    62076291    iColRefViewIdx = pColCU->getSlice()->getRefPic(eColRefPicList, iColRefIdx)->getViewId();
    62086292#if VSP_N
    6209     if( iColRefViewIdx == NUM_VIEW_VSP )
     6293    if( iColRefViewIdx == pColCU->getSlice()->getViewId() && pColCU->getSlice()->getRefPic(eColRefPicList, iColRefIdx)->getPOC() == pColCU->getSlice()->getPOC() )
    62106294    {
    62116295      continue;
     
    63516435//  UInt uiColRefViewId = pColCU->getSlice()->getRefPic( eColRefPicList, pColCU->getCUMvField(eColRefPicList)->getRefIdx(uiAbsPartAddr))->getViewId();
    63526436  UInt uiCurRefViewId = m_pcSlice->getRefPic(eRefPicList, riRefIdx)->getViewId();
    6353   if( uiCurRefViewId == NUM_VIEW_VSP )
     6437  if( uiCurRefViewId == m_pcSlice->getViewId() && m_pcSlice->getRefPic(eRefPicList, riRefIdx)->getPOC() == m_pcSlice->getPOC() )
    63546438    iScale = 4096;
    63556439  else
     
    63686452  {
    63696453#if VSP_MV_ZERO
    6370     if( uiCurRefViewId == NUM_VIEW_VSP )
     6454    if( uiCurRefViewId == m_pcSlice->getViewId() && m_pcSlice->getRefPic(eRefPicList, riRefIdx)->getPOC() == m_pcSlice->getPOC() )
    63716455      rcMv.setZero();
    63726456    else
     
    64816565    return false;
    64826566  }
     6567#if VSP_N ///
     6568  if( isVspRef( eRefPicList, iRefIdx ) )
     6569  {
     6570    return false;
     6571  }
     6572#endif
    64836573
    64846574  // Prefer a vector crossing us.  Prefer shortest.
     
    64956585    }
    64966586    int iColRefPOC = pColCU->getSlice()->getRefPOC(RefPicList(l), iColRefIdx);
     6587#if VSP_N ///
     6588    Bool bColVsp    = pColCU->isVspRef( RefPicList(getSlice()->isInterB() ? getSlice()->getColDir() : 0), getSlice()->getColRefIdx() );
     6589    Bool bColRefVsp = pColCU->isVspRef( RefPicList(l), iColRefIdx );
     6590    if( ( bColRefVsp && !bColVsp) || (!bColRefVsp &&  bColVsp) )
     6591#endif
    64976592    if( pColCU->getSlice()->getRefViewId( RefPicList(l), iColRefIdx ) != pColCU->getSlice()->getViewId() )
    64986593    {
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibCommon/TComDataCU.h

    r166 r193  
    159159  Int*          m_pcArlCoeffCb;       ///< ARL coefficient buffer (Cb)
    160160  Int*          m_pcArlCoeffCr;       ///< ARL coefficient buffer (Cr)
     161#if FIX_MEM_LEAKS
     162  Bool          m_ArlCoeffIsAliasedAllocation; ///< ARL coefficient buffer is an alias of the global buffer and must not be free()'d
     163#endif
    161164
    162165  static Int*   m_pcGlbArlCoeffY;     ///< ARL coefficient buffer (Y)
     
    237240  UInt*         m_uiSliceStartCU;    ///< Start CU address of current slice
    238241  UInt*         m_uiEntropySliceStartCU; ///< Start CU address of current slice
     242
     243#if OL_DEPTHLIMIT_A0044
     244  //add a variable to store the partition information
     245  //a 2D array in uidepth, part_symbol format
     246  UInt          m_uiPartInfo[OL_PART_BUF_SIZE][2];
     247  UInt          m_uiPartNum;
     248  Bool          m_dumpPartInfo;
     249#endif
    239250 
    240251  // -------------------------------------------------------------------------------------------------------------------
     
    600611 
    601612  Void          compressMV            ();
     613
     614#if OL_DEPTHLIMIT_A0044
     615  Void        resetPartInfo     () {m_uiPartNum = 0;};
     616  Void        incrementPartInfo () {m_uiPartNum ++;};
     617  Void        updatePartInfo(UInt uiSymbol, UInt uiDepth) { m_uiPartInfo[m_uiPartNum][0] = uiSymbol; m_uiPartInfo[m_uiPartNum][1] = uiDepth;};
     618  UInt*       readPartInfo()                              { return (UInt*)m_uiPartInfo;};
     619  Void        setPartDumpFlag(Bool flag)                  { m_dumpPartInfo = flag; };
     620  Bool        getPartDumpFlag()                           { return m_dumpPartInfo; };
     621#endif
    602622 
    603623  // -------------------------------------------------------------------------------------------------------------------
     
    665685  Int           isVspMode ( UInt uiPartIdx );
    666686  Int           isVspMode ( UInt uiPartIdx, TComMv cCompMv );
     687  Bool          isVspRef  ( RefPicList e, Int iRefIdx );
    667688#endif
    668689 
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibCommon/TComDepthMapGenerator.cpp

    r166 r193  
    743743      {
    744744#if VSP_N
    745         if( pcSlice->getRefViewId( eRefPicList, iPdmRefIdx ) != NUM_VIEW_VSP )
     745        if( !pcCU->isVspRef( eRefPicList, iPdmRefIdx ) )
    746746#endif
    747747        if( pcSlice->getRefPOC( eRefPicList, iPdmRefIdx ) == pcSlice->getPOC())
     
    846846  Bool          bInterview  = ( uiRefViewId < m_uiCurrViewId );
    847847#if VSP_N
    848   Bool          bVsp        = ( pcRefPic->getViewId() == NUM_VIEW_VSP );
     848  Bool          bVsp        = pcCU->isVspRef( eRefPicList, iRefIdx );
    849849  AOT(  bInterview &&  bVsp && iRefPoc != pcSlice->getPOC() );
    850850  AOT( !bInterview && !bVsp && iRefPoc == pcSlice->getPOC() );
     
    947947  Bool          bInterview  = ( uiRefViewId < m_uiCurrViewId );
    948948#if VSP_N
    949   Bool          bVsp        = ( pcRefPic->getViewId() == NUM_VIEW_VSP );
     949  Bool          bVsp        = pcCU->isVspRef( eRefPicList, iRefIdx );
    950950  AOT(  bInterview &&  bVsp && iRefPoc != pcSlice->getPOC() );
    951951  AOT( !bInterview && !bVsp && iRefPoc == pcSlice->getPOC() );
     
    15021502    Bool            bUsesInterViewPrd = ( abCurrIntView[0] || abCurrIntView[1] );
    15031503#if VSP_N
    1504     if(( aiCurrRefIdx[0] >= 0 && pcCU->getSlice()->getRefPic( REF_PIC_LIST_0, aiCurrRefIdx[0] )->getViewId() == NUM_VIEW_VSP ) ||
    1505        ( aiCurrRefIdx[1] >= 0 && pcCU->getSlice()->getRefPic( REF_PIC_LIST_1, aiCurrRefIdx[1] )->getViewId() == NUM_VIEW_VSP )) {
     1504    if(( aiCurrRefIdx[0] >= 0 && pcCU->isVspRef( REF_PIC_LIST_0, aiCurrRefIdx[0] ) ) ||
     1505       ( aiCurrRefIdx[1] >= 0 && pcCU->isVspRef( REF_PIC_LIST_1, aiCurrRefIdx[1] ) )) {
    15061506      //if refpic is VSP, copy to Original cuurent PDM
    15071507      TComPicYuv* pcPdm = pcCU->getPic()->getPredDepthMap();
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibCommon/TComPic.cpp

    r166 r193  
    6969  m_pcResidual        = NULL;
    7070#endif
    71 #if DEBUGIMGOUT
    72   m_acPicYuvDebug     = NULL;
    73 #endif
    7471  m_pcPicYuvPred      = NULL;
    7572  m_pcPicYuvResi      = NULL;
     
    10299  }
    103100  m_apcPicYuv[1]  = new TComPicYuv;  m_apcPicYuv[1]->create( iWidth, iHeight, uiMaxWidth, uiMaxHeight, uiMaxDepth );
    104 #if DEBUGIMGOUT
    105   m_acPicYuvDebug    = new TComPicYuv;  m_acPicYuvDebug->create( iWidth, iHeight, uiMaxWidth, uiMaxHeight, uiMaxDepth );
    106 #endif
    107 
     101 
    108102  /* there are no SEI messages associated with this picture initially */
    109103  m_SEIs = NULL;
     
    172166    delete m_pcResidual;
    173167    m_pcResidual = NULL;
    174   }
    175 #endif
    176 #if DEBUGIMGOUT
    177   if (m_acPicYuvDebug)
    178   {
    179     m_acPicYuvDebug->destroy();
    180     delete m_acPicYuvDebug;
    181     m_acPicYuvDebug = NULL;
    182168  }
    183169#endif
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibCommon/TComPic.h

    r166 r193  
    9191  TComPicYuv*           m_pcResidual;             //  residual buffer (coded or inter-view predicted residual)
    9292#endif
    93 #if DEBUGIMGOUT
    94   TComPicYuv*           m_acPicYuvDebug;          //  debug image
    95 #endif
    9693
    9794  TComPicYuv*           m_pcPicYuvPred;           //  Prediction
     
    120117  Int**                 m_aaiCodedScale;
    121118  Int**                 m_aaiCodedOffset;
     119
     120#if OL_DEPTHLIMIT_A0044
     121  UInt*                 m_texPartInfo;
     122  UInt                  m_uiTexPartIndex;
     123#endif
    122124
    123125public:
     
    183185#if HHI_INTER_VIEW_RESIDUAL_PRED
    184186  TComPicYuv*   getResidual()         { return  m_pcResidual; }
    185 #endif
    186 
    187 #if DEBUGIMGOUT
    188   TComPicYuv*   getPicYuvRecDbg()     { return  m_acPicYuvDebug; }
    189187#endif
    190188
     
    262260  Void          removeResidualBuffer    ();
    263261#endif
     262
     263#if OL_DEPTHLIMIT_A0044
     264  UInt        accessPartInfo        ( UInt count )   { return m_texPartInfo[m_uiTexPartIndex + count]; };
     265  Void        incrementTexPartIndex (            )   { m_uiTexPartIndex += 2;    };
     266  UInt        getTexPartIndex       ()               { return m_uiTexPartIndex;  };
     267  Void        setTexPartIndex       ( UInt idx   )   { m_uiTexPartIndex = idx; };
     268  Void        setPartInfo           ( UInt* texPart) { m_texPartInfo    = texPart;  };
     269#endif
     270
    264271  Bool          getValidSlice                                  (Int sliceID)  {return m_pbValidSlice[sliceID];}
    265272  Int           getSliceGranularityForNDBFilter                ()             {return m_sliceGranularityForNDBFilter;}
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibCommon/TComPicSym.cpp

    r166 r193  
    126126  m_apcTComDataCU = NULL;
    127127
     128
     129#if FIX_MEM_LEAKS
     130  if( m_apcTComTile )
     131  {
     132    for( i=0; i<(m_iNumColumnsMinus1+1)*(m_iNumRowsMinus1+1); i++ )
     133    {
     134      if ( m_apcTComTile[i] )  delete m_apcTComTile[i];
     135    }
     136  }
     137#endif
     138
    128139  delete [] m_apcTComTile;
    129140  m_apcTComTile = NULL;
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibCommon/TComPicYuv.h

    r166 r193  
    184184  Void  setChromaTo  ( Pel pVal ); 
    185185
    186 #if DEBUGIMGOUT
    187   // Degub tools
    188 public:
    189   Void colsetToPicYuv   ( const UChar ucColor[3],                 Int iOffset[2][2], TComPicYuv* pcPicYuvDst, UInt iCuAddr, UInt uiAbsZorderIdx, UInt uiPartDepth = 0, UInt uiPartIdx = 0 );
    190   Void colsetToPicLuma  ( const UChar ucLumaOffCol,               Int iOffset[2][2], TComPicYuv* pcPicYuvDst, UInt iCuAddr, UInt uiAbsZorderIdx, UInt uiPartDepth = 0, UInt uiPartIdx = 0 );
    191   Void colsetToPicChroma( const UChar ucUCol, const UChar ucVCol, Int iOffset[2][2], TComPicYuv* pcPicYuvDst, UInt iCuAddr, UInt uiAbsZorderIdx, UInt uiPartDepth = 0, UInt uiPartIdx = 0 );
    192   Void drawLineToPicYuv ( bool bHor, bool bVer, UInt uiSize,      TComPicYuv* pcPicYuvDst, UInt iCuAddr, UInt uiAbsZorderIdx, UInt uiPartDepth = 0, UInt uiPartIdx = 0 );
    193 #endif
    194 
    195186};// END CLASS DEFINITION TComPicYuv
    196187
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibCommon/TComPrediction.h

    r166 r193  
    9595  Void xPredInterPrdDepthMap    ( TComDataCU* pcCU, TComPicYuv* pcPicYuvRef, UInt uiPartAddr, TComMv* pcMv, Int iWidth, Int iHeight,                         TComYuv*& rpcYuv, UInt uiRShift, UInt uiOffset );
    9696#endif
     97
    9798#if DEPTH_MAP_GENERATION
    9899  Void xWeightedAveragePdm      ( TComDataCU* pcCU, TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, Int iRefIdx0, Int iRefIdx1, UInt uiPartAddr, Int iWidth, Int iHeight, TComYuv*& rpcYuvDst, UInt uiSubSampExpX, UInt uiSubSampExpY );
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibCommon/TComRdCost.h

    r100 r193  
    377377  Bool                    m_bUseEstimatedVSD;
    378378#endif
     379#if LGE_WVSO_A0119
     380  Int                     m_iDWeight;
     381  Int                     m_iVSOWeight;
     382  Int                     m_iVSDWeight;
     383  Bool                    m_bUseWVSO;
     384#endif
    379385
    380386  Bool                    m_bUseVSO;
     
    410416  Void    setVSOMode( UInt uiIn);
    411417  UInt    getVSOMode( )                  { return m_uiVSOMode; }
    412 
     418#if LGE_WVSO_A0119
     419  Void    setUseWVSO ( Bool bIn )         { m_bUseWVSO = bIn; };
     420  Bool    getUseWVSO ( )                  { return m_bUseWVSO;};
     421  Void    setDWeight   ( Int iDWeight   ) { m_iDWeight = iDWeight; };
     422  Int     getDWeight   ()                 { return m_iDWeight; };
     423  Void    setVSOWeight ( Int iVSOWeight ) { m_iVSOWeight = iVSOWeight; };
     424  Int     getVSOWeight ()                 { return m_iVSOWeight; };
     425  Void    setVSDWeight ( Int iVSDWeight ) { m_iVSDWeight = iVSDWeight; };
     426  Int     getVSDWeight ()                 { return m_iVSDWeight; };
     427#endif
    413428#if HHI_VSO_DIST_INT
    414429  Void    setAllowNegDist ( Bool bAllowNegDist );
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibCommon/TComSlice.cpp

    r166 r193  
    112112, m_iViewOrderIdx                 ( 0 )
    113113#endif
     114#if VSP_CFG
     115, m_uiNumVspRefPics               ( 0 )
     116#endif
    114117{
    115118  m_aiNumRefIdx[0] = m_aiNumRefIdx[1] = m_aiNumRefIdx[2] = 0;
     
    146149#if VSP_SLICE_HEADER
    147150  m_bVspFlag = false;
     151#if VSP_CFG
     152  memset( m_uiVspRefPos[0], 0, sizeof(UInt)*MAX_NUM_REF_PICS );
     153  memset( m_uiVspRefPos[1], 0, sizeof(UInt)*MAX_NUM_REF_PICS );
     154#else
     155  m_bVspDepthDisableFlag = false;
     156#endif
    148157#endif
    149158}
     
    195204#if VSP_SLICE_HEADER
    196205  m_bVspFlag = false;
     206#if VSP_CFG
     207  m_uiNumVspRefPics = 0;
     208  memset( m_uiVspRefPos[0], 0, sizeof(UInt)*MAX_NUM_REF_PICS );
     209  memset( m_uiVspRefPos[1], 0, sizeof(UInt)*MAX_NUM_REF_PICS );
     210#else
     211  m_bVspDepthDisableFlag = false;
     212#endif
    197213#endif
    198214
     
    544560  }
    545561
     562#if VSP_CFG
     563  UInt cIdxTmp;
     564  for( cIdx = 0, cIdxTmp = 0; cIdx <= num_ref_idx_l0_active_minus1; cIdx ++ )
     565#else
    546566  for( cIdx = 0; cIdx <= num_ref_idx_l0_active_minus1; cIdx ++ )
     567#endif
    547568  {
    548569#if VSP_N
     570#if VSP_CFG
     571    Int iVspRefPos = getVspRefPos(REF_PIC_LIST_0, 0);
     572    iVspRefPos = ( iVspRefPos > 0 ? iVspRefPos - 1 : -1 );
     573    if( pcVspPic && iVspRefPos != -1 && cIdx == (iVspRefPos >= num_ref_idx_l0_active_minus1 ? num_ref_idx_l0_active_minus1 : iVspRefPos) )
     574#else
    549575    if( pcVspPic && cIdx == num_ref_idx_l0_active_minus1 )
     576#endif
    550577    {
    551578      m_apcRefPicList[0][cIdx] = RefPicSetVspCurr[0];
     
    555582    }
    556583    else
     584    {
     585#if VSP_CFG
     586      m_apcRefPicList[0][cIdx] = m_RefPicListModification.getRefPicListModificationFlagL0() ? refPicListTemp0[ m_RefPicListModification.getRefPicSetIdxL0(cIdxTmp) ] : refPicListTemp0[cIdxTmp];
     587      cIdxTmp++;
     588#else
    557589      m_apcRefPicList[0][cIdx] = m_RefPicListModification.getRefPicListModificationFlagL0() ? refPicListTemp0[ m_RefPicListModification.getRefPicSetIdxL0(cIdx) ] : refPicListTemp0[cIdx];
     590#endif
     591    }
    558592#else
    559593    m_apcRefPicList[0][cIdx] = m_RefPicListModification.getRefPicListModificationFlagL0() ? refPicListTemp0[ m_RefPicListModification.getRefPicSetIdxL0(cIdx) ] : refPicListTemp0[cIdx];
     
    567601  else
    568602  {
     603#if VSP_CFG
     604    for( cIdx = 0, cIdxTmp = 0; cIdx <= num_ref_idx_l1_active_minus1; cIdx ++ )
     605#else
    569606    for( cIdx = 0; cIdx <= num_ref_idx_l1_active_minus1; cIdx ++ )
     607#endif
    570608    {
    571609#if VSP_N
     610#if VSP_CFG
     611      Int iVspRefPos = getVspRefPos(REF_PIC_LIST_1, 0);
     612      iVspRefPos = ( iVspRefPos > 0 ? iVspRefPos - 1 : -1 );
     613      if( pcVspPic && iVspRefPos != -1 && cIdx == (iVspRefPos >= num_ref_idx_l1_active_minus1 ? num_ref_idx_l1_active_minus1 : iVspRefPos) )
     614#else
    572615      if( pcVspPic && cIdx == num_ref_idx_l1_active_minus1 )
     616#endif
    573617      {
    574618        m_apcRefPicList[1][cIdx] = RefPicSetVspCurr[0];
     
    578622      }
    579623      else
     624      {
     625#if VSP_CFG
     626        m_apcRefPicList[1][cIdx] = m_RefPicListModification.getRefPicListModificationFlagL1() ? refPicListTemp1[ m_RefPicListModification.getRefPicSetIdxL1(cIdxTmp) ] : refPicListTemp1[cIdxTmp];
     627        cIdxTmp++;
     628#else
    580629        m_apcRefPicList[1][cIdx] = m_RefPicListModification.getRefPicListModificationFlagL1() ? refPicListTemp1[ m_RefPicListModification.getRefPicSetIdxL1(cIdx) ] : refPicListTemp1[cIdx];
     630#endif
     631      }
    581632#else
    582633      m_apcRefPicList[1][cIdx] = m_RefPicListModification.getRefPicListModificationFlagL1() ? refPicListTemp1[ m_RefPicListModification.getRefPicSetIdxL1(cIdx) ] : refPicListTemp1[cIdx];
     
    15011552#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
    15021553, m_bUseDMM                   (false)
     1554#endif
     1555#if OL_DEPTHLIMIT_A0044
     1556, m_bDepthPartitionLimiting   (false)
     1557#endif
     1558#if VSP_N
     1559, m_bVspPresentFlag           (false)
     1560#if VSP_CFG
     1561, m_bVspDepthPresentFlag      (false)
     1562#endif
    15031563#endif
    15041564{
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibCommon/TComSlice.h

    r166 r193  
    4545#include "TComRom.h"
    4646#include "TComList.h"
     47
    4748//! \ingroup TLibCommon
    4849//! \{
     
    353354#endif
    354355
     356#if OL_DEPTHLIMIT_A0044
     357  Bool m_bDepthPartitionLimiting;
     358#endif
     359
    355360#if DEPTH_MAP_GENERATION
    356361  UInt  m_uiPredDepthMapGeneration;
     
    372377#if HHI_INTER_VIEW_RESIDUAL_PRED
    373378  TComResidualGenerator* m_pcResidualGenerator;
     379#endif
     380
     381#if VSP_N
     382  Bool  m_bVspPresentFlag;
     383#if VSP_CFG
     384  Bool  m_bVspDepthPresentFlag;
     385#endif
    374386#endif
    375387
     
    618630#endif
    619631
     632#if OL_DEPTHLIMIT_A0044
     633  Void setUseDPL(Bool b) {m_bDepthPartitionLimiting = b; }
     634  Bool getUseDPL()       {return m_bDepthPartitionLimiting;}
     635#endif
     636
    620637  Void initMultiviewSPS      ( UInt uiViewId, Int iViewOrderIdx = 0, UInt uiCamParPrecision = 0, Bool bCamParSlice = false, Int** aaiScale = 0, Int** aaiOffset = 0 );
    621638  Void initMultiviewSPSDepth ( UInt uiViewId, Int iViewOrderIdx );
     
    660677  Void                    setResidualGenerator( TComResidualGenerator* pcResidualGenerator )  { m_pcResidualGenerator = pcResidualGenerator; }
    661678  TComResidualGenerator*  getResidualGenerator()                                              { return m_pcResidualGenerator; }
     679#endif
     680
     681#if VSP_N
     682  Void  setVspPresentFlag( Bool b ) { m_bVspPresentFlag = b; }
     683  Bool  getVspPresentFlag()         { return m_bVspPresentFlag; }
     684#if VSP_CFG
     685  Void  setVspDepthPresentFlag( Bool b ) { m_bVspDepthPresentFlag = b; }
     686  Bool  getVspDepthPresentFlag()         { return m_bVspDepthPresentFlag; }
     687#endif
    662688#endif
    663689};
     
    12771303#if VSP_SLICE_HEADER
    12781304  Bool      m_bVspFlag;
     1305#if VSP_CFG
     1306  UInt      m_uiNumVspRefPics;
     1307  UInt      m_uiVspRefPos[2][MAX_NUM_REF_PICS];
     1308#else
     1309  Bool      m_bVspDepthDisableFlag;
     1310#endif
    12791311#endif
    12801312
     
    15841616  Void      setVspFlag          ( Bool val )    { m_bVspFlag = val; }
    15851617  Bool      getVspFlag          ()              { return m_bVspFlag; }
     1618#if VSP_CFG
     1619  Void      setNumVspRefPics( UInt val )        { m_uiNumVspRefPics = val; }
     1620  UInt      getNumVspRefPics()                  { return m_uiNumVspRefPics; }
     1621  Void      setVspRefPos( UInt dir, UInt idx, UInt val )  { m_uiVspRefPos[dir][idx] = val; }
     1622  UInt      getVspRefPos( UInt dir, UInt idx )            { return m_uiVspRefPos[dir][idx]; }
     1623#else
     1624  Void      setVspDepthDisableFlag( Bool val )  { m_bVspDepthDisableFlag = val; }
     1625  Bool      getVspDepthDisableFlag()            { return m_bVspDepthDisableFlag; }
     1626#endif
    15861627#endif
    15871628
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibCommon/TComWedgelet.h

    r56 r193  
    198198  static UInt xGetSAD16         ( WedgeDistParam* pcDtParam );
    199199  static UInt xGetSAD32         ( WedgeDistParam* pcDtParam );
    200   //static UInt xGetSAD64         ( WedgeDistParam* pcDtParam );
    201200
    202201  static UInt xGetSSE4          ( WedgeDistParam* pcDtParam );
     
    204203  static UInt xGetSSE16         ( WedgeDistParam* pcDtParam );
    205204  static UInt xGetSSE32         ( WedgeDistParam* pcDtParam );
    206   //static UInt xGetSSE64         ( WedgeDistParam* pcDtParam );
    207205
    208206};// END CLASS DEFINITION TComWedgeDist
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibCommon/TComYuv.h

    r166 r193  
    213213
    214214  __inline Pel  xClip  (Pel x )      { return ( (x < 0) ? 0 : (x > (Pel)g_uiIBDI_MAX) ? (Pel)g_uiIBDI_MAX : x ); }
    215 
    216 #if DEBUGIMGOUT
    217 public:
    218   Void colsetToPicYuv   ( const UChar ucColor[3],                 Int iOffset[2][2], TComPicYuv* pcPicYuvDst, UInt iCuAddr, UInt uiAbsZorderIdx, UInt uiPartDepth = 0, UInt uiPartIdx = 0 );
    219   Void colsetToPicLuma  ( const UChar ucLumaOffCol,               Int iOffset[2][2], TComPicYuv* pcPicYuvDst, UInt iCuAddr, UInt uiAbsZorderIdx, UInt uiPartDepth = 0, UInt uiPartIdx = 0 );
    220   Void colsetToPicChroma( const UChar ucUCol, const UChar ucVCol, Int iOffset[2][2], TComPicYuv* pcPicYuvDst, UInt iCuAddr, UInt uiAbsZorderIdx, UInt uiPartDepth = 0, UInt uiPartIdx = 0 );
    221   Void drawLineToPicYuv ( bool bHor, bool bVer, UInt uiSize,      TComPicYuv* pcPicYuvDst, UInt iCuAddr, UInt uiAbsZorderIdx, UInt uiPartDepth = 0, UInt uiPartIdx = 0 );
    222 #endif
    223 
    224215};// END CLASS DEFINITION TComYuv
    225216
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibCommon/TypeDef.h

    r166 r193  
    4444#define VSP_N                             1
    4545#if VSP_N
    46 #define VSP_TEXT_ONLY                     1
    47 #define NUM_VIEW_VSP                      99
     46#define VSP_BUGFIX                        1
    4847#define VSP_N_DUMP                        0
    4948#define FORCE_REF_VSP                     2   // 0=NotUseVSPSKIP 1:VSPSKIPforFlag 2:VSPSKIPforMergeIdx
    50 #define VSP_MV_ZERO                       0   // use zero vector for VSP
     49#define VSP_MV_ZERO                       1   // use zero vector for VSP
    5150#if VSP_MV_ZERO
    5251#define AMVP_VSP_UNAVAILABLE              1
     
    5453#define VSP_MERGE_POS                     5   // position of vsp in merge list (0..5)
    5554#define NTT_SUBPEL                        1
    56 #endif
    57 #define DEBUGIMGOUT                       0   //Debug YUVImage Out
    58 #define DEBUGLOGOUT                       0   //Debug Log Out
     55#define VSP_CFG                           1
     56#endif
    5957
    6058#define VSP_SLICE_HEADER                  1
     59#if !VSP_CFG
    6160#define VSP_FRAME_INTERVAL                2
     61#endif
    6262
    6363#define FIXES                             1
     
    6666#define FIX_INIT_ROM                      1
    6767#define FIX_VIRT_DESTRUCTOR               1
    68 #define FIX_DBL_CONTROL_DEFAULT           1
     68#define FIX_MEM_LEAKS                     1
     69#define FIX_VSO_SETUP                     1
     70#define FIX_COMP_WARNING_INIT             1
    6971#define FIX_RDO_MACRO                     1
    7072#define FIX_LG_RESTRICTEDRESPRED_M24766   1
     73#define FIX_REMOVE_TILE_DEPENDENCE        1
     74#define FIX_DBL_CONTROL_DEFAULT           1
    7175
    7276
     
    116120#define SAIT_VSO_EST_A0033                1 // JCT2-A0033 modification 3
    117121#define LGE_VSO_EARLY_SKIP_A0093          1 // JCT2-A0093 modification 4
    118 
     122#define LGE_WVSO_A0119                    1 // JCT2-A0119 Depth Metric with a weighted depth fidelity term
     123
     124#define OL_DEPTHLIMIT_A0044               1 //JCT2-A0044
     125#if OL_DEPTHLIMIT_A0044
     126#define OL_DO_NOT_LIMIT_INTRA_SLICES_PART 1 //Turn this on to not perform depth limiting for I-SLICES.
     127#define OL_END_CU                         MAX_INT //Default for initializing the partition information buffer
     128#define OL_PART_BUF_SIZE                  86 //maximum number of possible partition bits in a CU
     129#endif
    119130
    120131#define HHI_INTERVIEW_SKIP                1
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r166 r193  
    17571757      }
    17581758    }
     1759#if VSP_N
     1760    if( pcSPS->getViewId() )
     1761    {
     1762      READ_FLAG( uiCode, "vsp_present_flag" );
     1763      pcSPS->setVspPresentFlag( (Bool)uiCode );
     1764#if VSP_CFG
     1765      if( pcSPS->getVspPresentFlag() )
     1766      {
     1767        READ_FLAG( uiCode, "vsp_depth_present_flag" );
     1768        pcSPS->setVspDepthPresentFlag( (Bool)uiCode );
     1769      }
     1770#endif
     1771    }
     1772#endif
    17591773    READ_FLAG( uiCode, "sps_extension2_flag");
    17601774    if (uiCode)
     
    17811795  UInt  uiCode;
    17821796  Int   iCode;
    1783  
     1797#if VSP_CFG
     1798  Int   iNumOfVspRefsL0 = 0;
     1799  Int   iNumOfVspRefsL1 = 0;
     1800#endif
    17841801#if ENC_DEC_TRACE
    17851802  xTraceSliceHeader(rpcSlice);
     
    20062023      READ_UVLC (    uiCode, "aps_id" );  rpcSlice->setAPSId(uiCode);
    20072024    }
     2025
     2026#if VSP_SLICE_HEADER && VSP_CFG
     2027    if( rpcSlice->getSPS()->getViewId()!=0
     2028     && rpcSlice->getSliceType() != I_SLICE
     2029     && rpcSlice->getSPS()->getVspPresentFlag()
     2030      )
     2031    {
     2032      if( !rpcSlice->getSPS()->isDepth() || rpcSlice->getSPS()->getVspDepthPresentFlag() )
     2033      {
     2034        READ_UVLC( uiCode, "num_vsp_ref_pics");
     2035        rpcSlice->setVspFlag( uiCode > 0 ? true : false );
     2036        rpcSlice->setNumVspRefPics( uiCode );
     2037        //printf("SH:num_vsp_ref_pics(%d)\n",uiCode);
     2038        for( UInt i = 0; i < rpcSlice->getNumVspRefPics(); i++ )
     2039        {
     2040          READ_UVLC( uiCode, "vsp_ref_list0_pos");
     2041          rpcSlice->setVspRefPos( REF_PIC_LIST_0, i, uiCode );
     2042          //printf("SH:vsp_ref_list0_pos(%d)\n",uiCode);
     2043          if( rpcSlice->getSliceType() == B_SLICE )
     2044          {
     2045            READ_UVLC( uiCode, "vsp_ref_list1_pos");
     2046            rpcSlice->setVspRefPos( REF_PIC_LIST_1, i, uiCode );
     2047            //printf("SH:vsp_ref_list1_pos(%d)\n",uiCode);
     2048          }
     2049        }
     2050        iNumOfVspRefsL0 = ( (rpcSlice->getSPS()->getViewId()==0
     2051                         || (!rpcSlice->getSPS()->getVspDepthPresentFlag() && rpcSlice->getSPS()->isDepth())
     2052                         || !rpcSlice->getVspFlag()
     2053                         || rpcSlice->getVspRefPos(REF_PIC_LIST_0, 0) == 0 ) ? 0 : 1 );
     2054        iNumOfVspRefsL1 = ( (rpcSlice->getSPS()->getViewId()==0
     2055                         || (!rpcSlice->getSPS()->getVspDepthPresentFlag() && rpcSlice->getSPS()->isDepth())
     2056                         || !rpcSlice->getVspFlag()
     2057                         || rpcSlice->getVspRefPos(REF_PIC_LIST_1, 0) == 0 ) ? 0 : 1 );
     2058      }
     2059    }
     2060#endif
     2061
    20082062    if (!rpcSlice->isIntra())
    20092063    {
     
    20112065      if (uiCode)
    20122066      {
    2013         READ_CODE (3, uiCode, "num_ref_idx_l0_active_minus1" );  rpcSlice->setNumRefIdx( REF_PIC_LIST_0, uiCode + 1 );
     2067        READ_CODE (3, uiCode, "num_ref_idx_l0_active_minus1" ); 
     2068#if VSP_CFG
     2069        rpcSlice->setNumRefIdx( REF_PIC_LIST_0, uiCode + 1 + iNumOfVspRefsL0 );
     2070#else
     2071        rpcSlice->setNumRefIdx( REF_PIC_LIST_0, uiCode + 1 );
     2072#endif
    20142073        if (rpcSlice->isInterB())
    20152074        {
    2016           READ_CODE (3, uiCode, "num_ref_idx_l1_active_minus1" );  rpcSlice->setNumRefIdx( REF_PIC_LIST_1, uiCode + 1 );
     2075          READ_CODE (3, uiCode, "num_ref_idx_l1_active_minus1" ); 
     2076#if VSP_CFG
     2077          rpcSlice->setNumRefIdx( REF_PIC_LIST_1, uiCode + 1 + iNumOfVspRefsL1 );
     2078#else
     2079          rpcSlice->setNumRefIdx( REF_PIC_LIST_1, uiCode + 1 );
     2080#endif
    20172081        }
    20182082        else
     
    21832247    if(uiCode)
    21842248    {
    2185       READ_UVLC( uiCode, "num_ref_idx_lc_active_minus1" );      rpcSlice->setNumRefIdx( REF_PIC_LIST_C, uiCode + 1 );
     2249      READ_UVLC( uiCode, "num_ref_idx_lc_active_minus1" );     
     2250#if VSP_CFG
     2251      rpcSlice->setNumRefIdx( REF_PIC_LIST_C, uiCode + 1 + iNumOfVspRefsL0 );
     2252#else
     2253      rpcSlice->setNumRefIdx( REF_PIC_LIST_C, uiCode + 1 );
     2254#endif
    21862255     
    21872256#if H0412_REF_PIC_LIST_RESTRICTION
     
    23482417#endif
    23492418
     2419#if !VSP_CFG
    23502420#if VSP_SLICE_HEADER
    23512421  if( rpcSlice->getSPS()->getViewId()!=0
    2352 #if VSP_TEXT_ONLY
    2353       && !(rpcSlice->getSPS()->isDepth())
    2354 #endif
     2422   && rpcSlice->getSPS()->getVspPresentFlag()
    23552423    )
    23562424  {
    23572425    READ_FLAG( uiCode, "vsp_flag" );
    23582426    rpcSlice->setVspFlag( uiCode ? true : false );
    2359   }
     2427    if( rpcSlice->getVspFlag() )
     2428    {
     2429      READ_FLAG( uiCode, "vsp_depth_disable_flag" );
     2430      rpcSlice->setVspDepthDisableFlag( uiCode ? true : false );
     2431    }
     2432  }
     2433#endif
    23602434#endif
    23612435
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibDecoder/TDecCu.cpp

    r166 r193  
    351351#if FORCE_REF_VSP==1
    352352    if( pcCU->isSkipped(uiAbsPartIdx) && pcCU->getSlice()->getViewId() != 0 )
    353 #if VSP_TEXT_ONLY
    354     if( !pcCU->getSlice()->getSPS()->isDepth() )
     353#if VSP_CFG
     354    if( pcCU->getSlice()->getSPS()->getVspDepthPresentFlag() || !pcCU->getSlice()->getSPS()->isDepth() )
     355#else
     356    if( !pcCU->getSlice()->getVspDepthDisableFlag() || !pcCU->getSlice()->getSPS()->isDepth() )
    355357#endif
    356358    {
     
    385387    if( pcCU->getTextureModeDepth( uiAbsPartIdx ) == uiDepth )
    386388    {
    387 #if DEBUGLOGOUT
    388       PredMode   eOrgPred = pcCU->getPredictionMode( uiAbsPartIdx );
    389 #endif
    390389      TComDataCU *pcTextureCU = pcCU->getSlice()->getTexturePic()->getCU( pcCU->getAddr() );
    391390      pcCU->copyTextureMotionDataFrom( pcTextureCU, uiDepth, pcCU->getZorderIdxInCU() + uiAbsPartIdx, uiAbsPartIdx );
    392 #if DEBUGLOGOUT
    393       if( eOrgPred == MODE_SKIP )
    394         pcCU->setPredModeSubParts( MODE_SKIP, uiAbsPartIdx, uiDepth );
    395       m_cDebug.DebugLogOut( pcCU, uiAbsPartIdx, uiDepth );
    396 #endif
    397391
    398392      UInt uiCurrPartNumb = pcCU->getPic()->getNumPartInCU() >> (uiDepth << 1);
     
    437431#endif
    438432    xFinishDecodeCU( pcCU, uiAbsPartIdx, uiDepth, ruiIsLast );
    439 #if DEBUGLOGOUT
    440 #if HHI_MPI
    441     if( pcCU->getTextureModeDepth( uiAbsPartIdx ) != uiDepth )
    442 #endif
    443       m_cDebug.DebugLogOut( pcCU, uiAbsPartIdx, uiDepth );
    444 #endif
    445433    return;
    446434  }
     
    472460
    473461    xFinishDecodeCU( pcCU, uiAbsPartIdx, uiDepth, ruiIsLast );
    474 #if DEBUGLOGOUT
    475     m_cDebug.DebugLogOut( pcCU, uiAbsPartIdx, uiDepth );
    476 #endif
    477462    return;
    478463  }
     
    508493    {
    509494      xFinishDecodeCU( pcCU, uiAbsPartIdx, uiDepth, ruiIsLast );
    510 #if DEBUGLOGOUT
    511       m_cDebug.DebugLogOut( pcCU, uiAbsPartIdx, uiDepth );
    512 #endif
    513495      return;
    514496    }
     
    610592  setdQPFlag( bCodeDQP );
    611593  xFinishDecodeCU( pcCU, uiAbsPartIdx, uiDepth, ruiIsLast );
    612 #if DEBUGLOGOUT
    613   m_cDebug.DebugLogOut( pcCU, uiAbsPartIdx, uiDepth );
    614 #endif
    615594}
    616595
     
    710689 
    711690  xCopyToPic( m_ppcCU[uiDepth], pcPic, uiAbsPartIdx, uiDepth );
    712 #if DEBUGIMGOUT
    713   xColsetToPicMerge( m_ppcCU[uiDepth], pcPic->getPicYuvRecDbg(), uiAbsPartIdx, uiDepth );
    714 #endif
    715691}
    716692
     
    724700  // inter prediction
    725701  m_pcPrediction->motionCompensation( pcCU, m_ppcYuvReco[uiDepth] );
     702
    726703#if HHI_MPI
    727704  if( pcCU->getTextureModeDepth( 0 ) != -1 )
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibDecoder/TDecCu.h

    r166 r193  
    4646#include "TLibCommon/TComPrediction.h"
    4747#include "TDecEntropy.h"
    48 #if DEBUGIMGOUT || DEBUGLOGOUT
    49 #include "TLibCommon/DebugLog.h"
    50 #endif
    5148
    5249//! \ingroup TLibDecoder
     
    8481  virtual ~TDecCu();
    8582 
    86 #if DEBUGLOGOUT
    87   DebugLog            m_cDebug;
    88 #endif
    89 
    9083  /// initialize access channels
    9184  Void  init                    ( TDecEntropy* pcEntropyDecoder, TComTrQuant* pcTrQuant, TComPrediction* pcPrediction );
     
    132125  Void xFillPCMBuffer           (TComDataCU* pCU, UInt absPartIdx, UInt depth);
    133126#endif
    134 #if DEBUGIMGOUT
    135   Void xColsetToPic             ( TComDataCU* pcCU, TComPicYuv* pcPicYuv, UInt uiZorderIdx, UInt uiDepth );
    136   Void xColsetToPicMerge        ( TComDataCU* pcCU, TComPicYuv* pcPicYuv, UInt uiZorderIdx, UInt uiDepth );
    137 #endif
    138127};
    139128
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibDecoder/TDecEntropy.cpp

    r166 r193  
    310310#if VSP_MV_ZERO
    311311          Int iRefIdx = pcCU->getCUMvField( RefPicList( uiRefListIdx ) )->getRefIdx(uiSubPartIdx);
    312           if( pcCU->getSlice()->getViewId() && iRefIdx >= 0 && (pcCU->getSlice()->getRefViewId( RefPicList( uiRefListIdx ), iRefIdx ) == NUM_VIEW_VSP) )
     312          if( pcCU->getSlice()->getViewId() && iRefIdx >= 0 && pcCU->isVspRef( RefPicList( uiRefListIdx ), iRefIdx ) )
    313313          {
    314314            pcCU->getCUMvField( RefPicList( uiRefListIdx ) )->setAllMvd( TComMv(0, 0), pcCU->getPartitionSize( uiSubPartIdx ), uiSubPartIdx, uiDepth, uiPartIdx );
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibDecoder/TDecGop.cpp

    r100 r193  
    463463          printf( "V%d ", pcSlice->getRefViewId( RefPicList(iRefList), iRefIndex ) );
    464464        }
     465#if VSP_CFG
     466        else if( pcSlice->getViewId() == pcSlice->getRefViewId( RefPicList(iRefList), iRefIndex )
     467              && pcSlice->getPOC()    == pcSlice->getRefPOC( RefPicList(iRefList), iRefIndex ) )
     468        {
     469          printf( "VS " );
     470        }
     471#endif
    465472        else
    466473        {
     
    479486          printf( "V%d ", pcSlice->getRefViewId( (RefPicList)pcSlice->getListIdFromIdxOfLC(iRefIndex), pcSlice->getRefIdxFromIdxOfLC(iRefIndex) ) );
    480487        }
     488#if VSP_CFG
     489        else if( pcSlice->getViewId() == pcSlice->getRefViewId( (RefPicList)pcSlice->getListIdFromIdxOfLC(iRefIndex), pcSlice->getRefIdxFromIdxOfLC(iRefIndex) )
     490              && pcSlice->getPOC()    == pcSlice->getRefPOC( (RefPicList)pcSlice->getListIdFromIdxOfLC(iRefIndex), pcSlice->getRefIdxFromIdxOfLC(iRefIndex) ) )
     491        {
     492          printf( "VS " );
     493        }
     494#endif
    481495        else
    482496        {
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibDecoder/TDecSbac.cpp

    r166 r193  
    636636  uiNumCand = pcCU->getSlice()->getMaxNumMergeCand();
    637637#if HHI_MPI
    638 #if VSP_TEXT_ONLY
     638#if VSP_N
    639639  TComDataCU* pcTextCU = pcCU->getSlice()->getSPS()->getUseMVI() ? pcCU->getSlice()->getTexturePic()->getCU( pcCU->getAddr() ) : NULL;
    640640  Int aiRefIdxVsp[2] = { pcTextCU ? pcTextCU->getCUMvField( RefPicList(0) )->getRefIdx( uiAbsPartIdx ) : -1,
    641641                         pcTextCU ? pcTextCU->getCUMvField( RefPicList(1) )->getRefIdx( uiAbsPartIdx ) : -1 };
    642   const Bool bMVIAvailable = pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE
    643     && !( aiRefIdxVsp[0] >= 0 && pcTextCU->getSlice()->getRefViewId( RefPicList(0), aiRefIdxVsp[0] ) == NUM_VIEW_VSP )
    644     && !( aiRefIdxVsp[1] >= 0 && pcTextCU->getSlice()->getRefViewId( RefPicList(1), aiRefIdxVsp[1] ) == NUM_VIEW_VSP );
    645 #else
    646   const Bool bMVIAvailable = pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE;
     642#if VSP_CFG
     643  const Bool bMVIAvailable = (pcCU->getSlice()->getSPS()->getVspDepthPresentFlag() || pcCU->getSlice()->getViewId()==0)
     644                                ? pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE
     645                                : pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE
     646                                  && !( aiRefIdxVsp[0] >= pcCU->getSlice()->getNumRefIdx( RefPicList(0) ) )
     647                                  && !( aiRefIdxVsp[1] >= pcCU->getSlice()->getNumRefIdx( RefPicList(1) ) );
     648#else
     649  const Bool bMVIAvailable = pcCU->getSlice()->getVspDepthDisableFlag() ? pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE
     650                                                                          && !( aiRefIdxVsp[0] >= 0 && pcTextCU->isVspRef( RefPicList(0), aiRefIdxVsp[0] ) )
     651                                                                          && !( aiRefIdxVsp[1] >= 0 && pcTextCU->isVspRef( RefPicList(1), aiRefIdxVsp[1] ) )
     652                                                                        : pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE;
     653#endif
    647654#endif
    648655  const UInt uiMviMergePos = bMVIAvailable ? HHI_MPI_MERGE_POS : uiNumCand;
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibDecoder/TDecSlice.cpp

    r166 r193  
    102102  rpcPic->setPicYuvResi( 0 );
    103103 
    104 #if DEBUGLOGOUT
    105   char fname[128];
    106   sprintf(fname, "%sV%02d_%05d%s.csv", "DecLog", rpcPic->getSlice(0)->getViewId(), rpcPic->getPOC(), rpcPic->getSlice(0)->getIsDepth() ? "depth":"text");
    107   m_pcCuDecoder->m_cDebug.DebugLogFileOpen( fname );
    108 #endif
    109104#if ENC_DEC_TRACE
    110105  g_bJustDoIt = g_bEncDecTraceEnable;
     
    444439#endif
    445440  }
    446 #if DEBUGLOGOUT
    447   m_pcCuDecoder->m_cDebug.DebugLogFileClose();
    448 #endif
    449441
    450442}
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibDecoder/TDecTop.cpp

    r166 r193  
    541541  }
    542542#endif
    543 
    544543}
    545544
     
    986985        m_pcPicVSP->create( m_apcSlicePilot->getSPS()->getPicWidthInLumaSamples(), m_apcSlicePilot->getSPS()->getPicHeightInLumaSamples(), g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth );
    987986        m_pcPicVSP->setCurrSliceIdx(0);
    988         m_pcPicVSP->getCurrSlice()->setViewId( NUM_VIEW_VSP );
    989987        m_pcPicVSP->getCurrSlice()->setViewOrderIdx( m_apcSlicePilot->getSPS()->getViewOrderIdx() );
    990988        m_pcPicVSP->getCurrSlice()->setSPS( m_apcSlicePilot->getSPS() );
     
    10131011        m_pcPicAvail->create( m_apcSlicePilot->getSPS()->getPicWidthInLumaSamples(), m_apcSlicePilot->getSPS()->getPicHeightInLumaSamples(), g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth );
    10141012        m_pcPicAvail->setCurrSliceIdx(0);
    1015         m_pcPicAvail->getCurrSlice()->setViewId( 99 );
    10161013        m_pcPicAvail->getCurrSlice()->setViewOrderIdx( m_apcSlicePilot->getSPS()->getViewOrderIdx() );
    10171014        m_pcPicAvail->getCurrSlice()->setSPS( m_apcSlicePilot->getSPS() );
     
    13021299#if VSP_N
    13031300    Bool bUseVsp = (m_viewId!=0);
    1304 #if VSP_TEXT_ONLY
    1305     if( m_isDepth ) bUseVsp = false;
     1301#if VSP_CFG
     1302    if( !pcSlice->getSPS()->getVspDepthPresentFlag() && m_isDepth ) bUseVsp = false;
     1303#else
     1304    if( pcSlice->getVspDepthDisableFlag() && m_isDepth ) bUseVsp = false;
    13061305#endif
    13071306#if VSP_SLICE_HEADER
     
    13121311    if( bUseVsp )
    13131312#endif
     1313    {
    13141314      m_pcPicVSP->getCurrSlice()->setPOC( pcPic->getPOC() );
     1315      m_pcPicVSP->getCurrSlice()->setViewId( pcPic->getViewId() );
     1316    }
    13151317
    13161318    pcSlice->setRefPicListMvc( m_cListPic, apcInterViewRefPics, bUseVsp ? m_pcPicVSP : NULL );
     
    14231425  if( getTAppDecTop()->getUseDepth() )
    14241426  {
    1425     getTAppDecTop()->storeVSPInBuffer( m_pcPicVSP, m_pcPicAvail, pcSlice->getViewId(), pcSlice->getSPS()->getViewOrderIdx(), pcSlice->getPOC(), m_isDepth );
     1427#if VSP_CFG
     1428    if( pcSlice->getSPS()->getVspDepthPresentFlag() || !m_isDepth )
     1429#else
     1430    if( !pcSlice->getVspDepthDisableFlag() || !m_isDepth )
     1431#endif
     1432      getTAppDecTop()->storeVSPInBuffer( m_pcPicVSP, m_pcPicAvail, pcSlice->getViewId(), pcSlice->getSPS()->getViewOrderIdx(), pcSlice->getPOC(), m_isDepth );
     1433#if VSP_N_DUMP
     1434    if( m_pcPicVSP && pcSlice->getViewId() != 0 && pcSlice->getNumRefIdx(REF_PIC_LIST_0)!=0){
     1435        Char acFilenameBase[1024];
     1436        ::sprintf(acFilenameBase,"ref_dec_%sv%d_%04d.yuv",(m_isDepth?"D":"T"),pcSlice->getViewId(), pcSlice->getPOC());
     1437        pcSlice->getRefPic(REF_PIC_LIST_0, pcSlice->getNumRefIdx(REF_PIC_LIST_0)-1)->getPicYuvRec()->dump(acFilenameBase,0);
     1438    }
     1439#endif
    14261440  }
    14271441#endif
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibEncoder/TEncCavlc.cpp

    r166 r193  
    695695    WRITE_FLAG( 1, "base_view_flag" );   
    696696  }
     697#if VSP_N
     698  if( pcSPS->getViewId() )
     699  {
     700    WRITE_FLAG( pcSPS->getVspPresentFlag(), "vsp_present_flag" );
     701#if VSP_CFG
     702    if( pcSPS->getVspPresentFlag() )
     703    {
     704      WRITE_FLAG( pcSPS->getVspDepthPresentFlag(), "vsp_depth_present_flag" );
     705    }
     706#endif
     707  }
     708#endif
    697709  WRITE_FLAG( 0, "sps_extension2_flag" );
    698710}
     
    707719#if ENC_DEC_TRACE 
    708720  xTraceSliceHeader (pcSlice);
     721#endif
     722
     723#if VSP_CFG
     724  Int iNumOfVspRefsL0 = 0;
     725  Int iNumOfVspRefsL1 = 0;
    709726#endif
    710727
     
    949966    }
    950967
     968#if VSP_SLICE_HEADER && VSP_CFG
     969    if( pcSlice->getSPS()->getViewId()!=0
     970     && pcSlice->getSliceType() != I_SLICE
     971     && pcSlice->getSPS()->getVspPresentFlag()
     972      )
     973    {
     974      if( !pcSlice->getSPS()->isDepth() || pcSlice->getSPS()->getVspDepthPresentFlag() )
     975      {
     976        WRITE_UVLC( pcSlice->getNumVspRefPics(), "num_vsp_ref_pics");
     977        for( UInt i = 0; i < pcSlice->getNumVspRefPics(); i++ )
     978        {
     979          WRITE_UVLC( pcSlice->getVspRefPos( REF_PIC_LIST_0, i ), "vsp_ref_list0_pos");
     980          if( pcSlice->getSliceType() == B_SLICE )
     981          {
     982            WRITE_UVLC( pcSlice->getVspRefPos( REF_PIC_LIST_1, i ), "vsp_ref_list1_pos");
     983          }
     984        }
     985        iNumOfVspRefsL0 = ( (pcSlice->getSPS()->getViewId()==0
     986                         || (!pcSlice->getSPS()->getVspDepthPresentFlag() && pcSlice->getSPS()->isDepth())
     987                         || !pcSlice->getVspFlag()
     988                         || pcSlice->getVspRefPos(REF_PIC_LIST_0, 0) == 0 ) ? 0 : 1 );
     989        iNumOfVspRefsL1 = ( (pcSlice->getSPS()->getViewId()==0
     990                         || (!pcSlice->getSPS()->getVspDepthPresentFlag() && pcSlice->getSPS()->isDepth())
     991                         || !pcSlice->getVspFlag()
     992                         || pcSlice->getVspRefPos(REF_PIC_LIST_1, 0) == 0 ) ? 0 : 1 );
     993      }
     994    }
     995#endif
     996
    951997    // we always set num_ref_idx_active_override_flag equal to one. this might be done in a more intelligent way
    952998    if (!pcSlice->isIntra())
    953999    {
    9541000      WRITE_FLAG( 1 ,                                             "num_ref_idx_active_override_flag");
     1001#if VSP_CFG
     1002      WRITE_CODE( pcSlice->getNumRefIdx( REF_PIC_LIST_0 ) - 1 - iNumOfVspRefsL0, 3, "num_ref_idx_l0_active_minus1" );
     1003#else
    9551004      WRITE_CODE( pcSlice->getNumRefIdx( REF_PIC_LIST_0 ) - 1, 3, "num_ref_idx_l0_active_minus1" );
     1005#endif
    9561006    }
    9571007    else
     
    9611011    if (pcSlice->isInterB())
    9621012    {
     1013#if VSP_CFG
     1014      WRITE_CODE( pcSlice->getNumRefIdx( REF_PIC_LIST_1 ) - 1 - iNumOfVspRefsL1, 3, "num_ref_idx_l1_active_minus1" );
     1015#else
    9631016      WRITE_CODE( pcSlice->getNumRefIdx( REF_PIC_LIST_1 ) - 1, 3, "num_ref_idx_l1_active_minus1" );
     1017#endif
    9641018    }
    9651019    else
     
    10501104    if(pcSlice->getRefPicListCombinationFlag())
    10511105    {
     1106#if VSP_CFG
     1107      WRITE_UVLC( pcSlice->getNumRefIdx(REF_PIC_LIST_C) - 1 - iNumOfVspRefsL0,          "num_ref_idx lc_active_minus1");
     1108#else
    10521109      WRITE_UVLC( pcSlice->getNumRefIdx(REF_PIC_LIST_C) - 1,          "num_ref_idx lc_active_minus1");
     1110#endif
    10531111     
    10541112#if H0412_REF_PIC_LIST_RESTRICTION
     
    11801238#endif
    11811239
     1240#if !VSP_CFG
    11821241#if VSP_SLICE_HEADER
    11831242  if( pcSlice->getSPS()->getViewId()!=0
    1184 #if VSP_TEXT_ONLY
    1185       && !(pcSlice->getSPS()->isDepth())
    1186 #endif
     1243   && pcSlice->getSPS()->getVspPresentFlag()
    11871244    )
    11881245  {
    11891246    WRITE_FLAG( pcSlice->getVspFlag()?1:0, "vsp_flag" );
    11901247//    printf("[VSP: %d] ", pcSlice->getVspFlag()?1:0);
    1191   }
    1192 #endif
    1193 
     1248    if( pcSlice->getVspFlag() )
     1249    {
     1250      WRITE_FLAG( pcSlice->getVspDepthDisableFlag()?1:0 , "vsp_depth_disable_flag" );
     1251    }
     1252  }
     1253#endif
     1254#endif
    11941255}
    11951256
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibEncoder/TEncCfg.h

    r100 r193  
    6767  Int m_interViewRefPosL0[MAX_NUM_REF_PICS];
    6868  Int m_interViewRefPosL1[MAX_NUM_REF_PICS];
     69#if VSP_CFG
     70  Int m_numVSPRefPics;
     71  Int m_VSPRefPics[MAX_NUM_REF_PICS];
     72  Int m_VSPRefPosL0[MAX_NUM_REF_PICS];
     73  Int m_VSPRefPosL1[MAX_NUM_REF_PICS];
     74#endif
    6975 GOPEntryMvc()
    7076  : m_POC(-1)
     
    8187  , m_numRefIdc()
    8288  , m_numInterViewRefPics()
     89#if VSP_CFG
     90  , m_numVSPRefPics()
     91#endif
    8392  {
    8493    ::memset( m_referencePics, 0, sizeof(m_referencePics) );
     
    8897    ::memset( m_interViewRefPosL0, 0, sizeof(m_interViewRefPosL0) );
    8998    ::memset( m_interViewRefPosL1, 0, sizeof(m_interViewRefPosL1) );
     99#if VSP_CFG
     100    ::memset( m_VSPRefPics,  0, sizeof(m_VSPRefPics) );
     101    ::memset( m_VSPRefPosL0, 0, sizeof(m_VSPRefPosL0) );
     102    ::memset( m_VSPRefPosL1, 0, sizeof(m_VSPRefPosL1) );
     103#endif
    90104  }
    91105};
     
    204218  Double    m_dLambdaScaleVSO;
    205219  UInt      m_uiVSOMode;
     220#if LGE_WVSO_A0119
     221  Bool      m_bUseWVSO;
     222  Int       m_iVSOWeight;
     223  Int       m_iVSDWeight;
     224  Int       m_iDWeight;
     225#endif
    206226#endif
    207227#if SAIT_VSO_EST_A0033
     
    210230#endif
    211231
     232#if VSP_SLICE_HEADER
     233  Bool      m_bUseVSP;
     234  Bool      m_bVSPDepthDisable;
     235#endif
    212236
    213237  //====== Tool list ========
     
    266290  Int       m_iColumnRowInfoPresent;
    267291  Int       m_iUniformSpacingIdr;
     292#if FIX_REMOVE_TILE_DEPENDENCE
     293#else
    268294  Int       m_iTileBoundaryIndependenceIdr;
     295#endif
    269296  Int       m_iNumColumnsMinus1;
    270297  UInt*     m_puiColumnWidth;
     
    281308  Int       m_iWaveFrontSubstreams;
    282309
    283   bool m_pictureDigestEnabled; ///< enable(1)/disable(0) md5 computation and SEI signalling
     310  Bool      m_pictureDigestEnabled; ///< enable(1)/disable(0) md5 computation and SEI signalling
    284311
    285312  //====== Weighted Prediction ========
     
    309336#endif
    310337#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
    311   Bool      m_bUseDMM;
     338  Bool     m_bUseDMM;
     339#endif
     340
     341#if OL_DEPTHLIMIT_A0044
     342  Bool     m_bDepthPartitionLimiting;
    312343#endif
    313344
     
    466497  Void      setAllowNegDist                 ( Bool b  )     { m_bAllowNegDist     = b; };
    467498#endif
     499#if LGE_WVSO_A0119
     500  Void      setUseWVSO                      ( Bool  b )     { m_bUseWVSO   = b; }
     501  Void      setVSOWeight                    ( Int   i )     { m_iVSOWeight = i; }
     502  Void      setVSDWeight                    ( Int   i )     { m_iVSDWeight = i; }
     503  Void      setDWeight                      ( Int   i )     { m_iDWeight   = i; }
     504#endif
    468505#endif
    469506
     
    546583  Bool      getAllowNegDist                 ()      { return m_bAllowNegDist;     }
    547584#endif
     585#if LGE_WVSO_A0119
     586  Bool      getUseWVSO                      ()      { return m_bUseWVSO;     }
     587  Int       getVSOWeight                    ()      { return m_iVSOWeight;    }
     588  Int       getVSDWeight                    ()      { return m_iVSDWeight;    }
     589  Int       getDWeight                      ()      { return m_iDWeight;    }
     590#endif
    548591#endif
    549592
     
    571614#if HHI_VSO
    572615  Void      setUseVSO                       ( Bool  b )     { m_bUseVSO     = b; }
     616#endif
     617
     618#if VSP_SLICE_HEADER
     619  Void      setUseVSP                       ( Bool  b )     { m_bUseVSP     = b; }
     620  Void      setVSPDepthDisable              ( Bool  b )     { m_bVSPDepthDisable = b; }
    573621#endif
    574622
     
    623671#endif
    624672
     673#if VSP_SLICE_HEADER
     674  Bool      getUseVSP                       ()      { return m_bUseVSP; }
     675  Bool      getVSPDepthDisable              ()      { return m_bVSPDepthDisable; }
     676#endif
     677
    625678  Bool      getUseFastEnc                   ()      { return m_bUseFastEnc; }
    626679  Bool      getUseEarlyCU                   ()      { return m_bUseEarlyCU; }
     
    657710  Void  setSliceGranularity            ( Int  i )      { m_iSliceGranularity = i;       }
    658711  Int   getSliceGranularity            ()              { return m_iSliceGranularity;    }
    659   Void      setLFCrossSliceBoundaryFlag     ( Bool   bValue  )    { m_bLFCrossSliceBoundaryFlag = bValue; }
    660   Bool      getLFCrossSliceBoundaryFlag     ()                    { return m_bLFCrossSliceBoundaryFlag;   }
     712  Void  setLFCrossSliceBoundaryFlag    ( Bool   bValue  )    { m_bLFCrossSliceBoundaryFlag = bValue; }
     713  Bool  getLFCrossSliceBoundaryFlag    ()                    { return m_bLFCrossSliceBoundaryFlag;   }
    661714
    662715#if HHI_MPI
    663   Void      setUseMVI                  (Bool bVal)     {m_bUseMVI = bVal;}
    664 #endif
    665   Void      setUseSAO                  (Bool bVal)     {m_bUseSAO = bVal;}
    666   Bool      getUseSAO                  ()              {return m_bUseSAO;}
     716  Void  setUseMVI                      ( Bool bVal )   {m_bUseMVI = bVal;}
     717#endif
     718  Void  setUseSAO                      ( Bool bVal )   {m_bUseSAO = bVal;}
     719  Bool  getUseSAO                      ()              {return m_bUseSAO;}
    667720#if SAO_UNIT_INTERLEAVING
    668721  Void  setMaxNumOffsetsPerPic                   (Int iVal)            { m_maxNumOffsetsPerPic = iVal; }
     
    795848
    796849#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
    797   Void setUseDMM( Bool b) { m_bUseDMM = b;    }
    798   Bool getUseDMM()        { return m_bUseDMM; }
     850  Void      setUseDMM( Bool b) { m_bUseDMM = b;    }
     851  Bool      getUseDMM()        { return m_bUseDMM; }
     852#endif
     853
     854#if OL_DEPTHLIMIT_A0044
     855  Void      setUseDPL(Bool b) {m_bDepthPartitionLimiting = b; }
     856  Bool      getUseDPL()       {return m_bDepthPartitionLimiting;}
    799857#endif
    800858
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibEncoder/TEncCu.cpp

    r166 r193  
    451451  TComPic* pcPic = rpcBestCU->getPic();
    452452
     453#if OL_DEPTHLIMIT_A0044
     454  TComSPS *sps = pcPic->getSlice(0)->getSPS();
     455  TComPic *pcTexture;
     456  TComDataCU * pcTextureCU;
     457  Bool  depthMapDetect =  false;
     458  //UInt         uiPrevTexPartIndex = 0;
     459#if OL_DO_NOT_LIMIT_INTRA_SLICES_PART
     460  Bool bIntraSliceDetect = false;
     461#endif
     462  Bool bTry2NxN = false;
     463  Bool bTryNx2N = false;
     464    pcTexture = rpcBestCU->getSlice()->getTexturePic();
     465    if(pcTexture != NULL) //depth map being encoded
     466    {
     467    depthMapDetect = true;
     468#if OL_DO_NOT_LIMIT_INTRA_SLICES_PART
     469      bIntraSliceDetect = (rpcBestCU->getSlice()->getSliceType()==I_SLICE);
     470#endif
     471    if(uiDepth == 0)
     472    {
     473      pcTextureCU = pcTexture->getCU( rpcBestCU->getAddr() );
     474      pcTexture->setPartInfo(pcTextureCU->readPartInfo());
     475      pcTexture->setTexPartIndex(0);
     476    }
     477    }
     478    else
     479    {
     480      depthMapDetect = false;
     481    }
     482#endif
    453483  // get Original YUV data from picture
    454484  m_ppcOrigYuv[uiDepth]->copyFromPicYuv( pcPic->getPicYuvOrg(), rpcBestCU->getAddr(), rpcBestCU->getZorderIdxInCU() );
    455485#if FORCE_REF_VSP
    456   //Bool bWholeCUCanBeSynthesized = false;
     486  Bool bWholeCUCanBeSynthesized = false;
    457487  //Bool bOneSubCUCanNotBeSynthesied = false;
    458488  Bool bSubCUCanBeSynthesized[4];
     
    476506    if(iSubCUCanBeSynthesizedCnt == 4)
    477507    {
    478       //bWholeCUCanBeSynthesized = true;
     508      bWholeCUCanBeSynthesized = true;
    479509    }
    480510    //else if(iSubCUCanBeSynthesizedCnt == 3)
     
    488518  // variables for fast encoder decision
    489519  Bool    bEarlySkip  = false;
    490   Bool    bTrySplit    = true;
     520  Bool    bTrySplit   = true;
    491521  Double  fRD_Skip    = MAX_DOUBLE;
    492522
     
    499529  Bool    bTrySplitDQP  = true;
    500530
    501   static  Double  afCost[ MAX_CU_DEPTH ];
     531  static  Double  afCost [ MAX_CU_DEPTH ];
    502532  static  Int      aiNum [ MAX_CU_DEPTH ];
    503533
     
    581611      isAddLowestQP = true;
    582612      iMinQP = iMinQP - 1;
    583        
     613
    584614    }
    585615#endif
     
    624654
    625655      rpcTempCU->initEstData( uiDepth, iQP );
     656
     657#if OL_DEPTHLIMIT_A0044
     658      //logic for setting bTrySplit using the partition information that is stored of the texture colocated CU
     659#if OL_DO_NOT_LIMIT_INTRA_SLICES_PART
     660      if(depthMapDetect && !bIntraSliceDetect && sps->getUseDPL())
     661#else
     662      if(depthMapDetect && sps->getUseDPL()) //depth map being encoded
     663#endif
     664      {
     665        assert(uiDepth == pcTexture->accessPartInfo(1));
     666        if(pcTexture->accessPartInfo(0) == 1) //NxN modes
     667        {
     668          bTrySplit = true;
     669          bTryNx2N = true;
     670          bTry2NxN = true;
     671          //uiPrevTexPartIndex = pcTexture->getTexPartIndex();
     672          pcTexture->incrementTexPartIndex();
     673        }
     674        else if(pcTexture->accessPartInfo(0) == 0) //2Nx2N modes
     675        {
     676          UInt uiTexdepth;
     677          UInt temp_uiTexPartIndex;
     678          bTrySplit = false;
     679
     680          //scan ahead till next depth
     681          uiTexdepth = pcTexture->accessPartInfo(1);
     682          //uiPrevTexPartIndex = pcTexture->getTexPartIndex();
     683          pcTexture->incrementTexPartIndex();
     684          temp_uiTexPartIndex = pcTexture->getTexPartIndex(); //store in case to rewind
     685
     686          while(uiTexdepth != pcTexture->accessPartInfo(1) && uiTexdepth != 0)
     687          {
     688            if(pcTexture->accessPartInfo(1) < uiTexdepth)
     689            {
     690              break;
     691            }
     692            pcTexture->incrementTexPartIndex();
     693
     694            if(pcTexture->accessPartInfo(1) == OL_END_CU)
     695            {
     696              pcTexture->setTexPartIndex(temp_uiTexPartIndex);
     697              uiTexdepth++;
     698              if(uiTexdepth >= g_uiMaxCUDepth)
     699              {     
     700                break;
     701              }
     702            }
     703          }
     704        }
     705        else if(pcTexture->accessPartInfo(0) == OL_END_CU)
     706        {
     707          bTrySplit = false;
     708          bTryNx2N = false;
     709          bTry2NxN = false;
     710        }
     711        else if(pcTexture->accessPartInfo(0) == 2) //2NxN case
     712        {
     713          bTrySplit = false;
     714          bTryNx2N = false;
     715          bTry2NxN = true;
     716          //uiPrevTexPartIndex = pcTexture->getTexPartIndex(); 
     717          pcTexture->incrementTexPartIndex(); ;
     718        }
     719        else if(pcTexture->accessPartInfo(0) == 3) //Nx2N case
     720        {
     721          bTrySplit = false;
     722          bTryNx2N = true;
     723          bTry2NxN = false;
     724          //uiPrevTexPartIndex = pcTexture->getTexPartIndex(); 
     725          pcTexture->incrementTexPartIndex(); ;
     726        }
     727      }
     728#endif
     729
    626730
    627731      // do inter modes, SKIP and 2Nx2N
     
    648752#endif
    649753#if HHI_INTER_VIEW_RESIDUAL_PRED
    650         rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
    651 #endif
    652         // SKIP
    653 #if HHI_INTERVIEW_SKIP
    654         xCheckRDCostMerge2Nx2N( rpcBestCU, rpcTempCU, bFullyRenderedSec );
    655 #else
    656         xCheckRDCostMerge2Nx2N( rpcBestCU, rpcTempCU );
    657 #endif
    658         rpcTempCU->initEstData( uiDepth, iQP );
    659 
    660         // fast encoder decision for early skip
    661         if ( m_pcEncCfg->getUseFastEnc() )
     754          rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
     755#endif
     756          // SKIP
     757#if HHI_INTERVIEW_SKIP
     758          xCheckRDCostMerge2Nx2N( rpcBestCU, rpcTempCU, bFullyRenderedSec );
     759#else
     760          xCheckRDCostMerge2Nx2N( rpcBestCU, rpcTempCU );
     761#endif
     762          rpcTempCU->initEstData( uiDepth, iQP );
     763
     764          // fast encoder decision for early skip
     765          if ( m_pcEncCfg->getUseFastEnc() )
     766          {
     767            Int iIdx = g_aucConvertToBit[ rpcBestCU->getWidth(0) ];
     768            if ( aiNum [ iIdx ] > 5 && fRD_Skip < EARLY_SKIP_THRES*afCost[ iIdx ]/aiNum[ iIdx ] )
     769            {
     770              bEarlySkip = true;
     771              bTrySplit  = false;
     772            }
     773          }
     774
     775          // 2Nx2N, NxN
     776          if ( !bEarlySkip )
     777          {
     778#if HHI_INTER_VIEW_RESIDUAL_PRED
     779            rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
     780#endif
     781#if HHI_INTERVIEW_SKIP
     782            xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2Nx2N, bFullyRenderedSec );
     783
     784#else
     785            xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2Nx2N );
     786#endif
     787            rpcTempCU->initEstData( uiDepth, iQP );
     788            if(m_pcEncCfg->getUseCbfFastMode())
     789            {
     790              doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
     791            }
     792
     793#if FORCE_REF_VSP==1
     794#if VSP_CFG
     795            if( rpcBestCU->getSlice()->getSPS()->getVspDepthPresentFlag() || !rpcBestCU->getSlice()->getSPS()->isDepth() )
     796#else
     797            if( !rpcBestCU->getSlice()->getVspDepthDisableFlag() || !rpcBestCU->getSlice()->getSPS()->isDepth() )
     798#endif
     799            if( bWholeCUCanBeSynthesized )
     800            {
     801#if HHI_INTER_VIEW_RESIDUAL_PRED
     802              rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
     803#endif
     804#if HHI_INTERVIEW_SKIP
     805              xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2Nx2N, bFullyRenderedSec, false, true ); // VSP
     806#else
     807              xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2Nx2N );
     808#endif
     809              rpcTempCU->initEstData( uiDepth, iQP );
     810            }
     811#else
     812            if( bWholeCUCanBeSynthesized ) // To avoid compiling warning
     813            {
     814            }
     815#endif
     816          }
     817#if HHI_INTER_VIEW_RESIDUAL_PRED
     818        } // uiResPrdId
     819#endif
     820      } // != I_SLICE
     821
     822#if OL_DEPTHLIMIT_A0044
     823#if OL_DO_NOT_LIMIT_INTRA_SLICES_PART
     824      if(depthMapDetect && !bIntraSliceDetect  && sps->getUseDPL())
     825#else
     826      if(depthMapDetect  && sps->getUseDPL()) //depth map being encoded
     827#endif
     828      {
     829        bTrySplitDQP = bTrySplit;
     830      }
     831      else
     832      {
     833        if( (g_uiMaxCUWidth>>uiDepth) >= rpcTempCU->getSlice()->getPPS()->getMinCuDQPSize() )
    662834        {
    663           Int iIdx = g_aucConvertToBit[ rpcBestCU->getWidth(0) ];
    664           if ( aiNum [ iIdx ] > 5 && fRD_Skip < EARLY_SKIP_THRES*afCost[ iIdx ]/aiNum[ iIdx ] )
     835          if(iQP == iBaseQP)
    665836          {
    666             bEarlySkip = true;
    667             bTrySplit  = false;
     837            bTrySplitDQP = bTrySplit;
    668838          }
    669839        }
    670 
    671         // 2Nx2N, NxN
    672         if ( !bEarlySkip )
     840        else
    673841        {
    674 #if HHI_INTER_VIEW_RESIDUAL_PRED
    675           rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
    676 #endif
    677 #if HHI_INTERVIEW_SKIP
    678             xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2Nx2N, bFullyRenderedSec );
    679 
    680 #else
    681             xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2Nx2N );
    682 #endif
    683           rpcTempCU->initEstData( uiDepth, iQP );
    684           if(m_pcEncCfg->getUseCbfFastMode())
    685           {
    686             doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
    687           }
    688 
    689 #if FORCE_REF_VSP==1
    690 #if VSP_TEXT_ONLY
    691           if( !rpcBestCU->getSlice()->getSPS()->isDepth() )
    692 #endif
    693 #if HHI_INTER_VIEW_RESIDUAL_PRED
    694             rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
    695 #endif
    696 #if HHI_INTERVIEW_SKIP
    697             xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2Nx2N, bFullyRenderedSec, false, true ); // VSP
    698 #else
    699             xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2Nx2N );
    700 #endif
    701             rpcTempCU->initEstData( uiDepth, iQP );
    702 #endif
     842          bTrySplitDQP = bTrySplit;
    703843        }
    704 #if HHI_INTER_VIEW_RESIDUAL_PRED
    705         } // uiResPrdId
    706 #endif
    707       } // != I_SLICE
    708 
     844      }
     845#else
    709846
    710847      if( (g_uiMaxCUWidth>>uiDepth) >= rpcTempCU->getSlice()->getPPS()->getMinCuDQPSize() )
     
    719856        bTrySplitDQP = bTrySplit;
    720857      }
     858#endif
    721859#if LOSSLESS_CODING
    722860      if (isAddLowestQP && (iQP == lowestQP))
     
    760898          Bool bResPredFlag  = ( uiResPrdId > 0 );
    761899#endif
    762         // 2Nx2N, NxN
    763         if ( !bEarlySkip )
    764         {
    765 
    766         if(!( rpcBestCU->getSlice()->getSPS()->getDisInter4x4()  && (rpcBestCU->getWidth(0)==8) && (rpcBestCU->getHeight(0)==8) ))
    767         {
    768           if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth && doNotBlockPu)
     900          // 2Nx2N, NxN
     901          if ( !bEarlySkip )
    769902          {
    770 #if HHI_INTER_VIEW_RESIDUAL_PRED
    771             rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
    772 #endif
    773 #if HHI_INTERVIEW_SKIP
    774             xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_NxN, bFullyRenderedSec   );
    775 #else
    776             xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_NxN   );
    777 #endif
    778             rpcTempCU->initEstData( uiDepth, iQP );
    779           }
    780         }
    781         }
    782 
    783         { // 2NxN, Nx2N
    784           if(doNotBlockPu)
    785           {
    786 #if HHI_INTER_VIEW_RESIDUAL_PRED
    787             rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
    788 #endif
    789 #if HHI_INTERVIEW_SKIP
    790             xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_Nx2N, bFullyRenderedSec   );
    791 #else
    792             xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_Nx2N  );
    793 #endif
    794             rpcTempCU->initEstData( uiDepth, iQP );
    795             if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_Nx2N )
     903
     904            if(!( rpcBestCU->getSlice()->getSPS()->getDisInter4x4()  && (rpcBestCU->getWidth(0)==8) && (rpcBestCU->getHeight(0)==8) ))
    796905            {
    797               doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
    798             }
    799           }
    800           if(doNotBlockPu)
    801           {
    802 #if HHI_INTER_VIEW_RESIDUAL_PRED
    803             rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
    804 #endif
    805 #if HHI_INTERVIEW_SKIP
    806             xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxN, bFullyRenderedSec   );
    807 #else
    808             xCheckRDCostInter      ( rpcBestCU, rpcTempCU, SIZE_2NxN  );
    809 #endif
    810             rpcTempCU->initEstData( uiDepth, iQP );
    811             if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_2NxN)
    812             {
    813               doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
    814             }
    815           }
    816         }
    817 
    818 #if 1
    819         //! Try AMP (SIZE_2NxnU, SIZE_2NxnD, SIZE_nLx2N, SIZE_nRx2N)
    820         if( pcPic->getSlice(0)->getSPS()->getAMPAcc(uiDepth) )
    821         {
    822 #if AMP_ENC_SPEEDUP       
    823           Bool bTestAMP_Hor = false, bTestAMP_Ver = false;
    824 
    825 #if AMP_MRG
    826           Bool bTestMergeAMP_Hor = false, bTestMergeAMP_Ver = false;
    827 
    828           deriveTestModeAMP (rpcBestCU, eParentPartSize, bTestAMP_Hor, bTestAMP_Ver, bTestMergeAMP_Hor, bTestMergeAMP_Ver);
    829 #else
    830           deriveTestModeAMP (rpcBestCU, eParentPartSize, bTestAMP_Hor, bTestAMP_Ver);
    831 #endif
    832 
    833           //! Do horizontal AMP
    834           if ( bTestAMP_Hor )
    835           {
    836             if(doNotBlockPu)
    837             {
    838 #if HHI_INTER_VIEW_RESIDUAL_PRED
    839               rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
    840 #endif
    841 #if HHI_INTERVIEW_SKIP
    842               xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU, bFullyRenderedSec );
    843 #else
    844               xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU );
    845 #endif
    846               rpcTempCU->initEstData( uiDepth, iQP );
    847               if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_2NxnU )
     906              if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth && doNotBlockPu)
    848907              {
    849                 doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
    850               }
    851             }
    852             if(doNotBlockPu)
    853             {
    854 #if HHI_INTER_VIEW_RESIDUAL_PRED
    855               rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
    856 #endif
    857 #if HHI_INTERVIEW_SKIP
    858               xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD, bFullyRenderedSec );
    859 #else
    860               xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD );
    861 #endif
    862               rpcTempCU->initEstData( uiDepth, iQP );
    863               if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_2NxnD )
    864               {
    865                 doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
     908#if OL_DEPTHLIMIT_A0044 //add code here to select 2NxN or Nx2N or none
     909#if OL_DO_NOT_LIMIT_INTRA_SLICES_PART
     910                if(depthMapDetect && !bIntraSliceDetect  && sps->getUseDPL())
     911#else
     912                if(depthMapDetect  && sps->getUseDPL()) //depth map being encoded
     913#endif
     914                {
     915                  if (bTrySplit)
     916                  {
     917#endif
     918#if HHI_INTER_VIEW_RESIDUAL_PRED
     919                    rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
     920#endif
     921#if HHI_INTERVIEW_SKIP
     922                    xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_NxN, bFullyRenderedSec   );
     923#else
     924                    xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_NxN   );
     925#endif
     926                    rpcTempCU->initEstData( uiDepth, iQP );
     927#if OL_DEPTHLIMIT_A0044
     928                  }//bTrySplit
     929                }//depthMapDetect
     930                else//do things normally
     931                {
     932#if HHI_INTER_VIEW_RESIDUAL_PRED
     933                  rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
     934#endif
     935#if HHI_INTERVIEW_SKIP
     936                  xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_NxN, bFullyRenderedSec   );
     937#else
     938                  xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_NxN   );
     939#endif
     940                  rpcTempCU->initEstData( uiDepth, iQP );
     941                }
     942#endif
    866943              }
    867944            }
    868945          }
    869 #if AMP_MRG
    870           else if ( bTestMergeAMP_Hor )
    871           {
    872             if(doNotBlockPu)
     946
     947          { // 2NxN, Nx2N
     948#if OL_DEPTHLIMIT_A0044 //add code here to select 2NxN or Nx2N or none
     949#if OL_DO_NOT_LIMIT_INTRA_SLICES_PART
     950            if(depthMapDetect && !bIntraSliceDetect  && sps->getUseDPL())
     951#else
     952            if(depthMapDetect  && sps->getUseDPL()) //depth map being encoded
     953#endif
    873954            {
    874 #if HHI_INTER_VIEW_RESIDUAL_PRED
    875               rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
    876 #endif
    877 #if HHI_INTERVIEW_SKIP
    878               xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU, bFullyRenderedSec, true );
    879 #else
    880               xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU, true );
    881 #endif
    882               rpcTempCU->initEstData( uiDepth, iQP );
    883               if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_2NxnU )
     955              if (bTryNx2N)
    884956              {
    885                 doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
     957#endif
     958                if(doNotBlockPu)
     959                {
     960#if HHI_INTER_VIEW_RESIDUAL_PRED
     961                  rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
     962#endif
     963#if HHI_INTERVIEW_SKIP
     964                  xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_Nx2N, bFullyRenderedSec   );
     965#else
     966                  xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_Nx2N  );
     967#endif
     968                  rpcTempCU->initEstData( uiDepth, iQP );
     969                  if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_Nx2N )
     970                  {
     971                    doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
     972                  }
     973                }
     974#if OL_DEPTHLIMIT_A0044
     975              }//bTryNx2N
     976            }//depthMapDetect
     977            else//do things normally
     978            {
     979              if(doNotBlockPu)
     980              {
     981#if HHI_INTER_VIEW_RESIDUAL_PRED
     982                rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
     983#endif
     984#if HHI_INTERVIEW_SKIP
     985                xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_Nx2N, bFullyRenderedSec   );
     986#else
     987                xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_Nx2N  );
     988#endif
     989                rpcTempCU->initEstData( uiDepth, iQP );
     990                if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_Nx2N )
     991                {
     992                  doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
     993                }
    886994              }
    887995            }
    888             if(doNotBlockPu)
     996#endif
     997
     998#if OL_DEPTHLIMIT_A0044 //add code here to select 2NxN or Nx2N or none
     999#if OL_DO_NOT_LIMIT_INTRA_SLICES_PART
     1000            if(depthMapDetect && !bIntraSliceDetect  && sps->getUseDPL())
     1001#else
     1002            if(depthMapDetect  && sps->getUseDPL()) //depth map being encoded
     1003#endif
    8891004            {
    890 #if HHI_INTER_VIEW_RESIDUAL_PRED
    891               rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
    892 #endif
    893 #if HHI_INTERVIEW_SKIP
    894               xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD, bFullyRenderedSec, true );
    895 #else
    896               xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD, true );
    897 #endif
    898               rpcTempCU->initEstData( uiDepth, iQP );
    899               if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_2NxnD )
     1005              if (bTry2NxN)
    9001006              {
    901                 doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
     1007#endif
     1008                if(doNotBlockPu)
     1009                {
     1010#if HHI_INTER_VIEW_RESIDUAL_PRED
     1011                  rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
     1012#endif
     1013#if HHI_INTERVIEW_SKIP
     1014                  xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxN, bFullyRenderedSec   );
     1015#else
     1016                  xCheckRDCostInter      ( rpcBestCU, rpcTempCU, SIZE_2NxN  );
     1017#endif
     1018                  rpcTempCU->initEstData( uiDepth, iQP );
     1019                  if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_2NxN)
     1020                  {
     1021                    doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
     1022                  }
     1023                }
     1024#if OL_DEPTHLIMIT_A0044
     1025              }//bTryNx2N
     1026            }//depthMapDetect
     1027            else//do things normally
     1028            {
     1029              if(doNotBlockPu)
     1030              {
     1031#if HHI_INTER_VIEW_RESIDUAL_PRED
     1032                rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
     1033#endif
     1034#if HHI_INTERVIEW_SKIP
     1035                xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxN, bFullyRenderedSec   );
     1036#else
     1037                xCheckRDCostInter      ( rpcBestCU, rpcTempCU, SIZE_2NxN  );
     1038#endif
     1039                rpcTempCU->initEstData( uiDepth, iQP );
     1040                if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_2NxN)
     1041                {
     1042                  doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
     1043                }
    9021044              }
    9031045            }
     1046#endif
    9041047          }
    905 #endif
    906 
    907           //! Do horizontal AMP
    908           if ( bTestAMP_Ver )
     1048
     1049#if 1
     1050          //! Try AMP (SIZE_2NxnU, SIZE_2NxnD, SIZE_nLx2N, SIZE_nRx2N)
     1051          if( pcPic->getSlice(0)->getSPS()->getAMPAcc(uiDepth) )
    9091052          {
    910             if(doNotBlockPu)
     1053#if AMP_ENC_SPEEDUP       
     1054            Bool bTestAMP_Hor = false, bTestAMP_Ver = false;
     1055
     1056#if AMP_MRG
     1057            Bool bTestMergeAMP_Hor = false, bTestMergeAMP_Ver = false;
     1058
     1059            deriveTestModeAMP (rpcBestCU, eParentPartSize, bTestAMP_Hor, bTestAMP_Ver, bTestMergeAMP_Hor, bTestMergeAMP_Ver);
     1060#else
     1061            deriveTestModeAMP (rpcBestCU, eParentPartSize, bTestAMP_Hor, bTestAMP_Ver);
     1062#endif
     1063
     1064            //! Do horizontal AMP
     1065            if ( bTestAMP_Hor )
    9111066            {
    912 #if HHI_INTER_VIEW_RESIDUAL_PRED
    913               rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
    914 #endif
    915 #if HHI_INTERVIEW_SKIP
    916               xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N, bFullyRenderedSec );
    917 #else
    918               xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N );
    919 #endif
    920               rpcTempCU->initEstData( uiDepth, iQP );
    921               if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_nLx2N )
     1067#if OL_DEPTHLIMIT_A0044 //add code here to select 2NxN or Nx2N or none
     1068#if OL_DO_NOT_LIMIT_INTRA_SLICES_PART
     1069              if(depthMapDetect && !bIntraSliceDetect  && sps->getUseDPL())
     1070#else
     1071              if(depthMapDetect  && sps->getUseDPL()) //depth map being encoded
     1072#endif
    9221073              {
    923                 doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
     1074                if (bTry2NxN)
     1075                {
     1076#endif
     1077                  if(doNotBlockPu)
     1078                  {
     1079#if HHI_INTER_VIEW_RESIDUAL_PRED
     1080                    rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
     1081#endif
     1082#if HHI_INTERVIEW_SKIP
     1083                    xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU, bFullyRenderedSec );
     1084#else
     1085                    xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU );
     1086#endif
     1087                    rpcTempCU->initEstData( uiDepth, iQP );
     1088                    if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_2NxnU )
     1089                    {
     1090                      doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
     1091                    }
     1092                  }
     1093                  if(doNotBlockPu)
     1094                  {
     1095#if HHI_INTER_VIEW_RESIDUAL_PRED
     1096                    rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
     1097#endif
     1098#if HHI_INTERVIEW_SKIP
     1099                    xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD, bFullyRenderedSec );
     1100#else
     1101                    xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD );
     1102#endif
     1103                    rpcTempCU->initEstData( uiDepth, iQP );
     1104                    if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_2NxnD )
     1105                    {
     1106                      doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
     1107                    }
     1108                  }
     1109#if OL_DEPTHLIMIT_A0044
     1110                }//bTry2NxN
     1111              }//depthMapDetect
     1112              else//do things normally
     1113              {
     1114                if(doNotBlockPu)
     1115                {
     1116#if HHI_INTER_VIEW_RESIDUAL_PRED
     1117                  rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
     1118#endif
     1119#if HHI_INTERVIEW_SKIP
     1120                  xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU, bFullyRenderedSec );
     1121#else
     1122                  xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU );
     1123#endif
     1124                  rpcTempCU->initEstData( uiDepth, iQP );
     1125                  if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_2NxnU )
     1126                  {
     1127                    doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
     1128                  }
     1129                }
     1130                if(doNotBlockPu)
     1131                {
     1132#if HHI_INTER_VIEW_RESIDUAL_PRED
     1133                  rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
     1134#endif
     1135#if HHI_INTERVIEW_SKIP
     1136                  xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD, bFullyRenderedSec );
     1137#else
     1138                  xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD );
     1139#endif
     1140                  rpcTempCU->initEstData( uiDepth, iQP );
     1141                  if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_2NxnD )
     1142                  {
     1143                    doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
     1144                  }
     1145                }
    9241146              }
     1147#endif
    9251148            }
    926             if(doNotBlockPu)
     1149#if AMP_MRG
     1150            else if ( bTestMergeAMP_Hor )
    9271151            {
    928 #if HHI_INTER_VIEW_RESIDUAL_PRED
    929               rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
    930 #endif
    931 #if HHI_INTERVIEW_SKIP
    932               xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N, bFullyRenderedSec );
    933 #else
    934               xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N );
    935 #endif
    936               rpcTempCU->initEstData( uiDepth, iQP );
     1152#if OL_DEPTHLIMIT_A0044 //add code here to select 2NxN or Nx2N or none
     1153#if OL_DO_NOT_LIMIT_INTRA_SLICES_PART
     1154              if(depthMapDetect && !bIntraSliceDetect  && sps->getUseDPL())
     1155#else
     1156              if(depthMapDetect  && sps->getUseDPL()) //depth map being encoded
     1157#endif
     1158              {
     1159                if (bTry2NxN)
     1160                {
     1161#endif
     1162                  if(doNotBlockPu)
     1163                  {
     1164#if HHI_INTER_VIEW_RESIDUAL_PRED
     1165                    rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
     1166#endif
     1167#if HHI_INTERVIEW_SKIP
     1168                    xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU, bFullyRenderedSec, true );
     1169#else
     1170                    xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU, true );
     1171#endif
     1172                    rpcTempCU->initEstData( uiDepth, iQP );
     1173                    if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_2NxnU )
     1174                    {
     1175                      doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
     1176                    }
     1177                  }
     1178                  if(doNotBlockPu)
     1179                  {
     1180#if HHI_INTER_VIEW_RESIDUAL_PRED
     1181                    rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
     1182#endif
     1183#if HHI_INTERVIEW_SKIP
     1184                    xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD, bFullyRenderedSec, true );
     1185#else
     1186                    xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD, true );
     1187#endif
     1188                    rpcTempCU->initEstData( uiDepth, iQP );
     1189                    if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_2NxnD )
     1190                    {
     1191                      doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
     1192                    }
     1193                  }
     1194#if OL_DEPTHLIMIT_A0044
     1195                }//bTry2NxN
     1196              }//depthMapDetect
     1197              else//do things normally
     1198              {
     1199                if(doNotBlockPu)
     1200                {
     1201#if HHI_INTER_VIEW_RESIDUAL_PRED
     1202                  rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
     1203#endif
     1204#if HHI_INTERVIEW_SKIP
     1205                  xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU, bFullyRenderedSec, true );
     1206#else
     1207                  xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU, true );
     1208#endif
     1209                  rpcTempCU->initEstData( uiDepth, iQP );
     1210                  if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_2NxnU )
     1211                  {
     1212                    doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
     1213                  }
     1214                }
     1215                if(doNotBlockPu)
     1216                {
     1217#if HHI_INTER_VIEW_RESIDUAL_PRED
     1218                  rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
     1219#endif
     1220#if HHI_INTERVIEW_SKIP
     1221                  xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD, bFullyRenderedSec, true );
     1222#else
     1223                  xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD, true );
     1224#endif
     1225                  rpcTempCU->initEstData( uiDepth, iQP );
     1226                  if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_2NxnD )
     1227                  {
     1228                    doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
     1229                  }
     1230                }
     1231
     1232              }
     1233#endif
    9371234            }
    938           }
     1235#endif
     1236
     1237            //! Do horizontal AMP
     1238            if ( bTestAMP_Ver )
     1239            {
     1240#if OL_DEPTHLIMIT_A0044 //add code here to select 2NxN or Nx2N or none
     1241#if OL_DO_NOT_LIMIT_INTRA_SLICES_PART
     1242              if(depthMapDetect && !bIntraSliceDetect  && sps->getUseDPL())
     1243#else
     1244              if(depthMapDetect  && sps->getUseDPL()) //depth map being encoded
     1245#endif
     1246              {
     1247                if (bTryNx2N)
     1248                {
     1249#endif
     1250                  if(doNotBlockPu)
     1251                  {
     1252#if HHI_INTER_VIEW_RESIDUAL_PRED
     1253                    rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
     1254#endif
     1255#if HHI_INTERVIEW_SKIP
     1256                    xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N, bFullyRenderedSec );
     1257#else
     1258                    xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N );
     1259#endif
     1260                    rpcTempCU->initEstData( uiDepth, iQP );
     1261                    if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_nLx2N )
     1262                    {
     1263                      doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
     1264                    }
     1265                  }
     1266                  if(doNotBlockPu)
     1267                  {
     1268#if HHI_INTER_VIEW_RESIDUAL_PRED
     1269                    rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
     1270#endif
     1271#if HHI_INTERVIEW_SKIP
     1272                    xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N, bFullyRenderedSec );
     1273#else
     1274                    xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N );
     1275#endif
     1276                    rpcTempCU->initEstData( uiDepth, iQP );
     1277                  }
     1278#if OL_DEPTHLIMIT_A0044
     1279                }//bTryNx2N
     1280              }//depthMapDetect
     1281              else//do things normally
     1282              {
     1283                if(doNotBlockPu)
     1284                {
     1285#if HHI_INTER_VIEW_RESIDUAL_PRED
     1286                  rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
     1287#endif
     1288#if HHI_INTERVIEW_SKIP
     1289                  xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N, bFullyRenderedSec );
     1290#else
     1291                  xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N );
     1292#endif
     1293                  rpcTempCU->initEstData( uiDepth, iQP );
     1294                  if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_nLx2N )
     1295                  {
     1296                    doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
     1297                  }
     1298                }
     1299                if(doNotBlockPu)
     1300                {
     1301#if HHI_INTER_VIEW_RESIDUAL_PRED
     1302                  rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
     1303#endif
     1304#if HHI_INTERVIEW_SKIP
     1305                  xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N, bFullyRenderedSec );
     1306#else
     1307                  xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N );
     1308#endif
     1309                  rpcTempCU->initEstData( uiDepth, iQP );
     1310                }
     1311              }
     1312#endif
     1313            }
    9391314#if AMP_MRG
    940           else if ( bTestMergeAMP_Ver )
    941           {
    942             if(doNotBlockPu)
     1315            else if ( bTestMergeAMP_Ver )
    9431316            {
    944 #if HHI_INTER_VIEW_RESIDUAL_PRED
    945               rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
    946 #endif
    947 #if HHI_INTERVIEW_SKIP
    948               xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N, bFullyRenderedSec, true );
    949 #else
    950               xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N, true );
    951 #endif
    952               rpcTempCU->initEstData( uiDepth, iQP );
    953               if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_nLx2N )
     1317#if OL_DEPTHLIMIT_A0044 //add code here to select 2NxN or Nx2N or none
     1318#if OL_DO_NOT_LIMIT_INTRA_SLICES_PART
     1319              if(depthMapDetect && !bIntraSliceDetect  && sps->getUseDPL())
     1320#else
     1321              if(depthMapDetect  && sps->getUseDPL()) //depth map being encoded
     1322#endif
    9541323              {
    955                 doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
     1324                if (bTryNx2N)
     1325                {
     1326#endif
     1327                  if(doNotBlockPu)
     1328                  {
     1329#if HHI_INTER_VIEW_RESIDUAL_PRED
     1330                    rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
     1331#endif
     1332#if HHI_INTERVIEW_SKIP
     1333                    xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N, bFullyRenderedSec, true );
     1334#else
     1335                    xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N, true );
     1336#endif
     1337                    rpcTempCU->initEstData( uiDepth, iQP );
     1338                    if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_nLx2N )
     1339                    {
     1340                      doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
     1341                    }
     1342                  }
     1343                  if(doNotBlockPu)
     1344                  {
     1345#if HHI_INTER_VIEW_RESIDUAL_PRED
     1346                    rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
     1347#endif
     1348#if HHI_INTERVIEW_SKIP
     1349                    xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N, bFullyRenderedSec, true );
     1350#else
     1351                    xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N, true );
     1352#endif
     1353                    rpcTempCU->initEstData( uiDepth, iQP );
     1354                  }
     1355#if OL_DEPTHLIMIT_A0044
     1356                }//bTryNx2N
     1357              }//depthMapDetect
     1358              else//do things normally
     1359              {
     1360                if(doNotBlockPu)
     1361                {
     1362#if HHI_INTER_VIEW_RESIDUAL_PRED
     1363                  rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
     1364#endif
     1365#if HHI_INTERVIEW_SKIP
     1366                  xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N, bFullyRenderedSec, true );
     1367#else
     1368                  xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N, true );
     1369#endif
     1370                  rpcTempCU->initEstData( uiDepth, iQP );
     1371                  if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_nLx2N )
     1372                  {
     1373                    doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
     1374                  }
     1375                }
     1376                if(doNotBlockPu)
     1377                {
     1378#if HHI_INTER_VIEW_RESIDUAL_PRED
     1379                  rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
     1380#endif
     1381#if HHI_INTERVIEW_SKIP
     1382                  xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N, bFullyRenderedSec, true );
     1383#else
     1384                  xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N, true );
     1385#endif
     1386                  rpcTempCU->initEstData( uiDepth, iQP );
     1387                }
    9561388              }
     1389#endif
    9571390            }
    958             if(doNotBlockPu)
    959             {
    960 #if HHI_INTER_VIEW_RESIDUAL_PRED
    961               rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
    962 #endif
    963 #if HHI_INTERVIEW_SKIP
    964               xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N, bFullyRenderedSec, true );
    965 #else
    966               xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N, true );
    967 #endif
    968               rpcTempCU->initEstData( uiDepth, iQP );
    969             }
    970           }
    971 #endif
    972 
    973 #else
    974 #if HHI_INTER_VIEW_RESIDUAL_PRED
    975               rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
    976 #endif
    977 #if HHI_INTERVIEW_SKIP
    978               xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU, bFullyRenderedSec );
    979 #else
    980           xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU );
    981 #endif
    982           rpcTempCU->initEstData( uiDepth, iQP );
    983 #if HHI_INTER_VIEW_RESIDUAL_PRED
    984               rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
    985 #endif
    986 #if HHI_INTERVIEW_SKIP
    987               xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD, bFullyRenderedSec );
    988 #else
    989           xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD );
    990 #endif
    991           rpcTempCU->initEstData( uiDepth, iQP );
    992 #if HHI_INTER_VIEW_RESIDUAL_PRED
    993               rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
    994 #endif
    995 #if HHI_INTERVIEW_SKIP
    996               xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N, bFullyRenderedSec );
    997 #else
    998           xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N );
    999 #endif
    1000           rpcTempCU->initEstData( uiDepth, iQP );
    1001 #if HHI_INTER_VIEW_RESIDUAL_PRED
    1002               rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
    1003 #endif
    1004 #if HHI_INTERVIEW_SKIP
    1005               xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N, bFullyRenderedSec );
    1006 #else
    1007           xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N );
    1008 #endif
    1009           rpcTempCU->initEstData( uiDepth, iQP );
    1010 
    1011 #endif
    1012         } //! Try AMP (SIZE_2NxnU, SIZE_2NxnD, SIZE_nLx2N, SIZE_nRx2N)
     1391#endif
     1392
     1393#else
     1394#if HHI_INTER_VIEW_RESIDUAL_PRED
     1395            rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
     1396#endif
     1397#if HHI_INTERVIEW_SKIP
     1398            xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU, bFullyRenderedSec );
     1399#else
     1400            xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU );
     1401#endif
     1402            rpcTempCU->initEstData( uiDepth, iQP );
     1403#if HHI_INTER_VIEW_RESIDUAL_PRED
     1404            rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
     1405#endif
     1406#if HHI_INTERVIEW_SKIP
     1407            xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD, bFullyRenderedSec );
     1408#else
     1409            xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD );
     1410#endif
     1411            rpcTempCU->initEstData( uiDepth, iQP );
     1412#if HHI_INTER_VIEW_RESIDUAL_PRED
     1413            rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
     1414#endif
     1415#if HHI_INTERVIEW_SKIP
     1416            xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N, bFullyRenderedSec );
     1417#else
     1418            xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N );
     1419#endif
     1420            rpcTempCU->initEstData( uiDepth, iQP );
     1421#if HHI_INTER_VIEW_RESIDUAL_PRED
     1422            rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
     1423#endif
     1424#if HHI_INTERVIEW_SKIP
     1425            xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N, bFullyRenderedSec );
     1426#else
     1427            xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N );
     1428#endif
     1429            rpcTempCU->initEstData( uiDepth, iQP );
     1430
     1431#endif
     1432          } //! Try AMP (SIZE_2NxnU, SIZE_2NxnD, SIZE_nLx2N, SIZE_nRx2N)
    10131433#endif
    10141434#if HHI_INTER_VIEW_RESIDUAL_PRED
     
    10261446        // speedup for inter frames
    10271447#if HHI_INTERVIEW_SKIP
    1028       if( ( rpcBestCU->getSlice()->getSliceType() == I_SLICE ||
    1029                rpcBestCU->getCbf( 0, TEXT_LUMA     ) != 0   ||
    1030                rpcBestCU->getCbf( 0, TEXT_CHROMA_U ) != 0   ||
    1031                rpcBestCU->getCbf( 0, TEXT_CHROMA_V ) != 0 ) && !bFullyRenderedSec ) // avoid very complex intra if it is unlikely
     1448        if( ( rpcBestCU->getSlice()->getSliceType() == I_SLICE ||
     1449          rpcBestCU->getCbf( 0, TEXT_LUMA     ) != 0   ||
     1450          rpcBestCU->getCbf( 0, TEXT_CHROMA_U ) != 0   ||
     1451          rpcBestCU->getCbf( 0, TEXT_CHROMA_V ) != 0 ) && !bFullyRenderedSec ) // avoid very complex intra if it is unlikely
    10321452#else
    10331453        if( rpcBestCU->getSlice()->getSliceType() == I_SLICE ||
     
    10411461          if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth )
    10421462          {
    1043             if( rpcTempCU->getWidth(0) > ( 1 << rpcTempCU->getSlice()->getSPS()->getQuadtreeTULog2MinSize() ) )
     1463#if OL_DEPTHLIMIT_A0044 //add code here to select or deselect NxN mode for Intra
     1464#if OL_DO_NOT_LIMIT_INTRA_SLICES_PART
     1465            if(depthMapDetect && !bIntraSliceDetect  && sps->getUseDPL())
     1466#else
     1467            if(depthMapDetect  && sps->getUseDPL()) //depth map being encoded
     1468#endif
    10441469            {
    1045               xCheckRDCostIntra( rpcBestCU, rpcTempCU, SIZE_NxN   );
    1046               rpcTempCU->initEstData( uiDepth, iQP );
     1470              if (bTrySplit)
     1471              {
     1472
     1473#endif
     1474                if( rpcTempCU->getWidth(0) > ( 1 << rpcTempCU->getSlice()->getSPS()->getQuadtreeTULog2MinSize() ) )
     1475                {
     1476                  xCheckRDCostIntra( rpcBestCU, rpcTempCU, SIZE_NxN   );
     1477                  rpcTempCU->initEstData( uiDepth, iQP );
     1478                }
     1479#if OL_DEPTHLIMIT_A0044
     1480              }//bTrySplit
     1481            }//depthMapDetect
     1482            else
     1483            {
     1484              if( rpcTempCU->getWidth(0) > ( 1 << rpcTempCU->getSlice()->getSPS()->getQuadtreeTULog2MinSize() ) )
     1485              {
     1486                xCheckRDCostIntra( rpcBestCU, rpcTempCU, SIZE_NxN   );
     1487                rpcTempCU->initEstData( uiDepth, iQP );
     1488              }
    10471489            }
     1490#endif
    10481491          }
    10491492        }
     
    11011544#endif
    11021545    {
    1103     rpcBestCU->getTotalCost()  = m_pcRdCost->calcRdCost( rpcBestCU->getTotalBits(), rpcBestCU->getTotalDistortion() );
     1546      rpcBestCU->getTotalCost()  = m_pcRdCost->calcRdCost( rpcBestCU->getTotalBits(), rpcBestCU->getTotalDistortion() );
    11041547    }
    11051548
     
    11251568    }
    11261569#if HHI_INTERVIEW_SKIP
    1127   rpcBestCU->setRenderableSubParts(bFullyRenderedSec,0,rpcBestCU->getDepth( 0 )) ;
     1570    rpcBestCU->setRenderableSubParts(bFullyRenderedSec,0,rpcBestCU->getDepth( 0 )) ;
    11281571#endif
    11291572  }
     
    11891632  {
    11901633#if LOSSLESS_CODING
    1191       if (isAddLowestQP && (iQP == iMinQP))
    1192       {
    1193         iQP = lowestQP;
    1194       }
     1634    if (isAddLowestQP && (iQP == iMinQP))
     1635    {
     1636      iQP = lowestQP;
     1637    }
    11951638#endif
    11961639    rpcTempCU->initEstData( uiDepth, iQP );
     
    13011744#endif
    13021745      {           
    1303       rpcTempCU->getTotalCost()  = m_pcRdCost->calcRdCost( rpcTempCU->getTotalBits(), rpcTempCU->getTotalDistortion() );
     1746        rpcTempCU->getTotalCost()  = m_pcRdCost->calcRdCost( rpcTempCU->getTotalBits(), rpcTempCU->getTotalDistortion() );
    13041747      }
    13051748
     
    13441787#endif
    13451788          {
    1346           rpcTempCU->getTotalCost()  = m_pcRdCost->calcRdCost( rpcTempCU->getTotalBits(), rpcTempCU->getTotalDistortion() );
     1789            rpcTempCU->getTotalCost()  = m_pcRdCost->calcRdCost( rpcTempCU->getTotalBits(), rpcTempCU->getTotalDistortion() );
    13471790          }
    13481791#endif
     
    13931836    }                                                                                  // with sub partitioned prediction.
    13941837#if LOSSLESS_CODING
    1395       if (isAddLowestQP && (iQP == lowestQP))
    1396       {
    1397         iQP = iMinQP;
    1398       }
     1838    if (isAddLowestQP && (iQP == lowestQP))
     1839    {
     1840      iQP = iMinQP;
     1841    }
    13991842#endif
    14001843  } // SPLIT- QP Loop
     
    14031846  if( m_pcRdCost->getUseRenModel() )
    14041847  {
    1405       UInt  uiWidth     = m_ppcRecoYuvBest[uiDepth]->getWidth   ( );
    1406       UInt  uiHeight    = m_ppcRecoYuvBest[uiDepth]->getHeight  ( );
    1407       Pel*  piSrc       = m_ppcRecoYuvBest[uiDepth]->getLumaAddr( 0 );
    1408       UInt  uiSrcStride = m_ppcRecoYuvBest[uiDepth]->getStride  ( );
    1409       m_pcRdCost->setRenModelData( rpcBestCU, 0, piSrc, uiSrcStride, uiWidth, uiHeight );
     1848    UInt  uiWidth     = m_ppcRecoYuvBest[uiDepth]->getWidth   ( );
     1849    UInt  uiHeight    = m_ppcRecoYuvBest[uiDepth]->getHeight  ( );
     1850    Pel*  piSrc       = m_ppcRecoYuvBest[uiDepth]->getLumaAddr( 0 );
     1851    UInt  uiSrcStride = m_ppcRecoYuvBest[uiDepth]->getStride  ( );
     1852    m_pcRdCost->setRenModelData( rpcBestCU, 0, piSrc, uiSrcStride, uiWidth, uiHeight );
    14101853  }
    14111854#endif
     
    16082051#if HHI_MPI
    16092052    if( pcCU->getTextureModeDepth( uiAbsPartIdx ) == -1 || uiDepth < pcCU->getTextureModeDepth( uiAbsPartIdx ) )
    1610 #endif
     2053    {
     2054#endif
     2055
    16112056    m_pcEntropyCoder->encodeSplitFlag( pcCU, uiAbsPartIdx, uiDepth );
     2057
     2058#if HHI_MPI
     2059    }
     2060#endif
    16122061  }
    16132062  else
     
    16242073
    16252074    if( ( uiRPelX < pcSlice->getSPS()->getPicWidthInLumaSamples() ) && ( uiBPelY < pcSlice->getSPS()->getPicHeightInLumaSamples() ) )
     2075    {
    16262076      m_pcEntropyCoder->encodeSplitFlag( pcCU, uiAbsPartIdx, uiDepth );
     2077    }
     2078
    16272079    if( !pcCU->getSlice()->isIntra() )
    16282080    {
     
    16312083#if FORCE_REF_VSP==1
    16322084      if( (pcCU->isSkipped( uiAbsPartIdx ) || pcCU->isVspMode( uiAbsPartIdx )) && pcCU->getSlice()->getViewId() != 0 )
    1633 #if VSP_TEXT_ONLY
    1634       if( !pcCU->getSlice()->getSPS()->isDepth() )
     2085#if VSP_CFG
     2086      if( pcCU->getSlice()->getSPS()->getVspDepthPresentFlag() || !pcCU->getSlice()->getSPS()->isDepth() )
     2087#else
     2088      if( !pcCU->getSlice()->getVspDepthDisableFlag() || !pcCU->getSlice()->getSPS()->isDepth() )
    16352089#endif
    16362090      {
     
    16472101      m_pcEntropyCoder->encodeMergeIndex( pcCU, uiAbsPartIdx, 0 );
    16482102      finishCU(pcCU,uiAbsPartIdx,uiDepth);
    1649 #if DEBUGLOGOUT
    1650       m_cDebug.DebugLogOut( pcCU, uiAbsPartIdx, uiDepth );
    1651 #endif
    16522103      xRestoreDepthWidthHeight( pcCU );
    16532104      return;
     
    16942145#if HHI_MPI
    16952146  if( pcCU->getTextureModeDepth( uiAbsPartIdx ) == -1 )
     2147{
    16962148#endif
    16972149  if( !pcCU->getSlice()->isIntra() )
     
    17002152
    17012153#if FORCE_REF_VSP==1
    1702     if( (pcCU->isSkipped( uiAbsPartIdx ) || pcCU->isVspMode( uiAbsPartIdx )) && pcCU->getSlice()->getViewId() != 0 )
    1703 #if VSP_TEXT_ONLY
    1704     if( !pcCU->getSlice()->getSPS()->isDepth() )
     2154    if( (pcCU->isSkipped( uiAbsPartIdx ) || pcCU->isVspMode( uiAbsPartIdx )) && pcCU->getSlice()->getViewId() != 0 )]
     2155#if VSP_CFG
     2156    if( pcCU->getSlice()->getSPS()->getVspDepthPresentFlag() || !pcCU->getSlice()->getSPS()->isDepth() )
     2157#else
     2158    if( !pcCU->getSlice()->getVspDepthDisableFlag() || !pcCU->getSlice()->getSPS()->isDepth() )
    17052159#endif
    17062160    {
     
    17092163#endif
    17102164  }
     2165#if HHI_MPI
     2166}
     2167#endif
    17112168 
    17122169  if( pcCU->isSkipped( uiAbsPartIdx ) )
     
    17152172#endif
    17162173  {
     2174#if OL_DEPTHLIMIT_A0044
     2175    if(pcCU->getPartDumpFlag())
     2176    {
     2177      pcCU->updatePartInfo(0,uiDepth);
     2178      pcCU->incrementPartInfo();
     2179    }
     2180#endif
    17172181    m_pcEntropyCoder->encodeMergeIndex( pcCU, uiAbsPartIdx, 0 );
    17182182#if HHI_INTER_VIEW_RESIDUAL_PRED
     
    17202184#endif
    17212185    finishCU(pcCU,uiAbsPartIdx,uiDepth);
    1722 #if DEBUGLOGOUT
    1723     m_cDebug.DebugLogOut( pcCU, uiAbsPartIdx, uiDepth );
    1724 #endif
    17252186    return;
    17262187  }
     
    17302191  {
    17312192    finishCU(pcCU,uiAbsPartIdx,uiDepth);
    1732 #if DEBUGLOGOUT
    1733     m_cDebug.DebugLogOut( pcCU, uiAbsPartIdx, uiDepth );
    1734 #endif
    17352193    return;
    17362194  }
     
    17532211      // Encode slice finish
    17542212      finishCU(pcCU,uiAbsPartIdx,uiDepth);
    1755 #if DEBUGLOGOUT
    1756       m_cDebug.DebugLogOut( pcCU, uiAbsPartIdx, uiDepth );
    1757 #endif
    17582213      return;
    17592214    }
     
    17792234  // --- write terminating bit ---
    17802235  finishCU(pcCU,uiAbsPartIdx,uiDepth);
    1781 #if DEBUGLOGOUT
    1782   m_cDebug.DebugLogOut( pcCU, uiAbsPartIdx, uiDepth );
    1783 #endif
    17842236}
    17852237
     
    26133065      }
    26143066#if VSP_N
    2615 #if !(!VSP_TEXT_ONLY && FORCE_REF_VSP==2)
    2616       else // inter
     3067#if VSP_CFG
     3068      else if( (!rpcTempCU->getSlice()->getSPS()->getVspDepthPresentFlag() && rpcTempCU->getSlice()->getViewId() ) || FORCE_REF_VSP!=2 ) // inter
     3069#else
     3070      else if( rpcTempCU->getSlice()->getVspDepthDisableFlag() || FORCE_REF_VSP!=2 ) // inter
     3071#endif
    26173072      {
    26183073        Int aiRefIdx[2] = {NOT_VALID, NOT_VALID};
     
    26203075        {
    26213076          aiRefIdx[iList] = pcTextureCU->getCUMvField( RefPicList(iList) )->getRefIdx( rpcTempCU->getZorderIdxInCU() + ui );
    2622           if( aiRefIdx[iList] >= 0 && pcTextureCU->getSlice()->getRefViewId( RefPicList(iList), aiRefIdx[iList] ) == NUM_VIEW_VSP )
     3077#if VSP_CFG
     3078          if( aiRefIdx[iList] >= rpcTempCU->getSlice()->getNumRefIdx( RefPicList(iList) ) )
     3079#else
     3080          if( aiRefIdx[iList] >= 0 && pcTextureCU->isVspRef( RefPicList(iList), aiRefIdx[iList] ) )
     3081#endif
    26233082          {
    26243083            return;
     
    26303089        //}
    26313090      }
    2632 #endif
    26333091#endif
    26343092    }
     
    28303288#if FORCE_REF_VSP==1
    28313289  if( (pcCU->isSkipped( 0 ) || pcCU->isVspMode( 0 )) && pcCU->getSlice()->getViewId() != 0 )
    2832 #if VSP_TEXT_ONLY
    2833   if( !pcCU->getSlice()->getSPS()->isDepth() )
     3290#if VSP_CFG
     3291  if( pcCU->getSlice()->getSPS()->getVspDepthPresentFlag() || !pcCU->getSlice()->getSPS()->isDepth() )
     3292#else
     3293  if( !pcCU->getSlice()->getVspDepthDisableFlag() || !pcCU->getSlice()->getSPS()->isDepth() )
    28343294#endif
    28353295    m_pcEntropyCoder->encodeVspFlag ( pcCU, 0, true );
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibEncoder/TEncCu.h

    r166 r193  
    4646#include "TLibCommon/TComBitCounter.h"
    4747#include "TLibCommon/TComDataCU.h"
    48 #if DEBUGLOGOUT
    49 #include "TLibCommon/DebugLog.h"
    50 #endif
    5148
    5249#include "TEncEntropy.h"
     
    116113
    117114public:
    118 #if DEBUGLOGOUT
    119   DebugLog                m_cDebug;
    120 #endif
    121 
    122115  /// copy parameters from encoder class
    123116  Void  init                ( TEncTop* pcEncTop );
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibEncoder/TEncEntropy.cpp

    r166 r193  
    13701370#if VSP_MV_ZERO
    13711371          Int iRefIdx = pcCU->getCUMvField( RefPicList( uiRefListIdx ) )->getRefIdx(uiSubPartIdx);
    1372           if( !(pcCU->getSlice()->getViewId() && iRefIdx >= 0 && pcCU->getSlice()->getRefViewId( RefPicList( uiRefListIdx ), iRefIdx ) == NUM_VIEW_VSP) )
     1372          if( !(pcCU->getSlice()->getViewId() && iRefIdx >= 0 && pcCU->isVspRef( RefPicList( uiRefListIdx ), iRefIdx )) )
    13731373          {
    13741374#endif
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibEncoder/TEncGOP.cpp

    r166 r193  
    332332#endif
    333333
     334#if VSP_SLICE_HEADER && VSP_CFG
     335      pcSlice->setNumVspRefPics( m_pcCfg->getGOPEntry( (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDV) ? MAX_GOP : iGOPid ).m_numVSPRefPics );
     336      pcSlice->setVspFlag( m_pcEncTop->getUseVSP() && pcSlice->getNumVspRefPics() > 0 );
     337      for( UInt i = 0; i < pcSlice->getNumVspRefPics(); i++ )
     338      {
     339        pcSlice->setVspRefPos( REF_PIC_LIST_0, i, m_pcCfg->getGOPEntry( (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDV) ? MAX_GOP : iGOPid ).m_VSPRefPosL0[i] );
     340        if( pcSlice->getSliceType() == B_SLICE )
     341        {
     342          pcSlice->setVspRefPos( REF_PIC_LIST_1, i, m_pcCfg->getGOPEntry( (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDV) ? MAX_GOP : iGOPid ).m_VSPRefPosL1[i] );
     343        }
     344      }
     345#endif
     346
    334347#if VSP_N
     348#if VSP_CFG
     349      Int NumberOfVspRefsL0 = ( ( pcPic->getViewId()==0
     350                                || (m_pcEncTop->getVSPDepthDisable() && m_pcEncTop->getIsDepth())
     351#if VSP_SLICE_HEADER
     352                                || !pcSlice->getVspFlag()
     353#endif
     354                                || pcSlice->getVspRefPos( REF_PIC_LIST_0, 0 ) == 0
     355                              ) ? 0 : 1 );
     356      Int NumberOfVspRefsL1 = ( ( pcPic->getViewId()==0
     357                                || (m_pcEncTop->getVSPDepthDisable() && m_pcEncTop->getIsDepth())
     358#if VSP_SLICE_HEADER
     359                                || !pcSlice->getVspFlag()
     360#endif
     361                                || pcSlice->getVspRefPos( REF_PIC_LIST_1, 0 ) == 0
     362                              ) ? 0 : 1 );
     363      pcSlice->setNumRefIdx( REF_PIC_LIST_0, min( m_pcCfg->getGOPEntry( (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDV) ? MAX_GOP : iGOPid ).m_numRefPicsActive + NumberOfVspRefsL0, (pcSlice->getRPS()->getNumberOfPictures() + pcSlice->getSPS()->getNumberOfUsableInterViewRefs() + NumberOfVspRefsL0) ) );
     364      pcSlice->setNumRefIdx( REF_PIC_LIST_1, min( m_pcCfg->getGOPEntry( (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDV) ? MAX_GOP : iGOPid ).m_numRefPicsActive + NumberOfVspRefsL1, (pcSlice->getRPS()->getNumberOfPictures() + pcSlice->getSPS()->getNumberOfUsableInterViewRefs() + NumberOfVspRefsL1) ) );
     365#else
    335366      Int NumberOfVspRefs = ( ( pcPic->getViewId()==0
    336 #if VSP_TEXT_ONLY
    337                                 || m_pcEncTop->getIsDepth()
    338 #endif
     367                                || (m_pcEncTop->getVSPDepthDisable() && m_pcEncTop->getIsDepth())
    339368#if VSP_SLICE_HEADER
    340                                 || !m_pcEncTop->getUseVSP()
     369                                || !pcSlice->getVspFlag()
    341370#endif
    342371                              ) ? 0 : 1 );
    343372      pcSlice->setNumRefIdx( REF_PIC_LIST_0, min( m_pcCfg->getGOPEntry( (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDV) ? MAX_GOP : iGOPid ).m_numRefPicsActive + NumberOfVspRefs, (pcSlice->getRPS()->getNumberOfPictures() + pcSlice->getSPS()->getNumberOfUsableInterViewRefs() + NumberOfVspRefs) ) );
    344373      pcSlice->setNumRefIdx( REF_PIC_LIST_1, min( m_pcCfg->getGOPEntry( (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDV) ? MAX_GOP : iGOPid ).m_numRefPicsActive + NumberOfVspRefs, (pcSlice->getRPS()->getNumberOfPictures() + pcSlice->getSPS()->getNumberOfUsableInterViewRefs() + NumberOfVspRefs) ) );
     374#endif
    345375#else
    346376      pcSlice->setNumRefIdx( REF_PIC_LIST_0, min( m_pcCfg->getGOPEntry( (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDV) ? MAX_GOP : iGOPid ).m_numRefPicsActive, (pcSlice->getRPS()->getNumberOfPictures() + pcSlice->getSPS()->getNumberOfUsableInterViewRefs()) ) );
     
    373403#if VSP_N
    374404      Bool bUseVsp = (pcPic->getViewId()!=0);
    375 #if VSP_TEXT_ONLY
    376       if( m_pcEncTop->getIsDepth() ) bUseVsp = false;
    377 #endif
     405      if( m_pcEncTop->getVSPDepthDisable() && m_pcEncTop->getIsDepth() ) bUseVsp = false;
    378406#if VSP_SLICE_HEADER
     407#if VSP_CFG
     408      if( !pcSlice->getVspFlag() ) bUseVsp = false;
     409#else
    379410      if( !m_pcEncTop->getUseVSP() ) bUseVsp = false;
    380411#endif
     412#endif
     413
     414#if VSP_SLICE_HEADER
     415      if( bUseVsp )
     416#endif
     417      {
     418        m_pcEncTop->getVSPBuf()->getCurrSlice()->setPOC( pcPic->getPOC() );
     419        m_pcEncTop->getVSPBuf()->getCurrSlice()->setViewId( pcPic->getViewId() );
     420      }
     421
    381422      pcSlice->setRefPicListMvc( rcListPic, apcInterViewRefPics, bUseVsp ? m_pcEncTop->getVSPBuf() : NULL );
    382423#else
    383424      pcSlice->setRefPicListMvc( rcListPic, apcInterViewRefPics );
    384425#endif
     426
     427#if !VSP_CFG
    385428#if VSP_SLICE_HEADER
    386       pcSlice->setVspFlag( bUseVsp );
     429      pcSlice->setVspFlag( m_pcEncTop->getUseVSP() );
     430      pcSlice->setVspDepthDisableFlag( m_pcEncTop->getVSPDepthDisable() );
     431#endif
    387432#endif
    388433
     
    471516    Int iVSOMode = m_pcEncTop->getVSOMode();
    472517    m_pcRdCost->setVSOMode( iVSOMode  );
     518
    473519#if HHI_VSO_DIST_INT
    474520    m_pcRdCost->setAllowNegDist( m_pcEncTop->getAllowNegDist() );
     
    491537    m_pcRdCost->setDepthPicYuv   ( m_pcEncTop->getEncTop()->getPicYuvFromView( pcSlice->getViewId(), pcSlice->getPOC(), true, false ) );
    492538#endif
    493 
     539#if LGE_WVSO_A0119
     540    Bool bUseWVSO  = m_pcEncTop->getUseWVSO();
     541    m_pcRdCost->setUseWVSO( bUseWVSO );
     542#endif
    494543
    495544  }
     
    11571206          m_pcSbacCoder->load( &pcSbacCoders[0] );
    11581207
    1159 #if DEBUGLOGOUT
    1160         char fname[128];
    1161         sprintf(fname, "%sV%02d_%05d%s.csv", "Log", pcSlice->getViewId(), uiPOCCurr, pcSlice->getIsDepth() ? "depth":"text");
    1162         getSliceEncoder()->getCUEncoder()->m_cDebug.DebugLogFileOpen( fname );
    1163 #endif
    1164 
    11651208        pcSlice->setTileOffstForMultES( uiOneBitstreamPerSliceLength );
    11661209        if (!bEntropySlice)
    11671210        {
     1211#if OL_DEPTHLIMIT_A0044 //start dumping partition information
     1212          m_pcSliceEncoder->setPartDumpFlag(1);
     1213#endif
    11681214          pcSlice->setTileLocationCount ( 0 );
    11691215          m_pcSliceEncoder->encodeSlice(pcPic, pcBitstreamRedirect, pcSubstreamsOut); // redirect is only used for CAVLC tile position info.
     1216#if OL_DEPTHLIMIT_A0044 //stop dumping partition information
     1217          m_pcSliceEncoder->setPartDumpFlag(0);
     1218#endif
    11701219        }
    11711220        else
    11721221        {
     1222#if OL_DEPTHLIMIT_A0044 //start dumping partition information
     1223          m_pcSliceEncoder->setPartDumpFlag(1);
     1224#endif
    11731225          m_pcSliceEncoder->encodeSlice(pcPic, &nalu.m_Bitstream, pcSubstreamsOut); // nalu.m_Bitstream is only used for CAVLC tile position info.
    1174         }
    1175 
    1176 #if DEBUGLOGOUT
    1177         getSliceEncoder()->getCUEncoder()->m_cDebug.DebugLogFileClose();
    1178 #endif
     1226#if OL_DEPTHLIMIT_A0044 //stop dumping partition information
     1227          m_pcSliceEncoder->setPartDumpFlag(0);
     1228#endif
     1229        }
    11791230
    11801231        {
     
    21872238        printf( "V%d ", pcSlice->getRefViewId( RefPicList(iRefList), iRefIndex ) );
    21882239      }
     2240#if VSP_CFG
     2241      else if( pcSlice->getViewId() == pcSlice->getRefViewId( RefPicList(iRefList), iRefIndex )
     2242            && pcSlice->getPOC()    == pcSlice->getRefPOC( RefPicList(iRefList), iRefIndex ) )
     2243      {
     2244        printf( "VS " );
     2245      }
     2246#endif
    21892247      else
    21902248      {
     
    22032261        printf( "V%d ", pcSlice->getRefViewId( (RefPicList)pcSlice->getListIdFromIdxOfLC(iRefIndex), pcSlice->getRefIdxFromIdxOfLC(iRefIndex) ) );
    22042262      }
     2263#if VSP_CFG
     2264      else if( pcSlice->getViewId() == pcSlice->getRefViewId( (RefPicList)pcSlice->getListIdFromIdxOfLC(iRefIndex), pcSlice->getRefIdxFromIdxOfLC(iRefIndex) )
     2265            && pcSlice->getPOC()    == pcSlice->getRefPOC( (RefPicList)pcSlice->getListIdFromIdxOfLC(iRefIndex), pcSlice->getRefIdxFromIdxOfLC(iRefIndex) ) )
     2266      {
     2267        printf( "VS " );
     2268      }
     2269#endif
    22052270      else
    22062271      {
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibEncoder/TEncGOP.h

    r166 r193  
    146146  Void freeAPS     (TComAPS* pAPS, TComSPS* pSPS);
    147147  Void allocAPS    (TComAPS* pAPS, TComSPS* pSPS);
    148 
    149148protected:
    150149  Void encodeAPS   (TComAPS* pcAPS, TComOutputBitstream& APSbs, TComSlice* pcSlice);            //!< encode APS syntax elements
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibEncoder/TEncSbac.cpp

    r166 r193  
    580580{
    581581  PartSize eSize         = pcCU->getPartitionSize( uiAbsPartIdx );
     582#if OL_DEPTHLIMIT_A0044
     583  UInt uiSymbol;
     584#endif
    582585  if ( pcCU->isIntra( uiAbsPartIdx ) )
    583586  {
     
    585588    {
    586589      m_pcBinIf->encodeBin( eSize == SIZE_2Nx2N? 1 : 0, m_cCUPartSizeSCModel.get( 0, 0, 0 ) );
    587     }
     590#if OL_DEPTHLIMIT_A0044
     591      if(pcCU->getPartDumpFlag())
     592      {
     593        uiSymbol = (UInt)(eSize == SIZE_2Nx2N? 1 : 0);
     594        pcCU->updatePartInfo(uiSymbol?0:1,uiDepth); //0 for 2Nx2N and 1 for NxN
     595        pcCU->incrementPartInfo();
     596      }
     597#endif
     598    }
     599#if OL_DEPTHLIMIT_A0044
     600    if(pcCU->getPartDumpFlag() && uiDepth < g_uiMaxCUDepth - g_uiAddCUDepth && !pcCU->getSlice()->isIntra())
     601    {
     602      pcCU->updatePartInfo(0,uiDepth); //0 for 2Nx2N and 1 for NxN
     603      pcCU->incrementPartInfo();
     604    }
     605#endif
    588606    return;
    589607  }
     
    591609  switch(eSize)
    592610  {
    593     case SIZE_2Nx2N:
     611  case SIZE_2Nx2N:
    594612    {
    595613      m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 0) );
     614#if OL_DEPTHLIMIT_A0044
     615      if(pcCU->getPartDumpFlag())
     616      {
     617        pcCU->updatePartInfo(0,uiDepth); //0 for 2Nx2N
     618        pcCU->incrementPartInfo();
     619      }
     620#endif
    596621      break;
    597622    }
    598     case SIZE_2NxN:
    599     case SIZE_2NxnU:
    600     case SIZE_2NxnD:
     623  case SIZE_2NxN:
     624  case SIZE_2NxnU:
     625  case SIZE_2NxnD:
    601626    {
    602627      m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) );
     
    623648        }
    624649      }
     650#if OL_DEPTHLIMIT_A0044
     651      if(pcCU->getPartDumpFlag())
     652      {
     653        pcCU->updatePartInfo(2,uiDepth); //2 for 2NxN
     654        pcCU->incrementPartInfo();
     655      }
     656#endif
    625657      break;
    626658    }
    627     case SIZE_Nx2N:
    628     case SIZE_nLx2N:
    629     case SIZE_nRx2N:
     659  case SIZE_Nx2N:
     660  case SIZE_nLx2N:
     661  case SIZE_nRx2N:
    630662    {
    631663      m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) );
     
    656688        }
    657689      }
     690#if OL_DEPTHLIMIT_A0044
     691      if(pcCU->getPartDumpFlag())
     692      {
     693        pcCU->updatePartInfo(3,uiDepth); //3 for Nx2N
     694        pcCU->incrementPartInfo();
     695      }
     696#endif
    658697      break;
    659698    }
    660     case SIZE_NxN:
     699  case SIZE_NxN:
    661700    {
    662701      if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth && !( pcCU->getSlice()->getSPS()->getDisInter4x4() && pcCU->getWidth(uiAbsPartIdx) == 8 && pcCU->getHeight(uiAbsPartIdx) == 8 ) )
     
    665704        m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 1) );
    666705        m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 2) );
     706#if OL_DEPTHLIMIT_A0044
     707        if(pcCU->getPartDumpFlag())
     708        {
     709          pcCU->updatePartInfo(1,uiDepth); //2Nx2N here since we disable NxN in Inter
     710          pcCU->incrementPartInfo();         
     711        }
     712#endif
     713      }
     714      else
     715      {
     716#if OL_DEPTHLIMIT_A0044
     717        if(pcCU->getPartDumpFlag())
     718        {
     719          pcCU->updatePartInfo(0,uiDepth); //2Nx2N here since we disable NxN in Inter
     720          pcCU->incrementPartInfo();
     721        }
     722#endif
    667723      }
    668724      break;
    669725    }
    670     default:
     726  default:
    671727    {
    672728      assert(0);
     
    785841  uiNumCand = pcCU->getSlice()->getMaxNumMergeCand();
    786842#if HHI_MPI
    787 #if VSP_TEXT_ONLY
     843#if VSP_N
    788844  TComDataCU* pcTextCU = pcCU->getSlice()->getSPS()->getUseMVI() ? pcCU->getSlice()->getTexturePic()->getCU( pcCU->getAddr() ) : NULL;
    789845  Int aiRefIdxVsp[2] = { pcTextCU ? pcTextCU->getCUMvField( RefPicList(0) )->getRefIdx( uiAbsPartIdx ) : -1,
    790846                         pcTextCU ? pcTextCU->getCUMvField( RefPicList(1) )->getRefIdx( uiAbsPartIdx ) : -1 };
    791   const Bool bMVIAvailable = pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE
    792     && !( aiRefIdxVsp[0] >= 0 && pcTextCU->getSlice()->getRefViewId( RefPicList(0), aiRefIdxVsp[0] ) == NUM_VIEW_VSP )
    793     && !( aiRefIdxVsp[1] >= 0 && pcTextCU->getSlice()->getRefViewId( RefPicList(1), aiRefIdxVsp[1] ) == NUM_VIEW_VSP );
    794 #else
    795   const Bool bMVIAvailable = pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE;
     847#if VSP_CFG
     848  const Bool bMVIAvailable = (pcCU->getSlice()->getSPS()->getVspDepthPresentFlag() || pcCU->getSlice()->getViewId()==0)
     849                                ? pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE
     850                                : pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE
     851                                  && !( aiRefIdxVsp[0] >= pcCU->getSlice()->getNumRefIdx( RefPicList(0) ) )
     852                                  && !( aiRefIdxVsp[1] >= pcCU->getSlice()->getNumRefIdx( RefPicList(1) ) );
     853#else
     854  const Bool bMVIAvailable = pcCU->getSlice()->getVspDepthDisableFlag() ? pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE
     855                                                                          && !( aiRefIdxVsp[0] >= 0 && pcTextCU->isVspRef( RefPicList(0), aiRefIdxVsp[0] ) )
     856                                                                          && !( aiRefIdxVsp[1] >= 0 && pcTextCU->isVspRef( RefPicList(1), aiRefIdxVsp[1] ) )
     857                                                                        : pcCU->getSlice()->getSPS()->getUseMVI() && pcCU->getSlice()->getSliceType() != I_SLICE;
     858#endif
    796859#endif
    797860  if( bMVIAvailable )
     
    858921  assert( uiCtx < 3 );
    859922  m_pcBinIf->encodeBin( uiCurrSplitFlag, m_cCUSplitFlagSCModel.get( 0, 0, uiCtx ) );
     923#if OL_DEPTHLIMIT_A0044
     924  if(pcCU->getPartDumpFlag())
     925  {
     926    if(pcCU->getSlice()->isIntra() || (!pcCU->getSlice()->isIntra() && uiCurrSplitFlag!=0))
     927    {
     928      pcCU->updatePartInfo(uiCurrSplitFlag,uiDepth);
     929      pcCU->incrementPartInfo();
     930    }
     931  }
     932#endif
    860933  DTRACE_CABAC_VL( g_nSymbolCounter++ )
    861934  DTRACE_CABAC_T( "\tSplitFlag\n" )
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibEncoder/TEncSearch.cpp

    r166 r193  
    882882#if FORCE_REF_VSP==1
    883883        if( pcCU->getSlice()->getViewId() != 0 )
    884 #if VSP_TEXT_ONLY
    885         if( !pcCU->getSlice()->getSPS()->isDepth() )
     884#if VSP_CFG
     885        if( pcCU->getSlice()->getSPS()->getVspDepthPresentFlag() || !pcCU->getSlice()->getSPS()->isDepth() )
     886#else
     887        if( !pcCU->getSlice()->getVspDepthDisableFlag() || !pcCU->getSlice()->getSPS()->isDepth() )
    886888#endif
    887889          m_pcEntropyCoder->encodeVspFlag ( pcCU, 0, true );
     
    11451147  if ( m_pcRdCost->getUseVSO() )
    11461148  {
    1147     ruiDist += m_pcRdCost->getDistVS  ( pcCU, uiAbsPartIdx, piReco, uiStride, piOrg, uiStride, uiWidth, uiHeight, false, 0 );
     1149#if LGE_WVSO_A0119
     1150    if ( m_pcRdCost->getUseWVSO() )
     1151    {   
     1152      Int iDWeight = m_pcRdCost->getDWeight() * m_pcRdCost->getDWeight();
     1153      Int iVSOWeight = m_pcRdCost->getVSOWeight() * m_pcRdCost->getVSOWeight();
     1154      Dist iD = (Dist) m_pcRdCost->getDistPart( piReco, uiStride, piOrg, uiStride, uiWidth, uiHeight );
     1155      Dist iVSO = m_pcRdCost->getDistVS  ( pcCU, uiAbsPartIdx, piReco, uiStride, piOrg, uiStride, uiWidth, uiHeight, false, 0 );
     1156      ruiDist += (iDWeight * iD + iVSOWeight * iVSO) / ( iDWeight + iVSOWeight);
     1157    }
     1158    else
     1159#endif
     1160    {
     1161      ruiDist += m_pcRdCost->getDistVS  ( pcCU, uiAbsPartIdx, piReco, uiStride, piOrg, uiStride, uiWidth, uiHeight, false, 0 );
     1162    }
    11481163  }
    11491164  else
    11501165#endif
    11511166  {
    1152   ruiDist += m_pcRdCost->getDistPart( piReco, uiStride, piOrg, uiStride, uiWidth, uiHeight );
    1153 }
     1167    ruiDist += m_pcRdCost->getDistPart( piReco, uiStride, piOrg, uiStride, uiWidth, uiHeight );
     1168  }
    11541169}
    11551170
     
    19181933
    19191934            uiSad = (Dist) ( m_pcRdCost->getDistPart( piPred, uiStride, piOrg, uiStride, pcVirRec->getLumaAddr(pcCU->getAddr(),pcCU->getZorderIdxInCU()+uiPartOffset), pcVirOrg->getLumaAddr(pcCU->getAddr(),pcCU->getZorderIdxInCU()+uiPartOffset), pcVirRec->getStride(), uiWidth, uiHeight ) );
     1935#if LGE_WVSO_A0119
     1936            if ( m_pcRdCost->getUseWVSO() )
     1937            {   
     1938              Int iDWeight = m_pcRdCost->getDWeight();
     1939              Int iVSDWeight = m_pcRdCost->getVSDWeight();
     1940              Dist iD = (Dist) m_pcRdCost->calcHAD( piOrg, uiStride, piPred, uiStride, uiWidth, uiHeight );
     1941              uiSad = (Dist) (iDWeight * iD + iVSDWeight * uiSad) / (iDWeight + iVSDWeight);
     1942            }
     1943#endif
    19201944          }
    19211945          else
     
    19241948            Bool bSad = !m_pcRdCost->getUseRenModel();
    19251949            uiSad = m_pcRdCost->getDistVS(pcCU, uiPartOffset, piPred, uiStride, piOrg, uiStride, uiWidth, uiHeight, bSad, 0 );
     1950#if LGE_WVSO_A0119
     1951            if ( m_pcRdCost->getUseWVSO() )
     1952            {   
     1953              Int iDWeight = m_pcRdCost->getDWeight()*m_pcRdCost->getDWeight();
     1954              Int iVSDWeight = m_pcRdCost->getVSOWeight()*m_pcRdCost->getVSOWeight();
     1955              Dist iD = (Dist) m_pcRdCost->getDistPart( piOrg, uiStride, piPred, uiStride, uiWidth, uiHeight );
     1956              uiSad = (Dist) (iDWeight * iD + iVSDWeight * uiSad) / (iDWeight + iVSDWeight);
     1957            }
     1958#endif
    19261959          }
    19271960
     
    29602993      {
    29612994#if VSP_MV_ZERO
    2962         bIsVsp = (pcCU->getSlice()->getViewId() && pcCU->getSlice()->getRefViewId(eRefPicList, iRefIdxTemp) == NUM_VIEW_VSP);
     2995        bIsVsp = (pcCU->getSlice()->getViewId() && pcCU->isVspRef(eRefPicList, iRefIdxTemp));
    29632996        //if( bIsVsp && !bWholeCUCanBeSynthesized )
    29642997        //{
     
    29693002        if( pcCU->getResPredFlag( 0 ))
    29703003        {
    2971           if(pcCU->getSlice()->getViewId() == pcCU->getSlice()->getRefViewId(eRefPicList, iRefIdxTemp))
     3004          if(pcCU->getSlice()->getViewId() == pcCU->getSlice()->getRefViewId(eRefPicList, iRefIdxTemp)
     3005#if VSP_N
     3006          && pcCU->getSlice()->getPOC() != pcCU->getSlice()->getRefPOC(eRefPicList, iRefIdxTemp)
     3007#endif
     3008            )
    29723009          { // subtract residual prediction from original in motion search
    29733010            if(!bLastResiFlag)
     
    30683105              {
    30693106#if VSP_MV_ZERO
    3070                 if( pcCU->getSlice()->getViewId() && pcCU->getSlice()->getRefViewId(eRefPicList, iRefIdxTemp) == NUM_VIEW_VSP )
     3107                if( pcCU->getSlice()->getViewId() && pcCU->isVspRef(eRefPicList, iRefIdxTemp) )
    30713108                {
    30723109                  cMvTemp[1][iRefIdxTemp].setZero();
     
    32143251      {
    32153252#if VSP_MV_ZERO
    3216         bIsVsp = (pcCU->getSlice()->getViewId() && pcCU->getSlice()->getRefViewId(REF_PIC_LIST_1, bestBiPRefIdxL1) == NUM_VIEW_VSP);
     3253        bIsVsp = (pcCU->getSlice()->getViewId() && pcCU->isVspRef(REF_PIC_LIST_1, bestBiPRefIdxL1));
    32173254
    32183255        if( bIsVsp )
     
    33143351        {
    33153352#if VSP_MV_ZERO
    3316           bIsVsp = (pcCU->getSlice()->getViewId() && pcCU->getSlice()->getRefViewId(eRefPicList, iRefIdxTemp) == NUM_VIEW_VSP);
     3353          bIsVsp = (pcCU->getSlice()->getViewId() && pcCU->isVspRef(eRefPicList, iRefIdxTemp));
    33173354          //if( bIsVsp && !bWholeCUCanBeSynthesized )
    33183355          //{
     
    33433380
    33443381          iPredFrom = iBestRefIdx >= 0 ? 3 : 1;
    3345           if(iBestRefIdx >= 0 && pcCU->getSlice()->getViewId() == pcCU->getSlice()->getRefViewId(eRefPicList == REF_PIC_LIST_0 ? REF_PIC_LIST_1 : REF_PIC_LIST_0, iBestRefIdx))
     3382          if(iBestRefIdx >= 0 && pcCU->getSlice()->getViewId() == pcCU->getSlice()->getRefViewId(eRefPicList == REF_PIC_LIST_0 ? REF_PIC_LIST_1 : REF_PIC_LIST_0, iBestRefIdx)
     3383#if VSP_N
     3384                              && pcCU->getSlice()->getPOC() != pcCU->getSlice()->getRefPOC(eRefPicList == REF_PIC_LIST_0 ? REF_PIC_LIST_1 : REF_PIC_LIST_0, iBestRefIdx)
     3385#endif
     3386            )
    33463387            iAddResiShift++;
    3347           if(pcCU->getSlice()->getViewId() == pcCU->getSlice()->getRefViewId(eRefPicList, iRefIdxTemp))
     3388          if(pcCU->getSlice()->getViewId() == pcCU->getSlice()->getRefViewId(eRefPicList, iRefIdxTemp)
     3389#if VSP_N
     3390          && pcCU->getSlice()->getPOC() != pcCU->getSlice()->getRefPOC(eRefPicList, iRefIdxTemp)
     3391#endif
     3392            )
    33483393            iAddResiShift++;
    33493394          iAddResiShift = (pcCU->getSlice()->getPPS()->getUseWP() || iPredFrom != 3) ? (iAddResiShift >= 0 ? 0 : -1) : (iAddResiShift >= 0 ? 1-iAddResiShift : -1);
     
    34203465          {
    34213466#if VSP_MV_ZERO
    3422             bIsVsp = (pcCU->getSlice()->getViewId() && pcCU->getSlice()->getRefViewId(REF_PIC_LIST_0, iRefIdxBi[0]) == NUM_VIEW_VSP);
     3467            bIsVsp = (pcCU->getSlice()->getViewId() && pcCU->isVspRef(REF_PIC_LIST_0, iRefIdxBi[0]));
    34233468
    34243469            if( !bIsVsp )
     
    34353480#endif
    34363481#if VSP_MV_ZERO
    3437               bIsVsp = (pcCU->getSlice()->getViewId() && pcCU->getSlice()->getRefViewId(REF_PIC_LIST_1, iRefIdxBi[1]) == NUM_VIEW_VSP);
     3482              bIsVsp = (pcCU->getSlice()->getViewId() && pcCU->isVspRef(REF_PIC_LIST_1, iRefIdxBi[1]));
    34383483
    34393484              if( !bIsVsp )
     
    36063651     
    36073652#if VSP_MV_ZERO
    3608       bIsVsp = (pcCU->getSlice()->getViewId() && pcCU->getSlice()->getRefViewId(REF_PIC_LIST_0, iRefIdxBi[0]) == NUM_VIEW_VSP);
     3653      bIsVsp = (pcCU->getSlice()->getViewId() && pcCU->isVspRef(REF_PIC_LIST_0, iRefIdxBi[0]));
    36093654      if( !bIsVsp )
    36103655      {
     
    36143659#if VSP_MV_ZERO
    36153660      }
    3616       bIsVsp = (pcCU->getSlice()->getViewId() && pcCU->getSlice()->getRefViewId(REF_PIC_LIST_1, iRefIdxBi[1]) == NUM_VIEW_VSP);
     3661      bIsVsp = (pcCU->getSlice()->getViewId() && pcCU->isVspRef(REF_PIC_LIST_1, iRefIdxBi[1]));
    36173662      if( !bIsVsp )
    36183663      {
     
    36383683     
    36393684#if VSP_MV_ZERO
    3640       bIsVsp = (pcCU->getSlice()->getViewId() && pcCU->getSlice()->getRefViewId(REF_PIC_LIST_0, iRefIdx[0]) == NUM_VIEW_VSP);
     3685      bIsVsp = (pcCU->getSlice()->getViewId() && pcCU->isVspRef(REF_PIC_LIST_0, iRefIdx[0]));
    36413686      if( !bIsVsp )
    36423687      {
     
    36623707     
    36633708#if VSP_MV_ZERO
    3664       bIsVsp = (pcCU->getSlice()->getViewId() && pcCU->getSlice()->getRefViewId(REF_PIC_LIST_1, iRefIdx[1]) == NUM_VIEW_VSP);
     3709      bIsVsp = (pcCU->getSlice()->getViewId() && pcCU->isVspRef(REF_PIC_LIST_1, iRefIdx[1]));
    36653710      if( !bIsVsp )
    36663711      {
     
    46554700    {
    46564701      uiDistortion = m_pcRdCost->getDistVS( pcCU, 0, rpcYuvRec->getLumaAddr(), rpcYuvRec->getStride(),  pcYuvOrg->getLumaAddr(), pcYuvOrg->getStride(),  uiWidth,      uiHeight     , false, 0 );
     4702#if LGE_WVSO_A0119
     4703      if ( m_pcRdCost->getUseWVSO() )
     4704      {   
     4705        Int iDWeight = m_pcRdCost->getDWeight() * m_pcRdCost->getDWeight();
     4706        Int iVSOWeight = m_pcRdCost->getVSOWeight() * m_pcRdCost->getVSOWeight();
     4707        Dist iD   = (Dist) m_pcRdCost->getDistPart( rpcYuvRec->getLumaAddr(), rpcYuvRec->getStride(),  pcYuvOrg->getLumaAddr(), pcYuvOrg->getStride(),  uiWidth,      uiHeight      );
     4708        uiDistortion = (iDWeight * iD + iVSOWeight * (Dist)uiDistortion) / ( iDWeight + iVSOWeight);
     4709      }
     4710#endif
    46574711    }
    46584712    else   
     
    50145068  {
    50155069    uiDistortionBest = m_pcRdCost->getDistVS  ( pcCU, 0, rpcYuvRec->getLumaAddr(), rpcYuvRec->getStride(),  pcYuvOrg->getLumaAddr(), pcYuvOrg->getStride(),  uiWidth,      uiHeight, false, 0    );
     5070#if LGE_WVSO_A0119
     5071    if ( m_pcRdCost->getUseWVSO() )
     5072    {   
     5073      Int iDWeight = m_pcRdCost->getDWeight() * m_pcRdCost->getDWeight();
     5074      Int iVSOWeight = m_pcRdCost->getVSOWeight() * m_pcRdCost->getVSOWeight();
     5075      Dist iD        = (Dist) m_pcRdCost->getDistPart( rpcYuvRec->getLumaAddr(), rpcYuvRec->getStride(),  pcYuvOrg->getLumaAddr(), pcYuvOrg->getStride(),  uiWidth,      uiHeight      );
     5076      uiDistortionBest = (iDWeight * iD + iVSOWeight * (Dist) uiDistortionBest) / ( iDWeight + iVSOWeight);
     5077    }
     5078#endif
    50165079  }
    50175080  else
     
    52495312        TComPicYuv* pcVirOrg = m_pcRdCost->getDepthPicYuv();
    52505313        uiDistY = m_pcRdCost->getDistPart( m_pTempPel, 1<< uiLog2TrSize, pcResi->getLumaAddr( uiAbsPartIdx ), pcResi->getStride(), pcVirRec->getLumaAddr(pcCU->getAddr(),pcCU->getZorderIdxInCU()+uiAbsPartIdx), pcVirOrg->getLumaAddr(pcCU->getAddr(),pcCU->getZorderIdxInCU()+uiAbsPartIdx), pcVirRec->getStride(), 1<< uiLog2TrSize, 1<< uiLog2TrSize );
     5314#if LGE_WVSO_A0119
     5315        if ( m_pcRdCost->getUseWVSO() )
     5316        {   
     5317          Int iDWeight = m_pcRdCost->getDWeight() * m_pcRdCost->getDWeight();
     5318          Int iVSDWeight = m_pcRdCost->getVSDWeight() * m_pcRdCost->getVSDWeight();
     5319          Dist iD   = (Dist) m_pcRdCost->getDistPart( m_pTempPel, trWidth, pcResi->getLumaAddr( absTUPartIdx ), pcResi->getStride(), trWidth, trHeight );
     5320          uiDistY = (iDWeight * iD + iVSDWeight * (Dist)uiDistY) / ( iDWeight + iVSDWeight);
     5321        }
     5322#endif
    52515323      }
    52525324      else
     
    52545326      {     
    52555327        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
     5328#if LGE_WVSO_A0119
     5329        if ( m_pcRdCost->getUseWVSO() )
     5330        {   
     5331          Int iDWeight = m_pcRdCost->getDWeight() * m_pcRdCost->getDWeight();
     5332          Int iVSOWeight = m_pcRdCost->getVSOWeight() * m_pcRdCost->getVSOWeight();
     5333          Dist iD   = (Dist) m_pcRdCost->getDistPart( m_pTempPel, trWidth, pcResi->getLumaAddr( absTUPartIdx ), pcResi->getStride(), trWidth, trHeight );
     5334          uiDistY = (iDWeight * iD + iVSOWeight * (Dist)uiDistY) / ( iDWeight + iVSOWeight);
     5335        }
     5336#endif
    52565337      }
    52575338    }
     
    52995380          TComPicYuv* pcVirOrg = m_pcRdCost->getDepthPicYuv();
    53005381          uiNonzeroDistY = m_pcRdCost->getDistPart( m_pcQTTempTComYuv[uiQTTempAccessLayer].getLumaAddr( uiAbsPartIdx ), m_pcQTTempTComYuv[uiQTTempAccessLayer].getStride(), pcResi->getLumaAddr( uiAbsPartIdx ), pcResi->getStride(), pcVirRec->getLumaAddr( pcCU->getAddr(), pcCU->getZorderIdxInCU()+uiAbsPartIdx ), pcVirOrg->getLumaAddr( pcCU->getAddr(), pcCU->getZorderIdxInCU()+uiAbsPartIdx ), pcVirRec->getStride(), 1<< uiLog2TrSize,    1<< uiLog2TrSize );
     5382#if LGE_WVSO_A0119
     5383          if ( m_pcRdCost->getUseWVSO() )
     5384          {   
     5385            Int iDWeight = m_pcRdCost->getDWeight() * m_pcRdCost->getDWeight();
     5386            Int iVSDWeight = m_pcRdCost->getVSDWeight() * m_pcRdCost->getVSDWeight();
     5387            Dist iD = (Dist) m_pcRdCost->getDistPart( m_pcQTTempTComYuv[uiQTTempAccessLayer].getLumaAddr( absTUPartIdx ), m_pcQTTempTComYuv[uiQTTempAccessLayer].getStride(),pcResi->getLumaAddr( absTUPartIdx ), pcResi->getStride(), trWidth,trHeight );
     5388            uiNonzeroDistY = (iDWeight * iD + iVSDWeight * (Dist) uiNonzeroDistY) / ( iDWeight + iVSDWeight);
     5389          }
     5390#endif
    53015391        }
    53025392        else
     
    53065396          uiNonzeroDistY = m_pcRdCost->getDistVS( pcCU, uiAbsPartIdx, m_cYuvRecTemp.getLumaAddr(uiAbsPartIdx), m_cYuvRecTemp.getStride(),
    53075397                                                  pcOrg->getLumaAddr( uiAbsPartIdx ), pcOrg->getStride(), 1<< uiLog2TrSize,   1<< uiLog2TrSize, false, 0 );
     5398#if LGE_WVSO_A0119
     5399          if ( m_pcRdCost->getUseWVSO() )
     5400          {   
     5401            Int iDWeight = m_pcRdCost->getDWeight() * m_pcRdCost->getDWeight();
     5402            Int iVSOWeight = m_pcRdCost->getVSOWeight() * m_pcRdCost->getVSOWeight();
     5403            Dist iD = (Dist) m_pcRdCost->getDistPart( m_pcQTTempTComYuv[uiQTTempAccessLayer].getLumaAddr( absTUPartIdx ), m_pcQTTempTComYuv[uiQTTempAccessLayer].getStride(),pcResi->getLumaAddr( absTUPartIdx ), pcResi->getStride(), trWidth,trHeight );
     5404            uiNonzeroDistY = (iDWeight * iD + iVSOWeight * (Dist) uiNonzeroDistY) / ( iDWeight + iVSOWeight);
     5405          }
     5406#endif
    53085407        }
    53095408      }
     
    60036102#if FORCE_REF_VSP==1
    60046103    if( pcCU->getSlice()->getViewId() != 0 )
    6005 #if VSP_TEXT_ONLY
    6006     if( !pcCU->getSlice()->getSPS()->isDepth() )
     6104#if VSP_CFG
     6105    if( pcCU->getSlice()->getSPS()->getVspDepthPresentFlag() || !pcCU->getSlice()->getSPS()->isDepth() )
     6106#else
     6107    if( !pcCU->getSlice()->getVspDepthDisableFlag() || !pcCU->getSlice()->getSPS()->isDepth() )
    60076108#endif
    60086109      m_pcEntropyCoder->encodeVspFlag ( pcCU, 0, true );
     
    64006501          TComPicYuv* pcVirOrg = m_pcRdCost->getDepthPicYuv();
    64016502          uiActDist = m_pcRdCost->getDistPart( piPredic, uiStride, piOrig, uiStride, pcVirRec->getLumaAddr(pcCU->getAddr(),pcCU->getZorderIdxInCU()), pcVirOrg->getLumaAddr(pcCU->getAddr(),pcCU->getZorderIdxInCU()), pcVirRec->getStride(), uiWidth, uiHeight );
     6503#if LGE_WVSO_A0119
     6504          if ( m_pcRdCost->getUseWVSO() )
     6505          {   
     6506            Int iDWeight = m_pcRdCost->getDWeight() * m_pcRdCost->getDWeight();
     6507            Int iVSDWeight = m_pcRdCost->getVSDWeight() * m_pcRdCost->getVSDWeight();
     6508            Dist iD = (Dist) m_pcRdCost->getDistPart( piPredic, uiStride, piOrig, uiStride, uiWidth, uiHeight, false, DF_SAD );
     6509            uiActDist = (iDWeight * iD + iVSDWeight * (Dist) uiActDist) / ( iDWeight + iVSDWeight);
     6510          }
     6511#endif // LGE_WVSO_A0119
    64026512        }
    64036513        else       
     
    64056515        {       
    64066516          uiActDist = m_pcRdCost->getDistVS( pcCU, 0, piPredic, uiStride,  piOrig, uiStride, uiWidth, uiHeight, false, 0 );
     6517#if LGE_WVSO_A0119
     6518          if ( m_pcRdCost->getUseWVSO() )
     6519          {   
     6520            Int iDWeight = m_pcRdCost->getDWeight() * m_pcRdCost->getDWeight();
     6521            Int iVSOWeight = m_pcRdCost->getVSOWeight() * m_pcRdCost->getVSOWeight();
     6522            Dist iD = (Dist) m_pcRdCost->getDistPart( piPredic, uiStride, piOrig, uiStride, uiWidth, uiHeight, false, DF_SAD );
     6523            uiActDist = (iDWeight * iD + iVSOWeight * (Dist) uiActDist) / ( iDWeight + iVSOWeight);
     6524          }
     6525#endif // LGE_WVSO_A0119
    64076526        }
    64086527#else // FIX_RDO_MACRO
     
    64136532          TComPicYuv* pcVirOrg = m_pcRdCost->getDepthPicYuv();
    64146533          uiActDist = m_pcRdCost->getDistPart( piPredic, uiStride, piOrig, uiStride, pcVirRec->getLumaAddr(pcCU->getAddr(),pcCU->getZorderIdxInCU()), pcVirOrg->getLumaAddr(pcCU->getAddr(),pcCU->getZorderIdxInCU()), pcVirRec->getStride(), uiWidth, uiHeight );
     6534#if LGE_WVSO_A0119
     6535          if ( m_pcRdCost->getUseWVSO() )
     6536          {   
     6537            Int iDWeight = m_pcRdCost->getDWeight() * m_pcRdCost->getDWeight();
     6538            Int iVSDWeight = m_pcRdCost->getVSDWeight() * m_pcRdCost->getVSDWeight();
     6539            Dist iD = (Dist) m_pcRdCost->getDistPart( piPredic, uiStride, piOrig, uiStride, uiWidth, uiHeight, false, DF_SAD );
     6540            uiActDist = (iDWeight * iD + iVSDWeight * (Dist) uiActDist) / ( iDWeight + iVSDWeight);
     6541          }
     6542#endif // LGE_WVSO_A0119
    64156543        }
    64166544        else       
     
    64186546        {       
    64196547          uiActDist = m_pcRdCost->getDistVS( pcCU, 0, piPredic, uiStride,  piOrig, uiStride, uiWidth, uiHeight, false, 0 );
     6548#if LGE_WVSO_A0119
     6549          if ( m_pcRdCost->getUseWVSO() )
     6550          {   
     6551            Int iDWeight = m_pcRdCost->getDWeight() * m_pcRdCost->getDWeight();
     6552            Int iVSOWeight = m_pcRdCost->getVSOWeight() * m_pcRdCost->getVSOWeight();
     6553            Dist iD = (Dist) m_pcRdCost->getDistPart( piPredic, uiStride, piOrig, uiStride, uiWidth, uiHeight, false, DF_SAD );
     6554            uiActDist = (iDWeight * iD + iVSOWeight * (Dist) uiActDist) / ( iDWeight + iVSOWeight);
     6555          }
     6556#endif // LGE_WVSO_A0119
    64206557        }
    64216558#endif // SAIT_VSO_EST_A0033 <-- wrong #endif should be removed
     
    65276664        TComPicYuv* pcVirOrg = m_pcRdCost->getDepthPicYuv();
    65286665        uiActDist = m_pcRdCost->getDistPart( piPred, uiPredStride, piRef, uiRefStride, pcVirRec->getLumaAddr(pcCU->getAddr(),pcCU->getZorderIdxInCU()), pcVirOrg->getLumaAddr(pcCU->getAddr(),pcCU->getZorderIdxInCU()), pcVirRec->getStride(), uiWidth, uiHeight );
     6666#if LGE_WVSO_A0119
     6667        if ( m_pcRdCost->getUseWVSO() )
     6668        {   
     6669          Int iDWeight = m_pcRdCost->getDWeight() * m_pcRdCost->getDWeight();
     6670          Int iVSDWeight = m_pcRdCost->getVSDWeight() * m_pcRdCost->getVSDWeight();
     6671          Dist iD = (Dist) m_pcRdCost->getDistPart( piPred, uiPredStride, piRef, uiRefStride, uiWidth, uiHeight, false, DF_SAD );
     6672          uiActDist = (iDWeight * iD + iVSDWeight * (Int) uiActDist) / ( iDWeight + iVSDWeight);
     6673        }
     6674#endif
    65296675      }
    65306676      else
     
    65326678      {     
    65336679        uiActDist = m_pcRdCost->getDistVS( pcCU, 0, piPred, uiPredStride, piRef, uiRefStride, uiWidth, uiHeight, false, 0 );
     6680#if LGE_WVSO_A0119
     6681        if ( m_pcRdCost->getUseWVSO() )
     6682        {   
     6683          Int iDWeight = m_pcRdCost->getDWeight() * m_pcRdCost->getDWeight();
     6684          Int iVSOWeight = m_pcRdCost->getVSOWeight() * m_pcRdCost->getVSOWeight();
     6685          Dist iD = (Dist) m_pcRdCost->getDistPart( piPred, uiPredStride, piRef, uiRefStride, uiWidth, uiHeight, false, DF_SAD );
     6686          uiActDist = (iDWeight * iD + iVSOWeight * (Int) uiActDist) / ( iDWeight + iVSOWeight);
     6687        }
     6688#endif
    65346689      }
    65356690    }
     
    65936748        TComPicYuv* pcVirOrg = m_pcRdCost->getDepthPicYuv();
    65946749        uiActDist = m_pcRdCost->getDistPart( piPred, uiPredStride, piRef, uiRefStride, pcVirRec->getLumaAddr(pcCU->getAddr(),pcCU->getZorderIdxInCU()+uiAbsPtIdx), pcVirOrg->getLumaAddr(pcCU->getAddr(),pcCU->getZorderIdxInCU()+uiAbsPtIdx), pcVirRec->getStride(), uiWidth, uiHeight );
     6750#if LGE_WVSO_A0119
     6751        if ( m_pcRdCost->getUseWVSO() )
     6752        {   
     6753          Int iDWeight = m_pcRdCost->getDWeight() * m_pcRdCost->getDWeight();
     6754          Int iVSDWeight = m_pcRdCost->getVSDWeight() * m_pcRdCost->getVSDWeight();
     6755          Dist iD = (Dist) m_pcRdCost->getDistPart( piPred, uiPredStride, piRef, uiRefStride, uiWidth, uiHeight, false, DF_SAD );
     6756          uiActDist = (iDWeight * iD + iVSDWeight * (Int) uiActDist) / ( iDWeight + iVSDWeight);
     6757        }
     6758#endif
    65956759      }
    65966760      else
     
    65986762      {     
    65996763        uiActDist = m_pcRdCost->getDistVS( pcCU, 0, piPred, uiPredStride, piRef, uiRefStride, uiWidth, uiHeight, false, 0 );
     6764#if LGE_WVSO_A0119
     6765        if ( m_pcRdCost->getUseWVSO() )
     6766        {   
     6767          Int iDWeight = m_pcRdCost->getDWeight() * m_pcRdCost->getDWeight();
     6768          Int iVSOWeight = m_pcRdCost->getVSOWeight() * m_pcRdCost->getVSOWeight();
     6769          Dist iD = (Dist) m_pcRdCost->getDistPart( piPred, uiPredStride, piRef, uiRefStride, uiWidth, uiHeight, false, DF_SAD );
     6770          uiActDist = (iDWeight * iD + iVSOWeight * (Int) uiActDist) / ( iDWeight + iVSOWeight);
     6771        }
     6772#endif
    66006773      }
    66016774    }
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibEncoder/TEncSlice.cpp

    r102 r193  
    376376  m_pcRdCost->setDisparityCoeff( m_pcCfg->getDispCoeff() );
    377377#endif
    378 
     378#if LGE_WVSO_A0119
     379  if( m_pcCfg->getUseWVSO() && m_pcCfg->isDepthCoder() )
     380  {
     381
     382    Int iDWeight, iVSOWeight, iVSDWeight;
     383    iDWeight = m_pcCfg->getDWeight();
     384    iVSOWeight = m_pcCfg->getVSOWeight();
     385    iVSDWeight = m_pcCfg->getVSDWeight();
     386
     387    m_pcRdCost->setDWeight( iDWeight );
     388    m_pcRdCost->setVSOWeight( iVSOWeight );
     389    m_pcRdCost->setVSDWeight( iVSDWeight );
     390
     391  }
     392#endif
    379393#if RDOQ_CHROMA_LAMBDA
    380394// for RDOQ
     
    831845#endif
    832846
     847#if OL_DEPTHLIMIT_A0044 //stop dumping partition information
     848    m_bDumpPartInfo = 0;
     849    pcCU->setPartDumpFlag(m_bDumpPartInfo);
     850#endif
    833851
    834852    // inherit from TR if necessary, select substream to use.
     
    12901308
    12911309    TComDataCU*& pcCU = rpcPic->getCU( uiCUAddr );   
     1310#if OL_DEPTHLIMIT_A0044
     1311    pcCU->setPartDumpFlag(m_bDumpPartInfo);
     1312    pcCU->resetPartInfo();
     1313#endif
    12921314#if !REMOVE_TILE_DEPENDENCE
    12931315    if( (rpcPic->getPicSym()->getTileBoundaryIndependenceIdr()==0) && (rpcPic->getPicSym()->getNumColumnsMinus1()!=0) )
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibEncoder/TEncSlice.h

    r77 r193  
    101101 
    102102  UInt                    m_uiSliceIdx;
     103#if OL_DEPTHLIMIT_A0044 //flag to signal to start dumping
     104  Bool                    m_bDumpPartInfo;
     105#endif
    103106public:
    104107  TEncSlice();
     
    128131  UInt    getSliceIdx()         { return m_uiSliceIdx;                    }
    129132  Void    setSliceIdx(UInt i)   { m_uiSliceIdx = i;                       }
     133#if OL_DEPTHLIMIT_A0044 //flag to signal to start dumping
     134  Void    setPartDumpFlag(Bool flag) { m_bDumpPartInfo = flag;};
     135#endif
    130136};
    131137
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibEncoder/TEncTop.cpp

    r166 r193  
    8787#if VSP_SLICE_HEADER
    8888  m_bUseVSP = false;
    89 #endif
    90 
     89  m_bVSPDepthDisable = false;
     90#endif
    9191}
    9292
     
    198198  m_pcPicVSP = new TComPic;
    199199  m_pcPicVSP->create( getSourceWidth(), getSourceHeight(), g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth );
    200   //m_pcPicVSP->getCurrSlice()->setViewId( this->getViewId() );
    201   m_pcPicVSP->getCurrSlice()->setViewId( NUM_VIEW_VSP );
    202200  m_pcPicVSP->getCurrSlice()->setViewOrderIdx( m_iViewOrderIdx );
    203201
    204202  m_pcPicAvail = new TComPic;
    205203  m_pcPicAvail->create( getSourceWidth(), getSourceHeight(), g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth );
    206   m_pcPicAvail->getCurrSlice()->setViewId( 99 );
    207204  m_pcPicAvail->getCurrSlice()->setViewOrderIdx( m_iViewOrderIdx );
    208205#endif
    209 
    210206}
    211207
     
    854850  m_cSPS.setUseDMM( m_bUseDMM );
    855851#endif
     852#if OL_DEPTHLIMIT_A0044
     853  m_cSPS.setUseDPL( m_bDepthPartitionLimiting );
     854#endif
    856855#if HHI_MPI
    857856  m_cSPS.setUseMVI( m_bUseMVI );
     
    894893    }
    895894  }
     895#if VSP_N
     896  m_cSPS.setVspPresentFlag( m_bUseVSP );
     897#if VSP_CFG
     898  m_cSPS.setVspDepthPresentFlag( m_bVSPDepthDisable ? false : true );
     899#endif
     900#endif
    896901}
    897902
     
    11851190
    11861191    // # substreams is "per tile" when tiles are independent.
     1192#if FIX_REMOVE_TILE_DEPENDENCE
     1193    if ( m_iWaveFrontSynchro )
     1194#else
    11871195    if (m_iTileBoundaryIndependenceIdr && m_iWaveFrontSynchro)
     1196#endif
    11881197    {
    11891198      m_cPPS.setNumSubstreams(m_iWaveFrontSubstreams * (m_iNumColumnsMinus1+1)*(m_iNumRowsMinus1+1));
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibEncoder/TEncTop.h

    r166 r193  
    150150#endif
    151151
    152 #if VSP_SLICE_HEADER
    153   Bool                    m_bUseVSP;
    154 #endif
    155 
    156152protected:
    157153  Void  xGetNewPicBuffer  ( TComPic*& rpcPic );           ///< get picture buffer which will be processed
     
    251247#endif
    252248
    253 #if VSP_SLICE_HEADER
    254   Void                    setUseVSP   ( Bool val ) { m_bUseVSP = val; }
    255   Bool                    getUseVSP             () { return m_bUseVSP; }
    256 #endif
    257 
    258249  // -------------------------------------------------------------------------------------------------------------------
    259250  // encoder function
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibRenderer/TRenModel.cpp

    r166 r193  
    4242  m_iWidth             = -1;
    4343  m_iHeight            = -1;
     44#if FIX_VSO_SETUP
     45  m_iUsedHeight        = -1;
     46#endif
    4447  m_iNumOfBaseViews    = -1;
    4548  m_iSampledWidth      = -1;
     
    434437{
    435438  AOT( iViewNum < 0 || iViewNum > m_iNumOfBaseViews );
     439#if FIX_VSO_SETUP
     440  AOF( pcPicYuvVideoData->getHeight() >= m_iUsedHeight + m_uiHorOff && pcPicYuvVideoData->getWidth() == m_iWidth );
     441  AOF( pcPicYuvDepthData->getHeight() >= m_iUsedHeight + m_uiHorOff && pcPicYuvDepthData->getWidth() == m_iWidth );
     442#else
    436443  AOF( pcPicYuvVideoData->getHeight() <= m_iHeight + m_uiHorOff || pcPicYuvVideoData->getWidth() == m_iWidth );
    437444  AOF( pcPicYuvDepthData->getHeight() <= m_iHeight + m_uiHorOff || pcPicYuvDepthData->getWidth() == m_iWidth );
     445#endif
    438446
    439447  pcPicYuvVideoData->extendPicBorder();
    440448
    441  
    442 
    443 
     449#if FIX_VSO_SETUP
     450  TRenFilter::sampleHorUp   ( m_iShiftPrec, pcPicYuvVideoData->getLumaAddr() +  m_uiHorOff        * pcPicYuvVideoData->getStride () , pcPicYuvVideoData->getStride() , m_iWidth,      m_iUsedHeight,      m_aapiCurVideoPel[ iViewNum ][0], m_aaiCurVideoStrides[iViewNum][0] );
     451  TRenFilter::sampleCUpHorUp( m_iShiftPrec, pcPicYuvVideoData->getCbAddr()   + (m_uiHorOff >> 1 ) * pcPicYuvVideoData->getCStride() , pcPicYuvVideoData->getCStride(), m_iWidth >> 1, m_iUsedHeight >> 1, m_aapiCurVideoPel[ iViewNum ][1], m_aaiCurVideoStrides[iViewNum][1] );
     452  TRenFilter::sampleCUpHorUp( m_iShiftPrec, pcPicYuvVideoData->getCrAddr()   + (m_uiHorOff >> 1 ) * pcPicYuvVideoData->getCStride() , pcPicYuvVideoData->getCStride(), m_iWidth >> 1, m_iUsedHeight >> 1, m_aapiCurVideoPel[ iViewNum ][2], m_aaiCurVideoStrides[iViewNum][2] );
     453  TRenFilter::copy          (               pcPicYuvDepthData->getLumaAddr() +  m_uiHorOff        * pcPicYuvDepthData->getStride () , pcPicYuvDepthData->getStride(),  m_iWidth,      m_iUsedHeight,      m_apiCurDepthPel [ iViewNum],     m_aiCurDepthStrides [iViewNum]    );
     454#else
    444455  TRenFilter::sampleHorUp   ( m_iShiftPrec, pcPicYuvVideoData->getLumaAddr() +  m_uiHorOff        * pcPicYuvVideoData->getStride () , pcPicYuvVideoData->getStride() , m_iWidth,      m_iHeight,      m_aapiCurVideoPel[ iViewNum ][0], m_aaiCurVideoStrides[iViewNum][0] );
    445456  TRenFilter::sampleCUpHorUp( m_iShiftPrec, pcPicYuvVideoData->getCbAddr()   + (m_uiHorOff >> 1 ) * pcPicYuvVideoData->getCStride() , pcPicYuvVideoData->getCStride(), m_iWidth >> 1, m_iHeight >> 1, m_aapiCurVideoPel[ iViewNum ][1], m_aaiCurVideoStrides[iViewNum][1] );
    446457  TRenFilter::sampleCUpHorUp( m_iShiftPrec, pcPicYuvVideoData->getCrAddr()   + (m_uiHorOff >> 1 ) * pcPicYuvVideoData->getCStride() , pcPicYuvVideoData->getCStride(), m_iWidth >> 1, m_iHeight >> 1, m_aapiCurVideoPel[ iViewNum ][2], m_aaiCurVideoStrides[iViewNum][2] );
    447458  TRenFilter::copy          (               pcPicYuvDepthData->getLumaAddr() +  m_uiHorOff        * pcPicYuvDepthData->getStride () , pcPicYuvDepthData->getStride(),  m_iWidth,      m_iHeight,      m_apiCurDepthPel [ iViewNum],     m_aiCurDepthStrides [iViewNum]    );
     459#endif
    448460
    449461  // Used for rendering reference pic from original video data
     
    453465  if ( m_abSetupVideoFromOrgForView[iViewNum] )
    454466  {
     467#if FIX_VSO_SETUP
     468    AOF( pcPicYuvOrgVideoData->getHeight() >= m_iUsedHeight + m_uiHorOff && pcPicYuvOrgVideoData->getWidth() == m_iWidth );
     469    pcPicYuvOrgVideoData->extendPicBorder();
     470    TRenFilter::sampleHorUp   ( m_iShiftPrec, pcPicYuvOrgVideoData->getLumaAddr() +  m_uiHorOff        * pcPicYuvOrgVideoData->getStride() , pcPicYuvOrgVideoData->getStride() , m_iWidth,      m_iUsedHeight,      m_aapiOrgVideoPel[ iViewNum ][0], m_aaiOrgVideoStrides[iViewNum][0] );
     471    TRenFilter::sampleCUpHorUp( m_iShiftPrec, pcPicYuvOrgVideoData->getCbAddr()   + (m_uiHorOff >> 1 ) * pcPicYuvOrgVideoData->getCStride(), pcPicYuvOrgVideoData->getCStride(), m_iWidth >> 1, m_iUsedHeight >> 1, m_aapiOrgVideoPel[ iViewNum ][1], m_aaiOrgVideoStrides[iViewNum][1] );
     472    TRenFilter::sampleCUpHorUp( m_iShiftPrec, pcPicYuvOrgVideoData->getCrAddr()   + (m_uiHorOff >> 1 ) * pcPicYuvOrgVideoData->getCStride(), pcPicYuvOrgVideoData->getCStride(), m_iWidth >> 1, m_iUsedHeight >> 1, m_aapiOrgVideoPel[ iViewNum ][2], m_aaiOrgVideoStrides[iViewNum][2] );
     473#else
    455474    AOF( pcPicYuvOrgVideoData->getHeight() <= m_iHeight + m_uiHorOff || pcPicYuvOrgVideoData->getWidth() == m_iWidth );
    456475    pcPicYuvOrgVideoData->extendPicBorder();
     
    458477    TRenFilter::sampleCUpHorUp( m_iShiftPrec, pcPicYuvOrgVideoData->getCbAddr()   + (m_uiHorOff >> 1 ) * pcPicYuvOrgVideoData->getCStride(), pcPicYuvOrgVideoData->getCStride(), m_iWidth >> 1, m_iHeight >> 1, m_aapiOrgVideoPel[ iViewNum ][1], m_aaiOrgVideoStrides[iViewNum][1] );
    459478    TRenFilter::sampleCUpHorUp( m_iShiftPrec, pcPicYuvOrgVideoData->getCrAddr()   + (m_uiHorOff >> 1 ) * pcPicYuvOrgVideoData->getCStride(), pcPicYuvOrgVideoData->getCStride(), m_iWidth >> 1, m_iHeight >> 1, m_aapiOrgVideoPel[ iViewNum ][2], m_aaiOrgVideoStrides[iViewNum][2] );
     479#endif
    460480  }
    461481
    462482  if ( m_abSetupDepthFromOrgForView[iViewNum] )
    463483  {
     484#if FIX_VSO_SETUP
     485    AOF( pcPicYuvOrgDepthData->getHeight() >= m_iUsedHeight + m_uiHorOff && pcPicYuvOrgDepthData->getWidth() == m_iWidth );
     486    TRenFilter::copy          (               pcPicYuvOrgDepthData->getLumaAddr() +  m_uiHorOff        * pcPicYuvOrgDepthData->getStride() , pcPicYuvOrgDepthData->getStride(),  m_iWidth,     m_iUsedHeight,      m_apiOrgDepthPel [ iViewNum],     m_aiOrgDepthStrides [iViewNum]    );
     487#else
    464488    AOF( pcPicYuvOrgDepthData->getHeight() <= m_iHeight + m_uiHorOff || pcPicYuvOrgDepthData->getWidth() == m_iWidth );
    465489    TRenFilter::copy          (               pcPicYuvOrgDepthData->getLumaAddr() +  m_uiHorOff        * pcPicYuvOrgDepthData->getStride() , pcPicYuvOrgDepthData->getStride(),  m_iWidth,     m_iHeight,      m_apiOrgDepthPel [ iViewNum],     m_aiOrgDepthStrides [iViewNum]    );
     490#endif
    466491  }
    467492}
     
    471496{
    472497  AOT( iModelNum < 0 || iModelNum > m_iNumOfRenModels );
     498
     499#if FIX_VSO_SETUP
     500  m_apcRenModels[iModelNum]->setupPart( m_uiHorOff, m_iUsedHeight );
     501#endif
    473502
    474503  // Switch model  to original data for setup if given to render reference
     
    476505  for (Int iBaseViewIdx = 0; iBaseViewIdx < m_iNumOfBaseViews; iBaseViewIdx++ )
    477506  {
    478 
    479507    Bool bSetupFromOrgVideo = m_abSetupVideoFromOrgForView[iBaseViewIdx];
    480508    Bool bSetupFromOrgDepth = m_abSetupDepthFromOrgForView[iBaseViewIdx];
     
    492520  }
    493521
     522#if FIX_VSO_SETUP
     523  m_apcRenModels[iModelNum]->setup     ( pcPicYuvRefView, ppiShiftLutLeft, ppiBaseShiftLutLeft, ppiShiftLutRight, ppiBaseShiftLutRight, iDistToLeft, false );
     524#else
    494525  m_apcRenModels[iModelNum]->setup     ( pcPicYuvRefView, ppiShiftLutLeft, ppiBaseShiftLutLeft, ppiShiftLutRight, ppiBaseShiftLutRight, iDistToLeft, false, m_uiHorOff );
     526#endif
    495527
    496528  // Setup to Org
     
    513545
    514546    // setup keeping reference rendered from original data
     547#if FIX_VSO_SETUP
     548    m_apcRenModels[iModelNum]->setup     ( pcPicYuvRefView, ppiShiftLutLeft, ppiBaseShiftLutLeft, ppiShiftLutRight, ppiBaseShiftLutRight, iDistToLeft, true );
     549#else
    515550    m_apcRenModels[iModelNum]->setup     ( pcPicYuvRefView, ppiShiftLutLeft, ppiBaseShiftLutLeft, ppiShiftLutRight, ppiBaseShiftLutRight, iDistToLeft, true, m_uiHorOff);
     551#endif
    516552  }
    517553}
     
    543579
    544580
    545 Void 
     581#if FIX_VSO_SETUP
     582Void
     583TRenModel::setupPart ( UInt uiHorOff, Int iUsedHeight )
     584{
     585  AOT( iUsedHeight > m_iHeight );     
     586  m_uiHorOff    = uiHorOff;
     587  m_iUsedHeight = iUsedHeight;
     588}
     589#else
     590Void
    546591TRenModel::setHorOffset     ( UInt uiHorOff )
    547592{
    548     m_uiHorOff = uiHorOff;
    549 }
     593  m_uiHorOff = uiHorOff;
     594}
     595#endif
    550596
    551597#if LGE_VSO_EARLY_SKIP_A0093