summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Kovalev <dkovalev@google.com>2014-03-28 13:32:37 -0700
committerGerrit Code Review <gerrit@gerrit.golo.chromium.org>2014-03-28 13:32:37 -0700
commit9e46dcd2fc7f15a1ddeacb1e6d38d5b76ed273af (patch)
tree1e9004c8b9706409ca40a21b82a4a42894a078c7
parent0a6d5547e28ec0e9f92dfdb231704f169b942b2f (diff)
parent03349d2ba227098cf2906026f0923556695807dd (diff)
downloadlibvpx-9e46dcd2fc7f15a1ddeacb1e6d38d5b76ed273af.tar
libvpx-9e46dcd2fc7f15a1ddeacb1e6d38d5b76ed273af.tar.gz
libvpx-9e46dcd2fc7f15a1ddeacb1e6d38d5b76ed273af.tar.bz2
libvpx-9e46dcd2fc7f15a1ddeacb1e6d38d5b76ed273af.zip
Merge "Moving dqcoeff array to MACROBLOCKD in decoder."
-rw-r--r--vp9/common/vp9_blockd.h8
-rw-r--r--vp9/decoder/vp9_decodeframe.c19
-rw-r--r--vp9/decoder/vp9_decoder.c11
-rw-r--r--vp9/decoder/vp9_decoder.h2
-rw-r--r--vp9/decoder/vp9_dthread.h1
5 files changed, 12 insertions, 29 deletions
diff --git a/vp9/common/vp9_blockd.h b/vp9/common/vp9_blockd.h
index b3f2ec594..556be6aba 100644
--- a/vp9/common/vp9_blockd.h
+++ b/vp9/common/vp9_blockd.h
@@ -235,7 +235,8 @@ typedef struct macroblockd {
int corrupted;
- /* Y,U,V,(A) */
+ DECLARE_ALIGNED(16, int16_t, dqcoeff[MAX_MB_PLANE][64 * 64]);
+
ENTROPY_CONTEXT *above_context[MAX_MB_PLANE];
ENTROPY_CONTEXT left_context[MAX_MB_PLANE][16];
@@ -243,7 +244,12 @@ typedef struct macroblockd {
PARTITION_CONTEXT left_seg_context[8];
} MACROBLOCKD;
+static INLINE void init_macroblockd(MACROBLOCKD *xd) {
+ int i;
+ for (i = 0; i < MAX_MB_PLANE; ++i)
+ xd->plane[i].dqcoeff = xd->dqcoeff[i];
+}
static INLINE BLOCK_SIZE get_subsize(BLOCK_SIZE bsize,
PARTITION_TYPE partition) {
diff --git a/vp9/decoder/vp9_decodeframe.c b/vp9/decoder/vp9_decodeframe.c
index a2bd6541f..2f15bfb52 100644
--- a/vp9/decoder/vp9_decodeframe.c
+++ b/vp9/decoder/vp9_decodeframe.c
@@ -853,17 +853,6 @@ static const uint8_t *decode_tiles(VP9D_COMP *pbi,
return end;
}
-static void setup_tile_macroblockd(TileWorkerData *const tile_data) {
- MACROBLOCKD *xd = &tile_data->xd;
- struct macroblockd_plane *const pd = xd->plane;
- int i;
-
- for (i = 0; i < MAX_MB_PLANE; ++i) {
- pd[i].dqcoeff = tile_data->dqcoeff[i];
- vpx_memset(xd->plane[i].dqcoeff, 0, 64 * 64 * sizeof(int16_t));
- }
-}
-
static int tile_worker_hook(void *arg1, void *arg2) {
TileWorkerData *const tile_data = (TileWorkerData*)arg1;
const TileInfo *const tile = (TileInfo*)arg2;
@@ -990,8 +979,10 @@ static const uint8_t *decode_tiles_mt(VP9D_COMP *pbi,
setup_token_decoder(buf->data, data_end, buf->size, &cm->error,
&tile_data->bit_reader);
+
setup_tile_context(cm, &tile_data->xd, 0, buf->col);
- setup_tile_macroblockd(tile_data);
+ init_macroblockd(&tile_data->xd);
+ vp9_zero(tile_data->xd.dqcoeff);
worker->had_error = 0;
if (i == num_workers - 1 || n == tile_cols - 1) {
@@ -1281,7 +1272,6 @@ static void debug_check_frame_counts(const VP9_COMMON *const cm) {
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;
@@ -1330,8 +1320,7 @@ int vp9_decode_frame(VP9D_COMP *pbi,
cm->fc = cm->frame_contexts[cm->frame_context_idx];
vp9_zero(cm->counts);
- for (i = 0; i < MAX_MB_PLANE; ++i)
- vpx_memset(xd->plane[i].dqcoeff, 0, 64 * 64 * sizeof(int16_t));
+ vp9_zero(xd->dqcoeff);
xd->corrupted = 0;
new_fb->corrupted = read_compressed_header(pbi, data, first_partition_size);
diff --git a/vp9/decoder/vp9_decoder.c b/vp9/decoder/vp9_decoder.c
index c7c096e69..17b8c98c8 100644
--- a/vp9/decoder/vp9_decoder.c
+++ b/vp9/decoder/vp9_decoder.c
@@ -110,15 +110,6 @@ void vp9_initialize_dec() {
}
}
-static void init_macroblockd(VP9D_COMP *const pbi) {
- MACROBLOCKD *xd = &pbi->mb;
- struct macroblockd_plane *const pd = xd->plane;
- int i;
-
- for (i = 0; i < MAX_MB_PLANE; ++i)
- pd[i].dqcoeff = pbi->dqcoeff[i];
-}
-
VP9D_COMP *vp9_create_decompressor(const VP9D_CONFIG *oxcf) {
VP9D_COMP *const pbi = vpx_memalign(32, sizeof(VP9D_COMP));
VP9_COMMON *const cm = pbi ? &pbi->common : NULL;
@@ -156,7 +147,7 @@ VP9D_COMP *vp9_create_decompressor(const VP9D_CONFIG *oxcf) {
cm->error.setjmp = 0;
pbi->decoded_key_frame = 0;
- init_macroblockd(pbi);
+ init_macroblockd(&pbi->mb);
vp9_worker_init(&pbi->lf_worker);
diff --git a/vp9/decoder/vp9_decoder.h b/vp9/decoder/vp9_decoder.h
index 2b1697047..f220ccd02 100644
--- a/vp9/decoder/vp9_decoder.h
+++ b/vp9/decoder/vp9_decoder.h
@@ -40,8 +40,6 @@ typedef struct VP9Decompressor {
DECLARE_ALIGNED(16, VP9_COMMON, common);
- DECLARE_ALIGNED(16, int16_t, dqcoeff[MAX_MB_PLANE][64 * 64]);
-
VP9D_CONFIG oxcf;
int64_t last_time_stamp;
diff --git a/vp9/decoder/vp9_dthread.h b/vp9/decoder/vp9_dthread.h
index 6d4450fd2..2f65e1e30 100644
--- a/vp9/decoder/vp9_dthread.h
+++ b/vp9/decoder/vp9_dthread.h
@@ -24,7 +24,6 @@ typedef struct TileWorkerData {
struct VP9Common *cm;
vp9_reader bit_reader;
DECLARE_ALIGNED(16, struct macroblockd, xd);
- DECLARE_ALIGNED(16, int16_t, dqcoeff[MAX_MB_PLANE][64 * 64]);
// Row-based parallel loopfilter data
LFWorkerData lfdata;