summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/CameraSource.cpp
diff options
context:
space:
mode:
authorJames Dong <jdong@google.com>2010-12-05 14:25:34 -0800
committerJames Dong <jdong@google.com>2010-12-05 16:08:30 -0800
commitea7b485595f8cec6a66668b5c54c8f297d843f77 (patch)
tree05551d3bd3db0b0b971a4dfc5d345ea6e2381267 /media/libstagefright/CameraSource.cpp
parent16afe2fb439cab6125bb46a07a8078d4ce1c1ea5 (diff)
downloadframeworks_av-ea7b485595f8cec6a66668b5c54c8f297d843f77.zip
frameworks_av-ea7b485595f8cec6a66668b5c54c8f297d843f77.tar.gz
frameworks_av-ea7b485595f8cec6a66668b5c54c8f297d843f77.tar.bz2
Remove check if the target video resolution is not supported by CameraSource
and clean up Camera is CameraSource could not created. bug - 3254411 Change-Id: I43497c450e7007de5ce027e2912b1421119e8887
Diffstat (limited to 'media/libstagefright/CameraSource.cpp')
-rw-r--r--media/libstagefright/CameraSource.cpp33
1 files changed, 16 insertions, 17 deletions
diff --git a/media/libstagefright/CameraSource.cpp b/media/libstagefright/CameraSource.cpp
index d9ff723..ed9e865 100644
--- a/media/libstagefright/CameraSource.cpp
+++ b/media/libstagefright/CameraSource.cpp
@@ -130,13 +130,6 @@ CameraSource *CameraSource::CreateFromCamera(
CameraSource *source = new CameraSource(camera, cameraId,
videoSize, frameRate, surface,
storeMetaDataInVideoBuffers);
-
- if (source != NULL) {
- if (source->initCheck() != OK) {
- delete source;
- return NULL;
- }
- }
return source;
}
@@ -293,6 +286,7 @@ status_t CameraSource::configureCamera(
if (width != -1 && height != -1) {
if (!isVideoSizeSupported(width, height, sizes)) {
LOGE("Video dimension (%dx%d) is unsupported", width, height);
+ releaseCamera();
return BAD_VALUE;
}
if (isSetVideoSizeSupportedByCamera) {
@@ -306,6 +300,7 @@ status_t CameraSource::configureCamera(
// If one and only one of the width and height is -1
// we reject such a request.
LOGE("Requested video size (%dx%d) is not supported", width, height);
+ releaseCamera();
return BAD_VALUE;
} else { // width == -1 && height == -1
// Do not configure the camera.
@@ -323,6 +318,7 @@ status_t CameraSource::configureCamera(
if (strstr(supportedFrameRates, buf) == NULL) {
LOGE("Requested frame rate (%d) is not supported: %s",
frameRate, supportedFrameRates);
+ releaseCamera();
return BAD_VALUE;
}
@@ -561,6 +557,18 @@ void CameraSource::stopCameraRecording() {
mCamera->stopRecording();
}
+void CameraSource::releaseCamera() {
+ LOGV("releaseCamera");
+ if ((mCameraFlags & FLAGS_HOT_CAMERA) == 0) {
+ LOGV("Camera was cold when we started, stopping preview");
+ mCamera->stopPreview();
+ }
+ mCamera->unlock();
+ mCamera.clear();
+ mCamera = 0;
+ mCameraFlags = 0;
+}
+
status_t CameraSource::stop() {
LOGV("stop");
Mutex::Autolock autoLock(mLock);
@@ -575,16 +583,7 @@ status_t CameraSource::stop() {
mFramesBeingEncoded.size());
mFrameCompleteCondition.wait(mLock);
}
-
- LOGV("Disconnect camera");
- if ((mCameraFlags & FLAGS_HOT_CAMERA) == 0) {
- LOGV("Camera was cold when we started, stopping preview");
- mCamera->stopPreview();
- }
- mCamera->unlock();
- mCamera.clear();
- mCamera = 0;
- mCameraFlags = 0;
+ releaseCamera();
IPCThreadState::self()->restoreCallingIdentity(token);
if (mCollectStats) {