Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introduction to VP8

KuoE0
June 13, 2013

Introduction to VP8

KuoE0

June 13, 2013
Tweet

More Decks by KuoE0

Other Decks in Technology

Transcript

  1. Latest update: Nov 19, 2013, Attribution-ShareAlike 3.0 Unported (CC BY-SA

    3.0) http://creativecommons.org/licenses/by-sa/3.0/
  2. Web Video Format YUV 420 color sampling 8 bit per

    channel depth Up to 16383 × 16383 pixels
  3. Golden Frame Choose an arbitrary frame in the past. Define

    a number of flags to notify decoder when and how to update this buffer.
  4. Golden Frame Choose an arbitrary frame in the past. Define

    a number of flags to notify decoder when and how to update this buffer.
  5. VP8 L G A G G G G G L

    G G G A G L
  6. Intra Prediction Inter Prediction use data within a single video

    frame use data from previously encoded frames
  7. Horizontal Prediction Fills each column of the block with a

    copy of the left column. a b c d e f g h i j k l m n o p q r s t u v w x y A B C D E F G H I J K L M N O P Q R S T U V W X Y
  8. Horizontal Prediction Fills each column of the block with a

    copy of the left column. a b c d e f g h i j k l m n o p q r s t u v w x y A B C D E F G H I J K L M N O P Q R S T U V W X Y e j o t y
  9. Horizontal Prediction Fills each column of the block with a

    copy of the left column. a b c d e f g h i j k l m n o p q r s t u v w x y A B C D E F G H I J K L M N O P Q R S T U V W X Y e j o t y e e e e e j j j j j o o o o o t t t t t y y y y y
  10. Vertical Prediction Fills each row of the block with a

    copy of the above row. a b c d e f g h i j k l m n o p q r s t u v w x y A B C D E F G H I J K L M N O P Q R S T U V W X Y
  11. Vertical Prediction Fills each row of the block with a

    copy of the above row. a b c d e f g h i j k l m n o p q r s t u v w x y A B C D E F G H I J K L M N O P Q R S T U V W X Y U V W X Y
  12. Vertical Prediction Fills each row of the block with a

    copy of the above row. a b c d e f g h i j k l m n o p q r s t u v w x y A B C D E F G H I J K L M N O P Q R S T U V W X Y U V W X Y U V W X Y U V W X Y U V W X Y U V W X Y U V W X Y
  13. DC Prediction Fills the block with a single value using

    the average of the pixels in the above row and the left column. a b c d e f g h i j k l m n o p q r s t u v w x y A B C D E F G H I J K L M N O P Q R S T U V W X Y
  14. DC Prediction Fills the block with a single value using

    the average of the pixels in the above row and the left column. a b c d e f g h i j k l m n o p q r s t u v w x y A B C D E F G H I J K L M N O P Q R S T U V W X Y U V W X Y e j o t y Z = (U + V + W + X + Y + e + j + o + t + y) ÷ 10
  15. DC Prediction Fills the block with a single value using

    the average of the pixels in the above row and the left column. a b c d e f g h i j k l m n o p q r s t u v w x y A B C D E F G H I J K L M N O P Q R S T U V W X Y U V W X Y e j o t y Z = (U + V + W + X + Y + e + j + o + t + y) ÷ 10 Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z
  16. * * * * L0 * * * * L1

    * * * * L2 * * * * L3 * * * * L4 * * * * * * * * * * * * * * * * * * * * A0 A1 A2 A3 A4 TrueMotion Prediction Horizontal differences between pixels in above row and vertical differences between pixels in left column are propagated (starting from C). * * * * * * * * * * * * * * * * * * * * * * * * C
  17. * * * * L0 * * * * L1

    * * * * L2 * * * * L3 * * * * L4 * * * * * * * * * * * * * * * * * * * * A0 A1 A2 A3 A4 A0 A1 A2 A3 A4 L0 L1 L2 L3 L4 TrueMotion Prediction Horizontal differences between pixels in above row and vertical differences between pixels in left column are propagated (starting from C). * * * * * * * * * * * * * * * * * * * * * * * * C C Xij = Ai + Lj - C
  18. * * * * L0 * * * * L1

    * * * * L2 * * * * L3 * * * * L4 * * * * * * * * * * * * * * * * * * * * A0 A1 A2 A3 A4 A0 A1 A2 A3 A4 L0 L1 L2 L3 L4 TrueMotion Prediction Horizontal differences between pixels in above row and vertical differences between pixels in left column are propagated (starting from C). * * * * * * * * * * * * * * * * * * * * * * * * C C Xij = Ai + Lj - C Xij Xij Xij Xij Xij Xij Xij Xij Xij Xij Xij Xij Xij Xij Xij Xij Xij Xij Xij Xij Xij Xij Xij Xij Xij
  19. Sub-pixel Interpolation Quarter pixel accurate motion vectors for luma pixels.

    High performance six-tap interpolation filters. [3, -16, 77, 77, -16, 3]/128 for 1⁄2 pixel positions [2, -11, 108, 36, -8, 1]/128 for 1⁄4 pixel positions [1, -8, 36, 108, -11, 2]/128 for 3⁄4 pixel positions
  20. Divide into Macroblocks One 16×16 block of luma pixels (Y)

    Two 8×8 blocks of chroma pixels (U, V) Typical Method
  21. Coding 2-D DCT Decoding 4×4 variant of LLM implementation Practical

    fast 1-D DCT algorithms with 11 multiplications
  22. I1 I2 I3 I4 O1 O2 O3 O4 Inverse DCT

    Graph in VP8 y0 y1 x0 x1 y0 = √2(x0×sin(π/8)-x1×cos(π/8)) y1 = √2(x0×cos(π/8)+x1×sin(π/8))
  23. Walsh-Hadamard Transform Y = HXHT H = 1 1 1

    1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 [ ] HT is the transpose of H. Take advantage of the correlation to reduce redundancy.
  24. Adaptive Quantization 128 quantization level. Different quantization level in single

    frame. 1st order luma DC 1st order luma AC 2st order luma DC 2st order luma AC 2st order chroma DC 2st order chroma AC
  25. Supports distribution updates on a per-frame basis Boolean arithmetic coder

    Stable probability distributions within one frame Keyframes reset the probability values to the defaults
  26. 100 120 140 160 180 200 220 240 260 280

    300 Night 720p 2000kbps Sheriff 720p 2000kbps Tulip 720p 2000kbps Deocding speed in Frame/second VP8 H.264 High Profile Intel Core i7 3.2GHz
  27. 20 25 30 35 40 45 Night 720p 2000kbps Sheriff

    720p 2000kbps Tulip 720p 2000kbps Deocding speed in Frame/second VP8 H.264 High Profile Intel Atom N270 1.66GHz