Changeset 1402 in 3DVCSoftware


Ignore:
Timestamp:
26 May 2016, 15:03:18 (8 years ago)
Author:
tech
Message:

Initial merge of HM-16.9.

Location:
branches/HTM-16.1-dev
Files:
52 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-16.1-dev/COPYING

    r1313 r1402  
    44granted under this license.   
    55
    6 Copyright (c) 2010-2015, ITU/ISO/IEC
     6Copyright (c) 2010-2016, ITU/ISO/IEC
    77All rights reserved.
    88
  • branches/HTM-16.1-dev/cfg/HM/encoder_lowdelay_P_main.cfg

    r1313 r1402  
    2121DecodingRefreshType           : 0           # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI
    2222GOPSize                       : 4           # GOP Size (number of B slice = GOPSize-1)
    23 #        Type POC QPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2  temporal_id #ref_pics_active #ref_pics reference pictures predict deltaRPS #ref_idcs reference idcs
    24 Frame1:  P    1   3        0.4624   0            0               0           4                4         -1 -5 -9 -13       0
    25 Frame2:  P    2   2        0.4624   0            0               0           4                4         -1 -2 -6 -10       1      -1       5         1 1 1 0 1
    26 Frame3:  P    3   3        0.4624   0            0               0           4                4         -1 -3 -7 -11       1      -1       5         0 1 1 1 1           
    27 Frame4:  P    4   1        0.578    0            0               0           4                4         -1 -4 -8 -12       1      -1       5         0 1 1 1 1
     23#        Type POC QPoffset CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2  temporal_id #ref_pics_active #ref_pics reference pictures predict deltaRPS #ref_idcs reference idcs
     24Frame1:  P    1   3        0          0          0.4624   0            0               0           4                4         -1 -5 -9 -13       0
     25Frame2:  P    2   2        0          0          0.4624   0            0               0           4                4         -1 -2 -6 -10       1      -1       5         1 1 1 0 1
     26Frame3:  P    3   3        0          0          0.4624   0            0               0           4                4         -1 -3 -7 -11       1      -1       5         0 1 1 1 1           
     27Frame4:  P    4   1        0          0          0.578    0            0               0           4                4         -1 -4 -8 -12       1      -1       5         0 1 1 1 1
    2828
    2929#=========== Motion Search =============
     
    4444TransformSkip                 : 1           # Transform skipping (0: OFF, 1: ON)
    4545TransformSkipFast             : 1           # Fast Transform skipping (0: OFF, 1: ON)
     46SliceChromaQPOffsetPeriodicity: 0           # Used in conjunction with Slice Cb/Cr QpOffsetIntraOrPeriodic. Use 0 (default) to disable periodic nature.
     47SliceCbQpOffsetIntraOrPeriodic: 0           # Chroma Cb QP Offset at slice level for I slice or for periodic inter slices as defined by SliceChromaQPOffsetPeriodicity. Replaces offset in the GOP table.
     48SliceCrQpOffsetIntraOrPeriodic: 0           # Chroma Cr QP Offset at slice level for I slice or for periodic inter slices as defined by SliceChromaQPOffsetPeriodicity. Replaces offset in the GOP table.
    4649
    4750#=========== Deblock Filter ============
    48 
    4951LoopFilterOffsetInPPS         : 1           # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1 (default) =constant params in PPS, param = base_param)
    5052LoopFilterDisable             : 0           # Disable deblocking filter (0=Filter, 1=No Filter)
  • branches/HTM-16.1-dev/cfg/HM/encoder_lowdelay_P_main10.cfg

    r1313 r1402  
    2121DecodingRefreshType           : 0           # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI
    2222GOPSize                       : 4           # GOP Size (number of B slice = GOPSize-1)
    23 #        Type POC QPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2  temporal_id #ref_pics_active #ref_pics reference pictures predict deltaRPS #ref_idcs reference idcs
    24 Frame1:  P    1   3        0.4624   0            0               0           4                4         -1 -5 -9 -13       0
    25 Frame2:  P    2   2        0.4624   0            0               0           4                4         -1 -2 -6 -10       1      -1       5         1 1 1 0 1
    26 Frame3:  P    3   3        0.4624   0            0               0           4                4         -1 -3 -7 -11       1      -1       5         0 1 1 1 1           
    27 Frame4:  P    4   1        0.578    0            0               0           4                4         -1 -4 -8 -12       1      -1       5         0 1 1 1 1
     23#        Type POC QPoffset CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2  temporal_id #ref_pics_active #ref_pics reference pictures predict deltaRPS #ref_idcs reference idcs
     24Frame1:  P    1   3        0          0          0.4624   0            0               0           4                4         -1 -5 -9 -13       0
     25Frame2:  P    2   2        0          0          0.4624   0            0               0           4                4         -1 -2 -6 -10       1      -1       5         1 1 1 0 1
     26Frame3:  P    3   3        0          0          0.4624   0            0               0           4                4         -1 -3 -7 -11       1      -1       5         0 1 1 1 1           
     27Frame4:  P    4   1        0          0          0.578    0            0               0           4                4         -1 -4 -8 -12       1      -1       5         0 1 1 1 1
    2828
    2929#=========== Motion Search =============
     
    4444TransformSkip                 : 1           # Transform skipping (0: OFF, 1: ON)
    4545TransformSkipFast             : 1           # Fast Transform skipping (0: OFF, 1: ON)
     46SliceChromaQPOffsetPeriodicity: 0           # Used in conjunction with Slice Cb/Cr QpOffsetIntraOrPeriodic. Use 0 (default) to disable periodic nature.
     47SliceCbQpOffsetIntraOrPeriodic: 0           # Chroma Cb QP Offset at slice level for I slice or for periodic inter slices as defined by SliceChromaQPOffsetPeriodicity. Replaces offset in the GOP table.
     48SliceCrQpOffsetIntraOrPeriodic: 0           # Chroma Cr QP Offset at slice level for I slice or for periodic inter slices as defined by SliceChromaQPOffsetPeriodicity. Replaces offset in the GOP table.
    4649
    4750#=========== Deblock Filter ============
    48 
    4951LoopFilterOffsetInPPS         : 1           # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1 (default) =constant params in PPS, param = base_param)
    5052LoopFilterDisable             : 0           # Disable deblocking filter (0=Filter, 1=No Filter)
  • branches/HTM-16.1-dev/cfg/HM/encoder_lowdelay_main.cfg

    r1313 r1402  
    2121DecodingRefreshType           : 0           # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI
    2222GOPSize                       : 4           # GOP Size (number of B slice = GOPSize-1)
    23 #        Type POC QPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2  temporal_id #ref_pics_active #ref_pics reference pictures predict deltaRPS #ref_idcs reference idcs
    24 Frame1:  B    1   3        0.4624   0            0               0           4                4         -1 -5 -9 -13       0
    25 Frame2:  B    2   2        0.4624   0            0               0           4                4         -1 -2 -6 -10       1      -1       5         1 1 1 0 1
    26 Frame3:  B    3   3        0.4624   0            0               0           4                4         -1 -3 -7 -11       1      -1       5         0 1 1 1 1           
    27 Frame4:  B    4   1        0.578    0            0               0           4                4         -1 -4 -8 -12       1      -1       5         0 1 1 1 1
     23#        Type POC QPoffset CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2  temporal_id #ref_pics_active #ref_pics reference pictures predict deltaRPS #ref_idcs reference idcs
     24Frame1:  B    1   3        0          0          0.4624   0            0               0           4                4         -1 -5 -9 -13       0
     25Frame2:  B    2   2        0          0          0.4624   0            0               0           4                4         -1 -2 -6 -10       1      -1       5         1 1 1 0 1
     26Frame3:  B    3   3        0          0          0.4624   0            0               0           4                4         -1 -3 -7 -11       1      -1       5         0 1 1 1 1           
     27Frame4:  B    4   1        0          0          0.578    0            0               0           4                4         -1 -4 -8 -12       1      -1       5         0 1 1 1 1
    2828
    2929#=========== Motion Search =============
     
    4242RDOQ                          : 1           # RDOQ
    4343RDOQTS                        : 1           # RDOQ for transform skip
     44SliceChromaQPOffsetPeriodicity: 0           # Used in conjunction with Slice Cb/Cr QpOffsetIntraOrPeriodic. Use 0 (default) to disable periodic nature.
     45SliceCbQpOffsetIntraOrPeriodic: 0           # Chroma Cb QP Offset at slice level for I slice or for periodic inter slices as defined by SliceChromaQPOffsetPeriodicity. Replaces offset in the GOP table.
     46SliceCrQpOffsetIntraOrPeriodic: 0           # Chroma Cr QP Offset at slice level for I slice or for periodic inter slices as defined by SliceChromaQPOffsetPeriodicity. Replaces offset in the GOP table.
    4447
    4548#=========== Deblock Filter ============
    46 
    4749LoopFilterOffsetInPPS         : 1           # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1 (default) =constant params in PPS, param = base_param)
    4850LoopFilterDisable             : 0           # Disable deblocking filter (0=Filter, 1=No Filter)
  • branches/HTM-16.1-dev/cfg/HM/encoder_lowdelay_main10.cfg

    r1313 r1402  
    2121DecodingRefreshType           : 0           # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI
    2222GOPSize                       : 4           # GOP Size (number of B slice = GOPSize-1)
    23 #        Type POC QPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2  temporal_id #ref_pics_active #ref_pics reference pictures predict deltaRPS #ref_idcs reference idcs
    24 Frame1:  B    1   3        0.4624   0            0               0           4                4         -1 -5 -9 -13       0
    25 Frame2:  B    2   2        0.4624   0            0               0           4                4         -1 -2 -6 -10       1      -1       5         1 1 1 0 1
    26 Frame3:  B    3   3        0.4624   0            0               0           4                4         -1 -3 -7 -11       1      -1       5         0 1 1 1 1           
    27 Frame4:  B    4   1        0.578    0            0               0           4                4         -1 -4 -8 -12       1      -1       5         0 1 1 1 1
     23#        Type POC QPoffset CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2  temporal_id #ref_pics_active #ref_pics reference pictures predict deltaRPS #ref_idcs reference idcs
     24Frame1:  B    1   3        0          0          0.4624   0            0               0           4                4         -1 -5 -9 -13       0
     25Frame2:  B    2   2        0          0          0.4624   0            0               0           4                4         -1 -2 -6 -10       1      -1       5         1 1 1 0 1
     26Frame3:  B    3   3        0          0          0.4624   0            0               0           4                4         -1 -3 -7 -11       1      -1       5         0 1 1 1 1           
     27Frame4:  B    4   1        0          0          0.578    0            0               0           4                4         -1 -4 -8 -12       1      -1       5         0 1 1 1 1
    2828
    2929#=========== Motion Search =============
     
    4242RDOQ                          : 1           # RDOQ
    4343RDOQTS                        : 1           # RDOQ for transform skip
     44SliceChromaQPOffsetPeriodicity: 0           # Used in conjunction with Slice Cb/Cr QpOffsetIntraOrPeriodic. Use 0 (default) to disable periodic nature.
     45SliceCbQpOffsetIntraOrPeriodic: 0           # Chroma Cb QP Offset at slice level for I slice or for periodic inter slices as defined by SliceChromaQPOffsetPeriodicity. Replaces offset in the GOP table.
     46SliceCrQpOffsetIntraOrPeriodic: 0           # Chroma Cr QP Offset at slice level for I slice or for periodic inter slices as defined by SliceChromaQPOffsetPeriodicity. Replaces offset in the GOP table.
    4447
    4548#=========== Deblock Filter ============
    46 
    4749LoopFilterOffsetInPPS         : 1           # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1 (default) =constant params in PPS, param = base_param)
    4850LoopFilterDisable             : 0           # Disable deblocking filter (0=Filter, 1=No Filter)
  • branches/HTM-16.1-dev/cfg/HM/encoder_lowdelay_main_rext.cfg

    r1386 r1402  
    2222DecodingRefreshType           : 0           # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI
    2323GOPSize                       : 4           # GOP Size (number of B slice = GOPSize-1)
    24 #        Type POC QPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2  temporal_id #ref_pics_active #ref_pics reference pictures predict deltaRPS #ref_idcs reference idcs
    25 Frame1:  B    1   3        0.4624   0            0               0           4                4         -1 -5 -9 -13       0
    26 Frame2:  B    2   2        0.4624   0            0               0           4                4         -1 -2 -6 -10       1      -1       5         1 1 1 0 1
    27 Frame3:  B    3   3        0.4624   0            0               0           4                4         -1 -3 -7 -11       1      -1       5         0 1 1 1 1           
    28 Frame4:  B    4   1        0.578    0            0               0           4                4         -1 -4 -8 -12       1      -1       5         0 1 1 1 1
     24#        Type POC QPoffset CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2  temporal_id #ref_pics_active #ref_pics reference pictures predict deltaRPS #ref_idcs reference idcs
     25Frame1:  B    1   3        0          0          0.4624   0            0               0           4                4         -1 -5 -9 -13       0
     26Frame2:  B    2   2        0          0          0.4624   0            0               0           4                4         -1 -2 -6 -10       1      -1       5         1 1 1 0 1
     27Frame3:  B    3   3        0          0          0.4624   0            0               0           4                4         -1 -3 -7 -11       1      -1       5         0 1 1 1 1           
     28Frame4:  B    4   1        0          0          0.578    0            0               0           4                4         -1 -4 -8 -12       1      -1       5         0 1 1 1 1
    2929
    3030#=========== Motion Search =============
     
    4343RDOQ                          : 1           # RDOQ
    4444RDOQTS                        : 1           # RDOQ for transform skip
     45SliceChromaQPOffsetPeriodicity: 0           # Used in conjunction with Slice Cb/Cr QpOffsetIntraOrPeriodic. Use 0 (default) to disable periodic nature.
     46SliceCbQpOffsetIntraOrPeriodic: 0           # Chroma Cb QP Offset at slice level for I slice or for periodic inter slices as defined by SliceChromaQPOffsetPeriodicity. Replaces offset in the GOP table.
     47SliceCrQpOffsetIntraOrPeriodic: 0           # Chroma Cr QP Offset at slice level for I slice or for periodic inter slices as defined by SliceChromaQPOffsetPeriodicity. Replaces offset in the GOP table.
    4548
    4649#=========== Deblock Filter ============
  • branches/HTM-16.1-dev/cfg/HM/encoder_randomaccess_main.cfg

    r1313 r1402  
    2121DecodingRefreshType           : 1           # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI
    2222GOPSize                       : 8           # GOP Size (number of B slice = GOPSize-1)
    23 #        Type POC QPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active #ref_pics reference pictures     predict deltaRPS #ref_idcs reference idcs
    24 Frame1:  B    8   1        0.442    0            0              0           2                3         -8 -12 -16             0
    25 Frame2:  B    4   2        0.3536   0            0              1           2                3         -4  -8   4             1       4        4         1 1 0 1
    26 Frame3:  B    2   3        0.3536   0            0              2           2                4         -2  -6   2 6           1       2        4         1 1 1 1
    27 Frame4:  B    1   4        0.68     0            0              3           2                4         -1   1   3 7           1       1        5         1 0 1 1 1
    28 Frame5:  B    3   4        0.68     0            0              3           2                4         -1  -3   1 5           1      -2        5         1 1 1 1 0
    29 Frame6:  B    6   3        0.3536   0            0              2           2                3         -2  -6   2             1      -3        5         0 1 1 1 0
    30 Frame7:  B    5   4        0.68     0            0              3           2                4         -1  -5   1 3           1       1        4         1 1 1 1
    31 Frame8:  B    7   4        0.68     0            0              3           2                4         -1  -3  -7 1           1      -2        5         1 1 1 1 0
     23#        Type POC QPoffset CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active #ref_pics reference pictures     predict deltaRPS #ref_idcs reference idcs
     24Frame1:  B    8   1        0          0          0.442    0            0              0           2                3         -8 -12 -16             0
     25Frame2:  B    4   2        0          0          0.3536   0            0              1           2                3         -4  -8   4             1       4        4         1 1 0 1
     26Frame3:  B    2   3        0          0          0.3536   0            0              2           2                4         -2  -6   2 6           1       2        4         1 1 1 1
     27Frame4:  B    1   4        0          0          0.68     0            0              3           2                4         -1   1   3 7           1       1        5         1 0 1 1 1
     28Frame5:  B    3   4        0          0          0.68     0            0              3           2                4         -1  -3   1 5           1      -2        5         1 1 1 1 0
     29Frame6:  B    6   3        0          0          0.3536   0            0              2           2                3         -2  -6   2             1      -3        5         0 1 1 1 0
     30Frame7:  B    5   4        0          0          0.68     0            0              3           2                4         -1  -5   1 3           1       1        4         1 1 1 1
     31Frame8:  B    7   4        0          0          0.68     0            0              3           2                4         -1  -3  -7 1           1      -2        5         1 1 1 1 0
    3232
    3333#=========== Motion Search =============
     
    4646RDOQ                          : 1           # RDOQ
    4747RDOQTS                        : 1           # RDOQ for transform skip
     48SliceChromaQPOffsetPeriodicity: 0           # Used in conjunction with Slice Cb/Cr QpOffsetIntraOrPeriodic. Use 0 (default) to disable periodic nature.
     49SliceCbQpOffsetIntraOrPeriodic: 0           # Chroma Cb QP Offset at slice level for I slice or for periodic inter slices as defined by SliceChromaQPOffsetPeriodicity. Replaces offset in the GOP table.
     50SliceCrQpOffsetIntraOrPeriodic: 0           # Chroma Cr QP Offset at slice level for I slice or for periodic inter slices as defined by SliceChromaQPOffsetPeriodicity. Replaces offset in the GOP table.
    4851
    4952#=========== Deblock Filter ============
    50 
    5153LoopFilterOffsetInPPS         : 1           # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1 (default) =constant params in PPS, param = base_param)
    5254LoopFilterDisable             : 0           # Disable deblocking filter (0=Filter, 1=No Filter)
  • branches/HTM-16.1-dev/cfg/HM/encoder_randomaccess_main10.cfg

    r1313 r1402  
    2121DecodingRefreshType           : 1           # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI
    2222GOPSize                       : 8           # GOP Size (number of B slice = GOPSize-1)
    23 #        Type POC QPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active #ref_pics reference pictures     predict deltaRPS #ref_idcs reference idcs
    24 Frame1:  B    8   1        0.442    0            0              0           2                3         -8 -12 -16             0
    25 Frame2:  B    4   2        0.3536   0            0              1           2                3         -4  -8   4             1       4        4         1 1 0 1
    26 Frame3:  B    2   3        0.3536   0            0              2           2                4         -2  -6   2 6           1       2        4         1 1 1 1
    27 Frame4:  B    1   4        0.68     0            0              3           2                4         -1   1   3 7           1       1        5         1 0 1 1 1
    28 Frame5:  B    3   4        0.68     0            0              3           2                4         -1  -3   1 5           1      -2        5         1 1 1 1 0
    29 Frame6:  B    6   3        0.3536   0            0              2           2                3         -2  -6   2             1      -3        5         0 1 1 1 0
    30 Frame7:  B    5   4        0.68     0            0              3           2                4         -1  -5   1 3           1       1        4         1 1 1 1
    31 Frame8:  B    7   4        0.68     0            0              3           2                4         -1  -3  -7 1           1      -2        5         1 1 1 1 0
     23#        Type POC QPoffset CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active #ref_pics reference pictures     predict deltaRPS #ref_idcs reference idcs
     24Frame1:  B    8   1        0          0          0.442    0            0              0           2                3         -8 -12 -16             0
     25Frame2:  B    4   2        0          0          0.3536   0            0              1           2                3         -4  -8   4             1       4        4         1 1 0 1
     26Frame3:  B    2   3        0          0          0.3536   0            0              2           2                4         -2  -6   2 6           1       2        4         1 1 1 1
     27Frame4:  B    1   4        0          0          0.68     0            0              3           2                4         -1   1   3 7           1       1        5         1 0 1 1 1
     28Frame5:  B    3   4        0          0          0.68     0            0              3           2                4         -1  -3   1 5           1      -2        5         1 1 1 1 0
     29Frame6:  B    6   3        0          0          0.3536   0            0              2           2                3         -2  -6   2             1      -3        5         0 1 1 1 0
     30Frame7:  B    5   4        0          0          0.68     0            0              3           2                4         -1  -5   1 3           1       1        4         1 1 1 1
     31Frame8:  B    7   4        0          0          0.68     0            0              3           2                4         -1  -3  -7 1           1      -2        5         1 1 1 1 0
    3232
    3333#=========== Motion Search =============
     
    4646RDOQ                          : 1           # RDOQ
    4747RDOQTS                        : 1           # RDOQ for transform skip
     48SliceChromaQPOffsetPeriodicity: 0           # Used in conjunction with Slice Cb/Cr QpOffsetIntraOrPeriodic. Use 0 (default) to disable periodic nature.
     49SliceCbQpOffsetIntraOrPeriodic: 0           # Chroma Cb QP Offset at slice level for I slice or for periodic inter slices as defined by SliceChromaQPOffsetPeriodicity. Replaces offset in the GOP table.
     50SliceCrQpOffsetIntraOrPeriodic: 0           # Chroma Cr QP Offset at slice level for I slice or for periodic inter slices as defined by SliceChromaQPOffsetPeriodicity. Replaces offset in the GOP table.
    4851
    4952#=========== Deblock Filter ============
    50 
    5153LoopFilterOffsetInPPS         : 1           # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1 (default) =constant params in PPS, param = base_param)
    5254LoopFilterDisable             : 0           # Disable deblocking filter (0=Filter, 1=No Filter)
  • branches/HTM-16.1-dev/cfg/HM/encoder_randomaccess_main_rext.cfg

    r1386 r1402  
    2222DecodingRefreshType           : 1           # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI
    2323GOPSize                       : 8           # GOP Size (number of B slice = GOPSize-1)
    24 #        Type POC QPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active #ref_pics reference pictures     predict deltaRPS #ref_idcs reference idcs
    25 Frame1:  B    8   1        0.442    0            0              0           2                3         -8 -12 -16             0
    26 Frame2:  B    4   2        0.3536   0            0              1           2                3         -4  -8   4             1       4        4         1 1 0 1
    27 Frame3:  B    2   3        0.3536   0            0              2           2                4         -2  -6   2 6           1       2        4         1 1 1 1
    28 Frame4:  B    1   4        0.68     0            0              3           2                4         -1   1   3 7           1       1        5         1 0 1 1 1
    29 Frame5:  B    3   4        0.68     0            0              3           2                4         -1  -3   1 5           1      -2        5         1 1 1 1 0
    30 Frame6:  B    6   3        0.3536   0            0              2           2                3         -2  -6   2             1      -3        5         0 1 1 1 0
    31 Frame7:  B    5   4        0.68     0            0              3           2                4         -1  -5   1 3           1       1        4         1 1 1 1
    32 Frame8:  B    7   4        0.68     0            0              3           2                4         -1  -3  -7 1           1      -2        5         1 1 1 1 0
     24#        Type POC QPoffset CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active #ref_pics reference pictures     predict deltaRPS #ref_idcs reference idcs
     25Frame1:  B    8   1        0          0          0.442    0            0              0           2                3         -8 -12 -16             0
     26Frame2:  B    4   2        0          0          0.3536   0            0              1           2                3         -4  -8   4             1       4        4         1 1 0 1
     27Frame3:  B    2   3        0          0          0.3536   0            0              2           2                4         -2  -6   2 6           1       2        4         1 1 1 1
     28Frame4:  B    1   4        0          0          0.68     0            0              3           2                4         -1   1   3 7           1       1        5         1 0 1 1 1
     29Frame5:  B    3   4        0          0          0.68     0            0              3           2                4         -1  -3   1 5           1      -2        5         1 1 1 1 0
     30Frame6:  B    6   3        0          0          0.3536   0            0              2           2                3         -2  -6   2             1      -3        5         0 1 1 1 0
     31Frame7:  B    5   4        0          0          0.68     0            0              3           2                4         -1  -5   1 3           1       1        4         1 1 1 1
     32Frame8:  B    7   4        0          0          0.68     0            0              3           2                4         -1  -3  -7 1           1      -2        5         1 1 1 1 0
    3333
    3434#=========== Motion Search =============
     
    4747RDOQ                          : 1           # RDOQ
    4848RDOQTS                        : 1           # RDOQ for transform skip
     49SliceChromaQPOffsetPeriodicity: 0           # Used in conjunction with Slice Cb/Cr QpOffsetIntraOrPeriodic. Use 0 (default) to disable periodic nature.
     50SliceCbQpOffsetIntraOrPeriodic: 0           # Chroma Cb QP Offset at slice level for I slice or for periodic inter slices as defined by SliceChromaQPOffsetPeriodicity. Replaces offset in the GOP table.
     51SliceCrQpOffsetIntraOrPeriodic: 0           # Chroma Cr QP Offset at slice level for I slice or for periodic inter slices as defined by SliceChromaQPOffsetPeriodicity. Replaces offset in the GOP table.
    4952
    5053#=========== Deblock Filter ============
  • branches/HTM-16.1-dev/cfg/HM/misc/encoder_lowdelay_main_field_coding.cfg

    r1313 r1402  
    4040GOPSize                       : 8           # GOP Size (number of B slice = GOPSize-1)
    4141
    42 #        Type POC QPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active #ref_pics reference pictures                               predict deltaRPS #ref_idcs reference idcs
    43 Frame1:  B    2   3        0.4624   0                    0                              0           8                8         -1 -2 -9 -10     -17 -18 -25 -26         0
    44 Frame2:  B    3   4        0.4624   0                    0                              0           8                9         -1 -2 -3 -10 -11 -18 -19 -26 -27     1           -1       9         1 1 1 1 1 1 1 1 1
    45 Frame3:  B    4   2        0.4624   0                    0                              0           8                8         -1 -2 -3 -4  -11 -12 -19 -20             1       -1       10        1 1 1 1 1 1 1 0 0 1         
    46 Frame4:  B    5   3        0.4624   0                    0                              0           8                9         -1 -2 -3 -4  -5  -12 -13 -20 -21         1       -1       9         1 1 1 1 1 1 1 1 1
    47 Frame5:  B    6   3        0.4624   0                    0                              0           8                8         -1 -2 -5 -6  -13 -14 -21 -22             1       -1           10            1 0 0 1 1 1 1 1 1 1
    48 Frame6:  B    7   4        0.4624   0                    0                              0           8                9         -1 -2 -3 -6  -7  -14 -15 -22 -23     1           -1       9         1 1 1 1 1 1 1 1 1
    49 Frame7:  B    8   1        0.578    0                    0                              0           8                8         -1 -2 -7 -8  -15 -16 -23 -24             1       -1       10        1 0 0 1 1 1 1 1 1 1           
    50 Frame8:  B    9   1        0.578    0                    0                              0           8                9         -1 -2 -3 -8  -9  -16 -17 -24 -25     1           -1       9         1 1 1 1 1 1 1 1 1
     42#        Type POC QPoffset CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active #ref_pics reference pictures                predict deltaRPS #ref_idcs reference idcs
     43Frame1:  B    2   3        0          0          0.4624   0            0              0           8                8         -1 -2 -9 -10       -17 -18 -25 -26        0
     44Frame2:  B    3   4        0          0          0.4624   0            0              0           8                9         -1 -2 -3 -10 -11 -18 -19 -26 -27    1      -1       9         1 1 1 1 1 1 1 1 1
     45Frame3:  B    4   2        0          0          0.4624   0            0              0           8                8         -1 -2 -3 -4  -11 -12 -19 -20        1      -1       10        1 1 1 1 1 1 1 0 0 1
     46Frame4:  B    5   3        0          0          0.4624   0            0              0           8                9         -1 -2 -3 -4  -5  -12 -13 -20 -21    1      -1       9         1 1 1 1 1 1 1 1 1
     47Frame5:  B    6   3        0          0          0.4624   0            0              0           8                8         -1 -2 -5 -6  -13 -14 -21 -22        1      -1       10        1 0 0 1 1 1 1 1 1 1
     48Frame6:  B    7   4        0          0          0.4624   0            0              0           8                9         -1 -2 -3 -6  -7  -14 -15 -22 -23    1      -1       9         1 1 1 1 1 1 1 1 1
     49Frame7:  B    8   1        0          0          0.578    0            0              0           8                8         -1 -2 -7 -8  -15 -16 -23 -24        1      -1       10        1 0 0 1 1 1 1 1 1 1
     50Frame8:  B    9   1        0          0          0.578    0            0              0           8                9         -1 -2 -3 -8  -9  -16 -17 -24 -25    1      -1       9         1 1 1 1 1 1 1 1 1
    5151
    5252#=========== Motion Search =============
     
    6565RDOQ                          : 1           # RDOQ
    6666RDOQTS                        : 1           # RDOQ for transform skip
     67SliceChromaQPOffsetPeriodicity: 0           # Used in conjunction with Slice Cb/Cr QpOffsetIntraOrPeriodic. Use 0 (default) to disable periodic nature.
     68SliceCbQpOffsetIntraOrPeriodic: 0           # Chroma Cb QP Offset at slice level for I slice or for periodic inter slices as defined by SliceChromaQPOffsetPeriodicity. Replaces offset in the GOP table.
     69SliceCrQpOffsetIntraOrPeriodic: 0           # Chroma Cr QP Offset at slice level for I slice or for periodic inter slices as defined by SliceChromaQPOffsetPeriodicity. Replaces offset in the GOP table.
    6770
    6871#=========== Deblock Filter ============
    69 
    70 LoopFilterOffsetInPPS         : 1           # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1 =constant params in PPS, param = base_param)
     72LoopFilterOffsetInPPS         : 1           # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1=constant params in PPS, param = base_param)
    7173LoopFilterDisable             : 0           # Disable deblocking filter (0=Filter, 1=No Filter)
    7274LoopFilterBetaOffset_div2     : 0           # base_param: -6 ~ 6
  • branches/HTM-16.1-dev/cfg/HM/misc/encoder_randomaccess_main_2tids.cfg

    r1313 r1402  
    2121DecodingRefreshType           : 1           # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI
    2222GOPSize                       : 8           # GOP Size (number of B slice = GOPSize-1)
    23 #        Type POC QPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active #ref_pics reference pictures     predict deltaRPS #ref_idcs reference idcs
    24 Frame1:  B    8   1        0.442    0            0              0           4                4         -8 -10 -12 -16         0
    25 Frame2:  B    4   2        0.3536   0            0              0           2                3         -4 -6  4               1       4        5         1 1 0 0 1
    26 Frame3:  B    2   3        0.3536   0            0              0           2                4         -2 -4  2 6             1       2        4         1 1 1 1 
    27 Frame4:  B    1   4        0.68     0            0              1           2                4         -1  1  3 7             1       1        5         1 0 1 1 1
    28 Frame5:  B    3   4        0.68     0            0              1           2                4         -1 -3  1 5             1      -2        5         1 1 1 1 0
    29 Frame6:  B    6   3        0.3536   0            0              0           2                4         -2 -4 -6 2             1      -3        5         1 1 1 1 0
    30 Frame7:  B    5   4        0.68     0            0              1           2                4         -1 -5  1 3             1       1        5         1 0 1 1 1 
    31 Frame8:  B    7   4        0.68     0            0              1           2                4         -1 -3 -7 1             1      -2        5         1 1 1 1 0
     23#        Type POC QPoffset CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active #ref_pics reference pictures     predict deltaRPS #ref_idcs reference idcs
     24Frame1:  B    8   1        0          0          0.442    0            0              0           4                4         -8 -10 -12 -16         0
     25Frame2:  B    4   2        0          0          0.3536   0            0              0           2                3         -4 -6  4               1       4        5         1 1 0 0 1
     26Frame3:  B    2   3        0          0          0.3536   0            0              0           2                4         -2 -4  2 6             1       2        4         1 1 1 1 
     27Frame4:  B    1   4        0          0          0.68     0            0              1           2                4         -1  1  3 7             1       1        5         1 0 1 1 1
     28Frame5:  B    3   4        0          0          0.68     0            0              1           2                4         -1 -3  1 5             1      -2        5         1 1 1 1 0
     29Frame6:  B    6   3        0          0          0.3536   0            0              0           2                4         -2 -4 -6 2             1      -3        5         1 1 1 1 0
     30Frame7:  B    5   4        0          0          0.68     0            0              1           2                4         -1 -5  1 3             1       1        5         1 0 1 1 1 
     31Frame8:  B    7   4        0          0          0.68     0            0              1           2                4         -1 -3 -7 1             1      -2        5         1 1 1 1 0
    3232
    3333#=========== Motion Search =============
     
    4646RDOQ                          : 1           # RDOQ
    4747RDOQTS                        : 1           # RDOQ for transform skip
     48SliceChromaQPOffsetPeriodicity: 0           # Used in conjunction with Slice Cb/Cr QpOffsetIntraOrPeriodic. Use 0 (default) to disable periodic nature.
     49SliceCbQpOffsetIntraOrPeriodic: 0           # Chroma Cb QP Offset at slice level for I slice or for periodic inter slices as defined by SliceChromaQPOffsetPeriodicity. Replaces offset in the GOP table.
     50SliceCrQpOffsetIntraOrPeriodic: 0           # Chroma Cr QP Offset at slice level for I slice or for periodic inter slices as defined by SliceChromaQPOffsetPeriodicity. Replaces offset in the GOP table.
    4851
    4952#=========== Deblock Filter ============
    50 
    51 LoopFilterOffsetInPPS         : 1           # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1  =constant params in PPS, param = base_param)
     53LoopFilterOffsetInPPS         : 1           # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1=constant params in PPS, param = base_param)
    5254LoopFilterDisable             : 0           # Disable deblocking filter (0=Filter, 1=No Filter)
    5355LoopFilterBetaOffset_div2     : 0           # base_param: -6 ~ 6
  • branches/HTM-16.1-dev/cfg/HM/misc/encoder_randomaccess_main_field_coding.cfg

    r1313 r1402  
    4141
    4242# field coding GOP: Exchanged coding order of 16th and 17th field for more efficient encoding
    43 #                    When EfficientFieldIRAPEnabled=1 is enabled, this has no additional effect
     43#                   When EfficientFieldIRAPEnabled=1 is enabled, this has no additional effect
    4444
    45 #        Type POC QPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active #ref_pics  reference pictures   predict deltaRPS #ref_idcs reference idcs
     45#        Type POC QPoffset CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active #ref_pics  reference pictures   predict deltaRPS #ref_idcs reference idcs
    4646             
    47 Frame1:  B    17  1        0.442    0                    0                              0           4                4         -16 -17 -20 -21        0
    48 Frame2:  B    16  1        0.442    0                    0                              0           3                3         -15 -16 1              1       1        5         1 1 0 0 1
    49 Frame3:  B    8   2        0.3536   0                    0                              0           2                4         -7 -8 8 9              1       8        4         1 1 1 1
    50 Frame4:  B    9   2        0.3536   0                    0                              0           2                5         -1 -8 -9 7 8           1      -1        5         1 1 1 1 1
    51 Frame5:  B    4   3        0.3536   0                    0                              0           2                6         -3 -4 4 5 12 13        1       5        6         1 1 1 1 1 1
    52 Frame6:  B    5   3        0.3536   0                    0                              0           2                7         -1 -4 -5 3 4 11 12     1      -1        7         1 1 1 1 1 1 1
    53 Frame7:  B    2   3        0.3536   0                    0                              0           2                8         -1 -2 2 3 6 7 14 15    1       3        8         1 1 1 1 1 1 1 1 
    54 Frame8:  B    3   4        0.68     0                    0                              0           2                8         -1 -2 1 2 5 6 13 14    1      -1        9         1 0 1 1 1 1 1 1 1
    55 Frame9:  B    6   3        0.3536   0                    0                              0           2                6         -1 -2 2 3 10 11        1      -3        9         0 0 1 1 1 1 1 1 0
    56 Frame10: B    7   4        0.68     0                    0                              0           2                7         -1 -2 -3 1 2 9 10      1      -1        7         1 1 1 1 1 1 1
    57 Frame11: B    12  3        0.3536   0                    0                              0           2                4         -3 -4 4 5              1      -5        8         0 0 0 1 1 1 1 0
    58 Frame12: B    13  3        0.3536   0                    0                              0           2                5         -1 -4 -5 3 4           1      -1        5         1 1 1 1 1
    59 Frame13: B    10  3        0.3536   0                    0                              0           2                6         -1 -2 2 3 6 7          1       3        6         1 1 1 1 1 1
    60 Frame14: B    11  4        0.68     0                    0                              0           2                7         -1 -2 -3 1 2 5 6       1      -1        7         1 1 1 1 1 1 1
    61 Frame15: B    14  3        0.3536   0                    0                              0           2                5         -1 -2 -5 2 3           1      -3        8         0 1 0 1 1 1 1 0
    62 Frame16: B    15  4        0.68     0                    0                              0           2                6         -1 -2 -3 -6 1 2        1      -1        6         1 1 1 1 1 1
     47Frame1:  B    17  1        0          0          0.442    0            0              0           4                4         -16 -17 -20 -21        0
     48Frame2:  B    16  1        0          0          0.442    0            0              0           3                3         -15 -16 1              1       1        5         1 1 0 0 1
     49Frame3:  B    8   2        0          0          0.3536   0            0              0           2                4         -7 -8 8 9              1       8        4         1 1 1 1
     50Frame4:  B    9   2        0          0          0.3536   0            0              0           2                5         -1 -8 -9 7 8           1      -1        5         1 1 1 1 1
     51Frame5:  B    4   3        0          0          0.3536   0            0              0           2                6         -3 -4 4 5 12 13        1       5        6         1 1 1 1 1 1
     52Frame6:  B    5   3        0          0          0.3536   0            0              0           2                7         -1 -4 -5 3 4 11 12     1      -1        7         1 1 1 1 1 1 1
     53Frame7:  B    2   3        0          0          0.3536   0            0              0           2                8         -1 -2 2 3 6 7 14 15    1       3        8         1 1 1 1 1 1 1 1 
     54Frame8:  B    3   4        0          0          0.68     0            0              0           2                8         -1 -2 1 2 5 6 13 14    1      -1        9         1 0 1 1 1 1 1 1 1
     55Frame9:  B    6   3        0          0          0.3536   0            0              0           2                6         -1 -2 2 3 10 11        1      -3        9         0 0 1 1 1 1 1 1 0
     56Frame10: B    7   4        0          0          0.68     0            0              0           2                7         -1 -2 -3 1 2 9 10      1      -1        7         1 1 1 1 1 1 1
     57Frame11: B    12  3        0          0          0.3536   0            0              0           2                4         -3 -4 4 5              1      -5        8         0 0 0 1 1 1 1 0
     58Frame12: B    13  3        0          0          0.3536   0            0              0           2                5         -1 -4 -5 3 4           1      -1        5         1 1 1 1 1
     59Frame13: B    10  3        0          0          0.3536   0            0              0           2                6         -1 -2 2 3 6 7          1       3        6         1 1 1 1 1 1
     60Frame14: B    11  4        0          0          0.68     0            0              0           2                7         -1 -2 -3 1 2 5 6       1      -1        7         1 1 1 1 1 1 1
     61Frame15: B    14  3        0          0          0.3536   0            0              0           2                5         -1 -2 -5 2 3           1      -3        8         0 1 0 1 1 1 1 0
     62Frame16: B    15  4        0          0          0.68     0            0              0           2                6         -1 -2 -3 -6 1 2        1      -1        6         1 1 1 1 1 1
    6363
    6464#=========== Motion Search =============
     
    7777RDOQ                          : 1           # RDOQ
    7878RDOQTS                        : 1           # RDOQ for transform skip
     79SliceChromaQPOffsetPeriodicity: 0           # Used in conjunction with Slice Cb/Cr QpOffsetIntraOrPeriodic. Use 0 (default) to disable periodic nature.
     80SliceCbQpOffsetIntraOrPeriodic: 0           # Chroma Cb QP Offset at slice level for I slice or for periodic inter slices as defined by SliceChromaQPOffsetPeriodicity. Replaces offset in the GOP table.
     81SliceCrQpOffsetIntraOrPeriodic: 0           # Chroma Cr QP Offset at slice level for I slice or for periodic inter slices as defined by SliceChromaQPOffsetPeriodicity. Replaces offset in the GOP table.
    7982
    8083#=========== Deblock Filter ============
    81 
    82 LoopFilterOffsetInPPS         : 1           # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1  =constant params in PPS, param = base_param)
     84LoopFilterOffsetInPPS         : 1           # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1=constant params in PPS, param = base_param)
    8385LoopFilterDisable             : 0           # Disable deblocking filter (0=Filter, 1=No Filter)
    8486LoopFilterBetaOffset_div2     : 0           # base_param: -6 ~ 6
  • branches/HTM-16.1-dev/cfg/HM/misc/encoder_randomaccess_main_field_coding_simple_GOP.cfg

    r1313 r1402  
    4040GOPSize                       : 16          # GOP Size (number of B slice = GOPSize-1)
    4141
    42 #  simple field coding GOP: When EfficientFieldIRAPEnabled=1 is enabled, the order of frames 16 and 17 is exchanged
     42# simple field coding GOP: When EfficientFieldIRAPEnabled=1 is enabled, the order of frames 16 and 17 is exchanged
    4343
    44 #        Type POC QPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active #ref_pics  reference pictures   predict deltaRPS #ref_idcs reference idcs
     44#        Type POC QPoffset CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active #ref_pics  reference pictures   predict deltaRPS #ref_idcs reference idcs
    4545             
    46 Frame1:  B    16  1        0.442    0            0              0           8                8         -15 -16 -19 -20 -23 -24 -31 -32        0
    47 Frame2:  B    17  1        0.442    0            0              0           4                9         -1  -16 -17 -20 -21 -24 -25 -32 -33    1      -1        9         1 1 1 1 1 1 1 1 1
    48 Frame3:  B    8   2        0.3536   0            0              0           4                6         -7  -8  -11 -12  8   9                 1       9        10        1 1 1 1 1 0 0 0 0 1
    49 Frame4:  B    9   3        0.3536   0            0              0           4                7         -1  -8  -9  -12 -13  7   8             1      -1        7         1 1 1 1 1 1 1
    50 Frame5:  B    4   3        0.3536   0            0              0           4                8         -3  -4  -7  -8   4   5   12  13        1       5        8         1 1 1 1 1 1 1 1
    51 Frame6:  B    5   4        0.68     0            0              0           4                9         -1  -4  -5  -8  -9   3   4   11  12    1      -1        9         1 1 1 1 1 1 1 1 1
    52 Frame7:  B    2   3        0.3536   0            0              0           4                8         -1  -2   2   3   6   7   14  15        1       3        10        1 1 1 0 0 1 1 1 1 1 
    53 Frame8:  B    3   4        0.68     0            0              0           4                9         -1  -2  -3   1   2   5   6   13  14    1      -1        9         1 1 1 1 1 1 1 1 1
    54 Frame9:  B    6   3        0.3536   0            0              0           4                8         -1  -2  -5  -6   2   3   10  11        1      -3        10        0 1 1 1 1 1 1 1 1 0
    55 Frame10: B    7   4        0.68     0            0              0           4                9         -1  -2  -3  -6  -7   1   2   9   10    1      -1        9         1 1 1 1 1 1 1 1 1
    56 Frame11: B    12  3        0.3536   0            0              0           4                8         -3  -4  -7  -8  -11 -12  4   5         1      -5        10        0 1 1 1 1 1 1 1 1 0
    57 Frame12: B    13  4        0.68     0            0              0           4                9         -1  -4  -5  -8  -9  -12 -13  3   4     1      -1        9         1 1 1 1 1 1 1 1 1
    58 Frame13: B    10  3        0.3536   0            0              0           4                8         -1  -2  -9  -10  2   3   6   7         1       3        10        1 1 1 0 0 1 1 1 1 1
    59 Frame14: B    11  4        0.68     0            0              0           4                9         -1  -2  -3  -10 -11  1   2   5   6     1      -1        9         1 1 1 1 1 1 1 1 1
    60 Frame15: B    14  3        0.3536   0            0              0           4                8         -1  -2  -5  -6  -13 -14  2   3         1      -3        10        0 1 1 1 1 1 1 1 1 0
    61 Frame16: B    15  4        0.68     0            0              0           4                9         -1  -2  -3  -6  -7  -14 -15  1   2     1      -1        9         1 1 1 1 1 1 1 1 1 
     46Frame1:  B    16  1        0          0          0.442    0            0              0           8                8         -15 -16 -19 -20 -23 -24 -31 -32        0
     47Frame2:  B    17  1        0          0          0.442    0            0              0           4                9         -1  -16 -17 -20 -21 -24 -25 -32 -33    1      -1        9         1 1 1 1 1 1 1 1 1
     48Frame3:  B    8   2        0          0          0.3536   0            0              0           4                6         -7  -8  -11 -12  8   9                 1       9        10        1 1 1 1 1 0 0 0 0 1
     49Frame4:  B    9   3        0          0          0.3536   0            0              0           4                7         -1  -8  -9  -12 -13  7   8             1      -1        7         1 1 1 1 1 1 1
     50Frame5:  B    4   3        0          0          0.3536   0            0              0           4                8         -3  -4  -7  -8   4   5   12  13        1       5        8         1 1 1 1 1 1 1 1
     51Frame6:  B    5   4        0          0          0.68     0            0              0           4                9         -1  -4  -5  -8  -9   3   4   11  12    1      -1        9         1 1 1 1 1 1 1 1 1
     52Frame7:  B    2   3        0          0          0.3536   0            0              0           4                8         -1  -2   2   3   6   7   14  15        1       3        10        1 1 1 0 0 1 1 1 1 1 
     53Frame8:  B    3   4        0          0          0.68     0            0              0           4                9         -1  -2  -3   1   2   5   6   13  14    1      -1        9         1 1 1 1 1 1 1 1 1
     54Frame9:  B    6   3        0          0          0.3536   0            0              0           4                8         -1  -2  -5  -6   2   3   10  11        1      -3        10        0 1 1 1 1 1 1 1 1 0
     55Frame10: B    7   4        0          0          0.68     0            0              0           4                9         -1  -2  -3  -6  -7   1   2   9   10    1      -1        9         1 1 1 1 1 1 1 1 1
     56Frame11: B    12  3        0          0          0.3536   0            0              0           4                8         -3  -4  -7  -8  -11 -12  4   5         1      -5        10        0 1 1 1 1 1 1 1 1 0
     57Frame12: B    13  4        0          0          0.68     0            0              0           4                9         -1  -4  -5  -8  -9  -12 -13  3   4     1      -1        9         1 1 1 1 1 1 1 1 1
     58Frame13: B    10  3        0          0          0.3536   0            0              0           4                8         -1  -2  -9  -10  2   3   6   7         1       3        10        1 1 1 0 0 1 1 1 1 1
     59Frame14: B    11  4        0          0          0.68     0            0              0           4                9         -1  -2  -3  -10 -11  1   2   5   6     1      -1        9         1 1 1 1 1 1 1 1 1
     60Frame15: B    14  3        0          0          0.3536   0            0              0           4                8         -1  -2  -5  -6  -13 -14  2   3         1      -3        10        0 1 1 1 1 1 1 1 1 0
     61Frame16: B    15  4        0          0          0.68     0            0              0           4                9         -1  -2  -3  -6  -7  -14 -15  1   2     1      -1        9         1 1 1 1 1 1 1 1 1 
    6262
    6363#=========== Motion Search =============
     
    7676RDOQ                          : 1           # RDOQ
    7777RDOQTS                        : 1           # RDOQ for transform skip
     78SliceChromaQPOffsetPeriodicity: 0           # Used in conjunction with Slice Cb/Cr QpOffsetIntraOrPeriodic. Use 0 (default) to disable periodic nature.
     79SliceCbQpOffsetIntraOrPeriodic: 0           # Chroma Cb QP Offset at slice level for I slice or for periodic inter slices as defined by SliceChromaQPOffsetPeriodicity. Replaces offset in the GOP table.
     80SliceCrQpOffsetIntraOrPeriodic: 0           # Chroma Cr QP Offset at slice level for I slice or for periodic inter slices as defined by SliceChromaQPOffsetPeriodicity. Replaces offset in the GOP table.
    7881
    7982#=========== Deblock Filter ============
    80 
    81 LoopFilterOffsetInPPS         : 1           # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1  =constant params in PPS, param = base_param)
     83LoopFilterOffsetInPPS         : 1           # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1=constant params in PPS, param = base_param)
    8284LoopFilterDisable             : 0           # Disable deblocking filter (0=Filter, 1=No Filter)
    8385LoopFilterBetaOffset_div2     : 0           # base_param: -6 ~ 6
  • branches/HTM-16.1-dev/source/App/TAppEncoder/TAppEncCfg.cpp

    r1401 r1402  
    239239  in>>entry.m_POC;
    240240  in>>entry.m_QPOffset;
     241#if W0038_CQP_ADJ
     242  in>>entry.m_CbQPoffset;
     243  in>>entry.m_CrQPoffset;
     244#endif
    241245  in>>entry.m_QPFactor;
    242246  in>>entry.m_tcOffsetDiv2;
     
    769773  const Int defaultPrimaryCodes[6]     = { 0,50000, 0,0, 50000,0 };
    770774  const Int defaultWhitePointCode[2]   = { 16667, 16667 };
    771   SMultiValueInput<Int>  cfg_DisplayPrimariesCode            (0, 50000, 3, 3, defaultPrimaryCodes,   sizeof(defaultPrimaryCodes  )/sizeof(Int));
     775  SMultiValueInput<Int>  cfg_DisplayPrimariesCode            (0, 50000, 6, 6, defaultPrimaryCodes,   sizeof(defaultPrimaryCodes  )/sizeof(Int));
    772776  SMultiValueInput<Int>  cfg_DisplayWhitePointCode           (0, 50000, 2, 2, defaultWhitePointCode, sizeof(defaultWhitePointCode)/sizeof(Int));
    773777
     
    877881  ("FrameRate,-fr",                                   m_iFrameRate,                                         0, "Frame rate")
    878882  ("FrameSkip,-fs",                                   m_FrameSkip,                                         0u, "Number of frames to skip at start of input YUV")
     883  ("TemporalSubsampleRatio,-ts",                      m_temporalSubsampleRatio,                            1u, "Temporal sub-sample ratio when reading input YUV")
    879884  ("FramesToBeEncoded,f",                             m_framesToBeEncoded,                                  0, "Number of frames to be encoded (default=all)")
    880885  ("ClipInputVideoToRec709Range",                     m_bClipInputVideoToRec709Range,                   false, "If true then clip input video to the Rec. 709 Range on loading when InternalBitDepth is less than MSBExtendedBitDepth")
     
    950955
    951956  ("HadamardME",                                      m_bUseHADME,                                       true, "Hadamard ME for fractional-pel")
    952   ("ASR",                                             m_bUseASR,                                        false, "Adaptive motion search range")
     957  ("ASR",                                             m_bUseASR,                                        false, "Adaptive motion search range");
     958  opts.addOptions()
    953959
    954960  // Mode decision parameters
     
    978984  ("CrQpOffset,-crqpofs",                             m_crQpOffset,                                         0, "Chroma Cr QP Offset")
    979985
     986#if W0038_CQP_ADJ
     987  ("SliceChromaQPOffsetPeriodicity",                  m_sliceChromaQpOffsetPeriodicity,                    0u, "Used in conjunction with Slice Cb/Cr QpOffsetIntraOrPeriodic. Use 0 (default) to disable periodic nature.")
     988  ("SliceCbQpOffsetIntraOrPeriodic",                  m_sliceChromaQpOffsetIntraOrPeriodic[0],              0, "Chroma Cb QP Offset at slice level for I slice or for periodic inter slices as defined by SliceChromaQPOffsetPeriodicity. Replaces offset in the GOP table.")
     989  ("SliceCrQpOffsetIntraOrPeriodic",                  m_sliceChromaQpOffsetIntraOrPeriodic[1],              0, "Chroma Cr QP Offset at slice level for I slice or for periodic inter slices as defined by SliceChromaQPOffsetPeriodicity. Replaces offset in the GOP table.")
     990#endif
    980991#if ADAPTIVE_QP_SELECTION
    981992  ("AdaptiveQpSelection,-aqps",                       m_bUseAdaptQpSelect,                              false, "AdaptiveQpSelection")
     
    10011012  ("LoopFilterBetaOffset_div2",                       m_loopFilterBetaOffsetDiv2,                           0)
    10021013  ("LoopFilterTcOffset_div2",                         m_loopFilterTcOffsetDiv2,                             0)
     1014#if W0038_DB_OPT
     1015  ("DeblockingFilterMetric",                          m_deblockingFilterMetric,                             0)
     1016#else
    10031017  ("DeblockingFilterMetric",                          m_DeblockingFilterMetric,                         false)
    1004 
     1018#endif
    10051019  // Coding tools
    10061020  ("AMP",                                             m_enableAMP,                                       true, "Enable asymmetric motion partitions")
     
    10281042  ("MaxNumOffsetsPerPic",                             m_maxNumOffsetsPerPic,                             2048, "Max number of SAO offset per picture (Default: 2048)")
    10291043  ("SAOLcuBoundary",                                  m_saoCtuBoundary,                                 false, "0: right/bottom CTU boundary areas skipped from SAO parameter estimation, 1: non-deblocked pixels are used for those areas")
     1044#if OPTIONAL_RESET_SAO_ENCODING_AFTER_IRAP
     1045  ("SAOResetEncoderStateAfterIRAP",                   m_saoResetEncoderStateAfterIRAP,                  false, "When true, resets the encoder's SAO state after an IRAP (POC order). Disabled by default.")
     1046#endif
    10301047  ("SliceMode",                                       tmpSliceMode,                            Int(NO_SLICES), "0: Disable all Recon slice limits, 1: Enforce max # of CTUs, 2: Enforce max # of bytes, 3:specify tiles per dependent slice")
    10311048  ("SliceArgument",                                   m_sliceArgument,                                      0, "Depending on SliceMode being:"
     
    11381155  ("RecalculateQPAccordingToLambda",                  m_recalculateQPAccordingToLambda,                 false, "Recalculate QP values according to lambda values. Do not suggest to be enabled in all intra case")
    11391156  ("StrongIntraSmoothing,-sis",                       m_useStrongIntraSmoothing,                         true, "Enable strong intra smoothing for 32x32 blocks")
    1140   ("SEIActiveParameterSets",                          m_activeParameterSetsSEIEnabled,                      0, "Enable generation of active parameter sets SEI messages")
     1157  ("SEIActiveParameterSets",                          m_activeParameterSetsSEIEnabled,                      0, "Enable generation of active parameter sets SEI messages");
     1158  opts.addOptions()
    11411159  ("VuiParametersPresent,-vui",                       m_vuiParametersPresentFlag,                       false, "Enable generation of vui_parameters()")
    11421160  ("AspectRatioInfoPresent",                          m_aspectRatioInfoPresentFlag,                     false, "Signals whether aspect_ratio_idc is present")
     
    11711189  ("MaxBitsPerMinCuDenom",                            m_maxBitsPerMinCuDenom,                               1, "Indicates an upper bound for the number of bits of coding_unit() data")
    11721190  ("Log2MaxMvLengthHorizontal",                       m_log2MaxMvLengthHorizontal,                         15, "Indicate the maximum absolute value of a decoded horizontal MV component in quarter-pel luma units")
    1173   ("Log2MaxMvLengthVertical",                         m_log2MaxMvLengthVertical,                           15, "Indicate the maximum absolute value of a decoded vertical MV component in quarter-pel luma units")
     1191  ("Log2MaxMvLengthVertical",                         m_log2MaxMvLengthVertical,                           15, "Indicate the maximum absolute value of a decoded vertical MV component in quarter-pel luma units");
     1192  opts.addOptions()
    11741193  ("SEIColourRemappingInfoFileRoot,-cri",             m_colourRemapSEIFileRoot,                    string(""), "Colour Remapping Information SEI parameters root file name (wo num ext)")
    11751194  ("SEIRecoveryPoint",                                m_recoveryPointSEIEnabled,                        false, "Control generation of recovery point SEI messages")
     
    12771296  ("SEIMasteringDisplayPrimaries",                    cfg_DisplayPrimariesCode,       cfg_DisplayPrimariesCode, "Mastering display primaries for all three colour planes in CIE xy coordinates in increments of 1/50000 (results in the ranges 0 to 50000 inclusive)")
    12781297  ("SEIMasteringDisplayWhitePoint",                   cfg_DisplayWhitePointCode,     cfg_DisplayWhitePointCode, "Mastering display white point CIE xy coordinates in normalised increments of 1/50000 (e.g. 0.333 = 16667)")
     1298#if U0033_ALTERNATIVE_TRANSFER_CHARACTERISTICS_SEI
     1299  ("SEIPreferredTransferCharacterisics",              m_preferredTransferCharacteristics,                   -1, "Value for the preferred_transfer_characteristics field of the Alternative transfer characteristics SEI which will override the corresponding entry in the VUI. If negative, do not produce the respective SEI message")
     1300#endif
    12791301#if NH_MV
    12801302  ("SeiCfgFileName_%d",                               m_seiCfgFileNames,             (TChar *) 0 ,MAX_NUM_SEIS , "SEI cfg file name %d")
     
    14161438   * Set any derived parameters
    14171439   */
     1440
     1441  m_framesToBeEncoded = ( m_framesToBeEncoded + m_temporalSubsampleRatio - 1 ) / m_temporalSubsampleRatio;
    14181442  m_adIntraLambdaModifier = cfg_adIntraLambdaModifier.values;
    14191443  if(m_isField)
     
    22592283  xConfirmPara( m_InputChromaFormatIDC >= NUM_CHROMA_FORMAT,                                "InputChromaFormatIDC must be either 400, 420, 422 or 444" );
    22602284  xConfirmPara( m_iFrameRate <= 0,                                                          "Frame rate must be more than 1" );
     2285  xConfirmPara( m_temporalSubsampleRatio < 1,                                               "Temporal subsample rate must be no less than 1" );
    22612286  xConfirmPara( m_framesToBeEncoded <= 0,                                                   "Total Number Of Frames encoded must be more than 0" );
    22622287#if NH_MV
     
    25072532  {
    25082533    xConfirmPara( m_iQP[layer] <  -6 * (m_internalBitDepth[CHANNEL_TYPE_LUMA] - 8) || m_iQP[layer] > 51,      "QP exceeds supported range (-QpBDOffsety to 51)" );
    2509     xConfirmPara( m_DeblockingFilterMetric && (m_bLoopFilterDisable[layer] || m_loopFilterOffsetInPPS), "If DeblockingFilterMetric is true then both LoopFilterDisable and LoopFilterOffsetInPPS must be 0");
     2534    xConfirmPara( m_deblockingFilterMetric!=0 && (m_bLoopFilterDisable[layer] || m_loopFilterOffsetInPPS), "If DeblockingFilterMetric is true then both LoopFilterDisable and LoopFilterOffsetInPPS must be 0");
    25102535  }
    25112536#else
    25122537  xConfirmPara( m_iQP <  -6 * (m_internalBitDepth[CHANNEL_TYPE_LUMA] - 8) || m_iQP > 51,    "QP exceeds supported range (-QpBDOffsety to 51)" );
     2538#if W0038_DB_OPT
     2539  xConfirmPara( m_deblockingFilterMetric!=0 && (m_bLoopFilterDisable || m_loopFilterOffsetInPPS), "If DeblockingFilterMetric is non-zero then both LoopFilterDisable and LoopFilterOffsetInPPS must be 0");
     2540#else
    25132541  xConfirmPara( m_DeblockingFilterMetric && (m_bLoopFilterDisable || m_loopFilterOffsetInPPS), "If DeblockingFilterMetric is true then both LoopFilterDisable and LoopFilterOffsetInPPS must be 0");
     2542#endif
    25142543#endif
    25152544 
     
    25372566    {
    25382567      xConfirmPara( m_iIntraPeriod[i] > 0 && m_iIntraPeriod[i] <= m_iGOPSize ,                      "Intra period must be larger than GOP size for periodic IDR pictures");
     2568#if OPTIONAL_RESET_SAO_ENCODING_AFTER_IRAP
     2569  if (m_saoResetEncoderStateAfterIRAP)
     2570  {
     2571    xConfirmPara( m_iIntraPeriod[i] > 0 && m_iIntraPeriod[i] <= m_iGOPSize ,                      "Intra period must be larger than GOP size when SAOResetEncoderStateAfterIRAP is enabled");
     2572  }
     2573#endif
     2574
    25392575    }
    25402576#else
    2541     xConfirmPara( m_iIntraPeriod > 0 && m_iIntraPeriod <= m_iGOPSize ,                      "Intra period must be larger than GOP size for periodic IDR pictures");
     2577#if OPTIONAL_RESET_SAO_ENCODING_AFTER_IRAP
     2578  if (m_saoResetEncoderStateAfterIRAP)
     2579  {
     2580    xConfirmPara( m_iIntraPeriod > 0 && m_iIntraPeriod <= m_iGOPSize ,                      "Intra period must be larger than GOP size when SAOResetEncoderStateAfterIRAP is enabled");
     2581  }
     2582#endif
     2583
     2584   xConfirmPara( m_iIntraPeriod > 0 && m_iIntraPeriod <= m_iGOPSize ,                      "Intra period must be larger than GOP size for periodic IDR pictures");
    25422585#endif
    25432586  }
     
    28762919    }
    28772920  }
     2921
     2922#if W0038_CQP_ADJ
     2923  for(Int i=0; i<m_iGOPSize; i++)
     2924  {
     2925    xConfirmPara( abs(m_GOPList[i].m_CbQPoffset               ) > 12, "Cb QP Offset for one of the GOP entries exceeds supported range (-12 to 12)" );
     2926    xConfirmPara( abs(m_GOPList[i].m_CbQPoffset + m_cbQpOffset) > 12, "Cb QP Offset for one of the GOP entries, when combined with the PPS Cb offset, exceeds supported range (-12 to 12)" );
     2927    xConfirmPara( abs(m_GOPList[i].m_CrQPoffset               ) > 12, "Cr QP Offset for one of the GOP entries exceeds supported range (-12 to 12)" );
     2928    xConfirmPara( abs(m_GOPList[i].m_CrQPoffset + m_crQpOffset) > 12, "Cr QP Offset for one of the GOP entries, when combined with the PPS Cr offset, exceeds supported range (-12 to 12)" );
     2929  }
     2930  xConfirmPara( abs(m_sliceChromaQpOffsetIntraOrPeriodic[0]                 > 12), "Intra/periodic Cb QP Offset exceeds supported range (-12 to 12)" );
     2931  xConfirmPara( abs(m_sliceChromaQpOffsetIntraOrPeriodic[0]  + m_cbQpOffset > 12), "Intra/periodic Cb QP Offset, when combined with the PPS Cb offset, exceeds supported range (-12 to 12)" );
     2932  xConfirmPara( abs(m_sliceChromaQpOffsetIntraOrPeriodic[1]                 > 12), "Intra/periodic Cr QP Offset exceeds supported range (-12 to 12)" );
     2933  xConfirmPara( abs(m_sliceChromaQpOffsetIntraOrPeriodic[1]  + m_crQpOffset > 12), "Intra/periodic Cr QP Offset, when combined with the PPS Cr offset, exceeds supported range (-12 to 12)" );
     2934#endif
    28782935
    28792936  m_extraRPSs=0;
     
    33423399  }
    33433400
     3401#if U0033_ALTERNATIVE_TRANSFER_CHARACTERISTICS_SEI
     3402  xConfirmPara(m_preferredTransferCharacteristics > 255, "transfer_characteristics_idc should not be greater than 255.");
     3403#endif
     3404
    33443405#undef xConfirmPara
    33453406  if (check_failed)
     
    34083469#endif
    34093470
    3410   printf("Real     Format                   : %dx%d %dHz\n", m_iSourceWidth - m_confWinLeft - m_confWinRight, m_iSourceHeight - m_confWinTop - m_confWinBottom, m_iFrameRate );
    3411   printf("Internal Format                   : %dx%d %dHz\n", m_iSourceWidth, m_iSourceHeight, m_iFrameRate );
     3471  printf("Real     Format                        : %dx%d %gHz\n", m_iSourceWidth - m_confWinLeft - m_confWinRight, m_iSourceHeight - m_confWinTop - m_confWinBottom, (Double)m_iFrameRate/m_temporalSubsampleRatio );
     3472  printf("Internal Format                        : %dx%d %gHz\n", m_iSourceWidth, m_iSourceHeight, (Double)m_iFrameRate/m_temporalSubsampleRatio );
    34123473  printf("Sequence PSNR output              : %s\n", (m_printMSEBasedSequencePSNR ? "Linear average, MSE-based" : "Linear average only") );
    34133474  printf("Sequence MSE output               : %s\n", (m_printSequenceMSE ? "Enabled" : "Disabled") );
  • branches/HTM-16.1-dev/source/App/TAppEncoder/TAppEncCfg.h

    r1401 r1402  
    144144  Int       m_iFrameRate;                                     ///< source frame-rates (Hz)
    145145  UInt      m_FrameSkip;                                   ///< number of skipped frames from the beginning
     146  UInt      m_temporalSubsampleRatio;                         ///< temporal subsample ratio, 2 means code every two frames
    146147  Int       m_iSourceWidth;                                   ///< source width in pixel
    147148  Int       m_iSourceHeight;                                  ///< source height in pixel (when interlaced = field height)
     
    254255  Int       m_crQpOffset;                                     ///< Chroma Cr QP Offset (0:default)
    255256
     257#if W0038_CQP_ADJ
     258  UInt      m_sliceChromaQpOffsetPeriodicity;                 ///< Used in conjunction with Slice Cb/Cr QpOffsetIntraOrPeriodic. Use 0 (default) to disable periodic nature.
     259  Int       m_sliceChromaQpOffsetIntraOrPeriodic[2/*Cb,Cr*/]; ///< Chroma Cb QP Offset at slice level for I slice or for periodic inter slices as defined by SliceChromaQPOffsetPeriodicity. Replaces offset in the GOP table.
     260#endif
    256261#if ADAPTIVE_QP_SELECTION
    257262  Bool      m_bUseAdaptQpSelect;
     
    312317  Int       m_maxNumOffsetsPerPic;                            ///< SAO maximun number of offset per picture
    313318  Bool      m_saoCtuBoundary;                                 ///< SAO parameter estimation using non-deblocked pixels for CTU bottom and right boundary areas
     319#if OPTIONAL_RESET_SAO_ENCODING_AFTER_IRAP
     320  Bool      m_saoResetEncoderStateAfterIRAP;                  ///< When true, SAO encoder state will be reset following an IRAP.
     321#endif
    314322  // coding tools (loop filter)
    315323#if NH_MV
     
    321329  Int       m_loopFilterBetaOffsetDiv2;                     ///< beta offset for deblocking filter
    322330  Int       m_loopFilterTcOffsetDiv2;                       ///< tc offset for deblocking filter
     331#if W0038_DB_OPT
     332  Int       m_deblockingFilterMetric;                         ///< blockiness metric in encoder
     333#else
    323334  Bool      m_DeblockingFilterMetric;                         ///< blockiness metric in encoder
    324 
     335#endif
    325336  // coding tools (PCM)
    326337  Bool      m_usePCM;                                         ///< flag for using IPCM
     
    440451  Int*      m_kneeSEIInputKneePoint;
    441452  Int*      m_kneeSEIOutputKneePoint;
     453#if U0033_ALTERNATIVE_TRANSFER_CHARACTERISTICS_SEI
     454  Int       m_preferredTransferCharacteristics;
     455#endif
     456
    442457  // weighted prediction
    443458  Bool      m_useWeightedPred;                    ///< Use of weighted prediction in P slices
  • branches/HTM-16.1-dev/source/App/TAppEncoder/TAppEncTop.cpp

    r1401 r1402  
    354354  m_cTEncTop.setFrameRate                                         ( m_iFrameRate );
    355355  m_cTEncTop.setFrameSkip                                         ( m_FrameSkip );
     356  m_cTEncTop.setTemporalSubsampleRatio                            ( m_temporalSubsampleRatio );
    356357  m_cTEncTop.setSourceWidth                                       ( m_iSourceWidth );
    357358  m_cTEncTop.setSourceHeight                                      ( m_iSourceHeight );
     
    417418  m_cTEncTop.setLoopFilterBetaOffset                              ( m_loopFilterBetaOffsetDiv2  );
    418419  m_cTEncTop.setLoopFilterTcOffset                                ( m_loopFilterTcOffsetDiv2    );
     420#if W0038_DB_OPT
     421  m_cTEncTop.setDeblockingFilterMetric                            ( m_deblockingFilterMetric );
     422#else
    419423  m_cTEncTop.setDeblockingFilterMetric                            ( m_DeblockingFilterMetric );
     424#endif
    420425
    421426  //====== Motion search ========
     
    439444  m_cTEncTop.setChromaCbQpOffset                                  ( m_cbQpOffset     );
    440445  m_cTEncTop.setChromaCrQpOffset                                  ( m_crQpOffset  );
     446#if W0038_CQP_ADJ
     447  m_cTEncTop.setSliceChromaOffsetQpIntraOrPeriodic                ( m_sliceChromaQpOffsetPeriodicity, m_sliceChromaQpOffsetIntraOrPeriodic );
     448#endif
    441449
    442450#if NH_3D
     
    554562
    555563  m_cTEncTop.setSaoCtuBoundary                                    ( m_saoCtuBoundary);
     564#if OPTIONAL_RESET_SAO_ENCODING_AFTER_IRAP
     565  m_cTEncTop.setSaoResetEncoderStateAfterIRAP                     ( m_saoResetEncoderStateAfterIRAP);
     566#endif
    556567  m_cTEncTop.setPCMInputBitDepthFlag                              ( m_bPCMInputBitDepthFlag);
    557568  m_cTEncTop.setPCMFilterDisableFlag                              ( m_bPCMFilterDisableFlag);
     
    628639  m_cTEncTop.setColourRemapInfoSEIFileRoot                        ( m_colourRemapSEIFileRoot );
    629640  m_cTEncTop.setMasteringDisplaySEI                               ( m_masteringDisplay );
     641#if U0033_ALTERNATIVE_TRANSFER_CHARACTERISTICS_SEI
     642  m_cTEncTop.setSEIAlternativeTransferCharacteristicsSEIEnable    ( m_preferredTransferCharacteristics>=0     );
     643  m_cTEncTop.setSEIPreferredTransferCharacteristics               ( UChar(m_preferredTransferCharacteristics) );
     644#endif
    630645
    631646#if NH_MV
     
    11241139      outputAccessUnits.clear();
    11251140    }
     1141    // temporally skip frames
     1142    if( m_temporalSubsampleRatio > 1 )
     1143    {
     1144      m_cTVideoIOYuvInputFile.skipFrames(m_temporalSubsampleRatio-1, m_iSourceWidth - m_aiPad[0], m_iSourceHeight - m_aiPad[1], m_InputChromaFormatIDC);
     1145    }
    11261146  }
    11271147
     
    14201440{
    14211441#if NH_MV
    1422   Double time = (Double) m_frameRcvd[0] / m_iFrameRate;
     1442  Double time = (Double) m_frameRcvd[0] / m_iFrameRate * m_temporalSubsampleRatio;
    14231443  printf("\n");
    14241444#else
    1425   Double time = (Double) m_iFrameRcvd / m_iFrameRate;
     1445  Double time = (Double) m_iFrameRcvd / m_iFrameRate * m_temporalSubsampleRatio;
    14261446#endif
    14271447  printf("Bytes written to file: %u (%.3f kbps)\n", m_totalBytes, 0.008 * m_totalBytes / time);
  • branches/HTM-16.1-dev/source/App/utils/BitrateTargeting/ExtractBitrates.cpp

    r1313 r1402  
    44 * granted under this license.
    55 *
    6  * Copyright (c) 2010-2015, ITU/ISO/IEC
     6 * Copyright (c) 2010-2016, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • branches/HTM-16.1-dev/source/App/utils/BitrateTargeting/ExtractBitrates.h

    r1313 r1402  
    44 * granted under this license.
    55 *
    6  * Copyright (c) 2010-2015, ITU/ISO/IEC
     6 * Copyright (c) 2010-2016, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • branches/HTM-16.1-dev/source/App/utils/BitrateTargeting/ExtractBitratesMain.cpp

    r1313 r1402  
    44 * granted under this license.
    55 *
    6  * Copyright (c) 2010-2015, ITU/ISO/IEC
     6 * Copyright (c) 2010-2016, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • branches/HTM-16.1-dev/source/App/utils/BitrateTargeting/GuessLambdaModifiers.cpp

    r1313 r1402  
    44 * granted under this license.
    55 *
    6  * Copyright (c) 2010-2015, ITU/ISO/IEC
     6 * Copyright (c) 2010-2016, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • branches/HTM-16.1-dev/source/App/utils/BitrateTargeting/GuessLambdaModifiers.h

    r1313 r1402  
    44 * granted under this license.
    55 *
    6  * Copyright (c) 2010-2015, ITU/ISO/IEC
     6 * Copyright (c) 2010-2016, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • branches/HTM-16.1-dev/source/App/utils/BitrateTargeting/GuessLambdaModifiersMain.cpp

    r1313 r1402  
    44 * granted under this license.
    55 *
    6  * Copyright (c) 2010-2015, ITU/ISO/IEC
     6 * Copyright (c) 2010-2016, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • branches/HTM-16.1-dev/source/App/utils/BitrateTargeting/RuntimeError.h

    r1313 r1402  
    44 * granted under this license.
    55 *
    6  * Copyright (c) 2010-2015, ITU/ISO/IEC
     6 * Copyright (c) 2010-2016, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • branches/HTM-16.1-dev/source/App/utils/annexBbytecount.cpp

    r1313 r1402  
    44 * granted under this license.
    55 *
    6  * Copyright (c) 2010-2015, ITU/ISO/IEC
     6 * Copyright (c) 2010-2016, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • branches/HTM-16.1-dev/source/App/utils/convert_NtoMbit_YCbCr.cpp

    r1386 r1402  
    44 * granted under this license.
    55 *
    6  * Copyright (c) 2010-2015, ITU/ISO/IEC
     6 * Copyright (c) 2010-2016, ITU/ISO/IEC
    77 * All rights reserved.
    88 *
  • branches/HTM-16.1-dev/source/Lib/TLibCommon/CommonDef.h

    r1401 r1402  
    7272#if NH_MV
    7373#define NV_VERSION        "16.1"                ///< Current software version
    74 #define HM_VERSION        "16.7"                ///<
    75 #else
    76 #define NV_VERSION        "16.7"                 ///< Current software version
     74#define HM_VERSION        "16.9"                ///<
     75#else
     76#define NV_VERSION        "16.9"                 ///< Current software version
    7777#endif
    7878// ====================================================================================================================
     
    266266static const Int CONTEXT_STATE_BITS =                              6 ;
    267267static const Int LAST_SIGNIFICANT_GROUPS =                        10 ;
     268
     269#if W0038_DB_OPT
     270static const Int MAX_ENCODER_DEBLOCKING_QUALITY_LAYERS =           8 ;
     271#endif
     272
    268273
    269274#if NH_MV
  • branches/HTM-16.1-dev/source/Lib/TLibCommon/SEI.cpp

    r1401 r1402  
    153153    case SEI::CHROMA_RESAMPLING_FILTER_HINT:        return "Chroma sampling filter hint";
    154154    case SEI::COLOUR_REMAPPING_INFO:                return "Colour remapping info";
     155#if U0033_ALTERNATIVE_TRANSFER_CHARACTERISTICS_SEI
     156    case SEI::ALTERNATIVE_TRANSFER_CHARACTERISTICS: return "Alternative transfer characteristics";
     157#endif
    155158
    156159#if NH_MV
  • branches/HTM-16.1-dev/source/Lib/TLibCommon/SEI.h

    r1401 r1402  
    9797    KNEE_FUNCTION_INFO                   = 141,
    9898    COLOUR_REMAPPING_INFO                = 142,
     99#if U0033_ALTERNATIVE_TRANSFER_CHARACTERISTICS_SEI
     100    ALTERNATIVE_TRANSFER_CHARACTERISTICS = 182,
     101#endif
    99102    DEINTERLACED_FIELD_IDENTIFICATION         = 143,
    100103    LAYERS_NOT_PRESENT                        = 160,
     
    655658
    656659};
     660
     661#if U0033_ALTERNATIVE_TRANSFER_CHARACTERISTICS_SEI
     662class SEIAlternativeTransferCharacteristics : public SEI
     663{
     664public:
     665  PayloadType payloadType() const { return ALTERNATIVE_TRANSFER_CHARACTERISTICS; }
     666
     667  SEIAlternativeTransferCharacteristics() : m_preferredTransferCharacteristics(18)
     668  { }
     669
     670  virtual ~SEIAlternativeTransferCharacteristics() {}
     671
     672  UInt m_preferredTransferCharacteristics;
     673};
     674#endif
     675
     676
    657677#if NH_MV
    658678class SEILayersNotPresent : public SEI
  • branches/HTM-16.1-dev/source/Lib/TLibCommon/TComPic.cpp

    r1401 r1402  
    9797TComPic::~TComPic()
    9898{
     99  destroy();
    99100}
    100101
    101102Void TComPic::create( const TComSPS &sps, const TComPPS &pps, const Bool bIsVirtual)
    102103{
     104  destroy();
     105
    103106  const ChromaFormat chromaFormatIDC = sps.getChromaFormatIdc();
    104107  const Int          iWidth          = sps.getPicWidthInLumaSamples();
  • branches/HTM-16.1-dev/source/Lib/TLibCommon/TComPic.h

    r1401 r1402  
    191191  const TComPicSym* getPicSym() const { return  &m_picSym;    }
    192192  TComSlice*    getSlice(Int i)       { return  m_picSym.getSlice(i);  }
     193  const TComSlice* getSlice(Int i) const           { return  m_picSym.getSlice(i);  }
    193194  Int           getPOC() const        { return  m_picSym.getSlice(m_uiCurrSliceIdx)->getPOC();  }
    194195  TComDataCU*   getCtu( UInt ctuRsAddr )           { return  m_picSym.getCtu( ctuRsAddr ); }
  • branches/HTM-16.1-dev/source/Lib/TLibCommon/TComPicSym.cpp

    r1401 r1402  
    7171
    7272
     73TComPicSym::~TComPicSym()
     74{
     75  destroy();
     76}
     77
     78
    7379Void TComPicSym::create  ( const TComSPS &sps, const TComPPS &pps, UInt uiMaxDepth )
    7480{
    75   UInt i;
    7681  m_sps = sps;
    7782  m_pps = pps;
     
    108113#endif
    109114
    110   for ( i=0; i<m_numCtusInFrame ; i++ )
     115  for (UInt i=0; i<m_numCtusInFrame ; i++ )
    111116  {
    112117    m_pictureCtuArray[i] = new TComDataCU;
     
    122127  m_ctuRsToTsAddrMap = new UInt[m_numCtusInFrame+1];
    123128
    124   for( i=0; i<m_numCtusInFrame; i++ )
     129  for(UInt i=0; i<m_numCtusInFrame; i++ )
    125130  {
    126131    m_ctuTsToRsAddrMap[i] = i;
  • branches/HTM-16.1-dev/source/Lib/TLibCommon/TComPicSym.h

    r1401 r1402  
    125125
    126126  TComPicSym  ();
     127  ~TComPicSym();
     128
    127129  TComSlice*         getSlice(UInt i)                                      { return m_apSlices[i];             }
    128130  const TComSlice*   getSlice(UInt i) const                                { return m_apSlices[i];             }
  • branches/HTM-16.1-dev/source/Lib/TLibCommon/TComPicYuv.cpp

    r1401 r1402  
    7474TComPicYuv::~TComPicYuv()
    7575{
     76  destroy();
    7677}
    7778
     
    8788
    8889{
     90  destroy();
     91
    8992  m_picWidth          = picWidth;
    9093  m_picHeight         = picHeight;
  • branches/HTM-16.1-dev/source/Lib/TLibCommon/TComYuv.cpp

    r1401 r1402  
    5959TComYuv::~TComYuv()
    6060{
     61  destroy();
    6162}
    6263
    6364Void TComYuv::create( UInt iWidth, UInt iHeight, ChromaFormat chromaFormatIDC )
    6465{
     66  destroy();
    6567  // set width and height
    6668  m_iWidth   = iWidth;
  • branches/HTM-16.1-dev/source/Lib/TLibCommon/TypeDef.h

    r1401 r1402  
    373373#define T0196_SELECTIVE_RDOQ                              1 ///< selective RDOQ
    374374#define U0040_MODIFIED_WEIGHTEDPREDICTION_WITH_BIPRED_AND_CLIPPING 1
     375#define U0033_ALTERNATIVE_TRANSFER_CHARACTERISTICS_SEI    1 ///< Alternative transfer characteristics SEI message (JCTVC-U0033, with syntax naming from V1005)
     376#define W0062_RECALCULATE_QP_TO_ALIGN_WITH_LAMBDA         0 ///< This recalculates QP to align with the derived lambda (same relation as for all intra coding is used). Currently disabled by default.
     377#define OPTIONAL_RESET_SAO_ENCODING_AFTER_IRAP            1 ///< Adds command line option to reset SAO parameters after each IRAP.
     378
    375379// ====================================================================================================================
    376380// Tool Switches
     
    396400#endif
    397401#define U0132_TARGET_BITS_SATURATION                      1 ///< Rate control with target bits saturation method
     402#ifdef  U0132_TARGET_BITS_SATURATION
     403#define V0078_ADAPTIVE_LOWER_BOUND                        1 ///< Target bits saturation with adaptive lower bound
     404#endif
     405#define W0038_DB_OPT                                      1 ///< adaptive DB parameter selection, LoopFilterOffsetInPPS and LoopFilterDisable are set to 0 and DeblockingFilterMetric=2;
     406#define W0038_CQP_ADJ                                     1 ///< chroma QP adjustment based on TL, CQPTLAdjustEnabled is set to 1;
     407
    398408// ====================================================================================================================
    399409// Derived macros
  • branches/HTM-16.1-dev/source/Lib/TLibDecoder/SEIread.cpp

    r1401 r1402  
    311311      xParseSEIMasteringDisplayColourVolume((SEIMasteringDisplayColourVolume&) *sei, payloadSize, pDecodedMessageOutputStream);
    312312      break;
     313#if U0033_ALTERNATIVE_TRANSFER_CHARACTERISTICS_SEI
     314    case SEI::ALTERNATIVE_TRANSFER_CHARACTERISTICS:
     315      sei = new SEIAlternativeTransferCharacteristics;
     316      xParseSEIAlternativeTransferCharacteristics((SEIAlternativeTransferCharacteristics&) *sei, payloadSize, pDecodedMessageOutputStream);
     317      break;
     318#endif
    313319#if NH_MV
    314320    case SEI::LAYERS_NOT_PRESENT:
     
    636642        sei_read_code( pDecodedMessageOutputStream, ( pHRD->getInitialCpbRemovalDelayLengthMinus1() + 1 ) , code, nalOrVcl?"vcl_initial_cpb_removal_delay":"nal_initial_cpb_removal_delay" );
    637643        sei.m_initialCpbRemovalDelay[i][nalOrVcl] = code;
    638         sei_read_code( pDecodedMessageOutputStream, ( pHRD->getInitialCpbRemovalDelayLengthMinus1() + 1 ) , code, nalOrVcl?"vcl_initial_cpb_removal_offset":"vcl_initial_cpb_removal_offset" );
     644        sei_read_code( pDecodedMessageOutputStream, ( pHRD->getInitialCpbRemovalDelayLengthMinus1() + 1 ) , code, nalOrVcl?"vcl_initial_cpb_removal_offset":"nal_initial_cpb_removal_offset" );
    639645        sei.m_initialCpbRemovalDelayOffset[i][nalOrVcl] = code;
    640646        if( pHRD->getSubPicCpbParamsPresentFlag() || sei.m_rapCpbParamsPresentFlag )
    641647        {
    642           sei_read_code( pDecodedMessageOutputStream, ( pHRD->getInitialCpbRemovalDelayLengthMinus1() + 1 ) , code, nalOrVcl?"vcl_initial_alt_cpb_removal_delay":"vcl_initial_alt_cpb_removal_delay" );
     648          sei_read_code( pDecodedMessageOutputStream, ( pHRD->getInitialCpbRemovalDelayLengthMinus1() + 1 ) , code, nalOrVcl?"vcl_initial_alt_cpb_removal_delay":"nal_initial_alt_cpb_removal_delay" );
    643649          sei.m_initialAltCpbRemovalDelay[i][nalOrVcl] = code;
    644           sei_read_code( pDecodedMessageOutputStream, ( pHRD->getInitialCpbRemovalDelayLengthMinus1() + 1 ) , code, nalOrVcl?"vcl_initial_alt_cpb_removal_offset":"vcl_initial_alt_cpb_removal_offset" );
     650          sei_read_code( pDecodedMessageOutputStream, ( pHRD->getInitialCpbRemovalDelayLengthMinus1() + 1 ) , code, nalOrVcl?"vcl_initial_alt_cpb_removal_offset":"nal_initial_alt_cpb_removal_offset" );
    645651          sei.m_initialAltCpbRemovalDelayOffset[i][nalOrVcl] = code;
    646652        }
  • branches/HTM-16.1-dev/source/Lib/TLibDecoder/SEIread.h

    r1401 r1402  
    9595  Void xParseSEIMasteringDisplayColourVolume  (SEIMasteringDisplayColourVolume& sei,  UInt payloadSize,                     std::ostream *pDecodedMessageOutputStream);
    9696  Void xParseSEIColourRemappingInfo           (SEIColourRemappingInfo& sei,           UInt payloadSize,                     std::ostream *pDecodedMessageOutputStream);
     97#if U0033_ALTERNATIVE_TRANSFER_CHARACTERISTICS_SEI
     98  Void xParseSEIAlternativeTransferCharacteristics(SEIAlternativeTransferCharacteristics& sei,              UInt payLoadSize,                     std::ostream *pDecodedMessageOutputStream);
     99#endif
    97100#if NH_MV
    98101  Void xParseSEILayersNotPresent              (SEILayersNotPresent &sei, UInt payloadSize, const TComVPS *vps ,std::ostream *pDecodedMessageOutputStream);
  • branches/HTM-16.1-dev/source/Lib/TLibEncoder/SEIEncoder.cpp

    r1401 r1402  
    651651  }
    652652}
     653#if U0033_ALTERNATIVE_TRANSFER_CHARACTERISTICS_SEI
     654Void SEIEncoder::initSEIAlternativeTransferCharacteristics(SEIAlternativeTransferCharacteristics *seiAltTransCharacteristics)
     655{
     656  assert (m_isInitialized);
     657  assert (seiAltTransCharacteristics!=NULL);
     658  //  Set SEI message parameters read from command line options
     659  seiAltTransCharacteristics->m_preferredTransferCharacteristics = m_pcCfg->getSEIPreferredTransferCharacteristics();
     660}
     661#endif
    653662
    654663#if NH_MV
  • branches/HTM-16.1-dev/source/Lib/TLibEncoder/SEIEncoder.h

    r1401 r1402  
    8282  Void initSEITimeCode(SEITimeCode *sei);
    8383  Bool initSEIColourRemappingInfo(SEIColourRemappingInfo *sei, Int currPOC); // returns true on success, false on failure.
     84#if U0033_ALTERNATIVE_TRANSFER_CHARACTERISTICS_SEI
     85  Void initSEIAlternativeTransferCharacteristics(SEIAlternativeTransferCharacteristics *sei);
     86#endif
    8487
    8588  // trailing SEIs
  • branches/HTM-16.1-dev/source/Lib/TLibEncoder/SEIwrite.cpp

    r1401 r1402  
    124124    xWriteSEIMasteringDisplayColourVolume(*static_cast<const SEIMasteringDisplayColourVolume*>(&sei));
    125125    break;
     126#if U0033_ALTERNATIVE_TRANSFER_CHARACTERISTICS_SEI
     127  case SEI::ALTERNATIVE_TRANSFER_CHARACTERISTICS:
     128    xWriteSEIAlternativeTransferCharacteristics(*static_cast<const SEIAlternativeTransferCharacteristics*>(&sei));
     129    break;
     130#endif
     131
    126132#if NH_MV
    127133   case SEI::LAYERS_NOT_PRESENT:
     
    871877}
    872878
     879#if U0033_ALTERNATIVE_TRANSFER_CHARACTERISTICS_SEI
     880Void SEIWriter::xWriteSEIAlternativeTransferCharacteristics(const SEIAlternativeTransferCharacteristics& sei)
     881{
     882  WRITE_CODE(sei.m_preferredTransferCharacteristics, 8, "preferred_transfer_characteristics");
     883}
     884#endif
     885
    873886#if NH_MV
    874887Void SEIWriter::xWriteSEILayersNotPresent(const SEILayersNotPresent& sei)
  • branches/HTM-16.1-dev/source/Lib/TLibEncoder/SEIwrite.h

    r1401 r1402  
    7575  Void xWriteSEIColourRemappingInfo(const SEIColourRemappingInfo& sei);
    7676  Void xWriteSEIMasteringDisplayColourVolume( const SEIMasteringDisplayColourVolume& sei);
     77#if U0033_ALTERNATIVE_TRANSFER_CHARACTERISTICS_SEI
     78  Void xWriteSEIAlternativeTransferCharacteristics(const SEIAlternativeTransferCharacteristics& sei);
     79#endif
    7780
    7881#if NH_MV
  • branches/HTM-16.1-dev/source/Lib/TLibEncoder/TEncCfg.h

    r1401 r1402  
    6262  Int m_POC;
    6363  Int m_QPOffset;
     64#if W0038_CQP_ADJ
     65  Int m_CbQPoffset;
     66  Int m_CrQPoffset;
     67#endif
    6468  Double m_QPFactor;
    6569  Int m_tcOffsetDiv2;
     
    8993  : m_POC(-1)
    9094  , m_QPOffset(0)
     95#if W0038_CQP_ADJ
     96  , m_CbQPoffset(0)
     97  , m_CrQPoffset(0)
     98#endif
    9199  , m_QPFactor(0)
    92100  , m_tcOffsetDiv2(0)
     
    135143  Int       m_iFrameRate;
    136144  Int       m_FrameSkip;
     145  UInt      m_temporalSubsampleRatio;
    137146  Int       m_iSourceWidth;
    138147  Int       m_iSourceHeight;
     
    163172
    164173  //====== Coding Structure ========
    165   UInt      m_uiIntraPeriod;
     174  UInt      m_uiIntraPeriod;                    // TODO: make this an Int - it can be -1!
    166175  UInt      m_uiDecodingRefreshType;            ///< the type of decoding refresh employed for the random access.
    167176  Int       m_iGOPSize;
     
    202211  Int       m_loopFilterBetaOffsetDiv2;
    203212  Int       m_loopFilterTcOffsetDiv2;
     213#if W0038_DB_OPT
     214  Int       m_deblockingFilterMetric;
     215#else
    204216  Bool      m_DeblockingFilterMetric;
     217#endif
    205218  Bool      m_bUseSAO;
    206219  Bool      m_bTestSAODisableAtPictureLevel;
     
    209222  Int       m_maxNumOffsetsPerPic;
    210223  Bool      m_saoCtuBoundary;
     224#if OPTIONAL_RESET_SAO_ENCODING_AFTER_IRAP
     225  Bool      m_saoResetEncoderStateAfterIRAP;
     226#endif
    211227
    212228  //====== Motion search ========
     
    231247  Int       m_chromaCbQpOffset;                 //  Chroma Cb QP Offset (0:default)
    232248  Int       m_chromaCrQpOffset;                 //  Chroma Cr Qp Offset (0:default)
     249#if W0038_CQP_ADJ
     250  UInt      m_sliceChromaQpOffsetPeriodicity;                 ///< Used in conjunction with Slice Cb/Cr QpOffsetIntraOrPeriodic. Use 0 (default) to disable periodic nature.
     251  Int       m_sliceChromaQpOffsetIntraOrPeriodic[2/*Cb,Cr*/]; ///< Chroma Cb QP Offset at slice level for I slice or for periodic inter slices as defined by SliceChromaQPOffsetPeriodicity. Replaces offset in the GOP table.
     252#endif
     253
    233254  ChromaFormat m_chromaFormatIDC;
    234255
     
    363384  std::string m_colourRemapSEIFileRoot;          ///< SEI Colour Remapping File (initialized from external file)
    364385  TComSEIMasteringDisplay m_masteringDisplay;
     386#if U0033_ALTERNATIVE_TRANSFER_CHARACTERISTICS_SEI
     387  Bool      m_alternativeTransferCharacteristicsSEIEnabled;
     388  UChar     m_preferredTransferCharacteristics;
     389#endif
     390
    365391#if NH_MV
    366392  SEIMessages* m_seiMessages;
     
    534560  Void      setFrameRate                    ( Int   i )      { m_iFrameRate = i; }
    535561  Void      setFrameSkip                    ( UInt i ) { m_FrameSkip = i; }
     562  Void      setTemporalSubsampleRatio       ( UInt  i )      { m_temporalSubsampleRatio = i; }
    536563  Void      setSourceWidth                  ( Int   i )      { m_iSourceWidth = i; }
    537564  Void      setSourceHeight                 ( Int   i )      { m_iSourceHeight = i; }
     
    619646  Void      setLoopFilterBetaOffset         ( Int   i )      { m_loopFilterBetaOffsetDiv2  = i; }
    620647  Void      setLoopFilterTcOffset           ( Int   i )      { m_loopFilterTcOffsetDiv2    = i; }
     648#if W0038_DB_OPT
     649  Void      setDeblockingFilterMetric       ( Int   i )      { m_deblockingFilterMetric = i; }
     650#else
    621651  Void      setDeblockingFilterMetric       ( Bool  b )      { m_DeblockingFilterMetric = b; }
    622 
     652#endif
    623653  //====== Motion search ========
    624654  Void      setDisableIntraPUsInInterSlices ( Bool  b )      { m_bDisableIntraPUsInInterSlices = b; }
     
    645675  Void      setChromaCbQpOffset             ( Int   i )      { m_chromaCbQpOffset = i; }
    646676  Void      setChromaCrQpOffset             ( Int   i )      { m_chromaCrQpOffset = i; }
     677#if W0038_CQP_ADJ
     678  Void      setSliceChromaOffsetQpIntraOrPeriodic( UInt periodicity, Int sliceChromaQpOffsetIntraOrPeriodic[2]) { m_sliceChromaQpOffsetPeriodicity = periodicity; memcpy(m_sliceChromaQpOffsetIntraOrPeriodic, sliceChromaQpOffsetIntraOrPeriodic, sizeof(m_sliceChromaQpOffsetIntraOrPeriodic)); }
     679  Int       getSliceChromaOffsetQpIntraOrPeriodic( Bool bIsCr) const                                            { return m_sliceChromaQpOffsetIntraOrPeriodic[bIsCr?1:0]; }
     680  UInt      getSliceChromaOffsetQpPeriodicity() const                                                           { return m_sliceChromaQpOffsetPeriodicity; }
     681#endif
    647682
    648683  Void      setChromaFormatIdc              ( ChromaFormat cf ) { m_chromaFormatIDC = cf; }
     
    666701  Int       getFrameRate                    ()      { return  m_iFrameRate; }
    667702  UInt      getFrameSkip                    ()      { return  m_FrameSkip; }
     703  UInt      getTemporalSubsampleRatio       ()      { return  m_temporalSubsampleRatio; }
    668704  Int       getSourceWidth                  ()      { return  m_iSourceWidth; }
    669705  Int       getSourceHeight                 ()      { return  m_iSourceHeight; }
     
    702738  Int       getLoopFilterBetaOffset         ()      { return m_loopFilterBetaOffsetDiv2; }
    703739  Int       getLoopFilterTcOffset           ()      { return m_loopFilterTcOffsetDiv2; }
     740#if W0038_DB_OPT
     741  Int       getDeblockingFilterMetric       ()      { return m_deblockingFilterMetric; }
     742#else
    704743  Bool      getDeblockingFilterMetric       ()      { return m_DeblockingFilterMetric; }
     744#endif
    705745
    706746  //==== Motion search ========
     
    831871  Void  setSaoCtuBoundary              (Bool val)                    { m_saoCtuBoundary = val; }
    832872  Bool  getSaoCtuBoundary              ()                            { return m_saoCtuBoundary; }
     873#if OPTIONAL_RESET_SAO_ENCODING_AFTER_IRAP
     874  Void  setSaoResetEncoderStateAfterIRAP(Bool b)                     { m_saoResetEncoderStateAfterIRAP = b; }
     875  Bool  getSaoResetEncoderStateAfterIRAP() const                     { return m_saoResetEncoderStateAfterIRAP; }
     876#endif
    833877  Void  setLFCrossTileBoundaryFlag               ( Bool   val  )     { m_loopFilterAcrossTilesEnabledFlag = val; }
    834878  Bool  getLFCrossTileBoundaryFlag               ()                  { return m_loopFilterAcrossTilesEnabledFlag;   }
     
    9751019
    9761020  Void  setMasteringDisplaySEI(const TComSEIMasteringDisplay &src)   { m_masteringDisplay = src; }
     1021#if U0033_ALTERNATIVE_TRANSFER_CHARACTERISTICS_SEI
     1022  Void  setSEIAlternativeTransferCharacteristicsSEIEnable( Bool b)   { m_alternativeTransferCharacteristicsSEIEnabled = b;    }
     1023  Bool  getSEIAlternativeTransferCharacteristicsSEIEnable( ) const   { return m_alternativeTransferCharacteristicsSEIEnabled; }
     1024  Void  setSEIPreferredTransferCharacteristics(UChar v)              { m_preferredTransferCharacteristics = v;    }
     1025  UChar getSEIPreferredTransferCharacteristics() const               { return m_preferredTransferCharacteristics; }
     1026#endif
    9771027  const TComSEIMasteringDisplay &getMasteringDisplaySEI() const      { return m_masteringDisplay; }
    9781028#if NH_MV
  • branches/HTM-16.1-dev/source/Lib/TLibEncoder/TEncCu.cpp

    r1401 r1402  
    10961096        // do normal intra modes
    10971097        // speedup for inter frames
    1098         Double intraCost = 0.0;
    10991098
    11001099        if((rpcBestCU->getSlice()->getSliceType() == I_SLICE)                                     ||
     
    11221121            if( bUseIVP )
    11231122            {
    1124               xCheckRDCostIntra( rpcBestCU, rpcTempCU, intraCost, SIZE_2Nx2N DEBUG_STRING_PASS_INTO(sDebug), bOnlyIVP );
    1125 #else
    1126           xCheckRDCostIntra( rpcBestCU, rpcTempCU, intraCost, SIZE_2Nx2N DEBUG_STRING_PASS_INTO(sDebug) );
     1123              xCheckRDCostIntra( rpcBestCU, rpcTempCU, SIZE_2Nx2N DEBUG_STRING_PASS_INTO(sDebug), bOnlyIVP );
     1124#else
     1125          xCheckRDCostIntra( rpcBestCU, rpcTempCU, SIZE_2Nx2N DEBUG_STRING_PASS_INTO(sDebug) );
    11271126#endif
    11281127#if KWU_RC_MADPRED_E0227
     
    11431142            if( rpcTempCU->getWidth(0) > ( 1 << sps.getQuadtreeTULog2MinSize() ) )
    11441143            {
    1145               Double tmpIntraCost;
    11461144#if NH_3D_ENC_DEPTH
    1147               xCheckRDCostIntra( rpcBestCU, rpcTempCU, tmpIntraCost, SIZE_NxN DEBUG_STRING_PASS_INTO(sDebug), bOnlyIVP );
    1148 #else
    1149               xCheckRDCostIntra( rpcBestCU, rpcTempCU, tmpIntraCost, SIZE_NxN DEBUG_STRING_PASS_INTO(sDebug)   );
    1150 #endif
    1151 
    1152               intraCost = std::min(intraCost, tmpIntraCost);
     1145              xCheckRDCostIntra( rpcBestCU, rpcTempCU, SIZE_NxN DEBUG_STRING_PASS_INTO(sDebug), bOnlyIVP );
     1146#else
     1147              xCheckRDCostIntra( rpcBestCU, rpcTempCU, SIZE_NxN DEBUG_STRING_PASS_INTO(sDebug)   );
     1148#endif       
    11531149              rpcTempCU->initEstData( uiDepth, iQP, bIsLosslessMode );
    11541150            }
     
    27842780Void TEncCu::xCheckRDCostIntra( TComDataCU *&rpcBestCU,
    27852781                                TComDataCU *&rpcTempCU,
    2786                                 Double      &cost,
    27872782                                PartSize     eSize
    27882783                                DEBUG_STRING_FN_DECLARE(sDebug)
     
    28952890
    28962891  xCheckDQP( rpcTempCU );
    2897 
    2898   cost = rpcTempCU->getTotalCost();
    28992892
    29002893  xCheckBestMode(rpcBestCU, rpcTempCU, uiDepth DEBUG_STRING_PASS_INTO(sDebug) DEBUG_STRING_PASS_INTO(sTest));
  • branches/HTM-16.1-dev/source/Lib/TLibEncoder/TEncCu.h

    r1401 r1402  
    167167  Void  xCheckRDCostIntra   ( TComDataCU *&rpcBestCU,
    168168                              TComDataCU *&rpcTempCU,
    169                               Double      &cost,
    170169                              PartSize     ePartSize
    171170                              DEBUG_STRING_FN_DECLARE(sDebug)
  • branches/HTM-16.1-dev/source/Lib/TLibEncoder/TEncGOP.cpp

    r1401 r1402  
    108108  m_associatedIRAPType = NAL_UNIT_CODED_SLICE_IDR_N_LP;
    109109  m_associatedIRAPPOC  = 0;
     110#if W0038_DB_OPT
     111  m_pcDeblockingTempPicYuv = NULL;
     112#endif
    110113  return;
    111114}
     
    125128Void  TEncGOP::destroy()
    126129{
     130#if W0038_DB_OPT
     131  if (m_pcDeblockingTempPicYuv)
     132  {
     133    m_pcDeblockingTempPicYuv->destroy();
     134    delete m_pcDeblockingTempPicYuv;
     135    m_pcDeblockingTempPicYuv = NULL;
     136  }
     137#endif
    127138}
    128139
     
    502513    seiMessages.push_back(seiChromaResamplingFilterHint);
    503514  }
     515#if U0033_ALTERNATIVE_TRANSFER_CHARACTERISTICS_SEI
     516  if(m_pcCfg->getSEIAlternativeTransferCharacteristicsSEIEnable())
     517  {
     518    SEIAlternativeTransferCharacteristics *seiAlternativeTransferCharacteristics = new SEIAlternativeTransferCharacteristics;
     519    m_seiEncoder.initSEIAlternativeTransferCharacteristics(seiAlternativeTransferCharacteristics);
     520    seiMessages.push_back(seiAlternativeTransferCharacteristics);
     521  }
     522#endif
    504523}
    505524
     
    17271746        estimatedCpbFullness -= m_pcRateCtrl->getBufferingRate();
    17281747        // prevent underflow
     1748#if V0078_ADAPTIVE_LOWER_BOUND
     1749        if (estimatedCpbFullness - estimatedBits < m_pcRateCtrl->getRCPic()->getLowerBound())
     1750        {
     1751          estimatedBits = max(200, estimatedCpbFullness - m_pcRateCtrl->getRCPic()->getLowerBound());
     1752        }
     1753#else
    17291754        if (estimatedCpbFullness - estimatedBits < (Int)(m_pcRateCtrl->getCpbSize()*0.1f))
    17301755        {
    17311756          estimatedBits = max(200, estimatedCpbFullness - (Int)(m_pcRateCtrl->getCpbSize()*0.1f));
    17321757        }
     1758#endif
    17331759
    17341760        m_pcRateCtrl->getRCPic()->setTargetBits(estimatedBits);
     
    17691795            estimatedCpbFullness -= m_pcRateCtrl->getBufferingRate();
    17701796            // prevent underflow
     1797#if V0078_ADAPTIVE_LOWER_BOUND
     1798            if (estimatedCpbFullness - bits < m_pcRateCtrl->getRCPic()->getLowerBound())
     1799            {
     1800              bits = estimatedCpbFullness - m_pcRateCtrl->getRCPic()->getLowerBound();
     1801            }
     1802#else
    17711803            if (estimatedCpbFullness - bits < (Int)(m_pcRateCtrl->getCpbSize()*0.1f))
    17721804            {
    17731805              bits = estimatedCpbFullness - (Int)(m_pcRateCtrl->getCpbSize()*0.1f);
    17741806            }
     1807#endif
    17751808          }
    17761809#endif
     
    19021935    if ( m_pcCfg->getDeblockingFilterMetric() )
    19031936    {
     1937#if W0038_DB_OPT
     1938      if ( m_pcCfg->getDeblockingFilterMetric()==2 )
     1939      {
     1940        applyDeblockingFilterParameterSelection(pcPic, uiNumSliceSegments, iGOPid);
     1941      }
     1942      else
     1943      {
     1944#endif
    19041945      applyDeblockingFilterMetric(pcPic, uiNumSliceSegments);
     1946#if W0038_DB_OPT
     1947      }
     1948#endif
    19051949    }
    19061950    m_pcLoopFilter->loopFilterPic( pcPic );
     
    19541998      m_pcEncTop->getRDGoOnSbacCoder()->setBitstream(&tempBitCounter);
    19551999      m_pcSAO->initRDOCabacCoder(m_pcEncTop->getRDGoOnSbacCoder(), pcSlice);
     2000#if OPTIONAL_RESET_SAO_ENCODING_AFTER_IRAP
     2001      m_pcSAO->SAOProcess(pcPic, sliceEnabled, pcPic->getSlice(0)->getLambdas(),
     2002                          m_pcCfg->getTestSAODisableAtPictureLevel(),
     2003                          m_pcCfg->getSaoEncodingRate(),
     2004                          m_pcCfg->getSaoEncodingRateChroma(),
     2005                          m_pcCfg->getSaoCtuBoundary(),
     2006                          m_pcCfg->getSaoResetEncoderStateAfterIRAP());
     2007#else
    19562008      m_pcSAO->SAOProcess(pcPic, sliceEnabled, pcPic->getSlice(0)->getLambdas(), m_pcCfg->getTestSAODisableAtPictureLevel(), m_pcCfg->getSaoEncodingRate(), m_pcCfg->getSaoEncodingRateChroma(), m_pcCfg->getSaoCtuBoundary());
     2009#endif
    19572010      m_pcSAO->PCMLFDisableProcess(pcPic);
    19582011      m_pcEncTop->getRDGoOnSbacCoder()->setBitstream(NULL);
     
    21862239  //--CFG_KDY
    21872240  const Int rateMultiplier=(isField?2:1);
    2188   m_gcAnalyzeAll.setFrmRate( m_pcCfg->getFrameRate()*rateMultiplier );
    2189   m_gcAnalyzeI.setFrmRate( m_pcCfg->getFrameRate()*rateMultiplier );
    2190   m_gcAnalyzeP.setFrmRate( m_pcCfg->getFrameRate()*rateMultiplier );
    2191   m_gcAnalyzeB.setFrmRate( m_pcCfg->getFrameRate()*rateMultiplier );
     2241  m_gcAnalyzeAll.setFrmRate( m_pcCfg->getFrameRate()*rateMultiplier / (Double)m_pcCfg->getTemporalSubsampleRatio());
     2242  m_gcAnalyzeI.setFrmRate( m_pcCfg->getFrameRate()*rateMultiplier / (Double)m_pcCfg->getTemporalSubsampleRatio());
     2243  m_gcAnalyzeP.setFrmRate( m_pcCfg->getFrameRate()*rateMultiplier / (Double)m_pcCfg->getTemporalSubsampleRatio());
     2244  m_gcAnalyzeB.setFrmRate( m_pcCfg->getFrameRate()*rateMultiplier / (Double)m_pcCfg->getTemporalSubsampleRatio());
    21922245  const ChromaFormat chFmt = m_pcCfg->getChromaFormatIdc();
    21932246
     
    22242277  {
    22252278    //-- interlaced summary
     2279#if TEMPORAL_SUBSAMPLE
     2280    m_gcAnalyzeAll_in.setFrmRate( m_pcCfg->getFrameRate() / (Double)m_pcCfg->getTemporalSubsampleRatio());
     2281#else
    22262282    m_gcAnalyzeAll_in.setFrmRate( m_pcCfg->getFrameRate());
     2283#endif
    22272284    m_gcAnalyzeAll_in.setBits(m_gcAnalyzeAll.getBits());
    22282285    // prior to the above statement, the interlace analyser does not contain the correct total number of bits.
     
    29593016  assert(noCol > 1);
    29603017  assert(noRows > 1);
    2961   UInt64 *colSAD = (UInt64*)malloc(noCol*sizeof(UInt64));
    2962   UInt64 *rowSAD = (UInt64*)malloc(noRows*sizeof(UInt64));
     3018  std::vector<UInt64> colSAD(noCol,  UInt64(0));
     3019  std::vector<UInt64> rowSAD(noRows, UInt64(0));
    29633020  UInt colIdx = 0;
    29643021  UInt rowIdx = 0;
     
    29723029  const Int thr1 = 2*bitdepthScale;
    29733030  UInt a = 0;
    2974 
    2975   memset(colSAD, 0, noCol*sizeof(UInt64));
    2976   memset(rowSAD, 0, noRows*sizeof(UInt64));
    29773031
    29783032  if (maxTBsize > minBlockArtSize)
     
    30643118    }
    30653119  }
    3066 
    3067   free(colSAD);
    3068   free(rowSAD);
    3069 }
     3120}
     3121
     3122#if W0038_DB_OPT
     3123Void TEncGOP::applyDeblockingFilterParameterSelection( TComPic* pcPic, const UInt numSlices, const Int gopID )
     3124{
     3125  enum DBFltParam
     3126  {
     3127    DBFLT_PARAM_AVAILABLE = 0,
     3128    DBFLT_DISABLE_FLAG,
     3129    DBFLT_BETA_OFFSETD2,
     3130    DBFLT_TC_OFFSETD2,
     3131    //NUM_DBFLT_PARAMS
     3132  };
     3133  const Int MAX_BETA_OFFSET = 3;
     3134  const Int MIN_BETA_OFFSET = -3;
     3135  const Int MAX_TC_OFFSET = 3;
     3136  const Int MIN_TC_OFFSET = -3;
     3137
     3138  TComPicYuv* pcPicYuvRec = pcPic->getPicYuvRec();
     3139  TComPicYuv* pcPicYuvOrg = pcPic ->getPicYuvOrg();
     3140
     3141  const Int currQualityLayer = (pcPic->getSlice(0)->getSliceType() != I_SLICE) ? m_pcCfg->getGOPEntry(gopID).m_temporalId+1 : 0;
     3142  assert(currQualityLayer <MAX_ENCODER_DEBLOCKING_QUALITY_LAYERS);
     3143
     3144  if(!m_pcDeblockingTempPicYuv)
     3145  {
     3146    m_pcDeblockingTempPicYuv         = new TComPicYuv;
     3147    m_pcDeblockingTempPicYuv->create( m_pcEncTop->getSourceWidth(), m_pcEncTop->getSourceHeight(), m_pcEncTop->getChromaFormatIdc(),  pcPic->getSlice(0)->getSPS()->getMaxCUWidth(), pcPic->getSlice(0)->getSPS()->getMaxCUHeight(), pcPic->getSlice(0)->getSPS()->getMaxTotalCUDepth(),true );
     3148    memset(m_DBParam, 0, sizeof(m_DBParam));
     3149  }
     3150
     3151  //preserve current reconstruction
     3152  pcPicYuvRec->copyToPic(m_pcDeblockingTempPicYuv);
     3153
     3154  const Bool bNoFiltering      = m_DBParam[currQualityLayer][DBFLT_PARAM_AVAILABLE] && m_DBParam[currQualityLayer][DBFLT_DISABLE_FLAG]==false /*&& pcPic->getTLayer()==0*/;
     3155  const Int  maxBetaOffsetDiv2 = bNoFiltering? Clip3(MIN_BETA_OFFSET, MAX_BETA_OFFSET, m_DBParam[currQualityLayer][DBFLT_BETA_OFFSETD2]+1) : MAX_BETA_OFFSET;
     3156  const Int  minBetaOffsetDiv2 = bNoFiltering? Clip3(MIN_BETA_OFFSET, MAX_BETA_OFFSET, m_DBParam[currQualityLayer][DBFLT_BETA_OFFSETD2]-1) : MIN_BETA_OFFSET;
     3157  const Int  maxTcOffsetDiv2   = bNoFiltering? Clip3(MIN_TC_OFFSET, MAX_TC_OFFSET, m_DBParam[currQualityLayer][DBFLT_TC_OFFSETD2]+2)       : MAX_TC_OFFSET;
     3158  const Int  minTcOffsetDiv2   = bNoFiltering? Clip3(MIN_TC_OFFSET, MAX_TC_OFFSET, m_DBParam[currQualityLayer][DBFLT_TC_OFFSETD2]-2)       : MIN_TC_OFFSET;
     3159
     3160  UInt64 distBetaPrevious      = std::numeric_limits<UInt64>::max();
     3161  UInt64 distMin               = std::numeric_limits<UInt64>::max();
     3162  Bool   bDBFilterDisabledBest = true;
     3163  Int    betaOffsetDiv2Best    = 0;
     3164  Int    tcOffsetDiv2Best      = 0;
     3165
     3166  for(Int betaOffsetDiv2=maxBetaOffsetDiv2; betaOffsetDiv2>=minBetaOffsetDiv2; betaOffsetDiv2--)
     3167  {
     3168    UInt64 distTcMin = std::numeric_limits<UInt64>::max();
     3169    for(Int tcOffsetDiv2=maxTcOffsetDiv2; tcOffsetDiv2 >= minTcOffsetDiv2; tcOffsetDiv2--)
     3170    {
     3171      for (Int i=0; i<numSlices; i++)
     3172      {
     3173        pcPic->getSlice(i)->setDeblockingFilterOverrideFlag(true);
     3174        pcPic->getSlice(i)->setDeblockingFilterDisable(false);
     3175        pcPic->getSlice(i)->setDeblockingFilterBetaOffsetDiv2( betaOffsetDiv2 );
     3176        pcPic->getSlice(i)->setDeblockingFilterTcOffsetDiv2( tcOffsetDiv2 );
     3177      }
     3178      m_pcDeblockingTempPicYuv->copyToPic(pcPicYuvRec); // restore reconstruction
     3179      m_pcLoopFilter->loopFilterPic( pcPic );
     3180      const UInt64 dist = xFindDistortionFrame(pcPicYuvOrg, pcPicYuvRec, pcPic->getPicSym()->getSPS().getBitDepths());
     3181      if(dist < distMin)
     3182      {
     3183        distMin = dist;
     3184        bDBFilterDisabledBest = false;
     3185        betaOffsetDiv2Best  = betaOffsetDiv2;
     3186        tcOffsetDiv2Best = tcOffsetDiv2;
     3187      }
     3188      if(dist < distTcMin)
     3189      {
     3190        distTcMin = dist;
     3191      }
     3192      else if(tcOffsetDiv2 <-2)
     3193      {
     3194        break;
     3195      }
     3196    }
     3197    if(betaOffsetDiv2<-1 && distTcMin >= distBetaPrevious)
     3198    {
     3199      break;
     3200    }
     3201    distBetaPrevious = distTcMin;
     3202  }
     3203
     3204  //update:
     3205  m_DBParam[currQualityLayer][DBFLT_PARAM_AVAILABLE] = 1;
     3206  m_DBParam[currQualityLayer][DBFLT_DISABLE_FLAG]    = bDBFilterDisabledBest;
     3207  m_DBParam[currQualityLayer][DBFLT_BETA_OFFSETD2]   = betaOffsetDiv2Best;
     3208  m_DBParam[currQualityLayer][DBFLT_TC_OFFSETD2]     = tcOffsetDiv2Best;
     3209
     3210  m_pcDeblockingTempPicYuv->copyToPic(pcPicYuvRec); //restore reconstruction
     3211
     3212  if(bDBFilterDisabledBest)
     3213  {
     3214    for (Int i=0; i<numSlices; i++)
     3215    {
     3216      pcPic->getSlice(i)->setDeblockingFilterOverrideFlag(true);
     3217      pcPic->getSlice(i)->setDeblockingFilterDisable(true);
     3218    }
     3219  }
     3220  else if(betaOffsetDiv2Best ==pcPic->getSlice(0)->getPPS()->getDeblockingFilterBetaOffsetDiv2() &&  tcOffsetDiv2Best==pcPic->getSlice(0)->getPPS()->getDeblockingFilterTcOffsetDiv2())
     3221  {
     3222    for (Int i=0; i<numSlices; i++)
     3223    {
     3224      pcPic->getSlice(i)->setDeblockingFilterOverrideFlag(false);
     3225      pcPic->getSlice(i)->setDeblockingFilterDisable(        pcPic->getSlice(i)->getPPS()->getPicDisableDeblockingFilterFlag() );
     3226      pcPic->getSlice(i)->setDeblockingFilterBetaOffsetDiv2( pcPic->getSlice(i)->getPPS()->getDeblockingFilterBetaOffsetDiv2() );
     3227      pcPic->getSlice(i)->setDeblockingFilterTcOffsetDiv2(   pcPic->getSlice(i)->getPPS()->getDeblockingFilterTcOffsetDiv2()   );
     3228    }
     3229  }
     3230  else
     3231  {
     3232    for (Int i=0; i<numSlices; i++)
     3233    {
     3234      pcPic->getSlice(i)->setDeblockingFilterOverrideFlag(true);
     3235      pcPic->getSlice(i)->setDeblockingFilterDisable( false );
     3236      pcPic->getSlice(i)->setDeblockingFilterBetaOffsetDiv2(betaOffsetDiv2Best);
     3237      pcPic->getSlice(i)->setDeblockingFilterTcOffsetDiv2(tcOffsetDiv2Best);
     3238    }
     3239  }
     3240}
     3241#endif
    30703242
    30713243#if NH_MV
  • branches/HTM-16.1-dev/source/Lib/TLibEncoder/TEncGOP.h

    r1401 r1402  
    153153  Bool                    m_bufferingPeriodSEIPresentInAU;
    154154  SEIEncoder              m_seiEncoder;
     155#if W0038_DB_OPT
     156  TComPicYuv*             m_pcDeblockingTempPicYuv;
     157  Int                     m_DBParam[MAX_ENCODER_DEBLOCKING_QUALITY_LAYERS][4];   //[layer_id][0: available; 1: bDBDisabled; 2: Beta Offset Div2; 3: Tc Offset Div2;]
     158#endif
    155159
    156160public:
     
    249253
    250254  Void applyDeblockingFilterMetric( TComPic* pcPic, UInt uiNumSlices );
     255#if W0038_DB_OPT
     256  Void applyDeblockingFilterParameterSelection( TComPic* pcPic, const UInt numSlices, const Int gopID );
     257#endif
    251258};// END CLASS DEFINITION TEncGOP
    252259
  • branches/HTM-16.1-dev/source/Lib/TLibEncoder/TEncRateCtrl.cpp

    r1401 r1402  
    554554}
    555555
     556#if V0078_ADAPTIVE_LOWER_BOUND
     557Int TEncRCPic::xEstPicLowerBound(TEncRCSeq* encRCSeq, TEncRCGOP* encRCGOP)
     558{
     559  Int lowerBound = 0;
     560  Int GOPbitsLeft = encRCGOP->getBitsLeft();
     561
     562  const Int nextPicPosition = (encRCGOP->getNumPic() - encRCGOP->getPicLeft() + 1) % encRCGOP->getNumPic();
     563  const Int nextPicRatio = encRCSeq->getBitRatio(nextPicPosition);
     564
     565  Int totalPicRatio = 0;
     566  for (Int i = nextPicPosition; i < encRCGOP->getNumPic(); i++)
     567  {
     568    totalPicRatio += encRCSeq->getBitRatio(i);
     569  }
     570
     571  if (nextPicPosition == 0)
     572  {
     573    GOPbitsLeft = encRCGOP->getTargetBits();
     574  }
     575  else
     576  {
     577    GOPbitsLeft -= m_targetBits;
     578  }
     579
     580  lowerBound = Int(((Double)GOPbitsLeft) * nextPicRatio / totalPicRatio);
     581
     582  if (lowerBound < 100)
     583  {
     584    lowerBound = 100;   // at least allocate 100 bits for one picture
     585  }
     586
     587  if (m_encRCSeq->getFramesLeft() > 16)
     588  {
     589    lowerBound = Int(g_RCWeightPicRargetBitInBuffer * lowerBound + g_RCWeightPicTargetBitInGOP * m_encRCGOP->getTargetBitInGOP(nextPicPosition));
     590  }
     591
     592  return lowerBound;
     593}
     594#endif
     595
     596
    556597Void TEncRCPic::addToPictureLsit( list<TEncRCPic*>& listPreviousPictures )
    557598{
     
    611652  Int picWidthInLCU  = ( picWidth  % LCUWidth  ) == 0 ? picWidth  / LCUWidth  : picWidth  / LCUWidth  + 1;
    612653  Int picHeightInLCU = ( picHeight % LCUHeight ) == 0 ? picHeight / LCUHeight : picHeight / LCUHeight + 1;
     654#if V0078_ADAPTIVE_LOWER_BOUND
     655  m_lowerBound       = xEstPicLowerBound( encRCSeq, encRCGOP );
     656#endif
    613657
    614658  m_LCULeft         = m_numberOfLCU;
  • branches/HTM-16.1-dev/source/Lib/TLibEncoder/TEncRateCtrl.h

    r1401 r1402  
    267267  Int xEstPicTargetBits( TEncRCSeq* encRCSeq, TEncRCGOP* encRCGOP );
    268268  Int xEstPicHeaderBits( list<TEncRCPic*>& listPreviousPictures, Int frameLevel );
     269#if V0078_ADAPTIVE_LOWER_BOUND
     270  Int xEstPicLowerBound( TEncRCSeq* encRCSeq, TEncRCGOP* encRCGOP );
     271#endif
    269272
    270273public:
     
    282285  Int  getBitsCoded()                                     { return m_targetBits - m_estHeaderBits - m_bitsLeft; }
    283286  Int  getLCUCoded()                                      { return m_numberOfLCU - m_LCULeft; }
     287#if V0078_ADAPTIVE_LOWER_BOUND
     288  Int  getLowerBound()                                    { return m_lowerBound; }
     289#endif
    284290  TRCLCU* getLCU()                                        { return m_LCUs; }
    285291  TRCLCU& getLCU( Int LCUIdx )                            { return m_LCUs[LCUIdx]; }
     
    321327  Int m_estHeaderBits;
    322328  Int m_estPicQP;
     329#if V0078_ADAPTIVE_LOWER_BOUND
     330  Int m_lowerBound;
     331#endif
    323332  Double m_estPicLambda;
    324333
  • branches/HTM-16.1-dev/source/Lib/TLibEncoder/TEncSampleAdaptiveOffset.cpp

    r1401 r1402  
    120120
    121121  ::memset(m_saoDisabledRate, 0, sizeof(m_saoDisabledRate));
     122#if OPTIONAL_RESET_SAO_ENCODING_AFTER_IRAP
     123  m_lastIRAPPoc = MAX_INT;
     124#endif
    122125
    123126  for(Int typeIdc=0; typeIdc < NUM_SAO_NEW_TYPES; typeIdc++)
     
    239242
    240243
     244#if OPTIONAL_RESET_SAO_ENCODING_AFTER_IRAP
     245Void TEncSampleAdaptiveOffset::SAOProcess(TComPic* pPic, Bool* sliceEnabled, const Double *lambdas, const Bool bTestSAODisableAtPictureLevel, const Double saoEncodingRate, const Double saoEncodingRateChroma, const Bool isPreDBFSamplesUsed, const Bool bResetStateAfterIRAP )
     246#else
    241247Void TEncSampleAdaptiveOffset::SAOProcess(TComPic* pPic, Bool* sliceEnabled, const Double *lambdas, const Bool bTestSAODisableAtPictureLevel, const Double saoEncodingRate, const Double saoEncodingRateChroma, Bool isPreDBFSamplesUsed )
     248#endif
    242249{
    243250  TComPicYuv* orgYuv= pPic->getPicYuvOrg();
     
    256263  }
    257264  //slice on/off
     265#if OPTIONAL_RESET_SAO_ENCODING_AFTER_IRAP
     266  decidePicParams(sliceEnabled, pPic, saoEncodingRate, saoEncodingRateChroma, bResetStateAfterIRAP);
     267#else
    258268  decidePicParams(sliceEnabled, pPic->getSlice(0)->getDepth(), saoEncodingRate, saoEncodingRateChroma);
     269#endif
    259270
    260271  //block on/off
     
    330341}
    331342
     343#if OPTIONAL_RESET_SAO_ENCODING_AFTER_IRAP
     344Void TEncSampleAdaptiveOffset::decidePicParams(Bool* sliceEnabled, const TComPic* pic, const Double saoEncodingRate, const Double saoEncodingRateChroma, const Bool bResetStateAfterIRAP)
     345#else
    332346Void TEncSampleAdaptiveOffset::decidePicParams(Bool* sliceEnabled, Int picTempLayer, const Double saoEncodingRate, const Double saoEncodingRateChroma)
    333 {
     347#endif
     348{
     349#if OPTIONAL_RESET_SAO_ENCODING_AFTER_IRAP
     350  if (pic->getSlice(0)->isIRAP())
     351  {
     352    m_lastIRAPPoc = pic->getSlice(0)->getPOC();
     353  }
     354  if (bResetStateAfterIRAP && pic->getSlice(0)->getPOC() > m_lastIRAPPoc)
     355  { // reset
     356    for (Int compIdx = 0; compIdx < MAX_NUM_COMPONENT; compIdx++)
     357{
     358      for (Int tempLayer = 1; tempLayer < MAX_TLAYER; tempLayer++)
     359      {
     360        m_saoDisabledRate[compIdx][tempLayer] = 0.0;
     361      }
     362    }
     363    m_lastIRAPPoc = MAX_INT;
     364  }
     365  const Int picTempLayer = pic->getSlice(0)->getDepth();
     366#endif
     367
    334368  //decide sliceEnabled[compIdx]
    335369  const Int numberOfComponents = getNumberValidComponents(m_chromaFormatIDC);
  • branches/HTM-16.1-dev/source/Lib/TLibEncoder/TEncSampleAdaptiveOffset.h

    r1401 r1402  
    103103  Void destroyEncData();
    104104  Void initRDOCabacCoder(TEncSbac* pcRDGoOnSbacCoder, TComSlice* pcSlice) ;
     105#if OPTIONAL_RESET_SAO_ENCODING_AFTER_IRAP
     106  Void SAOProcess(TComPic* pPic, Bool* sliceEnabled, const Double *lambdas, const Bool bTestSAODisableAtPictureLevel, const Double saoEncodingRate, const Double saoEncodingRateChroma, const Bool isPreDBFSamplesUsed, const Bool bResetStateAfterIRAP);
     107#else
    105108  Void SAOProcess(TComPic* pPic, Bool* sliceEnabled, const Double *lambdas, const Bool bTestSAODisableAtPictureLevel, const Double saoEncodingRate, const Double saoEncodingRateChroma, Bool isPreDBFSamplesUsed);
     109#endif
    106110public: //methods
    107111  Void getPreDBFStatistics(TComPic* pPic);
    108112private: //methods
    109113  Void getStatistics(SAOStatData*** blkStats, TComPicYuv* orgYuv, TComPicYuv* srcYuv,TComPic* pPic, Bool isCalculatePreDeblockSamples = false);
     114#if OPTIONAL_RESET_SAO_ENCODING_AFTER_IRAP
     115  Void decidePicParams(Bool* sliceEnabled, const TComPic* pic, const Double saoEncodingRate, const Double saoEncodingRateChroma, const Bool bResetStateAfterIRAP);
     116#else
    110117  Void decidePicParams(Bool* sliceEnabled, Int picTempLayer, const Double saoEncodingRate, const Double saoEncodingRateChroma);
     118#endif
    111119  Void decideBlkParams(TComPic* pic, Bool* sliceEnabled, SAOStatData*** blkStats, TComPicYuv* srcYuv, TComPicYuv* resYuv, SAOBlkParam* reconParams, SAOBlkParam* codedParams, const Bool bTestSAODisableAtPictureLevel, const Double saoEncodingRate, const Double saoEncodingRateChroma);
    112120  Void getBlkStats(const ComponentID compIdx, const Int channelBitDepth, SAOStatData* statsDataTypes, Pel* srcBlk, Pel* orgBlk, Int srcStride, Int orgStride, Int width, Int height, Bool isLeftAvail,  Bool isRightAvail, Bool isAboveAvail, Bool isBelowAvail, Bool isAboveLeftAvail, Bool isAboveRightAvail, Bool isCalculatePreDeblockSamples);
     
    133141  SAOStatData***         m_preDBFstatData;
    134142  Double                 m_saoDisabledRate[MAX_NUM_COMPONENT][MAX_TLAYER];
     143#if OPTIONAL_RESET_SAO_ENCODING_AFTER_IRAP
     144  Int                    m_lastIRAPPoc;
     145#endif
    135146  Int                    m_skipLinesR[MAX_NUM_COMPONENT][NUM_SAO_NEW_TYPES];
    136147  Int                    m_skipLinesB[MAX_NUM_COMPONENT][NUM_SAO_NEW_TYPES];
  • branches/HTM-16.1-dev/source/Lib/TLibEncoder/TEncSlice.h

    r1401 r1402  
    6868  // pictures
    6969  TComList<TComPic*>*     m_pcListPic;                          ///< list of pictures
    70   TComPicYuv*             m_apcPicYuvPred;                      ///< prediction picture buffer
    71   TComPicYuv*             m_apcPicYuvResi;                      ///< residual picture buffer
     70  TComPicYuv              m_picYuvPred;                         ///< prediction picture buffer
     71  TComPicYuv              m_picYuvResi;                         ///< residual picture buffer
    7272
    7373  // processing units
     
    9595#endif
    9696  Double                  m_dPicRdCost;                         ///< picture-level RD cost
    97   Double*                 m_pdRdPicLambda;                      ///< array of lambda candidates
    98   Double*                 m_pdRdPicQp;                          ///< array of picture QP candidates (double-type for lambda)
    99   Int*                    m_piRdPicQp;                          ///< array of picture QP candidates (Int-type)
     97  std::vector<Double>     m_vdRdPicLambda;                      ///< array of lambda candidates
     98  std::vector<Double>     m_vdRdPicQp;                          ///< array of picture QP candidates (double-type for lambda)
     99  std::vector<Int>        m_viRdPicQp;                          ///< array of picture QP candidates (Int-type)
    100100  TEncRateCtrl*           m_pcRateCtrl;                         ///< Rate control manager
    101101  UInt                    m_uiSliceIdx;
  • branches/HTM-16.1-dev/source/Lib/TLibEncoder/TEncTop.cpp

    r1401 r1402  
    144144      g_uiMaxCUWidth, g_uiMaxCUHeight, m_RCKeepHierarchicalBit, m_RCUseLCUSeparateModel, m_GOPList, getLayerId() );
    145145#else
    146     m_cRateCtrl.init( m_framesToBeEncoded, m_RCTargetBitrate, m_iFrameRate, m_iGOPSize, m_iSourceWidth, m_iSourceHeight,
    147         m_maxCUWidth, m_maxCUHeight, m_RCKeepHierarchicalBit, m_RCUseLCUSeparateModel, m_GOPList );
     146    m_cRateCtrl.init( m_framesToBeEncoded, m_RCTargetBitrate, (Int)( (Double)m_iFrameRate/m_temporalSubsampleRatio + 0.5), m_iGOPSize, m_iSourceWidth, m_iSourceHeight,
     147                      m_maxCUWidth, m_maxCUHeight,m_RCKeepHierarchicalBit, m_RCUseLCUSeparateModel, m_GOPList );
    148148#endif
    149149  }
     
    951951  }
    952952
     953  if (getTemporalSubsampleRatio()>1)
     954  {
     955    UInt temporalSubsampleRatio = getTemporalSubsampleRatio();
     956    if ( Double(timingInfo->getNumUnitsInTick()) * temporalSubsampleRatio > std::numeric_limits<UInt>::max() )
     957    {
     958      timingInfo->setTimeScale( timingInfo->getTimeScale() / temporalSubsampleRatio );
     959    }
     960    else
     961    {
     962      timingInfo->setNumUnitsInTick( timingInfo->getNumUnitsInTick() * temporalSubsampleRatio );
     963    }
     964  }
     965
    953966  Bool rateCnt = ( bitRate > 0 );
    954967  hrd->setNalHrdParametersPresentFlag( rateCnt );
     
    11351148  m_cPPS.setQpOffset(COMPONENT_Cb, m_chromaCbQpOffset );
    11361149  m_cPPS.setQpOffset(COMPONENT_Cr, m_chromaCrQpOffset );
     1150#if W0038_CQP_ADJ
     1151  Bool bChromaDeltaQPEnabled = false;
     1152  {
     1153    bChromaDeltaQPEnabled = ( m_sliceChromaQpOffsetIntraOrPeriodic[0] || m_sliceChromaQpOffsetIntraOrPeriodic[1] );
     1154    if( !bChromaDeltaQPEnabled )
     1155    {
     1156      for( Int i=0; i<m_iGOPSize; i++ )
     1157      {
     1158        if( m_GOPList[i].m_CbQPoffset || m_GOPList[i].m_CrQPoffset )
     1159        {
     1160          bChromaDeltaQPEnabled = true;
     1161          break;
     1162        }
     1163      }
     1164    }
     1165  }
     1166  m_cPPS.setSliceChromaQpFlag(bChromaDeltaQPEnabled);
     1167#endif
    11371168
    11381169  m_cPPS.setEntropyCodingSyncEnabledFlag( m_entropyCodingSyncEnabledFlag );
Note: See TracChangeset for help on using the changeset viewer.