summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMonty <xiphmont@xiph.org>2003-10-08 02:53:40 +0000
committerMonty <xiphmont@xiph.org>2003-10-08 02:53:40 +0000
commit2989c534595febecb5133d25b0a27094f0d8a82b (patch)
tree985ae4097ae66b17f07de36d616f514ee36e8ae6 /src
parentb6110ba3eee27288154a13e7e4424a0d8752137e (diff)
downloadogg-2989c534595febecb5133d25b0a27094f0d8a82b.tar.gz
Fix for bug 458
git-svn-id: http://svn.xiph.org/trunk/ogg@5409 0101bb08-14d6-0310-b084-bc0e0c8e3800
Diffstat (limited to 'src')
-rw-r--r--src/bitwise.c17
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){