From b314da5f02960f55390a462f67bfe01efee06dba Mon Sep 17 00:00:00 2001 From: olly Date: Thu, 26 Mar 2020 09:16:14 +0000 Subject: [PATCH] Rename FfmpegDecoder to FfmpegAudioDecoder It looks like the video path will use a separate FfmpegVideoDecoder Issue: #2159 PiperOrigin-RevId: 303068617 --- ...egDecoder.java => FfmpegAudioDecoder.java} | 10 ++-- .../ext/ffmpeg/FfmpegAudioRenderer.java | 6 +-- extensions/ffmpeg/src/main/jni/ffmpeg_jni.cc | 51 ++++++++++--------- 3 files changed, 33 insertions(+), 34 deletions(-) rename extensions/ffmpeg/src/main/java/com/google/android/exoplayer2/ext/ffmpeg/{FfmpegDecoder.java => FfmpegAudioDecoder.java} (97%) diff --git a/extensions/ffmpeg/src/main/java/com/google/android/exoplayer2/ext/ffmpeg/FfmpegDecoder.java b/extensions/ffmpeg/src/main/java/com/google/android/exoplayer2/ext/ffmpeg/FfmpegAudioDecoder.java similarity index 97% rename from extensions/ffmpeg/src/main/java/com/google/android/exoplayer2/ext/ffmpeg/FfmpegDecoder.java rename to extensions/ffmpeg/src/main/java/com/google/android/exoplayer2/ext/ffmpeg/FfmpegAudioDecoder.java index ceef86d0cc..4da8a7543a 100644 --- a/extensions/ffmpeg/src/main/java/com/google/android/exoplayer2/ext/ffmpeg/FfmpegDecoder.java +++ b/extensions/ffmpeg/src/main/java/com/google/android/exoplayer2/ext/ffmpeg/FfmpegAudioDecoder.java @@ -28,11 +28,9 @@ import com.google.android.exoplayer2.util.Util; import java.nio.ByteBuffer; import java.util.List; -/** - * FFmpeg audio decoder. - */ -/* package */ final class FfmpegDecoder extends - SimpleDecoder { +/** FFmpeg audio decoder. */ +/* package */ final class FfmpegAudioDecoder + extends SimpleDecoder { // Output buffer sizes when decoding PCM mu-law streams, which is the maximum FFmpeg outputs. private static final int OUTPUT_BUFFER_SIZE_16BIT = 65536; @@ -52,7 +50,7 @@ import java.util.List; private volatile int channelCount; private volatile int sampleRate; - public FfmpegDecoder( + public FfmpegAudioDecoder( int numInputBuffers, int numOutputBuffers, int initialInputBufferSize, diff --git a/extensions/ffmpeg/src/main/java/com/google/android/exoplayer2/ext/ffmpeg/FfmpegAudioRenderer.java b/extensions/ffmpeg/src/main/java/com/google/android/exoplayer2/ext/ffmpeg/FfmpegAudioRenderer.java index da5d21cfa2..8a3ee695c5 100644 --- a/extensions/ffmpeg/src/main/java/com/google/android/exoplayer2/ext/ffmpeg/FfmpegAudioRenderer.java +++ b/extensions/ffmpeg/src/main/java/com/google/android/exoplayer2/ext/ffmpeg/FfmpegAudioRenderer.java @@ -41,7 +41,7 @@ public final class FfmpegAudioRenderer extends DecoderAudioRenderer { private final boolean enableFloatOutput; - private @MonotonicNonNull FfmpegDecoder decoder; + private @MonotonicNonNull FfmpegAudioDecoder decoder; public FfmpegAudioRenderer() { this(/* eventHandler= */ null, /* eventListener= */ null); @@ -117,12 +117,12 @@ public final class FfmpegAudioRenderer extends DecoderAudioRenderer { } @Override - protected FfmpegDecoder createDecoder(Format format, @Nullable ExoMediaCrypto mediaCrypto) + protected FfmpegAudioDecoder createDecoder(Format format, @Nullable ExoMediaCrypto mediaCrypto) throws FfmpegDecoderException { int initialInputBufferSize = format.maxInputSize != Format.NO_VALUE ? format.maxInputSize : DEFAULT_INPUT_BUFFER_SIZE; decoder = - new FfmpegDecoder( + new FfmpegAudioDecoder( NUM_BUFFERS, NUM_BUFFERS, initialInputBufferSize, format, shouldUseFloatOutput(format)); return decoder; } diff --git a/extensions/ffmpeg/src/main/jni/ffmpeg_jni.cc b/extensions/ffmpeg/src/main/jni/ffmpeg_jni.cc index 400039af89..d1eb88f678 100644 --- a/extensions/ffmpeg/src/main/jni/ffmpeg_jni.cc +++ b/extensions/ffmpeg/src/main/jni/ffmpeg_jni.cc @@ -36,25 +36,25 @@ extern "C" { #define LOGE(...) ((void)__android_log_print(ANDROID_LOG_ERROR, LOG_TAG, \ __VA_ARGS__)) -#define DECODER_FUNC(RETURN_TYPE, NAME, ...) \ - extern "C" { \ - JNIEXPORT RETURN_TYPE \ - Java_com_google_android_exoplayer2_ext_ffmpeg_FfmpegDecoder_ ## NAME \ - (JNIEnv* env, jobject thiz, ##__VA_ARGS__);\ - } \ - JNIEXPORT RETURN_TYPE \ - Java_com_google_android_exoplayer2_ext_ffmpeg_FfmpegDecoder_ ## NAME \ - (JNIEnv* env, jobject thiz, ##__VA_ARGS__)\ +#define AUDIO_DECODER_FUNC(RETURN_TYPE, NAME, ...) \ + extern "C" { \ + JNIEXPORT RETURN_TYPE \ + Java_com_google_android_exoplayer2_ext_ffmpeg_FfmpegAudioDecoder_##NAME( \ + JNIEnv *env, jobject thiz, ##__VA_ARGS__); \ + } \ + JNIEXPORT RETURN_TYPE \ + Java_com_google_android_exoplayer2_ext_ffmpeg_FfmpegAudioDecoder_##NAME( \ + JNIEnv *env, jobject thiz, ##__VA_ARGS__) -#define LIBRARY_FUNC(RETURN_TYPE, NAME, ...) \ - extern "C" { \ - JNIEXPORT RETURN_TYPE \ - Java_com_google_android_exoplayer2_ext_ffmpeg_FfmpegLibrary_ ## NAME \ - (JNIEnv* env, jobject thiz, ##__VA_ARGS__);\ - } \ - JNIEXPORT RETURN_TYPE \ - Java_com_google_android_exoplayer2_ext_ffmpeg_FfmpegLibrary_ ## NAME \ - (JNIEnv* env, jobject thiz, ##__VA_ARGS__)\ +#define LIBRARY_FUNC(RETURN_TYPE, NAME, ...) \ + extern "C" { \ + JNIEXPORT RETURN_TYPE \ + Java_com_google_android_exoplayer2_ext_ffmpeg_FfmpegLibrary_##NAME( \ + JNIEnv *env, jobject thiz, ##__VA_ARGS__); \ + } \ + JNIEXPORT RETURN_TYPE \ + Java_com_google_android_exoplayer2_ext_ffmpeg_FfmpegLibrary_##NAME( \ + JNIEnv *env, jobject thiz, ##__VA_ARGS__) #define ERROR_STRING_BUFFER_LENGTH 256 @@ -63,7 +63,7 @@ static const AVSampleFormat OUTPUT_FORMAT_PCM_16BIT = AV_SAMPLE_FMT_S16; // Output format corresponding to AudioFormat.ENCODING_PCM_FLOAT. static const AVSampleFormat OUTPUT_FORMAT_PCM_FLOAT = AV_SAMPLE_FMT_FLT; -// Error codes matching FfmpegDecoder.java. +// Error codes matching FfmpegAudioDecoder.java. static const int DECODER_ERROR_INVALID_DATA = -1; static const int DECODER_ERROR_OTHER = -2; @@ -115,8 +115,9 @@ LIBRARY_FUNC(jboolean, ffmpegHasDecoder, jstring codecName) { return getCodecByName(env, codecName) != NULL; } -DECODER_FUNC(jlong, ffmpegInitialize, jstring codecName, jbyteArray extraData, - jboolean outputFloat, jint rawSampleRate, jint rawChannelCount) { +AUDIO_DECODER_FUNC(jlong, ffmpegInitialize, jstring codecName, + jbyteArray extraData, jboolean outputFloat, + jint rawSampleRate, jint rawChannelCount) { AVCodec *codec = getCodecByName(env, codecName); if (!codec) { LOGE("Codec not found."); @@ -154,7 +155,7 @@ DECODER_FUNC(jint, ffmpegDecode, jlong context, jobject inputData, outputSize); } -DECODER_FUNC(jint, ffmpegGetChannelCount, jlong context) { +AUDIO_DECODER_FUNC(jint, ffmpegGetChannelCount, jlong context) { if (!context) { LOGE("Context must be non-NULL."); return -1; @@ -162,7 +163,7 @@ DECODER_FUNC(jint, ffmpegGetChannelCount, jlong context) { return ((AVCodecContext *) context)->channels; } -DECODER_FUNC(jint, ffmpegGetSampleRate, jlong context) { +AUDIO_DECODER_FUNC(jint, ffmpegGetSampleRate, jlong context) { if (!context) { LOGE("Context must be non-NULL."); return -1; @@ -170,7 +171,7 @@ DECODER_FUNC(jint, ffmpegGetSampleRate, jlong context) { return ((AVCodecContext *) context)->sample_rate; } -DECODER_FUNC(jlong, ffmpegReset, jlong jContext, jbyteArray extraData) { +AUDIO_DECODER_FUNC(jlong, ffmpegReset, jlong jContext, jbyteArray extraData) { AVCodecContext *context = (AVCodecContext *) jContext; if (!context) { LOGE("Tried to reset without a context."); @@ -198,7 +199,7 @@ DECODER_FUNC(jlong, ffmpegReset, jlong jContext, jbyteArray extraData) { return (jlong) context; } -DECODER_FUNC(void, ffmpegRelease, jlong context) { +AUDIO_DECODER_FUNC(void, ffmpegRelease, jlong context) { if (context) { releaseContext((AVCodecContext *) context); }