Ticket #414: source.patch

File source.patch, 28.4 KB (added by kazushi, 12 years ago)
Line 
1diff -cr source_org/App/TAppEncoder/TAppEncCfg.cpp source/App/TAppEncoder/TAppEncCfg.cpp
2*** source_org/App/TAppEncoder/TAppEncCfg.cpp   2012-04-06 17:00:30.000000000 +0900
3--- source/App/TAppEncoder/TAppEncCfg.cpp       2012-04-06 18:17:44.397252733 +0900
4***************
5*** 208,215 ****
6    ("MaxDeltaQP,d",  m_iMaxDeltaQP,        0, "max dQp offset for block")
7    ("MaxCuDQPDepth,-dqd",  m_iMaxCuDQPDepth,        0, "max depth for a minimum CuDQP")
8 
9!     ("ChromaQpOffset,   -cqo",   m_iChromaQpOffset,           0, "ChromaQpOffset")
10!     ("ChromaQpOffset2nd,-cqo2",  m_iChromaQpOffset2nd,        0, "ChromaQpOffset2nd")
11 
12  #if ADAPTIVE_QP_SELECTION
13      ("AdaptiveQpSelection,-aqps",   m_bUseAdaptQpSelect,           false, "AdaptiveQpSelection")
14--- 208,215 ----
15    ("MaxDeltaQP,d",  m_iMaxDeltaQP,        0, "max dQp offset for block")
16    ("MaxCuDQPDepth,-dqd",  m_iMaxCuDQPDepth,        0, "max depth for a minimum CuDQP")
17 
18!     ("CbQpOffset,   -cbqpofs",  m_iCbQpOffset,        0, "CbQpOffset")
19!     ("CrQpOffset,   -crqpofs",  m_iCrQpOffset,        0, "CrQpOffset")
20 
21  #if ADAPTIVE_QP_SELECTION
22      ("AdaptiveQpSelection,-aqps",   m_bUseAdaptQpSelect,           false, "AdaptiveQpSelection")
23***************
24*** 455,464 ****
25    xConfirmPara( m_iMaxDeltaQP > 7,                                                          "Absolute Delta QP exceeds supported range (0 to 7)" );
26    xConfirmPara( m_iMaxCuDQPDepth > m_uiMaxCUDepth - 1,                                          "Absolute depth for a minimum CuDQP exceeds maximum coding unit depth" );
27 
28!   xConfirmPara( m_iChromaQpOffset    < -12,   "Min. Chroma Qp Offset is -12"     );
29!   xConfirmPara( m_iChromaQpOffset    >  12,   "Max. Chroma Qp Offset is  12"     );
30!   xConfirmPara( m_iChromaQpOffset2nd < -12,   "Min. Chroma Qp Offset 2nd is -12" );
31!   xConfirmPara( m_iChromaQpOffset2nd >  12,   "Max. Chroma Qp Offset 2nd is  12" );
32 
33    xConfirmPara( m_iQPAdaptationRange <= 0,                                                  "QP Adaptation Range must be more than 0" );
34    xConfirmPara( m_iFrameToBeEncoded != 1 && m_iFrameToBeEncoded < 2*m_iGOPSize,              "Total Number of Frames to be encoded must be at least 2 * GOP size for the current Reference Picture Set settings");
35--- 455,464 ----
36    xConfirmPara( m_iMaxDeltaQP > 7,                                                          "Absolute Delta QP exceeds supported range (0 to 7)" );
37    xConfirmPara( m_iMaxCuDQPDepth > m_uiMaxCUDepth - 1,                                          "Absolute depth for a minimum CuDQP exceeds maximum coding unit depth" );
38 
39!   xConfirmPara( m_iCbQpOffset < -12,   "Min. Cb Qp Offset is -12" );
40!   xConfirmPara( m_iCbQpOffset >  12,   "Max. Cb Qp Offset is  12" );
41!   xConfirmPara( m_iCrQpOffset < -12,   "Min. Cr Qp Offset is -12" );
42!   xConfirmPara( m_iCrQpOffset >  12,   "Max. Cr Qp Offset is  12" );
43 
44    xConfirmPara( m_iQPAdaptationRange <= 0,                                                  "QP Adaptation Range must be more than 0" );
45    xConfirmPara( m_iFrameToBeEncoded != 1 && m_iFrameToBeEncoded < 2*m_iGOPSize,              "Total Number of Frames to be encoded must be at least 2 * GOP size for the current Reference Picture Set settings");
46***************
47*** 490,496 ****
48  #if ADAPTIVE_QP_SELECTION
49  #if H0736_AVC_STYLE_QP_RANGE
50    xConfirmPara( m_bUseAdaptQpSelect == true && m_iQP < 0,                                              "AdaptiveQpSelection must be disabled when QP < 0.");
51!   xConfirmPara( m_bUseAdaptQpSelect == true && (m_iChromaQpOffset !=0 || m_iChromaQpOffset2nd != 0 ),  "AdaptiveQpSelection must be disabled when ChromaQpOffset is not equal to 0.");
52  #endif
53  #endif
54 
55--- 490,496 ----
56  #if ADAPTIVE_QP_SELECTION
57  #if H0736_AVC_STYLE_QP_RANGE
58    xConfirmPara( m_bUseAdaptQpSelect == true && m_iQP < 0,                                              "AdaptiveQpSelection must be disabled when QP < 0.");
59!   xConfirmPara( m_bUseAdaptQpSelect == true && (m_iCbQpOffset !=0 || m_iCrQpOffset != 0 ),  "AdaptiveQpSelection must be disabled when CbQpOffset or CrQpOffset is not equal to 0.");
60  #endif
61  #endif
62 
63***************
64*** 859,866 ****
65    printf("QP                           : %5.2f\n", m_fQP );
66    printf("Max dQP signaling depth      : %d\n", m_iMaxCuDQPDepth);
67 
68!   printf("Chroma Qp Offset             : %d\n", m_iChromaQpOffset   );
69!   printf("Chroma Qp Offset 2nd         : %d\n", m_iChromaQpOffset2nd);
70 
71    printf("QP adaptation                : %d (range=%d)\n", m_bUseAdaptiveQP, (m_bUseAdaptiveQP ? m_iQPAdaptationRange : 0) );
72    printf("GOP size                     : %d\n", m_iGOPSize );
73--- 859,866 ----
74    printf("QP                           : %5.2f\n", m_fQP );
75    printf("Max dQP signaling depth      : %d\n", m_iMaxCuDQPDepth);
76 
77!   printf("Cb Qp Offset                 : %d\n", m_iCbQpOffset );
78!   printf("Cr Qp Offset                 : %d\n", m_iCrQpOffset );
79 
80    printf("QP adaptation                : %d (range=%d)\n", m_bUseAdaptiveQP, (m_bUseAdaptiveQP ? m_iQPAdaptationRange : 0) );
81    printf("GOP size                     : %d\n", m_iGOPSize );
82diff -cr source_org/App/TAppEncoder/TAppEncCfg.h source/App/TAppEncoder/TAppEncCfg.h
83*** source_org/App/TAppEncoder/TAppEncCfg.h     2012-04-06 17:00:30.000000000 +0900
84--- source/App/TAppEncoder/TAppEncCfg.h 2012-04-06 17:42:55.650920383 +0900
85***************
86*** 95,102 ****
87    UInt      m_uiDeltaQpRD;                                    ///< dQP range for multi-pass slice QP optimization
88    Int       m_iMaxCuDQPDepth;                                 ///< Max. depth for a minimum CuDQPSize (0:default)
89 
90!   Int       m_iChromaQpOffset;                                 ///< ChromaQpOffset    (0:default)
91!   Int       m_iChromaQpOffset2nd;                              ///< ChromaQpOffset2nd (0:default)
92 
93  #if ADAPTIVE_QP_SELECTION
94    Bool      m_bUseAdaptQpSelect;
95--- 95,102 ----
96    UInt      m_uiDeltaQpRD;                                    ///< dQP range for multi-pass slice QP optimization
97    Int       m_iMaxCuDQPDepth;                                 ///< Max. depth for a minimum CuDQPSize (0:default)
98 
99!   Int       m_iCbQpOffset;                                    ///< CbQpOffset (0:default)
100!   Int       m_iCrQpOffset;                                    ///< CrQpOffset (0:default)
101 
102  #if ADAPTIVE_QP_SELECTION
103    Bool      m_bUseAdaptQpSelect;
104diff -cr source_org/App/TAppEncoder/TAppEncTop.cpp source/App/TAppEncoder/TAppEncTop.cpp
105*** source_org/App/TAppEncoder/TAppEncTop.cpp   2012-04-06 17:00:30.000000000 +0900
106--- source/App/TAppEncoder/TAppEncTop.cpp       2012-04-06 17:50:49.478320651 +0900
107***************
108*** 127,134 ****
109    m_cTEncTop.setMaxDeltaQP                   ( m_iMaxDeltaQP  );
110    m_cTEncTop.setMaxCuDQPDepth                ( m_iMaxCuDQPDepth  );
111 
112!   m_cTEncTop.setChromaQpOffset               ( m_iChromaQpOffset     );
113!   m_cTEncTop.setChromaQpOffset2nd            ( m_iChromaQpOffset2nd  );
114 
115  #if ADAPTIVE_QP_SELECTION
116    m_cTEncTop.setUseAdaptQpSelect             ( m_bUseAdaptQpSelect   );
117--- 127,134 ----
118    m_cTEncTop.setMaxDeltaQP                   ( m_iMaxDeltaQP  );
119    m_cTEncTop.setMaxCuDQPDepth                ( m_iMaxCuDQPDepth  );
120 
121!   m_cTEncTop.setCbQpOffset                   ( m_iCbQpOffset );
122!   m_cTEncTop.setCrQpOffset                   ( m_iCrQpOffset );
123 
124  #if ADAPTIVE_QP_SELECTION
125    m_cTEncTop.setUseAdaptQpSelect             ( m_bUseAdaptQpSelect   );
126diff -cr source_org/Lib/TLibCommon/TComSlice.cpp source/Lib/TLibCommon/TComSlice.cpp
127*** source_org/Lib/TLibCommon/TComSlice.cpp     2012-04-06 17:00:33.000000000 +0900
128--- source/Lib/TLibCommon/TComSlice.cpp 2012-04-06 17:56:46.991073056 +0900
129***************
130*** 1253,1260 ****
131  , m_pcSPS                       (NULL)
132  , m_uiMaxCuDQPDepth             (0)
133  , m_uiMinCuDQPSize              (0)
134! , m_iChromaQpOffset             (0)
135! , m_iChromaQpOffset2nd          (0)
136  #if !RPS_IN_SPS
137  , m_bLongTermRefsPresent        (false)
138  #endif
139--- 1253,1260 ----
140  , m_pcSPS                       (NULL)
141  , m_uiMaxCuDQPDepth             (0)
142  , m_uiMinCuDQPSize              (0)
143! , m_iCbQpOffset                 (0)
144! , m_iCrQpOffset                 (0)
145  #if !RPS_IN_SPS
146  , m_bLongTermRefsPresent        (false)
147  #endif
148diff -cr source_org/Lib/TLibCommon/TComSlice.h source/Lib/TLibCommon/TComSlice.h
149*** source_org/Lib/TLibCommon/TComSlice.h       2012-04-06 17:00:33.000000000 +0900
150--- source/Lib/TLibCommon/TComSlice.h   2012-04-06 17:55:00.030434029 +0900
151***************
152*** 569,576 ****
153    UInt        m_uiMaxCuDQPDepth;
154    UInt        m_uiMinCuDQPSize;
155 
156!   Int        m_iChromaQpOffset;
157!   Int        m_iChromaQpOffset2nd;
158 
159  #if !RPS_IN_SPS
160    Bool        m_bLongTermRefsPresent;
161--- 569,576 ----
162    UInt        m_uiMaxCuDQPDepth;
163    UInt        m_uiMinCuDQPSize;
164 
165!   Int        m_iCbQpOffset;
166!   Int        m_iCrQpOffset;
167 
168  #if !RPS_IN_SPS
169    Bool        m_bLongTermRefsPresent;
170***************
171*** 660,669 ****
172    Void      setMinCuDQPSize     ( UInt u ) { m_uiMinCuDQPSize = u;    }
173    UInt      getMinCuDQPSize     ()         { return m_uiMinCuDQPSize; }
174 
175!   Void      setChromaQpOffset   ( Int i ) { m_iChromaQpOffset = i; }
176!   Int       getChromaQpOffset   () { return m_iChromaQpOffset;}
177!   Void      setChromaQpOffset2nd( Int i ) { m_iChromaQpOffset2nd = i; }
178!   Int       getChromaQpOffset2nd() { return m_iChromaQpOffset2nd;}
179 
180    Bool getUseWP                     ()          { return m_bUseWeightPred;  }
181    UInt getWPBiPredIdc               ()          { return m_uiBiPredIdc;     }
182--- 660,669 ----
183    Void      setMinCuDQPSize     ( UInt u ) { m_uiMinCuDQPSize = u;    }
184    UInt      getMinCuDQPSize     ()         { return m_uiMinCuDQPSize; }
185 
186!   Void      setCbQpOffset       ( Int i ) { m_iCbQpOffset = i; }
187!   Int       getCbQpOffset       () { return m_iCbQpOffset     ;}
188!   Void      setCrQpOffset       ( Int i ) { m_iCrQpOffset = i; }
189!   Int       getCrQpOffset       () { return m_iCrQpOffset     ;}
190 
191    Bool getUseWP                     ()          { return m_bUseWeightPred;  }
192    UInt getWPBiPredIdc               ()          { return m_uiBiPredIdc;     }
193diff -cr source_org/Lib/TLibDecoder/TDecCAVLC.cpp source/Lib/TLibDecoder/TDecCAVLC.cpp
194*** source_org/Lib/TLibDecoder/TDecCAVLC.cpp    2012-04-06 17:00:31.000000000 +0900
195--- source/Lib/TLibDecoder/TDecCAVLC.cpp        2012-04-06 18:18:49.024579582 +0900
196***************
197*** 1213,1223 ****
198    pcPPS->setMinCuDQPSize( pcPPS->getSPS()->getMaxCUWidth() >> ( pcPPS->getMaxCuDQPDepth()) );
199  #endif
200 
201!   READ_SVLC( iCode, "chroma_qp_offset");
202!   pcPPS->setChromaQpOffset(iCode);
203 
204!   READ_SVLC( iCode, "chroma_qp_offset_2nd");
205!   pcPPS->setChromaQpOffset2nd(iCode);
206 
207    READ_FLAG( uiCode, "weighted_pred_flag" );          // Use of Weighting Prediction (P_SLICE)
208    pcPPS->setUseWP( uiCode==1 );
209--- 1213,1223 ----
210    pcPPS->setMinCuDQPSize( pcPPS->getSPS()->getMaxCUWidth() >> ( pcPPS->getMaxCuDQPDepth()) );
211  #endif
212 
213!   READ_SVLC( iCode, "cb_qp_offset");
214!   pcPPS->setCbQpOffset(iCode);
215 
216!   READ_SVLC( iCode, "cr_qp_offset");
217!   pcPPS->setCrQpOffset(iCode);
218 
219    READ_FLAG( uiCode, "weighted_pred_flag" );          // Use of Weighting Prediction (P_SLICE)
220    pcPPS->setUseWP( uiCode==1 );
221diff -cr source_org/Lib/TLibDecoder/TDecCu.cpp source/Lib/TLibDecoder/TDecCu.cpp
222*** source_org/Lib/TLibDecoder/TDecCu.cpp       2012-04-06 17:00:31.000000000 +0900
223--- source/Lib/TLibDecoder/TDecCu.cpp   2012-04-06 18:21:09.373384279 +0900
224***************
225*** 656,672 ****
226    if(eText == TEXT_CHROMA_U)
227    {
228  #if H0736_AVC_STYLE_QP_RANGE
229!     m_pcTrQuant->setQPforQuant  ( pcCU->getQP(0), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), eText, pcCU->getSlice()->getSPS()->getQpBDOffsetC(), pcCU->getSlice()->getPPS()->getChromaQpOffset() );
230  #else
231!     m_pcTrQuant->setQPforQuant  ( pcCU->getQP(0), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), eText, pcCU->getSlice()->getPPS()->getChromaQpOffset() );
232  #endif
233    }
234    else
235    {
236  #if H0736_AVC_STYLE_QP_RANGE
237!     m_pcTrQuant->setQPforQuant  ( pcCU->getQP(0), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), eText, pcCU->getSlice()->getSPS()->getQpBDOffsetC(), pcCU->getSlice()->getPPS()->getChromaQpOffset2nd() );
238  #else
239!     m_pcTrQuant->setQPforQuant  ( pcCU->getQP(0), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), eText, pcCU->getSlice()->getPPS()->getChromaQpOffset2nd() );
240  #endif
241    }
242 
243--- 656,672 ----
244    if(eText == TEXT_CHROMA_U)
245    {
246  #if H0736_AVC_STYLE_QP_RANGE
247!     m_pcTrQuant->setQPforQuant  ( pcCU->getQP(0), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), eText, pcCU->getSlice()->getSPS()->getQpBDOffsetC(), pcCU->getSlice()->getPPS()->getCbQpOffset() );
248  #else
249!     m_pcTrQuant->setQPforQuant  ( pcCU->getQP(0), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), eText, pcCU->getSlice()->getPPS()->getCbQpOffset() );
250  #endif
251    }
252    else
253    {
254  #if H0736_AVC_STYLE_QP_RANGE
255!     m_pcTrQuant->setQPforQuant  ( pcCU->getQP(0), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), eText, pcCU->getSlice()->getSPS()->getQpBDOffsetC(), pcCU->getSlice()->getPPS()->getCrQpOffset() );
256  #else
257!     m_pcTrQuant->setQPforQuant  ( pcCU->getQP(0), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), eText, pcCU->getSlice()->getPPS()->getCrQpOffset() );
258  #endif
259    }
260 
261***************
262*** 847,855 ****
263   
264    // Cb and Cr
265  #if H0736_AVC_STYLE_QP_RANGE
266!   m_pcTrQuant->setQPforQuant( pcCU->getQP( uiAbsPartIdx ), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getSPS()->getQpBDOffsetC(), pcCU->getSlice()->getPPS()->getChromaQpOffset() );
267  #else
268!   m_pcTrQuant->setQPforQuant( pcCU->getQP( uiAbsPartIdx ), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getPPS()->getChromaQpOffset() );
269  #endif
270 
271    uiWidth  >>= 1;
272--- 847,855 ----
273   
274    // Cb and Cr
275  #if H0736_AVC_STYLE_QP_RANGE
276!   m_pcTrQuant->setQPforQuant( pcCU->getQP( uiAbsPartIdx ), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getSPS()->getQpBDOffsetC(), pcCU->getSlice()->getPPS()->getCbQpOffset() );
277  #else
278!   m_pcTrQuant->setQPforQuant( pcCU->getQP( uiAbsPartIdx ), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getPPS()->getCbQpOffset() );
279  #endif
280 
281    uiWidth  >>= 1;
282***************
283*** 858,866 ****
284    m_pcTrQuant->invRecurTransformNxN ( pcCU, 0, TEXT_CHROMA_U, pResi, 0, m_ppcYuvResi[uiDepth]->getCStride(), uiWidth, uiHeight, uiChromaTrMode, 0, piCoeff );
285 
286  #if H0736_AVC_STYLE_QP_RANGE
287!   m_pcTrQuant->setQPforQuant( pcCU->getQP( uiAbsPartIdx ), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getSPS()->getQpBDOffsetC(), pcCU->getSlice()->getPPS()->getChromaQpOffset2nd() );
288  #else
289!   m_pcTrQuant->setQPforQuant( pcCU->getQP( uiAbsPartIdx ), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getPPS()->getChromaQpOffset2nd() );
290  #endif
291 
292    piCoeff = pcCU->getCoeffCr(); pResi = m_ppcYuvResi[uiDepth]->getCrAddr();
293--- 858,866 ----
294    m_pcTrQuant->invRecurTransformNxN ( pcCU, 0, TEXT_CHROMA_U, pResi, 0, m_ppcYuvResi[uiDepth]->getCStride(), uiWidth, uiHeight, uiChromaTrMode, 0, piCoeff );
295 
296  #if H0736_AVC_STYLE_QP_RANGE
297!   m_pcTrQuant->setQPforQuant( pcCU->getQP( uiAbsPartIdx ), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getSPS()->getQpBDOffsetC(), pcCU->getSlice()->getPPS()->getCrQpOffset() );
298  #else
299!   m_pcTrQuant->setQPforQuant( pcCU->getQP( uiAbsPartIdx ), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getPPS()->getCrQpOffset() );
300  #endif
301 
302    piCoeff = pcCU->getCoeffCr(); pResi = m_ppcYuvResi[uiDepth]->getCrAddr();
303diff -cr source_org/Lib/TLibEncoder/TEncCavlc.cpp source/Lib/TLibEncoder/TEncCavlc.cpp
304*** source_org/Lib/TLibEncoder/TEncCavlc.cpp    2012-04-06 17:00:35.000000000 +0900
305--- source/Lib/TLibEncoder/TEncCavlc.cpp        2012-04-06 18:16:17.806834194 +0900
306***************
307*** 301,308 ****
308    WRITE_CODE( pcPPS->getSliceGranularity(), 2,               "slice_granularity");
309    WRITE_UVLC( pcPPS->getMaxCuDQPDepth() + pcPPS->getUseDQP(),                   "max_cu_qp_delta_depth" );
310 
311!   WRITE_SVLC( pcPPS->getChromaQpOffset(),                   "chroma_qp_offset"     );
312!   WRITE_SVLC( pcPPS->getChromaQpOffset2nd(),                "chroma_qp_offset_2nd" );
313 
314    WRITE_FLAG( pcPPS->getUseWP() ? 1 : 0,  "weighted_pred_flag" );   // Use of Weighting Prediction (P_SLICE)
315    WRITE_CODE( pcPPS->getWPBiPredIdc(), 2, "weighted_bipred_idc" );  // Use of Weighting Bi-Prediction (B_SLICE)
316--- 301,308 ----
317    WRITE_CODE( pcPPS->getSliceGranularity(), 2,               "slice_granularity");
318    WRITE_UVLC( pcPPS->getMaxCuDQPDepth() + pcPPS->getUseDQP(),                   "max_cu_qp_delta_depth" );
319 
320!   WRITE_SVLC( pcPPS->getCbQpOffset(),                        "cb_qp_offset" );
321!   WRITE_SVLC( pcPPS->getCrQpOffset(),                        "cr_qp_offset" );
322 
323    WRITE_FLAG( pcPPS->getUseWP() ? 1 : 0,  "weighted_pred_flag" );   // Use of Weighting Prediction (P_SLICE)
324    WRITE_CODE( pcPPS->getWPBiPredIdc(), 2, "weighted_bipred_idc" );  // Use of Weighting Bi-Prediction (B_SLICE)
325diff -cr source_org/Lib/TLibEncoder/TEncCfg.h source/Lib/TLibEncoder/TEncCfg.h
326*** source_org/Lib/TLibEncoder/TEncCfg.h        2012-04-06 17:00:35.000000000 +0900
327--- source/Lib/TLibEncoder/TEncCfg.h    2012-04-06 18:03:14.952032339 +0900
328***************
329*** 164,171 ****
330    Int       m_iMaxDeltaQP;                      //  Max. absolute delta QP (1:default)
331    Int       m_iMaxCuDQPDepth;                   //  Max. depth for a minimum CuDQP (0:default)
332 
333!   Int       m_iChromaQpOffset  ;                //  ChromaQpOffset    (0:default)
334!   Int       m_iChromaQpOffset2nd;               //  ChromaQpOffset2nd (0:default)
335 
336  #if ADAPTIVE_QP_SELECTION
337    Bool      m_bUseAdaptQpSelect;
338--- 164,171 ----
339    Int       m_iMaxDeltaQP;                      //  Max. absolute delta QP (1:default)
340    Int       m_iMaxCuDQPDepth;                   //  Max. depth for a minimum CuDQP (0:default)
341 
342!   Int       m_iCbQpOffset  ;                   //  CbQpOffset (0:default)
343!   Int       m_iCrQpOffset  ;                   //  CrQpOffset (0:default)
344 
345  #if ADAPTIVE_QP_SELECTION
346    Bool      m_bUseAdaptQpSelect;
347***************
348*** 342,349 ****
349    Void      setMaxDeltaQP                   ( Int   i )      { m_iMaxDeltaQP = i; }
350    Void      setMaxCuDQPDepth                ( Int   i )      { m_iMaxCuDQPDepth = i; }
351 
352!   Void      setChromaQpOffset               ( Int   i ) { m_iChromaQpOffset    = i; }
353!   Void      setChromaQpOffset2nd            ( Int   i ) { m_iChromaQpOffset2nd = i; }
354 
355  #if ADAPTIVE_QP_SELECTION
356    Void      setUseAdaptQpSelect             ( Bool   i ) { m_bUseAdaptQpSelect    = i; }
357--- 342,349 ----
358    Void      setMaxDeltaQP                   ( Int   i )      { m_iMaxDeltaQP = i; }
359    Void      setMaxCuDQPDepth                ( Int   i )      { m_iMaxCuDQPDepth = i; }
360 
361!   Void      setCbQpOffset                   ( Int   i )      { m_iCbQpOffset = i; }
362!   Void      setCrQpOffset                   ( Int   i )      { m_iCrQpOffset = i; }
363 
364  #if ADAPTIVE_QP_SELECTION
365    Void      setUseAdaptQpSelect             ( Bool   i ) { m_bUseAdaptQpSelect    = i; }
366diff -cr source_org/Lib/TLibEncoder/TEncSearch.cpp source/Lib/TLibEncoder/TEncSearch.cpp
367*** source_org/Lib/TLibEncoder/TEncSearch.cpp   2012-04-06 17:00:35.000000000 +0900
368--- source/Lib/TLibEncoder/TEncSearch.cpp       2012-04-06 18:43:57.666282260 +0900
369***************
370*** 1178,1194 ****
371  #if H0736_AVC_STYLE_QP_RANGE
372      if(eText == TEXT_CHROMA_U)
373      {
374!       m_pcTrQuant->setQPforQuant     ( pcCU->getQP( 0 ), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getSPS()->getQpBDOffsetC(), pcCU->getSlice()->getPPS()->getChromaQpOffset() );
375      }
376      else
377      {
378!       m_pcTrQuant->setQPforQuant     ( pcCU->getQP( 0 ), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getSPS()->getQpBDOffsetC(), pcCU->getSlice()->getPPS()->getChromaQpOffset2nd() );
379      }
380  #else
381      if(eText == TEXT_CHROMA_U)
382!       m_pcTrQuant->setQPforQuant     ( pcCU->getQP( 0 ), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getPPS()->getChromaQpOffset() );
383      else
384!       m_pcTrQuant->setQPforQuant     ( pcCU->getQP( 0 ), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getPPS()->getChromaQpOffset2nd() );
385  #endif
386 
387  #if RDOQ_CHROMA_LAMBDA
388--- 1178,1194 ----
389  #if H0736_AVC_STYLE_QP_RANGE
390      if(eText == TEXT_CHROMA_U)
391      {
392!       m_pcTrQuant->setQPforQuant     ( pcCU->getQP( 0 ), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getSPS()->getQpBDOffsetC(), pcCU->getSlice()->getPPS()->getCbQpOffset() );
393      }
394      else
395      {
396!       m_pcTrQuant->setQPforQuant     ( pcCU->getQP( 0 ), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getSPS()->getQpBDOffsetC(), pcCU->getSlice()->getPPS()->getCrQpOffset() );
397      }
398  #else
399      if(eText == TEXT_CHROMA_U)
400!       m_pcTrQuant->setQPforQuant     ( pcCU->getQP( 0 ), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getPPS()->getCbQpOffset() );
401      else
402!       m_pcTrQuant->setQPforQuant     ( pcCU->getQP( 0 ), !pcCU->getSlice()->getDepth(), pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getPPS()->getCrQpOffset() );
403  #endif
404 
405  #if RDOQ_CHROMA_LAMBDA
406***************
407*** 4218,4226 ****
408        }
409 
410  #if H0736_AVC_STYLE_QP_RANGE
411!       m_pcTrQuant->setQPforQuant( pcCU->getQP( 0 ), false, pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getSPS()->getQpBDOffsetC(), pcCU->getSlice()->getPPS()->getChromaQpOffset() );
412  #else
413!       m_pcTrQuant->setQPforQuant( pcCU->getQP( 0 ), false, pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getPPS()->getChromaQpOffset() );
414  #endif
415 
416  #if RDOQ_CHROMA_LAMBDA
417--- 4218,4226 ----
418        }
419 
420  #if H0736_AVC_STYLE_QP_RANGE
421!       m_pcTrQuant->setQPforQuant( pcCU->getQP( 0 ), false, pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getSPS()->getQpBDOffsetC(), pcCU->getSlice()->getPPS()->getCbQpOffset() );
422  #else
423!       m_pcTrQuant->setQPforQuant( pcCU->getQP( 0 ), false, pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getPPS()->getCbQpOffset() );
424  #endif
425 
426  #if RDOQ_CHROMA_LAMBDA
427***************
428*** 4235,4243 ****
429  #endif
430                                     uiTrWidthC, uiTrHeightC, uiAbsSumU, TEXT_CHROMA_U, uiAbsPartIdx );
431  #if H0736_AVC_STYLE_QP_RANGE
432!       m_pcTrQuant->setQPforQuant( pcCU->getQP( 0 ), false, pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getSPS()->getQpBDOffsetC(), pcCU->getSlice()->getPPS()->getChromaQpOffset2nd() );
433  #else
434!       m_pcTrQuant->setQPforQuant( pcCU->getQP( 0 ), false, pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getPPS()->getChromaQpOffset2nd() );
435  #endif
436         m_pcTrQuant->transformNxN( pcCU, pcResi->getCrAddrPix( uiPixelXC, uiPixelYC ), pcResi->getCStride(), pcCoeffCurrV,
437  #if ADAPTIVE_QP_SELECTION
438--- 4235,4243 ----
439  #endif
440                                     uiTrWidthC, uiTrHeightC, uiAbsSumU, TEXT_CHROMA_U, uiAbsPartIdx );
441  #if H0736_AVC_STYLE_QP_RANGE
442!       m_pcTrQuant->setQPforQuant( pcCU->getQP( 0 ), false, pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getSPS()->getQpBDOffsetC(), pcCU->getSlice()->getPPS()->getCrQpOffset() );
443  #else
444!       m_pcTrQuant->setQPforQuant( pcCU->getQP( 0 ), false, pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getPPS()->getCrQpOffset() );
445  #endif
446         m_pcTrQuant->transformNxN( pcCU, pcResi->getCrAddrPix( uiPixelXC, uiPixelYC ), pcResi->getCStride(), pcCoeffCurrV,
447  #if ADAPTIVE_QP_SELECTION
448***************
449*** 4253,4261 ****
450  #endif
451                                   1<<uiLog2TrSizeC, 1<<uiLog2TrSizeC, uiAbsSumU, TEXT_CHROMA_U, uiAbsPartIdx );
452  #if H0736_AVC_STYLE_QP_RANGE
453!       m_pcTrQuant->setQPforQuant( pcCU->getQP( 0 ), false, pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getSPS()->getQpBDOffsetC(), pcCU->getSlice()->getPPS()->getChromaQpOffset2nd() );
454  #else
455!       m_pcTrQuant->setQPforQuant( pcCU->getQP( 0 ), false, pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getPPS()->getChromaQpOffset2nd() );
456  #endif
457        m_pcTrQuant->transformNxN( pcCU, pcResi->getCrAddr( uiAbsPartIdx ), pcResi->getCStride(), pcCoeffCurrV,
458  #if ADAPTIVE_QP_SELECTION
459--- 4253,4261 ----
460  #endif
461                                   1<<uiLog2TrSizeC, 1<<uiLog2TrSizeC, uiAbsSumU, TEXT_CHROMA_U, uiAbsPartIdx );
462  #if H0736_AVC_STYLE_QP_RANGE
463!       m_pcTrQuant->setQPforQuant( pcCU->getQP( 0 ), false, pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getSPS()->getQpBDOffsetC(), pcCU->getSlice()->getPPS()->getCrQpOffset() );
464  #else
465!       m_pcTrQuant->setQPforQuant( pcCU->getQP( 0 ), false, pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getPPS()->getCrQpOffset() );
466  #endif
467        m_pcTrQuant->transformNxN( pcCU, pcResi->getCrAddr( uiAbsPartIdx ), pcResi->getCStride(), pcCoeffCurrV,
468  #if ADAPTIVE_QP_SELECTION
469***************
470*** 4446,4454 ****
471            pcResiCurrU = m_pcQTTempTComYuv[uiQTTempAccessLayer].getCbAddr( uiAbsPartIdx );
472 
473  #if H0736_AVC_STYLE_QP_RANGE
474!         m_pcTrQuant->setQPforQuant( pcCU->getQP( 0 ), false, pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getSPS()->getQpBDOffsetC(), pcCU->getSlice()->getPPS()->getChromaQpOffset() );
475  #else
476!         m_pcTrQuant->setQPforQuant( pcCU->getQP( 0 ), false, pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getPPS()->getChromaQpOffset() );
477  #endif
478 
479          Int scalingListType = 3 + g_eTTable[(Int)TEXT_CHROMA_U];
480--- 4446,4454 ----
481            pcResiCurrU = m_pcQTTempTComYuv[uiQTTempAccessLayer].getCbAddr( uiAbsPartIdx );
482 
483  #if H0736_AVC_STYLE_QP_RANGE
484!         m_pcTrQuant->setQPforQuant( pcCU->getQP( 0 ), false, pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getSPS()->getQpBDOffsetC(), pcCU->getSlice()->getPPS()->getCbQpOffset() );
485  #else
486!         m_pcTrQuant->setQPforQuant( pcCU->getQP( 0 ), false, pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getPPS()->getCbQpOffset() );
487  #endif
488 
489          Int scalingListType = 3 + g_eTTable[(Int)TEXT_CHROMA_U];
490***************
491*** 4549,4557 ****
492          if( !uiAbsSumU )
493          {
494  #if H0736_AVC_STYLE_QP_RANGE
495!           m_pcTrQuant->setQPforQuant( pcCU->getQP( 0 ), false, pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getSPS()->getQpBDOffsetC(), pcCU->getSlice()->getPPS()->getChromaQpOffset2nd() );
496  #else
497!           m_pcTrQuant->setQPforQuant( pcCU->getQP( 0 ), false, pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getPPS()->getChromaQpOffset2nd() );
498  #endif
499          }
500          Int scalingListType = 3 + g_eTTable[(Int)TEXT_CHROMA_V];
501--- 4549,4557 ----
502          if( !uiAbsSumU )
503          {
504  #if H0736_AVC_STYLE_QP_RANGE
505!           m_pcTrQuant->setQPforQuant( pcCU->getQP( 0 ), false, pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getSPS()->getQpBDOffsetC(), pcCU->getSlice()->getPPS()->getCrQpOffset() );
506  #else
507!           m_pcTrQuant->setQPforQuant( pcCU->getQP( 0 ), false, pcCU->getSlice()->getSliceType(), TEXT_CHROMA, pcCU->getSlice()->getPPS()->getCrQpOffset() );
508  #endif
509          }
510          Int scalingListType = 3 + g_eTTable[(Int)TEXT_CHROMA_V];
511diff -cr source_org/Lib/TLibEncoder/TEncTop.cpp source/Lib/TLibEncoder/TEncTop.cpp
512*** source_org/Lib/TLibEncoder/TEncTop.cpp      2012-04-06 17:00:35.000000000 +0900
513--- source/Lib/TLibEncoder/TEncTop.cpp  2012-04-06 18:05:05.811067882 +0900
514***************
515*** 658,665 ****
516      m_cPPS.setMinCuDQPSize( m_cPPS.getSPS()->getMaxCUWidth() >> ( m_cPPS.getMaxCuDQPDepth()) );
517    }
518 
519!   m_cPPS.setChromaQpOffset   ( m_iChromaQpOffset    );
520!   m_cPPS.setChromaQpOffset2nd( m_iChromaQpOffset2nd );
521 
522    m_cPPS.setEntropyCodingMode( 1 ); // In the PPS now, but also remains in slice header!
523    m_cPPS.setEntropyCodingSynchro(m_iWaveFrontSynchro);
524--- 658,665 ----
525      m_cPPS.setMinCuDQPSize( m_cPPS.getSPS()->getMaxCUWidth() >> ( m_cPPS.getMaxCuDQPDepth()) );
526    }
527 
528!   m_cPPS.setCbQpOffset   ( m_iCbQpOffset );
529!   m_cPPS.setCrQpOffset   ( m_iCrQpOffset );
530 
531    m_cPPS.setEntropyCodingMode( 1 ); // In the PPS now, but also remains in slice header!
532    m_cPPS.setEntropyCodingSynchro(m_iWaveFrontSynchro);