summaryrefslogtreecommitdiff
path: root/vp9/decoder/vp9_decodeframe.c
diff options
context:
space:
mode:
authorDmitry Kovalev <dkovalev@google.com>2014-03-20 15:01:37 -0700
committerDmitry Kovalev <dkovalev@google.com>2014-03-20 15:01:37 -0700
commit88a10abe7c1a6835c0b3f5be561d083d56615170 (patch)
tree6ddc7cea1df058108379767a586ef56072256c5c /vp9/decoder/vp9_decodeframe.c
parent03781ff22da8e32fe67ce124ba07c3173f2d1fc0 (diff)
downloadlibvpx-88a10abe7c1a6835c0b3f5be561d083d56615170.tar
libvpx-88a10abe7c1a6835c0b3f5be561d083d56615170.tar.gz
libvpx-88a10abe7c1a6835c0b3f5be561d083d56615170.tar.bz2
libvpx-88a10abe7c1a6835c0b3f5be561d083d56615170.zip
Removing source & source_sz from VP9Decompressor struct.
Change-Id: If4c1a48c60e8b27dd021a83170289ccc5467c6de
Diffstat (limited to 'vp9/decoder/vp9_decodeframe.c')
-rw-r--r--vp9/decoder/vp9_decodeframe.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/vp9/decoder/vp9_decodeframe.c b/vp9/decoder/vp9_decodeframe.c
index 69266575b..54ae568c3 100644
--- a/vp9/decoder/vp9_decodeframe.c
+++ b/vp9/decoder/vp9_decodeframe.c
@@ -830,7 +830,9 @@ typedef struct TileBuffer {
int col; // only used with multi-threaded decoding
} TileBuffer;
-static const uint8_t *decode_tiles(VP9D_COMP *pbi, const uint8_t *data) {
+static const uint8_t *decode_tiles(VP9D_COMP *pbi,
+ const uint8_t *data,
+ const uint8_t *data_end) {
VP9_COMMON *const cm = &pbi->common;
MACROBLOCKD *const xd = &pbi->mb;
const int aligned_cols = mi_cols_aligned_to_sb(cm->mi_cols);
@@ -838,7 +840,6 @@ static const uint8_t *decode_tiles(VP9D_COMP *pbi, const uint8_t *data) {
const int tile_rows = 1 << cm->log2_tile_rows;
TileBuffer tile_buffers[4][1 << 6];
int tile_row, tile_col;
- const uint8_t *const data_end = pbi->source + pbi->source_sz;
const uint8_t *end = NULL;
vp9_reader r;
@@ -931,10 +932,11 @@ static int compare_tile_buffers(const void *a, const void *b) {
}
}
-static const uint8_t *decode_tiles_mt(VP9D_COMP *pbi, const uint8_t *data) {
+static const uint8_t *decode_tiles_mt(VP9D_COMP *pbi,
+ const uint8_t *data,
+ const uint8_t *data_end) {
VP9_COMMON *const cm = &pbi->common;
const uint8_t *bit_reader_end = NULL;
- const uint8_t *const data_end = pbi->source + pbi->source_sz;
const int aligned_mi_cols = mi_cols_aligned_to_sb(cm->mi_cols);
const int tile_cols = 1 << cm->log2_tile_cols;
const int tile_rows = 1 << cm->log2_tile_rows;
@@ -1314,14 +1316,13 @@ static void debug_check_frame_counts(const VP9_COMMON *const cm) {
}
#endif // NDEBUG
-int vp9_decode_frame(VP9D_COMP *pbi, const uint8_t **p_data_end) {
+int vp9_decode_frame(VP9D_COMP *pbi,
+ const uint8_t *data, const uint8_t *data_end,
+ const uint8_t **p_data_end) {
int i;
VP9_COMMON *const cm = &pbi->common;
MACROBLOCKD *const xd = &pbi->mb;
- const uint8_t *data = pbi->source;
- const uint8_t *const data_end = pbi->source + pbi->source_sz;
-
struct vp9_read_bit_buffer rb = { data, data_end, 0, cm, error_handler };
const size_t first_partition_size = read_uncompressed_header(pbi, &rb);
const int keyframe = cm->frame_type == KEY_FRAME;
@@ -1378,9 +1379,9 @@ int vp9_decode_frame(VP9D_COMP *pbi, const uint8_t **p_data_end) {
// single-frame tile decoding.
if (pbi->oxcf.max_threads > 1 && tile_rows == 1 && tile_cols > 1 &&
cm->frame_parallel_decoding_mode) {
- *p_data_end = decode_tiles_mt(pbi, data + first_partition_size);
+ *p_data_end = decode_tiles_mt(pbi, data + first_partition_size, data_end);
} else {
- *p_data_end = decode_tiles(pbi, data + first_partition_size);
+ *p_data_end = decode_tiles(pbi, data + first_partition_size, data_end);
}
new_fb->corrupted |= xd->corrupted;