diff options
| -rw-r--r-- | media/java/android/media/MediaCodec.java | 15 | ||||
| -rw-r--r-- | media/jni/android_media_MediaCodec.cpp | 10 |
2 files changed, 24 insertions, 1 deletions
diff --git a/media/java/android/media/MediaCodec.java b/media/java/android/media/MediaCodec.java index c4886836f451..1a8437108b72 100644 --- a/media/java/android/media/MediaCodec.java +++ b/media/java/android/media/MediaCodec.java @@ -48,6 +48,7 @@ import android.os.IHwBinder; import android.os.Looper; import android.os.Message; import android.os.PersistableBundle; +import android.os.Trace; import android.view.Surface; import java.io.IOException; @@ -3107,6 +3108,7 @@ final public class MediaCodec { int index, int offset, int size, long presentationTimeUs, int flags) throws CryptoException { + Trace.traceBegin(Trace.TRACE_TAG_VIDEO, "MediaCodec::queueInputBuffer#java"); if ((flags & BUFFER_FLAG_DECODE_ONLY) != 0 && (flags & BUFFER_FLAG_END_OF_STREAM) != 0) { throw new InvalidBufferFlagsException(EOS_AND_DECODE_ONLY_ERROR_MESSAGE); @@ -3126,6 +3128,8 @@ final public class MediaCodec { } catch (CryptoException | IllegalStateException e) { revalidateByteBuffer(mCachedInputBuffers, index, true /* input */); throw e; + } finally { + Trace.traceEnd(Trace.TRACE_TAG_VIDEO); } } @@ -3167,6 +3171,7 @@ final public class MediaCodec { public final void queueInputBuffers( int index, @NonNull ArrayDeque<BufferInfo> bufferInfos) { + Trace.traceBegin(Trace.TRACE_TAG_VIDEO, "MediaCodec::queueInputBuffers#java"); synchronized(mBufferLock) { if (mBufferMode == BUFFER_MODE_BLOCK) { throw new IncompatibleWithBlockModelException("queueInputBuffers() " @@ -3182,6 +3187,8 @@ final public class MediaCodec { } catch (CryptoException | IllegalStateException | IllegalArgumentException e) { revalidateByteBuffer(mCachedInputBuffers, index, true /* input */); throw e; + } finally { + Trace.traceEnd(Trace.TRACE_TAG_VIDEO); } } @@ -3442,6 +3449,7 @@ final public class MediaCodec { @NonNull CryptoInfo info, long presentationTimeUs, int flags) throws CryptoException { + Trace.traceBegin(Trace.TRACE_TAG_VIDEO, "MediaCodec::queueSecureInputBuffer#java"); if ((flags & BUFFER_FLAG_DECODE_ONLY) != 0 && (flags & BUFFER_FLAG_END_OF_STREAM) != 0) { throw new InvalidBufferFlagsException(EOS_AND_DECODE_ONLY_ERROR_MESSAGE); @@ -3461,6 +3469,8 @@ final public class MediaCodec { } catch (CryptoException | IllegalStateException e) { revalidateByteBuffer(mCachedInputBuffers, index, true /* input */); throw e; + } finally { + Trace.traceEnd(Trace.TRACE_TAG_VIDEO); } } @@ -3491,6 +3501,7 @@ final public class MediaCodec { int index, @NonNull ArrayDeque<BufferInfo> bufferInfos, @NonNull ArrayDeque<CryptoInfo> cryptoInfos) { + Trace.traceBegin(Trace.TRACE_TAG_VIDEO, "MediaCodec::queueSecureInputBuffers#java"); synchronized(mBufferLock) { if (mBufferMode == BUFFER_MODE_BLOCK) { throw new IncompatibleWithBlockModelException("queueSecureInputBuffers() " @@ -3506,6 +3517,8 @@ final public class MediaCodec { } catch (CryptoException | IllegalStateException | IllegalArgumentException e) { revalidateByteBuffer(mCachedInputBuffers, index, true /* input */); throw e; + } finally { + Trace.traceEnd(Trace.TRACE_TAG_VIDEO); } } @@ -3533,6 +3546,7 @@ final public class MediaCodec { * @throws MediaCodec.CodecException upon codec error. */ public final int dequeueInputBuffer(long timeoutUs) { + Trace.traceBegin(Trace.TRACE_TAG_VIDEO, "MediaCodec::dequeueInputBuffer#java"); synchronized (mBufferLock) { if (mBufferMode == BUFFER_MODE_BLOCK) { throw new IncompatibleWithBlockModelException("dequeueInputBuffer() " @@ -3546,6 +3560,7 @@ final public class MediaCodec { validateInputByteBufferLocked(mCachedInputBuffers, res); } } + Trace.traceEnd(Trace.TRACE_TAG_VIDEO); return res; } diff --git a/media/jni/android_media_MediaCodec.cpp b/media/jni/android_media_MediaCodec.cpp index 8419ce761a4a..3bc238a812d9 100644 --- a/media/jni/android_media_MediaCodec.cpp +++ b/media/jni/android_media_MediaCodec.cpp @@ -16,7 +16,9 @@ //#define LOG_NDEBUG 0 #define LOG_TAG "MediaCodec-JNI" +#define ATRACE_TAG ATRACE_TAG_VIDEO #include <utils/Log.h> +#include <utils/Trace.h> #include <type_traits> @@ -2106,7 +2108,7 @@ static void android_media_MediaCodec_queueInputBuffer( jlong timestampUs, jint flags) { ALOGV("android_media_MediaCodec_queueInputBuffer"); - + ScopedTrace trace(ATRACE_TAG, "MediaCodec::queueInputBuffer#jni"); sp<JMediaCodec> codec = getMediaCodec(env, thiz); if (codec == NULL || codec->initCheck() != OK) { @@ -2192,6 +2194,7 @@ static void android_media_MediaCodec_queueInputBuffers( jint index, jobjectArray objArray) { ALOGV("android_media_MediaCodec_queueInputBuffers"); + ScopedTrace trace(ATRACE_TAG, "MediaCodec::queueInputBuffers#jni"); sp<JMediaCodec> codec = getMediaCodec(env, thiz); if (codec == NULL || codec->initCheck() != OK || objArray == NULL) { throwExceptionAsNecessary(env, INVALID_OPERATION, codec); @@ -2431,6 +2434,7 @@ static void android_media_MediaCodec_queueSecureInputBuffer( jobject cryptoInfoObj, jlong timestampUs, jint flags) { + ScopedTrace trace(ATRACE_TAG, "MediaCodec::queueSecureInputBuffer#jni"); ALOGV("android_media_MediaCodec_queueSecureInputBuffer"); sp<JMediaCodec> codec = getMediaCodec(env, thiz); @@ -2641,6 +2645,7 @@ static void android_media_MediaCodec_queueSecureInputBuffers( jint index, jobjectArray bufferInfosObjs, jobjectArray cryptoInfoObjs) { + ScopedTrace trace(ATRACE_TAG, "MediaCodec::queueSecureInputBuffers#jni"); ALOGV("android_media_MediaCodec_queueSecureInputBuffers"); sp<JMediaCodec> codec = getMediaCodec(env, thiz); @@ -2685,6 +2690,7 @@ static void android_media_MediaCodec_queueSecureInputBuffers( } static jobject android_media_MediaCodec_mapHardwareBuffer(JNIEnv *env, jclass, jobject bufferObj) { + ScopedTrace trace(ATRACE_TAG, "MediaCodec::mapHardwareBuffer#jni"); ALOGV("android_media_MediaCodec_mapHardwareBuffer"); AHardwareBuffer *hardwareBuffer = android_hardware_HardwareBuffer_getNativeHardwareBuffer( env, bufferObj); @@ -3028,6 +3034,7 @@ static void extractBufferFromContext( static void android_media_MediaCodec_native_queueLinearBlock( JNIEnv *env, jobject thiz, jint index, jobject bufferObj, jobjectArray cryptoInfoArray, jobjectArray objArray, jobject keys, jobject values) { + ScopedTrace trace(ATRACE_TAG, "MediaCodec::queueLinearBlock#jni"); ALOGV("android_media_MediaCodec_native_queueLinearBlock"); sp<JMediaCodec> codec = getMediaCodec(env, thiz); @@ -3145,6 +3152,7 @@ static void android_media_MediaCodec_native_queueHardwareBuffer( JNIEnv *env, jobject thiz, jint index, jobject bufferObj, jlong presentationTimeUs, jint flags, jobject keys, jobject values) { ALOGV("android_media_MediaCodec_native_queueHardwareBuffer"); + ScopedTrace trace(ATRACE_TAG, "MediaCodec::queueHardwareBuffer#jni"); sp<JMediaCodec> codec = getMediaCodec(env, thiz); |