Ticket #1007: weighted_pred_range.patch
File weighted_pred_range.patch, 3.0 KB (added by bheng, 11 years ago) |
---|
-
source/Lib/TLibDecoder/TDecCAVLC.cpp
1745 1745 Int iDeltaDenom; 1746 1746 // decode delta_luma_log2_weight_denom : 1747 1747 READ_UVLC( uiLog2WeightDenomLuma, "luma_log2_weight_denom" ); // ue(v): luma_log2_weight_denom 1748 assert( uiLog2WeightDenomLuma <= 7 ); 1748 1749 if( bChroma ) 1749 1750 { 1750 1751 READ_SVLC( iDeltaDenom, "delta_chroma_log2_weight_denom" ); // se(v): delta_chroma_log2_weight_denom 1751 1752 assert((iDeltaDenom + (Int)uiLog2WeightDenomLuma)>=0); 1753 assert((iDeltaDenom + (Int)uiLog2WeightDenomLuma)<=7); 1752 1754 uiLog2WeightDenomChroma = (UInt)(iDeltaDenom + uiLog2WeightDenomLuma); 1753 1755 } 1754 1756 … … 1787 1789 { 1788 1790 Int iDeltaWeight; 1789 1791 READ_SVLC( iDeltaWeight, "delta_luma_weight_lX" ); // se(v): delta_luma_weight_l0[i] 1792 assert( iDeltaWeight >= -128 ); 1793 assert( iDeltaWeight <= 127 ); 1790 1794 wp[0].iWeight = (iDeltaWeight + (1<<wp[0].uiLog2WeightDenom)); 1791 1795 READ_SVLC( wp[0].iOffset, "luma_offset_lX" ); // se(v): luma_offset_l0[i] 1796 assert( wp[0].iOffset >= -128 ); 1797 assert( wp[0].iOffset <= 127 ); 1792 1798 } 1793 1799 else 1794 1800 { … … 1803 1809 { 1804 1810 Int iDeltaWeight; 1805 1811 READ_SVLC( iDeltaWeight, "delta_chroma_weight_lX" ); // se(v): chroma_weight_l0[i][j] 1812 assert( iDeltaWeight >= -128 ); 1813 assert( iDeltaWeight <= 127 ); 1806 1814 wp[j].iWeight = (iDeltaWeight + (1<<wp[1].uiLog2WeightDenom)); 1807 1815 1808 1816 Int iDeltaChroma; 1809 1817 READ_SVLC( iDeltaChroma, "delta_chroma_offset_lX" ); // se(v): delta_chroma_offset_l0[i][j] 1818 assert( iDeltaChroma >= -512 ); 1819 assert( iDeltaChroma <= 511 ); 1810 1820 Int pred = ( 128 - ( ( 128*wp[j].iWeight)>>(wp[j].uiLog2WeightDenom) ) ); 1811 1821 wp[j].iOffset = Clip3(-128, 127, (iDeltaChroma + pred) ); 1812 1822 } -
source/Lib/TLibEncoder/WeightPredAnalysis.cpp
234 234 Int weight = (Int)( 0.5 + dWeight * (Double)(1<<log2Denom) ); 235 235 Int offset = (Int)( ((currDC<<log2Denom) - ((Int64)weight * refDC) + (Int64)realOffset) >> realLog2Denom ); 236 236 237 // Chroma offset range limi nation237 // Chroma offset range limitation 238 238 if(comp) 239 239 { 240 240 Int shift = 1 << (g_bitDepthC - 1); … … 242 242 Int deltaOffset = Clip3( -512, 511, (offset - pred) ); // signed 10bit 243 243 offset = Clip3( -128, 127, (deltaOffset + pred) ); // signed 8bit 244 244 } 245 // Luma offset range limitation 246 else 247 { 248 offset = Clip3( -128, 127, offset); 249 } 245 250 246 251 // Weighting factor limitation 247 252 Int defaultWeight = (1<<log2Denom);