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

Commit f87ae406 authored by Ray Essick's avatar Ray Essick Committed by Gerrit Code Review
Browse files

Merge changes from topic "blockobenchmarks"

* changes:
  Benchmark: Add JNI test for Extractor and Muxer
  Benchmark: Add JNI test for Decoder and Encoder
parents ee902356 b1460583
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -29,6 +29,10 @@ android_test {
        "android.test.base",
    ],

    jni_libs: [
        "libmediabenchmark_jni",
    ],

    static_libs: [
        "libMediaBenchmark",
        "junit",
+13 −1
Original line number Diff line number Diff line
@@ -30,7 +30,7 @@ android {
    compileSdkVersion 29
    defaultConfig {
        applicationId "com.android.media.benchmark"
        minSdkVersion 21
        minSdkVersion 28
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
@@ -48,6 +48,18 @@ android {
            manifest.srcFile 'AndroidManifest.xml'
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    externalNativeBuild {
        cmake {
            path "src/main/cpp/CMakeLists.txt"
            version "3.10.2"
        }
    }
}

repositories {
+31 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import com.android.media.benchmark.R;
import com.android.media.benchmark.library.CodecUtils;
import com.android.media.benchmark.library.Decoder;
import com.android.media.benchmark.library.Extractor;
import com.android.media.benchmark.library.Native;

import org.junit.Test;
import org.junit.runner.RunWith;
@@ -44,6 +45,8 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;

import static org.junit.Assert.assertTrue;

@RunWith(Parameterized.class)
public class DecoderTest {
    private static final Context mContext =
@@ -194,4 +197,32 @@ public class DecoderTest {
                            + mInputFilePath);
        }
    }

    @Test
    public void testNativeDecoder() throws IOException {
        File inputFile = new File(mInputFilePath + mInputFile);
        assertTrue("Cannot find " + mInputFile + " in directory " + mInputFilePath,
                inputFile.exists());
        int status = -1;
        FileInputStream fileInput = new FileInputStream(inputFile);
        FileDescriptor fileDescriptor = fileInput.getFD();
        Extractor extractor = new Extractor();
        int trackCount = extractor.setUpExtractor(fileDescriptor);
        assertTrue("Extraction failed. No tracks for file: ", trackCount > 0);
        for (int currentTrack = 0; currentTrack < trackCount; currentTrack++) {
            extractor.selectExtractorTrack(currentTrack);
            MediaFormat format = extractor.getFormat(currentTrack);
            String mime = format.getString(MediaFormat.KEY_MIME);
            ArrayList<String> mediaCodecs = CodecUtils.selectCodecs(mime, false);
            for (String codecName : mediaCodecs) {
                Log.i("Test: %s\n", mInputFile);
                Native nativeDecoder = new Native();
                status = nativeDecoder.Decode(mInputFilePath, mInputFile, codecName, mAsyncMode);
                assertTrue(
                        codecName + " decoder returned error " + status + " for file:" + mInputFile,
                        status == 0);
            }
        }
        fileInput.close();
    }
}
+42 −4
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import com.android.media.benchmark.library.CodecUtils;
import com.android.media.benchmark.library.Decoder;
import com.android.media.benchmark.library.Encoder;
import com.android.media.benchmark.library.Extractor;
import com.android.media.benchmark.library.Native;

import org.junit.Test;
import org.junit.runner.RunWith;
@@ -43,6 +44,8 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;

import static org.junit.Assert.assertTrue;

@RunWith(Parameterized.class)
public class EncoderTest {
    private static final Context mContext =
@@ -85,19 +88,16 @@ public class EncoderTest {
    public void sampleEncoderTest() throws Exception {
        int status;
        int frameSize;

        //Parameters for video
        int width = 0;
        int height = 0;
        int profile = 0;
        int level = 0;
        int frameRate = 0;

        //Parameters for audio
        int bitRate = 0;
        int sampleRate = 0;
        int numChannels = 0;

        File inputFile = new File(mInputFilePath + mInputFile);
        if (inputFile.exists()) {
            FileInputStream fileInput = new FileInputStream(inputFile);
@@ -129,7 +129,6 @@ public class EncoderTest {
                                bufInfo.presentationTimeUs + " size = " + bufInfo.size);
                    }
                } while (sampleSize > 0);

                int tid = android.os.Process.myTid();
                File decodedFile = new File(mContext.getFilesDir() + "/decoder_" + tid + ".out");
                FileOutputStream decodeOutputStream = new FileOutputStream(decodedFile);
@@ -269,4 +268,43 @@ public class EncoderTest {
                    mInputFilePath);
        }
    }

    @Test
    public void testNativeEncoder() throws Exception {
        File inputFile = new File(mInputFilePath + mInputFile);
        assertTrue("Cannot find " + mInputFile + " in directory " + mInputFilePath,
                inputFile.exists());
        int status = -1;
        int tid = android.os.Process.myTid();
        final String mDecodedFile = mContext.getFilesDir() + "/decoder_" + tid + ".out";
        FileInputStream fileInput = new FileInputStream(inputFile);
        FileDescriptor fileDescriptor = fileInput.getFD();
        Extractor extractor = new Extractor();
        int trackCount = extractor.setUpExtractor(fileDescriptor);
        assertTrue("Extraction failed. No tracks for file: ", trackCount > 0);
        for (int currentTrack = 0; currentTrack < trackCount; currentTrack++) {
            extractor.selectExtractorTrack(currentTrack);
            MediaFormat format = extractor.getFormat(currentTrack);
            String mime = format.getString(MediaFormat.KEY_MIME);
            ArrayList<String> mediaCodecs = CodecUtils.selectCodecs(mime, true);
            // Encoding the decoder's output
            for (String codecName : mediaCodecs) {
                Native nativeEncoder = new Native();
                status = nativeEncoder.Encode(mInputFilePath, mInputFile, mDecodedFile, codecName);
                assertTrue(
                        codecName + " encoder returned error " + status + " for file:" + mInputFile,
                        status == 0);
            }
        }
        File decodedFile = new File(mDecodedFile);
        // Cleanup temporary input file
        if (decodedFile.exists()) {
            if (decodedFile.delete()) {
                Log.i(TAG, "Successfully deleted - " + mDecodedFile);
            } else {
                Log.e(TAG, "Unable to delete - " + mDecodedFile);
            }
        }
        fileInput.close();
    }
}
+22 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.media.benchmark.tests;

import com.android.media.benchmark.R;
import com.android.media.benchmark.library.Extractor;
import com.android.media.benchmark.library.Native;

import android.content.Context;
import android.util.Log;
@@ -89,4 +90,25 @@ public class ExtractorTest {
        }
        assertThat(status, is(equalTo(0)));
    }

    @Test
    public void sampleExtractNativeTest() throws IOException {
        Native nativeExtractor = new Native();
        int status = -1;
        File inputFile = new File(mInputFilePath + mInputFileName);
        if (inputFile.exists()) {
            FileInputStream fileInput = new FileInputStream(inputFile);
            status = nativeExtractor.Extract(mInputFilePath, mInputFileName);
            fileInput.close();
            if (status != 0) {
                Log.e(TAG, "Extraction for " + mInputFileName + " failed.");
            } else {
                Log.i(TAG, "Extracted " + mInputFileName + " successfully.");
            }
        } else {
            Log.e(TAG, "Cannot find " + inputFile + " in directory " +
                    mInputFilePath);
        }
        assertThat(status, is(equalTo(0)));
    }
}
Loading