mirror of
https://github.com/tuxbox-neutrino/neutrino.git
synced 2025-08-26 23:13:13 +02:00
our current experimental Neutrino branch
git-svn-id: file:///home/bas/coolstream_public_svn/THIRDPARTY/applications/neutrino-experimental@27 e54a6e83-5905-42d5-8d5c-058d10e6a962
This commit is contained in:
50
lib/libdvbsub/helpers.cpp
Normal file
50
lib/libdvbsub/helpers.cpp
Normal file
@@ -0,0 +1,50 @@
|
||||
#include <inttypes.h>
|
||||
|
||||
#include "helpers.hpp"
|
||||
|
||||
/* Max 24 bit */
|
||||
uint32_t getbits(const uint8_t* buf, uint32_t offset, uint8_t len)
|
||||
{
|
||||
const uint8_t* a = buf + (offset / 8);
|
||||
uint32_t retval = 0;
|
||||
uint32_t mask = 1;
|
||||
|
||||
retval = ((*(a)<<8) | *(a+1));
|
||||
mask <<= len;
|
||||
|
||||
if (len > 8) {
|
||||
retval <<= 8;
|
||||
retval |= *(a+2);
|
||||
len -= 8;
|
||||
}
|
||||
if (len > 8) {
|
||||
retval <<= 8;
|
||||
retval |= *(a+3);
|
||||
len -= 8;
|
||||
}
|
||||
if (len > 8) {
|
||||
unsigned long long tmp = retval << 8;
|
||||
tmp |= *(a+4);
|
||||
tmp >>= ((8-(offset%8)) + (8-(len)));
|
||||
return tmp & (mask -1);
|
||||
}
|
||||
|
||||
retval >>= ((8-(offset%8)) + (8-len));
|
||||
return retval & (mask -1);
|
||||
}
|
||||
|
||||
#if 0
|
||||
void hexdump(uint8_t* buf)
|
||||
{
|
||||
int i;
|
||||
for (i = 0 ; i < 16 ; i++) {
|
||||
debug.print(Debug::DEBUG, "%02x ", buf[i]);
|
||||
}
|
||||
debug.print(Debug::DEBUG, "\n");
|
||||
for (i = 16 ; i < 32 ; i++) {
|
||||
debug.print(Debug::DEBUG, "%02x ", buf[i]);
|
||||
}
|
||||
debug.print(Debug::DEBUG, "\n");
|
||||
}
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user