static void readinfo_bitstream(char *bitdata, char *buf, int *offset) { char tbuf[64]; int32_t len; /* read section char */ read_bitstream(bitdata, tbuf, offset, 1); /* read length */ read_bitstream(bitdata, tbuf, offset, 2); len = tbuf[0] << 8 | tbuf[1]; read_bitstream(bitdata, buf, offset, len); buf[len] = '\0'; }
/* * read bitdata length */ static int readlength_bitstream(char *bitdata, int *lendata, int *offset) { char tbuf[64]; /* read section char */ read_bitstream(bitdata, tbuf, offset, 1); /* make sure it is section 'e' */ if (tbuf[0] != 'e') { pr_err("error: length section is not 'e', but %c\n", tbuf[0]); return -1; } /* read 4bytes length */ read_bitstream(bitdata, tbuf, offset, 4); *lendata = tbuf[0] << 24 | tbuf[1] << 16 | tbuf[2] << 8 | tbuf[3]; return 0; }
/* * read first 13 bytes to check bitstream magic number */ static int readmagic_bitstream(char *bitdata, int *offset) { char buf[13]; int r; read_bitstream(bitdata, buf, offset, 13); r = memcmp(buf, bits_magic, 13); if (r) { pr_err("error: corrupted header"); return -1; } pr_info("bitstream file magic number Ok\n"); *offset = 13; /* magic length */ return 0; }
/* * Reads a byte from stream */ bool read_byte(struct bitstream *stream, uint8_t *value) { bool error = true; if (stream != NULL && value != NULL) { uint8_t count; uint32_t dest; count = read_bitstream(stream, 8, &dest, false); if (count == 8) { error = false; *value = (uint8_t)dest; } } return error; }