Introduction to VP8郭至軒 (KuoE0)kuoe0.tw@gmail.com
Latest update: Jun 13, 2013Attribution-ShareAlike 3.0 Unported(CC BY-SA 3.0)http://creativecommons.org/licenses/by-sa/3.0/
Situation
web m
web m
Video CodecVP8
AnOpenSourceCodec
Developed byOn2 Technology
Developed byOn2 TechnologyFebruary, 2010
Acquired byGoogleFebruary, 2010
Patent
web m
March, 2013web m
Royalty-Free TermsMarch, 2013web m
SuccessorVP9
SuccessorVP9May 15, 2013
Feature
focus onInternetweb-basedapplication
Low Bandwidth RequirementImage Quality:watchable (PSNR: ~30dB)visually lossless (PSNR: ~45dB)
Heterogeneous Client Hardware
Heterogeneous Client Hardware
Heterogeneous Client HardwareEfficientImplementations
Web Video FormatYUV 420 color sampling8 bit per channel depthUp to 16383 × 16383 pixels
Processing Flow
CodingPredictTransform + QuantizeEntropy CodeLoop Filter
DecodingEntropy DecodePredictDequantize+Inverse TransformLoop Filter
Reference Frame
GoldenFrameLast FrameAlternateFrameReferenceFrame
GoldenFrameLast FrameAlternateFrameAt most 3 reference frames in VP8.
Last Frame
Last Frame
Last Frame
Last Frame Current Frame
Golden FrameChoose an arbitrary frame in the past.Define a number of flags to notify decoderwhen and how to update this buff...
Golden FrameChoose an arbitrary frame in the past.Define a number of flags to notify decoderwhen and how to update this buff...
set as the golden frame
Golden FrameGolden Frame
Golden FrameGolden Frame
Golden FrameGolden Frame
Golden FrameGolden Frame
Golden FrameGolden Frame
Golden FrameGolden Frame
Golden FrameGolden Frame
Golden FrameGolden Frame
Golden FrameGolden Frame
Reconstructmoving objectbackground
Alternate FrameOtherFrameAlternateFrame
Alternate FrameOtherFrameAlternateFramedecodeshow
Alternate FrameOtherFrameAlternateFramedecodeshowdecode show
Alternate FrameOtherFrameAlternateFramedecodeshowdecode showstore beneficial information
Construct from multi-frame
Construct from multi-frame
Construct from multi-frame
Construct from multi-frameAlternateFrame
Typical FrameI B B P B B P B B I B B P
VP8L GAG G G G G L G G GAG L
Prediction
Intra PredictionInter Predictionuse data within a single video frameuse data from previously encoded frames
Intra PredictionLumaLumaChroma
Intra PredictionLumaLumaChroma16 4 8
H_PRED (horizontal prediction)V_PRED (vertical prediction)DC_PRED (DC prediction)TM_PRED (TrueMotion prediction)Four Predi...
Horizontal PredictionFills each column of the block witha copy of the left column.a b c d ef g h i jk l m n op q r s tu v ...
Horizontal PredictionFills each column of the block witha copy of the left column.a b c d ef g h i jk l m n op q r s tu v ...
Horizontal PredictionFills each column of the block witha copy of the left column.a b c d ef g h i jk l m n op q r s tu v ...
Vertical PredictionFills each row of the block with acopy of the above row.a b c d ef g h i jk l m n op q r s tu v w x yA ...
Vertical PredictionFills each row of the block with acopy of the above row.a b c d ef g h i jk l m n op q r s tu v w x yA ...
Vertical PredictionFills each row of the block with acopy of the above row.a b c d ef g h i jk l m n op q r s tu v w x yA ...
DC PredictionFills the block with a single valueusing the average of the pixels inthe above row and the left column.a b c ...
DC PredictionFills the block with a single valueusing the average of the pixels inthe above row and the left column.a b c ...
DC PredictionFills the block with a single valueusing the average of the pixels inthe above row and the left column.a b c ...
* * * * L0* * * * L1* * * * L2* * * * L3* * * * L4* * * * ** * * * ** * * * ** * * * *A0 A1 A2 A3 A4TrueMotion PredictionH...
* * * * L0* * * * L1* * * * L2* * * * L3* * * * L4* * * * ** * * * ** * * * ** * * * *A0 A1 A2 A3 A4A0 A1 A2 A3 A4L0L1L2L3...
* * * * L0* * * * L1* * * * L2* * * * L3* * * * L4* * * * ** * * * ** * * * ** * * * *A0 A1 A2 A3 A4A0 A1 A2 A3 A4L0L1L2L3...
Inter PredictionAs mentioned above...
Inter PredictionGoldenFrameLast FrameAlternateFrame
Motion VectorReusing vectors from neighboringmacroblocks.Flexible partitioning of a macroblock into sub-blocks.
Sub-pixel InterpolationQuarter pixel accurate motion vectors forluma pixels.High performance six-tap interpolationfilters.[...
Hybrid Transform& Quantization
Divide into MacroblocksOne 16×16 block of luma pixels (Y)Two 8×8 blocks of chroma pixels (U, V)Typical Method
16 8 8
Divide into blocksVP8 MethodAll blocks of luma and chroma are 4×4blocks
4 4 4
Discrete Cosine TransformFast implementationSlightly worse in energy compactionthan KLTContent-independency
Coding2-D DCTDecoding4×4 variant of LLMimplementation
Coding2-D DCTDecoding4×4 variant of LLMimplementationPractical fast 1-D DCT algorithms with 11 multiplications
I1I2I3I4O1O2O3O4Inverse DCT Graph in VP8y0y1x0x1y0 = √2(x0×sin(π/8)-x1×cos(π/8))y1 = √2(x0×cos(π/8)+x1×sin(π/8))
H.264/AVCuse multiplication-less integer transformslightly better thanEnergy compaction is
It is efficient in processors withSIMD capability.
Walsh-Hadamard TransformY = HXHTH =1 1 1 11 1 -1 -11 -1 1 -11 -1 -1 1[ ]HT is the transpose of H.Take advantage ofthe corr...
Adaptive Quantization128 quantization level.Different quantization level in single frame.1st order luma DC1st order luma A...
Entropy Coding
Supports distribution updates on a per-framebasisBoolean arithmetic coderStable probability distributions within oneframeK...
Adaptive Loop Filter
Removing blocking artifacts introduced byquantization and transformation.
Removing blocking artifacts introduced byquantization and transformation.
Removing blocking artifacts introduced byquantization and transformation.Slight Filtering
Removing blocking artifacts introduced byquantization and transformation.Slight FilteringStrong Filtering
Removing blocking artifacts introduced byquantization and transformation.Slight FilteringStrong FilteringNo Filtering
Parallel Processing
Data PartitionCompressed Data
Data PartitionCompressed Datamarcoblock code mode& motion vectortransform coefficients
More Transform Coefficient Partitiontransform coefficientssupport up to 8 token partitions
More Transform Coefficient Partitiontransform coefficientssupport up to 8 token partitions
Compare to H.264
100120140160180200220240260280300Night 720p 2000kbps Sheriff 720p 2000kbps Tulip 720p 2000kbpsDeocding speed in Frame/seco...
202530354045Night 720p 2000kbps Sheriff 720p 2000kbps Tulip 720p 2000kbpsDeocding speed in Frame/secondVP8 H.264 High Profi...
Any Questions?
Thanks for your listening :)
Introduction to VP8
Introduction to VP8
Introduction to VP8
Introduction to VP8
Introduction to VP8
Introduction to VP8
Introduction to VP8
Introduction to VP8
Introduction to VP8
Upcoming SlideShare
Loading in …5
×

Introduction to VP8

1,179 views

Published on

沒什麼內容的 VP8 簡介

Published in: Technology, Business
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,179
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
26
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Introduction to VP8

  1. 1. Introduction to VP8郭至軒 (KuoE0)kuoe0.tw@gmail.com
  2. 2. Latest update: Jun 13, 2013Attribution-ShareAlike 3.0 Unported(CC BY-SA 3.0)http://creativecommons.org/licenses/by-sa/3.0/
  3. 3. Situation
  4. 4. web m
  5. 5. web m
  6. 6. Video CodecVP8
  7. 7. AnOpenSourceCodec
  8. 8. Developed byOn2 Technology
  9. 9. Developed byOn2 TechnologyFebruary, 2010
  10. 10. Acquired byGoogleFebruary, 2010
  11. 11. Patent
  12. 12. web m
  13. 13. March, 2013web m
  14. 14. Royalty-Free TermsMarch, 2013web m
  15. 15. SuccessorVP9
  16. 16. SuccessorVP9May 15, 2013
  17. 17. Feature
  18. 18. focus onInternetweb-basedapplication
  19. 19. Low Bandwidth RequirementImage Quality:watchable (PSNR: ~30dB)visually lossless (PSNR: ~45dB)
  20. 20. Heterogeneous Client Hardware
  21. 21. Heterogeneous Client Hardware
  22. 22. Heterogeneous Client HardwareEfficientImplementations
  23. 23. Web Video FormatYUV 420 color sampling8 bit per channel depthUp to 16383 × 16383 pixels
  24. 24. Processing Flow
  25. 25. CodingPredictTransform + QuantizeEntropy CodeLoop Filter
  26. 26. DecodingEntropy DecodePredictDequantize+Inverse TransformLoop Filter
  27. 27. Reference Frame
  28. 28. GoldenFrameLast FrameAlternateFrameReferenceFrame
  29. 29. GoldenFrameLast FrameAlternateFrameAt most 3 reference frames in VP8.
  30. 30. Last Frame
  31. 31. Last Frame
  32. 32. Last Frame
  33. 33. Last Frame Current Frame
  34. 34. Golden FrameChoose an arbitrary frame in the past.Define a number of flags to notify decoderwhen and how to update this buffer.
  35. 35. Golden FrameChoose an arbitrary frame in the past.Define a number of flags to notify decoderwhen and how to update this buffer.
  36. 36. set as the golden frame
  37. 37. Golden FrameGolden Frame
  38. 38. Golden FrameGolden Frame
  39. 39. Golden FrameGolden Frame
  40. 40. Golden FrameGolden Frame
  41. 41. Golden FrameGolden Frame
  42. 42. Golden FrameGolden Frame
  43. 43. Golden FrameGolden Frame
  44. 44. Golden FrameGolden Frame
  45. 45. Golden FrameGolden Frame
  46. 46. Reconstructmoving objectbackground
  47. 47. Alternate FrameOtherFrameAlternateFrame
  48. 48. Alternate FrameOtherFrameAlternateFramedecodeshow
  49. 49. Alternate FrameOtherFrameAlternateFramedecodeshowdecode show
  50. 50. Alternate FrameOtherFrameAlternateFramedecodeshowdecode showstore beneficial information
  51. 51. Construct from multi-frame
  52. 52. Construct from multi-frame
  53. 53. Construct from multi-frame
  54. 54. Construct from multi-frameAlternateFrame
  55. 55. Typical FrameI B B P B B P B B I B B P
  56. 56. VP8L GAG G G G G L G G GAG L
  57. 57. Prediction
  58. 58. Intra PredictionInter Predictionuse data within a single video frameuse data from previously encoded frames
  59. 59. Intra PredictionLumaLumaChroma
  60. 60. Intra PredictionLumaLumaChroma16 4 8
  61. 61. H_PRED (horizontal prediction)V_PRED (vertical prediction)DC_PRED (DC prediction)TM_PRED (TrueMotion prediction)Four Prediction Modes:
  62. 62. Horizontal PredictionFills each column of the block witha copy of the left column.a b c d ef g h i jk l m n op q r s tu v w x yA B C D EF G H I JK L M N OP Q R S TU V W X Y
  63. 63. Horizontal PredictionFills each column of the block witha copy of the left column.a b c d ef g h i jk l m n op q r s tu v w x yA B C D EF G H I JK L M N OP Q R S TU V W X Yejoty
  64. 64. Horizontal PredictionFills each column of the block witha copy of the left column.a b c d ef g h i jk l m n op q r s tu v w x yA B C D EF G H I JK L M N OP Q R S TU V W X Yejotye e e e ej j j j jo o o o ot t t t ty y y y y
  65. 65. Vertical PredictionFills each row of the block with acopy of the above row.a b c d ef g h i jk l m n op q r s tu v w x yA B C D EF G H I JK L M N OP Q R S TU V W X Y
  66. 66. Vertical PredictionFills each row of the block with acopy of the above row.a b c d ef g h i jk l m n op q r s tu v w x yA B C D EF G H I JK L M N OP Q R S TU V W X YU V W X Y
  67. 67. Vertical PredictionFills each row of the block with acopy of the above row.a b c d ef g h i jk l m n op q r s tu v w x yA B C D EF G H I JK L M N OP Q R S TU V W X YU V W X YU V W X YU V W X YU V W X YU V W X YU V W X Y
  68. 68. DC PredictionFills the block with a single valueusing the average of the pixels inthe above row and the left column.a b c d ef g h i jk l m n op q r s tu v w x yA B C D EF G H I JK L M N OP Q R S TU V W X Y
  69. 69. DC PredictionFills the block with a single valueusing the average of the pixels inthe above row and the left column.a b c d ef g h i jk l m n op q r s tu v w x yA B C D EF G H I JK L M N OP Q R S TU V W X YU V W X YejotyZ = (U + V + W + X +Y + e + j + o + t + y) ÷10
  70. 70. DC PredictionFills the block with a single valueusing the average of the pixels inthe above row and the left column.a b c d ef g h i jk l m n op q r s tu v w x yA B C D EF G H I JK L M N OP Q R S TU V W X YU V W X YejotyZ = (U + V + W + X +Y + e + j + o + t + y) ÷10Z Z Z Z ZZ Z Z Z ZZ Z Z Z ZZ Z Z Z ZZ Z Z Z Z
  71. 71. * * * * L0* * * * L1* * * * L2* * * * L3* * * * L4* * * * ** * * * ** * * * ** * * * *A0 A1 A2 A3 A4TrueMotion PredictionHorizontal differencesbetween pixels inabove row and verticaldifferences betweenpixels in left column arepropagated (startingfrom C).* * * * ** * * * ** * * * ** * * * ** * * * C
  72. 72. * * * * L0* * * * L1* * * * L2* * * * L3* * * * L4* * * * ** * * * ** * * * ** * * * *A0 A1 A2 A3 A4A0 A1 A2 A3 A4L0L1L2L3L4TrueMotion PredictionHorizontal differencesbetween pixels inabove row and verticaldifferences betweenpixels in left column arepropagated (startingfrom C).* * * * ** * * * ** * * * ** * * * ** * * * CCXij = Ai + Lj - C
  73. 73. * * * * L0* * * * L1* * * * L2* * * * L3* * * * L4* * * * ** * * * ** * * * ** * * * *A0 A1 A2 A3 A4A0 A1 A2 A3 A4L0L1L2L3L4TrueMotion PredictionHorizontal differencesbetween pixels inabove row and verticaldifferences betweenpixels in left column arepropagated (startingfrom C).* * * * ** * * * ** * * * ** * * * ** * * * CCXij = Ai + Lj - CXij Xij Xij Xij XijXij Xij Xij Xij XijXij Xij Xij Xij XijXij Xij Xij Xij XijXij Xij Xij Xij Xij
  74. 74. Inter PredictionAs mentioned above...
  75. 75. Inter PredictionGoldenFrameLast FrameAlternateFrame
  76. 76. Motion VectorReusing vectors from neighboringmacroblocks.Flexible partitioning of a macroblock into sub-blocks.
  77. 77. Sub-pixel InterpolationQuarter pixel accurate motion vectors forluma pixels.High performance six-tap interpolationfilters.[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
  78. 78. Hybrid Transform& Quantization
  79. 79. Divide into MacroblocksOne 16×16 block of luma pixels (Y)Two 8×8 blocks of chroma pixels (U, V)Typical Method
  80. 80. 16 8 8
  81. 81. Divide into blocksVP8 MethodAll blocks of luma and chroma are 4×4blocks
  82. 82. 4 4 4
  83. 83. Discrete Cosine TransformFast implementationSlightly worse in energy compactionthan KLTContent-independency
  84. 84. Coding2-D DCTDecoding4×4 variant of LLMimplementation
  85. 85. Coding2-D DCTDecoding4×4 variant of LLMimplementationPractical fast 1-D DCT algorithms with 11 multiplications
  86. 86. I1I2I3I4O1O2O3O4Inverse DCT Graph in VP8y0y1x0x1y0 = √2(x0×sin(π/8)-x1×cos(π/8))y1 = √2(x0×cos(π/8)+x1×sin(π/8))
  87. 87. H.264/AVCuse multiplication-less integer transformslightly better thanEnergy compaction is
  88. 88. It is efficient in processors withSIMD capability.
  89. 89. Walsh-Hadamard TransformY = HXHTH =1 1 1 11 1 -1 -11 -1 1 -11 -1 -1 1[ ]HT is the transpose of H.Take advantage ofthe correlation toreduce redundancy.
  90. 90. Adaptive Quantization128 quantization level.Different quantization level in single frame.1st order luma DC1st order luma AC2st order luma DC2st order luma AC2st order chroma DC2st order chroma AC
  91. 91. Entropy Coding
  92. 92. Supports distribution updates on a per-framebasisBoolean arithmetic coderStable probability distributions within oneframeKeyframes reset the probability values to thedefaults
  93. 93. Adaptive Loop Filter
  94. 94. Removing blocking artifacts introduced byquantization and transformation.
  95. 95. Removing blocking artifacts introduced byquantization and transformation.
  96. 96. Removing blocking artifacts introduced byquantization and transformation.Slight Filtering
  97. 97. Removing blocking artifacts introduced byquantization and transformation.Slight FilteringStrong Filtering
  98. 98. Removing blocking artifacts introduced byquantization and transformation.Slight FilteringStrong FilteringNo Filtering
  99. 99. Parallel Processing
  100. 100. Data PartitionCompressed Data
  101. 101. Data PartitionCompressed Datamarcoblock code mode& motion vectortransform coefficients
  102. 102. More Transform Coefficient Partitiontransform coefficientssupport up to 8 token partitions
  103. 103. More Transform Coefficient Partitiontransform coefficientssupport up to 8 token partitions
  104. 104. Compare to H.264
  105. 105. 100120140160180200220240260280300Night 720p 2000kbps Sheriff 720p 2000kbps Tulip 720p 2000kbpsDeocding speed in Frame/secondVP8 H.264 High ProfileIntel Core i7 3.2GHz
  106. 106. 202530354045Night 720p 2000kbps Sheriff 720p 2000kbps Tulip 720p 2000kbpsDeocding speed in Frame/secondVP8 H.264 High ProfileIntel Atom N270 1.66GHz
  107. 107. Any Questions?
  108. 108. Thanks for your listening :)

×