CreateCoder.cpp |
#ifdef EXTERNAL_CODECS
extern CExternalCodecs g_ExternalCodecs;
#define CHECK_GLOBAL_CODECS \
if (!__externalCodecs || !__externalCodecs->IsSet()) __externalCodecs = &g_ExternalCodecs;
#endif
|
13042 |
CreateCoder.h |
if EXTERNAL_CODECS is not defined, the code supports only codecs that
are statically linked at compile-time and link-time.
if EXTERNAL_CODECS is defined, the code supports also codecs from another
executable modules, that can be linked dynamically at run-time:
- EXE module can use codecs from external DLL files.
- DLL module can use codecs from external EXE and DLL files.
CExternalCodecs contains information about codecs and interfaces to create them.
The order of codecs:
1) Internal codecs
2) External codecs
|
5233 |
CWrappers.cpp |
---------- CByteInBufWrap ---------- |
5918 |
CWrappers.h |
|
2159 |
FilePathAutoRename.cpp |
|
986 |
FilePathAutoRename.h |
|
197 |
FileStreams.cpp |
|
11134 |
FileStreams.h |
|
3650 |
FilterCoder.cpp |
AES filters need 16-bytes alignment for HARDWARE-AES instructions.
So we call IFilter::Filter(, size), where (size != 16 * N) only for last data block.
AES-CBC filters need data size aligned for 16-bytes.
So the encoder can add zeros to the end of original stream.
Some filters (BCJ and others) don't process data at the end of stream in some cases.
So the encoder and decoder write such last bytes without change.
|
9542 |
FilterCoder.h |
|
6401 |
InBuffer.cpp |
if ((size_t)(_bufLim - _buf) >= size)
{
const Byte *src = _buf;
for (size_t i = 0; i < size; i++)
buf[i] = src[i];
_buf += size;
return size;
}
for (size_t i = 0; i < size; i++)
{
if (_buf >= _bufLim)
if (!ReadBlock())
return i;
buf[i] = *_buf++;
}
return size;
|
3029 |
InBuffer.h |
|
2075 |
InOutTempBuffer.cpp |
STDMETHODIMP CSequentialOutTempBufferImp::Write(const void *data, UInt32 size, UInt32 *processed)
{
if (!_buf->Write(data, size))
{
if (processed)
processed = 0;
return E_FAIL;
}
if (processed)
processed = size;
return S_OK;
}
|
2690 |
InOutTempBuffer.h |
class CSequentialOutTempBufferImp:
public ISequentialOutStream,
public CMyUnknownImp
{
CInOutTempBuffer *_buf;
public:
void Init(CInOutTempBuffer *buffer) { _buf = buffer; }
MY_UNKNOWN_IMP
STDMETHOD(Write)(const void *data, UInt32 size, UInt32 *processedSize);
};
|
1017 |
LimitedStreams.cpp |
|
9521 |
LimitedStreams.h |
|
6125 |
LockedStream.cpp |
|
44 |
LockedStream.h |
|
85 |
MethodId.cpp |
|
40 |
MethodId.h |
|
145 |
MethodProps.cpp |
|
11712 |
MethodProps.h |
|
7023 |
OffsetStream.cpp |
|
982 |
OffsetStream.h |
|
553 |
OutBuffer.cpp |
|
2168 |
OutBuffer.h |
|
1380 |
ProgressUtils.cpp |
|
1087 |
ProgressUtils.h |
|
707 |
PropId.cpp |
|
1442 |
RegisterArc.h |
|
2620 |
RegisterCodec.h |
|
3304 |
StdAfx.h |
|
101 |
StreamBinder.cpp |
_canWrite_Event.Lock();
if (_readingWasClosed)
_readingWasClosed2 = true;
|
3828 |
StreamBinder.h |
We don't use probably UNSAFE version:
reader thread:
_canWrite_Event.Set();
_readingWasClosed = true
_canWrite_Event.Set();
writer thread:
_canWrite_Event.Wait()
if (_readingWasClosed)
Can second call of _canWrite_Event.Set() be executed without memory barrier, if event is already set?
|
1414 |
StreamObjects.cpp |
|
7288 |
StreamObjects.h |
|
4313 |
StreamUtils.cpp |
|
1638 |
StreamUtils.h |
|
463 |
UniqBlocks.cpp |
|
1260 |
UniqBlocks.h |
|
547 |
VirtThread.cpp |
|
842 |
VirtThread.h |
|
587 |