4.45 beta

This commit is contained in:
Igor Pavlov
2007-04-17 00:00:00 +00:00
committed by Kornel Lesiński
parent d9666cf046
commit a145bfc7cf
458 changed files with 13144 additions and 18608 deletions

View File

@@ -3,7 +3,10 @@
#include "StdAfx.h"
#include "ARM.h"
#include "../../../../C/Compress/Branch/BranchARM.c"
extern "C"
{
#include "../../../../C/Compress/Branch/BranchARM.h"
}
UInt32 CBC_ARM_Encoder::SubFilter(Byte *data, UInt32 size)
{

View File

@@ -1,9 +1,13 @@
// ARMThumb.cpp
#include "StdAfx.h"
#include "ARMThumb.h"
#include "../../../../C/Compress/Branch/BranchARMThumb.c"
extern "C"
{
#include "../../../../C/Compress/Branch/BranchARMThumb.h"
}
UInt32 CBC_ARMThumb_Encoder::SubFilter(Byte *data, UInt32 size)
{

View File

@@ -0,0 +1,18 @@
// BranchRegister.cpp
#include "StdAfx.h"
#include "../../Common/RegisterCodec.h"
#include "x86_2.h"
static void *CreateCodec() { return (void *)(ICompressCoder2 *)(new CBCJ2_x86_Decoder()); }
#ifndef EXTRACT_ONLY
static void *CreateCodecOut() { return (void *)(ICompressCoder2 *)(new CBCJ2_x86_Encoder()); }
#else
#define CreateCodecOut 0
#endif
static CCodecInfo g_CodecInfo =
{ CreateCodec, CreateCodecOut, 0x0303011B, L"BCJ2", 4, false };
REGISTER_CODEC(BCJ2)

View File

@@ -0,0 +1,18 @@
// BranchRegister.cpp
#include "StdAfx.h"
#include "../../Common/RegisterCodec.h"
#include "x86.h"
static void *CreateCodec() { return (void *)(ICompressFilter *)(new CBCJ_x86_Decoder()); }
#ifndef EXTRACT_ONLY
static void *CreateCodecOut() { return (void *)(ICompressFilter *)(new CBCJ_x86_Encoder()); }
#else
#define CreateCodecOut 0
#endif
static CCodecInfo g_CodecInfo =
{ CreateCodec, CreateCodecOut, 0x03030103, L"BCJ", 1, true };
REGISTER_CODEC(BCJ)

View File

@@ -98,7 +98,11 @@ SOURCE=..\Codec.def
# End Source File
# Begin Source File
SOURCE=.\DllExports.cpp
SOURCE=..\CodecExports.cpp
# End Source File
# Begin Source File
SOURCE=..\DllExports.cpp
# End Source File
# Begin Source File
@@ -155,6 +159,14 @@ SOURCE=.\ARMThumb.h
# End Source File
# Begin Source File
SOURCE=.\BCJ2Register.cpp
# End Source File
# Begin Source File
SOURCE=.\BCJRegister.cpp
# End Source File
# Begin Source File
SOURCE=.\BranchCoder.cpp
# End Source File
# Begin Source File
@@ -163,6 +175,10 @@ SOURCE=.\BranchCoder.h
# End Source File
# Begin Source File
SOURCE=.\BranchRegister.cpp
# End Source File
# Begin Source File
SOURCE=.\BranchTypes.h
# End Source File
# Begin Source File
@@ -282,16 +298,135 @@ SOURCE=..\RangeCoder\RangeCoder.h
SOURCE=..\RangeCoder\RangeCoderBit.h
# End Source File
# End Group
# Begin Group "Common"
# Begin Group "C"
# PROP Default_Filter ""
# Begin Group "C Branch"
# PROP Default_Filter ""
# Begin Source File
SOURCE=..\..\..\Common\Alloc.cpp
SOURCE=..\..\..\..\C\Compress\Branch\BranchARM.c
!IF "$(CFG)" == "Branch - Win32 Release"
!ELSEIF "$(CFG)" == "Branch - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=..\..\..\Common\Alloc.h
SOURCE=..\..\..\..\C\Compress\Branch\BranchARM.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\C\Compress\Branch\BranchARMThumb.c
!IF "$(CFG)" == "Branch - Win32 Release"
!ELSEIF "$(CFG)" == "Branch - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=..\..\..\..\C\Compress\Branch\BranchARMThumb.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\C\Compress\Branch\BranchIA64.c
!IF "$(CFG)" == "Branch - Win32 Release"
!ELSEIF "$(CFG)" == "Branch - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=..\..\..\..\C\Compress\Branch\BranchIA64.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\C\Compress\Branch\BranchPPC.c
!IF "$(CFG)" == "Branch - Win32 Release"
!ELSEIF "$(CFG)" == "Branch - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=..\..\..\..\C\Compress\Branch\BranchPPC.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\C\Compress\Branch\BranchSPARC.c
!IF "$(CFG)" == "Branch - Win32 Release"
!ELSEIF "$(CFG)" == "Branch - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=..\..\..\..\C\Compress\Branch\BranchSPARC.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\C\Compress\Branch\BranchTypes.h
# End Source File
# Begin Source File
SOURCE=..\..\..\..\C\Compress\Branch\BranchX86.c
!IF "$(CFG)" == "Branch - Win32 Release"
!ELSEIF "$(CFG)" == "Branch - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=..\..\..\..\C\Compress\Branch\BranchX86.h
# End Source File
# End Group
# Begin Source File
SOURCE=..\..\..\..\C\Alloc.c
!IF "$(CFG)" == "Branch - Win32 Release"
!ELSEIF "$(CFG)" == "Branch - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=..\..\..\..\C\Alloc.h
# End Source File
# End Group
# End Target

View File

@@ -5,7 +5,6 @@
#include "Common/MyCom.h"
#include "Common/Types.h"
#include "Common/Alloc.h"
#include "../../ICoder.h"
@@ -35,20 +34,12 @@ public:
#define MyClassDecoderB(Name, ADD_ITEMS, ADD_INIT) class C ## Name: public CBranchConverter, public ADD_ITEMS \
{ public: UInt32 SubFilter(Byte *data, UInt32 size); ADD_INIT};
#define MyClass2b(Name, id, subId, encodingId) \
DEFINE_GUID(CLSID_CCompressConvert ## Name, \
0x23170F69, 0x40C1, 0x278B, 0x03, 0x03, id, subId, 0x00, 0x00, encodingId, 0x00);
#define MyClassA(Name, id, subId) \
MyClass2b(Name ## _Encoder, id, subId, 0x01) \
MyClassEncoderA(Name ## _Encoder) \
MyClass2b(Name ## _Decoder, id, subId, 0x00) \
MyClassDecoderA(Name ## _Decoder)
#define MyClassB(Name, id, subId, ADD_ITEMS, ADD_INIT) \
MyClass2b(Name ## _Encoder, id, subId, 0x01) \
MyClassEncoderB(Name ## _Encoder, ADD_ITEMS, ADD_INIT) \
MyClass2b(Name ## _Decoder, id, subId, 0x00) \
MyClassDecoderB(Name ## _Decoder, ADD_ITEMS, ADD_INIT)
#endif

View File

@@ -0,0 +1,34 @@
// BranchRegister.cpp
#include "StdAfx.h"
#include "../../Common/RegisterCodec.h"
#include "PPC.h"
#include "IA64.h"
#include "ARM.h"
#include "ARMThumb.h"
#include "SPARC.h"
#define CREATE_CODEC(x) \
static void *CreateCodec ## x() { return (void *)(ICompressFilter *)(new C ## x ## _Decoder); } \
static void *CreateCodec ## x ## Out() { return (void *)(ICompressFilter *)(new C ## x ## _Encoder); }
CREATE_CODEC(BC_PPC_B)
CREATE_CODEC(BC_IA64)
CREATE_CODEC(BC_ARM)
CREATE_CODEC(BC_ARMThumb)
CREATE_CODEC(BC_SPARC)
#define METHOD_ITEM(x, id1, id2, name) { CreateCodec ## x, CreateCodec ## x ## Out, 0x03030000 + (id1 * 256) + id2, name, 1, true }
static CCodecInfo g_CodecsInfo[] =
{
METHOD_ITEM(BC_PPC_B, 0x02, 0x05, L"BC_PPC_B"),
METHOD_ITEM(BC_IA64, 0x04, 1, L"BC_IA64"),
METHOD_ITEM(BC_ARM, 0x05, 1, L"BC_ARM"),
METHOD_ITEM(BC_ARMThumb,0x07, 1, L"BC_ARMThumb"),
METHOD_ITEM(BC_SPARC, 0x08, 0x05, L"BC_SPARC")
};
REGISTER_CODECS(Branch)

View File

@@ -1,152 +0,0 @@
// DLLExports.cpp
#include "StdAfx.h"
#include "Common/MyInitGuid.h"
#include "Common/ComTry.h"
#include "x86.h"
#include "PPC.h"
#include "IA64.h"
#include "ARM.h"
#include "ARMThumb.h"
#include "x86_2.h"
#include "SPARC.h"
#define MY_CreateClass0(n) \
if (*clsid == CLSID_CCompressConvert ## n ## _Encoder) { \
if (!correctInterface) \
return E_NOINTERFACE; \
filter = (ICompressFilter *)new C ## n ## _Encoder(); \
} else if (*clsid == CLSID_CCompressConvert ## n ## _Decoder){ \
if (!correctInterface) \
return E_NOINTERFACE; \
filter = (ICompressFilter *)new C ## n ## _Decoder(); \
}
extern "C"
BOOL WINAPI DllMain(HINSTANCE /* hInstance */, DWORD /* dwReason */, LPVOID /*lpReserved*/)
{
return TRUE;
}
STDAPI CreateObject(
const GUID *clsid,
const GUID *interfaceID,
void **outObject)
{
COM_TRY_BEGIN
*outObject = 0;
int correctInterface = (*interfaceID == IID_ICompressFilter);
CMyComPtr<ICompressFilter> filter;
MY_CreateClass0(BCJ_x86)
else
MY_CreateClass0(BC_ARM)
else
MY_CreateClass0(BC_PPC_B)
else
MY_CreateClass0(BC_IA64)
else
MY_CreateClass0(BC_ARMThumb)
else
MY_CreateClass0(BC_SPARC)
else
{
CMyComPtr<ICompressCoder2> coder2;
correctInterface = (*interfaceID == IID_ICompressCoder2);
if (*clsid == CLSID_CCompressConvertBCJ2_x86_Encoder)
{
if (!correctInterface)
return E_NOINTERFACE;
coder2 = (ICompressCoder2 *)new CBCJ2_x86_Encoder();
}
else if (*clsid == CLSID_CCompressConvertBCJ2_x86_Decoder)
{
if (!correctInterface)
return E_NOINTERFACE;
coder2 = (ICompressCoder2 *)new CBCJ2_x86_Decoder();
}
else
return CLASS_E_CLASSNOTAVAILABLE;
*outObject = coder2.Detach();
return S_OK;
}
*outObject = filter.Detach();
return S_OK;
COM_TRY_END
}
struct CBranchMethodItem
{
char ID[4];
const wchar_t *UserName;
const GUID *Decoder;
const GUID *Encoder;
UINT32 NumInStreams;
};
#define METHOD_ITEM(Name, id, subId, UserName, NumInStreams) \
{ { 0x03, 0x03, id, subId }, UserName, \
&CLSID_CCompressConvert ## Name ## _Decoder, \
&CLSID_CCompressConvert ## Name ## _Encoder, NumInStreams }
static CBranchMethodItem g_Methods[] =
{
METHOD_ITEM(BCJ_x86, 0x01, 0x03, L"BCJ", 1),
METHOD_ITEM(BCJ2_x86, 0x01, 0x1B, L"BCJ2", 4),
METHOD_ITEM(BC_PPC_B, 0x02, 0x05, L"BC_PPC_B", 1),
// METHOD_ITEM(BC_Alpha, 0x03, 1, L"BC_Alpha", 1),
METHOD_ITEM(BC_IA64, 0x04, 1, L"BC_IA64", 1),
METHOD_ITEM(BC_ARM, 0x05, 1, L"BC_ARM", 1),
// METHOD_ITEM(BC_M68_B, 0x06, 5, L"BC_M68_B", 1),
METHOD_ITEM(BC_ARMThumb, 0x07, 1, L"BC_ARMThumb", 1),
METHOD_ITEM(BC_SPARC, 0x08, 0x05, L"BC_SPARC", 1)
};
STDAPI GetNumberOfMethods(UINT32 *numMethods)
{
*numMethods = sizeof(g_Methods) / sizeof(g_Methods[1]);
return S_OK;
}
STDAPI GetMethodProperty(UINT32 index, PROPID propID, PROPVARIANT *value)
{
if (index > sizeof(g_Methods) / sizeof(g_Methods[1]))
return E_INVALIDARG;
VariantClear((tagVARIANT *)value);
const CBranchMethodItem &method = g_Methods[index];
switch(propID)
{
case NMethodPropID::kID:
if ((value->bstrVal = ::SysAllocStringByteLen(method.ID,
sizeof(method.ID))) != 0)
value->vt = VT_BSTR;
return S_OK;
case NMethodPropID::kName:
if ((value->bstrVal = ::SysAllocString(method.UserName)) != 0)
value->vt = VT_BSTR;
return S_OK;
case NMethodPropID::kDecoder:
if ((value->bstrVal = ::SysAllocStringByteLen(
(const char *)method.Decoder, sizeof(GUID))) != 0)
value->vt = VT_BSTR;
return S_OK;
case NMethodPropID::kEncoder:
if ((value->bstrVal = ::SysAllocStringByteLen(
(const char *)method.Encoder, sizeof(GUID))) != 0)
value->vt = VT_BSTR;
return S_OK;
case NMethodPropID::kInStreams:
{
if (method.NumInStreams != 1)
{
value->vt = VT_UI4;
value->ulVal = method.NumInStreams;
}
return S_OK;
}
}
return S_OK;
}

View File

@@ -3,7 +3,10 @@
#include "StdAfx.h"
#include "IA64.h"
#include "../../../../C/Compress/Branch/BranchIA64.c"
extern "C"
{
#include "../../../../C/Compress/Branch/BranchIA64.h"
}
UInt32 CBC_IA64_Encoder::SubFilter(Byte *data, UInt32 size)
{

View File

@@ -3,8 +3,10 @@
#include "StdAfx.h"
#include "PPC.h"
#include "Windows/Defs.h"
#include "../../../../C/Compress/Branch/BranchPPC.c"
extern "C"
{
#include "../../../../C/Compress/Branch/BranchPPC.h"
}
UInt32 CBC_PPC_B_Encoder::SubFilter(Byte *data, UInt32 size)
{

View File

@@ -3,8 +3,10 @@
#include "StdAfx.h"
#include "SPARC.h"
#include "Windows/Defs.h"
#include "../../../../C/Compress/Branch/BranchSPARC.c"
extern "C"
{
#include "../../../../C/Compress/Branch/BranchSPARC.h"
}
UInt32 CBC_SPARC_Encoder::SubFilter(Byte *data, UInt32 size)
{

View File

@@ -3,7 +3,8 @@ DEF_FILE = ../Codec.def
CFLAGS = $(CFLAGS) -I ../../../
LIBS = $(LIBS) oleaut32.lib
BRANCH_OBJS = \
COMPRESS_OBJS = \
$O\CodecExports.obj \
$O\DllExports.obj \
BRANCH_OPT_OBJS = \
@@ -15,10 +16,21 @@ BRANCH_OPT_OBJS = \
$O\SPARC.obj \
$O\x86.obj \
$O\x86_2.obj \
$O\BranchRegister.obj \
$O\BCJRegister.obj \
$O\BCJ2Register.obj \
COMMON_OBJS = \
C_OBJS = \
$O\Alloc.obj \
C_BRANCH_OBJS = \
$O\BranchARM.obj \
$O\BranchARMThumb.obj \
$O\BranchIA64.obj \
$O\BranchPPC.obj \
$O\BranchSPARC.obj \
$O\BranchX86.obj \
7ZIP_COMMON_OBJS = \
$O\InBuffer.obj \
$O\OutBuffer.obj \
@@ -26,23 +38,26 @@ COMMON_OBJS = \
OBJS = \
$O\StdAfx.obj \
$(BRANCH_OBJS) \
$(COMPRESS_OBJS) \
$(BRANCH_OPT_OBJS) \
$(COMMON_OBJS) \
$(7ZIP_COMMON_OBJS) \
$O\RangeCoderBit.obj \
$(C_OBJS) \
$(C_BRANCH_OBJS) \
$O\resource.res
!include "../../../Build.mak"
$(BRANCH_OBJS): $(*B).cpp
$(COMPRESS_OBJS): ../$(*B).cpp
$(COMPL)
$(BRANCH_OPT_OBJS): $(*B).cpp
$(COMPL_O2)
$(COMMON_OBJS): ../../../Common/$(*B).cpp
$(COMPL)
$(7ZIP_COMMON_OBJS): ../../Common/$(*B).cpp
$(COMPL)
$O\RangeCoderBit.obj: ../RangeCoder/$(*B).cpp
$(COMPL)
$(C_OBJS): ../../../../C/$(*B).c
$(COMPL_O2)
$(C_BRANCH_OBJS): ../../../../C/Compress/Branch/$(*B).c
$(COMPL_O2)

View File

@@ -3,10 +3,6 @@
#include "StdAfx.h"
#include "x86.h"
#include "Windows/Defs.h"
#include "../../../../C/Compress/Branch/BranchX86.c"
UInt32 CBCJ_x86_Encoder::SubFilter(Byte *data, UInt32 size)
{
return ::x86_Convert(data, size, _bufferPos, &_prevMask, &_prevPos, 1);

View File

@@ -4,7 +4,10 @@
#define __X86_H
#include "BranchCoder.h"
extern "C"
{
#include "../../../../C/Compress/Branch/BranchX86.h"
}
struct CBranch86
{

View File

@@ -3,7 +3,10 @@
#include "StdAfx.h"
#include "x86_2.h"
#include "../../../Common/Alloc.h"
extern "C"
{
#include "../../../../C/Alloc.h"
}
static const int kBufferSize = 1 << 17;