Changeset 389 in SHVCSoftware for branches


Ignore:
Timestamp:
10 Sep 2013, 17:27:55 (11 years ago)
Author:
qualcomm
Message:

Signaling representation format in VPS (MACRO: REPN_FORMAT_IN_VPS)

Includes signaling of representation format - including picture resolution, bit depth, chroma format - in the VPS, with the option of updating them in the SPS. The configuration file has "RepFormatIdx%d" added to indicate for each layer which representation format is used. The rep_format() structures are automatically created by the encoder. If the bit depth and the chroma format are also changed across layers, some more configuration support would be needed.

From: Adarsh K. Ramasubramonian <aramasub@…>

Location:
branches/SHM-3.1-dev
Files:
67 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-3.1-dev/cfg/per-sequence-svc-avcbase/BQTerrace-1.5x.cfg

    r310 r389  
    88SourceWidth0                  : 1280        # Input  frame width
    99SourceHeight0                 : 720         # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 64          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 1920        # Input  frame width
    1718SourceHeight1                 : 1080        # Input  frame height
     19RepFormatIdx1                             : 1                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 64          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc-avcbase/BQTerrace-2x.cfg

    r310 r389  
    88SourceWidth0                  : 960         # Input  frame width
    99SourceHeight0                 : 544         # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 64          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 1920        # Input  frame width
    1718SourceHeight1                 : 1080        # Input  frame height
     19RepFormatIdx1                             : 1                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 64          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc-avcbase/BQTerrace-SNR.cfg

    r365 r389  
    88SourceWidth0                  : 1920        # Input  frame width
    99SourceHeight0                 : 1088        # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 64          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 1920        # Input  frame width
    1718SourceHeight1                 : 1080        # Input  frame height
     19RepFormatIdx1                             : 1                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 64          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc-avcbase/BasketballDrive-1.5x.cfg

    r310 r389  
    88SourceWidth0                  : 1280        # Input  frame width
    99SourceHeight0                 : 720         # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 48          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 1920        # Input  frame width
    1718SourceHeight1                 : 1080        # Input  frame height
     19RepFormatIdx1                             : 1                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 48          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc-avcbase/BasketballDrive-2x.cfg

    r310 r389  
    88SourceWidth0                  : 960         # Input  frame width
    99SourceHeight0                 : 544         # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 48          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 1920        # Input  frame width
    1718SourceHeight1                 : 1080        # Input  frame height
     19RepFormatIdx1                             : 1                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 48          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc-avcbase/BasketballDrive-SNR.cfg

    r365 r389  
    88SourceWidth0                  : 1920        # Input  frame width
    99SourceHeight0                 : 1088        # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 48          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 1920        # Input  frame width
    1718SourceHeight1                 : 1080        # Input  frame height
     19RepFormatIdx1                             : 1                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 48          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc-avcbase/Cactus-1.5x.cfg

    r310 r389  
    88SourceWidth0                  : 1280        # Input  frame width
    99SourceHeight0                 : 720         # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 48          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 1920        # Input  frame width
    1718SourceHeight1                 : 1080        # Input  frame height
     19RepFormatIdx1                             : 1                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 48          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc-avcbase/Cactus-2x.cfg

    r310 r389  
    88SourceWidth0                  : 960         # Input  frame width
    99SourceHeight0                 : 544         # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 48          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 1920        # Input  frame width
    1718SourceHeight1                 : 1080        # Input  frame height
     19RepFormatIdx1                             : 1                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 48          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc-avcbase/Cactus-SNR.cfg

    r365 r389  
    88SourceWidth0                  : 1920        # Input  frame width
    99SourceHeight0                 : 1088        # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 48          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 1920        # Input  frame width
    1718SourceHeight1                 : 1080        # Input  frame height
     19RepFormatIdx1                             : 1                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 48          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc-avcbase/Kimono-1.5x.cfg

    r310 r389  
    88SourceWidth0                  : 1280        # Input  frame width
    99SourceHeight0                 : 720         # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 24          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 1920        # Input  frame width
    1718SourceHeight1                 : 1080        # Input  frame height
     19RepFormatIdx1                             : 1                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 24          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc-avcbase/Kimono-2x.cfg

    r310 r389  
    88SourceWidth0                  : 960         # Input  frame width
    99SourceHeight0                 : 544         # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 24          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 1920        # Input  frame width
    1718SourceHeight1                 : 1080        # Input  frame height
     19RepFormatIdx1                             : 1                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 24          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc-avcbase/Kimono-SNR.cfg

    r365 r389  
    88SourceWidth0                  : 1920        # Input  frame width
    99SourceHeight0                 : 1088        # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 24          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 1920        # Input  frame width
    1718SourceHeight1                 : 1080        # Input  frame height
     19RepFormatIdx1                             : 1                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 24          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc-avcbase/ParkScene-1.5x.cfg

    r310 r389  
    88SourceWidth0                  : 1280        # Input  frame width
    99SourceHeight0                 : 720         # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 24          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 1920        # Input  frame width
    1718SourceHeight1                 : 1080        # Input  frame height
     19RepFormatIdx1                             : 1                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 24          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc-avcbase/ParkScene-2x.cfg

    r310 r389  
    88SourceWidth0                  : 960         # Input  frame width
    99SourceHeight0                 : 544         # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 24          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 1920        # Input  frame width
    1718SourceHeight1                 : 1080        # Input  frame height
     19RepFormatIdx1                             : 1                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 24          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc-avcbase/ParkScene-SNR.cfg

    r365 r389  
    88SourceWidth0                  : 1920        # Input  frame width
    99SourceHeight0                 : 1088        # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 24          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 1920        # Input  frame width
    1718SourceHeight1                 : 1080        # Input  frame height
     19RepFormatIdx1                             : 1                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 24          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc-avcbase/PeopleOnStreet-2x.cfg

    r310 r389  
    88SourceWidth0                  : 1280        # Input  frame width
    99SourceHeight0                 : 800         # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 32          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 2560        # Input  frame width
    1718SourceHeight1                 : 1600        # Input  frame height
     19RepFormatIdx1                             : 1                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 32          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc-avcbase/PeopleOnStreet-SNR.cfg

    r310 r389  
    88SourceWidth0                  : 2560        # Input  frame width
    99SourceHeight0                 : 1600        # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 32          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 2560        # Input  frame width
    1718SourceHeight1                 : 1600        # Input  frame height
     19RepFormatIdx1                             : 0                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 32          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc-avcbase/Traffic-2x.cfg

    r310 r389  
    88SourceWidth0                  : 1280        # Input  frame width
    99SourceHeight0                 : 800         # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 32          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 2560        # Input  frame width
    1718SourceHeight1                 : 1600        # Input  frame height
     19RepFormatIdx1                             : 1                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 32          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc-avcbase/Traffic-SNR.cfg

    r310 r389  
    88SourceWidth0                  : 2560        # Input  frame width
    99SourceHeight0                 : 1600        # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 32          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 2560        # Input  frame width
    1718SourceHeight1                 : 1600        # Input  frame height
     19RepFormatIdx1                             : 0                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 32          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc/BQTerrace-1.5x.cfg

    r310 r389  
    88SourceWidth0                  : 1280        # Input  frame width
    99SourceHeight0                 : 720         # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 64          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 1920        # Input  frame width
    1718SourceHeight1                 : 1080        # Input  frame height
     19RepFormatIdx1                             : 1                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 64          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc/BQTerrace-2x.cfg

    r310 r389  
    88SourceWidth0                  : 960         # Input  frame width
    99SourceHeight0                 : 540         # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 64          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 1920        # Input  frame width
    1718SourceHeight1                 : 1080        # Input  frame height
     19RepFormatIdx1                             : 1                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 64          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc/BQTerrace-SNR.cfg

    r310 r389  
    88SourceWidth0                  : 1920        # Input  frame width
    99SourceHeight0                 : 1080        # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 64          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 1920        # Input  frame width
    1718SourceHeight1                 : 1080        # Input  frame height
     19RepFormatIdx1                             : 0                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 64          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc/BasketballDrive-1.5x.cfg

    r310 r389  
    88SourceWidth0                  : 1280        # Input  frame width
    99SourceHeight0                 : 720         # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 48          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 1920        # Input  frame width
    1718SourceHeight1                 : 1080        # Input  frame height
     19RepFormatIdx1                             : 1                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 48          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc/BasketballDrive-2x.cfg

    r310 r389  
    88SourceWidth0                  : 960         # Input  frame width
    99SourceHeight0                 : 540         # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 48          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 1920        # Input  frame width
    1718SourceHeight1                 : 1080        # Input  frame height
     19RepFormatIdx1                             : 1                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 48          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc/BasketballDrive-SNR.cfg

    r310 r389  
    88SourceWidth0                  : 1920        # Input  frame width
    99SourceHeight0                 : 1080        # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 48          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 1920        # Input  frame width
    1718SourceHeight1                 : 1080        # Input  frame height
     19RepFormatIdx1                             : 0                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 48          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc/Cactus-1.5x.cfg

    r310 r389  
    88SourceWidth0                  : 1280        # Input  frame width
    99SourceHeight0                 : 720         # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 48          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 1920        # Input  frame width
    1718SourceHeight1                 : 1080        # Input  frame height
     19RepFormatIdx1                             : 1                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 48          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc/Cactus-2x.cfg

    r310 r389  
    88SourceWidth0                  : 960         # Input  frame width
    99SourceHeight0                 : 540         # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 48          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 1920        # Input  frame width
    1718SourceHeight1                 : 1080        # Input  frame height
     19RepFormatIdx1                             : 1                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 48          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc/Cactus-SNR.cfg

    r310 r389  
    88SourceWidth0                  : 1920        # Input  frame width
    99SourceHeight0                 : 1080        # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 48          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 1920        # Input  frame width
    1718SourceHeight1                 : 1080        # Input  frame height
     19RepFormatIdx1                             : 0                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 48          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc/Kimono-1.5x.cfg

    r310 r389  
    88SourceWidth0                  : 1280        # Input  frame width
    99SourceHeight0                 : 720         # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 24          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 1920        # Input  frame width
    1718SourceHeight1                 : 1080        # Input  frame height
     19RepFormatIdx1                             : 1                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 24          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc/Kimono-2x.cfg

    r310 r389  
    88SourceWidth0                  : 960         # Input  frame width
    99SourceHeight0                 : 540         # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 24          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 1920        # Input  frame width
    1718SourceHeight1                 : 1080        # Input  frame height
     19RepFormatIdx1                             : 1                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 24          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc/Kimono-SNR.cfg

    r310 r389  
    88SourceWidth0                  : 1920        # Input  frame width
    99SourceHeight0                 : 1080        # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 24          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 1920        # Input  frame width
    1718SourceHeight1                 : 1080        # Input  frame height
     19RepFormatIdx1                             : 0                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 24          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc/ParkScene-1.5x.cfg

    r310 r389  
    88SourceWidth0                  : 1280        # Input  frame width
    99SourceHeight0                 : 720         # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 24          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 1920        # Input  frame width
    1718SourceHeight1                 : 1080        # Input  frame height
     19RepFormatIdx1                             : 1                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 24          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc/ParkScene-2x.cfg

    r310 r389  
    88SourceWidth0                  : 960         # Input  frame width
    99SourceHeight0                 : 540         # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 24          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 1920        # Input  frame width
    1718SourceHeight1                 : 1080        # Input  frame height
     19RepFormatIdx1                             : 1                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 24          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc/ParkScene-SNR.cfg

    r310 r389  
    88SourceWidth0                  : 1920        # Input  frame width
    99SourceHeight0                 : 1080        # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 24          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 1920        # Input  frame width
    1718SourceHeight1                 : 1080        # Input  frame height
     19RepFormatIdx1                             : 0                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 24          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc/PeopleOnStreet-2x.cfg

    r310 r389  
    88SourceWidth0                  : 1280        # Input  frame width
    99SourceHeight0                 : 800         # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 32          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 2560        # Input  frame width
    1718SourceHeight1                 : 1600        # Input  frame height
     19RepFormatIdx1                             : 1                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 32          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc/PeopleOnStreet-SNR.cfg

    r310 r389  
    88SourceWidth0                  : 2560        # Input  frame width
    99SourceHeight0                 : 1600        # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 32          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 2560        # Input  frame width
    1718SourceHeight1                 : 1600        # Input  frame height
     19RepFormatIdx1                             : 0                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 32          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc/Traffic-2x.cfg

    r310 r389  
    88SourceWidth0                  : 1280        # Input  frame width
    99SourceHeight0                 : 800         # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 32          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 2560        # Input  frame width
    1718SourceHeight1                 : 1600        # Input  frame height
     19RepFormatIdx1                             : 1                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 32          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/cfg/per-sequence-svc/Traffic-SNR.cfg

    r310 r389  
    88SourceWidth0                  : 2560        # Input  frame width
    99SourceHeight0                 : 1600        # Input  frame height
     10RepFormatIdx0                             : 0                   # Index of corresponding rep_format() in the VPS
    1011IntraPeriod0                  : 32          # Period of I-Frame ( -1 = only first)
    1112ConformanceMode0              : 1           # conformance mode
     
    1617SourceWidth1                  : 2560        # Input  frame width
    1718SourceHeight1                 : 1600        # Input  frame height
     19RepFormatIdx1                             : 0                   # Index of corresponding rep_format() in the VPS
    1820IntraPeriod1                  : 32          # Period of I-Frame ( -1 = only first)
    1921ConformanceMode1              : 1           # conformance mode
  • branches/SHM-3.1-dev/source/App/TAppDecoder/TAppDecTop.cpp

    r374 r389  
    551551        const Window &conf = pcPic->getConformanceWindow();
    552552        const Window &defDisp = m_respectDefDispWindow ? pcPic->getDefDisplayWindow() : Window();
     553#if REPN_FORMAT_IN_VPS
     554        UInt chromaFormatIdc = pcPic->getSlice(0)->getChromaFormatIdc();
     555        Int xScal =  TComSPS::getWinUnitX( chromaFormatIdc ), yScal = TComSPS::getWinUnitY( chromaFormatIdc );
     556        m_acTVideoIOYuvReconFile[layerId].write( pcPic->getPicYuvRec(),
     557                                       conf.getWindowLeftOffset()  * xScal + defDisp.getWindowLeftOffset(),
     558                                       conf.getWindowRightOffset() * xScal + defDisp.getWindowRightOffset(),
     559                                       conf.getWindowTopOffset()   * yScal + defDisp.getWindowTopOffset(),
     560                                       conf.getWindowBottomOffset()* yScal + defDisp.getWindowBottomOffset() );
     561
     562#else
    553563        m_acTVideoIOYuvReconFile[layerId].write( pcPic->getPicYuvRec(),
    554564                                       conf.getWindowLeftOffset() + defDisp.getWindowLeftOffset(),
     
    556566                                       conf.getWindowTopOffset() + defDisp.getWindowTopOffset(),
    557567                                       conf.getWindowBottomOffset() + defDisp.getWindowBottomOffset() );
     568#endif
    558569      }
    559570     
     
    630641        const Window &conf = pcPic->getConformanceWindow();
    631642        const Window &defDisp = m_respectDefDispWindow ? pcPic->getDefDisplayWindow() : Window();
     643#if REPN_FORMAT_IN_VPS
     644        UInt chromaFormatIdc = pcPic->getSlice(0)->getChromaFormatIdc();
     645        Int xScal =  TComSPS::getWinUnitX( chromaFormatIdc ), yScal = TComSPS::getWinUnitY( chromaFormatIdc );
     646        m_acTVideoIOYuvReconFile[layerId].write( pcPic->getPicYuvRec(),
     647                                       conf.getWindowLeftOffset()  *xScal + defDisp.getWindowLeftOffset(),
     648                                       conf.getWindowRightOffset() *xScal + defDisp.getWindowRightOffset(),
     649                                       conf.getWindowTopOffset()   *yScal + defDisp.getWindowTopOffset(),
     650                                       conf.getWindowBottomOffset()*yScal + defDisp.getWindowBottomOffset() );
     651
     652#else
    632653        m_acTVideoIOYuvReconFile[layerId].write( pcPic->getPicYuvRec(),
    633654                                       conf.getWindowLeftOffset() + defDisp.getWindowLeftOffset(),
     
    635656                                       conf.getWindowTopOffset() + defDisp.getWindowTopOffset(),
    636657                                       conf.getWindowBottomOffset() + defDisp.getWindowBottomOffset() );
     658#endif
    637659      }
    638660     
  • branches/SHM-3.1-dev/source/App/TAppEncoder/TAppEncCfg.cpp

    r377 r389  
    351351  Double* cfg_fQP           [MAX_LAYERS];
    352352
     353#if REPN_FORMAT_IN_VPS
     354  Int*    cfg_repFormatIdx  [MAX_LAYERS];
     355#endif
    353356  Int*    cfg_SourceWidth   [MAX_LAYERS];
    354357  Int*    cfg_SourceHeight  [MAX_LAYERS];
     
    399402    cfg_ReconFile[layer]    = &m_acLayerCfg[layer].m_cReconFile;
    400403    cfg_fQP[layer]          = &m_acLayerCfg[layer].m_fQP;
     404#if REPN_FORMAT_IN_VPS
     405    cfg_repFormatIdx[layer] = &m_acLayerCfg[layer].m_repFormatIdx;
     406#endif
    401407    cfg_SourceWidth[layer]  = &m_acLayerCfg[layer].m_iSourceWidth;
    402408    cfg_SourceHeight[layer] = &m_acLayerCfg[layer].m_iSourceHeight;
     
    469475  ("FrameRate%d,-fr%d",       cfg_FrameRate,  0, MAX_LAYERS, "Frame rate for layer %d")
    470476  ("LambdaModifier%d,-LM%d",  m_adLambdaModifier, ( double )1.0, MAX_TLAYER, "Lambda modifier for temporal layer %d")
     477#if REPN_FORMAT_IN_VPS
     478  ("RepFormatIdx%d",          cfg_repFormatIdx, -1, MAX_LAYERS, "Index to the representation format structure used from the VPS")
     479#endif
    471480#if VPS_EXTN_DIRECT_REF_LAYERS
    472481#if M0457_PREDICTION_INDICATIONS
     
    11271136#endif
    11281137  m_scalingListFile = cfg_ScalingListFile.empty() ? NULL : strdup(cfg_ScalingListFile.c_str());
    1129  
     1138
     1139#if REPN_FORMAT_IN_VPS_123
     1140  for(Int layer = 0; layer < MAX_LAYERS; layer++)
     1141  {
     1142    m_acLayerCfg[layer].setSourceHeight( m_repFormatCfg[ m_acLayerCfg[layer].getRepFormatIdx() ].m_picHeightInLumaSamples);
     1143    m_acLayerCfg[layer].setSourceWidth ( m_repFormatCfg[ m_acLayerCfg[layer].getRepFormatIdx() ].m_picWidthInLumaSamples );
     1144  }
     1145#endif
    11301146  /* rules for input, output and internal bitdepths as per help text */
    11311147  if (!m_internalBitDepthY) { m_internalBitDepthY = m_inputBitDepthY; }
  • branches/SHM-3.1-dev/source/App/TAppEncoder/TAppEncCfg.h

    r377 r389  
    354354  Int       m_adaptiveResolutionChange;                       ///< Indicate adaptive resolution change frame
    355355#endif
     356#if REPN_FORMAT_IN_VPS
     357  RepFormatCfg m_repFormatCfg[16];                            ///< Rep_format structures
     358#endif
    356359public:
    357360  TAppEncCfg();
     
    381384  Void cfgStringToArray(Int **arr, string cfgString, Int numEntries, const char* logString);
    382385#endif
     386#if REPN_FORMAT_IN_VPS
     387  RepFormatCfg* getRepFormatCfg(Int i)  { return &m_repFormatCfg[i]; }
     388#endif
    383389#endif
    384390};// END CLASS DEFINITION TAppEncCfg
  • branches/SHM-3.1-dev/source/App/TAppEncoder/TAppEncLayerCfg.cpp

    r313 r389  
    3232  m_conformanceMode( 0 ),
    3333  m_aidQP(NULL)
     34#if REPN_FORMAT_IN_VPS
     35, m_repFormatIdx (-1)
     36#endif
    3437{
    3538  m_confLeft = m_confRight = m_confTop = m_confBottom = 0;
  • branches/SHM-3.1-dev/source/App/TAppEncoder/TAppEncLayerCfg.h

    r345 r389  
    8484  GOPEntry  m_GOPListLayer[MAX_GOP];                            ///< for layer
    8585#endif
     86#if REPN_FORMAT_IN_VPS
     87  Int       m_repFormatIdx;
     88#endif
    8689public:
    8790  TAppEncLayerCfg();
     
    147150  GOPEntry getGOPEntry(Int i )        {return m_GOPListLayer[i];  }
    148151#endif
     152#if REPN_FORMAT_IN_VPS
     153  Int     getRepFormatIdx()           { return m_repFormatIdx; }
     154  Void    setSourceWidth(Int x)            {m_iSourceWidth = x;     }
     155  Void    setSourceHeight(Int x)           {m_iSourceHeight = x;    }
     156#endif
    149157}; // END CLASS DEFINITION TAppEncLayerCfg
    150158
  • branches/SHM-3.1-dev/source/App/TAppEncoder/TAppEncTop.cpp

    r377 r389  
    9090    vps->setMaxDecPicBuffering             ( m_maxDecPicBuffering[i], i );
    9191  }
    92 
     92#if REPN_FORMAT_IN_VPS
     93  vps->setRepFormatIdxPresentFlag( true );   // Could be disabled to optimize in some cases.
     94  Int maxRepFormatIdx = -1;
     95  for(UInt layer=0; layer < m_numLayers; layer++)
     96  {
     97    assert( m_acLayerCfg[layer].getRepFormatIdx() != -1, "RepFormatIdx not assigned for a layer" );   
     98    vps->setVpsRepFormatIdx( layer, m_acLayerCfg[layer].getRepFormatIdx() );
     99    maxRepFormatIdx = std::max( m_acLayerCfg[layer].getRepFormatIdx(), maxRepFormatIdx );
     100  }
     101  assert( vps->getVpsRepFormatIdx( 0 ) == 0 );  // Base layer should point to the first one.
     102  Int* mapIdxToLayer = new Int[maxRepFormatIdx + 1];
     103  // Check that all the indices from 0 to maxRepFormatIdx are used in the VPS
     104  for(Int i = 0; i <= maxRepFormatIdx; i++)
     105  {
     106    mapIdxToLayer[i] = -1;
     107    UInt layer;
     108    for(layer=0; layer < m_numLayers; layer++)
     109    {
     110      if( vps->getVpsRepFormatIdx(layer) == i )
     111      {
     112        mapIdxToLayer[i] = layer;
     113        break;
     114      }
     115    }
     116    assert( layer != m_numLayers );   // One of the VPS Rep format indices not set
     117  }
     118  vps->setVpsNumRepFormats( maxRepFormatIdx + 1 );
     119  for(UInt idx=0; idx < vps->getVpsNumRepFormats(); idx++)
     120  {
     121    RepFormat *repFormat = vps->getVpsRepFormat( idx );   
     122    repFormat->setPicWidthVpsInLumaSamples  ( m_acLayerCfg[mapIdxToLayer[idx]].getSourceWidth()   );
     123    repFormat->setPicHeightVpsInLumaSamples ( m_acLayerCfg[mapIdxToLayer[idx]].getSourceHeight()  );
     124    repFormat->setChromaFormatVpsIdc        ( 1                                             );  // Need modification to change for each layer - corresponds to 420
     125    repFormat->setSeparateColourPlaneVpsFlag( 0                                             );  // Need modification to change for each layer
     126    repFormat->setBitDepthVpsLuma           ( getInternalBitDepthY()                        );  // Need modification to change for each layer
     127    repFormat->setBitDepthVpsChroma         ( getInternalBitDepthC()                        );  // Need modification to change for each layer
     128  }
     129  delete [] mapIdxToLayer;
     130#endif
    93131  for(UInt layer=0; layer<m_numLayers; layer++)
    94132  {
  • branches/SHM-3.1-dev/source/Lib/TLibCommon/TComDataCU.cpp

    r378 r389  
    12731273  UInt uiNumPartInCUWidth = m_pcPic->getNumPartInWidth();
    12741274 
     1275#if REPN_FORMAT_IN_VPS
     1276  if( ( m_pcPic->getCU(m_uiCUAddr)->getCUPelX() + g_auiRasterToPelX[uiAbsPartIdxRT] + m_pcPic->getMinCUWidth() ) >= m_pcSlice->getPicWidthInLumaSamples() )
     1277#else
    12751278  if( ( m_pcPic->getCU(m_uiCUAddr)->getCUPelX() + g_auiRasterToPelX[uiAbsPartIdxRT] + m_pcPic->getMinCUWidth() ) >= m_pcSlice->getSPS()->getPicWidthInLumaSamples() )
     1279#endif
    12761280  {
    12771281    uiARPartUnitIdx = MAX_UINT;
     
    13351339  UInt uiAbsZorderCUIdxLB = g_auiZscanToRaster[ m_uiAbsIdxInLCU ] + (m_puhHeight[0] / m_pcPic->getMinCUHeight() - 1)*m_pcPic->getNumPartInWidth();
    13361340  UInt uiNumPartInCUWidth = m_pcPic->getNumPartInWidth();
    1337  
     1341
     1342#if REPN_FORMAT_IN_VPS
     1343  if( ( m_pcPic->getCU(m_uiCUAddr)->getCUPelY() + g_auiRasterToPelY[uiAbsPartIdxLB] + m_pcPic->getMinCUHeight() ) >= m_pcSlice->getPicHeightInLumaSamples() )
     1344#else
    13381345  if( ( m_pcPic->getCU(m_uiCUAddr)->getCUPelY() + g_auiRasterToPelY[uiAbsPartIdxLB] + m_pcPic->getMinCUHeight() ) >= m_pcSlice->getSPS()->getPicHeightInLumaSamples() )
     1346#endif
    13391347  {
    13401348    uiBLPartUnitIdx = MAX_UINT;
     
    13841392  UInt uiNumPartInCUWidth = m_pcPic->getNumPartInWidth();
    13851393 
     1394#if REPN_FORMAT_IN_VPS
     1395  if( ( m_pcPic->getCU(m_uiCUAddr)->getCUPelY() + g_auiRasterToPelY[uiAbsPartIdxLB] + (m_pcPic->getPicSym()->getMinCUHeight() * uiPartUnitOffset)) >= m_pcSlice->getPicHeightInLumaSamples())
     1396#else
    13861397  if( ( m_pcPic->getCU(m_uiCUAddr)->getCUPelY() + g_auiRasterToPelY[uiAbsPartIdxLB] + (m_pcPic->getPicSym()->getMinCUHeight() * uiPartUnitOffset)) >= m_pcSlice->getSPS()->getPicHeightInLumaSamples())
     1398#endif
    13871399  {
    13881400    uiBLPartUnitIdx = MAX_UINT;
     
    14321444  UInt uiNumPartInCUWidth = m_pcPic->getNumPartInWidth();
    14331445 
     1446#if REPN_FORMAT_IN_VPS
     1447  if( ( m_pcPic->getCU(m_uiCUAddr)->getCUPelX() + g_auiRasterToPelX[uiAbsPartIdxRT] + (m_pcPic->getPicSym()->getMinCUHeight() * uiPartUnitOffset)) >= m_pcSlice->getPicWidthInLumaSamples() )
     1448#else
    14341449  if( ( m_pcPic->getCU(m_uiCUAddr)->getCUPelX() + g_auiRasterToPelX[uiAbsPartIdxRT] + (m_pcPic->getPicSym()->getMinCUHeight() * uiPartUnitOffset)) >= m_pcSlice->getSPS()->getPicWidthInLumaSamples() )
     1450#endif
    14351451  {
    14361452    uiARPartUnitIdx = MAX_UINT;
     
    26842700    Int uiLCUIdx = -1;
    26852701
     2702#if REPN_FORMAT_IN_VPS
     2703    if      ( ( m_pcPic->getCU(m_uiCUAddr)->getCUPelX() + g_auiRasterToPelX[uiAbsPartIdxTmp] + m_pcPic->getMinCUWidth() ) >= m_pcSlice->getPicWidthInLumaSamples() )  // image boundary check
     2704    {
     2705    }
     2706    else if ( ( m_pcPic->getCU(m_uiCUAddr)->getCUPelY() + g_auiRasterToPelY[uiAbsPartIdxTmp] + m_pcPic->getMinCUHeight() ) >= m_pcSlice->getPicHeightInLumaSamples() )
     2707    {
     2708    }
     2709#else
    26862710    if      ( ( m_pcPic->getCU(m_uiCUAddr)->getCUPelX() + g_auiRasterToPelX[uiAbsPartIdxTmp] + m_pcPic->getMinCUWidth() ) >= m_pcSlice->getSPS()->getPicWidthInLumaSamples() )  // image boundary check
    26872711    {
     
    26902714    {
    26912715    }
     2716#endif
    26922717    else
    26932718    {
     
    30203045    uiAbsPartIdx = g_auiZscanToRaster[uiPartIdxRB];
    30213046    Int uiLCUIdx = -1;
     3047#if REPN_FORMAT_IN_VPS
     3048    if ( ( m_pcPic->getCU(m_uiCUAddr)->getCUPelX() + g_auiRasterToPelX[uiAbsPartIdx] + m_pcPic->getMinCUWidth() ) >= m_pcSlice->getPicWidthInLumaSamples() )  // image boundary check
     3049    {
     3050    }
     3051    else if ( ( m_pcPic->getCU(m_uiCUAddr)->getCUPelY() + g_auiRasterToPelY[uiAbsPartIdx] + m_pcPic->getMinCUHeight() ) >= m_pcSlice->getPicHeightInLumaSamples() )
     3052    {
     3053    }
     3054#else
    30223055    if ( ( m_pcPic->getCU(m_uiCUAddr)->getCUPelX() + g_auiRasterToPelX[uiAbsPartIdx] + m_pcPic->getMinCUWidth() ) >= m_pcSlice->getSPS()->getPicWidthInLumaSamples() )  // image boundary check
    30233056    {
     
    30263059    {
    30273060    }
     3061#endif
    30283062    else
    30293063    {
     
    30953129  Int  iMvShift = 2;
    30963130  Int iOffset = 8;
     3131#if REPN_FORMAT_IN_VPS
     3132  Int iHorMax = ( m_pcSlice->getPicWidthInLumaSamples() + iOffset - m_uiCUPelX - 1 ) << iMvShift;
     3133#else
    30973134  Int iHorMax = ( m_pcSlice->getSPS()->getPicWidthInLumaSamples() + iOffset - m_uiCUPelX - 1 ) << iMvShift;
     3135#endif
    30983136  Int iHorMin = (       -(Int)g_uiMaxCUWidth - iOffset - (Int)m_uiCUPelX + 1 ) << iMvShift;
    30993137 
     3138#if REPN_FORMAT_IN_VPS
     3139  Int iVerMax = ( m_pcSlice->getPicHeightInLumaSamples() + iOffset - m_uiCUPelY - 1 ) << iMvShift;
     3140#else
    31003141  Int iVerMax = ( m_pcSlice->getSPS()->getPicHeightInLumaSamples() + iOffset - m_uiCUPelY - 1 ) << iMvShift;
     3142#endif
    31013143  Int iVerMin = (       -(Int)g_uiMaxCUHeight - iOffset - (Int)m_uiCUPelY + 1 ) << iMvShift;
    31023144 
  • branches/SHM-3.1-dev/source/Lib/TLibCommon/TComLoopFilter.cpp

    r313 r389  
    180180      UInt uiLPelX   = pcCU->getCUPelX() + g_auiRasterToPelX[ g_auiZscanToRaster[uiAbsZorderIdx] ];
    181181      UInt uiTPelY   = pcCU->getCUPelY() + g_auiRasterToPelY[ g_auiZscanToRaster[uiAbsZorderIdx] ];
     182#if REPN_FORMAT_IN_VPS
     183      if( ( uiLPelX < pcCU->getSlice()->getPicWidthInLumaSamples() ) && ( uiTPelY < pcCU->getSlice()->getPicHeightInLumaSamples() ) )
     184#else
    182185      if( ( uiLPelX < pcCU->getSlice()->getSPS()->getPicWidthInLumaSamples() ) && ( uiTPelY < pcCU->getSlice()->getSPS()->getPicHeightInLumaSamples() ) )
     186#endif
    183187      {
    184188        xDeblockCU( pcCU, uiAbsZorderIdx, uiDepth+1, Edge );
  • branches/SHM-3.1-dev/source/Lib/TLibCommon/TComPic.cpp

    r377 r389  
    213213  UInt maxNumSUInLCU = getNumPartInCU();
    214214  UInt numLCUInPic   = getNumCUsInFrame();
     215#if REPN_FORMAT_IN_VPS
     216  UInt picWidth      = getSlice(0)->getPicWidthInLumaSamples();
     217  UInt picHeight     = getSlice(0)->getPicHeightInLumaSamples();
     218#else
    215219  UInt picWidth      = getSlice(0)->getSPS()->getPicWidthInLumaSamples();
    216220  UInt picHeight     = getSlice(0)->getSPS()->getPicHeightInLumaSamples();
     221#endif
    217222  Int  numLCUsInPicWidth = getFrameWidthInCU();
    218223  Int  numLCUsInPicHeight= getFrameHeightInCU();
  • branches/SHM-3.1-dev/source/Lib/TLibCommon/TComSampleAdaptiveOffset.cpp

    r313 r389  
    14141414      UInt uiLPelX   = pcCU->getCUPelX() + g_auiRasterToPelX[ g_auiZscanToRaster[uiAbsZorderIdx] ];
    14151415      UInt uiTPelY   = pcCU->getCUPelY() + g_auiRasterToPelY[ g_auiZscanToRaster[uiAbsZorderIdx] ];
     1416#if REPN_FORMAT_IN_VPS
     1417      if( ( uiLPelX < pcCU->getSlice()->getPicWidthInLumaSamples() ) && ( uiTPelY < pcCU->getSlice()->getPicHeightInLumaSamples() ) )
     1418#else
    14161419      if( ( uiLPelX < pcCU->getSlice()->getSPS()->getPicWidthInLumaSamples() ) && ( uiTPelY < pcCU->getSlice()->getSPS()->getPicHeightInLumaSamples() ) )
     1420#endif
    14171421        xPCMCURestoration( pcCU, uiAbsZorderIdx, uiDepth+1 );
    14181422    }
  • branches/SHM-3.1-dev/source/Lib/TLibCommon/TComSlice.cpp

    r387 r389  
    15871587}
    15881588
     1589#if REPN_FORMAT_IN_VPS
     1590UInt TComSlice::getPicWidthInLumaSamples()
     1591{
     1592  TComSPS *sps = getSPS();
     1593  TComVPS *vps = getVPS();
     1594  UInt retVal, layerId = getLayerId();
     1595  if( ( layerId == 0 ) || sps->getUpdateRepFormatFlag() )
     1596  {
     1597    retVal = sps->getPicWidthInLumaSamples();
     1598  }
     1599  else
     1600  {
     1601    retVal = vps->getVpsRepFormat( vps->getVpsRepFormatIdx(layerId) )->getPicWidthVpsInLumaSamples();
     1602  }
     1603  return retVal;
     1604}
     1605UInt TComSlice::getPicHeightInLumaSamples()
     1606{
     1607  TComSPS *sps = getSPS();
     1608  TComVPS *vps = getVPS();
     1609  UInt retVal, layerId = getLayerId();
     1610  if( ( layerId == 0 ) || sps->getUpdateRepFormatFlag() )
     1611  {
     1612    retVal = sps->getPicHeightInLumaSamples();
     1613  }
     1614  else
     1615  {
     1616    retVal = vps->getVpsRepFormat( vps->getVpsRepFormatIdx(layerId) )->getPicHeightVpsInLumaSamples();
     1617  }
     1618  return retVal;
     1619}
     1620UInt TComSlice::getChromaFormatIdc()
     1621{
     1622  TComSPS *sps = getSPS();
     1623  TComVPS *vps = getVPS();
     1624  UInt retVal, layerId = getLayerId();
     1625  if( ( layerId == 0 ) || sps->getUpdateRepFormatFlag() )
     1626  {
     1627    retVal = sps->getChromaFormatIdc();
     1628  }
     1629  else
     1630  {
     1631    retVal = vps->getVpsRepFormat( vps->getVpsRepFormatIdx(layerId) )->getChromaFormatVpsIdc();
     1632  }
     1633  return retVal;
     1634}
     1635UInt TComSlice::getBitDepthY()
     1636{
     1637  TComSPS *sps = getSPS();
     1638  TComVPS *vps = getVPS();
     1639  UInt retVal, layerId = getLayerId();
     1640  if( ( layerId == 0 ) || sps->getUpdateRepFormatFlag() )
     1641  {
     1642    retVal = sps->getBitDepthY();
     1643  }
     1644  else
     1645  {
     1646    retVal = vps->getVpsRepFormat( vps->getVpsRepFormatIdx(layerId) )->getBitDepthVpsLuma();
     1647  }
     1648  return retVal;
     1649}
     1650UInt TComSlice::getBitDepthC()
     1651{
     1652  TComSPS *sps = getSPS();
     1653  TComVPS *vps = getVPS();
     1654  UInt retVal, layerId = getLayerId();
     1655  if( ( layerId == 0 ) || sps->getUpdateRepFormatFlag() )
     1656  {
     1657    retVal = sps->getBitDepthC();
     1658  }
     1659  else
     1660  {
     1661    retVal = vps->getVpsRepFormat( vps->getVpsRepFormatIdx(layerId) )->getBitDepthVpsChroma();
     1662  }
     1663  return retVal;
     1664}
     1665Int TComSlice::getQpBDOffsetY()
     1666{
     1667  return (getBitDepthY() - 8) * 6;
     1668}
     1669Int TComSlice::getQpBDOffsetC()
     1670{
     1671  return (getBitDepthC() - 8) * 6;
     1672}
     1673
     1674RepFormat::RepFormat()
     1675: m_chromaFormatVpsIdc          (0)
     1676, m_separateColourPlaneVpsFlag  (false)
     1677, m_picWidthVpsInLumaSamples    (0)
     1678, m_picHeightVpsInLumaSamples   (0)
     1679, m_bitDepthVpsLuma             (0)
     1680, m_bitDepthVpsChroma           (0)
     1681{}
     1682#endif
     1683
    15891684// ------------------------------------------------------------------------------------------------
    15901685// Video parameter set (VPS)
     
    16191714, m_picRatePresentVpsFlag     (false)
    16201715#endif
     1716#if REPN_FORMAT_IN_VPS
     1717, m_repFormatIdxPresentFlag   (true)
     1718, m_vpsNumRepFormats          (1)
     1719#endif
    16211720{
    16221721  for( Int i = 0; i < MAX_TLAYER; i++)
     
    16921791  ::memset(m_constPicRateIdc   , 0, sizeof(m_constPicRateIdc)   );
    16931792  ::memset(m_avgPicRate        , 0, sizeof(m_avgPicRate)        );
     1793#endif
     1794#if REPN_FORMAT_IN_VPS
     1795  ::memset( m_vpsRepFormatIdx, 0, sizeof(m_vpsRepFormatIdx) );
    16941796#endif
    16951797}
     
    17781880, m_numScaledRefLayerOffsets  (0)
    17791881#endif
     1882#if REPN_FORMAT_IN_VPS
     1883, m_updateRepFormatFlag       (false)
     1884#endif
    17801885{
    17811886  for ( Int i = 0; i < MAX_TLAYER; i++ )
  • branches/SHM-3.1-dev/source/Lib/TLibCommon/TComSlice.h

    r386 r389  
    406406};
    407407
     408#if REPN_FORMAT_IN_VPS
     409class RepFormat
     410{
     411  Int  m_chromaFormatVpsIdc;
     412  Bool m_separateColourPlaneVpsFlag;
     413  Int  m_picWidthVpsInLumaSamples;
     414  Int  m_picHeightVpsInLumaSamples;
     415  Int  m_bitDepthVpsLuma;               // coded as minus8
     416  Int  m_bitDepthVpsChroma;             // coded as minus8
     417
     418public:
     419  RepFormat();
     420
     421  Int  getChromaFormatVpsIdc()        { return m_chromaFormatVpsIdc; }
     422  Void setChromaFormatVpsIdc(Int x)   { m_chromaFormatVpsIdc = x;    }
     423
     424  Bool getSeparateColourPlaneVpsFlag()        { return m_separateColourPlaneVpsFlag; }
     425  Void setSeparateColourPlaneVpsFlag(Bool x)  { m_separateColourPlaneVpsFlag = x;    }
     426
     427  Int  getPicWidthVpsInLumaSamples()        { return m_picWidthVpsInLumaSamples; }
     428  Void setPicWidthVpsInLumaSamples(Int x)   { m_picWidthVpsInLumaSamples = x;    }
     429
     430  Int  getPicHeightVpsInLumaSamples()        { return m_picHeightVpsInLumaSamples; }
     431  Void setPicHeightVpsInLumaSamples(Int x)   { m_picHeightVpsInLumaSamples = x;    }
     432
     433  Int  getBitDepthVpsLuma()           { return m_bitDepthVpsLuma;   }
     434  Void setBitDepthVpsLuma(Int x)      { m_bitDepthVpsLuma = x;      }
     435
     436  Int  getBitDepthVpsChroma()           { return m_bitDepthVpsChroma;   }
     437  Void setBitDepthVpsChroma(Int x)      { m_bitDepthVpsChroma = x;      }
     438};
     439#endif
    408440class TComVPS
    409441{
     
    519551  Int         m_avgPicRate          [MAX_VPS_LAYER_SETS_PLUS1][MAX_TLAYER];
    520552#endif
     553#if REPN_FORMAT_IN_VPS
     554  Bool       m_repFormatIdxPresentFlag;
     555  Int        m_vpsNumRepFormats;            // coded as minus1
     556  RepFormat  m_vpsRepFormat[16];
     557  Int        m_vpsRepFormatIdx[16];
     558#endif
    521559public:
    522560  TComVPS();
     
    727765  Int  getAvgPicRate(Int i, Int j)          { return m_avgPicRate[i][j]; }
    728766  Void setAvgPicRate(Int i, Int j, Int x)   { m_avgPicRate[i][j] = x;    }
     767#endif
     768
     769#if REPN_FORMAT_IN_VPS
     770  Bool   getRepFormatIdxPresentFlag()       { return m_repFormatIdxPresentFlag; }
     771  Void   setRepFormatIdxPresentFlag(Bool x) { m_repFormatIdxPresentFlag = x;    }
     772
     773  Int    getVpsNumRepFormats()              { return m_vpsNumRepFormats;        }
     774  Void   setVpsNumRepFormats(Int x)         { m_vpsNumRepFormats = x;           }
     775
     776  RepFormat* getVpsRepFormat(Int idx)       { return &m_vpsRepFormat[idx];      }
     777
     778  Int    getVpsRepFormatIdx(Int idx)        { return m_vpsRepFormatIdx[idx];   }
     779  Void   setVpsRepFormatIdx(Int idx, Int x) { m_vpsRepFormatIdx[idx] = x;      }         
    729780#endif
    730781};
     
    10411092  UInt        m_numScaledRefLayerOffsets;
    10421093  Window      m_scaledRefLayerWindow[MAX_LAYERS];
     1094#endif
     1095#if REPN_FORMAT_IN_VPS
     1096  Bool m_updateRepFormatFlag;
    10431097#endif
    10441098public:
     
    12001254  Window&  getScaledRefLayerWindow( Int x )   { return m_scaledRefLayerWindow[x]; }
    12011255#endif
     1256#if REPN_FORMAT_IN_VPS
     1257  Bool     getUpdateRepFormatFlag()       { return m_updateRepFormatFlag; }
     1258  Void     setUpdateRepFormatFlag(Bool x) { m_updateRepFormatFlag = x;    }
     1259#endif
    12021260};
    12031261
     
    18661924#endif //SVC_EXTENSION
    18671925
     1926#if REPN_FORMAT_IN_VPS
     1927  UInt getPicWidthInLumaSamples();
     1928  UInt getPicHeightInLumaSamples();
     1929  UInt getChromaFormatIdc();
     1930  UInt getBitDepthY();
     1931  UInt getBitDepthC();
     1932  Int getQpBDOffsetY();
     1933  Int getQpBDOffsetC();
     1934#endif
    18681935protected:
    18691936  TComPic*  xGetRefPic  (TComList<TComPic*>& rcListPic,
  • branches/SHM-3.1-dev/source/Lib/TLibCommon/TComTrQuant.cpp

    r345 r389  
    4242#include "TComPic.h"
    4343#include "ContextTables.h"
    44 
     44#define MAYBE_BUGFIX 1
    4545typedef struct
    4646{
     
    5050  Double d64SigCost;
    5151  Double d64SigCost_0;
     52#if MAYBE_BUGFIX
     53  Void init()
     54  {
     55    iNNZbeforePos0 = 0;
     56  d64CodedLevelandDist = 0;
     57  d64UncodedDist = 0;
     58  d64SigCost = 0;
     59  d64SigCost_0 = 0;
     60  }
     61#endif
    5262} coeffGroupRDStats;
    5363
     
    10331043
    10341044    Int qpScaled;
     1045#if REPN_FORMAT_IN_VPS
     1046    Int qpBDOffset = (eTType == TEXT_LUMA)? pcCU->getSlice()->getQpBDOffsetY() : pcCU->getSlice()->getQpBDOffsetC();
     1047#else
    10351048    Int qpBDOffset = (eTType == TEXT_LUMA)? pcCU->getSlice()->getSPS()->getQpBDOffsetY() : pcCU->getSlice()->getSPS()->getQpBDOffsetC();
     1049#endif
    10361050
    10371051    if(eTType == TEXT_LUMA)
     
    15811595    UInt uiCGPosY   = uiCGBlkPos / uiNumBlkSide;
    15821596    UInt uiCGPosX   = uiCGBlkPos - (uiCGPosY * uiNumBlkSide);
     1597#if MAYBE_BUGFIX
     1598    rdStats.init();
     1599#else
    15831600    ::memset( &rdStats, 0, sizeof (coeffGroupRDStats));
    1584    
     1601#endif
    15851602    const Int patternSigCtx = TComTrQuant::calcPatternSigCtx(uiSigCoeffGroupFlag, uiCGPosX, uiCGPosY, uiWidth, uiHeight);
    15861603    for (Int iScanPosinCG = uiCGSize-1; iScanPosinCG >= 0; iScanPosinCG--)
  • branches/SHM-3.1-dev/source/Lib/TLibCommon/TypeDef.h

    r386 r389  
    4848#if SVC_EXTENSION
    4949#define MAX_LAYERS                       2      ///< max number of layers the codec is supposed to handle
     50#define REPN_FORMAT_IN_VPS               1      ///< N0092: Signal represenation format (spatial resolution, bit depth, colour format) in the VPS
    5051#define TIMING_INFO_NONZERO_LAYERID_SPS  1      ///< N0085: Semantics of vui_timing_info_present_flag to always set that flag to zero for non-zero layer ID SPS
    5152#define RPL_INIT_N0316_N0082             1      ///< N0316, N0082: initial reference picture list construction
  • branches/SHM-3.1-dev/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r386 r389  
    542542  READ_UVLC(     uiCode, "sps_seq_parameter_set_id" );           pcSPS->setSPSId( uiCode );
    543543  assert(uiCode <= 15);
    544  
    545   READ_UVLC(     uiCode, "chroma_format_idc" );                  pcSPS->setChromaFormatIdc( uiCode );
    546   assert(uiCode <= 3);
    547   // in the first version we only support chroma_format_idc equal to 1 (4:2:0), so separate_colour_plane_flag cannot appear in the bitstream
    548   assert (uiCode == 1);
    549   if( uiCode == 3 )
    550   {
    551     READ_FLAG(     uiCode, "separate_colour_plane_flag");        assert(uiCode == 0);
    552   }
    553 
    554   READ_UVLC (    uiCode, "pic_width_in_luma_samples" );          pcSPS->setPicWidthInLumaSamples ( uiCode    );
    555   READ_UVLC (    uiCode, "pic_height_in_luma_samples" );         pcSPS->setPicHeightInLumaSamples( uiCode    );
     544
     545#if REPN_FORMAT_IN_VPS
     546  if( pcSPS->getLayerId() > 0 )
     547  {
     548    READ_FLAG( uiCode, "update_rep_format_flag" );                 
     549    pcSPS->setUpdateRepFormatFlag( uiCode ? true : false );
     550  }
     551  else
     552  {
     553    pcSPS->setUpdateRepFormatFlag( true );
     554  }
     555  if( pcSPS->getLayerId() == 0 || pcSPS->getUpdateRepFormatFlag() )
     556  {
     557#endif
     558    READ_UVLC(     uiCode, "chroma_format_idc" );                  pcSPS->setChromaFormatIdc( uiCode );
     559    assert(uiCode <= 3);
     560    // in the first version we only support chroma_format_idc equal to 1 (4:2:0), so separate_colour_plane_flag cannot appear in the bitstream
     561    assert (uiCode == 1);
     562    if( uiCode == 3 )
     563    {
     564      READ_FLAG(     uiCode, "separate_colour_plane_flag");        assert(uiCode == 0);
     565    }
     566
     567    READ_UVLC (    uiCode, "pic_width_in_luma_samples" );          pcSPS->setPicWidthInLumaSamples ( uiCode    );
     568    READ_UVLC (    uiCode, "pic_height_in_luma_samples" );         pcSPS->setPicHeightInLumaSamples( uiCode    );
     569#if REPN_FORMAT_IN_VPS
     570  }
     571#endif
    556572  READ_FLAG(     uiCode, "conformance_window_flag");
    557573  if (uiCode != 0)
    558574  {
    559575    Window &conf = pcSPS->getConformanceWindow();
     576#if REPN_FORMAT_IN_VPS
     577    READ_UVLC(   uiCode, "conf_win_left_offset" );               conf.setWindowLeftOffset  ( uiCode );
     578    READ_UVLC(   uiCode, "conf_win_right_offset" );              conf.setWindowRightOffset ( uiCode );
     579    READ_UVLC(   uiCode, "conf_win_top_offset" );                conf.setWindowTopOffset   ( uiCode );
     580    READ_UVLC(   uiCode, "conf_win_bottom_offset" );             conf.setWindowBottomOffset( uiCode );
     581#else
    560582    READ_UVLC(   uiCode, "conf_win_left_offset" );               conf.setWindowLeftOffset  ( uiCode * TComSPS::getWinUnitX( pcSPS->getChromaFormatIdc() ) );
    561583    READ_UVLC(   uiCode, "conf_win_right_offset" );              conf.setWindowRightOffset ( uiCode * TComSPS::getWinUnitX( pcSPS->getChromaFormatIdc() ) );
    562584    READ_UVLC(   uiCode, "conf_win_top_offset" );                conf.setWindowTopOffset   ( uiCode * TComSPS::getWinUnitY( pcSPS->getChromaFormatIdc() ) );
    563585    READ_UVLC(   uiCode, "conf_win_bottom_offset" );             conf.setWindowBottomOffset( uiCode * TComSPS::getWinUnitY( pcSPS->getChromaFormatIdc() ) );
    564   }
    565 
    566   READ_UVLC(     uiCode, "bit_depth_luma_minus8" );
    567   assert(uiCode <= 6);
    568   pcSPS->setBitDepthY( uiCode + 8 );
    569   pcSPS->setQpBDOffsetY( (Int) (6*uiCode) );
    570 
    571   READ_UVLC( uiCode,    "bit_depth_chroma_minus8" );
    572   assert(uiCode <= 6);
    573   pcSPS->setBitDepthC( uiCode + 8 );
    574   pcSPS->setQpBDOffsetC( (Int) (6*uiCode) );
    575 
     586#endif
     587  }
     588#if REPN_FORMAT_IN_VPS
     589  if(  pcSPS->getLayerId() == 0 || pcSPS->getUpdateRepFormatFlag() )
     590  {
     591#endif
     592    READ_UVLC(     uiCode, "bit_depth_luma_minus8" );
     593    assert(uiCode <= 6);
     594    pcSPS->setBitDepthY( uiCode + 8 );
     595    pcSPS->setQpBDOffsetY( (Int) (6*uiCode) );
     596
     597    READ_UVLC( uiCode,    "bit_depth_chroma_minus8" );
     598    assert(uiCode <= 6);
     599    pcSPS->setBitDepthC( uiCode + 8 );
     600    pcSPS->setQpBDOffsetC( (Int) (6*uiCode) );
     601#if REPN_FORMAT_IN_VPS
     602  }
     603#endif
    576604  READ_UVLC( uiCode,    "log2_max_pic_order_cnt_lsb_minus4" );   pcSPS->setBitsForPOC( 4 + uiCode );
    577605  assert(uiCode <= 12);
     
    11071135#endif
    11081136#endif
     1137#if REPN_FORMAT_IN_VPS
     1138  READ_FLAG( uiCode, "rep_format_idx_present_flag");
     1139  vps->setRepFormatIdxPresentFlag( uiCode ? true : false );
     1140
     1141  if( vps->getRepFormatIdxPresentFlag() )
     1142  {
     1143    READ_CODE( 4, uiCode, "vps_num_rep_formats_minus1" );
     1144    vps->setVpsNumRepFormats( uiCode + 1 );
     1145  }
     1146  else
     1147  {
     1148    // default assignment
     1149    assert (vps->getMaxLayers() <= 16);       // If max_layers_is more than 15, num_rep_formats has to be signaled
     1150    vps->setVpsNumRepFormats( vps->getMaxLayers() );
     1151  }
     1152  for(Int i = 0; i < vps->getVpsNumRepFormats(); i++)
     1153  {
     1154    // Read rep_format_structures
     1155    parseRepFormat( vps->getVpsRepFormat(i) );
     1156  }
     1157 
     1158  // Default assignment for layer 0
     1159  vps->setVpsRepFormatIdx( 0, 0 );
     1160  if( vps->getRepFormatIdxPresentFlag() )
     1161  {
     1162    for(Int i = 1; i < vps->getMaxLayers(); i++)
     1163    {
     1164      if( vps->getVpsNumRepFormats() > 1 )
     1165      {
     1166        READ_CODE( 4, uiCode, "vps_rep_format_idx[i]" );
     1167        vps->setVpsRepFormatIdx( i, uiCode );
     1168      }
     1169      else
     1170      {
     1171        // default assignment - only one rep_format() structure
     1172        vps->setVpsRepFormatIdx( i, 0 );
     1173      }
     1174    }
     1175  }
     1176  else
     1177  {
     1178    // default assignment - each layer assigned each rep_format() structure in the order signaled
     1179    for(Int i = 1; i < vps->getMaxLayers(); i++)
     1180    {
     1181      vps->setVpsRepFormatIdx( i, i );
     1182    }
     1183  }
     1184#endif
    11091185#if JCTVC_M0458_INTERLAYER_RPS_SIG
    1110    READ_FLAG(uiCode, "max_one_active_ref_layer_flag" );
    1111    vps->setMaxOneActiveRefLayerFlag(uiCode);
     1186  READ_FLAG(uiCode, "max_one_active_ref_layer_flag" );
     1187  vps->setMaxOneActiveRefLayerFlag(uiCode);
    11121188#endif
    11131189
     
    11631239}
    11641240#endif
    1165 
     1241#if REPN_FORMAT_IN_VPS
     1242Void  TDecCavlc::parseRepFormat      ( RepFormat *repFormat )
     1243{
     1244  UInt uiCode;
     1245  READ_CODE( 2, uiCode, "chroma_format_idc" );               repFormat->setChromaFormatVpsIdc( uiCode );
     1246 
     1247  if( repFormat->getChromaFormatVpsIdc() == 3 )
     1248  {
     1249    READ_FLAG( uiCode, "separate_colour_plane_flag");        repFormat->setSeparateColourPlaneVpsFlag(uiCode ? true : false);
     1250  }
     1251
     1252  READ_CODE ( 16, uiCode, "pic_width_in_luma_samples" );     repFormat->setPicWidthVpsInLumaSamples ( uiCode );
     1253  READ_CODE ( 16, uiCode, "pic_height_in_luma_samples" );    repFormat->setPicHeightVpsInLumaSamples( uiCode );
     1254 
     1255  READ_CODE( 4, uiCode, "bit_depth_luma_minus8" );           repFormat->setBitDepthVpsLuma  ( uiCode + 8 );
     1256  READ_CODE( 4, uiCode, "bit_depth_chroma_minus8" );         repFormat->setBitDepthVpsChroma( uiCode + 8 );
     1257
     1258}
     1259#endif
    11661260#if VPS_VUI
    11671261Void TDecCavlc::parseVPSVUI(TComVPS *vps)
     
    12851379    rpcSlice->setDependentSliceSegmentFlag(false);
    12861380  }
     1381#if REPN_FORMAT_IN_VPS
     1382  Int numCTUs = ((rpcSlice->getPicWidthInLumaSamples()+sps->getMaxCUWidth()-1)/sps->getMaxCUWidth())*((rpcSlice->getPicHeightInLumaSamples()+sps->getMaxCUHeight()-1)/sps->getMaxCUHeight());
     1383#else
    12871384  Int numCTUs = ((sps->getPicWidthInLumaSamples()+sps->getMaxCUWidth()-1)/sps->getMaxCUWidth())*((sps->getPicHeightInLumaSamples()+sps->getMaxCUHeight()-1)/sps->getMaxCUHeight());
     1385#endif
    12881386  Int maxParts = (1<<(sps->getMaxCUDepth()<<1));
    12891387  UInt sliceSegmentAddress = 0;
     
    18011899    rpcSlice->setSliceQp (26 + pps->getPicInitQPMinus26() + iCode);
    18021900
     1901#if REPN_FORMAT_IN_VPS
     1902    assert( rpcSlice->getSliceQp() >= -rpcSlice->getQpBDOffsetY() );
     1903#else
    18031904    assert( rpcSlice->getSliceQp() >= -sps->getQpBDOffsetY() );
     1905#endif
    18041906    assert( rpcSlice->getSliceQp() <=  51 );
    18051907
     
    21322234  xReadSvlc( iDQp );
    21332235
     2236#if REPN_FORMAT_IN_VPS
     2237  Int qpBdOffsetY = pcCU->getSlice()->getQpBDOffsetY();
     2238#else
    21342239  Int qpBdOffsetY = pcCU->getSlice()->getSPS()->getQpBDOffsetY();
     2240#endif
    21352241  qp = (((Int) pcCU->getRefQP( uiAbsPartIdx ) + iDQp + 52 + 2*qpBdOffsetY )%(52+ qpBdOffsetY)) -  qpBdOffsetY;
    21362242
  • branches/SHM-3.1-dev/source/Lib/TLibDecoder/TDecCAVLC.h

    r382 r389  
    7878  Void  parseVPSVUI   ( TComVPS* pcVPS );
    7979#endif
     80#if REPN_FORMAT_IN_VPS
     81  Void  parseRepFormat      ( RepFormat *repFormat );
     82#endif
    8083#if SPS_SUB_LAYER_INFO
    8184  Void  parseSPS            ( TComSPS* pcSPS, ParameterSetManagerDecoder *parameterSetManager );
  • branches/SHM-3.1-dev/source/Lib/TLibDecoder/TDecCu.cpp

    r345 r389  
    177177  TComSlice * pcSlice = pcPic->getSlice(pcPic->getCurrSliceIdx());
    178178  UInt uiCurNumParts    = pcPic->getNumPartInCU() >> (uiDepth<<1);
     179#if REPN_FORMAT_IN_VPS
     180  UInt uiWidth  = pcSlice->getPicWidthInLumaSamples();
     181  UInt uiHeight = pcSlice->getPicHeightInLumaSamples();
     182#else
    179183  UInt uiWidth = pcSlice->getSPS()->getPicWidthInLumaSamples();
    180184  UInt uiHeight = pcSlice->getSPS()->getPicHeightInLumaSamples();
     185#endif
    181186  UInt uiGranularityWidth = g_uiMaxCUWidth;
    182187  UInt uiPosX = pcCU->getCUPelX() + g_auiRasterToPelX[ g_auiZscanToRaster[uiAbsPartIdx] ];
     
    230235  TComSlice * pcSlice = pcCU->getPic()->getSlice(pcCU->getPic()->getCurrSliceIdx());
    231236  Bool bStartInCU = pcCU->getSCUAddr()+uiAbsPartIdx+uiCurNumParts>pcSlice->getSliceSegmentCurStartCUAddr()&&pcCU->getSCUAddr()+uiAbsPartIdx<pcSlice->getSliceSegmentCurStartCUAddr();
     237#if REPN_FORMAT_IN_VPS
     238  if((!bStartInCU) && ( uiRPelX < pcSlice->getPicWidthInLumaSamples()           ) && ( uiBPelY < pcSlice->getPicHeightInLumaSamples()           ) )
     239#else
    232240  if((!bStartInCU) && ( uiRPelX < pcSlice->getSPS()->getPicWidthInLumaSamples() ) && ( uiBPelY < pcSlice->getSPS()->getPicHeightInLumaSamples() ) )
     241#endif
    233242  {
    234243    m_pcEntropyDecoder->decodeSplitFlag( pcCU, uiAbsPartIdx, uiDepth );
     
    256265      if ( bSubInSlice )
    257266      {
     267#if REPN_FORMAT_IN_VPS
     268        if ( !ruiIsLast && ( uiLPelX < pcCU->getSlice()->getPicWidthInLumaSamples()           ) && ( uiTPelY < pcCU->getSlice()->getPicHeightInLumaSamples()           ) )
     269#else
    258270        if ( !ruiIsLast && ( uiLPelX < pcCU->getSlice()->getSPS()->getPicWidthInLumaSamples() ) && ( uiTPelY < pcCU->getSlice()->getSPS()->getPicHeightInLumaSamples() ) )
     271#endif
    259272        {
    260273          xDecodeCU( pcCU, uiIdx, uiDepth+1, ruiIsLast );
     
    385398  TComSlice * pcSlice = pcCU->getPic()->getSlice(pcCU->getPic()->getCurrSliceIdx());
    386399  Bool bStartInCU = pcCU->getSCUAddr()+uiAbsPartIdx+uiCurNumParts>pcSlice->getSliceSegmentCurStartCUAddr()&&pcCU->getSCUAddr()+uiAbsPartIdx<pcSlice->getSliceSegmentCurStartCUAddr();
     400#if REPN_FORMAT_IN_VPS
     401  if(bStartInCU||( uiRPelX >= pcSlice->getPicWidthInLumaSamples()           ) || ( uiBPelY >= pcSlice->getPicHeightInLumaSamples()           ) )
     402#else
    387403  if(bStartInCU||( uiRPelX >= pcSlice->getSPS()->getPicWidthInLumaSamples() ) || ( uiBPelY >= pcSlice->getSPS()->getPicHeightInLumaSamples() ) )
     404#endif
    388405  {
    389406    bBoundary = true;
     
    401418     
    402419      Bool binSlice = (pcCU->getSCUAddr()+uiIdx+uiQNumParts>pcSlice->getSliceSegmentCurStartCUAddr())&&(pcCU->getSCUAddr()+uiIdx<pcSlice->getSliceSegmentCurEndCUAddr());
     420#if REPN_FORMAT_IN_VPS
     421      if(binSlice&&( uiLPelX < pcSlice->getPicWidthInLumaSamples()           ) && ( uiTPelY < pcSlice->getPicHeightInLumaSamples()           ) )
     422#else
    403423      if(binSlice&&( uiLPelX < pcSlice->getSPS()->getPicWidthInLumaSamples() ) && ( uiTPelY < pcSlice->getSPS()->getPicHeightInLumaSamples() ) )
     424#endif
    404425      {
    405426        xDecompressCU(pcCU, uiIdx, uiNextDepth );
     
    494515 
    495516  //===== inverse transform =====
     517#if REPN_FORMAT_IN_VPS
     518  m_pcTrQuant->setQPforQuant  ( pcCU->getQP(0), TEXT_LUMA, pcCU->getSlice()->getQpBDOffsetY(), 0 );
     519#else
    496520  m_pcTrQuant->setQPforQuant  ( pcCU->getQP(0), TEXT_LUMA, pcCU->getSlice()->getSPS()->getQpBDOffsetY(), 0 );
     521#endif
    497522
    498523  Int scalingListType = (pcCU->isIntra(uiAbsPartIdx) ? 0 : 3) + g_eTTable[(Int)TEXT_LUMA];
     
    733758  pResi = m_ppcYuvResi[uiDepth]->getLumaAddr();
    734759
     760#if REPN_FORMAT_IN_VPS
     761  m_pcTrQuant->setQPforQuant( pcCU->getQP( uiAbsPartIdx ), TEXT_LUMA, pcCU->getSlice()->getQpBDOffsetY(), 0 );
     762#else
    735763  m_pcTrQuant->setQPforQuant( pcCU->getQP( uiAbsPartIdx ), TEXT_LUMA, pcCU->getSlice()->getSPS()->getQpBDOffsetY(), 0 );
     764#endif
    736765
    737766  m_pcTrQuant->invRecurTransformNxN ( pcCU, 0, TEXT_LUMA, pResi, 0, m_ppcYuvResi[uiDepth]->getStride(), uiWidth, uiHeight, trMode, 0, piCoeff );
  • branches/SHM-3.1-dev/source/Lib/TLibDecoder/TDecSbac.cpp

    r345 r389  
    860860  {
    861861    UInt uiSign;
     862#if REPN_FORMAT_IN_VPS
     863    Int qpBdOffsetY = pcCU->getSlice()->getQpBDOffsetY();
     864#else
    862865    Int qpBdOffsetY = pcCU->getSlice()->getSPS()->getQpBDOffsetY();
     866#endif
    863867    m_pcTDecBinIf->decodeBinEP(uiSign);
    864868    iDQp = uiDQp;
  • branches/SHM-3.1-dev/source/Lib/TLibDecoder/TDecTop.cpp

    r380 r389  
    139139
    140140#if SVC_EXTENSION
    141 Void TDecTop::xInitILRP(TComSPS *pcSPS)
    142 {
     141#if !REPN_FORMAT_IN_VPS
     142Void TDecTop::xInitILRP(TComSPS *pcSPS
     143#else
     144Void TDecTop::xInitILRP(TComSlice *slice)
     145#endif
     146{
     147#if REPN_FORMAT_IN_VPS
     148  TComSPS* pcSPS = slice->getSPS();
     149  Int bitDepthY   = slice->getBitDepthY();
     150  Int bitDepthC   = slice->getBitDepthC();
     151  Int picWidth    = slice->getPicWidthInLumaSamples();
     152  Int picHeight   = slice->getPicHeightInLumaSamples();
     153#endif
    143154  if(m_layerId>0)
    144155  {
     156#if REPN_FORMAT_IN_VPS
     157    g_bitDepthY     = bitDepthY;
     158    g_bitDepthC     = bitDepthC;
     159#else
    145160    g_bitDepthY     = pcSPS->getBitDepthY();
    146161    g_bitDepthC     = pcSPS->getBitDepthC();
     162#endif
    147163    g_uiMaxCUWidth  = pcSPS->getMaxCUWidth();
    148164    g_uiMaxCUHeight = pcSPS->getMaxCUHeight();
     
    165181
    166182        m_cIlpPic[j] = new  TComPic;
     183#if REPN_FORMAT_IN_VPS
     184#if SVC_UPSAMPLING
     185        m_cIlpPic[j]->create(picWidth, picHeight, g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth, conformanceWindow, defaultDisplayWindow, numReorderPics, pcSPS, true);
     186#else
     187        m_cIlpPic[j]->create(picWidth, picHeight, g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth, conformanceWindow, defaultDisplayWindow, numReorderPics, true);
     188#endif
     189#else
    167190#if SVC_UPSAMPLING
    168191        m_cIlpPic[j]->create(pcSPS->getPicWidthInLumaSamples(), pcSPS->getPicHeightInLumaSamples(), g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth, conformanceWindow, defaultDisplayWindow, numReorderPics, pcSPS, true);
    169192#else
    170193        m_cIlpPic[j]->create(pcSPS->getPicWidthInLumaSamples(), pcSPS->getPicHeightInLumaSamples(), g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth, conformanceWindow, defaultDisplayWindow, numReorderPics, true);
     194#endif
    171195#endif
    172196        for (Int i=0; i<m_cIlpPic[j]->getPicSym()->getNumberOfCUsInFrame(); i++)
     
    178202  }
    179203}
     204
     205
    180206
    181207Void TDecTop::setILRPic(TComPic *pcPic)
     
    271297        //TComPic*                      pcPic = *(pcTDecTopBase->getListPic()->begin());
    272298        TComPicYuv* pcPicYuvRecBase = (*(pcTDecTopBase->getListPic()->begin()))->getPicYuvRec();
     299#if REPN_FORMAT_IN_VPS
     300        if(pcPicYuvRecBase->getWidth() != pcSlice->getPicWidthInLumaSamples() || pcPicYuvRecBase->getHeight() != pcSlice->getPicHeightInLumaSamples() || !zeroOffsets )
     301#else
    273302        if(pcPicYuvRecBase->getWidth() != pcSlice->getSPS()->getPicWidthInLumaSamples() || pcPicYuvRecBase->getHeight() != pcSlice->getSPS()->getPicHeightInLumaSamples() || !zeroOffsets )
     303#endif
    274304        {
    275305          rpcPic->setSpatialEnhLayerFlag( i, true );
     
    288318#endif
    289319   
     320#if REPN_FORMAT_IN_VPS
     321#if SVC_UPSAMPLING
     322    rpcPic->create ( pcSlice->getPicWidthInLumaSamples(), pcSlice->getPicHeightInLumaSamples(), g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth,
     323                     conformanceWindow, defaultDisplayWindow, numReorderPics, pcSlice->getSPS(), true);
     324#else
     325    rpcPic->create ( pcSlice->getPicWidthInLumaSamples(), pcSlice->getPicHeightInLumaSamples(), g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth,
     326                     conformanceWindow, defaultDisplayWindow, numReorderPics, true);
     327#endif
     328#else
    290329#if SVC_UPSAMPLING
    291330    rpcPic->create ( pcSlice->getSPS()->getPicWidthInLumaSamples(), pcSlice->getSPS()->getPicHeightInLumaSamples(), g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth,
     
    295334                     conformanceWindow, defaultDisplayWindow, numReorderPics, true);
    296335#endif
     336#endif
     337
    297338    rpcPic->getPicSym()->allocSaoParam(&m_cSAO);
    298339    m_cListPic.pushBack( rpcPic );
     
    334375  rpcPic->destroy();
    335376
     377#if REPN_FORMAT_IN_VPS
     378#if SVC_UPSAMPLING
     379  rpcPic->create ( pcSlice->getPicWidthInLumaSamples(), pcSlice->getPicHeightInLumaSamples(), g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth,
     380                   conformanceWindow, defaultDisplayWindow, numReorderPics, pcSlice->getSPS(), true);
     381
     382#else
     383  rpcPic->create ( pcSlice->getPicWidthInLumaSamples(), pcSlice->getPicHeightInLumaSamples(), g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth,
     384                   conformanceWindow, defaultDisplayWindow, numReorderPics, true);
     385#endif
     386#else
    336387#if SVC_UPSAMPLING
    337388  rpcPic->create ( pcSlice->getSPS()->getPicWidthInLumaSamples(), pcSlice->getSPS()->getPicHeightInLumaSamples(), g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth,
     
    341392  rpcPic->create ( pcSlice->getSPS()->getPicWidthInLumaSamples(), pcSlice->getSPS()->getPicHeightInLumaSamples(), g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth,
    342393                   conformanceWindow, defaultDisplayWindow, numReorderPics, true);
     394#endif
    343395#endif
    344396  rpcPic->getPicSym()->allocSaoParam(&m_cSAO);
     
    548600  m_apcSlicePilot->setSPS(sps);
    549601  pps->setSPS(sps);
     602#if REPN_FORMAT_IN_VPS
    550603  pps->setNumSubstreams(pps->getEntropyCodingSyncEnabledFlag() ? ((sps->getPicHeightInLumaSamples() + sps->getMaxCUHeight() - 1) / sps->getMaxCUHeight()) * (pps->getNumColumnsMinus1() + 1) : 1);
     604#else
     605  pps->setNumSubstreams(pps->getEntropyCodingSyncEnabledFlag() ? ((sps->getPicHeightInLumaSamples() + sps->getMaxCUHeight() - 1) / sps->getMaxCUHeight()) * (pps->getNumColumnsMinus1() + 1) : 1);
     606#endif
    551607  pps->setMinCuDQPSize( sps->getMaxCUWidth() >> ( pps->getMaxCuDQPDepth()) );
    552608
     609#if REPN_FORMAT_IN_VPS
     610  g_bitDepthY     = m_apcSlicePilot->getBitDepthY();
     611  g_bitDepthC     = m_apcSlicePilot->getBitDepthC();
     612#else
    553613  g_bitDepthY     = sps->getBitDepthY();
    554614  g_bitDepthC     = sps->getBitDepthC();
     615#endif
    555616  g_uiMaxCUWidth  = sps->getMaxCUWidth();
    556617  g_uiMaxCUHeight = sps->getMaxCUHeight();
     
    569630
    570631  m_cSAO.destroy();
     632#if REPN_FORMAT_IN_VPS
     633  m_cSAO.create( m_apcSlicePilot->getPicWidthInLumaSamples(), m_apcSlicePilot->getPicHeightInLumaSamples(), sps->getMaxCUWidth(), sps->getMaxCUHeight() );
     634#else
    571635  m_cSAO.create( sps->getPicWidthInLumaSamples(), sps->getPicHeightInLumaSamples(), sps->getMaxCUWidth(), sps->getMaxCUHeight() );
     636#endif
    572637  m_cLoopFilter.create( sps->getMaxCUDepth() );
    573638}
     
    684749  // actual decoding starts here
    685750  xActivateParameterSets();
    686 
     751#if REPN_FORMAT_IN_VPS
     752  // Initialize ILRP if needed, only for the current layer 
     753  // ILRP intialization should go along with activation of parameters sets,
     754  // although activation of parameter sets itself need not be done for each and every slice!!!
     755  xInitILRP(m_apcSlicePilot);
     756#endif
    687757  if (m_apcSlicePilot->isNextSlice())
    688758  {
     
    9541024        const Window &scalEL = pcSlice->getSPS()->getScaledRefLayerWindow(refLayerIdc);
    9551025
     1026
    9561027        Int widthBL   = pcSlice->getBaseColPic(refLayerIdc)->getPicYuvRec()->getWidth();
    9571028        Int heightBL  = pcSlice->getBaseColPic(refLayerIdc)->getPicYuvRec()->getHeight();
     
    11231194#endif
    11241195#if SVC_EXTENSION
     1196#if !REPN_FORMAT_IN_VPS   // ILRP can only be initialized at activation 
    11251197  if(m_numLayer>0)
    11261198  {
    11271199    xInitILRP(sps);
    11281200  }
     1201#endif
    11291202#endif
    11301203}
  • branches/SHM-3.1-dev/source/Lib/TLibDecoder/TDecTop.h

    r380 r389  
    211211  Int       getBLHeight() { return  m_iBLSourceHeight; }
    212212#endif
     213#if REPN_FORMAT_IN_VPS
     214  Void      xInitILRP(TComSlice *slice);
     215#else
    213216  Void      xInitILRP(TComSPS *pcSPS);
     217#endif
    214218  Void      setILRPic(TComPic *pcPic);
    215219#endif
  • branches/SHM-3.1-dev/source/Lib/TLibEncoder/TEncCavlc.cpp

    r386 r389  
    423423#endif
    424424  WRITE_UVLC( pcSPS->getSPSId (),                   "sps_seq_parameter_set_id" );
    425   WRITE_UVLC( pcSPS->getChromaFormatIdc (),         "chroma_format_idc" );
    426   assert(pcSPS->getChromaFormatIdc () == 1);
    427   // in the first version chroma_format_idc can only be equal to 1 (4:2:0)
    428   if( pcSPS->getChromaFormatIdc () == 3 )
    429   {
    430     WRITE_FLAG( 0,                                  "separate_colour_plane_flag");
    431   }
    432 
    433   WRITE_UVLC( pcSPS->getPicWidthInLumaSamples (),   "pic_width_in_luma_samples" );
    434   WRITE_UVLC( pcSPS->getPicHeightInLumaSamples(),   "pic_height_in_luma_samples" );
     425#if REPN_FORMAT_IN_VPS
     426  if( pcSPS->getLayerId() > 0 )
     427  {
     428    WRITE_FLAG( pcSPS->getUpdateRepFormatFlag(), "update_rep_format_flag" );
     429  }
     430  if( pcSPS->getLayerId() == 0 || pcSPS->getUpdateRepFormatFlag() )
     431  {
     432#endif
     433    WRITE_UVLC( pcSPS->getChromaFormatIdc (),         "chroma_format_idc" );
     434    assert(pcSPS->getChromaFormatIdc () == 1);
     435    // in the first version chroma_format_idc can only be equal to 1 (4:2:0)
     436    if( pcSPS->getChromaFormatIdc () == 3 )
     437    {
     438      WRITE_FLAG( 0,                                  "separate_colour_plane_flag");
     439    }
     440
     441    WRITE_UVLC( pcSPS->getPicWidthInLumaSamples (),   "pic_width_in_luma_samples" );
     442    WRITE_UVLC( pcSPS->getPicHeightInLumaSamples(),   "pic_height_in_luma_samples" );
     443#if REPN_FORMAT_IN_VPS
     444  }
     445#endif
    435446  Window conf = pcSPS->getConformanceWindow();
    436447
     
    444455  }
    445456
    446   WRITE_UVLC( pcSPS->getBitDepthY() - 8,             "bit_depth_luma_minus8" );
    447   WRITE_UVLC( pcSPS->getBitDepthC() - 8,             "bit_depth_chroma_minus8" );
    448 
     457#if REPN_FORMAT_IN_VPS
     458  if( pcSPS->getLayerId() == 0 || pcSPS->getUpdateRepFormatFlag() )
     459  {
     460    assert( pcSPS->getBitDepthY() >= 8 );
     461    assert( pcSPS->getBitDepthC() >= 8 );
     462#endif
     463    WRITE_UVLC( pcSPS->getBitDepthY() - 8,             "bit_depth_luma_minus8" );
     464    WRITE_UVLC( pcSPS->getBitDepthC() - 8,             "bit_depth_chroma_minus8" );
     465#if REPN_FORMAT_IN_VPS
     466  }
     467#endif
    449468  WRITE_UVLC( pcSPS->getBitsForPOC()-4,                 "log2_max_pic_order_cnt_lsb_minus4" );
    450469
     
    863882#endif
    864883#endif
     884
     885#if REPN_FORMAT_IN_VPS
     886  WRITE_FLAG( vps->getRepFormatIdxPresentFlag(), "rep_format_idx_present_flag");
     887
     888  if( vps->getRepFormatIdxPresentFlag() )
     889  {
     890    WRITE_CODE( vps->getVpsNumRepFormats() - 1, 4, "vps_num_rep_formats_minus1" );
     891  }
     892  for(Int i = 0; i < vps->getVpsNumRepFormats(); i++)
     893  {
     894    // Read rep_format_structures
     895    codeRepFormat( vps->getVpsRepFormat(i) );
     896  }
     897 
     898  if( vps->getRepFormatIdxPresentFlag() )
     899  {
     900    for(Int i = 1; i < vps->getMaxLayers(); i++)
     901    {
     902      if( vps->getVpsNumRepFormats() > 1 )
     903      {
     904        WRITE_CODE( vps->getVpsRepFormatIdx(i), 4, "vps_rep_format_idx[i]" );
     905      }
     906    }
     907  }
     908#endif
     909
    865910#if JCTVC_M0458_INTERLAYER_RPS_SIG
    866911      WRITE_FLAG(vps->getMaxOneActiveRefLayerFlag(), "max_one_active_ref_layer_flag");
     
    909954}
    910955#endif
    911 
     956#if REPN_FORMAT_IN_VPS
     957Void  TEncCavlc::codeRepFormat      ( RepFormat *repFormat )
     958{
     959  WRITE_CODE( repFormat->getChromaFormatVpsIdc(), 2, "chroma_format_idc" );   
     960 
     961  if( repFormat->getChromaFormatVpsIdc() == 3 )
     962  {
     963    WRITE_FLAG( repFormat->getSeparateColourPlaneVpsFlag(), "separate_colour_plane_flag");     
     964  }
     965
     966  WRITE_CODE ( repFormat->getPicWidthVpsInLumaSamples (), 16, "pic_width_in_luma_samples" );   
     967  WRITE_CODE ( repFormat->getPicHeightVpsInLumaSamples(), 16, "pic_height_in_luma_samples" );   
     968 
     969  assert( repFormat->getBitDepthVpsLuma() >= 8 );
     970  assert( repFormat->getBitDepthVpsChroma() >= 8 );
     971  WRITE_CODE( repFormat->getBitDepthVpsLuma() - 8,   4, "bit_depth_luma_minus8" );           
     972  WRITE_CODE( repFormat->getBitDepthVpsChroma() - 8, 4, "bit_depth_chroma_minus8" );         
     973
     974}
     975#endif
    912976#if VPS_VUI
    913977Void TEncCavlc::codeVPSVUI (TComVPS *vps)
     
    10521116    }
    10531117
     1118#if REPN_FORMAT_IN_VPS
     1119    // in the first version chroma_format_idc is equal to one, thus colour_plane_id will not be present
     1120    assert( pcSlice->getChromaFormatIdc() == 1 );
     1121#else
    10541122    // in the first version chroma_format_idc is equal to one, thus colour_plane_id will not be present
    10551123    assert (pcSlice->getSPS()->getChromaFormatIdc() == 1 );
     1124#endif
    10561125    // if( separate_colour_plane_flag  ==  1 )
    10571126    //   colour_plane_id                                      u(2)
     
    16531722  Int iDQp  = pcCU->getQP( uiAbsPartIdx ) - pcCU->getRefQP( uiAbsPartIdx );
    16541723
     1724#if REPN_FORMAT_IN_VPS
     1725  Int qpBdOffsetY =  pcCU->getSlice()->getQpBDOffsetY();
     1726#else
    16551727  Int qpBdOffsetY =  pcCU->getSlice()->getSPS()->getQpBDOffsetY();
     1728#endif
    16561729  iDQp = (iDQp + 78 + qpBdOffsetY + (qpBdOffsetY/2)) % (52 + qpBdOffsetY) - 26 - (qpBdOffsetY/2);
    16571730
  • branches/SHM-3.1-dev/source/Lib/TLibEncoder/TEncCavlc.h

    r382 r389  
    9090  Void codeVPSVUI               (TComVPS *vps);
    9191#endif
     92#if REPN_FORMAT_IN_VPS
     93  Void  codeRepFormat           ( RepFormat *repFormat );
     94#endif
    9295  Void  codeVUI                 ( TComVUI *pcVUI, TComSPS* pcSPS );
    9396  Void  codeSPS                 ( TComSPS* pcSPS );
  • branches/SHM-3.1-dev/source/Lib/TLibEncoder/TEncCfg.h

    r377 r389  
    101101
    102102std::istringstream &operator>>(std::istringstream &in, GOPEntry &entry);     //input
     103
     104#if REPN_FORMAT_IN_VPS
     105struct RepFormatCfg
     106{
     107  Int   m_chromaFormatIdc;
     108  Bool  m_separateColourPlaneFlag;
     109  Int   m_picWidthInLumaSamples;
     110  Int   m_picHeightInLumaSamples;
     111  Int   m_bitDepthLuma;
     112  Int   m_bitDepthChroma;
     113  RepFormatCfg()
     114    : m_chromaFormatIdc         (CHROMA_420)
     115    , m_separateColourPlaneFlag (0)
     116    , m_picWidthInLumaSamples   (352)
     117    , m_picHeightInLumaSamples  (288)
     118    , m_bitDepthLuma            (8)
     119    , m_bitDepthChroma          (8)
     120  {}
     121};
     122std::istringstream &operator>>(std::istringstream &in, RepFormatCfg &repFormatCfg);
     123#endif
     124
    103125//! \ingroup TLibEncoder
    104126//! \{
  • branches/SHM-3.1-dev/source/Lib/TLibEncoder/TEncCu.cpp

    r345 r389  
    412412  Int iMaxQP;
    413413  Bool isAddLowestQP = false;
     414#if REPN_FORMAT_IN_VPS
     415  Int lowestQP = -rpcTempCU->getSlice()->getQpBDOffsetY();
     416#else
    414417  Int lowestQP = -rpcTempCU->getSlice()->getSPS()->getQpBDOffsetY();
     418#endif
    415419
    416420  if( (g_uiMaxCUWidth>>uiDepth) >= rpcTempCU->getSlice()->getPPS()->getMinCuDQPSize() )
    417421  {
    418422    Int idQP = m_pcEncCfg->getMaxDeltaQP();
     423#if REPN_FORMAT_IN_VPS
    419424    iMinQP = Clip3( -rpcTempCU->getSlice()->getSPS()->getQpBDOffsetY(), MAX_QP, iBaseQP-idQP );
    420425    iMaxQP = Clip3( -rpcTempCU->getSlice()->getSPS()->getQpBDOffsetY(), MAX_QP, iBaseQP+idQP );
     426#else
     427    iMinQP = Clip3( -rpcTempCU->getSlice()->getSPS()->getQpBDOffsetY(), MAX_QP, iBaseQP-idQP );
     428    iMaxQP = Clip3( -rpcTempCU->getSlice()->getSPS()->getQpBDOffsetY(), MAX_QP, iBaseQP+idQP );
     429#endif
    421430    if ( (rpcTempCU->getSlice()->getSPS()->getUseLossless()) && (lowestQP < iMinQP) && rpcTempCU->getSlice()->getPPS()->getUseDQP() )
    422431    {
     
    450459  Bool bSliceStart = pcSlice->getSliceSegmentCurStartCUAddr()>rpcTempCU->getSCUAddr()&&pcSlice->getSliceSegmentCurStartCUAddr()<rpcTempCU->getSCUAddr()+rpcTempCU->getTotalNumPart();
    451460  Bool bSliceEnd = (pcSlice->getSliceSegmentCurEndCUAddr()>rpcTempCU->getSCUAddr()&&pcSlice->getSliceSegmentCurEndCUAddr()<rpcTempCU->getSCUAddr()+rpcTempCU->getTotalNumPart());
     461#if REPN_FORMAT_IN_VPS
     462  Bool bInsidePicture = ( uiRPelX < rpcBestCU->getSlice()->getPicWidthInLumaSamples()           ) && ( uiBPelY < rpcBestCU->getSlice()->getPicHeightInLumaSamples()           );
     463#else
    452464  Bool bInsidePicture = ( uiRPelX < rpcBestCU->getSlice()->getSPS()->getPicWidthInLumaSamples() ) && ( uiBPelY < rpcBestCU->getSlice()->getSPS()->getPicHeightInLumaSamples() );
     465#endif
    453466  // We need to split, so don't try these modes.
    454467  if(!bSliceEnd && !bSliceStart && bInsidePicture )
     
    827840  {
    828841    Int idQP = m_pcEncCfg->getMaxDeltaQP();
     842#if REPN_FORMAT_IN_VPS
     843    iMinQP = Clip3( -rpcTempCU->getSlice()->getQpBDOffsetY(), MAX_QP, iBaseQP-idQP );
     844    iMaxQP = Clip3( -rpcTempCU->getSlice()->getQpBDOffsetY(), MAX_QP, iBaseQP+idQP );
     845#else
    829846    iMinQP = Clip3( -rpcTempCU->getSlice()->getSPS()->getQpBDOffsetY(), MAX_QP, iBaseQP-idQP );
    830847    iMaxQP = Clip3( -rpcTempCU->getSlice()->getSPS()->getQpBDOffsetY(), MAX_QP, iBaseQP+idQP );
     848#endif
    831849    if ( (rpcTempCU->getSlice()->getSPS()->getUseLossless()) && (lowestQP < iMinQP) && rpcTempCU->getSlice()->getPPS()->getUseDQP() )
    832850    {
     
    890908
    891909        Bool bInSlice = pcSubBestPartCU->getSCUAddr()+pcSubBestPartCU->getTotalNumPart()>pcSlice->getSliceSegmentCurStartCUAddr()&&pcSubBestPartCU->getSCUAddr()<pcSlice->getSliceSegmentCurEndCUAddr();
     910#if REPN_FORMAT_IN_VPS
     911        if(bInSlice && ( pcSubBestPartCU->getCUPelX() < pcSlice->getPicWidthInLumaSamples()           ) && ( pcSubBestPartCU->getCUPelY() < pcSlice->getPicHeightInLumaSamples()           ) )
     912#else
    892913        if(bInSlice && ( pcSubBestPartCU->getCUPelX() < pcSlice->getSPS()->getPicWidthInLumaSamples() ) && ( pcSubBestPartCU->getCUPelY() < pcSlice->getSPS()->getPicHeightInLumaSamples() ) )
     914#endif
    893915        {
    894916          if( m_bUseSBACRD )
     
    10381060  UInt uiPosX = ( uiExternalAddress % pcPic->getFrameWidthInCU() ) * g_uiMaxCUWidth+ g_auiRasterToPelX[ g_auiZscanToRaster[uiInternalAddress] ];
    10391061  UInt uiPosY = ( uiExternalAddress / pcPic->getFrameWidthInCU() ) * g_uiMaxCUHeight+ g_auiRasterToPelY[ g_auiZscanToRaster[uiInternalAddress] ];
     1062#if REPN_FORMAT_IN_VPS
     1063  UInt uiWidth =  pcSlice->getPicWidthInLumaSamples();
     1064  UInt uiHeight = pcSlice->getPicHeightInLumaSamples();
     1065#else
    10401066  UInt uiWidth = pcSlice->getSPS()->getPicWidthInLumaSamples();
    10411067  UInt uiHeight = pcSlice->getSPS()->getPicHeightInLumaSamples();
     1068#endif
    10421069  while(uiPosX>=uiWidth||uiPosY>=uiHeight)
    10431070  {
     
    11361163    iQpOffset = Int(floor( dQpOffset + 0.49999 ));
    11371164  }
     1165#if REPN_FORMAT_IN_VPS
     1166  return Clip3(-pcCU->getSlice()->getQpBDOffsetY(), MAX_QP, iBaseQp+iQpOffset );
     1167#else
    11381168  return Clip3(-pcCU->getSlice()->getSPS()->getQpBDOffsetY(), MAX_QP, iBaseQp+iQpOffset );
     1169#endif
    11391170}
    11401171
     
    11601191    pcSlice->getSliceSegmentCurStartCUAddr() < pcPic->getPicSym()->getInverseCUOrderMap(pcCU->getAddr())*pcCU->getPic()->getNumPartInCU()+uiAbsPartIdx+( pcPic->getNumPartInCU() >> (uiDepth<<1) );
    11611192  // We need to split, so don't try these modes.
     1193#if REPN_FORMAT_IN_VPS
     1194  if(!bSliceStart&&( uiRPelX < pcSlice->getPicWidthInLumaSamples()           ) && ( uiBPelY < pcSlice->getPicHeightInLumaSamples()           ) )
     1195#else
    11621196  if(!bSliceStart&&( uiRPelX < pcSlice->getSPS()->getPicWidthInLumaSamples() ) && ( uiBPelY < pcSlice->getSPS()->getPicHeightInLumaSamples() ) )
     1197#endif
    11631198  {
    11641199    m_pcEntropyCoder->encodeSplitFlag( pcCU, uiAbsPartIdx, uiDepth );
     
    11811216      uiTPelY   = pcCU->getCUPelY() + g_auiRasterToPelY[ g_auiZscanToRaster[uiAbsPartIdx] ];
    11821217      Bool bInSlice = pcCU->getSCUAddr()+uiAbsPartIdx+uiQNumParts>pcSlice->getSliceSegmentCurStartCUAddr()&&pcCU->getSCUAddr()+uiAbsPartIdx<pcSlice->getSliceSegmentCurEndCUAddr();
     1218#if REPN_FORMAT_IN_VPS
     1219      if(bInSlice&&( uiLPelX < pcSlice->getPicWidthInLumaSamples()           ) && ( uiTPelY < pcSlice->getPicHeightInLumaSamples()           ) )
     1220#else
    11831221      if(bInSlice&&( uiLPelX < pcSlice->getSPS()->getPicWidthInLumaSamples() ) && ( uiTPelY < pcSlice->getSPS()->getPicHeightInLumaSamples() ) )
     1222#endif
    11841223      {
    11851224        xEncodeCU( pcCU, uiAbsPartIdx, uiDepth+1 );
     
    17061745  Bool bSliceEnd   = pcSlice->getSliceSegmentCurEndCUAddr() > rpcPic->getPicSym()->getInverseCUOrderMap(pcCU->getAddr())*pcCU->getPic()->getNumPartInCU()+uiAbsPartIdx &&
    17071746    pcSlice->getSliceSegmentCurEndCUAddr() < rpcPic->getPicSym()->getInverseCUOrderMap(pcCU->getAddr())*pcCU->getPic()->getNumPartInCU()+uiAbsPartIdx+( pcCU->getPic()->getNumPartInCU() >> (uiDepth<<1) );
     1747#if REPN_FORMAT_IN_VPS
     1748  if(!bSliceEnd && !bSliceStart && ( uiRPelX < pcSlice->getPicWidthInLumaSamples()           ) && ( uiBPelY < pcSlice->getPicHeightInLumaSamples()           ) )
     1749#else
    17081750  if(!bSliceEnd && !bSliceStart && ( uiRPelX < pcSlice->getSPS()->getPicWidthInLumaSamples() ) && ( uiBPelY < pcSlice->getSPS()->getPicHeightInLumaSamples() ) )
     1751#endif
    17091752  {
    17101753    UInt uiAbsPartIdxInRaster = g_auiZscanToRaster[uiAbsPartIdx];
     
    17271770      Bool bInSlice = rpcPic->getPicSym()->getInverseCUOrderMap(pcCU->getAddr())*pcCU->getPic()->getNumPartInCU()+uiAbsPartIdx+uiQNumParts > pcSlice->getSliceSegmentCurStartCUAddr() &&
    17281771        rpcPic->getPicSym()->getInverseCUOrderMap(pcCU->getAddr())*pcCU->getPic()->getNumPartInCU()+uiAbsPartIdx < pcSlice->getSliceSegmentCurEndCUAddr();
     1772#if REPN_FORMAT_IN_VPS
     1773      if(bInSlice&&( uiSubCULPelX < pcSlice->getPicWidthInLumaSamples()           ) && ( uiSubCUTPelY < pcSlice->getPicHeightInLumaSamples()           ) )
     1774#else
    17291775      if(bInSlice&&( uiSubCULPelX < pcSlice->getSPS()->getPicWidthInLumaSamples() ) && ( uiSubCUTPelY < pcSlice->getSPS()->getPicHeightInLumaSamples() ) )
     1776#endif
    17301777      {
    17311778        xCopyYuv2Pic( rpcPic, uiCUAddr, uiAbsPartIdx, uiDepth+1, uiSrcDepth, pcCU, uiSubCULPelX, uiSubCUTPelY );   // Copy Yuv data to picture Yuv
  • branches/SHM-3.1-dev/source/Lib/TLibEncoder/TEncGOP.cpp

    r379 r389  
    10951095      }
    10961096
     1097#if REPN_FORMAT_IN_VPS
     1098      sliceQP = Clip3( -pcSlice->getQpBDOffsetY(), MAX_QP, sliceQP );
     1099#else
    10971100      sliceQP = Clip3( -pcSlice->getSPS()->getQpBDOffsetY(), MAX_QP, sliceQP );
     1101#endif
    10981102      m_pcRateCtrl->getRCPic()->setPicEstQP( sliceQP );
    10991103
     
    11081112    UInt uiPosX = ( uiExternalAddress % pcPic->getFrameWidthInCU() ) * g_uiMaxCUWidth+ g_auiRasterToPelX[ g_auiZscanToRaster[uiInternalAddress] ];
    11091113    UInt uiPosY = ( uiExternalAddress / pcPic->getFrameWidthInCU() ) * g_uiMaxCUHeight+ g_auiRasterToPelY[ g_auiZscanToRaster[uiInternalAddress] ];
     1114#if REPN_FORMAT_IN_VPS
     1115    UInt uiWidth = pcSlice->getPicWidthInLumaSamples();
     1116    UInt uiHeight = pcSlice->getPicHeightInLumaSamples();
     1117#else
    11101118    UInt uiWidth = pcSlice->getSPS()->getPicWidthInLumaSamples();
    11111119    UInt uiHeight = pcSlice->getSPS()->getPicHeightInLumaSamples();
     1120#endif
    11121121    while(uiPosX>=uiWidth||uiPosY>=uiHeight)
    11131122    {
     
    16561665          uiPosX = ( uiExternalAddress % pcPic->getFrameWidthInCU() ) * g_uiMaxCUWidth+ g_auiRasterToPelX[ g_auiZscanToRaster[uiInternalAddress] ];
    16571666          uiPosY = ( uiExternalAddress / pcPic->getFrameWidthInCU() ) * g_uiMaxCUHeight+ g_auiRasterToPelY[ g_auiZscanToRaster[uiInternalAddress] ];
     1667
     1668#if REPN_FORMAT_IN_VPS
     1669          uiWidth = pcSlice->getPicWidthInLumaSamples();
     1670          uiHeight = pcSlice->getPicHeightInLumaSamples();
     1671#else
    16581672          uiWidth = pcSlice->getSPS()->getPicWidthInLumaSamples();
    16591673          uiHeight = pcSlice->getSPS()->getPicHeightInLumaSamples();
     1674#endif
    16601675          while(uiPosX>=uiWidth||uiPosY>=uiHeight)
    16611676          {
  • branches/SHM-3.1-dev/source/Lib/TLibEncoder/TEncSbac.cpp

    r345 r389  
    804804  Int iDQp  = pcCU->getQP( uiAbsPartIdx ) - pcCU->getRefQP( uiAbsPartIdx );
    805805 
     806#if REPN_FORMAT_IN_VPS
     807  Int qpBdOffsetY =  pcCU->getSlice()->getQpBDOffsetY();
     808#else
    806809  Int qpBdOffsetY =  pcCU->getSlice()->getSPS()->getQpBDOffsetY();
     810#endif
    807811  iDQp = (iDQp + 78 + qpBdOffsetY + (qpBdOffsetY/2)) % (52 + qpBdOffsetY) - 26 - (qpBdOffsetY/2);
    808812
  • branches/SHM-3.1-dev/source/Lib/TLibEncoder/TEncSearch.cpp

    r345 r389  
    11041104  pcCU       ->setTrIdxSubParts ( uiTrDepth, uiAbsPartIdx, uiFullDepth );
    11051105
     1106#if REPN_FORMAT_IN_VPS
     1107  m_pcTrQuant->setQPforQuant    ( pcCU->getQP( 0 ), TEXT_LUMA, pcCU->getSlice()->getQpBDOffsetY(), 0 );
     1108#else
    11061109  m_pcTrQuant->setQPforQuant    ( pcCU->getQP( 0 ), TEXT_LUMA, pcCU->getSlice()->getSPS()->getQpBDOffsetY(), 0 );
     1110#endif
    11071111
    11081112#if RDOQ_CHROMA_LAMBDA
     
    46104614  while((uiWidth>>uiMaxTrMode) < (g_uiMaxCUWidth>>g_uiMaxCUDepth)) uiMaxTrMode--;
    46114615 
     4616#if REPN_FORMAT_IN_VPS
     4617  qpMin =  bHighPass ? Clip3( -pcCU->getSlice()->getQpBDOffsetY(), MAX_QP, pcCU->getQP(0) - m_iMaxDeltaQP ) : pcCU->getQP( 0 );
     4618  qpMax =  bHighPass ? Clip3( -pcCU->getSlice()->getQpBDOffsetY(), MAX_QP, pcCU->getQP(0) + m_iMaxDeltaQP ) : pcCU->getQP( 0 );
     4619#else
    46124620  qpMin =  bHighPass ? Clip3( -pcCU->getSlice()->getSPS()->getQpBDOffsetY(), MAX_QP, pcCU->getQP(0) - m_iMaxDeltaQP ) : pcCU->getQP( 0 );
    46134621  qpMax =  bHighPass ? Clip3( -pcCU->getSlice()->getSPS()->getQpBDOffsetY(), MAX_QP, pcCU->getQP(0) + m_iMaxDeltaQP ) : pcCU->getQP( 0 );
     4622#endif
    46144623
    46154624  rpcYuvResi->subtract( pcYuvOrg, pcYuvPred, 0, uiWidth );
     
    48604869    }
    48614870
     4871#if REPN_FORMAT_IN_VPS
     4872    m_pcTrQuant->setQPforQuant( pcCU->getQP( 0 ), TEXT_LUMA, pcCU->getSlice()->getQpBDOffsetY(), 0 );
     4873#else
    48624874    m_pcTrQuant->setQPforQuant( pcCU->getQP( 0 ), TEXT_LUMA, pcCU->getSlice()->getSPS()->getQpBDOffsetY(), 0 );
     4875#endif
    48634876
    48644877#if RDOQ_CHROMA_LAMBDA
     
    49464959      Pel *pcResiCurrY = m_pcQTTempTComYuv[ uiQTTempAccessLayer ].getLumaAddr( absTUPartIdx );
    49474960
     4961#if REPN_FORMAT_IN_VPS
    49484962      m_pcTrQuant->setQPforQuant( pcCU->getQP( 0 ), TEXT_LUMA, pcCU->getSlice()->getSPS()->getQpBDOffsetY(), 0 );
     4963#else
     4964      m_pcTrQuant->setQPforQuant( pcCU->getQP( 0 ), TEXT_LUMA, pcCU->getSlice()->getSPS()->getQpBDOffsetY(), 0 );
     4965#endif
    49494966
    49504967      Int scalingListType = 3 + g_eTTable[(Int)TEXT_LUMA];
     
    51955212      }
    51965213
     5214#if REPN_FORMAT_IN_VPS
     5215      m_pcTrQuant->setQPforQuant( pcCU->getQP( 0 ), TEXT_LUMA, pcCU->getSlice()->getQpBDOffsetY(), 0 );
     5216#else
    51975217      m_pcTrQuant->setQPforQuant( pcCU->getQP( 0 ), TEXT_LUMA, pcCU->getSlice()->getSPS()->getQpBDOffsetY(), 0 );
     5218#endif
    51985219
    51995220#if RDOQ_CHROMA_LAMBDA
     
    52145235        const UInt uiTsSingleBitsY = m_pcEntropyCoder->getNumberOfWrittenBits();
    52155236
     5237#if REPN_FORMAT_IN_VPS
     5238        m_pcTrQuant->setQPforQuant( pcCU->getQP( 0 ), TEXT_LUMA, pcCU->getSlice()->getQpBDOffsetY(), 0 );
     5239#else
    52165240        m_pcTrQuant->setQPforQuant( pcCU->getQP( 0 ), TEXT_LUMA, pcCU->getSlice()->getSPS()->getQpBDOffsetY(), 0 );
     5241#endif
    52175242
    52185243        Int scalingListType = 3 + g_eTTable[(Int)TEXT_LUMA];
  • branches/SHM-3.1-dev/source/Lib/TLibEncoder/TEncSlice.cpp

    r377 r389  
    260260  if(eSliceType!=I_SLICE)
    261261  {
     262#if REPN_FORMAT_IN_VPS
     263    if (!(( m_pcCfg->getMaxDeltaQP() == 0 ) && (dQP == -rpcSlice->getQpBDOffsetY() ) && (rpcSlice->getSPS()->getUseLossless())))
     264#else
    262265    if (!(( m_pcCfg->getMaxDeltaQP() == 0 ) && (dQP == -rpcSlice->getSPS()->getQpBDOffsetY() ) && (rpcSlice->getSPS()->getUseLossless())))
     266#endif
    263267    {
    264268      dQP += m_pcCfg->getGOPEntry(iGOPid).m_QPOffset;
     
    327331    }
    328332   
     333#if REPN_FORMAT_IN_VPS
     334    iQP = max( -rpcSlice->getQpBDOffsetY(), min( MAX_QP, (Int) floor( dQP + 0.5 ) ) );
     335#else
    329336    iQP = max( -pSPS->getQpBDOffsetY(), min( MAX_QP, (Int) floor( dQP + 0.5 ) ) );
     337#endif
    330338
    331339    m_pdRdPicLambda[iDQpIdx] = dLambda;
     
    412420  {
    413421    dQP = xGetQPValueAccordingToLambda( dLambda );
     422#if REPN_FORMAT_IN_VPS
     423    iQP = max( -rpcSlice->getQpBDOffsetY(), min( MAX_QP, (Int) floor( dQP + 0.5 ) ) );   
     424#else
    414425    iQP = max( -pSPS->getQpBDOffsetY(), min( MAX_QP, (Int) floor( dQP + 0.5 ) ) );   
     426#endif
    415427  }
    416428
     
    606618    }
    607619
     620#if REPN_FORMAT_IN_VPS
     621    qp = max( -pcSlice->getQpBDOffsetY(), min( MAX_QP, (Int) floor( recalQP + 0.5 ) ) );
     622#else
    608623    qp = max( -pcSPS->getQpBDOffsetY(), min( MAX_QP, (Int) floor( recalQP + 0.5 ) ) );
     624#endif
    609625
    610626    m_pdRdPicLambda[deltqQpIdx] = lambda;
     
    849865    pcCU->initCU( rpcPic, uiCUAddr );
    850866
     867#if REPN_FORMAT_IN_VPS
     868    Int height  = min( pcSlice->getSPS()->getMaxCUHeight(),pcSlice->getPicHeightInLumaSamples() - uiCUAddr / rpcPic->getFrameWidthInCU() * pcSlice->getSPS()->getMaxCUHeight() );
     869    Int width   = min( pcSlice->getSPS()->getMaxCUWidth(), pcSlice->getPicWidthInLumaSamples() - uiCUAddr % rpcPic->getFrameWidthInCU() * pcSlice->getSPS()->getMaxCUWidth() );
     870#else
    851871    Int height  = min( pcSlice->getSPS()->getMaxCUHeight(),pcSlice->getSPS()->getPicHeightInLumaSamples() - uiCUAddr / rpcPic->getFrameWidthInCU() * pcSlice->getSPS()->getMaxCUHeight() );
    852872    Int width   = min( pcSlice->getSPS()->getMaxCUWidth(),pcSlice->getSPS()->getPicWidthInLumaSamples() - uiCUAddr % rpcPic->getFrameWidthInCU() * pcSlice->getSPS()->getMaxCUWidth() );
     873#endif
    853874
    854875    iSumHad = m_pcCuEncoder->updateLCUDataISlice(pcCU, uiCUAddr, width, height);
     
    11481169#endif
    11491170
     1171#if REPN_FORMAT_IN_VPS
     1172          estQP     = Clip3( -pcSlice->getQpBDOffsetY(), MAX_QP, estQP );
     1173#else
    11501174          estQP     = Clip3( -pcSlice->getSPS()->getQpBDOffsetY(), MAX_QP, estQP );
     1175#endif
    11511176
    11521177          m_pcRdCost->setLambda(estLambda);
     
    11761201#if !M0036_RC_IMPROVEMENT
    11771202        UInt SAD    = m_pcCuEncoder->getLCUPredictionSAD();
     1203#if REPN_FORMAT_IN_VPS
     1204        Int height  = min( pcSlice->getSPS()->getMaxCUHeight(),pcSlice->getPicHeightInLumaSamples() - uiCUAddr / rpcPic->getFrameWidthInCU() * pcSlice->getSPS()->getMaxCUHeight() );
     1205        Int width   = min( pcSlice->getSPS()->getMaxCUWidth(),pcSlice->>getPicWidthInLumaSamples() - uiCUAddr % rpcPic->getFrameWidthInCU() * pcSlice->getSPS()->getMaxCUWidth() );
     1206#else
    11781207        Int height  = min( pcSlice->getSPS()->getMaxCUHeight(),pcSlice->getSPS()->getPicHeightInLumaSamples() - uiCUAddr / rpcPic->getFrameWidthInCU() * pcSlice->getSPS()->getMaxCUHeight() );
    11791208        Int width   = min( pcSlice->getSPS()->getMaxCUWidth(),pcSlice->getSPS()->getPicWidthInLumaSamples() - uiCUAddr % rpcPic->getFrameWidthInCU() * pcSlice->getSPS()->getMaxCUWidth() );
     1209#endif
    11801210        Double MAD = (Double)SAD / (Double)(height * width);
    11811211        MAD = MAD * MAD;
     
    12531283#if !M0036_RC_IMPROVEMENT
    12541284        UInt SAD    = m_pcCuEncoder->getLCUPredictionSAD();
     1285#if REPN_FORMAT_IN_VPS
     1286        Int height  = min( pcSlice->getSPS()->getMaxCUHeight(),pcSlice->getPicHeightInLumaSamples() - uiCUAddr / rpcPic->getFrameWidthInCU() * pcSlice->getSPS()->getMaxCUHeight() );
     1287        Int width   = min( pcSlice->getSPS()->getMaxCUWidth(),pcSlice->getPicWidthInLumaSamples() - uiCUAddr % rpcPic->getFrameWidthInCU() * pcSlice->getSPS()->getMaxCUWidth() );
     1288#else
    12551289        Int height  = min( pcSlice->getSPS()->getMaxCUHeight(),pcSlice->getSPS()->getPicHeightInLumaSamples() - uiCUAddr / rpcPic->getFrameWidthInCU() * pcSlice->getSPS()->getMaxCUHeight() );
    12561290        Int width   = min( pcSlice->getSPS()->getMaxCUWidth(),pcSlice->getSPS()->getPicWidthInLumaSamples() - uiCUAddr % rpcPic->getFrameWidthInCU() * pcSlice->getSPS()->getMaxCUWidth() );
     1291#endif
    12571292        Double MAD = (Double)SAD / (Double)(height * width);
    12581293        MAD = MAD * MAD;
     
    19191954  UInt uiPosX = ( uiExternalAddress % rpcPic->getFrameWidthInCU() ) * g_uiMaxCUWidth+ g_auiRasterToPelX[ g_auiZscanToRaster[uiInternalAddress] ];
    19201955  UInt uiPosY = ( uiExternalAddress / rpcPic->getFrameWidthInCU() ) * g_uiMaxCUHeight+ g_auiRasterToPelY[ g_auiZscanToRaster[uiInternalAddress] ];
     1956#if REPN_FORMAT_IN_VPS
     1957  UInt uiWidth = pcSlice->getPicWidthInLumaSamples();
     1958  UInt uiHeight = pcSlice->getPicHeightInLumaSamples();
     1959#else
    19211960  UInt uiWidth = pcSlice->getSPS()->getPicWidthInLumaSamples();
    19221961  UInt uiHeight = pcSlice->getSPS()->getPicHeightInLumaSamples();
     1962#endif
    19231963  while((uiPosX>=uiWidth||uiPosY>=uiHeight)&&!(uiPosX>=uiWidth&&uiPosY>=uiHeight))
    19241964  {
     
    19421982  uiPosX = ( uiExternalAddress % rpcPic->getFrameWidthInCU() ) * g_uiMaxCUWidth+ g_auiRasterToPelX[ g_auiZscanToRaster[uiInternalAddress] ];
    19431983  uiPosY = ( uiExternalAddress / rpcPic->getFrameWidthInCU() ) * g_uiMaxCUHeight+ g_auiRasterToPelY[ g_auiZscanToRaster[uiInternalAddress] ];
     1984#if REPN_FORMAT_IN_VPS
     1985  uiWidth = pcSlice->getPicWidthInLumaSamples();
     1986  uiHeight = pcSlice->getPicHeightInLumaSamples();
     1987#else
    19441988  uiWidth = pcSlice->getSPS()->getPicWidthInLumaSamples();
    19451989  uiHeight = pcSlice->getSPS()->getPicHeightInLumaSamples();
     1990#endif
    19461991  while((uiPosX>=uiWidth||uiPosY>=uiHeight)&&!(uiPosX>=uiWidth&&uiPosY>=uiHeight))
    19471992  {
  • branches/SHM-3.1-dev/source/Lib/TLibEncoder/TEncTop.cpp

    r377 r389  
    679679  }
    680680
     681#if REPN_FORMAT_IN_VPS
     682  m_cSPS.setBitDepthY( m_cVPS.getVpsRepFormat( m_cVPS.getVpsRepFormatIdx( m_layerId ) )->getBitDepthVpsLuma() );
     683  m_cSPS.setBitDepthC( m_cVPS.getVpsRepFormat( m_cVPS.getVpsRepFormatIdx( m_layerId ) )->getBitDepthVpsChroma()  );
     684
     685  m_cSPS.setQpBDOffsetY ( 6*(m_cVPS.getVpsRepFormat( m_cVPS.getVpsRepFormatIdx( m_layerId ) )->getBitDepthVpsLuma()  - 8) );
     686  m_cSPS.setQpBDOffsetC ( 6*(m_cVPS.getVpsRepFormat( m_cVPS.getVpsRepFormatIdx( m_layerId ) )->getBitDepthVpsChroma()  - 8) );
     687#else
    681688  m_cSPS.setBitDepthY( g_bitDepthY );
    682689  m_cSPS.setBitDepthC( g_bitDepthC );
     
    684691  m_cSPS.setQpBDOffsetY ( 6*(g_bitDepthY - 8) );
    685692  m_cSPS.setQpBDOffsetC ( 6*(g_bitDepthC - 8) );
     693#endif
    686694
    687695  m_cSPS.setUseSAO( m_bUseSAO );
     
    745753  Bool bUseDQP = (getMaxCuDQPDepth() > 0)? true : false;
    746754
     755#if REPN_FORMAT_IN_VPS
     756  Int lowestQP;
     757  if( m_layerId == 0 || m_cSPS.getUpdateRepFormatFlag() )
     758  {
     759    lowestQP = - m_cSPS.getQpBDOffsetY();
     760  }
     761  else
     762  {
     763    lowestQP = - (m_cVPS.getVpsRepFormat( m_cVPS.getVpsRepFormatIdx( m_layerId ) )->getBitDepthVpsLuma() - 8) * 6;
     764  }
     765#else
    747766  Int lowestQP = - m_cSPS.getQpBDOffsetY();
     767#endif
    748768
    749769  if(getUseLossless())
     
    12121232
    12131233#if SVC_EXTENSION
     1234#if !REPN_FORMAT_IN_VPS
    12141235Void TEncTop::xInitILRP()
    12151236{
     
    12451266  }
    12461267}
    1247 
     1268#else
     1269Void TEncTop::xInitILRP()
     1270{
     1271  RepFormat *repFormat = m_cVPS.getVpsRepFormat( m_cVPS.getVpsRepFormatIdx( m_layerId ) );
     1272  Int bitDepthY,bitDepthC,picWidth,picHeight;
     1273
     1274  if( m_cSPS.getUpdateRepFormatFlag() )
     1275  {
     1276    bitDepthY   = m_cSPS.getBitDepthY();
     1277    bitDepthC   = m_cSPS.getBitDepthC();
     1278    picWidth    = m_cSPS.getPicWidthInLumaSamples();
     1279    picHeight   = m_cSPS.getPicHeightInLumaSamples();
     1280  }
     1281  else
     1282  {
     1283    bitDepthY   = repFormat->getBitDepthVpsLuma();
     1284    bitDepthC   = repFormat->getBitDepthVpsChroma();
     1285    picWidth    = repFormat->getPicWidthVpsInLumaSamples();
     1286    picHeight   = repFormat->getPicHeightVpsInLumaSamples();
     1287  }
     1288 
     1289  if(m_layerId > 0)
     1290  {
     1291    g_bitDepthY     = bitDepthY;
     1292    g_bitDepthC     = bitDepthC;
     1293    g_uiMaxCUWidth  = m_cSPS.getMaxCUWidth();
     1294    g_uiMaxCUHeight = m_cSPS.getMaxCUHeight();
     1295    g_uiMaxCUDepth  = m_cSPS.getMaxCUDepth();
     1296    g_uiAddCUDepth  = max (0, m_cSPS.getLog2MinCodingBlockSize() - (Int)m_cSPS.getQuadtreeTULog2MinSize() );
     1297
     1298    Int  numReorderPics[MAX_TLAYER];
     1299    Window &conformanceWindow = m_cSPS.getConformanceWindow();
     1300    Window defaultDisplayWindow = m_cSPS.getVuiParametersPresentFlag() ? m_cSPS.getVuiParameters()->getDefaultDisplayWindow() : Window();
     1301
     1302    if (m_cIlpPic[0] == NULL)
     1303    {
     1304      for (Int j=0; j < MAX_LAYERS /*MAX_NUM_REF*/; j++) // consider to set to NumDirectRefLayers[LayerIdInVps[nuh_layer_id]]
     1305      {
     1306        m_cIlpPic[j] = new  TComPic;
     1307#if SVC_UPSAMPLING
     1308        m_cIlpPic[j]->create(picWidth, picHeight, g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth, conformanceWindow, defaultDisplayWindow, numReorderPics, &m_cSPS, true);
     1309#else
     1310        m_cIlpPic[j]->create(m_iSourceWidth, m_iSourceHeight, g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth, conformanceWindow, defaultDisplayWindow, numReorderPics, true);
     1311#endif
     1312        for (Int i=0; i<m_cIlpPic[j]->getPicSym()->getNumberOfCUsInFrame(); i++)
     1313        {
     1314          m_cIlpPic[j]->getPicSym()->getCU(i)->initCU(m_cIlpPic[j], i);
     1315        }
     1316      }
     1317    }
     1318  }
     1319}
     1320#endif
    12481321Void TEncTop::setILRPic(TComPic *pcPic)
    12491322{
Note: See TracChangeset for help on using the changeset viewer.