diff options
author | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
---|---|---|
committer | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
commit | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Plugins/Input/in_flv/FLVUtil.h | |
parent | 537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff) | |
download | winamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz |
Initial community commit
Diffstat (limited to 'Src/Plugins/Input/in_flv/FLVUtil.h')
-rw-r--r-- | Src/Plugins/Input/in_flv/FLVUtil.h | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/Src/Plugins/Input/in_flv/FLVUtil.h b/Src/Plugins/Input/in_flv/FLVUtil.h new file mode 100644 index 00000000..9b9da776 --- /dev/null +++ b/Src/Plugins/Input/in_flv/FLVUtil.h @@ -0,0 +1,90 @@ +#ifndef NULLSOFT_FLVUTIL_H +#define NULLSOFT_FLVUTIL_H + +#include <memory.h> +#include <bfc/platform/types.h> +namespace FLV +{ + // reads 32 bits from data and converts from big endian +inline uint32_t Read32(uint8_t *data) +{ + uint32_t returnVal; +#ifdef __BIG_ENDIAN__ + returnVal = *(uint32_t *)(&data[0]); +#else + // need to swap endianness + uint8_t *swap = (uint8_t *)&returnVal; + swap[0]=data[3]; + swap[1]=data[2]; + swap[2]=data[1]; + swap[3]=data[0]; +#endif + return returnVal; + +} +// reads 24 bits from data, converts from big endian, and returns as a 32bit int +inline uint32_t Read24(uint8_t *data) +{ + uint32_t returnVal=0; + uint8_t *swap = (uint8_t *)&returnVal; +#ifdef __BIG_ENDIAN__ + swap[1]=data[0]; + swap[2]=data[1]; + swap[3]=data[2]; + returnVal = *(uint32_t *)(&data[0]); +#else + // need to swap endianness + swap[0]=data[2]; + swap[1]=data[1]; + swap[2]=data[0]; +#endif + return returnVal; + +} + +// reads 16 bits from data and converts from big endian +inline uint16_t Read16(uint8_t *data) +{ + uint16_t returnVal; +#ifdef __BIG_ENDIAN__ + returnVal = *(uint16_t *)(&data[0]); +#else + // need to swap endianness + uint8_t *swap = (uint8_t *)&returnVal; + swap[0]=data[1]; + swap[1]=data[0]; +#endif + return returnVal; +} + +// reads 16 bits from data and converts from big endian +inline uint8_t Read8(uint8_t *data) +{ + uint8_t returnVal; + + returnVal = *(uint8_t *)(&data[0]); + return returnVal; +} + +// reads a double from data +inline double ReadDouble(uint8_t *data) +{ + double returnVal; +#ifdef __BIG_ENDIAN__ + memcpy(&returnVal, data, 8); + #else + uint8_t *swap = (uint8_t *)&returnVal; + swap[0]=data[7]; + swap[1]=data[6]; + swap[2]=data[5]; + swap[3]=data[4]; + swap[4]=data[3]; + swap[5]=data[2]; + swap[6]=data[1]; + swap[7]=data[0]; + #endif + return returnVal; +} + +} +#endif
\ No newline at end of file |