summaryrefslogtreecommitdiff
path: root/vp8/encoder/bitstream.c
diff options
context:
space:
mode:
authorJohn Koleszar <jkoleszar@google.com>2011-02-17 12:34:16 -0800
committerCode Review <code-review@webmproject.org>2011-02-17 12:34:16 -0800
commitb2ae57f1b6cbbf018d356528bd8e816752dbbfb7 (patch)
tree8b14fb22f4e3e7b49dea9ad096a028c07a266461 /vp8/encoder/bitstream.c
parentac10665ad89290be900d59c2e294fc4771764b63 (diff)
parent562f1470ceed6c7d122e61dc5ca63300ab312830 (diff)
downloadlibvpx-b2ae57f1b6cbbf018d356528bd8e816752dbbfb7.tar
libvpx-b2ae57f1b6cbbf018d356528bd8e816752dbbfb7.tar.gz
libvpx-b2ae57f1b6cbbf018d356528bd8e816752dbbfb7.tar.bz2
libvpx-b2ae57f1b6cbbf018d356528bd8e816752dbbfb7.zip
Merge "Use endian-neutral bitstream packing/unpacking"
Diffstat (limited to 'vp8/encoder/bitstream.c')
-rw-r--r--vp8/encoder/bitstream.c30
1 files changed, 12 insertions, 18 deletions
diff --git a/vp8/encoder/bitstream.c b/vp8/encoder/bitstream.c
index 2c7f7881d..28477f41d 100644
--- a/vp8/encoder/bitstream.c
+++ b/vp8/encoder/bitstream.c
@@ -58,16 +58,6 @@ extern unsigned int active_section;
int count_mb_seg[4] = { 0, 0, 0, 0 };
#endif
-#if CONFIG_BIG_ENDIAN
-# define make_endian_16(a) \
- (((unsigned int)(a & 0xff)) << 8) | (((unsigned int)(a & 0xff00)) >> 8)
-# define make_endian_32(a) \
- (((unsigned int)(a & 0xff)) << 24) | (((unsigned int)(a & 0xff00)) << 8) | \
- (((unsigned int)(a & 0xff0000)) >> 8) | (((unsigned int)(a & 0xff000000)) >> 24)
-#else
-# define make_endian_16(a) a
-# define make_endian_32(a) a
-#endif
static void update_mode(
vp8_writer *const w,
@@ -1392,13 +1382,20 @@ void vp8_pack_bitstream(VP8_COMP *cpi, unsigned char *dest, unsigned long *size)
// every keyframe send startcode, width, height, scale factor, clamp and color type
if (oh.type == KEY_FRAME)
{
+ int v;
+
// Start / synch code
cx_data[0] = 0x9D;
cx_data[1] = 0x01;
cx_data[2] = 0x2a;
- *((unsigned short *)(cx_data + 3)) = make_endian_16((pc->horiz_scale << 14) | pc->Width);
- *((unsigned short *)(cx_data + 5)) = make_endian_16((pc->vert_scale << 14) | pc->Height);
+ v = (pc->horiz_scale << 14) | pc->Width;
+ cx_data[3] = v;
+ cx_data[4] = v >> 8;
+
+ v = (pc->vert_scale << 14) | pc->Height;
+ cx_data[5] = v;
+ cx_data[6] = v >> 8;
extra_bytes_packed = 7;
cx_data += extra_bytes_packed ;
@@ -1666,19 +1663,16 @@ void vp8_pack_bitstream(VP8_COMP *cpi, unsigned char *dest, unsigned long *size)
*size = cpi->bc2.pos + cpi->bc.pos + VP8_HEADER_SIZE + extra_bytes_packed;
}
-#if CONFIG_BIG_ENDIAN
{
int v = (oh.first_partition_length_in_bytes << 5) |
(oh.show_frame << 4) |
(oh.version << 1) |
oh.type;
- v = make_endian_32(v);
- vpx_memcpy(dest, &v, 3);
+ dest[0] = v;
+ dest[1] = v >> 8;
+ dest[2] = v >> 16;
}
-#else
- vpx_memcpy(dest, &oh, 3);
-#endif
}
#ifdef ENTROPY_STATS