diff options
author | hkuang <hkuang@google.com> | 2014-05-15 10:51:55 -0700 |
---|---|---|
committer | hkuang <hkuang@google.com> | 2014-05-20 14:47:45 -0700 |
commit | 20c1edf6124fde58b9f755e39129289918a5fd1a (patch) | |
tree | c8144335c1b40e2f50165d0daf700f0dda0563f5 /vp9/decoder/vp9_decoder.h | |
parent | 7af34402687ecfb95e52573ebac2af9e1c7cadc5 (diff) | |
download | libvpx-20c1edf6124fde58b9f755e39129289918a5fd1a.tar libvpx-20c1edf6124fde58b9f755e39129289918a5fd1a.tar.gz libvpx-20c1edf6124fde58b9f755e39129289918a5fd1a.tar.bz2 libvpx-20c1edf6124fde58b9f755e39129289918a5fd1a.zip |
Refactor decode_tiles and loopfilter code.
The current decode_tiles decodes the frame one tile by one tile
and then loopfilter the whole frame or use another worker thread to
do loopfiltering.
|------|------|------|------|
|Tile1-|Tile2-|Tile3-|Tile4-|
|------|------|------|------|
For example, if a tile video has one row and four cols, decode_tiles
will decode the Tile1, then Tile2, then Tile3, then Tile4.
And during decode each tile, decode_tile will decode row by row in
each tile.
For frame parallel decoding, decode_tiles will decode video in row order
across the tiles. So the order will be:
"Decode 1st row of Tile1" -> "Decode 1st row of Tile2"
-> "Decode 1st row of Tile3" -> "Decode 1st row of Tile4"
-> "Decode 2nd row of Tile1" -> "Decode 2nd row of Tile2"
-> "Decode 2nd row of Tile3" -> "Decode 2nd row of Tile4"-> "loopfilter 1st row"
Change-Id: I2211f9adc6d142fbf411d491031203cb8a6dbf6b
Diffstat (limited to 'vp9/decoder/vp9_decoder.h')
-rw-r--r-- | vp9/decoder/vp9_decoder.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/vp9/decoder/vp9_decoder.h b/vp9/decoder/vp9_decoder.h index d6cb5071d..36fb7ea94 100644 --- a/vp9/decoder/vp9_decoder.h +++ b/vp9/decoder/vp9_decoder.h @@ -27,6 +27,13 @@ extern "C" { #endif +// TODO(hkuang): combine this with TileWorkerData. +typedef struct TileData { + VP9_COMMON *cm; + vp9_reader bit_reader; + DECLARE_ALIGNED(16, MACROBLOCKD, xd); +} TileData; + typedef struct VP9Decoder { DECLARE_ALIGNED(16, MACROBLOCKD, mb); @@ -40,10 +47,12 @@ typedef struct VP9Decoder { int decoded_key_frame; VP9Worker lf_worker; - VP9Worker *tile_workers; int num_tile_workers; + TileData *tile_data; + int total_tiles; + VP9LfSync lf_row_sync; vpx_decrypt_cb decrypt_cb; |