|
SASC
DVBSoftCAM
|
#include <byteswap.h>Go to the source code of this file.
Defines | |
| #define | UINT32_BE(a) bswap_32(get_misalign((unsigned int *)(a))) |
| #define | UINT16_BE(a) bswap_16(get_misalign((unsigned short *)(a))) |
| #define | UINT8_BE(a) *((unsigned char *)a) |
| #define | BYTE4_BE(a, b) put_misalign(bswap_32(b),(unsigned int *)(a)) |
| #define | BYTE2_BE(a, b) put_misalign(bswap_16(b),(unsigned short *)(a)) |
| #define | BYTE1_BE(a, b) *(unsigned char *)(a)=(b) |
| #define | UINT32_LE(a) get_misalign((unsigned int *)(a)) |
| #define | UINT16_LE(a) get_misalign((unsigned short *)(a)) |
| #define | UINT8_LE(a) *((unsigned char *)a) |
| #define | BYTE4_LE(a, b) put_misalign(b,(unsigned int *)(a)) |
| #define | BYTE2_LE(a, b) put_misalign(b,(unsigned short *)(a)) |
| #define | BYTE1_LE(a, b) *(unsigned char *)(a)=(b) |
| #define | __ror16_const(x, xx) ((((x)&0xFFFF)>>(xx)) | ((x)<<(16-(xx)))) |
| #define | __rol16_const(x, xx) (((x)<<(xx)) | (((x)&0xFFFF)>>(16-(xx)))) |
| #define | __sn8_const(b) ((((b)>>4)&0xf) + (((b)&0xf)<<4)) |
| #define | ror16(x, xx) __ror16_const(x,xx) |
| #define | rol16(x, xx) __rol16_const(x,xx) |
| #define | sn8(b) __sn8_const(b) |
| #define | xxor(d, l, v1, v2) __xxor(d,l,v1,v2) |
Functions | |
| template<class T > | |
| T | get_misalign (T *p) |
| template<class T > | |
| void | put_misalign (unsigned int v, T *p) |
| static void | __xxor (unsigned char *data, int len, const unsigned char *v1, const unsigned char *v2) |
| #define __rol16_const | ( | x, | |
| xx | |||
| ) | (((x)<<(xx)) | (((x)&0xFFFF)>>(16-(xx)))) |
| #define __ror16_const | ( | x, | |
| xx | |||
| ) | ((((x)&0xFFFF)>>(xx)) | ((x)<<(16-(xx)))) |
| #define UINT16_BE | ( | a | ) | bswap_16(get_misalign((unsigned short *)(a))) |
| #define UINT32_BE | ( | a | ) | bswap_32(get_misalign((unsigned int *)(a))) |
| static void __xxor | ( | unsigned char * | data, |
| int | len, | ||
| const unsigned char * | v1, | ||
| const unsigned char * | v2 | ||
| ) | [inline, static] |
Definition at line 77 of file helper.h.
{
switch(len) { // looks ugly, but the compiler can optimize it very well ;)
case 16:
*((unsigned int *)data+3) = *((unsigned int *)v1+3) ^ *((unsigned int *)v2+3);
*((unsigned int *)data+2) = *((unsigned int *)v1+2) ^ *((unsigned int *)v2+2);
case 8:
*((unsigned int *)data+1) = *((unsigned int *)v1+1) ^ *((unsigned int *)v2+1);
case 4:
*((unsigned int *)data+0) = *((unsigned int *)v1+0) ^ *((unsigned int *)v2+0);
break;
default:
while(len--) *data++ = *v1++ ^ *v2++;
break;
}
}
| T get_misalign | ( | T * | p | ) | [inline] |
Definition at line 29 of file helper.h.
References __attribute__.
{ struct s { T v; } __attribute__((packed)); return ((s *)p)->v; }
| void put_misalign | ( | unsigned int | v, |
| T * | p | ||
| ) | [inline] |
Definition at line 32 of file helper.h.
References __attribute__.
{ struct s { T v; } __attribute__((packed)); ((s *)p)->v = v; }