// BranchRegister.cpp #include "StdAfx.h" #include "../Common/RegisterCodec.h" #include "BranchMisc.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) CREATE_CODEC(BC_IA64) CREATE_CODEC(BC_ARM) CREATE_CODEC(BC_ARMT) 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, 0x02, 0x05, L"PPC"), METHOD_ITEM(BC_IA64, 0x04, 1, L"IA64"), METHOD_ITEM(BC_ARM, 0x05, 1, L"ARM"), METHOD_ITEM(BC_ARMT, 0x07, 1, L"ARMT"), METHOD_ITEM(BC_SPARC, 0x08, 0x05, L"SPARC") }; REGISTER_CODECS(Branch)
#include "../Common/RegisterCodec.h" #include "BranchMisc.h" #define CREATE_BRA(n) \ REGISTER_FILTER_CREATE(CreateBra_Decoder_ ## n, CBranchCoder(n ## _Convert, false)) \ REGISTER_FILTER_CREATE(CreateBra_Encoder_ ## n, CBranchCoder(n ## _Convert, true)) \ CREATE_BRA(PPC) CREATE_BRA(IA64) CREATE_BRA(ARM) CREATE_BRA(ARMT) CREATE_BRA(SPARC) #define METHOD_ITEM(n, id, name) \ REGISTER_FILTER_ITEM( \ CreateBra_Decoder_ ## n, \ CreateBra_Encoder_ ## n, \ 0x3030000 + id, name) REGISTER_CODECS_VAR { METHOD_ITEM(PPC, 0x205, "PPC"), METHOD_ITEM(IA64, 0x401, "IA64"), METHOD_ITEM(ARM, 0x501, "ARM"), METHOD_ITEM(ARMT, 0x701, "ARMT"), METHOD_ITEM(SPARC, 0x805, "SPARC") }; REGISTER_CODECS(Branch)
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; }
} STDMETHODIMP_(UInt32) CDeltaDecoder::Filter(Byte *data, UInt32 size) { Delta_Decode(_state, _delta, data, size); return size; } STDMETHODIMP CDeltaDecoder::SetDecoderProperties2(const Byte *props, UInt32 size) { if (size != 1) return E_INVALIDARG; _delta = (unsigned)props[0] + 1; return S_OK; } #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(Delta) #define METHOD_ITEM(x, id, name) { CreateCodec ## x, CreateCodec ## x ## Out, id, name, 1, true } static CCodecInfo g_CodecsInfo[] = { METHOD_ITEM(Delta, 3, L"Delta") }; REGISTER_CODECS(Delta)
#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)