diff options
Diffstat (limited to 'media/tests')
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; }; |