| OLD | NEW |
| (Empty) |
| 1 // CoderMixer2.cpp | |
| 2 | |
| 3 #include "StdAfx.h" | |
| 4 | |
| 5 #include "CoderMixer2.h" | |
| 6 | |
| 7 namespace NCoderMixer { | |
| 8 | |
| 9 CBindReverseConverter::CBindReverseConverter(const CBindInfo &srcBindInfo): | |
| 10 _srcBindInfo(srcBindInfo) | |
| 11 { | |
| 12 srcBindInfo.GetNumStreams(NumSrcInStreams, _numSrcOutStreams); | |
| 13 | |
| 14 UInt32 j; | |
| 15 for (j = 0; j < NumSrcInStreams; j++) | |
| 16 { | |
| 17 _srcInToDestOutMap.Add(0); | |
| 18 DestOutToSrcInMap.Add(0); | |
| 19 } | |
| 20 for (j = 0; j < _numSrcOutStreams; j++) | |
| 21 { | |
| 22 _srcOutToDestInMap.Add(0); | |
| 23 _destInToSrcOutMap.Add(0); | |
| 24 } | |
| 25 | |
| 26 UInt32 destInOffset = 0; | |
| 27 UInt32 destOutOffset = 0; | |
| 28 UInt32 srcInOffset = NumSrcInStreams; | |
| 29 UInt32 srcOutOffset = _numSrcOutStreams; | |
| 30 | |
| 31 for (int i = srcBindInfo.Coders.Size() - 1; i >= 0; i--) | |
| 32 { | |
| 33 const CCoderStreamsInfo &srcCoderInfo = srcBindInfo.Coders[i]; | |
| 34 | |
| 35 srcInOffset -= srcCoderInfo.NumInStreams; | |
| 36 srcOutOffset -= srcCoderInfo.NumOutStreams; | |
| 37 | |
| 38 UInt32 j; | |
| 39 for (j = 0; j < srcCoderInfo.NumInStreams; j++, destOutOffset++) | |
| 40 { | |
| 41 UInt32 index = srcInOffset + j; | |
| 42 _srcInToDestOutMap[index] = destOutOffset; | |
| 43 DestOutToSrcInMap[destOutOffset] = index; | |
| 44 } | |
| 45 for (j = 0; j < srcCoderInfo.NumOutStreams; j++, destInOffset++) | |
| 46 { | |
| 47 UInt32 index = srcOutOffset + j; | |
| 48 _srcOutToDestInMap[index] = destInOffset; | |
| 49 _destInToSrcOutMap[destInOffset] = index; | |
| 50 } | |
| 51 } | |
| 52 } | |
| 53 | |
| 54 void CBindReverseConverter::CreateReverseBindInfo(CBindInfo &destBindInfo) | |
| 55 { | |
| 56 destBindInfo.Coders.Clear(); | |
| 57 destBindInfo.BindPairs.Clear(); | |
| 58 destBindInfo.InStreams.Clear(); | |
| 59 destBindInfo.OutStreams.Clear(); | |
| 60 | |
| 61 int i; | |
| 62 for (i = _srcBindInfo.Coders.Size() - 1; i >= 0; i--) | |
| 63 { | |
| 64 const CCoderStreamsInfo &srcCoderInfo = _srcBindInfo.Coders[i]; | |
| 65 CCoderStreamsInfo destCoderInfo; | |
| 66 destCoderInfo.NumInStreams = srcCoderInfo.NumOutStreams; | |
| 67 destCoderInfo.NumOutStreams = srcCoderInfo.NumInStreams; | |
| 68 destBindInfo.Coders.Add(destCoderInfo); | |
| 69 } | |
| 70 for (i = _srcBindInfo.BindPairs.Size() - 1; i >= 0; i--) | |
| 71 { | |
| 72 const CBindPair &srcBindPair = _srcBindInfo.BindPairs[i]; | |
| 73 CBindPair destBindPair; | |
| 74 destBindPair.InIndex = _srcOutToDestInMap[srcBindPair.OutIndex]; | |
| 75 destBindPair.OutIndex = _srcInToDestOutMap[srcBindPair.InIndex]; | |
| 76 destBindInfo.BindPairs.Add(destBindPair); | |
| 77 } | |
| 78 for (i = 0; i < _srcBindInfo.InStreams.Size(); i++) | |
| 79 destBindInfo.OutStreams.Add(_srcInToDestOutMap[_srcBindInfo.InStreams[i]]); | |
| 80 for (i = 0; i < _srcBindInfo.OutStreams.Size(); i++) | |
| 81 destBindInfo.InStreams.Add(_srcOutToDestInMap[_srcBindInfo.OutStreams[i]]); | |
| 82 } | |
| 83 | |
| 84 CCoderInfo2::CCoderInfo2(UInt32 numInStreams, UInt32 numOutStreams): | |
| 85 NumInStreams(numInStreams), | |
| 86 NumOutStreams(numOutStreams) | |
| 87 { | |
| 88 InSizes.Reserve(NumInStreams); | |
| 89 InSizePointers.Reserve(NumInStreams); | |
| 90 OutSizePointers.Reserve(NumOutStreams); | |
| 91 OutSizePointers.Reserve(NumOutStreams); | |
| 92 } | |
| 93 | |
| 94 static void SetSizes(const UInt64 **srcSizes, CRecordVector<UInt64> &sizes, | |
| 95 CRecordVector<const UInt64 *> &sizePointers, UInt32 numItems) | |
| 96 { | |
| 97 sizes.Clear(); | |
| 98 sizePointers.Clear(); | |
| 99 for(UInt32 i = 0; i < numItems; i++) | |
| 100 { | |
| 101 if (srcSizes == 0 || srcSizes[i] == NULL) | |
| 102 { | |
| 103 sizes.Add(0); | |
| 104 sizePointers.Add(NULL); | |
| 105 } | |
| 106 else | |
| 107 { | |
| 108 sizes.Add(*srcSizes[i]); | |
| 109 sizePointers.Add(&sizes.Back()); | |
| 110 } | |
| 111 } | |
| 112 } | |
| 113 | |
| 114 void CCoderInfo2::SetCoderInfo(const UInt64 **inSizes, | |
| 115 const UInt64 **outSizes) | |
| 116 { | |
| 117 SetSizes(inSizes, InSizes, InSizePointers, NumInStreams); | |
| 118 SetSizes(outSizes, OutSizes, OutSizePointers, NumOutStreams); | |
| 119 } | |
| 120 | |
| 121 } | |
| OLD | NEW |