]> granicus.if.org Git - libvpx/commit
Palette experiment: encode color indices based on context
authorhui su <huisu@google.com>
Thu, 19 Mar 2015 22:55:29 +0000 (15:55 -0700)
committerhui su <huisu@google.com>
Thu, 26 Mar 2015 22:48:08 +0000 (15:48 -0700)
commit6ad18db24f23d8eec073a156a18c78f2bb04c4bf
tree66adba159e9b248720f9b7c8e6c5fb45554c6df2
parente18b1044629c86ef5a8ca50c20a4021f2a2236ed
Palette experiment: encode color indices based on context

The basic idea is to use a pixel’s neighboring colors as
context to predict its own color. Up to 4 neighbors are
considered here: left, left-above, above, right-above.
To reduce the number of contexts,  the combination of any
4 (or less) colors are mapped to a reduced number of
patterns. For example, 1111, 2222, 3333, … , can be mapped
to the same pattern: AAAA. SImilarly, 1122, 1133, 2233, …,
can be mapped to the pattern AABB. In this way, the total
number of color contexts is reduced to 16.

This almost doubles the gain of palette coding on screen
content videos.

on screen_content
--enable-palette                                  +14.2%
--enable-palette --enable-tx-skip                 +21.2%

on derflr
--enable-palette                                  +0.12%
with all other experiments                        +6.16%

Change-Id: I560306dae216f2ac11a9214968c2ad2319fa1718
12 files changed:
vp9/common/vp9_blockd.h
vp9/common/vp9_entropymode.c
vp9/common/vp9_entropymode.h
vp9/common/vp9_enums.h
vp9/common/vp9_palette.c
vp9/common/vp9_palette.h
vp9/decoder/vp9_decodemv.c
vp9/encoder/vp9_bitstream.c
vp9/encoder/vp9_encodeframe.c
vp9/encoder/vp9_encoder.h
vp9/encoder/vp9_rd.c
vp9/encoder/vp9_rdopt.c