protected static void dequantization_Component(short[,] compontent, TS_RFX_CODEC_QUANT tsRfxCodecQuant, bool useReduceExtrapolate) { // Quantization factor: HL1, LH1, HH1, HL2, LH2, HH2, HL3, LH3, HH3, LL3 Hashtable scaleValueTable = new Hashtable(); int HL1_Factor = tsRfxCodecQuant.HL1_HH1 & 0x0f; int LH1_Factor = (tsRfxCodecQuant.HH2_LH1 & 0xf0) >> 4; int HH1_Factor = (tsRfxCodecQuant.HL1_HH1 & 0xf0) >> 4; int HL2_Factor = (tsRfxCodecQuant.LH2_HL2 & 0xf0) >> 4; int LH2_Factor = tsRfxCodecQuant.LH2_HL2 & 0x0f; int HH2_Factor = tsRfxCodecQuant.HH2_LH1 & 0x0f; int HL3_Factor = tsRfxCodecQuant.HL3_HH3 & 0x0f; int LH3_Factor = (tsRfxCodecQuant.LL3_LH3 & 0xf0) >> 4; int HH3_Factor = (tsRfxCodecQuant.HL3_HH3 & 0xf0) >> 4; int LL3_Factor = tsRfxCodecQuant.LL3_LH3 & 0x0f; int[] HL_Factor = { HL1_Factor, HL2_Factor, HL3_Factor }; int[] LH_Factor = { LH1_Factor, LH2_Factor, LH3_Factor }; int[] HH_Factor = { HH1_Factor, HH2_Factor, HH3_Factor }; BandType_Values[] bandArr = new BandType_Values[] { BandType_Values.HL1, BandType_Values.LH1, BandType_Values.HH1, BandType_Values.HL2, BandType_Values.LH2, BandType_Values.HH2, BandType_Values.HL3, BandType_Values.LH3, BandType_Values.HH3, BandType_Values.LL3 }; int[] bandFactor = new int[] { HL1_Factor, LH1_Factor, HH1_Factor, HL2_Factor, LH2_Factor, HH2_Factor, HL3_Factor, LH3_Factor, HH3_Factor, LL3_Factor }; for (int i = 0; i < bandArr.Length; i++) { BandRect br = RdpegfxTileUtils.GetBandRect(bandArr[i], useReduceExtrapolate); doDequantization_Subband(compontent, br.left, br.top, br.right, br.bottom, bandFactor[i]); } }
/// <summary> /// Get the Rect area of a band /// </summary> /// <param name="band">the band type</param> /// <param name="useReduceExtrapolate">indicates if Reduce-Extrapolate method used</param> /// <returns>The band rect area</returns> public static BandRect GetBandRect(BandType_Values band, bool useReduceExtrapolate) { BandRect br = new BandRect(); int bandIdx = (int)band; if (useReduceExtrapolate) { br.left = BandRectMap_ReduceExtrapolate[bandIdx, 0]; br.top = BandRectMap_ReduceExtrapolate[bandIdx, 1]; br.right = BandRectMap_ReduceExtrapolate[bandIdx, 2]; br.bottom = BandRectMap_ReduceExtrapolate[bandIdx, 3]; } else { br.left = BandRectMap[bandIdx, 0]; br.top = BandRectMap[bandIdx, 1]; br.right = BandRectMap[bandIdx, 2]; br.bottom = BandRectMap[bandIdx, 3]; } return(br); }
/// <summary> /// Get the Rect area of a band /// </summary> /// <param name="band">the band type</param> /// <param name="useReduceExtrapolate">indicates if Reduce-Extrapolate method used</param> /// <returns>The band rect area</returns> public static BandRect GetBandRect(BandType_Values band, bool useReduceExtrapolate) { BandRect br = new BandRect(); int bandIdx = (int)band; if (useReduceExtrapolate) { br.left = BandRectMap_ReduceExtrapolate[bandIdx, 0]; br.top = BandRectMap_ReduceExtrapolate[bandIdx, 1]; br.right = BandRectMap_ReduceExtrapolate[bandIdx, 2]; br.bottom = BandRectMap_ReduceExtrapolate[bandIdx, 3]; } else { br.left = BandRectMap[bandIdx, 0]; br.top = BandRectMap[bandIdx, 1]; br.right = BandRectMap[bandIdx, 2]; br.bottom = BandRectMap[bandIdx, 3]; } return br; }