summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_bitstream.c
diff options
context:
space:
mode:
authorJohn Koleszar <jkoleszar@google.com>2013-04-16 17:45:48 -0700
committerGerrit Code Review <gerrit@gerrit.golo.chromium.org>2013-04-16 17:45:48 -0700
commit6c1a3b42c4ce79c2f3c718345cdccd7d75efe795 (patch)
tree13d84bdd2dc5052fd3a7aa00e6651956e539704e /vp9/encoder/vp9_bitstream.c
parentc0a1b5bc7e76730688b94da7c7a5c29f7b33d8aa (diff)
parent0be8082be1813ad8a68cbe92a04639f6b5ef237a (diff)
downloadlibvpx-6c1a3b42c4ce79c2f3c718345cdccd7d75efe795.tar
libvpx-6c1a3b42c4ce79c2f3c718345cdccd7d75efe795.tar.gz
libvpx-6c1a3b42c4ce79c2f3c718345cdccd7d75efe795.tar.bz2
libvpx-6c1a3b42c4ce79c2f3c718345cdccd7d75efe795.zip
Merge "Adding write_le16 and write_le32 functions." into experimental
Diffstat (limited to 'vp9/encoder/vp9_bitstream.c')
-rw-r--r--vp9/encoder/vp9_bitstream.c65
1 files changed, 24 insertions, 41 deletions
diff --git a/vp9/encoder/vp9_bitstream.c b/vp9/encoder/vp9_bitstream.c
index 406bfd219..62e8ad642 100644
--- a/vp9/encoder/vp9_bitstream.c
+++ b/vp9/encoder/vp9_bitstream.c
@@ -78,6 +78,18 @@ int count_mb_seg[4] = { 0, 0, 0, 0 };
#define SEARCH_NEWP
static int update_bits[255];
+static INLINE void write_le16(uint8_t *p, int value) {
+ p[0] = value;
+ p[1] = value >> 8;
+}
+
+static INLINE void write_le32(uint8_t *p, int value) {
+ p[0] = value;
+ p[1] = value >> 8;
+ p[2] = value >> 16;
+ p[3] = value >> 24;
+}
+
static void compute_update_table() {
int i;
for (i = 0; i < 255; i++)
@@ -508,18 +520,6 @@ static void pack_mb_tokens(vp9_writer* const bc,
*tp = p;
}
-static void write_partition_size(unsigned char *cx_data, int size) {
- signed char csize;
-
- csize = size & 0xff;
- *cx_data = csize;
- csize = (size >> 8) & 0xff;
- *(cx_data + 1) = csize;
- csize = (size >> 16) & 0xff;
- *(cx_data + 2) = csize;
-
-}
-
static void write_mv_ref
(
vp9_writer *bc, MB_PREDICTION_MODE m, const vp9_prob *p
@@ -2353,33 +2353,19 @@ void vp9_pack_bitstream(VP9_COMP *cpi, unsigned char *dest,
extra_bytes_packed = 3;
cx_data += extra_bytes_packed;
}
- {
- int v;
- if (pc->width != pc->display_width || pc->height != pc->display_height) {
- v = pc->display_width;
- cx_data[0] = v;
- cx_data[1] = v >> 8;
-
- v = pc->display_height;
- cx_data[2] = v;
- cx_data[3] = v >> 8;
- cx_data += 4;
- extra_bytes_packed += 4;
- }
-
- v = pc->width;
- cx_data[0] = v;
- cx_data[1] = v >> 8;
-
- v = pc->height;
- cx_data[2] = v;
- cx_data[3] = v >> 8;
-
- extra_bytes_packed += 4;
+ if (pc->width != pc->display_width || pc->height != pc->display_height) {
+ write_le16(cx_data, pc->display_width);
+ write_le16(cx_data + 2, pc->display_height);
cx_data += 4;
+ extra_bytes_packed += 4;
}
+ write_le16(cx_data, pc->width);
+ write_le16(cx_data + 2, pc->height);
+ extra_bytes_packed += 4;
+ cx_data += 4;
+
vp9_start_encode(&header_bc, cx_data);
// TODO(jkoleszar): remove these two unused bits?
@@ -2414,7 +2400,7 @@ void vp9_pack_bitstream(VP9_COMP *cpi, unsigned char *dest,
}
// Write out the chosen coding method.
- vp9_write_bit(&header_bc, (pc->temporal_update) ? 1 : 0);
+ vp9_write_bit(&header_bc, pc->temporal_update);
if (pc->temporal_update) {
for (i = 0; i < PREDICTION_PROBS; i++) {
const int prob = pc->segment_pred_probs[i];
@@ -2952,11 +2938,8 @@ void vp9_pack_bitstream(VP9_COMP *cpi, unsigned char *dest,
write_modes(cpi, &residual_bc, &tok[tile_col], tok_end);
vp9_stop_encode(&residual_bc);
if (tile_col < pc->tile_columns - 1 || tile_row < pc->tile_rows - 1) {
- /* size of this tile */
- data_ptr[total_size + 0] = residual_bc.pos;
- data_ptr[total_size + 1] = residual_bc.pos >> 8;
- data_ptr[total_size + 2] = residual_bc.pos >> 16;
- data_ptr[total_size + 3] = residual_bc.pos >> 24;
+ // size of this tile
+ write_le32(data_ptr + total_size, residual_bc.pos);
total_size += 4;
}