Changeset 872 in 3DVCSoftware


Ignore:
Timestamp:
27 Mar 2014, 10:11:29 (10 years ago)
Author:
tech
Message:

Merged HTM-10.0-dev0@871. (MV-HEVC 7 HLS)

Location:
trunk
Files:
2 added
190 edited

Legend:

Unmodified
Added
Removed
  • trunk/COPYING

    r56 r872  
    44granted under this license.   
    55
    6 Copyright (c) 2010-2012, ITU/ISO/IEC
     6Copyright (c) 2010-2014, ITU/ISO/IEC
    77All rights reserved.
    88
  • trunk/HM.xcodeproj/project.pbxproj

    r608 r872  
    10841084                                HEADER_SEARCH_PATHS = source/Lib;
    10851085                                ONLY_ACTIVE_ARCH = YES;
    1086                                 SDKROOT = macosx;
     1086                                SDKROOT = "";
    10871087                        };
    10881088                        name = Debug;
     
    10981098                                GCC_WARN_UNUSED_VARIABLE = YES;
    10991099                                HEADER_SEARCH_PATHS = source/Lib;
    1100                                 SDKROOT = macosx;
     1100                                SDKROOT = "";
    11011101                        };
    11021102                        name = Release;
  • trunk/build/linux/common/makefile.base

    r608 r872  
    1414
    1515CPP     = g++
     16CC      = gcc
    1617AR      = ar
    1718LD      = $(CPP)
     
    6364#
    6465# release cpp
    65 RELEASE_CPPFLAGS  =  -O3 -ffloat-store -Wuninitialized
     66RELEASE_CPPFLAGS  =  -O3 -Wuninitialized
    6667
    6768
     
    208209                rm -f $(OBJ_DIR)/$*.d.d
    209210endef
     211define COMPILE_AND_DEPEND_RELEASE_C
     212        $(CC) -c -MMD -MF $(OBJ_DIR)/$*.r.d -MT $(OBJ_DIR)/$*.r.o $(CPPFLAGS) $(RELEASE_CPPFLAGS) -o $@ $(CURDIR)/$<
     213        @cp $(OBJ_DIR)/$*.r.d $(OBJ_DIR)/$*.r.P; \
     214                sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
     215                -e '/^$$/ d' -e 's/$$/ :/' < $(OBJ_DIR)/$*.r.d >> $(OBJ_DIR)/$*.r.P; \
     216                rm -f $(OBJ_DIR)/$*.r.d
     217endef
     218define COMPILE_AND_DEPEND_DEBUG_C
     219        $(CC) -c -MMD -MF $(OBJ_DIR)/$*.d.d -MT $(OBJ_DIR)/$*.d.o $(CPPFLAGS) $(DEBUG_CPPFLAGS) -o $@ $(CURDIR)/$<
     220        @cp $(OBJ_DIR)/$*.d.d $(OBJ_DIR)/$*.d.P; \
     221                sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
     222                -e '/^$$/ d' -e 's/$$/ :/' < $(OBJ_DIR)/$*.d.d >> $(OBJ_DIR)/$*.d.P; \
     223                rm -f $(OBJ_DIR)/$*.d.d
     224endef
    210225
    211226# create release objects
     
    251266# create release objects
    252267$(OBJ_DIR)/%.r.o: $(SRC_DIR)/%.c
    253         $(COMPILE_AND_DEPEND_RELEASE)
     268        $(COMPILE_AND_DEPEND_RELEASE_C)
    254269
    255270# create debug objects
    256271$(OBJ_DIR)/%.d.o: $(SRC_DIR)/%.c
    257         $(COMPILE_AND_DEPEND_DEBUG)
     272        $(COMPILE_AND_DEPEND_DEBUG_C)
    258273
    259274# create release objects
    260275$(OBJ_DIR)/%.r.o: $(SRC_DIR1)/%.c
    261         $(COMPILE_AND_DEPEND_RELEASE)
     276        $(COMPILE_AND_DEPEND_RELEASE_C)
    262277
    263278# create debug objects
    264279$(OBJ_DIR)/%.d.o: $(SRC_DIR1)/%.c
    265         $(COMPILE_AND_DEPEND_DEBUG)
     280        $(COMPILE_AND_DEPEND_DEBUG_C)
    266281
    267282# create release objects
    268283$(OBJ_DIR)/%.r.o: $(SRC_DIR2)/%.c
    269         $(COMPILE_AND_DEPEND_RELEASE)
     284        $(COMPILE_AND_DEPEND_RELEASE_C)
    270285
    271286# create debug objects
    272287$(OBJ_DIR)/%.d.o: $(SRC_DIR2)/%.c
    273         $(COMPILE_AND_DEPEND_DEBUG)
     288        $(COMPILE_AND_DEPEND_DEBUG_C)
    274289
    275290# create release objects
    276291$(OBJ_DIR)/%.r.o: $(SRC_DIR3)/%.c
    277         $(COMPILE_AND_DEPEND_RELEASE)
     292        $(COMPILE_AND_DEPEND_RELEASE_C)
    278293
    279294# create debug objects
    280295$(OBJ_DIR)/%.d.o: $(SRC_DIR3)/%.c
    281         $(COMPILE_AND_DEPEND_DEBUG)
     296        $(COMPILE_AND_DEPEND_DEBUG_C)
    282297
    283298# create release objects
    284299$(OBJ_DIR)/%.r.o: $(SRC_DIR4)/%.c
    285         $(COMPILE_AND_DEPEND_RELEASE)
     300        $(COMPILE_AND_DEPEND_RELEASE_C)
    286301
    287302# create debug objects
    288303$(OBJ_DIR)/%.d.o: $(SRC_DIR4)/%.c
    289         $(COMPILE_AND_DEPEND_DEBUG)
     304        $(COMPILE_AND_DEPEND_DEBUG_C)
    290305
    291306
  • trunk/cfg/3D-HEVC/NonCTC/allintra/baseCfg_2view+depth_AllIntra.cfg

    r738 r872  
    3030#======== VPS/ Layer sets ================
    3131VpsNumLayerSets               : 3           # Number of layer sets   
    32 LayerIdsInSet_0               : 0           # LayerIds in vps of layer set
    33 LayerIdsInSet_1               : 0 1         # LayerIds in vps of layer set
    34 LayerIdsInSet_2               : 0 1 2 3     # LayerIds in vps of layer set
     32LayerIdsInSet_0               : 0           # Indices in VPS of layers in layer set
     33LayerIdsInSet_1               : 0 1         # Indices in VPS of layers in layer set
     34LayerIdsInSet_2               : 0 1 2 3     # Indices in VPS of layers in layer set
    3535
    36 DefaultOneTargetOutputLayerFlag: 0          # Output highest layer of layer sets by default
    37 OutputLayerSetIdx             : 2           # Indices of layer sets used as additional output layer sets
    38 LayerIdsInAddOutputLayerSet_0 : 2 3         # LayerIds in vps of additional output layers
     36DefaultTargetOutputLayerIdc   : 0           # Specifies output layers of layer sets, 0: output all layers, 1: output highest layer, 2: specified by LayerIdsInDefOutputLayerSet
     37OutputLayerSetIdx             : 2           # Indices of layer sets used to derive additional output layer sets
     38LayerIdsInAddOutputLayerSet_0 : 2 3         # Indices in VPS of output layers in additional output layer set
    3939ProfileLevelTierIdx           : 0 0 0 0     # Indices to profile level tier (TBD)
    4040
    4141#======== VPS / Dependencies ================
    42 DirectRefLayers_1             :             # LayerIds in vps of direct reference layers
    43 DirectRefLayers_2             : 0           # LayerIds in vps of direct reference layers
    44 DirectRefLayers_3             : 1           # LayerIds in vps of direct reference layers
     42DirectRefLayers_1             :             # Indices in VPS of direct reference layers
     43DirectRefLayers_2             : 0           # Indices in VPS of direct reference layers
     44DirectRefLayers_3             : 1           # Indices in VPS of direct reference layers
    4545
    4646DependencyTypes_1             :             # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
     
    149149#============ Lossless ================
    150150TransquantBypassEnableFlag: 0  # Value of PPS flag.
    151 CUTransquantBypassFlagValue: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
     151CUTransquantBypassFlagForce: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
    152152
    153153#============ Rate Control ======================
  • trunk/cfg/3D-HEVC/NonCTC/allintra/baseCfg_2view_AllIntra.cfg

    r655 r872  
    122122#============ Lossless ================
    123123TransquantBypassEnableFlag: 0  # Value of PPS flag.
    124 CUTransquantBypassFlagValue: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
     124CUTransquantBypassFlagForce: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
    125125
    126126#============ Rate Control ======================
  • trunk/cfg/3D-HEVC/NonCTC/allintra/baseCfg_3view+depth_AllIntra.cfg

    r738 r872  
    3434#======== VPS/ Layer sets ================
    3535VpsNumLayerSets               : 5           # Number of layer sets   
    36 LayerIdsInSet_0               : 0           # LayerIds in vps of layer set
    37 LayerIdsInSet_1               : 0 1         # LayerIds in vps of layer set
    38 LayerIdsInSet_2               : 0 1 2 3     # LayerIds in vps of layer set
    39 LayerIdsInSet_3               : 0 1 4 5     # LayerIds in vps of layer set
    40 LayerIdsInSet_4               : 0 1 2 3 4 5 # LayerIds in vps of layer set
    41 
    42 DefaultOneTargetOutputLayerFlag: 0           # Output highest layer of layer sets by default
    43 OutputLayerSetIdx             : 2 3          # Indices of layer sets used as additional output layer sets
    44 LayerIdsInAddOutputLayerSet_0 : 2 3          # LayerIds of additional output layers
    45 LayerIdsInAddOutputLayerSet_1 : 4 5          # LayerIds of additional output layers
     36LayerIdsInSet_0               : 0           # Indices in VPS of layers in layer set
     37LayerIdsInSet_1               : 0 1         # Indices in VPS of layers in layer set
     38LayerIdsInSet_2               : 0 1 2 3     # Indices in VPS of layers in layer set
     39LayerIdsInSet_3               : 0 1 4 5     # Indices in VPS of layers in layer set
     40LayerIdsInSet_4               : 0 1 2 3 4 5 # Indices in VPS of layers in layer set
     41
     42DefaultTargetOutputLayerIdc   : 0            # Specifies output layers of layer sets, 0: output all layers, 1: output highest layer, 2: specified by LayerIdsInDefOutputLayerSet
     43OutputLayerSetIdx             : 2 3          # Indices of layer sets used to derive additional output layer sets
     44LayerIdsInAddOutputLayerSet_0 : 2 3          # Indices in VPS of additional output layers
     45LayerIdsInAddOutputLayerSet_1 : 4 5          # Indices in VPS of additional output layers
    4646ProfileLevelTierIdx           : 0 0 0 0 0 0 0 0 # Indices to profile level tier (TBD)
    4747
    4848#======== VPS / Dependencies ================
    49 DirectRefLayers_1             :             # LayerIds in vps of direct reference layers
    50 DirectRefLayers_2             : 0           # LayerIds in vps of direct reference layers
    51 DirectRefLayers_3             : 1           # LayerIds in vps of direct reference layers
    52 DirectRefLayers_4             : 0           # LayerIds in vps of direct reference layers
    53 DirectRefLayers_5             : 1           # LayerIds in vps of direct reference layers
     49DirectRefLayers_1             :             # Indices in VPS of direct reference layers
     50DirectRefLayers_2             : 0           # Indices in VPS of direct reference layers
     51DirectRefLayers_3             : 1           # Indices in VPS of direct reference layers
     52DirectRefLayers_4             : 0           # Indices in VPS of direct reference layers
     53DirectRefLayers_5             : 1           # Indices in VPS of direct reference layers
    5454
    5555DependencyTypes_1             :             # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
     
    164164#============ Lossless ================
    165165TransquantBypassEnableFlag: 0  # Value of PPS flag.
    166 CUTransquantBypassFlagValue: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
     166CUTransquantBypassFlagForce: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
    167167
    168168#============ Rate Control ======================
  • trunk/cfg/3D-HEVC/NonCTC/allintra/baseCfg_3view_AllIntra.cfg

    r655 r872  
    124124#============ Lossless ================
    125125TransquantBypassEnableFlag: 0  # Value of PPS flag.
    126 CUTransquantBypassFlagValue: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
     126CUTransquantBypassFlagForce: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
    127127
    128128#============ Rate Control ======================
  • trunk/cfg/3D-HEVC/NonCTC/fco/baseCfg_3view+depth.cfg

    r833 r872  
    3434#======== VPS/ Layer sets ================
    3535VpsNumLayerSets               : 5           # Number of layer sets   
    36 LayerIdsInSet_0               : 0           # LayerIds in vps of layer set
    37 LayerIdsInSet_1               : 0 1         # LayerIds in vps of layer set
    38 LayerIdsInSet_2               : 0 1 2 3     # LayerIds in vps of layer set
    39 LayerIdsInSet_3               : 0 1 4 5     # LayerIds in vps of layer set
    40 LayerIdsInSet_4               : 0 1 2 3 4 5 # LayerIds in vps of layer set
    41 
    42 DefaultOneTargetOutputLayerFlag: 0           # Output highest layer of layer sets by default
    43 OutputLayerSetIdx             : 2 3          # Indices of layer sets used as additional output layer sets
    44 LayerIdsInAddOutputLayerSet_0 : 2 3          # LayerIds of additional output layers
    45 LayerIdsInAddOutputLayerSet_1 : 4 5          # LayerIds of additional output layers
     36LayerIdsInSet_0               : 0           # Indices in VPS of layers in layer set
     37LayerIdsInSet_1               : 0 1         # Indices in VPS of layers in layer set
     38LayerIdsInSet_2               : 0 1 2 3     # Indices in VPS of layers in layer set
     39LayerIdsInSet_3               : 0 1 4 5     # Indices in VPS of layers in layer set
     40LayerIdsInSet_4               : 0 1 2 3 4 5 # Indices in VPS of layers in layer set
     41
     42DefaultTargetOutputLayerIdc   : 0            # Specifies output layers of layer sets, 0: output all layers, 1: output highest layer, 2: specified by LayerIdsInDefOutputLayerSet
     43OutputLayerSetIdx             : 2 3          # Indices of layer sets used to derive additional output layer sets
     44LayerIdsInAddOutputLayerSet_0 : 2 3          # Indices in VPS of additional output layers
     45LayerIdsInAddOutputLayerSet_1 : 4 5          # Indices in VPS of additional output layers
    4646ProfileLevelTierIdx           : 0 0 0 0 0 0 0 0 # Indices to profile level tier (TBD)
    4747
    4848#======== VPS / Dependencies ================
    49 DirectRefLayers_1             :             # LayerIds in vps of direct reference layers
    50 DirectRefLayers_2             : 1           # LayerIds in vps of direct reference layers
    51 DirectRefLayers_3             : 0           # LayerIds in vps of direct reference layers
    52 DirectRefLayers_4             : 1           # LayerIds in vps of direct reference layers
    53 DirectRefLayers_5             : 0           # LayerIds in vps of direct reference layers
     49DirectRefLayers_1             :             # Indices in VPS of direct reference layers
     50DirectRefLayers_2             : 1           # Indices in VPS of direct reference layers
     51DirectRefLayers_3             : 0           # Indices in VPS of direct reference layers
     52DirectRefLayers_4             : 1           # Indices in VPS of direct reference layers
     53DirectRefLayers_5             : 0           # Indices in VPS of direct reference layers
    5454
    5555DependencyTypes_1             :             # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
     
    213213#============ Lossless ================
    214214TransquantBypassEnableFlag: 0  # Value of PPS flag.
    215 CUTransquantBypassFlagValue: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
     215CUTransquantBypassFlagForce: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
    216216
    217217#============ Rate Control ======================
  • trunk/cfg/3D-HEVC/NonCTC/ibp/gopCfg_IBP_3view+depth.cfg

    r725 r872  
    1212#======== VPS/ Layer sets ================
    1313VpsNumLayerSets               : 4           # Number of layer sets   
    14 LayerIdsInSet_0               : 0           # LayerIds in vps of layer set
    15 LayerIdsInSet_1               : 0 1         # LayerIds in vps of layer set
    16 LayerIdsInSet_2               : 0 1 2 3     # LayerIds in vps of layer set
    17 LayerIdsInSet_3               : 0 1 2 3 4 5 # LayerIds in vps of layer set
     14LayerIdsInSet_0               : 0           # Indices in VPS of layers in layer set
     15LayerIdsInSet_1               : 0 1         # Indices in VPS of layers in layer set
     16LayerIdsInSet_2               : 0 1 2 3     # Indices in VPS of layers in layer set
     17LayerIdsInSet_3               : 0 1 2 3 4 5 # Indices in VPS of layers in layer set
    1818
    19 DefaultOneTargetOutputLayerFlag: 0           # Output highest layer of layer sets by default
    20 OutputLayerSetIdx             : 2 3          # Indices of layer sets used as additional output layer sets
    21 LayerIdsInAddOutputLayerSet_0 : 2 3          # LayerIds of additional output layers
    22 LayerIdsInAddOutputLayerSet_1 : 4 5          # LayerIds of additional output layers
     19DefaultTargetOutputLayerIdc   : 0            # Specifies output layers of layer sets, 0: output all layers, 1: output highest layer, 2: specified by LayerIdsInDefOutputLayerSet
     20OutputLayerSetIdx             : 2 3          # Indices of layer sets used to derive additional output layer sets
     21LayerIdsInAddOutputLayerSet_0 : 2 3          # Indices in VPS of additional output layers
     22LayerIdsInAddOutputLayerSet_1 : 4 5          # Indices in VPS of additional output layers
    2323ProfileLevelTierIdx           : 0 0 0 0 0 0 0 0 # Indices to profile level tier (TBD)
    2424
    2525#======== VPS / Dependencies ================
    26 DirectRefLayers_1             :             # LayerIds in vps of direct reference layers
    27 DirectRefLayers_2             : 0           # LayerIds in vps of direct reference layers
    28 DirectRefLayers_3             : 1           # LayerIds in vps of direct reference layers
    29 DirectRefLayers_4             : 0 2         # LayerIds in vps of direct reference layers
    30 DirectRefLayers_5             : 1 3         # LayerIds in vps of direct reference layers
     26DirectRefLayers_1             :             # Indices in VPS of direct reference layers
     27DirectRefLayers_2             : 0           # Indices in VPS of direct reference layers
     28DirectRefLayers_3             : 1           # Indices in VPS of direct reference layers
     29DirectRefLayers_4             : 0 2         # Indices in VPS of direct reference layers
     30DirectRefLayers_5             : 1 3         # Indices in VPS of direct reference layers
    3131
    3232DependencyTypes_1             :             # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
  • trunk/cfg/3D-HEVC/NonCTC/ibp/gopCfg_IBP_3view.cfg

    r655 r872  
    1313LayerIdsInSet_2               : 0 1 2        # LayerIdcs in vps of layer set
    1414
    15 DefaultOneTargetOutputLayerFlag: 0           # Output highest layer of layer sets by default
    16 OutputLayerSetIdx             : 1 2          # Indices of layer sets used as additional output layer sets
    17 LayerIdsInAddOutputLayerSet_0 : 1            # LayerIds in vps of additional output layers
    18 LayerIdsInAddOutputLayerSet_1 : 2            # LayerIds in vps of additional output layers
     15DefaultTargetOutputLayerIdc   : 0            # Specifies output layers of layer sets, 0: output all layers, 1: output highest layer, 2: specified by LayerIdsInDefOutputLayerSet
     16OutputLayerSetIdx             : 1 2          # Indices of layer sets used to derive additional output layer sets
     17LayerIdsInAddOutputLayerSet_0 : 1            # Indices in VPS of output layers in additional output layer set
     18LayerIdsInAddOutputLayerSet_1 : 2            # Indices in VPS of output layers in additional output layer set
    1919ProfileLevelTierIdx           : 0 0 0 0 0    # Indices to profile level tier (TBD)
    2020
    2121#======== VPS / Dependencies ================
    22 DirectRefLayers_1             : 0           # LayerIds in vps of direct reference layers
    23 DirectRefLayers_2             : 0 1         # LayerIds in vps of direct reference layers
     22DirectRefLayers_1             : 0           # Indices in VPS of direct reference layers
     23DirectRefLayers_2             : 0 1         # Indices in VPS of direct reference layers
    2424DependencyTypes_1             : 2           # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
    2525DependencyTypes_2             : 2 2         # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
  • trunk/cfg/3D-HEVC/NonCTC/misc/gopCfg_ILP_on_IRAP_3view+depth.cfg

    r655 r872  
    33#======== VPS/ Layer sets ================
    44VpsNumLayerSets               : 4           # Number of layer sets   
    5 LayerIdsInSet_0               : 0           # LayerIds in vps of layer set
    6 LayerIdsInSet_1               : 0 1         # LayerIds in vps of layer set
    7 LayerIdsInSet_2               : 0 1 2 3     # LayerIds in vps of layer set
    8 LayerIdsInSet_3               : 0 1 2 3 4 5 # LayerIds in vps of layer set
     5LayerIdsInSet_0               : 0           # Indices in VPS of layers in layer set
     6LayerIdsInSet_1               : 0 1         # Indices in VPS of layers in layer set
     7LayerIdsInSet_2               : 0 1 2 3     # Indices in VPS of layers in layer set
     8LayerIdsInSet_3               : 0 1 2 3 4 5 # Indices in VPS of layers in layer set
    99
    10 DefaultOneTargetOutputLayerFlag: 0           # Output highest layer of layer sets by default
    11 OutputLayerSetIdx             : 2 3          # Indices of layer sets used as additional output layer sets
    12 LayerIdsInAddOutputLayerSet_0 : 2 3          # LayerIds of additional output layers
    13 LayerIdsInAddOutputLayerSet_1 : 4 5          # LayerIds of additional output layers
     10DefaultTargetOutputLayerIdc   : 0            # Specifies output layers of layer sets, 0: output all layers, 1: output highest layer, 2: specified by LayerIdsInDefOutputLayerSet
     11OutputLayerSetIdx             : 2 3          # Indices of layer sets used to derive additional output layer sets
     12LayerIdsInAddOutputLayerSet_0 : 2 3          # Indices in VPS of additional output layers
     13LayerIdsInAddOutputLayerSet_1 : 4 5          # Indices in VPS of additional output layers
    1414ProfileLevelTierIdx           : 0 0 0 0 0 0 0 # Indices to profile level tier (TBD)
    1515
    1616#======== VPS / Dependencies ================
    17 DirectRefLayers_1             :             # LayerIds in vps of direct reference layers
    18 DirectRefLayers_2             : 0           # LayerIds in vps of direct reference layers
    19 DirectRefLayers_3             : 1           # LayerIds in vps of direct reference layers
    20 DirectRefLayers_4             : 0 2         # LayerIds in vps of direct reference layers
    21 DirectRefLayers_5             : 1 3         # LayerIds in vps of direct reference layers
     17DirectRefLayers_1             :             # Indices in VPS of direct reference layers
     18DirectRefLayers_2             : 0           # Indices in VPS of direct reference layers
     19DirectRefLayers_3             : 1           # Indices in VPS of direct reference layers
     20DirectRefLayers_4             : 0 2         # Indices in VPS of direct reference layers
     21DirectRefLayers_5             : 1 3         # Indices in VPS of direct reference layers
    2222
    2323DependencyTypes_1             :             # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
  • trunk/cfg/3D-HEVC/NonCTC/misc/gopCfg_NoIv_2view.cfg

    r655 r872  
    11#======== VPS / Layer sets ================
    22VpsNumLayerSets               : 4            # Number of layer sets   
    3 LayerIdsInSet_0               : 0            # LayerIds in vps of layer set
    4 LayerIdsInSet_1               : 0 1          # LayerIds in vps of layer set
     3LayerIdsInSet_0               : 0            # Indices in VPS of layers in layer set
     4LayerIdsInSet_1               : 0 1          # Indices in VPS of layers in layer set
    55
    6 DefaultOneTargetOutputLayerFlag: 0           # Output highest layer of layer sets by default
    7 OutputLayerSetIdx             : 1            # Indices of layer sets used as additional output layer sets
    8 LayerIdsInAddOutputLayerSet_0 : 1            # LayerIds in vps of additional output layers
     6DefaultTargetOutputLayerIdc   : 0            # Specifies output layers of layer sets, 0: output all layers, 1: output highest layer, 2: specified by LayerIdsInDefOutputLayerSet
     7OutputLayerSetIdx             : 1            # Indices of layer sets used to derive additional output layer sets
     8LayerIdsInAddOutputLayerSet_0 : 1            # Indices in VPS of output layers in additional output layer set
    99ProfileLevelTierIdx           : 0 0 0        # Indices to profile level tier (TBD)
    1010
    1111#======== VPS / Dependencies ================
    12 DirectRefLayers_1             :             # LayerIds in vps of direct reference layers
    13 DirectRefLayers_2             :             # LayerIds in vps of direct reference layers
     12DirectRefLayers_1             :             # Indices in VPS of direct reference layers
     13DirectRefLayers_2             :             # Indices in VPS of direct reference layers
    1414DependencyTypes_1             :             # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
    1515DependencyTypes_2             :             # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
  • trunk/cfg/3D-HEVC/NonCTC/misc/gopCfg_NoIv_3view+depth.cfg

    r655 r872  
    11#======== VPS/ Layer sets ================
    22VpsNumLayerSets               : 4           # Number of layer sets   
    3 LayerIdsInSet_0               : 0           # LayerIds in vps of layer set
    4 LayerIdsInSet_1               : 0 1         # LayerIds in vps of layer set
    5 LayerIdsInSet_2               : 0 1 2 3     # LayerIds in vps of layer set
    6 LayerIdsInSet_3               : 0 1 2 3 4 5 # LayerIds in vps of layer set
     3LayerIdsInSet_0               : 0           # Indices in VPS of layers in layer set
     4LayerIdsInSet_1               : 0 1         # Indices in VPS of layers in layer set
     5LayerIdsInSet_2               : 0 1 2 3     # Indices in VPS of layers in layer set
     6LayerIdsInSet_3               : 0 1 2 3 4 5 # Indices in VPS of layers in layer set
    77
    8 DefaultOneTargetOutputLayerFlag: 0           # Output highest layer of layer sets by default
    9 OutputLayerSetIdx             : 2 3          # Indices of layer sets used as additional output layer sets
    10 LayerIdsInAddOutputLayerSet_0 : 2 3          # LayerIds of additional output layers
    11 LayerIdsInAddOutputLayerSet_1 : 4 5          # LayerIds of additional output layers
     8DefaultTargetOutputLayerIdc   : 0            # Specifies output layers of layer sets, 0: output all layers, 1: output highest layer, 2: specified by LayerIdsInDefOutputLayerSet
     9OutputLayerSetIdx             : 2 3          # Indices of layer sets used to derive additional output layer sets
     10LayerIdsInAddOutputLayerSet_0 : 2 3          # Indices in VPS of additional output layers
     11LayerIdsInAddOutputLayerSet_1 : 4 5          # Indices in VPS of additional output layers
    1212ProfileLevelTierIdx           : 0 0 0 0 0 0 0 # Indices to profile level tier (TBD)
    1313
    1414#======== VPS / Dependencies ================
    15 DirectRefLayers_1             :             # LayerIds in vps of direct reference layers
    16 DirectRefLayers_2             :             # LayerIds in vps of direct reference layers
    17 DirectRefLayers_3             :             # LayerIds in vps of direct reference layers
    18 DirectRefLayers_4             :             # LayerIds in vps of direct reference layers
    19 DirectRefLayers_5             :             # LayerIds in vps of direct reference layers
     15DirectRefLayers_1             :             # Indices in VPS of direct reference layers
     16DirectRefLayers_2             :             # Indices in VPS of direct reference layers
     17DirectRefLayers_3             :             # Indices in VPS of direct reference layers
     18DirectRefLayers_4             :             # Indices in VPS of direct reference layers
     19DirectRefLayers_5             :             # Indices in VPS of direct reference layers
    2020
    2121DependencyTypes_1             :             # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
  • trunk/cfg/3D-HEVC/NonCTC/misc/gopCfg_NoIv_3view.cfg

    r655 r872  
    11#======== VPS / Layer sets ================
    22VpsNumLayerSets               : 4            # Number of layer sets   
    3 LayerIdsInSet_0               : 0            # LayerIds in vps of layer set
    4 LayerIdsInSet_1               : 0 1          # LayerIds in vps of layer set
    5 LayerIdsInSet_2               : 0 2          # LayerIds in vps of layer set
    6 LayerIdsInSet_3               : 0 1 2        # LayerIds in vps of layer set
     3LayerIdsInSet_0               : 0            # Indices in VPS of layers in layer set
     4LayerIdsInSet_1               : 0 1          # Indices in VPS of layers in layer set
     5LayerIdsInSet_2               : 0 2          # Indices in VPS of layers in layer set
     6LayerIdsInSet_3               : 0 1 2        # Indices in VPS of layers in layer set
    77
    8 DefaultOneTargetOutputLayerFlag: 0           # Output highest layer of layer sets by default
    9 OutputLayerSetIdx             : 1 2          # Indices of layer sets used as additional output layer sets
    10 LayerIdsInAddOutputLayerSet_0 : 1            # LayerIds in vps of additional output layers
    11 LayerIdsInAddOutputLayerSet_1 : 2            # LayerIds in vps of additional output layers
     8DefaultTargetOutputLayerIdc   : 0            # Specifies output layers of layer sets, 0: output all layers, 1: output highest layer, 2: specified by LayerIdsInDefOutputLayerSet
     9OutputLayerSetIdx             : 1 2          # Indices of layer sets used to derive additional output layer sets
     10LayerIdsInAddOutputLayerSet_0 : 1            # Indices in VPS of output layers in additional output layer set
     11LayerIdsInAddOutputLayerSet_1 : 2            # Indices in VPS of output layers in additional output layer set
    1212ProfileLevelTierIdx           : 0 0 0 0 0 0  # Indices to profile level tier (TBD)
    1313
    1414#======== VPS / Dependencies ================
    15 DirectRefLayers_1             :             # LayerIds in vps of direct reference layers
    16 DirectRefLayers_2             :             # LayerIds in vps of direct reference layers
     15DirectRefLayers_1             :             # Indices in VPS of direct reference layers
     16DirectRefLayers_2             :             # Indices in VPS of direct reference layers
    1717DependencyTypes_1             :             # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
    1818DependencyTypes_2             :             # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
  • trunk/cfg/3D-HEVC/NonCTC/rc/baseCfg_3view+depth_rate_control.cfg

    r724 r872  
    3434#======== VPS/ Layer sets ================
    3535VpsNumLayerSets               : 5           # Number of layer sets   
    36 LayerIdsInSet_0               : 0           # LayerIds in vps of layer set
    37 LayerIdsInSet_1               : 0 1         # LayerIds in vps of layer set
    38 LayerIdsInSet_2               : 0 1 2 3     # LayerIds in vps of layer set
    39 LayerIdsInSet_3               : 0 1 4 5     # LayerIds in vps of layer set
    40 LayerIdsInSet_4               : 0 1 2 3 4 5 # LayerIds in vps of layer set
    41 
    42 DefaultOneTargetOutputLayerFlag: 0           # Output highest layer of layer sets by default
    43 OutputLayerSetIdx             : 2 3          # Indices of layer sets used as additional output layer sets
    44 LayerIdsInAddOutputLayerSet_0 : 2 3          # LayerIds of additional output layers
    45 LayerIdsInAddOutputLayerSet_1 : 4 5          # LayerIds of additional output layers
     36LayerIdsInSet_0               : 0           # Indices in VPS of layers in layer set
     37LayerIdsInSet_1               : 0 1         # Indices in VPS of layers in layer set
     38LayerIdsInSet_2               : 0 1 2 3     # Indices in VPS of layers in layer set
     39LayerIdsInSet_3               : 0 1 4 5     # Indices in VPS of layers in layer set
     40LayerIdsInSet_4               : 0 1 2 3 4 5 # Indices in VPS of layers in layer set
     41
     42DefaultTargetOutputLayerIdc   : 0            # Specifies output layers of layer sets, 0: output all layers, 1: output highest layer, 2: specified by LayerIdsInDefOutputLayerSet
     43OutputLayerSetIdx             : 2 3          # Indices of layer sets used to derive additional output layer sets
     44LayerIdsInAddOutputLayerSet_0 : 2 3          # Indices in VPS of additional output layers
     45LayerIdsInAddOutputLayerSet_1 : 4 5          # Indices in VPS of additional output layers
    4646ProfileLevelTierIdx           : 0 0 0 0 0 0 0 0 # Indices to profile level tier (TBD)
    4747
    4848#======== VPS / Dependencies ================
    49 DirectRefLayers_1             :             # LayerIds in vps of direct reference layers
    50 DirectRefLayers_2             : 0           # LayerIds in vps of direct reference layers
    51 DirectRefLayers_3             : 1           # LayerIds in vps of direct reference layers
    52 DirectRefLayers_4             : 0           # LayerIds in vps of direct reference layers
    53 DirectRefLayers_5             : 1           # LayerIds in vps of direct reference layers
     49DirectRefLayers_1             :             # Indices in VPS of direct reference layers
     50DirectRefLayers_2             : 0           # Indices in VPS of direct reference layers
     51DirectRefLayers_3             : 1           # Indices in VPS of direct reference layers
     52DirectRefLayers_4             : 0           # Indices in VPS of direct reference layers
     53DirectRefLayers_5             : 1           # Indices in VPS of direct reference layers
    5454
    5555DependencyTypes_1             :             # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
     
    213213#============ Lossless ================
    214214TransquantBypassEnableFlag: 0  # Value of PPS flag.
    215 CUTransquantBypassFlagValue: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
     215CUTransquantBypassFlagForce: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
    216216
    217217#============ Rate Control ======================
  • trunk/cfg/3D-HEVC/baseCfg_2view+depth.cfg

    r833 r872  
    3434LayerIdsInSet_2               : 0 1 2 3     # LayerIds in vps of layer set
    3535
    36 DefaultOneTargetOutputLayerFlag: 0          # Output highest layer of layer sets by default
     36DefaultTargetOutputLayerIdc: 0          # Output highest layer of layer sets by default
    3737OutputLayerSetIdx             : 2           # Indices of layer sets used as additional output layer sets
    3838LayerIdsInAddOutputLayerSet_0 : 2 3         # LayerIds in vps of additional output layers
     
    4040
    4141#======== VPS / Dependencies ================
    42 DirectRefLayers_1             :             # LayerIds in vps of direct reference layers
    43 DirectRefLayers_2             : 0           # LayerIds in vps of direct reference layers
    44 DirectRefLayers_3             : 1           # LayerIds in vps of direct reference layers
     42DirectRefLayers_1             :             # Indices in VPS of direct reference layers
     43DirectRefLayers_2             : 0           # Indices in VPS of direct reference layers
     44DirectRefLayers_3             : 1           # Indices in VPS of direct reference layers
    4545
    4646DependencyTypes_1             :             # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
     
    183183#============ Lossless ================
    184184TransquantBypassEnableFlag: 0  # Value of PPS flag.
    185 CUTransquantBypassFlagValue: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
     185CUTransquantBypassFlagForce: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
    186186
    187187#============ Rate Control ======================
  • trunk/cfg/3D-HEVC/baseCfg_2view.cfg

    r724 r872  
    2626#======== VPS/ Layer sets ================
    2727VpsNumLayerSets               : 2            # Number of layer sets   
    28 LayerIdsInSet_0               : 0            # LayerIds in vps of layer set
    29 LayerIdsInSet_1               : 0 1          # LayerIds in vps of layer set
     28LayerIdsInSet_0               : 0            # Indices in VPS of layers in layer set 0
     29LayerIdsInSet_1               : 0 1          # Indices in VPS of layers in layer set 3
    3030
    31 DefaultOneTargetOutputLayerFlag: 0           # Output highest layer of layer sets by default
    32 OutputLayerSetIdx             : 1            # Indices of layer sets used as additional output layer sets
    33 LayerIdsInAddOutputLayerSet_0 : 1            # LayerIds in vps of additional output layers
    34 ProfileLevelTierIdx           : 0 0 0        # Indices to profile level tier (TBD) per output layer set
     31DefaultTargetOutputLayerIdc   : 0            # Specifies output layers of layer sets, 0: output all layers, 1: output highest layer, 2: specified by LayerIdsInDefOutputLayerSet
     32
     33OutputLayerSetIdx             : 1            # Indices of layer sets used to derive additional output layer sets
     34LayerIdsInAddOutputLayerSet_0 : 1            # Indices in VPS of output layers in additional output layer set 0
     35
     36ProfileLevelTierIdx           : 0 0 0        # Indices to profile level tier (TBD)
    3537
    3638#======== VPS / Dependencies ================
    37 DirectRefLayers_1             : 0           # LayerIds in vps of direct reference layers
     39DirectRefLayers_1             : 0           # Indices in VPS of direct reference layers
    3840DependencyTypes_1             : 2           # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
    3941
     
    156158#============ Lossless ================
    157159TransquantBypassEnableFlag: 0  # Value of PPS flag.
    158 CUTransquantBypassFlagValue: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
     160CUTransquantBypassFlagForce: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
    159161
    160162#============ Rate Control ======================
  • trunk/cfg/3D-HEVC/baseCfg_3view+depth.cfg

    r833 r872  
    3434#======== VPS/ Layer sets ================
    3535VpsNumLayerSets               : 5           # Number of layer sets   
    36 LayerIdsInSet_0               : 0           # LayerIds in vps of layer set
    37 LayerIdsInSet_1               : 0 1         # LayerIds in vps of layer set
    38 LayerIdsInSet_2               : 0 1 2 3     # LayerIds in vps of layer set
    39 LayerIdsInSet_3               : 0 1 4 5     # LayerIds in vps of layer set
    40 LayerIdsInSet_4               : 0 1 2 3 4 5 # LayerIds in vps of layer set
    41 
    42 DefaultOneTargetOutputLayerFlag: 0           # Output highest layer of layer sets by default
    43 OutputLayerSetIdx             : 2 3          # Indices of layer sets used as additional output layer sets
    44 LayerIdsInAddOutputLayerSet_0 : 2 3          # LayerIds of additional output layers
    45 LayerIdsInAddOutputLayerSet_1 : 4 5          # LayerIds of additional output layers
     36LayerIdsInSet_0               : 0           # Indices in VPS of layers in layer set 0
     37LayerIdsInSet_1               : 0 1         # Indices in VPS of layers in layer set 1
     38LayerIdsInSet_2               : 0 1 2 3     # Indices in VPS of layers in layer set 2
     39LayerIdsInSet_3               : 0 1 4 5     # Indices in VPS of layers in layer set 3
     40LayerIdsInSet_4               : 0 1 2 3 4 5 # Indices in VPS of layers in layer set 4
     41
     42DefaultTargetOutputLayerIdc   : 0            # Specifies output layers of layer sets, 0: output all layers, 1: output highest layer, 2: specified by LayerIdsInDefOutputLayerSet
     43OutputLayerSetIdx             : 2 3          # Indices of layer sets used to derive additional output layer sets
     44LayerIdsInAddOutputLayerSet_0 : 2 3          # Indices in VPS of output layers in additional output layer set 0
     45LayerIdsInAddOutputLayerSet_1 : 4 5          # Indices in VPS of output layers in additional output layer set 1
     46
    4647ProfileLevelTierIdx           : 0 0 0 0 0 0 0 0 # Indices to profile level tier (TBD)
    4748
    4849#======== VPS / Dependencies ================
    49 DirectRefLayers_1             :             # LayerIds in vps of direct reference layers
    50 DirectRefLayers_2             : 0           # LayerIds in vps of direct reference layers
    51 DirectRefLayers_3             : 1           # LayerIds in vps of direct reference layers
    52 DirectRefLayers_4             : 0           # LayerIds in vps of direct reference layers
    53 DirectRefLayers_5             : 1           # LayerIds in vps of direct reference layers
     50DirectRefLayers_1             :             # Indices in VPS of direct reference layers
     51DirectRefLayers_2             : 0           # Indices in VPS of direct reference layers
     52DirectRefLayers_3             : 1           # Indices in VPS of direct reference layers
     53DirectRefLayers_4             : 0           # Indices in VPS of direct reference layers
     54DirectRefLayers_5             : 1           # Indices in VPS of direct reference layers
    5455
    5556DependencyTypes_1             :             # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
     
    213214#============ Lossless ================
    214215TransquantBypassEnableFlag: 0  # Value of PPS flag.
    215 CUTransquantBypassFlagValue: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
     216CUTransquantBypassFlagForce: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
    216217
    217218#============ Rate Control ======================
  • trunk/cfg/3D-HEVC/baseCfg_3view.cfg

    r622 r872  
    2727#======== VPS / Layer sets ================
    2828VpsNumLayerSets               : 4            # Number of layer sets   
    29 LayerIdsInSet_0               : 0            # LayerIds in vps of layer set
    30 LayerIdsInSet_1               : 0 1          # LayerIds in vps of layer set
    31 LayerIdsInSet_2               : 0 2          # LayerIds in vps of layer set
    32 LayerIdsInSet_3               : 0 1 2        # LayerIds in vps of layer set
     29LayerIdsInSet_0               : 0            # Indices in VPS of layers in layer set 0
     30LayerIdsInSet_1               : 0 1          # Indices in VPS of layers in layer set 1
     31LayerIdsInSet_2               : 0 2          # Indices in VPS of layers in layer set 2
     32LayerIdsInSet_3               : 0 1 2        # Indices in VPS of layers in layer set 3
    3333
    34 DefaultOneTargetOutputLayerFlag: 0           # Output highest layer of layer sets by default
    35 OutputLayerSetIdx             : 1 2          # Indices of layer sets used as additional output layer sets
    36 LayerIdsInAddOutputLayerSet_0 : 1            # LayerIds in vps of additional output layers
    37 LayerIdsInAddOutputLayerSet_1 : 2            # LayerIds in vps of additional output layers
     34DefaultTargetOutputLayerIdc   : 0            # Specifies output layers of layer sets, 0: output all layers, 1: output highest layer, 2: specified by LayerIdsInDefOutputLayerSet
     35
     36OutputLayerSetIdx             : 1 2          # Indices of layer sets used to derive additional output layer sets
     37LayerIdsInAddOutputLayerSet_0 : 1            # Indices in VPS of output layers in additional output layer set 0
     38LayerIdsInAddOutputLayerSet_1 : 2            # Indices in VPS of output layers in additional output layer set 1
     39
    3840ProfileLevelTierIdx           : 0 0 0 0 0 0   # Indices to profile level tier (TBD)
    3941
    4042#======== VPS / Dependencies ================
    41 DirectRefLayers_1             : 0           # LayerIds in vps of direct reference layers
    42 DirectRefLayers_2             : 0           # LayerIds in vps of direct reference layers
     43DirectRefLayers_1             : 0           # Indices in VPS of direct reference layers
     44DirectRefLayers_2             : 0           # Indices in VPS of direct reference layers
    4345DependencyTypes_1             : 2           # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
    4446DependencyTypes_2             : 2           # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
     
    171173#============ Lossless ================
    172174TransquantBypassEnableFlag: 0  # Value of PPS flag.
    173 CUTransquantBypassFlagValue: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
     175CUTransquantBypassFlagForce: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
    174176
    175177#============ Rate Control ======================
  • trunk/cfg/3D-HEVC/fullCfg.cfg

    r735 r872  
    3636ViewId                        : 1 0 2       # ViewId per ViewOrderIndex (m)
    3737
    38 #======== VPS/ Layer sets ================
    3938VpsNumLayerSets               : 5           # Number of layer sets   
    40 LayerIdsInSet_0               : 0           # LayerIds in vps of layer set
    41 LayerIdsInSet_1               : 0 1         # LayerIds in vps of layer set
    42 LayerIdsInSet_2               : 0 1 2 3     # LayerIds in vps of layer set
    43 LayerIdsInSet_3               : 0 1 4 5     # LayerIds in vps of layer set
    44 LayerIdsInSet_4               : 0 1 2 3 4 5 # LayerIds in vps of layer set
    45 
    46 DefaultOneTargetOutputLayerFlag: 0           # Output highest layer of layer sets by default
    47 OutputLayerSetIdx             : 2 3          # Indices of layer sets used as additional output layer sets
    48 LayerIdsInAddOutputLayerSet_0 : 2 3          # LayerIds of additional output layers
    49 LayerIdsInAddOutputLayerSet_1 : 4 5          # LayerIds of additional output layers
     39LayerIdsInSet_0               : 0           # Indices in VPS of layers in layer set 0
     40LayerIdsInSet_1               : 0 1         # Indices in VPS of layers in layer set 1
     41LayerIdsInSet_2               : 0 1 2 3     # Indices in VPS of layers in layer set 2
     42LayerIdsInSet_3               : 0 1 4 5     # Indices in VPS of layers in layer set 3
     43LayerIdsInSet_4               : 0 1 2 3 4 5 # Indices in VPS of layers in layer set 4
     44
     45DefaultTargetOutputLayerIdc   : 0            # Specifies output layers of layer sets, 0: output all layers, 1: output highest layer, 2: specified by LayerIdsInDefOutputLayerSet
     46
     47LayerIdsInDefOutputLayerSet_0 :              # Indices in VPS of output layers in layer set 0 (when DefaultTargetOutputLayerIdc is equal to 2)
     48LayerIdsInDefOutputLayerSet_1 :              # Indices in VPS of output layers in layer set 1 (when DefaultTargetOutputLayerIdc is equal to 2)
     49LayerIdsInDefOutputLayerSet_2 :              # Indices in VPS of output layers in layer set 2 (when DefaultTargetOutputLayerIdc is equal to 2)
     50LayerIdsInDefOutputLayerSet_3 :              # Indices in VPS of output layers in layer set 3 (when DefaultTargetOutputLayerIdc is equal to 2)
     51LayerIdsInDefOutputLayerSet_4 :              # Indices in VPS of output layers in layer set 4 (when DefaultTargetOutputLayerIdc is equal to 2)
     52
     53
     54OutputLayerSetIdx             : 2 3          # Indices of layer sets used to derive additional output layer sets
     55LayerIdsInAddOutputLayerSet_0 : 2 3          # Indices in VPS of output layers in additional output layer set 0
     56LayerIdsInAddOutputLayerSet_1 : 4 5          # Indices in VPS of output layers in additional output layer set 1
     57
    5058ProfileLevelTierIdx           : 0 0 0 0 0 0 0 0 # Indices to profile level tier (TBD)
    5159
    5260#======== VPS / Dependencies ================
    53 DirectRefLayers_1             :             # LayerIds in vps of direct reference layers
    54 DirectRefLayers_2             : 0           # LayerIds in vps of direct reference layers
    55 DirectRefLayers_3             : 1           # LayerIds in vps of direct reference layers
    56 DirectRefLayers_4             : 0           # LayerIds in vps of direct reference layers
    57 DirectRefLayers_5             : 1           # LayerIds in vps of direct reference layers
     61DirectRefLayers_1             :             # Indices in VPS of direct reference layers
     62DirectRefLayers_2             : 0           # Indices in VPS of direct reference layers
     63DirectRefLayers_3             : 1           # Indices in VPS of direct reference layers
     64DirectRefLayers_4             : 0           # Indices in VPS of direct reference layers
     65DirectRefLayers_5             : 1           # Indices in VPS of direct reference layers
    5866
    5967DependencyTypes_1             :             # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
     
    219227#============ Lossless ================
    220228TransquantBypassEnableFlag: 0  # Value of PPS flag.
    221 CUTransquantBypassFlagValue: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
     229CUTransquantBypassFlagForce: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
    222230
    223231#============ Rate Control ======================
  • trunk/cfg/HEVC/HM/encoder_intra_main.cfg

    r655 r872  
    9797#============ Lossless ================
    9898TransquantBypassEnableFlag: 0  # Value of PPS flag.
    99 CUTransquantBypassFlagValue: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
     99CUTransquantBypassFlagForce: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
    100100                                                       
    101101### DO NOT ADD ANYTHING BELOW THIS LINE ###
  • trunk/cfg/HEVC/HM/encoder_intra_main10.cfg

    r655 r872  
    9797#============ Lossless ================
    9898TransquantBypassEnableFlag: 0  # Value of PPS flag.
    99 CUTransquantBypassFlagValue: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
     99CUTransquantBypassFlagForce: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
    100100
    101101                                                       
  • trunk/cfg/HEVC/HM/encoder_lowdelay_P_main.cfg

    r655 r872  
    102102#============ Lossless ================
    103103TransquantBypassEnableFlag: 0  # Value of PPS flag.
    104 CUTransquantBypassFlagValue: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
     104CUTransquantBypassFlagForce: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
    105105
    106106#============ Rate Control ======================
  • trunk/cfg/HEVC/HM/encoder_lowdelay_P_main10.cfg

    r655 r872  
    102102#============ Lossless ================
    103103TransquantBypassEnableFlag: 0  # Value of PPS flag.
    104 CUTransquantBypassFlagValue: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
     104CUTransquantBypassFlagForce: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
    105105
    106106#============ Rate Control ======================
  • trunk/cfg/HEVC/HM/encoder_lowdelay_main.cfg

    r655 r872  
    102102#============ Lossless ================
    103103TransquantBypassEnableFlag: 0  # Value of PPS flag.
    104 CUTransquantBypassFlagValue: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
     104CUTransquantBypassFlagForce: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
    105105
    106106#============ Rate Control ======================
  • trunk/cfg/HEVC/HM/encoder_lowdelay_main10.cfg

    r655 r872  
    102102#============ Lossless ================
    103103TransquantBypassEnableFlag: 0  # Value of PPS flag.
    104 CUTransquantBypassFlagValue: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
     104CUTransquantBypassFlagForce: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
    105105
    106106#============ Rate Control ======================
  • trunk/cfg/HEVC/HM/encoder_randomaccess_main.cfg

    r655 r872  
    106106#============ Lossless ================
    107107TransquantBypassEnableFlag: 0  # Value of PPS flag.
    108 CUTransquantBypassFlagValue: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
     108CUTransquantBypassFlagForce: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
    109109
    110110#============ Rate Control ======================
  • trunk/cfg/HEVC/HM/encoder_randomaccess_main10.cfg

    r655 r872  
    106106#============ Lossless ================
    107107TransquantBypassEnableFlag: 0  # Value of PPS flag.
    108 CUTransquantBypassFlagValue: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
     108CUTransquantBypassFlagForce: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
    109109
    110110#============ Rate Control ======================
  • trunk/cfg/HEVC/HM/per-sequence/Kimono.cfg

    r655 r872  
    88FramesToBeEncoded              : 240         # Number of frames to be coded
    99
    10 Level                         : 4.0
     10Level                         : 4
  • trunk/cfg/HEVC/HM/per-sequence/ParkScene.cfg

    r655 r872  
    88FramesToBeEncoded              : 240         # Number of frames to be coded
    99
    10 Level                         : 4.0
     10Level                         : 4
  • trunk/cfg/MV-HEVC/NonCTC/gopCfg_IBP_3view.cfg

    r622 r872  
    99#======== VPS / Layer sets ================
    1010VpsNumLayerSets               : 3            # Number of layer sets   
    11 LayerIdsInSet_0               : 0            # LayerIdcs in vps of layer set
    12 LayerIdsInSet_1               : 0 1          # LayerIdcs in vps of layer set
    13 LayerIdsInSet_2               : 0 1 2        # LayerIdcs in vps of layer set
     11LayerIdsInSet_0               : 0            # Indices in VPS of layers in layer set 0
     12LayerIdsInSet_1               : 0 1          # Indices in VPS of layers in layer set 1
     13LayerIdsInSet_2               : 0 1 2        # Indices in VPS of layers in layer set 2
    1414
    15 DefaultOneTargetOutputLayerFlag: 0           # Output highest layer of layer sets by default
    16 OutputLayerSetIdx             : 1 2          # Indices of layer sets used as additional output layer sets
    17 LayerIdsInAddOutputLayerSet_0 : 1            # LayerIds in vps of additional output layers
    18 LayerIdsInAddOutputLayerSet_1 : 2            # LayerIds in vps of additional output layers
     15DefaultTargetOutputLayerIdc   : 0            # Specifies output layers of layer sets, 0: output all layers, 1: output highest layer, 2: specified by LayerIdsInDefOutputLayerSet
     16OutputLayerSetIdx             : 1 2          # Indices of layer sets used to derive additional output layer sets
     17LayerIdsInAddOutputLayerSet_0 : 1            # Indices in VPS of output layers in additional output layer set 0
     18LayerIdsInAddOutputLayerSet_1 : 2            # Indices in VPS of output layers in additional output layer set 1
     19
    1920ProfileLevelTierIdx           : 0 0 0 0 0    # Indices to profile level tier (TBD)
    2021
    2122#======== VPS / Dependencies ================
    22 DirectRefLayers_1             : 0           # LayerIds in vps of direct reference layers
    23 DirectRefLayers_2             : 0 1         # LayerIds in vps of direct reference layers
     23DirectRefLayers_1             : 0           # Indices in VPS of direct reference layers
     24DirectRefLayers_2             : 0 1         # Indices in VPS of direct reference layers
    2425DependencyTypes_1             : 2           # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
    2526DependencyTypes_2             : 2 2         # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
  • trunk/cfg/MV-HEVC/NonCTC/gopCfg_IPB_on_IRAP_3view.cfg

    r622 r872  
    33#======== VPS / Layer sets ================
    44VpsNumLayerSets               : 4            # Number of layer sets   
    5 LayerIdsInSet_0               : 0            # LayerIds in vps of layer set
    6 LayerIdsInSet_1               : 0 1          # LayerIds in vps of layer set
    7 LayerIdsInSet_2               : 0 2          # LayerIds in vps of layer set
    8 LayerIdsInSet_3               : 0 1 2        # LayerIds in vps of layer set
     5LayerIdsInSet_0               : 0            # Indices in VPS of layers in layer set 0
     6LayerIdsInSet_1               : 0 1          # Indices in VPS of layers in layer set 1
     7LayerIdsInSet_2               : 0 2          # Indices in VPS of layers in layer set 2
     8LayerIdsInSet_3               : 0 1 2        # Indices in VPS of layers in layer set 3
    99
    10 DefaultOneTargetOutputLayerFlag: 0           # Output highest layer of layer sets by default
    11 OutputLayerSetIdx             : 1 2          # Indices of layer sets used as additional output layer sets
    12 LayerIdsInAddOutputLayerSet_0 : 1            # LayerIds in vps of additional output layers
    13 LayerIdsInAddOutputLayerSet_1 : 2            # LayerIds in vps of additional output layers
     10DefaultTargetOutputLayerIdc   : 0            # Specifies output layers of layer sets, 0: output all layers, 1: output highest layer, 2: specified by LayerIdsInDefOutputLayerSet
     11OutputLayerSetIdx             : 1 2          # Indices of layer sets used to derive additional output layer sets
     12LayerIdsInAddOutputLayerSet_0 : 1            # Indices in VPS of output layers in additional output layer set 0
     13LayerIdsInAddOutputLayerSet_1 : 2            # Indices in VPS of output layers in additional output layer set 1
     14
    1415ProfileLevelTierIdx           : 0 0 0 0 0 0  # Indices to profile level tier (TBD)
    1516
    1617#======== VPS / Dependencies ================
    17 DirectRefLayers_1             : 0           # LayerIds in vps of direct reference layers
    18 DirectRefLayers_2             : 0 1         # LayerIds in vps of direct reference layers
     18DirectRefLayers_1             : 0           # Indices in VPS of direct reference layers
     19DirectRefLayers_2             : 0 1         # Indices in VPS of direct reference layers
    1920DependencyTypes_1             : 2           # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
    2021DependencyTypes_2             : 2 2         # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
  • trunk/cfg/MV-HEVC/NonCTC/gopCfg_NoIv_3view.cfg

    r622 r872  
    11#======== VPS / Layer sets ================
    22VpsNumLayerSets               : 4            # Number of layer sets   
    3 LayerIdsInSet_0               : 0            # LayerIds in vps of layer set
    4 LayerIdsInSet_1               : 0 1          # LayerIds in vps of layer set
    5 LayerIdsInSet_2               : 0 2          # LayerIds in vps of layer set
    6 LayerIdsInSet_3               : 0 1 2        # LayerIds in vps of layer set
     3LayerIdsInSet_0               : 0            # Indices in VPS of layers in layer set 0
     4LayerIdsInSet_1               : 1            # Indices in VPS of layers in layer set 0
     5LayerIdsInSet_2               : 2            # Indices in VPS of layers in layer set 0
     6LayerIdsInSet_3               : 0 1          # Indices in VPS of layers in layer set 1
     7LayerIdsInSet_4               : 0 2          # Indices in VPS of layers in layer set 2
     8LayerIdsInSet_5               : 1 2          # Indices in VPS of layers in layer set 2
     9LayerIdsInSet_6               : 0 1 2        # Indices in VPS of layers in layer set 3
    710
    8 DefaultOneTargetOutputLayerFlag: 0           # Output highest layer of layer sets by default
    9 OutputLayerSetIdx             : 1 2          # Indices of layer sets used as additional output layer sets
    10 LayerIdsInAddOutputLayerSet_0 : 1            # LayerIds in vps of additional output layers
    11 LayerIdsInAddOutputLayerSet_1 : 2            # LayerIds in vps of additional output layers
    12 ProfileLevelTierIdx           : 0 0 0 0 0 0  # Indices to profile level tier (TBD)
     11DefaultTargetOutputLayerIdc   : 0            # Specifies output layers of layer sets, 0: output all layers, 1: output highest layer, 2: specified by LayerIdsInDefOutputLayerSet
     12
     13OutputLayerSetIdx             :              # Indices of layer sets used to derive additional output layer sets
     14
    1315
    1416#======== VPS / Dependencies ================
    15 DirectRefLayers_1             :             # LayerIds in vps of direct reference layers
    16 DirectRefLayers_2             :             # LayerIds in vps of direct reference layers
     17DirectRefLayers_1             :             # Indices in VPS of direct reference layers
     18DirectRefLayers_2             :             # Indices in VPS of direct reference layers
    1719DependencyTypes_1             :             # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
    1820DependencyTypes_2             :             # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
  • trunk/cfg/MV-HEVC/NonCTC/gopCfg_PIP_on_IRAP_3view.cfg

    r622 r872  
    33#======== VPS / Layer sets ================
    44VpsNumLayerSets               : 4            # Number of layer sets   
    5 LayerIdsInSet_0               : 0            # LayerIds in vps of layer set
    6 LayerIdsInSet_1               : 0 1          # LayerIds in vps of layer set
    7 LayerIdsInSet_2               : 0 2          # LayerIds in vps of layer set
    8 LayerIdsInSet_3               : 0 1 2        # LayerIds in vps of layer set
     5LayerIdsInSet_0               : 0            # Indices in VPS of layers in layer set 0
     6LayerIdsInSet_1               : 0 1          # Indices in VPS of layers in layer set 1
     7LayerIdsInSet_2               : 0 2          # Indices in VPS of layers in layer set 2
     8LayerIdsInSet_3               : 0 1 2        # Indices in VPS of layers in layer set 3
    99
    10 DefaultOneTargetOutputLayerFlag: 0           # Output highest layer of layer sets by default
    11 OutputLayerSetIdx             : 1 2          # Indices of layer sets used as additional output layer sets
    12 LayerIdsInAddOutputLayerSet_0 : 1            # LayerIds in vps of additional output layers
    13 LayerIdsInAddOutputLayerSet_1 : 2            # LayerIds in vps of additional output layers
     10DefaultTargetOutputLayerIdc   : 0            # Specifies output layers of layer sets, 0: output all layers, 1: output highest layer, 2: specified by LayerIdsInDefOutputLayerSet
     11OutputLayerSetIdx             : 1 2          # Indices of layer sets used to derive additional output layer sets
     12LayerIdsInAddOutputLayerSet_0 : 1            # Indices in VPS of output layers in additional output layer set 0
     13LayerIdsInAddOutputLayerSet_1 : 2            # Indices in VPS of output layers in additional output layer set 1
     14
    1415ProfileLevelTierIdx           : 0 0 0 0 0 0  # Indices to profile level tier (TBD)
    1516
    1617#======== VPS / Dependencies ================
    17 DirectRefLayers_1             : 0           # LayerIds in vps of direct reference layers
    18 DirectRefLayers_2             : 0           # LayerIds in vps of direct reference layers
     18DirectRefLayers_1             : 0           # Indices in VPS of direct reference layers
     19DirectRefLayers_2             : 0           # Indices in VPS of direct reference layers
    1920DependencyTypes_1             : 2           # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
    2021DependencyTypes_2             : 2           # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
  • trunk/cfg/MV-HEVC/NonCTC/layerwise_startup_IBP_3view.cfg

    r738 r872  
    99#======== VPS / Layer sets ================
    1010VpsNumLayerSets               : 3            # Number of layer sets   
    11 LayerIdsInSet_0               : 0            # LayerIdcs in vps of layer set
    12 LayerIdsInSet_1               : 0 1          # LayerIdcs in vps of layer set
    13 LayerIdsInSet_2               : 0 1 2        # LayerIdcs in vps of layer set
     11LayerIdsInSet_0               : 0            # Indices in VPS of layers in layer set 0
     12LayerIdsInSet_1               : 0 1          # Indices in VPS of layers in layer set 1
     13LayerIdsInSet_3               : 0 1 2        # Indices in VPS of layers in layer set 3
    1414
    15 DefaultOneTargetOutputLayerFlag: 0           # Output highest layer of layer sets by default
    16 OutputLayerSetIdx             : 1 2          # Indices of layer sets used as additional output layer sets
    17 LayerIdsInAddOutputLayerSet_0 : 1            # LayerIds in vps of additional output layers
    18 LayerIdsInAddOutputLayerSet_1 : 2            # LayerIds in vps of additional output layers
     15DefaultTargetOutputLayerIdc   : 0            # Specifies output layers of layer sets, 0: output all layers, 1: output highest layer, 2: specified by LayerIdsInDefOutputLayerSet
     16OutputLayerSetIdx             : 1 2          # Indices of layer sets used to derive additional output layer sets
     17LayerIdsInAddOutputLayerSet_0 : 1            # Indices in VPS of output layers in additional output layer set 0
     18LayerIdsInAddOutputLayerSet_1 : 2            # Indices in VPS of output layers in additional output layer set 1
    1919ProfileLevelTierIdx           : 0 0 0 0 0    # Indices to profile level tier (TBD)
    2020
    2121#======== VPS / Dependencies ================
    22 DirectRefLayers_1             : 0           # LayerIds in vps of direct reference layers
    23 DirectRefLayers_2             : 0 1         # LayerIds in vps of direct reference layers
     22DirectRefLayers_1             : 0           # Indices in VPS of direct reference layers
     23DirectRefLayers_2             : 0 1         # Indices in VPS of direct reference layers
    2424DependencyTypes_1             : 2           # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
    2525DependencyTypes_2             : 2 2         # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
  • trunk/cfg/MV-HEVC/baseCfg_2view.cfg

    r622 r872  
    2525#======== VPS/ Layer sets ================
    2626VpsNumLayerSets               : 2            # Number of layer sets   
    27 LayerIdsInSet_0               : 0            # LayerIds in vps of Layer set
    28 LayerIdsInSet_1               : 0 1          # LayerIds in vps of Layer set
     27LayerIdsInSet_0               : 0            # Indices in VPS of layers in layer set 0
     28LayerIdsInSet_1               : 0 1          # Indices in VPS of layers in layer set 3
    2929
    30 DefaultOneTargetOutputLayerFlag: 0           # Output highest layer of layer sets by default
    31 OutputLayerSetIdx             : 1            # Indices of layer sets used as additional output layer sets
    32 LayerIdsInAddOutputLayerSet_0 : 1            # LayerIds in vps of additional output layers
     30DefaultTargetOutputLayerIdc   : 0            # Specifies output layers of layer sets, 0: output all layers, 1: output highest layer, 2: specified by LayerIdsInDefOutputLayerSet
     31
     32OutputLayerSetIdx             : 1            # Indices of layer sets used to derive additional output layer sets
     33LayerIdsInAddOutputLayerSet_0 : 1            # Indices in VPS of output layers in additional output layer set 0
    3334ProfileLevelTierIdx           : 0 0 0        # Indices to profile level tier (TBD)
    3435
    3536#======== VPS / Dependencies ================
    36 DirectRefLayers_1             : 0           # LayerIds in vps of direct reference layers
     37DirectRefLayers_1             : 0           # Indices in VPS of direct reference layers
    3738DependencyTypes_1             : 2           # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
    3839
     
    150151#============ Lossless ================
    151152TransquantBypassEnableFlag: 0  # Value of PPS flag.
    152 CUTransquantBypassFlagValue: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
     153CUTransquantBypassFlagForce: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
    153154
    154155#============ Rate Control ======================
  • trunk/cfg/MV-HEVC/baseCfg_3view.cfg

    r622 r872  
    2727#======== VPS / Layer sets ================
    2828VpsNumLayerSets               : 4            # Number of layer sets   
    29 LayerIdsInSet_0               : 0            # LayerIds in vps of layer set
    30 LayerIdsInSet_1               : 0 1          # LayerIds in vps of layer set
    31 LayerIdsInSet_2               : 0 2          # LayerIds in vps of layer set
    32 LayerIdsInSet_3               : 0 1 2        # LayerIds in vps of layer set
     29LayerIdsInSet_0               : 0            # Indices in VPS of layers in layer set 0
     30LayerIdsInSet_1               : 0 1          # Indices in VPS of layers in layer set 1
     31LayerIdsInSet_2               : 0 2          # Indices in VPS of layers in layer set 2
     32LayerIdsInSet_3               : 0 1 2        # Indices in VPS of layers in layer set 3
    3333
    34 DefaultOneTargetOutputLayerFlag: 0           # Output highest layer of layer sets by default
    35 OutputLayerSetIdx             : 1 2          # Indices of layer sets used as additional output layer sets
    36 LayerIdsInAddOutputLayerSet_0 : 1            # LayerIds in vps of additional output layers
    37 LayerIdsInAddOutputLayerSet_1 : 2            # LayerIds in vps of additional output layers
     34DefaultTargetOutputLayerIdc   : 0            # Specifies output layers of layer sets, 0: output all layers, 1: output highest layer, 2: specified by LayerIdsInDefOutputLayerSet
     35
     36OutputLayerSetIdx             : 1 2          # Indices of layer sets used to derive additional output layer sets
     37LayerIdsInAddOutputLayerSet_0 : 1            # Indices in VPS of output layers in additional output layer set 0
     38LayerIdsInAddOutputLayerSet_1 : 2            # Indices in VPS of output layers in additional output layer set 1
     39
    3840ProfileLevelTierIdx           : 0 0 0 0 0 0  # Indices to profile level tier (TBD)
    3941
    4042#======== VPS / Dependencies ================
    41 DirectRefLayers_1             : 0           # LayerIds in vps of direct reference layers
    42 DirectRefLayers_2             : 0           # LayerIds in vps of direct reference layers
     43DirectRefLayers_1             : 0           # Indices in VPS of direct reference layers
     44DirectRefLayers_2             : 0           # Indices in VPS of direct reference layers
    4345DependencyTypes_1             : 2           # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
    4446DependencyTypes_2             : 2           # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion
     
    167169#============ Lossless ================
    168170TransquantBypassEnableFlag: 0  # Value of PPS flag.
    169 CUTransquantBypassFlagValue: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
     171CUTransquantBypassFlagForce: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
    170172
    171173#============ Rate Control ======================
  • trunk/cfg/MV-HEVC/fullCfg.cfg

    r622 r872  
    3131#======== VPS/ Layer sets ================
    3232VpsNumLayerSets               : 4            # Number of layer sets   
    33 LayerIdsInSet_0               : 0            # LayerIds of Layer set
    34 LayerIdsInSet_1               : 0 1          # LayerIds of Layer set
    35 LayerIdsInSet_2               : 0 2          # LayerIds of Layer set
    36 LayerIdsInSet_3               : 0 1 2        # LayerIds of Layer set
     33LayerIdsInSet_0               : 0            # Indices in VPS of layers in layer set 0
     34LayerIdsInSet_1               : 0 1          # Indices in VPS of layers in layer set 1
     35LayerIdsInSet_2               : 0 2          # Indices in VPS of layers in layer set 2
     36LayerIdsInSet_3               : 0 1 2        # Indices in VPS of layers in layer set 3
    3737
    38 DefaultOneTargetOutputLayerFlag: 0           # Output highest layer of layer sets by default
    39 OutputLayerSetIdx             : 1 2          # Indices of layer sets used as additional output layer sets
    40 LayerIdsInAddOutputLayerSet_0 : 1            # LayerIds of additional output layers
    41 LayerIdsInAddOutputLayerSet_0 : 1            # LayerIds of additional output layers
     38DefaultTargetOutputLayerIdc   : 0            # Specifies output layers of layer sets, 0: output all layers, 1: output highest layer, 2: specified by LayerIdsInDefOutputLayerSet
     39LayerIdsInDefOutputLayerSet_0 :              # Indices in VPS of output layers in layer set 0 (when DefaultTargetOutputLayerIdc is equal to 2)
     40LayerIdsInDefOutputLayerSet_1 :              # Indices in VPS of output layers in layer set 1 (when DefaultTargetOutputLayerIdc is equal to 2)
     41LayerIdsInDefOutputLayerSet_2 :              # Indices in VPS of output layers in layer set 2 (when DefaultTargetOutputLayerIdc is equal to 2)
     42LayerIdsInDefOutputLayerSet_3 :              # Indices in VPS of output layers in layer set 3 (when DefaultTargetOutputLayerIdc is equal to 2)
     43
     44
     45OutputLayerSetIdx             : 1 2          # Indices of layer sets used to derive additional output layer sets
     46LayerIdsInAddOutputLayerSet_0 : 1            # Indices in VPS of output layers in additional output layer set 0
     47LayerIdsInAddOutputLayerSet_1 : 2            # Indices in VPS of output layers in additional output layer set 1
     48
     49
    4250ProfileLevelTierIdx           : 0 0 0 0      # Indices to profile level tier (TBD)
    43 
    4451#======== Unit definition ================
    4552MaxCUWidth                    : 64          # Maximum coding unit width in pixel
     
    164171#============ Lossless ================
    165172TransquantBypassEnableFlag: 0  # Value of PPS flag.
    166 CUTransquantBypassFlagValue: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
     173CUTransquantBypassFlagForce: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.
    167174
    168175#============ Rate Control ======================
  • trunk/doc/Doxyfile

    r608 r872  
    3333# if some version control system is used.
    3434
    35 PROJECT_NUMBER         = HM-11.0
     35PROJECT_NUMBER         = HM-13.0
    3636
    3737# Using the PROJECT_BRIEF tag one can provide an optional one line description
  • trunk/doc/mainpage.h

    r608 r872  
    2525 * granted under this license. 
    2626 *
    27  * Copyright (c) 2010-2012, ITU/ISO/IEC
     27 * Copyright (c) 2010-2014, ITU/ISO/IEC
    2828 * All rights reserved.
    2929 *
  • trunk/doc/software-manual.tex

    r608 r872  
    9999\author{%
    100100        Frank Bossen
    101         \email{bossen@docomoinnovations.com}
     101        \email{frank@bossentech.com}
    102102        \and
    103103        David Flynn
    104         \email{davidf@rd.bbc.co.uk}
     104        \email{dflynn@blackberry.com}
    105105        \and
    106106        Karsten S\"uhring
     
    118118\begin{abstract}
    119119This document is a user manual describing usage of reference software
    120 for the HEVC project. It applies to version 11.0
     120for the HEVC project. It applies to version 13.0
    121121of the software.
    122122\end{abstract}
     
    952952
    953953
    954 
    955 %%
    956 %% Entropy coding parameters
    957 %%
    958 \begin{OptionTable}{Entropy coding parameters}
    959 \Option{SBACRD} &
    960 \ShortOption{\None} &
    961 \Default{true} &
    962 Enables or disables the use of bit counts from arithmetic coder in
    963 rate-distortion decisions.
    964 \\
    965 \end{OptionTable}
    966 
    967 
    968954%%
    969955%% Slice coding parameters
     
    11831169transquant_bypass_enable_flag that is transmitted in the PPS.
    11841170
    1185 See CUTransquantBypassFlagValue for further details.
    1186 \\
    1187 
    1188 \Option{CUTransquantBypassFlagValue} &
     1171See CUTransquantBypassFlagForce for further details.
     1172\\
     1173
     1174\Option{CUTransquantBypassFlagForce} &
    11891175\ShortOption{\None} &
    11901176\Default{0} &
    11911177Controls the per CU transformation, quantization and filtering
    11921178mode decision.
    1193 This option corresponds to the value of the per CU cu_transquant_bypass_flag.
    1194 \par
    1195 \begin{tabular}{cp{0.45\textwidth}}
    1196  0 & Bypass is not performed on any CU \\
    1197  1 & Bypass is performed on all CUs \\
     1179This option controls the value of the per CU cu_transquant_bypass_flag.
     1180\par
     1181\begin{tabular}{cp{0.45\textwidth}}
     1182 0 & Bypass is searched on a CU-by-CU basis and will be used if the cost is lower than not bypassing. \\
     1183 1 & Bypass is forced for all CUs. \\
    11981184\end{tabular}
    11991185
     
    12041190\ShortOption{\None} &
    12051191\Default{false} &
    1206 Enables or disables the use of PCM.
     1192Enables or disables the use of PCM. The encoder will use cost measures on a CU-by-CU basis to determine if PCM mode is to be applied.
    12071193\\
    12081194
     
    19241910\section{Using the decoder}
    19251911\begin{verbatim}
    1926 TappDecoder -b str.bin -o dec.yuv [options]
     1912TAppDecoder -b str.bin -o dec.yuv [options]
    19271913\end{verbatim}
    19281914
  • trunk/source/App/TAppDecoder/TAppDecCfg.cpp

    r773 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/App/TAppDecoder/TAppDecCfg.h

    r773 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/App/TAppDecoder/TAppDecTop.cpp

    r773 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
     
    140140    AOF( m_pScaleOffsetFile );
    141141  }
     142#if !FIX_CAM_PARS_COLLECTOR
    142143  m_cCamParsCollector.init( m_pScaleOffsetFile );
     144#endif
    143145#endif
    144146  InputByteStream bytestream(bitstreamFile);
     
    165167  Bool firstSlice        = true;
    166168#endif
    167  
     169  Bool loopFiltered      = false;
     170
    168171  while (!!bitstreamFile)
    169172  {
     
    206209      read(nalu, nalUnit);
    207210#if H_MV     
     211#if H_MV_FIX_VPS_LAYER_ID_NOT_EQUAL_ZERO
     212      if( (m_iMaxTemporalLayer >= 0 && nalu.m_temporalId > m_iMaxTemporalLayer)
     213          || !isNaluWithinTargetDecLayerIdSet(&nalu)
     214          || nalu.m_layerId > MAX_NUM_LAYER_IDS-1
     215          || (nalu.m_nalUnitType == NAL_UNIT_VPS && nalu.m_layerId > 0)           
     216#if H_MV_HLS_7_MISC_P0130_EOS
     217          || (nalu.m_nalUnitType == NAL_UNIT_EOB && nalu.m_layerId > 0)           
     218#endif
     219         )
     220#else
    208221      if( (m_iMaxTemporalLayer >= 0 && nalu.m_temporalId > m_iMaxTemporalLayer) || !isNaluWithinTargetDecLayerIdSet(&nalu) || nalu.m_layerId > MAX_NUM_LAYER_IDS-1 )
     222#endif
    209223      {
    210224        bNewPicture = false;
     
    234248          }
    235249
     250#if H_MV_HLS_7_OUTPUT_LAYERS_5_10_22_27
     251          if ( m_targetOptLayerSetIdx < 0 || m_targetOptLayerSetIdx >= vps->getNumOutputLayerSets() )
     252          {
     253            fprintf(stderr, "\ntarget output layer set index must be in the range of 0 to %d, inclusive \n", vps->getNumOutputLayerSets() - 1 );           
     254            exit(EXIT_FAILURE);
     255          }
     256#endif
    236257          m_targetDecLayerIdSet = vps->getTargetDecLayerIdList( m_targetOptLayerSetIdx );
    237258        }
     259
     260#if FIX_CAM_PARS_COLLECTOR
     261#if H_3D
     262        if (nalu.m_nalUnitType == NAL_UNIT_VPS )
     263        {       
     264         
     265          m_cCamParsCollector.init( m_pScaleOffsetFile, m_tDecTop[decIdx]->getPrefetchedVPS() );
     266        }       
     267#endif
     268#endif
    238269        bNewPicture       = ( newSliceDiffLayer || newSliceDiffPoc ) && !sliceSkippedFlag;
    239270        if ( nalu.isSlice() && firstSlice && !sliceSkippedFlag )       
     
    278309          bitstreamFile.seekg(location-streamoff(3));
    279310          bytestream.reset();
     311#if H_MV_ENC_DEC_TRAC
    280312#if ENC_DEC_TRACE
    281 #if H_MV_ENC_DEC_TRAC
    282313          const Bool resetCounter = false;
    283314          if ( resetCounter )
     
    287318          else
    288319          {
    289             g_disableHLSTrace = true;     // Trancing of second parsing of SH is not carried out
    290           }         
    291 #else
    292           g_nSymbolCounter = symCount;
    293 #endif
    294 #endif
    295         }
    296       }
    297     }
    298     if (bNewPicture || !bitstreamFile)
    299     {
    300 #if H_MV
    301       assert( decIdxLastPic != -1 );
    302       m_tDecTop[decIdxLastPic]->endPicDecoding(poc, pcListPic, m_targetDecLayerIdSet );
    303 #else
    304       m_cTDecTop.executeLoopFilters(poc, pcListPic);
    305 #endif
     320            g_disableHLSTrace = true;     // Tracing of second parsing of SH is not carried out
     321          }     
     322#endif
     323#endif
     324        }
     325      }
     326    }
     327    if (bNewPicture || !bitstreamFile || nalu.m_nalUnitType == NAL_UNIT_EOS )
     328    {
     329      if (!loopFiltered || bitstreamFile)
     330      {
     331#if H_MV
     332        assert( decIdxLastPic != -1 );
     333        m_tDecTop[decIdxLastPic]->endPicDecoding(poc, pcListPic, m_targetDecLayerIdSet );
     334#else
     335        m_cTDecTop.executeLoopFilters(poc, pcListPic);
     336#endif
     337      }
     338      loopFiltered = (nalu.m_nalUnitType == NAL_UNIT_EOS);
    306339    }
    307340#if H_3D
     
    351384#endif
    352385      }
     386      if (nalu.m_nalUnitType == NAL_UNIT_EOS)
     387      {
     388#if H_MV
     389        xFlushOutput( pcListPic, decIdxLastPic );
     390#else
     391        xFlushOutput( pcListPic );
     392#endif
     393      }
    353394      // write reconstruction to file
    354395      if(bNewPicture)
     
    462503#endif
    463504{
     505
     506  if (pcListPic->empty())
     507  {
     508    return;
     509  }
     510
    464511  TComList<TComPic*>::iterator iterPic   = pcListPic->begin();
    465512  Int numPicsNotYetDisplayed = 0;
     
    647694#endif
    648695{
    649   if(!pcListPic)
     696  if(!pcListPic || pcListPic->empty())
    650697  {
    651698    return;
  • trunk/source/App/TAppDecoder/TAppDecTop.h

    r773 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/App/TAppDecoder/decmain.cpp

    r608 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/App/TAppEncoder/TAppEncCfg.cpp

    r833 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
     
    388388  ("VpsNumLayerSets",       m_vpsNumLayerSets    , 1                    , "Number of layer sets")   
    389389  ("LayerIdsInSet_%d",      m_layerIdsInSets     , std::vector<Int>(1,0), MAX_VPS_OP_SETS_PLUS1 ,"LayerIds of Layer set") 
     390#if H_MV_HLS_7_OUTPUT_LAYERS_5_10_22_27
     391  ("DefaultTargetOutputLayerIdc"     , m_defaultTargetOutputLayerIdc     , 0, "Specifies output layers of layer sets, 0: output all layers, 1: output highest layer, 2: specified by LayerIdsInDefOutputLayerSet")
     392#else
    390393  ("DefaultOneTargetOutputLayerFlag"  , m_defaultOneTargetOutputLayerIdc  , 0, "Output highest layer of layer sets by default")
     394#endif
    391395  ("OutputLayerSetIdx",     m_outputLayerSetIdx  , std::vector<Int>(0,0), "Indices of layer sets used as additional output layer sets") 
     396
     397#if H_MV_HLS_7_OUTPUT_LAYERS_5_10_22_27
     398  ("LayerIdsInAddOutputLayerSet_%d", m_layerIdsInAddOutputLayerSet      , std::vector<Int>(0,0), MAX_VPS_ADD_OUTPUT_LAYER_SETS, "Indices in VPS of output layers in additional output layer set") 
     399  ("LayerIdsInDefOutputLayerSet_%d", m_layerIdsInDefOutputLayerSet      , std::vector<Int>(0,0), MAX_VPS_OP_SETS_PLUS1, "Indices in VPS of output layers in layer set") 
     400#else
    392401  ("LayerIdsInAddOutputLayerSet_%d", m_layerIdsInAddOutputLayerSet      , std::vector<Int>(1,0), MAX_VPS_ADD_OUTPUT_LAYER_SETS, "LayerIds of additional output layers") 
     402#endif
    393403  ("ProfileLevelTierIdx",   m_profileLevelTierIdx, std::vector<Int>(1,0), "Indices to profile level tier")
    394404 
     
    444454  ("QuadtreeTUMaxDepthIntra", m_uiQuadtreeTUMaxDepthIntra, 1u, "Depth of TU tree for intra CUs")
    445455  ("QuadtreeTUMaxDepthInter", m_uiQuadtreeTUMaxDepthInter, 2u, "Depth of TU tree for inter CUs")
     456#if H_MV 
    446457  // Coding structure parameters
    447 #if H_MV 
    448458  ("IntraPeriod,-ip",         m_iIntraPeriod,std::vector<Int>(1,-1), "Intra period in frames, (-1: only first frame), per layer")
    449459#else
     460  // Coding structure paramters
    450461("IntraPeriod,-ip",         m_iIntraPeriod,              -1, "Intra period in frames, (-1: only first frame)")
    451462#endif
     
    492503  ("RDOQTS",                        m_useRDOQTS,                true )
    493504  ("RDpenalty",                     m_rdPenalty,                0,  "RD-penalty for 32x32 TU for intra in non-intra slices. 0:disbaled  1:RD-penalty  2:maximum RD-penalty")
    494   // Entropy coding parameters
    495   ("SBACRD",                         m_bUseSBACRD,                      true, "SBAC based RD estimation")
    496505 
    497506  // Deblocking filter parameters
     
    539548  ("MaxNumOffsetsPerPic",      m_maxNumOffsetsPerPic,       2048,  "Max number of SAO offset per picture (Default: 2048)")   
    540549  ("SAOLcuBoundary",           m_saoLcuBoundary,            false, "0: right/bottom LCU boundary areas skipped from SAO parameter estimation, 1: non-deblocked pixels are used for those areas")
    541   ("SAOLcuBasedOptimization",  m_saoLcuBasedOptimization,   true,  "0: SAO picture-based optimization, 1: SAO LCU-based optimization ")
    542550  ("SliceMode",                m_sliceMode,                0,     "0: Disable all Recon slice limits, 1: Enforce max # of LCUs, 2: Enforce max # of bytes, 3:specify tiles per dependent slice")
    543551  ("SliceArgument",            m_sliceArgument,            0,     "Depending on SliceMode being:"
     
    559567  ("PCMInputBitDepthFlag",     m_bPCMInputBitDepthFlag,     true)
    560568  ("PCMFilterDisableFlag",     m_bPCMFilterDisableFlag,    false)
    561 
    562   ("LosslessCuEnabled",        m_useLossless, false)
    563569
    564570  ("WeightedPredP,-wpP",          m_useWeightedPred,               false,      "Use weighted prediction in P slices")
     
    590596  ("CFM", m_bUseCbfFastMode, false, "Cbf fast mode setting")
    591597  ("ESD", m_useEarlySkipDetection, false, "Early SKIP detection setting")
    592 #if RATE_CONTROL_LAMBDA_DOMAIN
    593598  ( "RateControl",         m_RCEnableRateControl,   false, "Rate control: enable rate control" )
    594599  ( "TargetBitrate",       m_RCTargetBitrate,           0, "Rate control: target bitrate" )
    595 #if M0036_RC_IMPROVEMENT
    596600  ( "KeepHierarchicalBit", m_RCKeepHierarchicalBit,     0, "Rate control: 0: equal bit allocation; 1: fixed ratio bit allocation; 2: adaptive ratio bit allocation" )
    597 #else
    598   ( "KeepHierarchicalBit", m_RCKeepHierarchicalBit, false, "Rate control: keep hierarchical bit allocation in rate control algorithm" )
    599 #endif
    600601  ( "LCULevelRateControl", m_RCLCULevelRC,           true, "Rate control: true: LCU level RC; false: picture level RC" )
    601602  ( "RCLCUSeparateModel",  m_RCUseLCUSeparateModel,  true, "Rate control: use LCU level separate R-lambda model" )
     
    610611  ("DepthMADPred, -dm", m_depthMADPred, (UInt)0, "Depth based MAD prediction on/off")
    611612#endif
    612 #else
    613   ("RateCtrl,-rc", m_enableRateCtrl, false, "Rate control on/off")
    614   ("TargetBitrate,-tbr", m_targetBitrate, 0, "Input target bitrate")
    615   ("NumLCUInUnit,-nu", m_numLCUInUnit, 0, "Number of LCUs in an Unit")
    616 
    617 #if KWU_RC_VIEWRC_E0227
    618   ("ViewWiseTargetBits, -vtbr" ,  m_viewTargetBits,  std::vector<Int>(1, 32), "View-wise target bit-rate setting")
    619   ("TargetBitAssign, -ta", m_viewWiseRateCtrl, false, "View-wise rate control on/off")
    620 #endif
    621 #if KWU_RC_MADPRED_E0227
    622   ("DepthMADPred, -dm", m_depthMADPred, (UInt)0, "Depth based MAD prediction on/off")
    623 #endif
    624 #endif
    625 
    626613#if H_MV
    627614
    628615  // DBP Size
     616#if !H_MV_HLS_7_FIX_SET_DPB_SIZE
    629617  ("SubLayerFlagInfoPresentFlag",  m_subLayerFlagInfoPresentFlag , false                                           , "SubLayerFlagInfoPresentFlag")
     618#endif
    630619  // VPS VUI
    631620  ("VpsVuiPresentFlag"           , m_vpsVuiPresentFlag           , false                                           , "VpsVuiPresentFlag           ")
    632621  ("CrossLayerPicTypeAlignedFlag", m_crossLayerPicTypeAlignedFlag, false                                           , "CrossLayerPicTypeAlignedFlag")  // Could actually be derived by the encoder
    633622  ("CrossLayerIrapAlignedFlag"   , m_crossLayerIrapAlignedFlag   , false                                           , "CrossLayerIrapAlignedFlag   ")  // Could actually be derived by the encoder
     623#if H_MV_HLS_7_MISC_P0068_21
     624  ("AllLayersIdrAlignedFlag"     , m_allLayersIdrAlignedFlag     , false                                           , "CrossLayerIrapAlignedFlag   ")  // Could actually be derived by the encoder
     625#endif
    634626  ("BitRatePresentVpsFlag"       , m_bitRatePresentVpsFlag       , false                                           , "BitRatePresentVpsFlag       ")
    635627  ("PicRatePresentVpsFlag"       , m_picRatePresentVpsFlag       , false                                           , "PicRatePresentVpsFlag       ")
     
    653645
    654646  ("TransquantBypassEnableFlag", m_TransquantBypassEnableFlag, false, "transquant_bypass_enable_flag indicator in PPS")
    655   ("CUTransquantBypassFlagValue", m_CUTransquantBypassFlagValue, false, "Fixed cu_transquant_bypass_flag value, when transquant_bypass_enable_flag is enabled")
     647  ("CUTransquantBypassFlagForce", m_CUTransquantBypassFlagForce, false, "Force transquant bypass mode, when transquant_bypass_enable_flag is enabled")
    656648  ("RecalculateQPAccordingToLambda", m_recalculateQPAccordingToLambda, false, "Recalculate QP values according to lambda values. Do not suggest to be enabled in all intra case")
    657649  ("StrongIntraSmoothing,-sis",      m_useStrongIntraSmoothing,           true, "Enable strong intra smoothing for 32x32 blocks")
     
    745737  ("SEISOPDescription",              m_SOPDescriptionSEIEnabled,              0, "Control generation of SOP description SEI messages")
    746738  ("SEIScalableNesting",             m_scalableNestingSEIEnabled,              0, "Control generation of scalable nesting SEI messages")
     739#if H_MV_HLS_7_SEI_P0204_26
     740  ("SubBitstreamPropSEIEnabled",              m_subBistreamPropSEIEnabled,    false                     ,"Enable signaling of sub-bitstream property SEI message")
     741  ("SEISubBitstreamNumAdditionalSubStreams",  m_sbPropNumAdditionalSubStreams,0, "Number of substreams for which additional information is signalled")
     742  ("SEISubBitstreamSubBitstreamMode",         m_sbPropSubBitstreamMode,       std::vector< Int  >(1,0)  ,"Specifies mode of generation of the i-th sub-bitstream (0 or 1)")
     743  ("SEISubBitstreamOutputLayerSetIdxToVps",   m_sbPropOutputLayerSetIdxToVps, std::vector< Int  >(1,0)  ,"Specifies output layer set index of the i-th sub-bitstream ")
     744  ("SEISubBitstreamHighestSublayerId",        m_sbPropHighestSublayerId,      std::vector< Int  >(1,0)  ,"Specifies highest TemporalId of the i-th sub-bitstream")
     745  ("SEISubBitstreamAvgBitRate",               m_sbPropAvgBitRate,             std::vector< Int  >(1,0)  ,"Specifies average bit rate of the i-th sub-bitstream")
     746  ("SEISubBitstreamMaxBitRate",               m_sbPropMaxBitRate,             std::vector< Int  >(1,0)  ,"Specifies maximum bit rate of the i-th sub-bitstream")
     747#endif
    747748#if H_3D
    748749  ("CameraParameterFile,cpf", m_pchCameraParameterFile,    (Char *) 0, "Camera Parameter File Name")
     
    14311432  }
    14321433
     1434#if H_MV_HLS_7_OUTPUT_LAYERS_5_10_22_27
     1435  xConfirmPara( m_defaultTargetOutputLayerIdc < 0 || m_defaultTargetOutputLayerIdc > 2, "Default target output layer idc must greater than or equal to 0 and less than or equal to 2." ); 
     1436
     1437  if( m_defaultTargetOutputLayerIdc != 2 )
     1438  {
     1439    Bool anyDefaultOutputFlag = false;   
     1440    for (Int lsIdx = 0; lsIdx < m_vpsNumLayerSets; lsIdx++)
     1441    {
     1442      anyDefaultOutputFlag = anyDefaultOutputFlag || ( m_layerIdsInDefOutputLayerSet[lsIdx].size() != 0 );
     1443    }   
     1444    printf( "\nWarning: Ignoring LayerIdsInDefOutputLayerSet parameters, since defaultTargetOuputLayerIdc is not equal 2.\n" );   
     1445  }
     1446  else 
     1447  { 
     1448    for (Int lsIdx = 0; lsIdx < m_vpsNumLayerSets; lsIdx++)
     1449    {
     1450      for (Int i = 0; i < m_layerIdsInDefOutputLayerSet[ lsIdx ].size(); i++)
     1451      {
     1452        Bool inLayerSetFlag = false;
     1453        for (Int j = 0; j < m_layerIdsInSets[ lsIdx].size(); j++ )
     1454        {
     1455          if ( m_layerIdsInSets[ lsIdx ][ j ] == m_layerIdsInDefOutputLayerSet[ lsIdx ][ i ] )
     1456          {
     1457            inLayerSetFlag = true;
     1458            break;
     1459          }       
     1460        }
     1461        xConfirmPara( !inLayerSetFlag, "All output layers of a output layer set must be included in corresponding layer set.");
     1462      }
     1463    }
     1464  }
     1465#else
    14331466  xConfirmPara( m_defaultOneTargetOutputLayerIdc < 0 || m_defaultOneTargetOutputLayerIdc > 1, "Default one target output layer idc must be equal to 0 or equal to 1" );
     1467#endif
    14341468  xConfirmPara( m_profileLevelTierIdx.size() < m_vpsNumLayerSets + m_outputLayerSetIdx.size(), "The number of Profile Level Tier indices must be equal to the number of layer set plus the number of output layer set indices" );
    14351469
     
    20212055      m_maxTempLayer = m_GOPList[i].m_temporalId+1;
    20222056    }
    2023     xConfirmPara(m_GOPList[i].m_sliceType!='B'&&m_GOPList[i].m_sliceType!='P', "Slice type must be equal to B or P");
     2057    xConfirmPara(m_GOPList[i].m_sliceType!='B'&&m_GOPList[i].m_sliceType!='P'&&m_GOPList[i].m_sliceType!='I', "Slice type must be equal to B or P or I");
    20242058  }
    20252059  for(Int i=0; i<MAX_TLAYER; i++)
     
    21722206  }
    21732207
    2174 #if RATE_CONTROL_LAMBDA_DOMAIN
    21752208  if ( m_RCEnableRateControl )
    21762209  {
     
    21852218    xConfirmPara( m_uiDeltaQpRD > 0, "Rate control cannot be used together with slice level multiple-QP optimization!\n" );
    21862219  }
    2187 #else
    2188   if(m_enableRateCtrl)
    2189   {
    2190     Int numLCUInWidth  = (m_iSourceWidth  / m_uiMaxCUWidth) + (( m_iSourceWidth  %  m_uiMaxCUWidth ) ? 1 : 0);
    2191     Int numLCUInHeight = (m_iSourceHeight / m_uiMaxCUHeight)+ (( m_iSourceHeight %  m_uiMaxCUHeight) ? 1 : 0);
    2192     Int numLCUInPic    =  numLCUInWidth * numLCUInHeight;
    2193 
    2194     xConfirmPara( (numLCUInPic % m_numLCUInUnit) != 0, "total number of LCUs in a frame should be completely divided by NumLCUInUnit" );
    2195 
    2196 #if !KWU_FIX_URQ
    2197     m_iMaxDeltaQP       = MAX_DELTA_QP;
    2198 #endif
    2199     m_iMaxCuDQPDepth    = MAX_CUDQP_DEPTH;
    2200   }
    2201 #endif
    22022220#if H_MV
    22032221  // VPS VUI
     
    22232241#endif
    22242242
    2225   xConfirmPara(!m_TransquantBypassEnableFlag && m_CUTransquantBypassFlagValue, "CUTransquantBypassFlagValue cannot be 1 when TransquantBypassEnableFlag is 0");
     2243  xConfirmPara(!m_TransquantBypassEnableFlag && m_CUTransquantBypassFlagForce, "CUTransquantBypassFlagForce cannot be 1 when TransquantBypassEnableFlag is 0");
    22262244
    22272245  xConfirmPara(m_log2ParallelMergeLevel < 2, "Log2ParallelMergeLevel should be larger than or equal to 2");
     
    22332251#if H_MV
    22342252  }
     2253  }
     2254#endif
     2255#if H_MV_HLS_7_SEI_P0204_26
     2256  // Check input parameters for Sub-bitstream property SEI message
     2257  if( m_subBistreamPropSEIEnabled )
     2258  {
     2259    xConfirmPara(
     2260      (this->m_sbPropNumAdditionalSubStreams != m_sbPropAvgBitRate.size() )
     2261      || (this->m_sbPropNumAdditionalSubStreams != m_sbPropHighestSublayerId.size() )
     2262      || (this->m_sbPropNumAdditionalSubStreams != m_sbPropMaxBitRate.size() )
     2263      || (this->m_sbPropNumAdditionalSubStreams != m_sbPropOutputLayerSetIdxToVps.size() )
     2264      || (this->m_sbPropNumAdditionalSubStreams != m_sbPropSubBitstreamMode.size()), "Some parameters of some sub-bitstream not defined");
     2265
     2266    for( Int i = 0; i < m_sbPropNumAdditionalSubStreams; i++ )
     2267    {
     2268      xConfirmPara( m_sbPropSubBitstreamMode[i] < 0 || m_sbPropSubBitstreamMode[i] > 1, "Mode value should be 0 or 1" );
     2269      xConfirmPara( m_sbPropHighestSublayerId[i] < 0 || m_sbPropHighestSublayerId[i] > MAX_TLAYER-1, "Maximum sub-layer ID out of range" );
     2270      xConfirmPara( m_sbPropOutputLayerSetIdxToVps[i] < 0 || m_sbPropOutputLayerSetIdxToVps[i] >= MAX_VPS_OUTPUTLAYER_SETS, "OutputLayerSetIdxToVps should be within allowed range" );
     2271    }
    22352272  }
    22362273#endif
     
    23432380  printf("Internal bit depth           : (Y:%d, C:%d)\n", m_internalBitDepthY, m_internalBitDepthC );
    23442381  printf("PCM sample bit depth         : (Y:%d, C:%d)\n", g_uiPCMBitDepthLuma, g_uiPCMBitDepthChroma );
    2345 #if RATE_CONTROL_LAMBDA_DOMAIN
    23462382  printf("RateControl                  : %d\n", m_RCEnableRateControl );
    23472383  if(m_RCEnableRateControl)
     
    23732409#endif
    23742410  }
    2375 #else
    2376   printf("RateControl                  : %d\n", m_enableRateCtrl);
    2377   if(m_enableRateCtrl)
    2378   {
    2379     printf("TargetBitrate                : %d\n", m_targetBitrate);
    2380     printf("NumLCUInUnit                 : %d\n", m_numLCUInUnit);
    2381 
    2382 #if KWU_RC_MADPRED_E0227
    2383     printf("Depth based MAD prediction   : %d\n", m_depthMADPred);
    2384 #endif
    2385 #if KWU_RC_VIEWRC_E0227
    2386     printf("View-wise Rate control       : %d\n", m_viewWiseRateCtrl);
    2387     if(m_viewWiseRateCtrl)
    2388     {
    2389 
    2390       printf("ViewWiseTargetBits           : ");
    2391       for (Int i = 0 ; i < m_iNumberOfViews ; i++)
    2392         printf("%d ", m_viewTargetBits[i]);
    2393       printf("\n");
    2394     }
    2395     else
    2396     {
    2397       printf("TargetBitrate                : %d\n", m_targetBitrate );
    2398     }
    2399 #endif
    2400   }
    2401 #endif
    24022411  printf("Max Num Merge Candidates     : %d\n", m_maxNumMergeCand);
    24032412#if H_3D
     
    24292438  printf("IBD:%d ", g_bitDepthY > m_inputBitDepthY || g_bitDepthC > m_inputBitDepthC);
    24302439  printf("HAD:%d ", m_bUseHADME           );
    2431   printf("SRD:%d ", m_bUseSBACRD          );
    24322440  printf("RDQ:%d ", m_useRDOQ            );
    24332441  printf("RDQTS:%d ", m_useRDOQTS        );
     
    24582466#endif
    24592467  printf("PCM:%d ", (m_usePCM && (1<<m_uiPCMLog2MinSize) <= m_uiMaxCUWidth)? 1 : 0);
    2460   printf("SAOLcuBasedOptimization:%d ", (m_saoLcuBasedOptimization)?(1):(0));
    2461 
    2462   printf("LosslessCuEnabled:%d ", (m_useLossless)? 1:0 );
     2468  if (m_TransquantBypassEnableFlag && m_CUTransquantBypassFlagForce)
     2469  {
     2470    printf("TransQuantBypassEnabled: =1 ");
     2471  }
     2472  else
     2473  {
     2474    printf("TransQuantBypassEnabled:%d ", (m_TransquantBypassEnableFlag)? 1:0 );
     2475  }
    24632476  printf("WPP:%d ", (Int)m_useWeightedPred);
    24642477  printf("WPB:%d ", (Int)m_useWeightedBiPred);
  • trunk/source/App/TAppEncoder/TAppEncCfg.h

    r833 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
     
    8989  Int                    m_vpsNumLayerSets;                   ///< Number of layer sets
    9090  std::vector< std::vector<Int> > m_layerIdsInSets;           ///< LayerIds in vps of layer set
     91#if H_MV_HLS_7_OUTPUT_LAYERS_5_10_22_27
     92  Int                    m_defaultTargetOutputLayerIdc;       ///< Specifies output layers of layer sets, 0: output all layers, 1: output highest layers, 2: specified by LayerIdsInDefOuputLayerSet
     93#else
    9194  Int                    m_defaultOneTargetOutputLayerIdc;    ///< Output highest layer of layer sets by default when equal to 1
     95#endif
    9296  std::vector<Int>       m_outputLayerSetIdx;                 ///< Indices of layer sets used as additional output layer sets 
    9397  std::vector< std::vector<Int> > m_layerIdsInAddOutputLayerSet; ///< LayerIds in vps of additional output layers
     98#if H_MV_HLS_7_OUTPUT_LAYERS_5_10_22_27
     99  std::vector< std::vector<Int> > m_layerIdsInDefOutputLayerSet; ///< Indices in vps of output layers in layer sets
     100#endif
    94101  std::vector<Int>       m_profileLevelTierIdx;               ///< Indices of of profile level tier
    95102 
     
    99106
    100107  // DBP Size
     108#if !H_MV_HLS_7_FIX_SET_DPB_SIZE
    101109  Bool m_subLayerFlagInfoPresentFlag;
     110#endif
    102111
    103112  // VPS VUI
     
    105114  Bool m_crossLayerPicTypeAlignedFlag;
    106115  Bool m_crossLayerIrapAlignedFlag;
     116#if H_MV_HLS_7_MISC_P0068_21
     117  Bool m_allLayersIdrAlignedFlag;
     118#endif
    107119  Bool m_bitRatePresentVpsFlag;
    108120  Bool m_picRatePresentVpsFlag;
     
    259271  Bool      m_bPCMInputBitDepthFlag;                          ///< 0: PCM bit-depth is internal bit-depth. 1: PCM bit-depth is input bit-depth.
    260272
    261   // coding tool (lossless)
    262   Bool      m_useLossless;                                    ///< flag for using lossless coding
     273  // coding tool (SAO)
    263274#if H_MV
    264275  std::vector<Bool> m_bUseSAO;
     
    268279  Int       m_maxNumOffsetsPerPic;                            ///< SAO maximun number of offset per picture
    269280  Bool      m_saoLcuBoundary;                                 ///< SAO parameter estimation using non-deblocked pixels for LCU bottom and right boundary areas
    270   Bool      m_saoLcuBasedOptimization;                        ///< SAO LCU-based optimization
    271281  // coding tools (loop filter)
    272282#if H_MV
     
    288298
    289299  // coding tools (encoder-only parameters)
    290   Bool      m_bUseSBACRD;                                     ///< flag for using RD optimization based on SBAC
    291300  Bool      m_bUseASR;                                        ///< flag for using adaptive motion search range
    292301  Bool      m_bUseHADME;                                      ///< flag for using HAD in sub-pel ME
     
    372381  Int       m_TMVPModeId;
    373382  Int       m_signHideFlag;
    374 #if RATE_CONTROL_LAMBDA_DOMAIN
    375383  Bool      m_RCEnableRateControl;                ///< enable rate control or not
    376384  Int       m_RCTargetBitrate;                    ///< target bitrate when rate control is enabled
    377 #if M0036_RC_IMPROVEMENT
    378385  Int       m_RCKeepHierarchicalBit;              ///< 0: equal bit allocation; 1: fixed ratio bit allocation; 2: adaptive ratio bit allocation
    379 #else
    380   Bool      m_RCKeepHierarchicalBit;              ///< whether keeping hierarchical bit allocation structure or not
    381 #endif
    382386  Bool      m_RCLCULevelRC;                       ///< true: LCU level rate control; false: picture level rate control
    383387  Bool      m_RCUseLCUSeparateModel;              ///< use separate R-lambda model at LCU level
     
    392396  UInt       m_depthMADPred;
    393397#endif
    394 #else
    395   Bool      m_enableRateCtrl;                                   ///< Flag for using rate control algorithm
    396   Int       m_targetBitrate;                                 ///< target bitrate
    397   Int       m_numLCUInUnit;                                  ///< Total number of LCUs in a frame should be completely divided by the NumLCUInUnit
    398 
    399 #if KWU_RC_VIEWRC_E0227
    400   vector<Int>     m_viewTargetBits;
    401   Bool      m_viewWiseRateCtrl;                              ///< Flag for using view-wise rate control
    402 #endif
    403 #if KWU_RC_MADPRED_E0227
    404   UInt       m_depthMADPred;
    405 #endif
    406 #endif
    407398  Int       m_useScalingListId;                               ///< using quantization matrix
    408399  Char*     m_scalingListFile;                                ///< quantization matrix file name
    409400
    410401  Bool      m_TransquantBypassEnableFlag;                     ///< transquant_bypass_enable_flag setting in PPS.
    411   Bool      m_CUTransquantBypassFlagValue;                    ///< if transquant_bypass_enable_flag, the fixed value to use for the per-CU cu_transquant_bypass_flag.
     402  Bool      m_CUTransquantBypassFlagForce;                    ///< if transquant_bypass_enable_flag, then, if true, all CU transquant bypass flags will be set to true.
    412403
    413404  Bool      m_recalculateQPAccordingToLambda;                 ///< recalculate QP value according to the lambda value
     
    449440  Int       m_log2MaxMvLengthHorizontal;                      ///< Indicate the maximum absolute value of a decoded horizontal MV component in quarter-pel luma units
    450441  Int       m_log2MaxMvLengthVertical;                        ///< Indicate the maximum absolute value of a decoded vertical MV component in quarter-pel luma units
    451 
     442#if H_MV_HLS_7_SEI_P0204_26
     443  Bool              m_subBistreamPropSEIEnabled;
     444  Int               m_sbPropNumAdditionalSubStreams;
     445  std::vector<Int>  m_sbPropSubBitstreamMode;
     446  std::vector<Int>  m_sbPropOutputLayerSetIdxToVps;
     447  std::vector<Int>  m_sbPropHighestSublayerId;
     448  std::vector<Int>  m_sbPropAvgBitRate;
     449  std::vector<Int>  m_sbPropMaxBitRate;
     450#endif
    452451#if H_3D
    453452  // Camera parameters
  • trunk/source/App/TAppEncoder/TAppEncTop.cpp

    r833 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
     
    127127  xSetRepFormat            ( vps );
    128128  xSetLayerSets            ( vps );
     129#if H_MV_HLS_7_FIX_SET_DPB_SIZE
     130  xSetDpbSize              ( vps );
     131#endif
    129132  xSetVPSVUI               ( vps );
    130133#if H_3D
     
    309312#endif
    310313
    311   Int lowestQP;
    312   lowestQP =  - 6*(g_bitDepthY - 8); // XXX: check
    313 
    314 #if H_MV
    315   if ((m_iMaxDeltaQP == 0 ) && (m_iQP[layerIdInVps] == lowestQP) && (m_useLossless == true))
    316 #else
    317   if ((m_iMaxDeltaQP == 0 ) && (m_iQP == lowestQP) && (m_useLossless == true))
    318 #endif
    319   {
    320     m_bUseAdaptiveQP = false;
    321   }
    322314  m_cTEncTop.setUseAdaptiveQP                ( m_bUseAdaptiveQP  );
    323315  m_cTEncTop.setQPAdaptationRange            ( m_iQPAdaptationRange );
    324316 
    325317  //====== Tool list ========
    326   m_cTEncTop.setUseSBACRD                    ( m_bUseSBACRD   );
    327318  m_cTEncTop.setDeltaQpRD                    ( m_uiDeltaQpRD  );
    328319  m_cTEncTop.setUseASR                       ( m_bUseASR      );
    329320  m_cTEncTop.setUseHADME                     ( m_bUseHADME    );
    330   m_cTEncTop.setUseLossless                  ( m_useLossless );
    331321#if H_MV
    332322  m_cTEncTop.setdQPs                         ( m_aidQP[layerIdInVps]   );
     
    396386
    397387  m_cTEncTop.setSaoLcuBoundary (m_saoLcuBoundary);
    398   m_cTEncTop.setSaoLcuBasedOptimization (m_saoLcuBasedOptimization);
    399388  m_cTEncTop.setPCMInputBitDepthFlag  ( m_bPCMInputBitDepthFlag);
    400389  m_cTEncTop.setPCMFilterDisableFlag  ( m_bPCMFilterDisableFlag);
     
    440429  m_cTEncTop.setSOPDescriptionSEIEnabled( m_SOPDescriptionSEIEnabled );
    441430  m_cTEncTop.setScalableNestingSEIEnabled( m_scalableNestingSEIEnabled );
     431#if H_MV_HLS_7_SEI_P0204_26
     432  m_cTEncTop.setSubBitstreamPropSEIEnabled( m_subBistreamPropSEIEnabled );
     433  if( m_subBistreamPropSEIEnabled )
     434  {
     435    m_cTEncTop.setNumAdditionalSubStreams ( m_sbPropNumAdditionalSubStreams );
     436    m_cTEncTop.setSubBitstreamMode        ( m_sbPropSubBitstreamMode );
     437    m_cTEncTop.setOutputLayerSetIdxToVps  ( m_sbPropOutputLayerSetIdxToVps );
     438    m_cTEncTop.setHighestSublayerId       ( m_sbPropHighestSublayerId );
     439    m_cTEncTop.setAvgBitRate              ( m_sbPropAvgBitRate );
     440    m_cTEncTop.setMaxBitRate              ( m_sbPropMaxBitRate );
     441  }
     442#endif
    442443  m_cTEncTop.setUniformSpacingIdr          ( m_iUniformSpacingIdr );
    443444  m_cTEncTop.setNumColumnsMinus1           ( m_iNumColumnsMinus1 );
     
    461462  m_cTEncTop.setScalingListFile            ( m_scalingListFile   );
    462463  m_cTEncTop.setSignHideFlag(m_signHideFlag);
    463 #if RATE_CONTROL_LAMBDA_DOMAIN
    464464#if KWU_RC_VIEWRC_E0227 || KWU_RC_MADPRED_E0227
    465465  if(!m_cTEncTop.getIsDepth())    //only for texture
     
    482482  m_cTEncTop.setInitialQP           ( m_RCInitialQP );
    483483  m_cTEncTop.setForceIntraQP        ( m_RCForceIntraQP );
    484 
    485484#if KWU_RC_MADPRED_E0227
    486485  if(m_cTEncTop.getUseRateCtrl() && !m_cTEncTop.getIsDepth())
    487486  {
    488487    m_cTEncTop.setUseDepthMADPred(layerIdInVps ? m_depthMADPred       : 0);
    489 
    490488    if(m_cTEncTop.getUseDepthMADPred())
    491489    {
     
    498496  {
    499497    m_cTEncTop.setUseViewWiseRateCtrl(m_viewWiseRateCtrl);
    500 
    501498    if(m_iNumberOfViews == 1)
    502499    {
     
    552549  }
    553550#endif
    554 #else
    555 #if KWU_RC_VIEWRC_E0227 || KWU_RC_MADPRED_E0227
    556   if(!m_cTEncTop.getIsDepth())    //only for texture
    557   {
    558     m_cTEncTop.setUseRateCtrl         ( m_enableRateCtrl );
    559     m_cTEncTop.setTargetBitrate       ( m_targetBitrate );
    560     m_cTEncTop.setNumLCUInUnit        ( m_numLCUInUnit);
    561   }
    562   else
    563   {
    564     m_cTEncTop.setUseRateCtrl         ( 0 );
    565   }
    566 #else
    567   m_cTEncTop.setUseRateCtrl         ( m_enableRateCtrl );
    568   m_cTEncTop.setTargetBitrate       ( m_targetBitrate );
    569   m_cTEncTop.setNumLCUInUnit        ( m_numLCUInUnit);
    570 #endif
    571 
    572  
    573 #if KWU_RC_MADPRED_E0227
    574   if(m_cTEncTop.getUseRateCtrl() && !m_cTEncTop.getIsDepth())
    575   {
    576     m_cTEncTop.setUseDepthMADPred(layerIdInVps ? m_depthMADPred       : 0);
    577 
    578     if(m_cTEncTop.getUseDepthMADPred())
    579     {
    580       m_cTEncTop.setCamParam(&m_cCameraData);
    581     }
    582   }
    583 #endif
    584 
    585 #if KWU_RC_VIEWRC_E0227
    586   if(m_cTEncTop.getUseRateCtrl() && !m_cTEncTop.getIsDepth())
    587   {
    588     m_cTEncTop.setUseViewWiseRateCtrl(m_viewWiseRateCtrl);
    589     if(m_iNumberOfViews == 1)
    590     {
    591       if(m_viewWiseRateCtrl)
    592       {
    593         m_cTEncTop.setTargetBitrate(m_viewTargetBits[layerIdInVps>>1]);
    594       }
    595       else
    596       {
    597         m_cTEncTop.setTargetBitrate       ( m_targetBitrate );
    598       }
    599     }
    600     else
    601     {
    602       if(m_viewWiseRateCtrl)
    603       {
    604         m_cTEncTop.setTargetBitrate(m_viewTargetBits[layerIdInVps>>1]);
    605       }
    606       else
    607       {
    608         if(m_iNumberOfViews == 2)
    609         {
    610           if(m_cTEncTop.getViewId() == 0)
    611           {
    612             m_cTEncTop.setTargetBitrate              ( (m_targetBitrate*80)/100 );
    613           }
    614           else if(m_cTEncTop.getViewId() == 1)
    615           {
    616             m_cTEncTop.setTargetBitrate              ( (m_targetBitrate*20)/100 );
    617           }
    618         }
    619         else if(m_iNumberOfViews == 3)
    620         {
    621           if(m_cTEncTop.getViewId() == 0)
    622           {
    623             m_cTEncTop.setTargetBitrate              ( (m_targetBitrate*66)/100 );
    624           }
    625           else if(m_cTEncTop.getViewId() == 1)
    626           {
    627             m_cTEncTop.setTargetBitrate              ( (m_targetBitrate*17)/100 );
    628           }
    629           else if(m_cTEncTop.getViewId() == 2)
    630           {
    631             m_cTEncTop.setTargetBitrate              ( (m_targetBitrate*17)/100 );
    632           }
    633         }
    634         else
    635         {
    636           m_cTEncTop.setTargetBitrate              ( m_targetBitrate );
    637         }
    638       }
    639     }
    640   }
    641 #endif
    642 #endif
    643551  m_cTEncTop.setTransquantBypassEnableFlag(m_TransquantBypassEnableFlag);
    644   m_cTEncTop.setCUTransquantBypassFlagValue(m_CUTransquantBypassFlagValue);
     552  m_cTEncTop.setCUTransquantBypassFlagForceValue(m_CUTransquantBypassFlagForce);
    645553  m_cTEncTop.setUseRecalculateQPAccordingToLambda( m_recalculateQPAccordingToLambda );
    646554  m_cTEncTop.setUseStrongIntraSmoothing( m_useStrongIntraSmoothing );
     
    932840    }
    933841
    934 #if !RATE_CONTROL_LAMBDA_DOMAIN && KWU_FIX_URQ
    935     for(Int layer=0; layer < m_numberOfLayers; layer++ )
    936     {
    937       if(m_acTEncTopList[layer]->getUseRateCtrl()  && !m_acTEncTopList[layer]->getIsDepth())
    938       {
    939         m_acTEncTopList[layer]->getRateCtrl()->updateRCGOPStatus();
    940       }
    941     }
    942 #endif
    943 
    944842    gopSize = maxGopSize;
    945843  }
     
    12031101      rateStatsAccum(au, stats);   
    12041102    }
    1205 #endif   
     1103#endif
    12061104  }
    12071105}
     
    12211119    case NAL_UNIT_CODED_SLICE_TRAIL_R:
    12221120    case NAL_UNIT_CODED_SLICE_TRAIL_N:
    1223     case NAL_UNIT_CODED_SLICE_TLA_R:
     1121    case NAL_UNIT_CODED_SLICE_TSA_R:
    12241122    case NAL_UNIT_CODED_SLICE_TSA_N:
    12251123    case NAL_UNIT_CODED_SLICE_STSA_R:
     
    16081506}
    16091507
     1508#if H_MV_HLS_7_FIX_SET_DPB_SIZE
     1509Void TAppEncTop::xSetDpbSize                ( TComVPS& vps )
     1510{
     1511  // These settings need to be verified
     1512
     1513  TComDpbSize* dpbSize = vps.getDpbSize();
     1514
     1515  assert ( dpbSize != 0 );
     1516
     1517  for( Int i = 1; i < vps.getNumOutputLayerSets(); i++ )
     1518  { 
     1519    std::vector<Int> targetDecLayerIdList = vps.getTargetDecLayerIdList( i );
     1520    Bool subLayerFlagInfoPresentFlag = false;
     1521
     1522#if H_MV_HLS_7_HRD_P0156_7
     1523    for( Int j = 0; j  <=  vps.getMaxSubLayersInLayerSetMinus1( i ); j++ )
     1524#else
     1525    for( Int j = 0; j  <=  vps.getMaxTLayers() - 1 ; j++ )
     1526#endif
     1527    {   
     1528      Bool subLayerDpbInfoPresentFlag = false;
     1529#if H_MV_HLS_7_OUTPUT_LAYERS_5_10_22_27
     1530      assert( vps.getNumSubDpbs( vps.getLayerSetIdxForOutputLayerSet( i ) ) == targetDecLayerIdList.size() );
     1531      for( Int k = 0; k < vps.getNumSubDpbs( vps.getLayerSetIdxForOutputLayerSet( i )); k++ )   
     1532#else
     1533      assert( vps.getNumSubDpbs( vps.getOutputLayerSetIdxMinus1( i ) + 1 ) == targetDecLayerIdList.size() );
     1534      for( Int k = 0; k < vps.getNumSubDpbs( vps.getOutputLayerSetIdxMinus1( i ) + 1 ); k++ )   
     1535#endif
     1536      {
     1537        Int layerIdInVps = vps.getLayerIdInVps( targetDecLayerIdList[k] );           
     1538#if H_MV_HLS7_GEN
     1539        // TBD. Some derivation based on output layer set might be added here.
     1540#endif
     1541        dpbSize->setMaxVpsDecPicBufferingMinus1( i, k, j, m_maxDecPicBufferingMvc[ layerIdInVps ][ j ] - 1 );
     1542        if ( j > 0 )
     1543        {
     1544          subLayerDpbInfoPresentFlag = subLayerDpbInfoPresentFlag || ( dpbSize->getMaxVpsDecPicBufferingMinus1( i, k, j ) != dpbSize->getMaxVpsDecPicBufferingMinus1( i, k, j - 1 ) );
     1545        }
     1546      }       
     1547
     1548      Int maxNumReorderPics = MIN_INT;
     1549      for ( Int idx = 0; idx < targetDecLayerIdList.size(); idx++ )
     1550      {
     1551        Int layerIdInVps = vps.getLayerIdInVps( targetDecLayerIdList[ idx ] );
     1552        maxNumReorderPics = std::max( maxNumReorderPics, m_numReorderPicsMvc[ layerIdInVps ][ j ] );
     1553      }
     1554      assert( maxNumReorderPics != MIN_INT );
     1555
     1556      dpbSize->setMaxVpsNumReorderPics( i, j, maxNumReorderPics );
     1557      if ( j > 0 )
     1558      {
     1559        subLayerDpbInfoPresentFlag = subLayerDpbInfoPresentFlag || ( dpbSize->getMaxVpsNumReorderPics( i, j ) != dpbSize->getMaxVpsNumReorderPics( i, j - 1 ) );
     1560      }
     1561
     1562      // To Be Done !
     1563      // dpbSize->setMaxVpsLatencyIncreasePlus1( i, j, xx );
     1564      if ( j > 0 )
     1565      {
     1566        subLayerDpbInfoPresentFlag = subLayerDpbInfoPresentFlag || ( dpbSize->getMaxVpsLatencyIncreasePlus1( i, j ) != dpbSize->getMaxVpsLatencyIncreasePlus1( i, j - 1  ) );
     1567      }
     1568
     1569      if( j > 0 ) 
     1570      {
     1571        dpbSize->setSubLayerDpbInfoPresentFlag( i, j, subLayerDpbInfoPresentFlag );
     1572        subLayerFlagInfoPresentFlag = subLayerFlagInfoPresentFlag || subLayerDpbInfoPresentFlag;
     1573      }       
     1574    } 
     1575    dpbSize->setSubLayerFlagInfoPresentFlag( i, subLayerFlagInfoPresentFlag );
     1576  } 
     1577}
     1578#else
    16101579Void TAppEncTop::xSetDpbSize                ( TComVPS& vps )
    16111580{
     
    16201589    std::vector<Int> targetDecLayerIdList = vps.getTargetDecLayerIdList( i );
    16211590    dpbSize->setSubLayerFlagInfoPresentFlag( i, m_subLayerFlagInfoPresentFlag );
    1622 
    16231591    if ( dpbSize->getSubLayerFlagInfoPresentFlag( i ) )
    16241592    {
     
    16631631  } 
    16641632}
    1665 
     1633#endif
    16661634
    16671635Void TAppEncTop::xSetLayerSets( TComVPS& vps )
     
    16691637  // Layer sets
    16701638  vps.setVpsNumLayerSetsMinus1   ( m_vpsNumLayerSets - 1 );
     1639#if !H_MV_HLS_7_OUTPUT_LAYERS_5_10_22_27
    16711640  vps.setVpsNumberLayerSetsMinus1( vps.getVpsNumLayerSetsMinus1() );
     1641#endif
    16721642   
    16731643  for (Int lsIdx = 0; lsIdx < m_vpsNumLayerSets; lsIdx++ )
     
    16861656  Int numAddOuputLayerSets = (Int) m_outputLayerSetIdx.size();
    16871657  // Additional output layer sets + profileLevelTierIdx
     1658#if H_MV_HLS_7_OUTPUT_LAYERS_5_10_22_27
     1659  vps.setDefaultTargetOutputLayerIdc      ( m_defaultTargetOutputLayerIdc );   
     1660  vps.setNumAddOutputLayerSets            ( numAddOuputLayerSets          );
     1661  vps.initTargetLayerIdLists();
     1662#else
    16881663  vps.setDefaultOneTargetOutputLayerIdc   ( m_defaultOneTargetOutputLayerIdc );
    16891664  vps.setMoreOutputLayerSetsThanDefaultFlag( numAddOuputLayerSets       != 0 );   
    16901665  vps.setNumAddOutputLayerSetsMinus1       ( numAddOuputLayerSets - 1        );
    1691 
    1692 
    1693 
     1666#endif
     1667
     1668#if H_MV_HLS_7_OUTPUT_LAYERS_5_10_22_27
     1669  for (Int olsIdx = 0; olsIdx < m_vpsNumLayerSets + numAddOuputLayerSets; olsIdx++)
     1670  {
     1671    Int addOutLsIdx = olsIdx - m_vpsNumLayerSets;     
     1672   
     1673    vps.setOutputLayerSetIdxMinus1( olsIdx, ( ( addOutLsIdx < 0 ) ?  olsIdx  : m_outputLayerSetIdx[ addOutLsIdx ] ) - 1 );
     1674
     1675    std::vector<Int>& layerIdList    = m_layerIdsInSets[ vps.getLayerSetIdxForOutputLayerSet( olsIdx ) ];
     1676
     1677    if (vps.getDefaultTargetOutputLayerIdc() == 2 || addOutLsIdx >= 0 )
     1678    {
     1679      for ( Int i = 0; i < layerIdList.size(); i++)
     1680      {
     1681        vps.setOutputLayerFlag( olsIdx, i, ( olsIdx == 0 && i == 0 ) ? vps.inferOutputLayerFlag(olsIdx, i ) : false ); // This is a software only fix for a bug in the spec. In spec outputLayerFlag neither present nor inferred for this case !
     1682      }
     1683
     1684      std::vector<Int>& outLayerIdList = ( addOutLsIdx >= 0 ) ? m_layerIdsInAddOutputLayerSet[addOutLsIdx] : m_layerIdsInDefOutputLayerSet[olsIdx];
     1685
     1686      Bool outputLayerInLayerSetFlag = false;
     1687      for (Int j = 0; j < outLayerIdList.size(); j++)
     1688      {   
     1689        for (Int i = 0; i < layerIdList.size(); i++ )
     1690        {
     1691          if ( layerIdList[ i ] == outLayerIdList[ j ] )
     1692          {
     1693            vps.setOutputLayerFlag( olsIdx, i, true );       
     1694            outputLayerInLayerSetFlag = true;
     1695            break;
     1696          }
     1697        }
     1698        assert( outputLayerInLayerSetFlag ); // The output layer is not not in the layer set.
     1699      }
     1700    }
     1701    else
     1702    {
     1703      for ( Int i = 0; i < layerIdList.size(); i++)
     1704      {
     1705        vps.setOutputLayerFlag( olsIdx, i, vps.inferOutputLayerFlag( olsIdx, i ) );       
     1706      }
     1707    }
     1708
     1709    vps.deriveTargetLayerIdList(  olsIdx );
     1710
     1711    if ( olsIdx > 0 )
     1712    {
     1713      vps.setProfileLevelTierIdx( olsIdx, m_profileLevelTierIdx[ olsIdx ] );
     1714    }
     1715
     1716    vps.setAltOutputLayerFlag( olsIdx , false);     
     1717  }
     1718#else
    16941719  for (Int lsIdx = 0; lsIdx < m_vpsNumLayerSets; lsIdx++)
    16951720  {
     
    17291754  }
    17301755  vps.deriveTargetLayerIdLists();
     1756#endif
    17311757}
    17321758
     
    17351761  vps.setVpsVuiPresentFlag( m_vpsVuiPresentFlag );
    17361762
     1763#if H_MV_HLS_7_FIX_INFER_CROSS_LAYER_IRAP_ALIGNED_FLAG
     1764  TComVPSVUI* pcVPSVUI = vps.getVPSVUI(  );
     1765  assert( pcVPSVUI );
     1766#endif
     1767
    17371768  if ( m_vpsVuiPresentFlag )
    17381769  {
     1770#if !H_MV_HLS_7_FIX_INFER_CROSS_LAYER_IRAP_ALIGNED_FLAG
    17391771    TComVPSVUI* pcVPSVUI = vps.getVPSVUI(  );
    17401772
    17411773    assert( pcVPSVUI );
    1742 
     1774#endif
    17431775
    17441776    // All this stuff could actually be derived by the encoder,
     
    17471779    pcVPSVUI->setCrossLayerPicTypeAlignedFlag( m_crossLayerPicTypeAlignedFlag );
    17481780    pcVPSVUI->setCrossLayerIrapAlignedFlag   ( m_crossLayerIrapAlignedFlag    );
    1749 
     1781#if H_MV_HLS_7_MISC_P0068_21
     1782    pcVPSVUI->setAllLayersIdrAlignedFlag     ( m_allLayersIdrAlignedFlag      );
     1783#endif
    17501784    pcVPSVUI->setBitRatePresentVpsFlag( m_bitRatePresentVpsFlag );
    17511785    pcVPSVUI->setPicRatePresentVpsFlag( m_picRatePresentVpsFlag );
     
    17531787    if( pcVPSVUI->getBitRatePresentVpsFlag( )  ||  pcVPSVUI->getPicRatePresentVpsFlag( ) )
    17541788    {
     1789#if H_MV_HLS_7_OUTPUT_LAYERS_5_10_22_27
     1790      for( Int i = 0; i  <=  vps.getVpsNumLayerSetsMinus1(); i++ )
     1791#else
    17551792      for( Int i = 0; i  <=  vps.getVpsNumberLayerSetsMinus1(); i++ )
     1793#endif
    17561794      {
    17571795        for( Int j = 0; j  <=  vps.getMaxTLayers(); j++ )
     
    18711909    pcVPSVUI->setVpsVuiBspHrdPresentFlag( false ); // TBD
    18721910  }
     1911#if H_MV_HLS_7_FIX_INFER_CROSS_LAYER_IRAP_ALIGNED_FLAG
     1912  else
     1913  {
     1914    pcVPSVUI->setCrossLayerIrapAlignedFlag   ( false   );
     1915  }
     1916#endif
    18731917}
    18741918#endif
     
    19632007}
    19642008#endif
    1965 
    19662009//! \}
  • trunk/source/App/TAppEncoder/TAppEncTop.h

    r773 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/App/TAppEncoder/encmain.cpp

    r608 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/App/utils/BitrateTargeting/ExtractBitrates.cpp

    r56 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2012, ITU/ISO/IEC
     6 * Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/App/utils/BitrateTargeting/ExtractBitrates.h

    r56 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2012, ITU/ISO/IEC
     6 * Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/App/utils/BitrateTargeting/ExtractBitratesMain.cpp

    r56 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2012, ITU/ISO/IEC
     6 * Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/App/utils/BitrateTargeting/GuessLambdaModifiers.cpp

    r56 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2012, ITU/ISO/IEC
     6 * Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/App/utils/BitrateTargeting/GuessLambdaModifiers.h

    r56 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2012, ITU/ISO/IEC
     6 * Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/App/utils/BitrateTargeting/GuessLambdaModifiersMain.cpp

    r56 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2012, ITU/ISO/IEC
     6 * Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/App/utils/BitrateTargeting/RuntimeError.h

    r56 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2012, ITU/ISO/IEC
     6 * Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/App/utils/BitrateTargeting/encode.shl

    r56 r872  
    44# granted under this license. 
    55#
    6 # Copyright (c) 2010-2012, ITU/ISO/IEC
     6# Copyright (c) 2010-2014, ITU/ISO/IEC
    77# All rights reserved.
    88#
  • trunk/source/App/utils/BitrateTargeting/encodeCommand.sh

    r56 r872  
    66# granted under this license. 
    77#
    8 # Copyright (c) 2010-2012, ITU/ISO/IEC
     8# Copyright (c) 2010-2014, ITU/ISO/IEC
    99# All rights reserved.
    1010#
  • trunk/source/App/utils/BitrateTargeting/makefile

    r56 r872  
    44# granted under this license. 
    55#
    6 # Copyright (c) 2010-2012, ITU/ISO/IEC
     6# Copyright (c) 2010-2014, ITU/ISO/IEC
    77# All rights reserved.
    88#
  • trunk/source/App/utils/BitrateTargeting/targetBitrates.sh

    r56 r872  
    66# granted under this license. 
    77#
    8 # Copyright (c) 2010-2012, ITU/ISO/IEC
     8# Copyright (c) 2010-2014, ITU/ISO/IEC
    99# All rights reserved.
    1010#
  • trunk/source/App/utils/annexBbytecount.cpp

    r56 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2012, ITU/ISO/IEC
     6 * Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/App/utils/convert_NtoMbit_YCbCr.cpp

    r608 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2012, ITU/ISO/IEC
     6 * Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/Lib/TAppCommon/program_options_lite.cpp

    r608 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
     
    3838#include <list>
    3939#include <map>
     40#include <algorithm>
    4041#include "program_options_lite.h"
    4142#include  "../TLibCommon/TypeDef.h"
  • trunk/source/Lib/TAppCommon/program_options_lite.h

    r608 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/Lib/TLibCommon/AccessUnit.h

    r608 r872  
    44 * granted under this license.
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/Lib/TLibCommon/CommonDef.h

    r864 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
     
    6161#if H_MV
    6262#define NV_VERSION        "10.0r1"                ///< Current software version
    63 #define HM_VERSION        "12.0"                ///<
     63#define HM_VERSION        "13.0"                ///<
    6464#else
    65 #define NV_VERSION        "12.0"                 ///< Current software version
     65#define NV_VERSION        "13.0"                 ///< Current software version
    6666#endif
    6767
     
    247247 
    248248  NAL_UNIT_CODED_SLICE_TSA_N,     // 2
    249   NAL_UNIT_CODED_SLICE_TLA_R,       // 3
     249  NAL_UNIT_CODED_SLICE_TSA_R,       // 3
    250250 
    251251  NAL_UNIT_CODED_SLICE_STSA_N,    // 4
  • trunk/source/Lib/TLibCommon/ContextModel.cpp

    r608 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/Lib/TLibCommon/ContextModel.h

    r608 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/Lib/TLibCommon/ContextModel3DBuffer.cpp

    r608 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/Lib/TLibCommon/ContextModel3DBuffer.h

    r608 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/Lib/TLibCommon/ContextTables.h

    r833 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
     
    4242//! \ingroup TLibCommon
    4343//! \{
    44 #define FIX827 1 ///< Fix for issue #827: CABAC init tables
    45 #define FIX712 1 ///< Fix for issue #712: CABAC init tables
    4644
    4745// ====================================================================================================================
     
    5856
    5957#define NUM_PART_SIZE_CTX             4       ///< number of context models for partition size
    60 #define NUM_CU_AMP_CTX                1       ///< number of context models for partition size (AMP)
    6158#define NUM_PRED_MODE_CTX             1       ///< number of context models for prediction mode
    6259
     
    6966#define NUM_REF_NO_CTX                2       ///< number of context models for reference index
    7067#define NUM_TRANS_SUBDIV_FLAG_CTX     3       ///< number of context models for transform subdivision flags
    71 #define NUM_QT_CBF_CTX                5       ///< number of context models for QT CBF
     68#define NUM_QT_CBF_CTX                4       ///< number of context models for QT CBF
    7269#define NUM_QT_ROOT_CBF_CTX           1       ///< number of context models for QT ROOT CBF
    7370#define NUM_DELTA_QP_CTX              3       ///< number of context models for dQP
     
    8885#define NUM_ABS_FLAG_CTX_CHROMA        2      ///< number of context models for greater than 2 flag of chroma
    8986
    90 #define NUM_MVP_IDX_CTX               2       ///< number of context models for MVP index
     87#define NUM_MVP_IDX_CTX               1       ///< number of context models for MVP index
    9188
    9289#define NUM_SAO_MERGE_FLAG_CTX        1       ///< number of context models for SAO merge flags
     
    199196INIT_PART_SIZE[3][NUM_PART_SIZE_CTX] = 
    200197{
    201   { 154,  139,  CNU,  CNU, },
    202   { 154,  139,  CNU,  CNU, },
    203   { 184,  CNU,  CNU,  CNU, },
    204 };
    205 
    206 static const UChar
    207 INIT_CU_AMP_POS[3][NUM_CU_AMP_CTX] = 
    208 {
    209   { 154, },
    210   { 154, },
    211   { CNU, },
     198  { 154,  139,  154,  154 },
     199  { 154,  139,  154,  154 },
     200  { 184,  CNU,  CNU,  CNU },
    212201};
    213202
     
    271260INIT_QT_CBF[3][2*NUM_QT_CBF_CTX] = 
    272261{
    273   { 153,  111,  CNU,  CNU,  CNU,  149,   92,  167,  CNU,  CNU, },
    274   { 153,  111,  CNU,  CNU,  CNU,  149,  107,  167,  CNU,  CNU, },
    275   { 111,  141,  CNU,  CNU,  CNU,   94,  138,  182,  CNU,  CNU, },
     262  { 153,  111,  CNU,  CNU,   149,   92,  167,  154 },
     263  { 153,  111,  CNU,  CNU,   149,  107,  167,  154 },
     264  { 111,  141,  CNU,  CNU,    94,  138,  182,  154 },
    276265};
    277266
     
    339328INIT_MVP_IDX[3][NUM_MVP_IDX_CTX] = 
    340329{
    341   { 168,  CNU, },
    342   { 168,  CNU, },
    343   { CNU,  CNU, },
     330  { 168 },
     331  { 168 },
     332  { CNU },
    344333};
    345334
     
    355344INIT_SAO_TYPE_IDX[3][NUM_SAO_TYPE_IDX_CTX] =
    356345{
    357 #if FIX827
    358346  { 160, },
    359347  { 185, },
    360348  { 200, },
    361 #else
    362   { 200, },
    363   { 185, },
    364   { 160, },
    365 #endif
    366349};
    367350
     
    369352INIT_TRANS_SUBDIV_FLAG[3][NUM_TRANS_SUBDIV_FLAG_CTX] =
    370353{
    371 #if FIX712
    372354  { 224,  167,  122, },
    373355  { 124,  138,   94, },
    374356  { 153,  138,  138, },
    375 #else
    376   { 153,  138,  138, },
    377   { 124,  138,   94, },
    378   { 224,  167,  122, },
    379 #endif
    380357};
    381358
  • trunk/source/Lib/TLibCommon/NAL.h

    r608 r872  
    44 * granted under this license.
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
     
    7979    return m_nalUnitType == NAL_UNIT_CODED_SLICE_TRAIL_R
    8080        || m_nalUnitType == NAL_UNIT_CODED_SLICE_TRAIL_N
    81         || m_nalUnitType == NAL_UNIT_CODED_SLICE_TLA_R
     81        || m_nalUnitType == NAL_UNIT_CODED_SLICE_TSA_R
    8282        || m_nalUnitType == NAL_UNIT_CODED_SLICE_TSA_N
    8383        || m_nalUnitType == NAL_UNIT_CODED_SLICE_STSA_R
  • trunk/source/Lib/TLibCommon/SEI.cpp

    r608 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/Lib/TLibCommon/SEI.h

    r608 r872  
    44 * granted under this license.
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
     
    7272    SCALABLE_NESTING                     = 133,
    7373    REGION_REFRESH_INFO                  = 134,
     74#if H_MV_HLS_7_SEI_P0204_26
     75    SUB_BITSTREAM_PROPERTY               = 139,    // Final PayloadType to be defined after finalization
     76#endif
    7477  };
    7578 
     
    363366};
    364367
     368#if H_MV_HLS_7_SEI_P0204_26
     369class SEISubBitstreamProperty : public SEI
     370{
     371public:
     372  PayloadType payloadType() const { return SUB_BITSTREAM_PROPERTY; }
     373
     374  SEISubBitstreamProperty():   m_activeVpsId(-1), m_numAdditionalSubStreams(0) {}
     375  virtual ~SEISubBitstreamProperty() {}
     376
     377  Int  m_activeVpsId;
     378  Int  m_numAdditionalSubStreams;
     379  std::vector<Int>  m_subBitstreamMode;
     380  std::vector<Int>  m_outputLayerSetIdxToVps;
     381  std::vector<Int>  m_highestSublayerId;
     382  std::vector<Int>  m_avgBitRate;
     383  std::vector<Int>  m_maxBitRate;
     384};
     385#endif
     386
    365387typedef std::list<SEI*> SEIMessages;
    366388
  • trunk/source/Lib/TLibCommon/TComBitCounter.h

    r608 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/Lib/TLibCommon/TComBitStream.cpp

    r608 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/Lib/TLibCommon/TComBitStream.h

    r608 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/Lib/TLibCommon/TComCABACTables.cpp

    r608 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/Lib/TLibCommon/TComCABACTables.h

    r608 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/Lib/TLibCommon/TComDataCU.cpp

    r863 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
     
    488488}
    489489
    490 const NDBFBlockInfo& NDBFBlockInfo::operator= (const NDBFBlockInfo& src)
    491 {
    492   this->tileID = src.tileID;
    493   this->sliceID= src.sliceID;
    494   this->startSU= src.startSU;
    495   this->endSU  = src.endSU;
    496   this->widthSU= src.widthSU;
    497   this->heightSU=src.heightSU;
    498   this->posX   = src.posX;
    499   this->posY   = src.posY;
    500   this->width  = src.width;
    501   this->height = src.height;
    502   ::memcpy(this->isBorderAvailable, src.isBorderAvailable, sizeof(Bool)*((Int)NUM_SGU_BORDER));
    503   this->allBordersAvailable = src.allBordersAvailable;
    504 
    505   return *this;
    506 }
    507 
    508 
    509490// ====================================================================================================================
    510491// Public member functions
     
    801782*- set last-coded qp value according to input last-coded qp
    802783*/
    803 Void TComDataCU::initEstData( UInt uiDepth, Int qp )
     784Void TComDataCU::initEstData( UInt uiDepth, Int qp, Bool bTransquantBypass )
    804785{
    805786  m_dTotalCost         = MAX_DOUBLE;
     
    829810      m_pePartSize[ui] = SIZE_NONE;
    830811      m_pePredMode[ui] = MODE_NONE;
    831       m_CUTransquantBypass[ui] = false;
     812      m_CUTransquantBypass[ui] = bTransquantBypass;
    832813      m_pbIPCMFlag[ui] = 0;
    833814      m_phQP[ui] = qp;
     
    47374718
    47384719          TComMvField cMVField;
    4739 
    47404720#if !HTM10RC1_FIX
    47414721          UChar ucInterDir = pcTextureCU->getInterDir( uiPartIdx );
     
    59965976    xAddMVPCand( pInfo, eRefPicList, iRefIdx, uiPartIdxLT, MD_ABOVE_LEFT);
    59975977  }
    5998   bAdded = bAddedSmvp;
    5999   if (pInfo->iN==2) bAdded = true;
    6000 
    6001   if(!bAdded)
     5978
     5979  if (!bAddedSmvp)
    60025980  {
    60035981    bAdded = xAddMVPCandOrder( pInfo, eRefPicList, iRefIdx, uiPartIdxRT, MD_ABOVE_RIGHT);
     
    66576635{
    66586636  return getPic()->getPicSym()->getInverseCUOrderMap(m_uiCUAddr)*(1<<(m_pcSlice->getSPS()->getMaxCUDepth()<<1))+m_uiAbsIdxInLCU;
    6659 }
    6660 
    6661 /** Set neighboring blocks availabilities for non-deblocked filtering
    6662  * \param numLCUInPicWidth number of LCUs in picture width
    6663  * \param numLCUInPicHeight number of LCUs in picture height
    6664  * \param numSUInLCUWidth number of SUs in LCU width
    6665  * \param numSUInLCUHeight number of SUs in LCU height
    6666  * \param picWidth picture width
    6667  * \param picHeight picture height
    6668  * \param bIndependentSliceBoundaryEnabled true for independent slice boundary enabled
    6669  * \param bTopTileBoundary true means that top boundary coincides tile boundary
    6670  * \param bDownTileBoundary true means that bottom boundary coincides tile boundary
    6671  * \param bLeftTileBoundary true means that left boundary coincides tile boundary
    6672  * \param bRightTileBoundary true means that right boundary coincides tile boundary
    6673  * \param bIndependentTileBoundaryEnabled true for independent tile boundary enabled
    6674  */
    6675 Void TComDataCU::setNDBFilterBlockBorderAvailability(UInt numLCUInPicWidth, UInt /*numLCUInPicHeight*/, UInt numSUInLCUWidth, UInt numSUInLCUHeight, UInt picWidth, UInt picHeight
    6676                                                     ,std::vector<Bool>& LFCrossSliceBoundary
    6677                                                     ,Bool bTopTileBoundary, Bool bDownTileBoundary, Bool bLeftTileBoundary, Bool bRightTileBoundary
    6678                                                     ,Bool bIndependentTileBoundaryEnabled)
    6679 {
    6680   UInt numSUInLCU = numSUInLCUWidth*numSUInLCUHeight;
    6681   Int* pSliceIDMapLCU = m_piSliceSUMap;
    6682   Bool onlyOneSliceInPic = ((Int)LFCrossSliceBoundary.size() == 1);
    6683   UInt uiLPelX, uiTPelY;
    6684   UInt width, height;
    6685   Bool bPicRBoundary, bPicBBoundary, bPicTBoundary, bPicLBoundary;
    6686   Bool bLCURBoundary= false, bLCUBBoundary= false, bLCUTBoundary= false, bLCULBoundary= false;
    6687   Bool* pbAvailBorder;
    6688   Bool* pbAvail;
    6689   UInt rTLSU, rBRSU, widthSU, heightSU;
    6690   UInt zRefSU;
    6691   Int* pRefID;
    6692   Int* pRefMapLCU;
    6693   UInt rTRefSU= 0, rBRefSU= 0, rLRefSU= 0, rRRefSU= 0;
    6694   Int* pRRefMapLCU= NULL;
    6695   Int* pLRefMapLCU= NULL;
    6696   Int* pTRefMapLCU= NULL;
    6697   Int* pBRefMapLCU= NULL;
    6698   Int  sliceID;
    6699   UInt numSGU = (UInt)m_vNDFBlock.size();
    6700 
    6701   for(Int i=0; i< numSGU; i++)
    6702   {
    6703     NDBFBlockInfo& rSGU = m_vNDFBlock[i];
    6704 
    6705     sliceID = rSGU.sliceID;
    6706     uiLPelX = rSGU.posX;
    6707     uiTPelY = rSGU.posY;
    6708     width   = rSGU.width;
    6709     height  = rSGU.height;
    6710     rTLSU     = g_auiZscanToRaster[ rSGU.startSU ];
    6711     rBRSU     = g_auiZscanToRaster[ rSGU.endSU   ];
    6712     widthSU   = rSGU.widthSU;
    6713     heightSU  = rSGU.heightSU;
    6714 
    6715     pbAvailBorder = rSGU.isBorderAvailable;
    6716 
    6717     bPicTBoundary= (uiTPelY == 0                       )?(true):(false);
    6718     bPicLBoundary= (uiLPelX == 0                       )?(true):(false);
    6719     bPicRBoundary= (!(uiLPelX+ width < picWidth )  )?(true):(false);
    6720     bPicBBoundary= (!(uiTPelY + height < picHeight))?(true):(false);
    6721 
    6722     bLCULBoundary = (rTLSU % numSUInLCUWidth == 0)?(true):(false);
    6723     bLCURBoundary = ( (rTLSU+ widthSU) % numSUInLCUWidth == 0)?(true):(false);
    6724     bLCUTBoundary = ( (UInt)(rTLSU / numSUInLCUWidth)== 0)?(true):(false);
    6725     bLCUBBoundary = ( (UInt)(rBRSU / numSUInLCUWidth) == (numSUInLCUHeight-1) )?(true):(false);
    6726 
    6727     //       SGU_L
    6728     pbAvail = &(pbAvailBorder[SGU_L]);
    6729     if(bPicLBoundary)
    6730     {
    6731       *pbAvail = false;
    6732     }
    6733     else if (onlyOneSliceInPic)
    6734     {
    6735       *pbAvail = true;
    6736     }
    6737     else
    6738     {
    6739       //      bLCULBoundary = (rTLSU % uiNumSUInLCUWidth == 0)?(true):(false);
    6740       if(bLCULBoundary)
    6741       {
    6742         rLRefSU     = rTLSU + numSUInLCUWidth -1;
    6743         zRefSU      = g_auiRasterToZscan[rLRefSU];
    6744         pRefMapLCU = pLRefMapLCU= (pSliceIDMapLCU - numSUInLCU);
    6745       }
    6746       else
    6747       {
    6748         zRefSU   = g_auiRasterToZscan[rTLSU - 1];
    6749         pRefMapLCU  = pSliceIDMapLCU;
    6750       }
    6751       pRefID = pRefMapLCU + zRefSU;
    6752       *pbAvail = (*pRefID == sliceID)?(true):((*pRefID > sliceID)?(LFCrossSliceBoundary[*pRefID]):(LFCrossSliceBoundary[sliceID]));
    6753     }
    6754 
    6755     //       SGU_R
    6756     pbAvail = &(pbAvailBorder[SGU_R]);
    6757     if(bPicRBoundary)
    6758     {
    6759       *pbAvail = false;
    6760     }
    6761     else if (onlyOneSliceInPic)
    6762     {
    6763       *pbAvail = true;
    6764     }
    6765     else
    6766     {
    6767       //       bLCURBoundary = ( (rTLSU+ uiWidthSU) % uiNumSUInLCUWidth == 0)?(true):(false);
    6768       if(bLCURBoundary)
    6769       {
    6770         rRRefSU      = rTLSU + widthSU - numSUInLCUWidth;
    6771         zRefSU       = g_auiRasterToZscan[rRRefSU];
    6772         pRefMapLCU  = pRRefMapLCU= (pSliceIDMapLCU + numSUInLCU);
    6773       }
    6774       else
    6775       {
    6776         zRefSU       = g_auiRasterToZscan[rTLSU + widthSU];
    6777         pRefMapLCU  = pSliceIDMapLCU;
    6778       }
    6779       pRefID = pRefMapLCU + zRefSU;
    6780       *pbAvail = (*pRefID == sliceID)?(true):((*pRefID > sliceID)?(LFCrossSliceBoundary[*pRefID]):(LFCrossSliceBoundary[sliceID]));
    6781     }
    6782 
    6783     //       SGU_T
    6784     pbAvail = &(pbAvailBorder[SGU_T]);
    6785     if(bPicTBoundary)
    6786     {
    6787       *pbAvail = false;
    6788     }
    6789     else if (onlyOneSliceInPic)
    6790     {
    6791       *pbAvail = true;
    6792     }
    6793     else
    6794     {
    6795       //      bLCUTBoundary = ( (UInt)(rTLSU / uiNumSUInLCUWidth)== 0)?(true):(false);
    6796       if(bLCUTBoundary)
    6797       {
    6798         rTRefSU      = numSUInLCU - (numSUInLCUWidth - rTLSU);
    6799         zRefSU       = g_auiRasterToZscan[rTRefSU];
    6800         pRefMapLCU  = pTRefMapLCU= (pSliceIDMapLCU - (numLCUInPicWidth*numSUInLCU));
    6801       }
    6802       else
    6803       {
    6804         zRefSU       = g_auiRasterToZscan[rTLSU - numSUInLCUWidth];
    6805         pRefMapLCU  = pSliceIDMapLCU;
    6806       }
    6807       pRefID = pRefMapLCU + zRefSU;
    6808       *pbAvail = (*pRefID == sliceID)?(true):((*pRefID > sliceID)?(LFCrossSliceBoundary[*pRefID]):(LFCrossSliceBoundary[sliceID]));
    6809     }
    6810 
    6811     //       SGU_B
    6812     pbAvail = &(pbAvailBorder[SGU_B]);
    6813     if(bPicBBoundary)
    6814     {
    6815       *pbAvail = false;
    6816     }
    6817     else if (onlyOneSliceInPic)
    6818     {
    6819       *pbAvail = true;
    6820     }
    6821     else
    6822     {
    6823       //      bLCUBBoundary = ( (UInt)(rBRSU / uiNumSUInLCUWidth) == (uiNumSUInLCUHeight-1) )?(true):(false);
    6824       if(bLCUBBoundary)
    6825       {
    6826         rBRefSU      = rTLSU % numSUInLCUWidth;
    6827         zRefSU       = g_auiRasterToZscan[rBRefSU];
    6828         pRefMapLCU  = pBRefMapLCU= (pSliceIDMapLCU + (numLCUInPicWidth*numSUInLCU));
    6829       }
    6830       else
    6831       {
    6832         zRefSU       = g_auiRasterToZscan[rTLSU + (heightSU*numSUInLCUWidth)];
    6833         pRefMapLCU  = pSliceIDMapLCU;
    6834       }
    6835       pRefID = pRefMapLCU + zRefSU;
    6836       *pbAvail = (*pRefID == sliceID)?(true):((*pRefID > sliceID)?(LFCrossSliceBoundary[*pRefID]):(LFCrossSliceBoundary[sliceID]));
    6837     }
    6838 
    6839     //       SGU_TL
    6840     pbAvail = &(pbAvailBorder[SGU_TL]);
    6841     if(bPicTBoundary || bPicLBoundary)
    6842     {
    6843       *pbAvail = false;
    6844     }
    6845     else if (onlyOneSliceInPic)
    6846     {
    6847       *pbAvail = true;
    6848     }
    6849     else
    6850     {
    6851       if(bLCUTBoundary && bLCULBoundary)
    6852       {
    6853         zRefSU       = numSUInLCU -1;
    6854         pRefMapLCU  = pSliceIDMapLCU - ( (numLCUInPicWidth+1)*numSUInLCU);
    6855       }
    6856       else if(bLCUTBoundary)
    6857       {
    6858         zRefSU       = g_auiRasterToZscan[ rTRefSU- 1];
    6859         pRefMapLCU  = pTRefMapLCU;
    6860       }
    6861       else if(bLCULBoundary)
    6862       {
    6863         zRefSU       = g_auiRasterToZscan[ rLRefSU- numSUInLCUWidth ];
    6864         pRefMapLCU  = pLRefMapLCU;
    6865       }
    6866       else //inside LCU
    6867       {
    6868         zRefSU       = g_auiRasterToZscan[ rTLSU - numSUInLCUWidth -1];
    6869         pRefMapLCU  = pSliceIDMapLCU;
    6870       }
    6871       pRefID = pRefMapLCU + zRefSU;
    6872       *pbAvail = (*pRefID == sliceID)?(true):((*pRefID > sliceID)?(LFCrossSliceBoundary[*pRefID]):(LFCrossSliceBoundary[sliceID]));
    6873     }
    6874 
    6875     //       SGU_TR
    6876     pbAvail = &(pbAvailBorder[SGU_TR]);
    6877     if(bPicTBoundary || bPicRBoundary)
    6878     {
    6879       *pbAvail = false;
    6880     }
    6881     else if (onlyOneSliceInPic)
    6882     {
    6883       *pbAvail = true;
    6884     }
    6885     else
    6886     {
    6887       if(bLCUTBoundary && bLCURBoundary)
    6888       {
    6889         zRefSU      = g_auiRasterToZscan[numSUInLCU - numSUInLCUWidth];
    6890         pRefMapLCU  = pSliceIDMapLCU - ( (numLCUInPicWidth-1)*numSUInLCU);       
    6891       }
    6892       else if(bLCUTBoundary)
    6893       {
    6894         zRefSU       = g_auiRasterToZscan[ rTRefSU+ widthSU];
    6895         pRefMapLCU  = pTRefMapLCU;
    6896       }
    6897       else if(bLCURBoundary)
    6898       {
    6899         zRefSU       = g_auiRasterToZscan[ rRRefSU- numSUInLCUWidth ];
    6900         pRefMapLCU  = pRRefMapLCU;
    6901       }
    6902       else //inside LCU
    6903       {
    6904         zRefSU       = g_auiRasterToZscan[ rTLSU - numSUInLCUWidth +widthSU];
    6905         pRefMapLCU  = pSliceIDMapLCU;
    6906       }
    6907       pRefID = pRefMapLCU + zRefSU;
    6908       *pbAvail = (*pRefID == sliceID)?(true):((*pRefID > sliceID)?(LFCrossSliceBoundary[*pRefID]):(LFCrossSliceBoundary[sliceID]));
    6909     }
    6910 
    6911     //       SGU_BL
    6912     pbAvail = &(pbAvailBorder[SGU_BL]);
    6913     if(bPicBBoundary || bPicLBoundary)
    6914     {
    6915       *pbAvail = false;
    6916     }
    6917     else if (onlyOneSliceInPic)
    6918     {
    6919       *pbAvail = true;
    6920     }
    6921     else
    6922     {
    6923       if(bLCUBBoundary && bLCULBoundary)
    6924       {
    6925         zRefSU      = g_auiRasterToZscan[numSUInLCUWidth - 1];
    6926         pRefMapLCU  = pSliceIDMapLCU + ( (numLCUInPicWidth-1)*numSUInLCU);       
    6927       }
    6928       else if(bLCUBBoundary)
    6929       {
    6930         zRefSU       = g_auiRasterToZscan[ rBRefSU - 1];
    6931         pRefMapLCU  = pBRefMapLCU;
    6932       }
    6933       else if(bLCULBoundary)
    6934       {
    6935         zRefSU       = g_auiRasterToZscan[ rLRefSU+ heightSU*numSUInLCUWidth ];
    6936         pRefMapLCU  = pLRefMapLCU;
    6937       }
    6938       else //inside LCU
    6939       {
    6940         zRefSU       = g_auiRasterToZscan[ rTLSU + heightSU*numSUInLCUWidth -1];
    6941         pRefMapLCU  = pSliceIDMapLCU;
    6942       }
    6943       pRefID = pRefMapLCU + zRefSU;
    6944       *pbAvail = (*pRefID == sliceID)?(true):((*pRefID > sliceID)?(LFCrossSliceBoundary[*pRefID]):(LFCrossSliceBoundary[sliceID]));
    6945     }
    6946 
    6947     //       SGU_BR
    6948     pbAvail = &(pbAvailBorder[SGU_BR]);
    6949     if(bPicBBoundary || bPicRBoundary)
    6950     {
    6951       *pbAvail = false;
    6952     }
    6953     else if (onlyOneSliceInPic)
    6954     {
    6955       *pbAvail = true;
    6956     }
    6957     else
    6958     {
    6959       if(bLCUBBoundary && bLCURBoundary)
    6960       {
    6961         zRefSU = 0;
    6962         pRefMapLCU = pSliceIDMapLCU+ ( (numLCUInPicWidth+1)*numSUInLCU);
    6963       }
    6964       else if(bLCUBBoundary)
    6965       {
    6966         zRefSU      = g_auiRasterToZscan[ rBRefSU + widthSU];
    6967         pRefMapLCU = pBRefMapLCU;
    6968       }
    6969       else if(bLCURBoundary)
    6970       {
    6971         zRefSU      = g_auiRasterToZscan[ rRRefSU + (heightSU*numSUInLCUWidth)];
    6972         pRefMapLCU = pRRefMapLCU;
    6973       }
    6974       else //inside LCU
    6975       {
    6976         zRefSU      = g_auiRasterToZscan[ rTLSU + (heightSU*numSUInLCUWidth)+ widthSU];
    6977         pRefMapLCU = pSliceIDMapLCU;
    6978       }
    6979       pRefID = pRefMapLCU + zRefSU;
    6980       *pbAvail = (*pRefID == sliceID)?(true):((*pRefID > sliceID)?(LFCrossSliceBoundary[*pRefID]):(LFCrossSliceBoundary[sliceID]));
    6981     }
    6982 
    6983     if(bIndependentTileBoundaryEnabled)
    6984     {
    6985       //left LCU boundary
    6986       if(!bPicLBoundary && bLCULBoundary)
    6987       {
    6988         if(bLeftTileBoundary)
    6989         {
    6990           pbAvailBorder[SGU_L] = pbAvailBorder[SGU_TL] = pbAvailBorder[SGU_BL] = false;
    6991         }
    6992       }
    6993       //right LCU boundary
    6994       if(!bPicRBoundary && bLCURBoundary)
    6995       {
    6996         if(bRightTileBoundary)
    6997         {
    6998           pbAvailBorder[SGU_R] = pbAvailBorder[SGU_TR] = pbAvailBorder[SGU_BR] = false;
    6999         }
    7000       }
    7001       //top LCU boundary
    7002       if(!bPicTBoundary && bLCUTBoundary)
    7003       {
    7004         if(bTopTileBoundary)
    7005         {
    7006           pbAvailBorder[SGU_T] = pbAvailBorder[SGU_TL] = pbAvailBorder[SGU_TR] = false;
    7007         }
    7008       }
    7009       //down LCU boundary
    7010       if(!bPicBBoundary && bLCUBBoundary)
    7011       {
    7012         if(bDownTileBoundary)
    7013         {
    7014           pbAvailBorder[SGU_B] = pbAvailBorder[SGU_BL] = pbAvailBorder[SGU_BR] = false;
    7015         }
    7016       }
    7017     }
    7018     rSGU.allBordersAvailable = true;
    7019     for(Int b=0; b< NUM_SGU_BORDER; b++)
    7020     {
    7021       if(pbAvailBorder[b] == false)
    7022       {
    7023         rSGU.allBordersAvailable = false;
    7024         break;
    7025       }
    7026     }
    7027   }
    70286637}
    70296638
  • trunk/source/Lib/TLibCommon/TComDataCU.h

    r833 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
     
    5959//! \{
    6060
    61 // ====================================================================================================================
    62 // Non-deblocking in-loop filter processing block data structure
    63 // ====================================================================================================================
    64 
    65 /// Non-deblocking filter processing block border tag
    66 enum NDBFBlockBorderTag
    67 {
    68   SGU_L = 0,
    69   SGU_R,
    70   SGU_T,
    71   SGU_B,
    72   SGU_TL,
    73   SGU_TR,
    74   SGU_BL,
    75   SGU_BR,
    76   NUM_SGU_BORDER
    77 };
    78 
    79 /// Non-deblocking filter processing block information
    80 struct NDBFBlockInfo
    81 {
    82   Int   tileID;   //!< tile ID
    83   Int   sliceID;  //!< slice ID
    84   UInt  startSU;  //!< starting SU z-scan address in LCU
    85   UInt  endSU;    //!< ending SU z-scan address in LCU
    86   UInt  widthSU;  //!< number of SUs in width
    87   UInt  heightSU; //!< number of SUs in height
    88   UInt  posX;     //!< top-left X coordinate in picture
    89   UInt  posY;     //!< top-left Y coordinate in picture
    90   UInt  width;    //!< number of pixels in width
    91   UInt  height;   //!< number of pixels in height
    92   Bool  isBorderAvailable[NUM_SGU_BORDER];  //!< the border availabilities
    93   Bool  allBordersAvailable;
    94 
    95   NDBFBlockInfo():tileID(0), sliceID(0), startSU(0), endSU(0) {} //!< constructor
    96   const NDBFBlockInfo& operator= (const NDBFBlockInfo& src);  //!< "=" operator
    97 };
    9861
    9962#if H_3D_DBBP
     
    176139  Pel*          m_pcIPCMSampleCr;     ///< PCM sample buffer (Cr)
    177140
    178   Int*          m_piSliceSUMap;       ///< pointer of slice ID map
    179   std::vector<NDBFBlockInfo> m_vNDFBlock;
    180 
    181141  // -------------------------------------------------------------------------------------------------------------------
    182142  // neighbour access variables
     
    342302 
    343303  Void          initCU                ( TComPic* pcPic, UInt uiCUAddr );
    344   Void          initEstData           ( UInt uiDepth, Int qp );
     304  Void          initEstData           ( UInt uiDepth, Int qp, Bool bTransquantBypass );
    345305  Void          initSubCU             ( TComDataCU* pcCU, UInt uiPartUnitIdx, UInt uiDepth, Int qp );
    346306  Void          setOutsideCUPart      ( UInt uiAbsPartIdx, UInt uiDepth );
     
    522482  DisInfo       getDvInfo             (UInt uiIdx)              { return m_pDvInfo[uiIdx];          }
    523483#endif
    524   /// get slice ID for SU
    525   Int           getSUSliceID          (UInt uiIdx)              {return m_piSliceSUMap[uiIdx];      }
    526 
    527   /// get the pointer of slice ID map
    528   Int*          getSliceSUMap         ()                        {return m_piSliceSUMap;             }
    529 
    530   /// set the pointer of slice ID map
    531   Void          setSliceSUMap         (Int *pi)                 {m_piSliceSUMap = pi;               }
    532 
    533   std::vector<NDBFBlockInfo>* getNDBFilterBlocks()      {return &m_vNDFBlock;}
    534   Void setNDBFilterBlockBorderAvailability(UInt numLCUInPicWidth, UInt numLCUInPicHeight, UInt numSUInLCUWidth, UInt numSUInLCUHeight, UInt picWidth, UInt picHeight
    535                                           ,std::vector<Bool>& LFCrossSliceBoundary
    536                                           ,Bool bTopTileBoundary, Bool bDownTileBoundary, Bool bLeftTileBoundary, Bool bRightTileBoundary
    537                                           ,Bool bIndependentTileBoundaryEnabled );
    538484#if H_3D_NBDV
    539485  Void          xDeriveRightBottomNbIdx(Int &uiLCUIdxRBNb, Int &uiPartIdxRBNb );
  • trunk/source/Lib/TLibCommon/TComInterpolationFilter.cpp

    r608 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/Lib/TLibCommon/TComInterpolationFilter.h

    r608 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/Lib/TLibCommon/TComList.h

    r608 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/Lib/TLibCommon/TComLoopFilter.cpp

    r608 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/Lib/TLibCommon/TComLoopFilter.h

    r608 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/Lib/TLibCommon/TComMotionInfo.cpp

    r773 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/Lib/TLibCommon/TComMotionInfo.h

    r833 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/Lib/TLibCommon/TComMv.h

    r655 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/Lib/TLibCommon/TComPattern.cpp

    r608 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/Lib/TLibCommon/TComPattern.h

    r655 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/Lib/TLibCommon/TComPic.cpp

    r738 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
     
    5656, m_bNeededForOutput                      (false)
    5757, m_uiCurrSliceIdx                        (0)
    58 , m_pSliceSUMap                           (NULL)
    59 , m_pbValidSlice                          (NULL)
    60 , m_sliceGranularityForNDBFilter          (0)
    61 , m_bIndependentSliceBoundaryForNDBFilter (false)
    62 , m_bIndependentTileBoundaryForNDBFilter  (false)
    63 , m_pNDBFilterYuvTmp                      (NULL)
    6458, m_bCheckLTMSB                           (false)
    6559#if H_MV
     
    117111  memcpy(m_numReorderPics, numReorderPics, MAX_TLAYER*sizeof(Int));
    118112
    119   /* initialize the texture to depth reference status */
    120113#if H_3D_FCO
     114/* initialize the texture to depth reference status */
    121115  for (int j=0; j<2; j++)
    122116  {
     
    174168}
    175169
    176 /** Create non-deblocked filter information
    177  * \param pSliceStartAddress array for storing slice start addresses
    178  * \param numSlices number of slices in picture
    179  * \param sliceGranularityDepth slice granularity
    180  * \param bNDBFilterCrossSliceBoundary cross-slice-boundary in-loop filtering; true for "cross".
    181  * \param numTiles number of tiles in picture
    182  * \param bNDBFilterCrossTileBoundary cross-tile-boundary in-loop filtering; true for "cross".
    183  */
    184 Void TComPic::createNonDBFilterInfo(std::vector<Int> sliceStartAddress, Int sliceGranularityDepth
    185                                     ,std::vector<Bool>* LFCrossSliceBoundary
    186                                     ,Int numTiles
    187                                     ,Bool bNDBFilterCrossTileBoundary)
    188 {
    189   UInt maxNumSUInLCU = getNumPartInCU();
    190   UInt numLCUInPic   = getNumCUsInFrame();
    191   UInt picWidth      = getSlice(0)->getSPS()->getPicWidthInLumaSamples();
    192   UInt picHeight     = getSlice(0)->getSPS()->getPicHeightInLumaSamples();
    193   Int  numLCUsInPicWidth = getFrameWidthInCU();
    194   Int  numLCUsInPicHeight= getFrameHeightInCU();
    195   UInt maxNumSUInLCUWidth = getNumPartInWidth();
    196   UInt maxNumSUInLCUHeight= getNumPartInHeight();
    197   Int  numSlices = (Int) sliceStartAddress.size() - 1;
    198   m_bIndependentSliceBoundaryForNDBFilter = false;
    199   if(numSlices > 1)
    200   {
    201     for(Int s=0; s< numSlices; s++)
    202     {
    203       if((*LFCrossSliceBoundary)[s] == false)
    204       {
    205         m_bIndependentSliceBoundaryForNDBFilter = true;
    206       }
    207     }
    208   }
    209   m_sliceGranularityForNDBFilter = sliceGranularityDepth;
    210   m_bIndependentTileBoundaryForNDBFilter  = (bNDBFilterCrossTileBoundary)?(false) :((numTiles > 1)?(true):(false));
    211 
    212   m_pbValidSlice = new Bool[numSlices];
    213   for(Int s=0; s< numSlices; s++)
    214   {
    215     m_pbValidSlice[s] = true;
    216   }
    217   m_pSliceSUMap = new Int[maxNumSUInLCU * numLCUInPic];
    218 
    219   //initialization
    220   for(UInt i=0; i< (maxNumSUInLCU * numLCUInPic); i++ )
    221   {
    222     m_pSliceSUMap[i] = -1;
    223   }
    224   for( UInt CUAddr = 0; CUAddr < numLCUInPic ; CUAddr++ )
    225   {
    226     TComDataCU* pcCU = getCU( CUAddr );
    227     pcCU->setSliceSUMap(m_pSliceSUMap + (CUAddr* maxNumSUInLCU));
    228     pcCU->getNDBFilterBlocks()->clear();
    229   }
    230   m_vSliceCUDataLink.clear();
    231 
    232   m_vSliceCUDataLink.resize(numSlices);
    233 
    234   UInt startAddr, endAddr, firstCUInStartLCU, startLCU, endLCU, lastCUInEndLCU, uiAddr;
    235   UInt LPelX, TPelY, LCUX, LCUY;
    236   UInt currSU;
    237   UInt startSU, endSU;
    238 
    239   for(Int s=0; s< numSlices; s++)
    240   {
    241     //1st step: decide the real start address
    242     startAddr = sliceStartAddress[s];
    243     endAddr   = sliceStartAddress[s+1] -1;
    244 
    245     startLCU            = startAddr / maxNumSUInLCU;
    246     firstCUInStartLCU   = startAddr % maxNumSUInLCU;
    247 
    248     endLCU              = endAddr   / maxNumSUInLCU;
    249     lastCUInEndLCU      = endAddr   % maxNumSUInLCU;   
    250 
    251     uiAddr = m_apcPicSym->getCUOrderMap(startLCU);
    252 
    253     LCUX      = getCU(uiAddr)->getCUPelX();
    254     LCUY      = getCU(uiAddr)->getCUPelY();
    255     LPelX     = LCUX + g_auiRasterToPelX[ g_auiZscanToRaster[firstCUInStartLCU] ];
    256     TPelY     = LCUY + g_auiRasterToPelY[ g_auiZscanToRaster[firstCUInStartLCU] ];
    257     currSU    = firstCUInStartLCU;
    258 
    259     Bool bMoveToNextLCU = false;
    260     Bool bSliceInOneLCU = (startLCU == endLCU);
    261 
    262     while(!( LPelX < picWidth ) || !( TPelY < picHeight ))
    263     {
    264       currSU ++;
    265 
    266       if(bSliceInOneLCU)
    267       {
    268         if(currSU > lastCUInEndLCU)
    269         {
    270           m_pbValidSlice[s] = false;
    271           break;
    272         }
    273       }
    274 
    275       if(currSU >= maxNumSUInLCU )
    276       {
    277         bMoveToNextLCU = true;
    278         break;
    279       }
    280 
    281       LPelX = LCUX + g_auiRasterToPelX[ g_auiZscanToRaster[currSU] ];
    282       TPelY = LCUY + g_auiRasterToPelY[ g_auiZscanToRaster[currSU] ];
    283 
    284     }
    285 
    286 
    287     if(!m_pbValidSlice[s])
    288     {
    289       continue;
    290     }
    291 
    292     if(currSU != firstCUInStartLCU)
    293     {
    294       if(!bMoveToNextLCU)
    295       {
    296         firstCUInStartLCU = currSU;
    297       }
    298       else
    299       {
    300         startLCU++;
    301         firstCUInStartLCU = 0;
    302         assert( startLCU < getNumCUsInFrame());
    303       }
    304       assert(startLCU*maxNumSUInLCU + firstCUInStartLCU < endAddr);
    305     }
    306 
    307 
    308     //2nd step: assign NonDBFilterInfo to each processing block
    309     for(UInt i= startLCU; i <= endLCU; i++)
    310     {
    311       startSU = (i == startLCU)?(firstCUInStartLCU):(0);
    312       endSU   = (i == endLCU  )?(lastCUInEndLCU   ):(maxNumSUInLCU -1);
    313 
    314       uiAddr = m_apcPicSym->getCUOrderMap(i);
    315       Int iTileID= m_apcPicSym->getTileIdxMap(uiAddr);
    316 
    317       TComDataCU* pcCU = getCU(uiAddr);
    318       m_vSliceCUDataLink[s].push_back(pcCU);
    319 
    320       createNonDBFilterInfoLCU(iTileID, s, pcCU, startSU, endSU, m_sliceGranularityForNDBFilter, picWidth, picHeight);
    321     }
    322   }
    323 
    324   //step 3: border availability
    325   for(Int s=0; s< numSlices; s++)
    326   {
    327     if(!m_pbValidSlice[s])
    328     {
    329       continue;
    330     }
    331 
    332     for(Int i=0; i< m_vSliceCUDataLink[s].size(); i++)
    333     {
    334       TComDataCU* pcCU = m_vSliceCUDataLink[s][i];
    335       uiAddr = pcCU->getAddr();
    336 
    337       if(pcCU->getPic()==0)
    338       {
    339         continue;
    340       }
    341       Int iTileID= m_apcPicSym->getTileIdxMap(uiAddr);
    342       Bool bTopTileBoundary = false, bDownTileBoundary= false, bLeftTileBoundary= false, bRightTileBoundary= false;
    343 
    344       if(m_bIndependentTileBoundaryForNDBFilter)
    345       {
    346         //left
    347         if( uiAddr % numLCUsInPicWidth != 0)
    348         {
    349           bLeftTileBoundary = ( m_apcPicSym->getTileIdxMap(uiAddr -1) != iTileID )?true:false;
    350         }
    351         //right
    352         if( (uiAddr % numLCUsInPicWidth) != (numLCUsInPicWidth -1) )
    353         {
    354           bRightTileBoundary = ( m_apcPicSym->getTileIdxMap(uiAddr +1) != iTileID)?true:false;
    355         }
    356         //top
    357         if( uiAddr >= numLCUsInPicWidth)
    358         {
    359           bTopTileBoundary = (m_apcPicSym->getTileIdxMap(uiAddr - numLCUsInPicWidth) !=  iTileID )?true:false;
    360         }
    361         //down
    362         if( uiAddr + numLCUsInPicWidth < numLCUInPic )
    363         {
    364           bDownTileBoundary = (m_apcPicSym->getTileIdxMap(uiAddr + numLCUsInPicWidth) != iTileID)?true:false;
    365         }
    366 
    367       }
    368 
    369       pcCU->setNDBFilterBlockBorderAvailability(numLCUsInPicWidth, numLCUsInPicHeight, maxNumSUInLCUWidth, maxNumSUInLCUHeight,picWidth, picHeight
    370         , *LFCrossSliceBoundary
    371         ,bTopTileBoundary, bDownTileBoundary, bLeftTileBoundary, bRightTileBoundary
    372         ,m_bIndependentTileBoundaryForNDBFilter);
    373 
    374     }
    375 
    376   }
    377 
    378   if( m_bIndependentSliceBoundaryForNDBFilter || m_bIndependentTileBoundaryForNDBFilter)
    379   {
    380     m_pNDBFilterYuvTmp = new TComPicYuv();
    381     m_pNDBFilterYuvTmp->create(picWidth, picHeight, g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth);
    382   }
    383 
    384 }
    385 
    386 /** Create non-deblocked filter information for LCU
    387  * \param tileID tile index
    388  * \param sliceID slice index
    389  * \param pcCU CU data pointer
    390  * \param startSU start SU index in LCU
    391  * \param endSU end SU index in LCU
    392  * \param sliceGranularyDepth slice granularity
    393  * \param picWidth picture width
    394  * \param picHeight picture height
    395  */
    396 Void TComPic::createNonDBFilterInfoLCU(Int tileID, Int sliceID, TComDataCU* pcCU, UInt startSU, UInt endSU, Int sliceGranularyDepth, UInt picWidth, UInt picHeight)
    397 {
    398   UInt LCUX          = pcCU->getCUPelX();
    399   UInt LCUY          = pcCU->getCUPelY();
    400   Int* pCUSliceMap    = pcCU->getSliceSUMap();
    401   UInt maxNumSUInLCU = getNumPartInCU();
    402   UInt maxNumSUInSGU = maxNumSUInLCU >> (sliceGranularyDepth << 1);
    403   UInt maxNumSUInLCUWidth = getNumPartInWidth();
    404   UInt LPelX, TPelY;
    405   UInt currSU;
    406 
    407 
    408   //get the number of valid NBFilterBLock
    409   currSU   = startSU;
    410   while(currSU <= endSU)
    411   {
    412     LPelX = LCUX + g_auiRasterToPelX[ g_auiZscanToRaster[currSU] ];
    413     TPelY = LCUY + g_auiRasterToPelY[ g_auiZscanToRaster[currSU] ];
    414 
    415     while(!( LPelX < picWidth ) || !( TPelY < picHeight ))
    416     {
    417       currSU += maxNumSUInSGU;
    418       if(currSU >= maxNumSUInLCU || currSU > endSU)
    419       {
    420         break;
    421       }
    422       LPelX = LCUX + g_auiRasterToPelX[ g_auiZscanToRaster[currSU] ];
    423       TPelY = LCUY + g_auiRasterToPelY[ g_auiZscanToRaster[currSU] ];
    424     }
    425 
    426     if(currSU >= maxNumSUInLCU || currSU > endSU)
    427     {
    428       break;
    429     }
    430 
    431     NDBFBlockInfo NDBFBlock;
    432 
    433     NDBFBlock.tileID  = tileID;
    434     NDBFBlock.sliceID = sliceID;
    435     NDBFBlock.posY    = TPelY;
    436     NDBFBlock.posX    = LPelX;
    437     NDBFBlock.startSU = currSU;
    438 
    439     UInt uiLastValidSU  = currSU;
    440     UInt uiIdx, uiLPelX_su, uiTPelY_su;
    441     for(uiIdx = currSU; uiIdx < currSU + maxNumSUInSGU; uiIdx++)
    442     {
    443       if(uiIdx > endSU)
    444       {
    445         break;       
    446       }
    447       uiLPelX_su   = LCUX + g_auiRasterToPelX[ g_auiZscanToRaster[uiIdx] ];
    448       uiTPelY_su   = LCUY + g_auiRasterToPelY[ g_auiZscanToRaster[uiIdx] ];
    449       if( !(uiLPelX_su < picWidth ) || !( uiTPelY_su < picHeight ))
    450       {
    451         continue;
    452       }
    453       pCUSliceMap[uiIdx] = sliceID;
    454       uiLastValidSU = uiIdx;
    455     }
    456     NDBFBlock.endSU = uiLastValidSU;
    457 
    458     UInt rTLSU = g_auiZscanToRaster[ NDBFBlock.startSU ];
    459     UInt rBRSU = g_auiZscanToRaster[ NDBFBlock.endSU   ];
    460     NDBFBlock.widthSU  = (rBRSU % maxNumSUInLCUWidth) - (rTLSU % maxNumSUInLCUWidth)+ 1;
    461     NDBFBlock.heightSU = (UInt)(rBRSU / maxNumSUInLCUWidth) - (UInt)(rTLSU / maxNumSUInLCUWidth)+ 1;
    462     NDBFBlock.width    = NDBFBlock.widthSU  * getMinCUWidth();
    463     NDBFBlock.height   = NDBFBlock.heightSU * getMinCUHeight();
    464 
    465     pcCU->getNDBFilterBlocks()->push_back(NDBFBlock);
    466 
    467     currSU += maxNumSUInSGU;
    468   }
    469 
    470 }
    471 
    472 /** destroy non-deblocked filter information for LCU
    473  */
    474 Void TComPic::destroyNonDBFilterInfo()
    475 {
    476   if(m_pbValidSlice != NULL)
    477   {
    478     delete[] m_pbValidSlice;
    479     m_pbValidSlice = NULL;
    480   }
    481 
    482   if(m_pSliceSUMap != NULL)
    483   {
    484     delete[] m_pSliceSUMap;
    485     m_pSliceSUMap = NULL;
    486   }
    487   for( UInt CUAddr = 0; CUAddr < getNumCUsInFrame() ; CUAddr++ )
    488   {
    489     TComDataCU* pcCU = getCU( CUAddr );
    490     pcCU->getNDBFilterBlocks()->clear();
    491   }
    492 
    493   if( m_bIndependentSliceBoundaryForNDBFilter || m_bIndependentTileBoundaryForNDBFilter)
    494   {
    495     m_pNDBFilterYuvTmp->destroy();
    496     delete m_pNDBFilterYuvTmp;
    497     m_pNDBFilterYuvTmp = NULL;
    498   }
    499 
    500 }
     170Bool  TComPic::getSAOMergeAvailability(Int currAddr, Int mergeAddr)
     171{
     172  Bool mergeCtbInSliceSeg = (mergeAddr >= getPicSym()->getCUOrderMap(getCU(currAddr)->getSlice()->getSliceCurStartCUAddr()/getNumPartInCU()));
     173  Bool mergeCtbInTile     = (getPicSym()->getTileIdxMap(mergeAddr) == getPicSym()->getTileIdxMap(currAddr));
     174  return (mergeCtbInSliceSeg && mergeCtbInTile);
     175}
     176
    501177#if H_MV
    502178Void TComPic::print( Bool legend )
  • trunk/source/Lib/TLibCommon/TComPic.h

    r655 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
     
    7070  Bool                  m_bNeededForOutput;
    7171  UInt                  m_uiCurrSliceIdx;         // Index of current slice
    72   Int*                  m_pSliceSUMap;
    73   Bool*                 m_pbValidSlice;
    74   Int                   m_sliceGranularityForNDBFilter;
    75   Bool                  m_bIndependentSliceBoundaryForNDBFilter;
    76   Bool                  m_bIndependentTileBoundaryForNDBFilter;
    77   TComPicYuv*           m_pNDBFilterYuvTmp;    //!< temporary picture buffer when non-cross slice/tile boundary in-loop filtering is enabled
    7872  Bool                  m_bCheckLTMSB;
    7973 
     
    198192  Window&       getDefDisplayWindow()   { return m_defaultDisplayWindow; }
    199193
    200   Void          createNonDBFilterInfo   (std::vector<Int> sliceStartAddress, Int sliceGranularityDepth
    201                                         ,std::vector<Bool>* LFCrossSliceBoundary
    202                                         ,Int  numTiles = 1
    203                                         ,Bool bNDBFilterCrossTileBoundary = true);
    204   Void          createNonDBFilterInfoLCU(Int tileID, Int sliceID, TComDataCU* pcCU, UInt startSU, UInt endSU, Int sliceGranularyDepth, UInt picWidth, UInt picHeight);
    205   Void          destroyNonDBFilterInfo();
    206 
    207   Bool          getValidSlice                                  (Int sliceID)  {return m_pbValidSlice[sliceID];}
    208   Bool          getIndependentSliceBoundaryForNDBFilter        ()             {return m_bIndependentSliceBoundaryForNDBFilter;}
    209   Bool          getIndependentTileBoundaryForNDBFilter         ()             {return m_bIndependentTileBoundaryForNDBFilter; }
    210   TComPicYuv*   getYuvPicBufferForIndependentBoundaryProcessing()             {return m_pNDBFilterYuvTmp;}
    211   std::vector<TComDataCU*>& getOneSliceCUDataForNDBFilter      (Int sliceID) { return m_vSliceCUDataLink[sliceID];}
    212 
     194  Bool          getSAOMergeAvailability(Int currAddr, Int mergeAddr);
    213195
    214196  /* field coding parameters*/
  • trunk/source/Lib/TLibCommon/TComPicSym.cpp

    r655 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
     
    6767,m_puiTileIdxMap(NULL)
    6868,m_puiInverseCUOrderMap(NULL)
     69,m_saoBlkParams(NULL)
    6970{};
    7071
     
    122123    m_puiInverseCUOrderMap[i] = i;
    123124  }
    124   m_saoParam = NULL;
     125
     126  m_saoBlkParams = new SAOBlkParam[m_uiNumCUsInFrame];
    125127}
    126128
     
    163165  m_puiInverseCUOrderMap = NULL;
    164166 
    165   if (m_saoParam)
    166   {
    167     TComSampleAdaptiveOffset::freeSaoParam(m_saoParam);
    168     delete m_saoParam;
    169     m_saoParam = NULL;
     167  if(m_saoBlkParams)
     168  {
     169    delete[] m_saoBlkParams; m_saoBlkParams = NULL;
    170170  }
    171171}
     
    308308}
    309309
    310 Void TComPicSym::allocSaoParam(TComSampleAdaptiveOffset *sao)
    311 {
    312   m_saoParam = new SAOParam;
    313   sao->allocSaoParam(m_saoParam);
     310Void TComPicSym::deriveLoopFilterBoundaryAvailibility(Int ctu,
     311                                                      Bool& isLeftAvail,
     312                                                      Bool& isRightAvail,
     313                                                      Bool& isAboveAvail,
     314                                                      Bool& isBelowAvail,
     315                                                      Bool& isAboveLeftAvail,
     316                                                      Bool& isAboveRightAvail,
     317                                                      Bool& isBelowLeftAvail,
     318                                                      Bool& isBelowRightAvail
     319                                                      )
     320{
     321
     322  isLeftAvail      = (ctu % m_uiWidthInCU != 0);
     323  isRightAvail     = (ctu % m_uiWidthInCU != m_uiWidthInCU-1);
     324  isAboveAvail     = (ctu >= m_uiWidthInCU );
     325  isBelowAvail     = (ctu <  m_uiNumCUsInFrame - m_uiWidthInCU);
     326  isAboveLeftAvail = (isAboveAvail && isLeftAvail);
     327  isAboveRightAvail= (isAboveAvail && isRightAvail);
     328  isBelowLeftAvail = (isBelowAvail && isLeftAvail);
     329  isBelowRightAvail= (isBelowAvail && isRightAvail);
     330
     331  Bool isLoopFiltAcrossTilePPS = getCU(ctu)->getSlice()->getPPS()->getLoopFilterAcrossTilesEnabledFlag();
     332
     333  {
     334    TComDataCU* ctuCurr  = getCU(ctu);
     335    TComDataCU* ctuLeft  = isLeftAvail ?getCU(ctu-1):NULL;
     336    TComDataCU* ctuRight = isRightAvail?getCU(ctu+1):NULL;
     337    TComDataCU* ctuAbove = isAboveAvail?getCU(ctu-m_uiWidthInCU):NULL;
     338    TComDataCU* ctuBelow = isBelowAvail?getCU(ctu+m_uiWidthInCU):NULL;
     339    TComDataCU* ctuAboveLeft  = isAboveLeftAvail ? getCU(ctu-m_uiWidthInCU-1):NULL;
     340    TComDataCU* ctuAboveRigtht= isAboveRightAvail? getCU(ctu-m_uiWidthInCU+1):NULL;
     341    TComDataCU* ctuBelowLeft  = isBelowLeftAvail ? getCU(ctu+m_uiWidthInCU-1):NULL;
     342    TComDataCU* ctuBelowRight = isBelowRightAvail? getCU(ctu+m_uiWidthInCU+1):NULL;
     343
     344    {
     345      //left
     346      if(ctuLeft != NULL)
     347      {
     348        isLeftAvail = (ctuCurr->getSlice()->getSliceCurStartCUAddr() != ctuLeft->getSlice()->getSliceCurStartCUAddr())?ctuCurr->getSlice()->getLFCrossSliceBoundaryFlag():true;
     349      }
     350      //above
     351      if(ctuAbove != NULL)
     352      {
     353        isAboveAvail = (ctuCurr->getSlice()->getSliceCurStartCUAddr() != ctuAbove->getSlice()->getSliceCurStartCUAddr())?ctuCurr->getSlice()->getLFCrossSliceBoundaryFlag():true;
     354      }
     355      //right
     356      if(ctuRight != NULL)
     357      {
     358        isRightAvail = (ctuCurr->getSlice()->getSliceCurStartCUAddr() != ctuRight->getSlice()->getSliceCurStartCUAddr())?ctuRight->getSlice()->getLFCrossSliceBoundaryFlag():true;
     359      }
     360      //below
     361      if(ctuBelow != NULL)
     362      {
     363        isBelowAvail = (ctuCurr->getSlice()->getSliceCurStartCUAddr() != ctuBelow->getSlice()->getSliceCurStartCUAddr())?ctuBelow->getSlice()->getLFCrossSliceBoundaryFlag():true;
     364      }
     365      //above-left
     366      if(ctuAboveLeft != NULL)
     367      {
     368        isAboveLeftAvail = (ctuCurr->getSlice()->getSliceCurStartCUAddr() != ctuAboveLeft->getSlice()->getSliceCurStartCUAddr())?ctuCurr->getSlice()->getLFCrossSliceBoundaryFlag():true;
     369      }
     370      //below-right
     371      if(ctuBelowRight != NULL)
     372{
     373        isBelowRightAvail = (ctuCurr->getSlice()->getSliceCurStartCUAddr() != ctuBelowRight->getSlice()->getSliceCurStartCUAddr())?ctuBelowRight->getSlice()->getLFCrossSliceBoundaryFlag():true;
     374      }
     375
     376
     377      //above-right
     378      if(ctuAboveRigtht != NULL)
     379      {
     380        Int curSliceStartEncOrder  = ctuCurr->getSlice()->getSliceCurStartCUAddr();
     381        Int aboveRigthtSliceStartEncOrder = ctuAboveRigtht->getSlice()->getSliceCurStartCUAddr();
     382
     383        isAboveRightAvail = (curSliceStartEncOrder == aboveRigthtSliceStartEncOrder)?(true):
     384          (
     385          (curSliceStartEncOrder > aboveRigthtSliceStartEncOrder)?(ctuCurr->getSlice()->getLFCrossSliceBoundaryFlag())
     386          :(ctuAboveRigtht->getSlice()->getLFCrossSliceBoundaryFlag())
     387          );         
     388      }
     389      //below-left
     390      if(ctuBelowLeft != NULL)
     391      {
     392        Int curSliceStartEncOrder  = ctuCurr->getSlice()->getSliceCurStartCUAddr();
     393        Int belowLeftSliceStartEncOrder = ctuBelowLeft->getSlice()->getSliceCurStartCUAddr();
     394
     395        isBelowLeftAvail = (curSliceStartEncOrder == belowLeftSliceStartEncOrder)?(true):
     396          (
     397          (curSliceStartEncOrder > belowLeftSliceStartEncOrder)?(ctuCurr->getSlice()->getLFCrossSliceBoundaryFlag())
     398          :(ctuBelowLeft->getSlice()->getLFCrossSliceBoundaryFlag())
     399          );
     400      }       
     401    }
     402
     403    if(!isLoopFiltAcrossTilePPS)
     404    {     
     405      isLeftAvail      = (!isLeftAvail      ) ?false:(getTileIdxMap( ctuLeft->getAddr()         ) == getTileIdxMap( ctu ));
     406      isAboveAvail     = (!isAboveAvail     ) ?false:(getTileIdxMap( ctuAbove->getAddr()        ) == getTileIdxMap( ctu ));
     407      isRightAvail     = (!isRightAvail     ) ?false:(getTileIdxMap( ctuRight->getAddr()        ) == getTileIdxMap( ctu ));
     408      isBelowAvail     = (!isBelowAvail     ) ?false:(getTileIdxMap( ctuBelow->getAddr()        ) == getTileIdxMap( ctu ));
     409      isAboveLeftAvail = (!isAboveLeftAvail ) ?false:(getTileIdxMap( ctuAboveLeft->getAddr()    ) == getTileIdxMap( ctu ));
     410      isAboveRightAvail= (!isAboveRightAvail) ?false:(getTileIdxMap( ctuAboveRigtht->getAddr()  ) == getTileIdxMap( ctu ));
     411      isBelowLeftAvail = (!isBelowLeftAvail ) ?false:(getTileIdxMap( ctuBelowLeft->getAddr()    ) == getTileIdxMap( ctu ));
     412      isBelowRightAvail= (!isBelowRightAvail) ?false:(getTileIdxMap( ctuBelowRight->getAddr()   ) == getTileIdxMap( ctu ));
     413    }
     414  }
     415
    314416}
    315417
  • trunk/source/Lib/TLibCommon/TComPicSym.h

    r655 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
     
    107107  UInt*         m_puiInverseCUOrderMap;
    108108
    109   SAOParam *m_saoParam;
     109  SAOBlkParam *m_saoBlkParams;
    110110public:
    111111  Void        create  ( Int iPicWidth, Int iPicHeight, UInt uiMaxWidth, UInt uiMaxHeight, UInt uiMaxDepth );
     
    144144  Void         xInitTiles();
    145145  UInt         xCalculateNxtCUAddr( UInt uiCurrCUAddr );
    146   Void allocSaoParam(TComSampleAdaptiveOffset *sao);
    147   SAOParam *getSaoParam() { return m_saoParam; }
     146  SAOBlkParam* getSAOBlkParam() { return m_saoBlkParams;}
     147  Void deriveLoopFilterBoundaryAvailibility(Int ctu, Bool& isLeftAvail,Bool& isRightAvail,Bool& isAboveAvail,Bool& isBelowAvail,Bool& isAboveLeftAvail,Bool& isAboveRightAvail,Bool& isBelowLeftAvail,Bool& isBelowRightAvail);
     148
     149
    148150};// END CLASS DEFINITION TComPicSym
    149151
  • trunk/source/Lib/TLibCommon/TComPicYuv.cpp

    r608 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/Lib/TLibCommon/TComPicYuv.h

    r608 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/Lib/TLibCommon/TComPicYuvMD5.cpp

    r608 r872  
    44 * granted under this license.
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/Lib/TLibCommon/TComPrediction.cpp

    r833 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/Lib/TLibCommon/TComPrediction.h

    r833 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/Lib/TLibCommon/TComRdCost.cpp

    r833 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
     
    5151Double TComRdCost::m_dDisparityCoeff = 1.0;
    5252#endif
    53 
    5453TComRdCost::TComRdCost()
    5554{
     
    354353  }
    355354#endif
    356  
    357355  // initialize
    358356  rcDistParam.iSubShift  = 0;
     
    395393  }
    396394#endif
    397 
    398395  // initialize
    399396  rcDistParam.iSubShift  = 0;
     
    401398
    402399// Setting the Distortion Parameter for Inter (subpel ME with step)
    403 #if NS_HAD
    404 Void TComRdCost::setDistParam( TComPattern* pcPatternKey, Pel* piRefY, Int iRefStride, Int iStep, DistParam& rcDistParam, Bool bHADME, Bool bUseNSHAD )
    405 #else
    406400Void TComRdCost::setDistParam( TComPattern* pcPatternKey, Pel* piRefY, Int iRefStride, Int iStep, DistParam& rcDistParam, Bool bHADME )
    407 #endif
    408401{
    409402  // set Original & Curr Pointer / Stride
     
    420413  rcDistParam.iCols    = pcPatternKey->getROIYWidth();
    421414  rcDistParam.iRows    = pcPatternKey->getROIYHeight();
    422 #if NS_HAD
    423   rcDistParam.bUseNSHAD = bUseNSHAD;
    424 #endif
    425415 
    426416  // set distortion function
     
    454444  }
    455445#endif
    456  
    457446  // initialize
    458447  rcDistParam.iSubShift  = 0;
     
    460449
    461450Void
    462 #if NS_HAD
    463 TComRdCost::setDistParam( DistParam& rcDP, Pel* p1, Int iStride1, Pel* p2, Int iStride2, Int iWidth, Int iHeight, Bool bHadamard, Bool bUseNSHAD )
    464 #else
    465451TComRdCost::setDistParam( DistParam& rcDP, Int bitDepth, Pel* p1, Int iStride1, Pel* p2, Int iStride2, Int iWidth, Int iHeight, Bool bHadamard )
    466 #endif
    467452{
    468453  rcDP.pOrg       = p1;
     
    476461  rcDP.bitDepth   = bitDepth;
    477462  rcDP.DistFunc   = m_afpDistortFunc[ ( bHadamard ? DF_HADS : DF_SADS ) + g_aucConvertToBit[ iWidth ] + 1 ];
    478  
    479463#if H_3D_DBBP
    480464  if( m_bUseMask )
     
    482466    rcDP.DistFunc = (bHadamard)?TComRdCost::xGetMaskedHADs:TComRdCost::xGetMaskedSAD;
    483467  }
    484 #endif
    485  
    486 #if NS_HAD
    487   rcDP.bUseNSHAD  = bUseNSHAD;
    488468#endif
    489469}
     
    506486    }
    507487  }
    508   else if ( ( (iWidth % 4) == 0 ) && ( (iHeight % 4) == 0 ) )
    509   {
     488  else
     489  {
     490    assert(iWidth % 4 == 0 && iHeight % 4 == 0);
     491   
    510492    for ( y=0; y<iHeight; y+= 4 )
    511493    {
     
    518500    }
    519501  }
    520   else
    521   {
    522     for ( y=0; y<iHeight; y+= 2 )
    523     {
    524       for ( x=0; x<iWidth; x+= 2 )
    525       {
    526         uiSum += xCalcHADs8x8( &pi0[x], &pi1[x], iStride0, iStride1, 1 );
    527       }
    528       pi0 += iStride0*2;
    529       pi1 += iStride1*2;
    530     }
    531   }
    532502 
    533503  return uiSum >> DISTORTION_PRECISION_ADJUSTMENT(bitDepth-8);
     
    572542
    573543
    574 #if WEIGHTED_CHROMA_DISTORTION
    575544UInt TComRdCost::getDistPart(Int bitDepth, Pel* piCur, Int iCurStride,  Pel* piOrg, Int iOrgStride, UInt uiBlkWidth, UInt uiBlkHeight, TextType eText, DFunc eDFunc)
    576 #else
    577 UInt TComRdCost::getDistPart(Int bitDepth, Pel* piCur, Int iCurStride,  Pel* piOrg, Int iOrgStride, UInt uiBlkWidth, UInt uiBlkHeight, DFunc eDFunc )
    578 #endif
    579545{
    580546  DistParam cDtParam;
     
    596562  cDtParam.bUseSDCMRSAD = false;
    597563#endif
    598 #if WEIGHTED_CHROMA_DISTORTION
    599564  if (eText == TEXT_CHROMA_U)
    600565  {
     
    609574    return cDtParam.DistFunc( &cDtParam );
    610575  }
    611 #else
    612   return cDtParam.DistFunc( &cDtParam );
    613 #endif
    614576}
    615577#if H_3D_VSO
     
    664626#endif
    665627
    666 #if (RATE_CONTROL_LAMBDA_DOMAIN && !M0036_RC_IMPROVEMENT) || KWU_RC_MADPRED_E0227
     628#if KWU_RC_MADPRED_E0227
    667629UInt TComRdCost::getSADPart ( Int bitDepth, Pel* pelCur, Int curStride,  Pel* pelOrg, Int orgStride, UInt width, UInt height )
    668630{
     
    908870}
    909871#endif
    910 
    911872// --------------------------------------------------------------------------------------------------------------------
    912873// SAD
     
    34673428}
    34683429
    3469 #if NS_HAD
    3470 UInt TComRdCost::xCalcHADs16x4( Pel *piOrg, Pel *piCur, Int iStrideOrg, Int iStrideCur, Int iStep )
    3471 {
    3472   Int k, i, j, jj, sad=0;
    3473   Int diff[64], m1[4][16], m2[4][16];
    3474   assert( iStep == 1 );
    3475   for( k = 0; k < 64; k += 16 )
    3476   {
    3477     diff[k+0] = piOrg[0] - piCur[0];
    3478     diff[k+1] = piOrg[1] - piCur[1];
    3479     diff[k+2] = piOrg[2] - piCur[2];
    3480     diff[k+3] = piOrg[3] - piCur[3];
    3481     diff[k+4] = piOrg[4] - piCur[4];
    3482     diff[k+5] = piOrg[5] - piCur[5];
    3483     diff[k+6] = piOrg[6] - piCur[6];
    3484     diff[k+7] = piOrg[7] - piCur[7];
    3485 
    3486     diff[k+8]  = piOrg[8]  - piCur[8] ;
    3487     diff[k+9]  = piOrg[9]  - piCur[9] ;
    3488     diff[k+10] = piOrg[10] - piCur[10];
    3489     diff[k+11] = piOrg[11] - piCur[11];
    3490     diff[k+12] = piOrg[12] - piCur[12];
    3491     diff[k+13] = piOrg[13] - piCur[13];
    3492     diff[k+14] = piOrg[14] - piCur[14];
    3493     diff[k+15] = piOrg[15] - piCur[15];
    3494 
    3495     piCur += iStrideCur;
    3496     piOrg += iStrideOrg;
    3497   }
    3498 
    3499   //horizontal
    3500   for (j=0; j < 4; j++)
    3501   {
    3502     jj = j << 4;
    3503 
    3504     m2[j][0]  = diff[jj  ] + diff[jj+8];
    3505     m2[j][1]  = diff[jj+1] + diff[jj+9];
    3506     m2[j][2]  = diff[jj+2] + diff[jj+10];
    3507     m2[j][3]  = diff[jj+3] + diff[jj+11];
    3508     m2[j][4]  = diff[jj+4] + diff[jj+12];
    3509     m2[j][5]  = diff[jj+5] + diff[jj+13];
    3510     m2[j][6]  = diff[jj+6] + diff[jj+14];
    3511     m2[j][7]  = diff[jj+7] + diff[jj+15];
    3512     m2[j][8]  = diff[jj  ] - diff[jj+8];
    3513     m2[j][9]  = diff[jj+1] - diff[jj+9];
    3514     m2[j][10] = diff[jj+2] - diff[jj+10];
    3515     m2[j][11] = diff[jj+3] - diff[jj+11];
    3516     m2[j][12] = diff[jj+4] - diff[jj+12];
    3517     m2[j][13] = diff[jj+5] - diff[jj+13];
    3518     m2[j][14] = diff[jj+6] - diff[jj+14];
    3519     m2[j][15] = diff[jj+7] - diff[jj+15];
    3520 
    3521     m1[j][0]  = m2[j][0]  + m2[j][4];
    3522     m1[j][1]  = m2[j][1]  + m2[j][5];
    3523     m1[j][2]  = m2[j][2]  + m2[j][6];
    3524     m1[j][3]  = m2[j][3]  + m2[j][7];
    3525     m1[j][4]  = m2[j][0]  - m2[j][4];
    3526     m1[j][5]  = m2[j][1]  - m2[j][5];
    3527     m1[j][6]  = m2[j][2]  - m2[j][6];
    3528     m1[j][7]  = m2[j][3]  - m2[j][7];
    3529     m1[j][8]  = m2[j][8]  + m2[j][12];
    3530     m1[j][9]  = m2[j][9]  + m2[j][13];
    3531     m1[j][10] = m2[j][10] + m2[j][14];
    3532     m1[j][11] = m2[j][11] + m2[j][15];
    3533     m1[j][12] = m2[j][8]  - m2[j][12];
    3534     m1[j][13] = m2[j][9]  - m2[j][13];
    3535     m1[j][14] = m2[j][10] - m2[j][14];
    3536     m1[j][15] = m2[j][11] - m2[j][15];
    3537 
    3538     m2[j][0]  = m1[j][0]  + m1[j][2];
    3539     m2[j][1]  = m1[j][1]  + m1[j][3];
    3540     m2[j][2]  = m1[j][0]  - m1[j][2];
    3541     m2[j][3]  = m1[j][1]  - m1[j][3];
    3542     m2[j][4]  = m1[j][4]  + m1[j][6];
    3543     m2[j][5]  = m1[j][5]  + m1[j][7];
    3544     m2[j][6]  = m1[j][4]  - m1[j][6];
    3545     m2[j][7]  = m1[j][5]  - m1[j][7];
    3546     m2[j][8]  = m1[j][8]  + m1[j][10];
    3547     m2[j][9]  = m1[j][9]  + m1[j][11];
    3548     m2[j][10] = m1[j][8]  - m1[j][10];
    3549     m2[j][11] = m1[j][9]  - m1[j][11];
    3550     m2[j][12] = m1[j][12] + m1[j][14];
    3551     m2[j][13] = m1[j][13] + m1[j][15];
    3552     m2[j][14] = m1[j][12] - m1[j][14];
    3553     m2[j][15] = m1[j][13] - m1[j][15];
    3554 
    3555     m1[j][0]  = m2[j][0]  + m2[j][1];
    3556     m1[j][1]  = m2[j][0]  - m2[j][1];
    3557     m1[j][2]  = m2[j][2]  + m2[j][3];
    3558     m1[j][3]  = m2[j][2]  - m2[j][3];
    3559     m1[j][4]  = m2[j][4]  + m2[j][5];
    3560     m1[j][5]  = m2[j][4]  - m2[j][5];
    3561     m1[j][6]  = m2[j][6]  + m2[j][7];
    3562     m1[j][7]  = m2[j][6]  - m2[j][7];
    3563     m1[j][8]  = m2[j][8]  + m2[j][9];
    3564     m1[j][9]  = m2[j][8]  - m2[j][9];
    3565     m1[j][10] = m2[j][10] + m2[j][11];
    3566     m1[j][11] = m2[j][10] - m2[j][11];
    3567     m1[j][12] = m2[j][12] + m2[j][13];
    3568     m1[j][13] = m2[j][12] - m2[j][13];
    3569     m1[j][14] = m2[j][14] + m2[j][15];
    3570     m1[j][15] = m2[j][14] - m2[j][15];
    3571   }
    3572 
    3573   //vertical
    3574   for (i=0; i < 16; i++)
    3575   {   
    3576     m2[0][i] = m1[0][i] + m1[2][i];
    3577     m2[1][i] = m1[1][i] + m1[3][i];
    3578     m2[2][i] = m1[0][i] - m1[2][i];
    3579     m2[3][i] = m1[1][i] - m1[3][i];
    3580 
    3581     m1[0][i] = m2[0][i] + m2[1][i];
    3582     m1[1][i] = m2[0][i] - m2[1][i];
    3583     m1[2][i] = m2[2][i] + m2[3][i];
    3584     m1[3][i] = m2[2][i] - m2[3][i];
    3585   }
    3586 
    3587   for (i = 0; i < 4; i++)
    3588   {
    3589     for (j = 0; j < 16; j++)
    3590     {
    3591       sad += abs(m1[i][j]);
    3592     }
    3593   }
    3594 
    3595   sad=((sad+2)>>2);
    3596 
    3597   return sad;
    3598 }
    3599 
    3600 UInt TComRdCost::xCalcHADs4x16( Pel *piOrg, Pel *piCur, Int iStrideOrg, Int iStrideCur, Int iStep )
    3601 {
    3602   Int k, i, j, jj, sad=0;
    3603   Int diff[64], m1[16][4], m2[16][4], m3[16][4];
    3604   assert( iStep == 1 );
    3605   for( k = 0; k < 64; k += 4 )
    3606   {
    3607     diff[k+0] = piOrg[0] - piCur[0];
    3608     diff[k+1] = piOrg[1] - piCur[1];
    3609     diff[k+2] = piOrg[2] - piCur[2];
    3610     diff[k+3] = piOrg[3] - piCur[3];
    3611 
    3612     piCur += iStrideCur;
    3613     piOrg += iStrideOrg;
    3614   }
    3615 
    3616   //horizontal
    3617   for (j=0; j < 16; j++)
    3618   {
    3619     jj = j << 2;
    3620     m2[j][0] = diff[jj  ] + diff[jj+2];
    3621     m2[j][1] = diff[jj+1] + diff[jj+3];
    3622     m2[j][2] = diff[jj  ] - diff[jj+2];
    3623     m2[j][3] = diff[jj+1] - diff[jj+3];
    3624 
    3625     m1[j][0] = m2[j][0] + m2[j][1];
    3626     m1[j][1] = m2[j][0] - m2[j][1];
    3627     m1[j][2] = m2[j][2] + m2[j][3];
    3628     m1[j][3] = m2[j][2] - m2[j][3];
    3629   }
    3630 
    3631   //vertical
    3632   for (i=0; i < 4; i++)
    3633   {
    3634     m2[0][i]  = m1[0][i] + m1[8][i];
    3635     m2[1][i]  = m1[1][i] + m1[9][i];
    3636     m2[2][i]  = m1[2][i] + m1[10][i];
    3637     m2[3][i]  = m1[3][i] + m1[11][i];
    3638     m2[4][i]  = m1[4][i] + m1[12][i];
    3639     m2[5][i]  = m1[5][i] + m1[13][i];
    3640     m2[6][i]  = m1[6][i] + m1[14][i];
    3641     m2[7][i]  = m1[7][i] + m1[15][i];
    3642     m2[8][i]  = m1[0][i] - m1[8][i];
    3643     m2[9][i]  = m1[1][i] - m1[9][i];
    3644     m2[10][i] = m1[2][i] - m1[10][i];
    3645     m2[11][i] = m1[3][i] - m1[11][i];
    3646     m2[12][i] = m1[4][i] - m1[12][i];
    3647     m2[13][i] = m1[5][i] - m1[13][i];
    3648     m2[14][i] = m1[6][i] - m1[14][i];
    3649     m2[15][i] = m1[7][i] - m1[15][i];
    3650 
    3651     m3[0][i]  = m2[0][i]  + m2[4][i];
    3652     m3[1][i]  = m2[1][i]  + m2[5][i];
    3653     m3[2][i]  = m2[2][i]  + m2[6][i];
    3654     m3[3][i]  = m2[3][i]  + m2[7][i];
    3655     m3[4][i]  = m2[0][i]  - m2[4][i];
    3656     m3[5][i]  = m2[1][i]  - m2[5][i];
    3657     m3[6][i]  = m2[2][i]  - m2[6][i];
    3658     m3[7][i]  = m2[3][i]  - m2[7][i];
    3659     m3[8][i]  = m2[8][i]  + m2[12][i];
    3660     m3[9][i]  = m2[9][i]  + m2[13][i];
    3661     m3[10][i] = m2[10][i] + m2[14][i];
    3662     m3[11][i] = m2[11][i] + m2[15][i];
    3663     m3[12][i] = m2[8][i]  - m2[12][i];
    3664     m3[13][i] = m2[9][i]  - m2[13][i];
    3665     m3[14][i] = m2[10][i] - m2[14][i];
    3666     m3[15][i] = m2[11][i] - m2[15][i];
    3667 
    3668     m1[0][i]  = m3[0][i]  + m3[2][i];
    3669     m1[1][i]  = m3[1][i]  + m3[3][i];
    3670     m1[2][i]  = m3[0][i]  - m3[2][i];
    3671     m1[3][i]  = m3[1][i]  - m3[3][i];
    3672     m1[4][i]  = m3[4][i]  + m3[6][i];
    3673     m1[5][i]  = m3[5][i]  + m3[7][i];
    3674     m1[6][i]  = m3[4][i]  - m3[6][i];
    3675     m1[7][i]  = m3[5][i]  - m3[7][i];
    3676     m1[8][i]  = m3[8][i]  + m3[10][i];
    3677     m1[9][i]  = m3[9][i]  + m3[11][i];
    3678     m1[10][i] = m3[8][i]  - m3[10][i];
    3679     m1[11][i] = m3[9][i]  - m3[11][i];
    3680     m1[12][i] = m3[12][i] + m3[14][i];
    3681     m1[13][i] = m3[13][i] + m3[15][i];
    3682     m1[14][i] = m3[12][i] - m3[14][i];
    3683     m1[15][i] = m3[13][i] - m3[15][i];
    3684 
    3685     m2[0][i]  = m1[0][i]  + m1[1][i];
    3686     m2[1][i]  = m1[0][i]  - m1[1][i];
    3687     m2[2][i]  = m1[2][i]  + m1[3][i];
    3688     m2[3][i]  = m1[2][i]  - m1[3][i];
    3689     m2[4][i]  = m1[4][i]  + m1[5][i];
    3690     m2[5][i]  = m1[4][i]  - m1[5][i];
    3691     m2[6][i]  = m1[6][i]  + m1[7][i];
    3692     m2[7][i]  = m1[6][i]  - m1[7][i];
    3693     m2[8][i]  = m1[8][i]  + m1[9][i];
    3694     m2[9][i]  = m1[8][i]  - m1[9][i];
    3695     m2[10][i] = m1[10][i] + m1[11][i];
    3696     m2[11][i] = m1[10][i] - m1[11][i];
    3697     m2[12][i] = m1[12][i] + m1[13][i];
    3698     m2[13][i] = m1[12][i] - m1[13][i];
    3699     m2[14][i] = m1[14][i] + m1[15][i];
    3700     m2[15][i] = m1[14][i] - m1[15][i];
    3701   }
    3702 
    3703   for (i = 0; i < 16; i++)
    3704   {
    3705     for (j = 0; j < 4; j++)
    3706     {
    3707       sad += abs(m2[i][j]);
    3708     }
    3709   }
    3710 
    3711   sad=((sad+2)>>2);
    3712 
    3713   return sad;
    3714 }
    3715 #endif
    3716 
    37173430UInt TComRdCost::xGetHADs4( DistParam* pcDtParam )
    37183431{
     
    38093522  UInt uiSum = 0;
    38103523 
    3811 #if NS_HAD
    3812   if( ( ( iRows % 8 == 0) && (iCols % 8 == 0) && ( iRows == iCols ) ) || ( ( iRows % 8 == 0 ) && (iCols % 8 == 0) && !pcDtParam->bUseNSHAD ) )
    3813 #else
    38143524  if( ( iRows % 8 == 0) && (iCols % 8 == 0) )
    3815 #endif
    38163525  {
    38173526    Int  iOffsetOrg = iStrideOrg<<3;
     
    38273536    }
    38283537  }
    3829 #if NS_HAD
    3830   else if ( ( iCols > 8 ) && ( iCols > iRows ) && pcDtParam->bUseNSHAD )
    3831   {
    3832     Int  iOffsetOrg = iStrideOrg<<2;
    3833     Int  iOffsetCur = iStrideCur<<2;
    3834     for ( y=0; y<iRows; y+= 4 )
    3835     {
    3836       for ( x=0; x<iCols; x+= 16 )
    3837       {
    3838         uiSum += xCalcHADs16x4( &piOrg[x], &piCur[x*iStep], iStrideOrg, iStrideCur, iStep );
    3839       }
    3840       piOrg += iOffsetOrg;
    3841       piCur += iOffsetCur;
    3842     }
    3843   }
    3844   else if ( ( iRows > 8 ) && ( iCols < iRows ) && pcDtParam->bUseNSHAD )
    3845   {
    3846     Int  iOffsetOrg = iStrideOrg<<4;
    3847     Int  iOffsetCur = iStrideCur<<4;
    3848     for ( y=0; y<iRows; y+= 16 )
    3849     {
    3850       for ( x=0; x<iCols; x+= 4 )
    3851       {
    3852         uiSum += xCalcHADs4x16( &piOrg[x], &piCur[x*iStep], iStrideOrg, iStrideCur, iStep );
    3853       }
    3854       piOrg += iOffsetOrg;
    3855       piCur += iOffsetCur;
    3856     }
    3857   }
    3858 #endif
    38593538  else if( ( iRows % 4 == 0) && (iCols % 4 == 0) )
    38603539  {
  • trunk/source/Lib/TLibCommon/TComRdCost.h

    r833 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
     
    107107  UInt            uiComp;           // uiComp = 0 (luma Y), 1 (chroma U), 2 (chroma V)
    108108
    109 #if NS_HAD
    110   Bool            bUseNSHAD;
    111 #endif
    112 
    113109  // (vertical) subsampling shift (for reducing complexity)
    114110  // - 0 = no subsampling, 1 = even rows, 2 = every 4th, etc.
     
    127123    iSubShift = 0;
    128124    bitDepth = 0;
    129 #if NS_HAD
    130     bUseNSHAD = false;
    131 #endif
    132125#if H_3D_VSO
    133126    // SAIT_VSO_EST_A0033
     
    155148#endif 
    156149 
    157 #if WEIGHTED_CHROMA_DISTORTION
    158150  Double                  m_cbDistortionWeight;
    159151  Double                  m_crDistortionWeight;
    160 #endif
    161152  Double                  m_dLambda;
    162153  Double                  m_sqrtLambda;
     
    201192
    202193 
    203 #if WEIGHTED_CHROMA_DISTORTION
    204194  Void    setCbDistortionWeight      ( Double cbDistortionWeight) { m_cbDistortionWeight = cbDistortionWeight; };
    205195  Void    setCrDistortionWeight      ( Double crDistortionWeight) { m_crDistortionWeight = crDistortionWeight; };
    206 #endif
    207196  Void    setLambda      ( Double dLambda );
    208197  Void    setFrameLambda ( Double dLambda ) { m_dFrameLambda = dLambda; }
     
    215204#endif
    216205
    217 #if RATE_CONTROL_LAMBDA_DOMAIN
    218206  Double  getLambda() { return m_dLambda; }
    219 #if M0036_RC_IMPROVEMENT
    220207  Double  getChromaWeight () {return((m_cbDistortionWeight+m_crDistortionWeight)/2.0);}
    221 #endif
    222 #endif
    223208 
    224209  // Distortion Functions
     
    227212  Void    setDistParam( UInt uiBlkWidth, UInt uiBlkHeight, DFunc eDFunc, DistParam& rcDistParam );
    228213  Void    setDistParam( TComPattern* pcPatternKey, Pel* piRefY, Int iRefStride,            DistParam& rcDistParam );
    229 #if NS_HAD
    230   Void    setDistParam( TComPattern* pcPatternKey, Pel* piRefY, Int iRefStride, Int iStep, DistParam& rcDistParam, Bool bHADME=false, Bool bUseNSHAD=false );
    231   Void    setDistParam( DistParam& rcDP, Int bitDepth, Pel* p1, Int iStride1, Pel* p2, Int iStride2, Int iWidth, Int iHeight, Bool bHadamard = false, Bool bUseNSHAD=false );
    232 #else
    233214  Void    setDistParam( TComPattern* pcPatternKey, Pel* piRefY, Int iRefStride, Int iStep, DistParam& rcDistParam, Bool bHADME=false );
    234215  Void    setDistParam( DistParam& rcDP, Int bitDepth, Pel* p1, Int iStride1, Pel* p2, Int iStride2, Int iWidth, Int iHeight, Bool bHadamard = false );
    235 #endif
    236216 
    237217#if H_3D_DBBP
     
    337317  static UInt xCalcHADs4x4      ( Pel *piOrg, Pel *piCurr, Int iStrideOrg, Int iStrideCur, Int iStep );
    338318  static UInt xCalcHADs8x8      ( Pel *piOrg, Pel *piCurr, Int iStrideOrg, Int iStrideCur, Int iStep );
    339 #if NS_HAD
    340   static UInt xCalcHADs16x4     ( Pel *piOrg, Pel *piCurr, Int iStrideOrg, Int iStrideCur, Int iStep );
    341   static UInt xCalcHADs4x16     ( Pel *piOrg, Pel *piCurr, Int iStrideOrg, Int iStrideCur, Int iStep );
    342 #endif
    343  
    344319#if H_3D_DBBP
    345320  static UInt xGetMaskedSSE     ( DistParam* pcDtParam );
     
    350325 
    351326public:
    352 #if WEIGHTED_CHROMA_DISTORTION
    353327  UInt   getDistPart(Int bitDepth, Pel* piCur, Int iCurStride,  Pel* piOrg, Int iOrgStride, UInt uiBlkWidth, UInt uiBlkHeight, TextType eText = TEXT_LUMA, DFunc eDFunc = DF_SSE );
    354 #else
    355   UInt   getDistPart(Int bitDepth, Pel* piCur, Int iCurStride,  Pel* piOrg, Int iOrgStride, UInt uiBlkWidth, UInt uiBlkHeight, DFunc eDFunc = DF_SSE );
    356 #endif
    357 
    358 #if (RATE_CONTROL_LAMBDA_DOMAIN && !M0036_RC_IMPROVEMENT) || KWU_RC_MADPRED_E0227
     328
     329#if KWU_RC_MADPRED_E0227
    359330  UInt   getSADPart ( Int bitDepth, Pel* pelCur, Int curStride,  Pel* pelOrg, Int orgStride, UInt width, UInt height );
    360331#endif
  • trunk/source/Lib/TLibCommon/TComRdCostWeightPrediction.cpp

    r608 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/Lib/TLibCommon/TComRdCostWeightPrediction.h

    r608 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • trunk/source/Lib/TLibCommon/TComRom.cpp

    r773 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
     
    327327UInt g_uiPCMBitDepthChroma   = 8;    // PCM bit-depth
    328328
     329#if H_3D_DIM_DMM
    329330// ====================================================================================================================
    330331// Depth coding modes
    331332// ====================================================================================================================
    332 #if H_3D_DIM_DMM
    333333const WedgeResolution g_dmmWedgeResolution[6] =
    334334{
     
    372372Bool g_traceTU = true;
    373373Bool g_disableHLSTrace = false;
    374 UInt64 g_stopAtCounter       = 48;
     374UInt64 g_stopAtCounter       = 0;
    375375Bool g_traceCopyBack         = false;
    376376Bool g_decTraceDispDer       = false;
    377377Bool g_decTraceMvFromMerge   = false;
     378Bool g_stopAtPos             = false;
     379Bool g_outputPos             = false;
    378380#endif
    379381#endif
     
    395397const UInt g_uiMinInGroup[ 10 ] = {0,1,2,3,4,6,8,12,16,24};
    396398const UInt g_uiGroupIdx[ 32 ]   = {0,1,2,3,4,4,5,5,6,6,6,6,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9};
    397 
    398 // Rice parameters for absolute transform levels
    399 const UInt g_auiGoRiceRange[5] =
    400 {
    401   7, 14, 26, 46, 78
    402 };
    403 
    404 const UInt g_auiGoRicePrefixLen[5] =
    405 {
    406   8, 7, 6, 5, 4
    407 };
    408399
    409400Void initSigLastScan(UInt* pBuffD, UInt* pBuffH, UInt* pBuffV, Int iWidth, Int iHeight)
     
    573564#if H_MV_ENC_DEC_TRAC
    574565#if ENC_DEC_TRACE
     566Void stopAtPos( Int poc, Int layerId, Int cuPelX, Int cuPelY, Int cuWidth, Int cuHeight )
     567{
     568
     569  if ( g_outputPos )
     570  {
     571    std::cout << "POC\t"        << poc
     572              << "\tLayerId\t"  << layerId
     573              << "\tCuPelX\t"   << cuPelX 
     574              << "\tCuPelY\t"   << cuPelY
     575              << "\tCuWidth\t"  << cuWidth
     576              << "\tCuHeight\t" << cuHeight
     577              << std::endl;
     578  }
     579
     580  Bool stopFlag = false;
     581  if ( g_stopAtPos && poc == 0 && layerId == 1 )
     582  {
     583    Bool stopAtCU = true;
     584    if ( stopAtCU )        // Stop at CU with specific size
     585    {   
     586      stopFlag = ( cuPelX  == 888 ) && ( cuPelY  == 248 ) && ( cuWidth == 8 ) && ( cuHeight == 8);
     587    }
     588    else
     589    {                     // Stop at specific position
     590      Int xPos = 888;
     591      Int yPos = 248;
     592
     593      Int cuPelXEnd = cuPelX + cuWidth  - 1;
     594      Int cuPelYEnd = cuPelY + cuHeight - 1;
     595
     596      stopFlag = (cuPelX <= xPos ) && (cuPelXEnd >= xPos ) && (cuPelY <= yPos ) && (cuPelYEnd >= yPos );
     597    }
     598  }
     599 
     600  if ( stopFlag )
     601  { // Set breakpoint here.
     602    std::cout << "Stop position. Break point here." << std::endl;
     603  } 
     604}
     605
    575606Void writeToTraceFile( const Char* symbolName, Int val, Bool doIt )
    576607{
  • trunk/source/Lib/TLibCommon/TComRom.h

    r773 r872  
    44 * granted under this license. 
    55 *
    6  * Copyright (c) 2010-2013, ITU/ISO/IEC
     6* Copyright (c) 2010-2014, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
     
    126126extern const UInt   g_uiMinInGroup[ 10 ];
    127127
    128 extern const UInt   g_auiGoRiceRange[5];                  //!< maximum value coded with Rice codes
    129 extern const UInt   g_auiGoRicePrefixLen[5];              //!< prefix length for each maximum value
    130  
    131128extern const UInt   g_sigLastScan8x8[ 3 ][ 4 ];           //!< coefficient group scan order for 8x8 TUs
    132129extern       UInt   g_sigLastScanCG32x32[ 64 ];
     
    224221 extern Bool   g_decTraceDispDer; // Trace derived disparity vectors (decoder only)
    225222 extern Bool   g_decTraceMvFromMerge;   // Trace motion vectors obtained from merge (decoder only)
     223 extern Bool   g_stopAtPos;