summaryrefslogtreecommitdiffstats
path: root/media/tests
diff options
context:
space:
mode:
Diffstat (limited to 'media/tests')
-rw-r--r--media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraBinderTest.java92
-rw-r--r--media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraBinderTestUtils.java1
-rw-r--r--media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/CameraOpenTest.java53
-rw-r--r--media/tests/ScoAudioTest/res/layout/scoaudiotest.xml5
-rw-r--r--media/tests/ScoAudioTest/res/values/strings.xml2
-rw-r--r--media/tests/ScoAudioTest/src/com/android/scoaudiotest/ScoAudioTest.java15
-rw-r--r--media/tests/omxjpegdecoder/omx_jpeg_decoder.cpp16
-rw-r--r--media/tests/omxjpegdecoder/omx_jpeg_decoder.h4
8 files changed, 170 insertions, 18 deletions
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraBinderTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraBinderTest.java
index 8a7e642..b6bb578 100644
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraBinderTest.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraBinderTest.java
@@ -22,7 +22,6 @@ import android.hardware.ICameraClient;
import android.hardware.ICameraServiceListener;
import android.hardware.IProCameraCallbacks;
import android.hardware.IProCameraUser;
-import android.hardware.camera2.CameraMetadata;
import android.hardware.camera2.ICameraDeviceCallbacks;
import android.hardware.camera2.ICameraDeviceUser;
import android.hardware.camera2.impl.CameraMetadataNative;
@@ -51,8 +50,14 @@ import android.util.Log;
* </pre>
*/
public class CameraBinderTest extends AndroidTestCase {
+ private static final int MAX_PARAMETERS_LENGTH = 100;
+
static String TAG = "CameraBinderTest";
+ // From ICameraService.h
+ private static final int API_VERSION_1 = 1;
+ private static final int API_VERSION_2 = 2;
+
protected CameraBinderTestUtils mUtils;
public CameraBinderTest() {
@@ -95,6 +100,56 @@ public class CameraBinderTest extends AndroidTestCase {
}
}
+ @SmallTest
+ public void testGetLegacyParameters() throws Exception {
+ for (int cameraId = 0; cameraId < mUtils.getGuessedNumCameras(); ++cameraId) {
+
+ String[] parameters = new String[1];
+ assertEquals("Camera service returned parameters for camera " + cameraId,
+ CameraBinderTestUtils.NO_ERROR,
+ mUtils.getCameraService().getLegacyParameters(cameraId, /*out*/parameters));
+ assertNotNull(parameters[0]);
+ assertTrue("Parameters should have at least one character in it",
+ parameters[0].length() > 0);
+
+ int end = parameters[0].length();
+ if (end > MAX_PARAMETERS_LENGTH) {
+ end = MAX_PARAMETERS_LENGTH;
+ }
+
+ Log.v(TAG, "Camera " + cameraId + " parameters: " + parameters[0].substring(0, end));
+ }
+ }
+
+ /** The camera2 api is only supported on HAL3.2+ devices */
+ @SmallTest
+ public void testSupportsCamera2Api() throws Exception {
+ for (int cameraId = 0; cameraId < mUtils.getGuessedNumCameras(); ++cameraId) {
+
+ int res = mUtils.getCameraService().supportsCameraApi(cameraId, API_VERSION_2);
+
+ if (res != CameraBinderTestUtils.NO_ERROR && res != CameraBinderTestUtils.EOPNOTSUPP) {
+ fail("Camera service returned bad value when queried if it supports camera2 api: "
+ + res + " for camera ID " + cameraId);
+ }
+
+ boolean supports = res == CameraBinderTestUtils.NO_ERROR;
+ Log.v(TAG, "Camera " + cameraId + " supports api2: " + supports);
+ }
+ }
+
+ /** The camera1 api is supported on *all* devices regardless of HAL version */
+ @SmallTest
+ public void testSupportsCamera1Api() throws Exception {
+ for (int cameraId = 0; cameraId < mUtils.getGuessedNumCameras(); ++cameraId) {
+
+ int res = mUtils.getCameraService().supportsCameraApi(cameraId, API_VERSION_1);
+ assertEquals(
+ "Camera service returned bad value when queried if it supports camera1 api: "
+ + res + " for camera ID " + cameraId, CameraBinderTestUtils.NO_ERROR, res);
+ }
+ }
+
static abstract class DummyBase extends Binder implements android.os.IInterface {
@Override
public IBinder asBinder() {
@@ -150,6 +205,37 @@ public class CameraBinderTest extends AndroidTestCase {
}
}
+ @SmallTest
+ public void testConnectLegacy() throws Exception {
+ final int CAMERA_HAL_API_VERSION_1_0 = 0x100;
+ for (int cameraId = 0; cameraId < mUtils.getGuessedNumCameras(); ++cameraId) {
+ ICamera cameraUser = null;
+ ICameraClient dummyCallbacks = new DummyCameraClient();
+
+ String clientPackageName = getContext().getPackageName();
+
+ BinderHolder holder = new BinderHolder();
+
+ try {
+ CameraBinderDecorator.newInstance(mUtils.getCameraService())
+ .connectLegacy(dummyCallbacks, cameraId, CAMERA_HAL_API_VERSION_1_0,
+ clientPackageName,
+ CameraBinderTestUtils.USE_CALLING_UID, holder);
+ cameraUser = ICamera.Stub.asInterface(holder.getBinder());
+ assertNotNull(String.format("Camera %s was null", cameraId), cameraUser);
+
+ Log.v(TAG, String.format("Camera %s connected as HAL1 legacy device", cameraId));
+ } catch (RuntimeException e) {
+ // Not all camera device support openLegacy.
+ Log.i(TAG, "Unable to open camera as HAL1 legacy camera device " + e);
+ } finally {
+ if (cameraUser != null) {
+ cameraUser.disconnect();
+ }
+ }
+ }
+ }
+
static class DummyCameraDeviceCallbacks extends ICameraDeviceCallbacks.Stub {
/*
@@ -158,6 +244,7 @@ public class CameraBinderTest extends AndroidTestCase {
* android.hardware.camera2.ICameraDeviceCallbacks#onCameraError(int,
* android.hardware.camera2.CaptureResultExtras)
*/
+ @Override
public void onCameraError(int errorCode, CaptureResultExtras resultExtras)
throws RemoteException {
// TODO Auto-generated method stub
@@ -170,6 +257,7 @@ public class CameraBinderTest extends AndroidTestCase {
* android.hardware.camera2.ICameraDeviceCallbacks#onCaptureStarted(
* android.hardware.camera2.CaptureResultExtras, long)
*/
+ @Override
public void onCaptureStarted(CaptureResultExtras resultExtras, long timestamp)
throws RemoteException {
// TODO Auto-generated method stub
@@ -183,6 +271,7 @@ public class CameraBinderTest extends AndroidTestCase {
* android.hardware.camera2.impl.CameraMetadataNative,
* android.hardware.camera2.CaptureResultExtras)
*/
+ @Override
public void onResultReceived(CameraMetadataNative result, CaptureResultExtras resultExtras)
throws RemoteException {
// TODO Auto-generated method stub
@@ -193,6 +282,7 @@ public class CameraBinderTest extends AndroidTestCase {
* (non-Javadoc)
* @see android.hardware.camera2.ICameraDeviceCallbacks#onCameraIdle()
*/
+ @Override
public void onCameraIdle() throws RemoteException {
// TODO Auto-generated method stub
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraBinderTestUtils.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraBinderTestUtils.java
index 1be2a62..6be538a 100644
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraBinderTestUtils.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraBinderTestUtils.java
@@ -22,6 +22,7 @@ public class CameraBinderTestUtils {
protected static final int INVALID_OPERATION = -38;
protected static final int ALREADY_EXISTS = -17;
public static final int NO_ERROR = 0;
+ public static final int EOPNOTSUPP = -95;
private final Context mContext;
public CameraBinderTestUtils(Context context) {
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/CameraOpenTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/CameraOpenTest.java
new file mode 100644
index 0000000..14bbe44
--- /dev/null
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/CameraOpenTest.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.mediaframeworktest.unit;
+
+import android.hardware.Camera;
+import android.test.suitebuilder.annotation.SmallTest;
+import android.util.Log;
+
+/**
+ * <pre>
+ * adb shell am instrument \
+ * -e class 'com.android.mediaframeworktest.unit.CameraOpenTest' \
+ * -w com.android.mediaframeworktest/.MediaFrameworkUnitTestRunner
+ * </pre>
+ */
+public class CameraOpenTest extends junit.framework.TestCase {
+ private static String TAG = "CameraOpenTest";
+
+ private Camera mCamera;
+
+ /**
+ * Test @hide android.hardware.Camera#openLegacy API that cannot be tested in CTS.
+ */
+ @SmallTest
+ public void testOpenLegacy() {
+ int nCameras = Camera.getNumberOfCameras();
+ for (int id = 0; id < nCameras; id++) {
+ try {
+ mCamera.openLegacy(id, Camera.CAMERA_HAL_API_VERSION_1_0);
+ } catch (RuntimeException e) {
+ Log.i(TAG, "Unable to open camera as HAL1 legacy camera device " + e);
+ } finally {
+ if (mCamera != null) {
+ mCamera.release();
+ }
+ }
+ }
+ }
+}
diff --git a/media/tests/ScoAudioTest/res/layout/scoaudiotest.xml b/media/tests/ScoAudioTest/res/layout/scoaudiotest.xml
index b769a0c..acb7767 100644
--- a/media/tests/ScoAudioTest/res/layout/scoaudiotest.xml
+++ b/media/tests/ScoAudioTest/res/layout/scoaudiotest.xml
@@ -125,6 +125,11 @@
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/audiomanagertwo" />
+ <CheckBox
+ android:id="@+id/useVirtualCallCheckBox"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/useVirtualCallCheckText" />
</LinearLayout>
diff --git a/media/tests/ScoAudioTest/res/values/strings.xml b/media/tests/ScoAudioTest/res/values/strings.xml
index c3ff6d5..b0284e2 100644
--- a/media/tests/ScoAudioTest/res/values/strings.xml
+++ b/media/tests/ScoAudioTest/res/values/strings.xml
@@ -10,5 +10,5 @@
<string name="tts_speak">Speak TTS</string>
<string name="tts_to_file">TTS to file</string>
<string name="audiomanagertwo">Use different AudioManager for starting SCO</string>
-
+ <string name="useVirtualCallCheckText">Use Virtual Call</string>
</resources>
diff --git a/media/tests/ScoAudioTest/src/com/android/scoaudiotest/ScoAudioTest.java b/media/tests/ScoAudioTest/src/com/android/scoaudiotest/ScoAudioTest.java
index 0304640..7e21876 100644
--- a/media/tests/ScoAudioTest/src/com/android/scoaudiotest/ScoAudioTest.java
+++ b/media/tests/ScoAudioTest/src/com/android/scoaudiotest/ScoAudioTest.java
@@ -207,16 +207,25 @@ public class ScoAudioTest extends Activity {
if (mForceScoOn != isChecked) {
mForceScoOn = isChecked;
AudioManager mngr = mAudioManager;
+ boolean useVirtualCall = false;
CheckBox box = (CheckBox) findViewById(R.id.useSecondAudioManager);
if (box.isChecked()) {
Log.i(TAG, "Using 2nd audio manager");
mngr = mAudioManager2;
}
+ box = (CheckBox) findViewById(R.id.useVirtualCallCheckBox);
+ useVirtualCall = box.isChecked();
if (mForceScoOn) {
- Log.e(TAG, "startBluetoothSco() IN");
- mngr.startBluetoothSco();
- Log.e(TAG, "startBluetoothSco() OUT");
+ if (useVirtualCall) {
+ Log.e(TAG, "startBluetoothScoVirtualCall() IN");
+ mngr.startBluetoothScoVirtualCall();
+ Log.e(TAG, "startBluetoothScoVirtualCall() OUT");
+ } else {
+ Log.e(TAG, "startBluetoothSco() IN");
+ mngr.startBluetoothSco();
+ Log.e(TAG, "startBluetoothSco() OUT");
+ }
} else {
Log.e(TAG, "stopBluetoothSco() IN");
mngr.stopBluetoothSco();
diff --git a/media/tests/omxjpegdecoder/omx_jpeg_decoder.cpp b/media/tests/omxjpegdecoder/omx_jpeg_decoder.cpp
index 3dd988e..229bfdb 100644
--- a/media/tests/omxjpegdecoder/omx_jpeg_decoder.cpp
+++ b/media/tests/omxjpegdecoder/omx_jpeg_decoder.cpp
@@ -104,7 +104,9 @@ bool OmxJpegImageDecoder::onDecode(SkStream* stream,
int height;
meta->findInt32(kKeyWidth, &width);
meta->findInt32(kKeyHeight, &height);
- configBitmapSize(bm, getPrefConfig(k32Bit_SrcDepth, false), width, height);
+ configBitmapSize(
+ bm, getPrefColorType(k32Bit_SrcDepth, false),
+ width, height);
// mode == DecodeBounds
if (mode == SkImageDecoder::kDecodeBounds_Mode) {
@@ -167,15 +169,9 @@ bool OmxJpegImageDecoder::decodeSource(sp<MediaSource> decoder,
return true;
}
-void OmxJpegImageDecoder::configBitmapSize(SkBitmap* bm, SkBitmap::Config pref,
+void OmxJpegImageDecoder::configBitmapSize(SkBitmap* bm, SkColorType pref,
int width, int height) {
- bm->setConfig(getColorSpaceConfig(pref), width, height, 0, kOpaque_SkAlphaType);
-}
-
-SkBitmap::Config OmxJpegImageDecoder::getColorSpaceConfig(
- SkBitmap::Config pref) {
-
- // Set the color space to ARGB_8888 for now
+ // Set the color space to ARGB_8888 for now (ignoring pref)
// because of limitation in hardware support.
- return SkBitmap::kARGB_8888_Config;
+ bm->setInfo(SkImageInfo::MakeN32(width, height, kOpaque_SkAlphaType));
}
diff --git a/media/tests/omxjpegdecoder/omx_jpeg_decoder.h b/media/tests/omxjpegdecoder/omx_jpeg_decoder.h
index e431e72..e487245 100644
--- a/media/tests/omxjpegdecoder/omx_jpeg_decoder.h
+++ b/media/tests/omxjpegdecoder/omx_jpeg_decoder.h
@@ -49,9 +49,7 @@ private:
sp<MediaSource> getDecoder(OMXClient* client, const sp<MediaSource>& source);
bool decodeSource(sp<MediaSource> decoder, const sp<MediaSource>& source,
SkBitmap* bm);
- void configBitmapSize(SkBitmap* bm, SkBitmap::Config pref, int width,
- int height);
- SkBitmap::Config getColorSpaceConfig(SkBitmap::Config pref);
+ void configBitmapSize(SkBitmap* bm, SkColorType, int width, int height);
OMXClient mClient;
};