X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fbitio.c;h=417e7b55ee11c7b0b202109e0235359b99580d8f;hb=5476293b41224aa36313ba57db5b4b6ae2db31ef;hp=871fb804db86bdef8c21db1453e6e0bc25ebbf1b;hpb=fc554a43712b76d16b41ec77dd311b4a78b1ef6b;p=swftools.git diff --git a/src/bitio.c b/src/bitio.c index 871fb80..417e7b5 100644 --- a/src/bitio.c +++ b/src/bitio.c @@ -106,7 +106,7 @@ s32 getsbits(int num) return x; } -u16 readu8() +u8 readu8() { u8 a; input1(&a); @@ -116,13 +116,21 @@ u16 readu8() u16 readu16() { u8 a,b; - // I'm not using input2(&a) here because our input is - // little endian. input1(&a); input1(&b); return ((u16)b)*256+a; } +u32 readu32() +{ + u8 a,b,c,d; + input1(&a); + input1(&b); + input1(&c); + input1(&d); + return (((((u32)d)*256+(u32)c)*256+(u32)b)*256+(u32)a); +} + void writer_init(struct writer_t*w, u8*data, int maxlength) { w->data = data; @@ -150,6 +158,12 @@ void writer_writeu16(struct writer_t*w, u16 value) writer_write(w, &value, 2); } +void writer_writeu32(struct writer_t*w, u32 value) +{ + writer_resetbits(w); + writer_write(w, &value, 4); +} + void* writer_getpos(struct writer_t*w) { return &w->data[w->pos];