ref: 6c1a3b42c4ce79c2f3c718345cdccd7d75efe795
parent: c0a1b5bc7e76730688b94da7c7a5c29f7b33d8aa
parent: 0be8082be1813ad8a68cbe92a04639f6b5ef237a
author: John Koleszar <jkoleszar@google.com>
date: Tue Apr 16 13:45:48 EDT 2013
Merge "Adding write_le16 and write_le32 functions." into experimental
--- a/vp9/encoder/vp9_bitstream.c
+++ b/vp9/encoder/vp9_bitstream.c
@@ -78,6 +78,18 @@
#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 @@
*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 @@
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 @@
}
// 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 @@
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;
}