Implementation Performance Analysis Comparison of H 264 and VP8 Final Report Submitted by Keyur Shah 1000658106 keyur shah mavs uta edu Under guidance of Dr K R Rao Motivation H 264 is the most widely accepted video standard and has spawned a huge amount of software that implements it viz JM X264 Intel IPP and Ffmpeg 3 H 264 is used in various applications like video broadcasting video streaming video conferencing HDTV Blu ray Discs VP8 is an open video compression format released by Google originally developed by On2 Technologies 25 VP8 offers significant gains in compression performance VP8 is less compute intensive to decode 8 VP8 is used as the codec for HTML5 video playback in Internet Explorer 9 Mozilla Opera and Google Chrome Adobe Flash Player also supports VP8 playback 17 Goal of the Project Comparison of VP8 and H 264 Feature parametric comparison 1 Prediction schemes 2 Transform 3 In loop filter 4 Entropy coding 1 2 3 4 5 6 Performance comparison Bit rate PSNR MSE SSIM 26 Compression ratio Complexity encoding time and decoding time Why H 264 One of the most widely accepted video coding standards Block oriented motion estimation based codec Higher coding efficiency than previous standards MPEG 1 2 4 H 261 and H 263 28 Simple syntax specifications Seamless integration of video coding into all current protocols More error robustness Profiles of H 264 Table 1 H 264 profiles 3 Specific coding schemes of profiles Fig 1 H 264 coding profile schemes 3 WHY VP8 Inheriting many great innovations from its predecessors VP7 and VP6 such as golden frames processor adaptive real time encoding and a low complexity loop filter VP8 adds more than fifty new techniques to achieve its goal of outstanding quality at low bitrates with very low complexity 6 VP8 specifies exact values for reconstructed pixels This greatly facilitates the verification of the correctness of a decoder implementation as well as avoiding difficult to predict visual incongruities between such implementations 6 VP8 offers both VBR variable bitrate and CBR constant bitrate encoding options CBR attempts to keep the bitrate more constant i e the codec tries to remain within given buffering constraints If the user sets CBR mode but gives very loose buffer restrictions then the result will start to resemble VBR VP8 has been designed with a wide range of machines in mind from 60 MHz ARM9 processors to today s highly parallel multi core processors It encodes in real time on low end machines and takes fewer cycles to decode than other leading algorithms 8 Fig 2 Parallel processing in VP8 8 Fig 3 H 264 encoder block diagram 3 Fig 4 H 264 decoder block diagram 3 Parametric Comparison VP8 and H 264 1 Intra Prediction Intra prediction is used to guess the content of a block without referring to other frames H 264 has three Intra Prediction modes 3 1 4x4 luma prediction modes 9 prediction modes 8 Directional predictions and 1 DC prediction vertical 0 horizontal 1 DC 2 diagonal down left 3 diagonal down right 4 vertical right 5 horizontal down 6 vertical left 7 horizontal up 8 M A B C D I a b c d J e f g h K i j k l L m n o mode 0 mode 5 E F G H mode 1 mode 6 mode 8 p mode 4 M A B C D I a b c d J e f g h K i j k l L m n o p mode 3 E F G H mode 7 Fig 6 4x4 luma prediction modes 3 2 16x16 luma prediction modes 4 prediction modes vertical 0 horizontal 1 DC 2 plane 3 3 8x8 chroma prediction mode Similar to 4x4 luma with low pass filtering of the predictor to improve prediction performance VP8 has four Intra Prediction modes 22 H PRED mode V PRED mode DC PRED mode 1 H PRED horizontal prediction Fills each column of the block with a copy of the left column L 2 V PRED vertical prediction Fills each row of the block with a copy of the above row A 3 DC PRED DC prediction Fills the block with a single value using the average of the pixels in the row above A and the column to the left of L TM PRED mode 22 4 TM PRED TrueMotion prediction A mode that gets its name from a compression technique developed by On2 Technologies In addition to the row A and column L TM PRED uses the pixel C above and to the left of the block Horizontal differences between pixels in A starting from C are propagated using the pixels from L to start each row The equation is as follows Xij Li Aj C i j 0 1 2 3 2 Inter Prediction Inter prediction is used to guess the content of a block by referring to past and or future frames There are two primary components to inter prediction reference frames and motion vectors The reference frame is a past frame from which to grab pixels from and the motion vectors index an offset into that frame H 264 has three frames I frames P frames and B frames 3 1 The first image in a video sequence is always an I frame 2 A P frame which stands for predictive inter frame 3 A B frame or bi predictive inter frame 6 VP8 has two frames common with H 264 I frames and P frame but B frames are missing here instead there are altref frames alternative reference VP8 also has alternate prediction frames called golden frames Using golden frames for loss of data Fig 8 Golden frames in VP8 22 3 Transform and Quantization A Transform 7 The general method for transformation in both H 264 and VP8 is the same each 16 16 macroblock is divided into sixteen 4 4 DCT blocks each of which is transformed by a bit exact DCT approximation The main difference is that in VP8 DC coefficients of these bit exact DCT blocks are collected into another 4 4 group which are then Walsh Hadamard transformed 27 B Quantization 7 The general method here also remains the same but there is a small difference again H 264 has a built in macroblock level quantizer adaptive quantization whereas VP8 does not have it 4 Entropy Coding Entropy coding is the process of taking all the information from all the other processes DCT coefficients prediction modes motion vectors and so forth and compressing them lossless into the final output file VP8 and H 264 use an arithmetic coder for this purpose The difference is H 264 uses an adaptive arithmetic coder whereas VP8 uses non adaptive arithmetic coder 7 5 Loop Filter The loop filter is run after decoding or encoding a frame and serves to perform extra processing on a frame usually to remove blockiness in DCT based video formats They have same kind of loop filter with two small differences 1 VP8 has two modes in loop filtering a simple mode and a normal mode 2 VP8 filter has wider range when …
View Full Document