media/extensions/vp9
anjalibh 84def0d048 Implement VP9 profile 2 - 10 bit BT2020 support with libvpx. This code truncates the 10 bits to 8. We'll later update this to upload half-float or 16 bit short textures.
Pending: Convert BT2020 to DCI-P3 before render.

I'll add the same code to V2 after initial review.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148403349
2017-02-28 13:47:18 +00:00
..
src Implement VP9 profile 2 - 10 bit BT2020 support with libvpx. This code truncates the 10 bits to 8. We'll later update this to upload half-float or 16 bit short textures. 2017-02-28 13:47:18 +00:00
build.gradle Fix gradle/proguard setup 2017-01-13 17:27:25 +00:00
proguard-rules.txt Fix gradle/proguard setup 2017-01-13 17:27:25 +00:00
README.md Rename TrackRenderer -> Renderer 2016-07-15 18:00:32 +01:00

ExoPlayer VP9 Extension

Description

The VP9 Extension is a Renderer implementation that helps you bundle libvpx (the VP9 decoding library) into your app and use it along with ExoPlayer to play VP9 video on Android devices.

Build Instructions

  • Checkout ExoPlayer along with Extensions:
git clone https://github.com/google/ExoPlayer.git
  • Set the following environment variables:
cd "<path to exoplayer checkout>"
EXOPLAYER_ROOT="$(pwd)"
VP9_EXT_PATH="${EXOPLAYER_ROOT}/extensions/vp9/src/main"
  • Download the Android NDK and set its location in an environment variable:
NDK_PATH="<path to Android NDK>"
  • Fetch libvpx and libyuv:
cd "${VP9_EXT_PATH}/jni" && \
git clone https://chromium.googlesource.com/webm/libvpx libvpx && \
git clone https://chromium.googlesource.com/libyuv/libyuv libyuv
  • Run a script that generates necessary configuration files for libvpx:
cd ${VP9_EXT_PATH}/jni && \
./generate_libvpx_android_configs.sh "${NDK_PATH}"
  • Build the JNI native libraries from the command line:
cd "${VP9_EXT_PATH}"/jni && \
${NDK_PATH}/ndk-build APP_ABI=all -j4
  • In your project, you can add a dependency to the VP9 Extension by using a the following rule:
// in settings.gradle
include ':..:ExoPlayer:library'
include ':..:ExoPlayer:extension-vp9'

// in build.gradle
dependencies {
    compile project(':..:ExoPlayer:library')
    compile project(':..:ExoPlayer:extension-vp9')
}
  • Now, when you build your app, the VP9 extension will be built and the native libraries will be packaged along with the APK.

Notes

  • Every time there is a change to the libvpx checkout:
    • Android config scripts should be re-generated by running generate_libvpx_android_configs.sh
    • Clean and re-build the project.
  • If you want to use your own version of libvpx or libyuv, place it in ${VP9_EXT_PATH}/jni/libvpx or ${VP9_EXT_PATH}/jni/libyuv respectively.