diff options
author | Monty <xiphmont@xiph.org> | 2003-10-08 02:53:40 +0000 |
---|---|---|
committer | Monty <xiphmont@xiph.org> | 2003-10-08 02:53:40 +0000 |
commit | aa3f218ee4785ce53e6eb090ebe17a57218236a1 (patch) | |
tree | 985ae4097ae66b17f07de36d616f514ee36e8ae6 /src | |
parent | 731ac7a30f534474de2a5af5fd8cc964104b1a5a (diff) | |
download | ogg-git-aa3f218ee4785ce53e6eb090ebe17a57218236a1.tar.gz |
Fix for bug 458
svn path=/trunk/ogg/; revision=5409
Diffstat (limited to 'src')
-rw-r--r-- | src/bitwise.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/bitwise.c b/src/bitwise.c index 2a7fbe8..dcb26af 100644 --- a/src/bitwise.c +++ b/src/bitwise.c @@ -11,7 +11,7 @@ ******************************************************************** function: packing variable sized words into an octet stream - last mod: $Id: bitwise.c,v 1.15 2003/09/29 14:21:24 giles Exp $ + last mod: $Id: bitwise.c,v 1.16 2003/10/08 02:53:40 xiphmont Exp $ ********************************************************************/ @@ -150,7 +150,8 @@ static void oggpack_writecopy_helper(oggpack_buffer *b, long bits, void (*w)(oggpack_buffer *, unsigned long, - int)){ + int), + int msb){ unsigned char *ptr=(unsigned char *)source; long bytes=bits/8; @@ -175,16 +176,20 @@ static void oggpack_writecopy_helper(oggpack_buffer *b, *b->ptr=0; } - if(bits) - w(b,(unsigned long)(ptr[bytes]),bits); + if(bits){ + if(msb) + w(b,(unsigned long)(ptr[bytes]>>(8-bits)),bits); + else + w(b,(unsigned long)(ptr[bytes]),bits); + } } void oggpack_writecopy(oggpack_buffer *b,void *source,long bits){ - oggpack_writecopy_helper(b,source,bits,oggpack_write); + oggpack_writecopy_helper(b,source,bits,oggpack_write,0); } void oggpackB_writecopy(oggpack_buffer *b,void *source,long bits){ - oggpack_writecopy_helper(b,source,bits,oggpackB_write); + oggpack_writecopy_helper(b,source,bits,oggpackB_write,1); } void oggpack_reset(oggpack_buffer *b){ |