rlm@1
|
1 // ICoder.h
|
rlm@1
|
2
|
rlm@1
|
3 #ifndef __ICODER_H
|
rlm@1
|
4 #define __ICODER_H
|
rlm@1
|
5
|
rlm@1
|
6 #include "IStream.h"
|
rlm@1
|
7
|
rlm@1
|
8 #define CODER_INTERFACE(i, x) DECL_INTERFACE(i, 4, x)
|
rlm@1
|
9
|
rlm@1
|
10 CODER_INTERFACE(ICompressProgressInfo, 0x04)
|
rlm@1
|
11 {
|
rlm@1
|
12 STDMETHOD(SetRatioInfo)(const UInt64 *inSize, const UInt64 *outSize) PURE;
|
rlm@1
|
13 };
|
rlm@1
|
14
|
rlm@1
|
15 CODER_INTERFACE(ICompressCoder, 0x05)
|
rlm@1
|
16 {
|
rlm@1
|
17 STDMETHOD(Code)(ISequentialInStream *inStream,
|
rlm@1
|
18 ISequentialOutStream *outStream,
|
rlm@1
|
19 const UInt64 *inSize,
|
rlm@1
|
20 const UInt64 *outSize,
|
rlm@1
|
21 ICompressProgressInfo *progress) PURE;
|
rlm@1
|
22 };
|
rlm@1
|
23
|
rlm@1
|
24 CODER_INTERFACE(ICompressCoder2, 0x18)
|
rlm@1
|
25 {
|
rlm@1
|
26 STDMETHOD(Code)(ISequentialInStream **inStreams,
|
rlm@1
|
27 const UInt64 **inSizes,
|
rlm@1
|
28 UInt32 numInStreams,
|
rlm@1
|
29 ISequentialOutStream **outStreams,
|
rlm@1
|
30 const UInt64 **outSizes,
|
rlm@1
|
31 UInt32 numOutStreams,
|
rlm@1
|
32 ICompressProgressInfo *progress) PURE;
|
rlm@1
|
33 };
|
rlm@1
|
34
|
rlm@1
|
35 namespace NCoderPropID
|
rlm@1
|
36 {
|
rlm@1
|
37 enum EEnum
|
rlm@1
|
38 {
|
rlm@1
|
39 kDictionarySize = 0x400,
|
rlm@1
|
40 kUsedMemorySize,
|
rlm@1
|
41 kOrder,
|
rlm@1
|
42 kBlockSize,
|
rlm@1
|
43 kPosStateBits = 0x440,
|
rlm@1
|
44 kLitContextBits,
|
rlm@1
|
45 kLitPosBits,
|
rlm@1
|
46 kNumFastBytes = 0x450,
|
rlm@1
|
47 kMatchFinder,
|
rlm@1
|
48 kMatchFinderCycles,
|
rlm@1
|
49 kNumPasses = 0x460,
|
rlm@1
|
50 kAlgorithm = 0x470,
|
rlm@1
|
51 kMultiThread = 0x480,
|
rlm@1
|
52 kNumThreads,
|
rlm@1
|
53 kEndMarker = 0x490
|
rlm@1
|
54 };
|
rlm@1
|
55 }
|
rlm@1
|
56
|
rlm@1
|
57 CODER_INTERFACE(ICompressSetCoderProperties, 0x20)
|
rlm@1
|
58 {
|
rlm@1
|
59 STDMETHOD(SetCoderProperties)(const PROPID *propIDs,
|
rlm@1
|
60 const PROPVARIANT *properties, UInt32 numProperties) PURE;
|
rlm@1
|
61 };
|
rlm@1
|
62
|
rlm@1
|
63 /*
|
rlm@1
|
64 CODER_INTERFACE(ICompressSetCoderProperties, 0x21)
|
rlm@1
|
65 {
|
rlm@1
|
66 STDMETHOD(SetDecoderProperties)(ISequentialInStream *inStream) PURE;
|
rlm@1
|
67 };
|
rlm@1
|
68 */
|
rlm@1
|
69
|
rlm@1
|
70 CODER_INTERFACE(ICompressSetDecoderProperties2, 0x22)
|
rlm@1
|
71 {
|
rlm@1
|
72 STDMETHOD(SetDecoderProperties2)(const Byte *data, UInt32 size) PURE;
|
rlm@1
|
73 };
|
rlm@1
|
74
|
rlm@1
|
75 CODER_INTERFACE(ICompressWriteCoderProperties, 0x23)
|
rlm@1
|
76 {
|
rlm@1
|
77 STDMETHOD(WriteCoderProperties)(ISequentialOutStream *outStreams) PURE;
|
rlm@1
|
78 };
|
rlm@1
|
79
|
rlm@1
|
80 CODER_INTERFACE(ICompressGetInStreamProcessedSize, 0x24)
|
rlm@1
|
81 {
|
rlm@1
|
82 STDMETHOD(GetInStreamProcessedSize)(UInt64 *value) PURE;
|
rlm@1
|
83 };
|
rlm@1
|
84
|
rlm@1
|
85 CODER_INTERFACE(ICompressSetCoderMt, 0x25)
|
rlm@1
|
86 {
|
rlm@1
|
87 STDMETHOD(SetNumberOfThreads)(UInt32 numThreads) PURE;
|
rlm@1
|
88 };
|
rlm@1
|
89
|
rlm@1
|
90 CODER_INTERFACE(ICompressGetSubStreamSize, 0x30)
|
rlm@1
|
91 {
|
rlm@1
|
92 STDMETHOD(GetSubStreamSize)(UInt64 subStream, UInt64 *value) PURE;
|
rlm@1
|
93 };
|
rlm@1
|
94
|
rlm@1
|
95 CODER_INTERFACE(ICompressSetInStream, 0x31)
|
rlm@1
|
96 {
|
rlm@1
|
97 STDMETHOD(SetInStream)(ISequentialInStream *inStream) PURE;
|
rlm@1
|
98 STDMETHOD(ReleaseInStream)() PURE;
|
rlm@1
|
99 };
|
rlm@1
|
100
|
rlm@1
|
101 CODER_INTERFACE(ICompressSetOutStream, 0x32)
|
rlm@1
|
102 {
|
rlm@1
|
103 STDMETHOD(SetOutStream)(ISequentialOutStream *outStream) PURE;
|
rlm@1
|
104 STDMETHOD(ReleaseOutStream)() PURE;
|
rlm@1
|
105 };
|
rlm@1
|
106
|
rlm@1
|
107 CODER_INTERFACE(ICompressSetInStreamSize, 0x33)
|
rlm@1
|
108 {
|
rlm@1
|
109 STDMETHOD(SetInStreamSize)(const UInt64 *inSize) PURE;
|
rlm@1
|
110 };
|
rlm@1
|
111
|
rlm@1
|
112 CODER_INTERFACE(ICompressSetOutStreamSize, 0x34)
|
rlm@1
|
113 {
|
rlm@1
|
114 STDMETHOD(SetOutStreamSize)(const UInt64 *outSize) PURE;
|
rlm@1
|
115 };
|
rlm@1
|
116
|
rlm@1
|
117 CODER_INTERFACE(ICompressFilter, 0x40)
|
rlm@1
|
118 {
|
rlm@1
|
119 STDMETHOD(Init)() PURE;
|
rlm@1
|
120 STDMETHOD_(UInt32, Filter)(Byte *data, UInt32 size) PURE;
|
rlm@1
|
121 // Filter return outSize (UInt32)
|
rlm@1
|
122 // if (outSize <= size): Filter have converted outSize bytes
|
rlm@1
|
123 // if (outSize > size): Filter have not converted anything.
|
rlm@1
|
124 // and it needs at least outSize bytes to convert one block
|
rlm@1
|
125 // (it's for crypto block algorithms).
|
rlm@1
|
126 };
|
rlm@1
|
127
|
rlm@1
|
128 CODER_INTERFACE(ICompressCodecsInfo, 0x60)
|
rlm@1
|
129 {
|
rlm@1
|
130 STDMETHOD(GetNumberOfMethods)(UInt32 *numMethods) PURE;
|
rlm@1
|
131 STDMETHOD(GetProperty)(UInt32 index, PROPID propID, PROPVARIANT *value) PURE;
|
rlm@1
|
132 STDMETHOD(CreateDecoder)(UInt32 index, const GUID *iid, void **coder) PURE;
|
rlm@1
|
133 STDMETHOD(CreateEncoder)(UInt32 index, const GUID *iid, void **coder) PURE;
|
rlm@1
|
134 };
|
rlm@1
|
135 CODER_INTERFACE(ISetCompressCodecsInfo, 0x61)
|
rlm@1
|
136 {
|
rlm@1
|
137 STDMETHOD(SetCompressCodecsInfo)(ICompressCodecsInfo *compressCodecsInfo) PURE;
|
rlm@1
|
138 };
|
rlm@1
|
139
|
rlm@1
|
140 CODER_INTERFACE(ICryptoProperties, 0x80)
|
rlm@1
|
141 {
|
rlm@1
|
142 STDMETHOD(SetKey)(const Byte *data, UInt32 size) PURE;
|
rlm@1
|
143 STDMETHOD(SetInitVector)(const Byte *data, UInt32 size) PURE;
|
rlm@1
|
144 };
|
rlm@1
|
145
|
rlm@1
|
146 /*
|
rlm@1
|
147 CODER_INTERFACE(ICryptoResetSalt, 0x88)
|
rlm@1
|
148 {
|
rlm@1
|
149 STDMETHOD(ResetSalt)() PURE;
|
rlm@1
|
150 };
|
rlm@1
|
151 */
|
rlm@1
|
152
|
rlm@1
|
153 CODER_INTERFACE(ICryptoResetInitVector, 0x8C)
|
rlm@1
|
154 {
|
rlm@1
|
155 STDMETHOD(ResetInitVector)() PURE;
|
rlm@1
|
156 };
|
rlm@1
|
157
|
rlm@1
|
158 CODER_INTERFACE(ICryptoSetPassword, 0x90)
|
rlm@1
|
159 {
|
rlm@1
|
160 STDMETHOD(CryptoSetPassword)(const Byte *data, UInt32 size) PURE;
|
rlm@1
|
161 };
|
rlm@1
|
162
|
rlm@1
|
163 CODER_INTERFACE(ICryptoSetCRC, 0xA0)
|
rlm@1
|
164 {
|
rlm@1
|
165 STDMETHOD(CryptoSetCRC)(UInt32 crc) PURE;
|
rlm@1
|
166 };
|
rlm@1
|
167
|
rlm@1
|
168 //////////////////////
|
rlm@1
|
169 // It's for DLL file
|
rlm@1
|
170 namespace NMethodPropID
|
rlm@1
|
171 {
|
rlm@1
|
172 enum EEnum
|
rlm@1
|
173 {
|
rlm@1
|
174 kID,
|
rlm@1
|
175 kName,
|
rlm@1
|
176 kDecoder,
|
rlm@1
|
177 kEncoder,
|
rlm@1
|
178 kInStreams,
|
rlm@1
|
179 kOutStreams,
|
rlm@1
|
180 kDescription,
|
rlm@1
|
181 kDecoderIsAssigned,
|
rlm@1
|
182 kEncoderIsAssigned
|
rlm@1
|
183 };
|
rlm@1
|
184 }
|
rlm@1
|
185
|
rlm@1
|
186 #endif
|