
1. Rename "extensions" package to "decoder". It's used by both text and (should be used by) metadata, so it's no longer just for extensions. 2. Move Buffer objects move into the decoder package. 3. Rename SubtitleParser and MetadataParser to SubtitleDecoder and MetadataDecoder respectively, since they extend Decoder. Ditto for all subclasses. 4. Subtitle and Metadata decoders now throw their own exception types rather than ParserException. 5. Move MediaCodec classes into a mediacodec package, with the exception of the concrete audio and video renderers. 6. Create an audio package to hold the two audio renderer classes plus related util classes. 7. Create a video package to hold the one video renderer class plus related util classes. After this change the following nice properties hold: 1. Want a video renderer? Look in the video package. Ditto for audio, text and metadata. 2. All TrackRenderer implementations use a decoder of some kind to decode buffers received from the source, so we have consistent terminology there. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=127326805
ExoPlayer Flac Extension
Description
The Flac Extension is a Renderer implementation that helps you bundle libFLAC (the Flac decoding library) into your app and use it along with ExoPlayer to play Flac audio 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)"
FLAC_EXT_PATH="${EXOPLAYER_ROOT}/extensions/flac/src/main"
- Download the Android NDK and set its location in an environment variable:
NDK_PATH="<path to Android NDK>"
- Download and extract flac-1.3.1 as "${FLAC_EXT_PATH}/jni/flac" folder:
cd "${FLAC_EXT_PATH}/jni" && \
curl http://downloads.xiph.org/releases/flac/flac-1.3.1.tar.xz | tar xJ && \
mv flac-1.3.1 flac
- Build the JNI native libraries from the command line:
cd "${FLAC_EXT_PATH}"/jni && \
${NDK_PATH}/ndk-build APP_ABI=all -j4
- In your project, you can add a dependency to the Flac Extension by using a rule like this:
// in settings.gradle
include ':..:ExoPlayer:library'
include ':..:ExoPlayer:extension-flac'
// in build.gradle
dependencies {
compile project(':..:ExoPlayer:library')
compile project(':..:ExoPlayer:extension-flac')
}
- Now, when you build your app, the Flac extension will be built and the native libraries will be packaged along with the APK.