Alien-FreeImage
view release on metacpan or search on metacpan
src/Source/LibJXR/image/sys/strcodec.h view on Meta::CPAN
#define X86OPT_INLINE
#endif
#endif // ENABLE_OPTIMIZATIONS
//================================================================
//#ifdef WIN32
#if defined(WIN32) && !defined(UNDER_CE) // WIN32 seems to be defined always in VS2005 for ARM platform
#define PLATFORM_X86
#include "../x86/x86.h"
#endif
#ifndef UNREFERENCED_PARAMETER
#define UNREFERENCED_PARAMETER(P) { (P) = (P); }
#endif // UNREFERENCED_PARAMETER
#ifdef UNDER_CE
#define PLATFORM_WCE
#include "arm.h"
#endif
#ifdef __ANSI__
#define PLATFORM_ANSI
#include "ansi.h"
#endif
//================================================================
#ifdef PLATFORM_ANSI
typedef unsigned long long U64;
#else // PLATFORM_ANSI
typedef unsigned __int64 U64;
#endif // PLATFORM_ANSI
//================================================================
#define MARKERCOUNT (PACKETLENGTH * 2)
// The following macros depend on UINTPTR_T and INTPTR_T being properly defined
// so that they are equal to pointer width. Confirm and fail if our assumptions are wrong.
CT_ASSERT(sizeof(UINTPTR_T) == sizeof(void*), strcodec1);
CT_ASSERT(sizeof(INTPTR_T) == sizeof(void*), strcodec2);
// wrap around pointer, s=pow(2,n), p wraps aligned to s
#define WRAPPTR(p, s) ((void*)((UINTPTR_T)(p) & ~(UINTPTR_T)(s)))
// mask certain bit inside a pointer, simulate wrap around
#define MASKPTR(p, m) ((void*)((UINTPTR_T)(p) & (INTPTR_T)(m)))
// test for more than 1 packet data
#define PACKET1(ps, pc, s) (((INTPTR_T)(ps) ^ (INTPTR_T)(pc)) & ((UINTPTR_T)(s)))
// alternate pointer p between 2 values aligned to s, s=pow(2,n)
//#define ALTPTR(p, s) ((void*)((uintptr_t)(p) ^ (s)))
// align point, s=pow(2,n), p aligns to s
#define ALIGNUP(p, s) ((void*)(((UINTPTR_T)(p) + ((UINTPTR_T)(s) - 1)) & ~((UINTPTR_T)(s) - 1)))
#define ALIGNDOWN(p, s) ((void*)((UINTPTR_T)(p) & ~((UINTPTR_T)(s) - 1)))
//================================================================
// timer support
//================================================================
#define TraceResult(a)
//================================================================
typedef enum tagPacketType
{
PK_NULL = 0,
PK_DC = 1, PK_AD, PK_AC, PK_CP,
PK_MAX,
} PACKETTYPE;
typedef struct tagIOContext
{
U8 P0[PACKETLENGTH]; // packet circular buffer 0
U8 P1[PACKETLENGTH]; // packet circular buffer 1
union
{
U8 P2[PACKETLENGTH];
struct
{
U32 uiShadow; // shadow of P0[0]-P0[3]
U32 uiAccumulator; // 32bit acc as bit field cache
U32 cBitsUsed; // # of bits used of acc, [0,16)
U8* pbPacket; // packet pointer
U8* pbCurrent; // current pointer
struct WMPStream* pWS; // pointer to WMPStream
long offPacket; // byte offset into stream
//ULARGE_INTEGER u64Acc;
//========================================
// index packet, used for packet retrieval
//========================================
U32 cIndex; // current index for index packet
long offIndex; // byte offset into stream for index packet
}State;
}P2Info;
U8 P3[PACKETLENGTH]; // index packet buffer
} IOContext;
typedef struct tagMemReadState
{
U8* pbBuf;
size_t cbBuf;
size_t cbCur;
} MemReadState;
typedef struct tagBitIOInfo
{
U32 uiShadow; // shadow of first 4B of circular buffer
U32 uiAccumulator; // 32bit acc as bit field cache
U32 cBitsUsed; // # of bits used of acc, [0,16)
#ifdef ARMOPT_BITIO
U32 cBitsUnused; // # of bits remain unused in acc, [0,32]
( run in 0.761 second using v1.01-cache-2.11-cpan-02777c243ea )