Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f66521bb authored by Dichen Zhang's avatar Dichen Zhang
Browse files

frameSize using public API

Bug: 112549970
Test: MediaPlayer2Test
Change-Id: Idde6460d18cfdd59de2cf47531ebd6e0004a5e62
parent d0f1bffe
Loading
Loading
Loading
Loading
+7 −22
Original line number Diff line number Diff line
@@ -439,31 +439,16 @@ audio_format_t JAudioTrack::format() {

size_t JAudioTrack::frameSize() {
    JNIEnv *env = JavaVMHelper::getJNIEnv();

    // TODO: Calculated here implementing the logic in AudioTrack.java
    // wait for AudioTrack.java exposing this parameter (i.e. getFrameSizeInBtytes())
    jmethodID jGetAudioFormat = env->GetMethodID(mAudioTrackCls, "getAudioFormat", "()I");
    int javaFormat = env->CallIntMethod(mAudioTrackObj, jGetAudioFormat);
    jmethodID jGetFormat = env->GetMethodID(mAudioTrackCls,
            "getFormat", "()Landroid/media/AudioFormat;");
    jobject jAudioFormatObj = env->CallObjectMethod(mAudioTrackObj, jGetFormat);

    jclass jAudioFormatCls = env->FindClass("android/media/AudioFormat");
    jmethodID jIsEncodingLinearFrames = env->GetStaticMethodID(
            jAudioFormatCls, "isEncodingLinearFrames", "(I)Z");
    jboolean javaIsEncodingLinearFrames = env->CallStaticBooleanMethod(
            jAudioFormatCls, jIsEncodingLinearFrames, javaFormat);

    if (javaIsEncodingLinearFrames == false) {
        return 1;
    }

    jmethodID jGetBytesPerSample = env->GetStaticMethodID(jAudioFormatCls,
            "getBytesPerSample", "(I)I");
    int javaBytesPerSample = env->CallStaticIntMethod(jAudioFormatCls,
            jGetBytesPerSample, javaFormat);

    jmethodID jGetChannelCount = env->GetMethodID(mAudioTrackCls, "getChannelCount", "()I");
    int javaChannelCount = env->CallIntMethod(mAudioTrackObj, jGetChannelCount);
    jmethodID jGetFrameSizeInBytes = env->GetMethodID(
            jAudioFormatCls, "getFrameSizeInBytes", "()I");
    jint javaFrameSizeInBytes = env->CallIntMethod(jAudioFormatObj, jGetFrameSizeInBytes);

    return javaChannelCount * javaBytesPerSample;
    return (size_t)javaFrameSizeInBytes;
}

status_t JAudioTrack::dump(int fd, const Vector<String16>& args __unused) const