Video Editing measures performance when playing, editing, and saving video. The test uses OpenGL ES 2.0, the native Android MediaCodec API, and Exoplayer, a Google-developed media player.
The first part of the test measures how well your device performs when applying real-time effects to video using OpenGL ES 2.0 fragment shaders.
The video frames are decoded and sent to an Android GLSurfaceView using a custom Renderer that applies OpenGL ES 2.0 shaders for the preview.
All video clips are encoded with the H.264/MPEG-4 AVC compression format. Several frame rates and resolutions are tested:
- 30 FPS at 1270 × 720
- 30 FPS at 1920 × 1080
- 30 FPS at 2560 × 1440
- 30 FPS at 3200 × 1800
- 60 FPS at 1270 × 720
- 60 FPS at 1920 × 1080
- 60 FPS at 2560 × 1440
- 60 FPS at 3200 × 1800
The second part of the test measures performance while decoding, editing, encoding, and muxing a video in the same code path. The video frames are decoded with a MediaCodec decoder on a SurfaceTexture using a custom Renderer that applies OpenGL shaders, then encoded with a MediaCodec encoder and muxed with MediaMuxer.
Scoring
VideoEditing score = 15,000 × geomean(geomean(R1, R2, R3, R4), 1/R5) Where: R1 = ∑_(i=1)^n〖average_render_30FPS(i),(i=index of 30 FPS video) 〗 The sum of the average frame rate when rendering each 30 FPS video R2 = ∑_(i=1)^n〖average_decode_30FPS(i),(i=index of 30 FPS video) 〗 The sum of the average frame rate when decoding each 30 FPS video R3 = ∑_(i=1)^n〖average_render_60FPS(i),(i=index of 30 FPS video) 〗 The sum of the average frame rate when rendering each 60 FPS video R4 = ∑_(i=1)^n〖average_decode_60FPS(i),(i=index of 30 FPS video) 〗 The sum of the average frame rate when decoding each 60 FPS video R5 = Time taken to encode and mux the edited video