diff options
-rw-r--r-- | camera/libcameraservice/CameraService.cpp | 36 | ||||
-rw-r--r-- | camera/libcameraservice/CameraService.h | 2 | ||||
-rw-r--r-- | include/camera/CameraParameters.h | 44 | ||||
-rw-r--r-- | include/media/AudioRecord.h | 6 | ||||
-rw-r--r-- | libs/camera/CameraParameters.cpp | 39 |
5 files changed, 109 insertions, 18 deletions
diff --git a/camera/libcameraservice/CameraService.cpp b/camera/libcameraservice/CameraService.cpp index 12f6c08..c475414 100644 --- a/camera/libcameraservice/CameraService.cpp +++ b/camera/libcameraservice/CameraService.cpp @@ -911,32 +911,39 @@ status_t CameraService::Client::takePicture() // snapshot taken void CameraService::Client::handleShutter( - image_rect_type *size // The width and height of yuv picture for + image_rect_type *size, // The width and height of yuv picture for // registerBuffer. If this is NULL, use the picture // size from parameters. + bool playShutterSoundOnly ) { // Play shutter sound. - if (mMediaPlayerClick.get() != NULL) { - // do not play shutter sound if stream volume is 0 - // (typically because ringer mode is silent). - int index; - AudioSystem::getStreamVolumeIndex(AudioSystem::ENFORCED_AUDIBLE, &index); - if (index != 0) { - mMediaPlayerClick->seekTo(0); - mMediaPlayerClick->start(); + + if(playShutterSoundOnly) { + + if (mMediaPlayerClick.get() != NULL) { + // do not play shutter sound if stream volume is 0 + // (typically because ringer mode is silent). + int index; + AudioSystem::getStreamVolumeIndex(AudioSystem::ENFORCED_AUDIBLE, &index); + if (index != 0) { + mMediaPlayerClick->seekTo(0); + mMediaPlayerClick->start(); + } } + sp<ICameraClient> c = mCameraClient; + if (c != NULL) { + c->notifyCallback(CAMERA_MSG_SHUTTER, 0, 0); + } + return ; } + // Screen goes black after the buffer is unregistered. if (mSurface != 0 && !mUseOverlay) { mSurface->unregisterBuffers(); } - sp<ICameraClient> c = mCameraClient; - if (c != NULL) { - c->notifyCallback(CAMERA_MSG_SHUTTER, 0, 0); - } mHardware->disableMsgType(CAMERA_MSG_SHUTTER); // It takes some time before yuvPicture callback to be called. @@ -953,6 +960,7 @@ void CameraService::Client::handleShutter( h &= ~1; LOGV("Snapshot image width=%d, height=%d", w, h); } + // FIXME: don't use hardcoded format constants here ISurface::BufferHeap buffers(w, h, w, h, HAL_PIXEL_FORMAT_YCrCb_420_SP, mOrientation, 0, @@ -1109,7 +1117,7 @@ void CameraService::Client::notifyCallback(int32_t msgType, int32_t ext1, int32_ switch (msgType) { case CAMERA_MSG_SHUTTER: // ext1 is the dimension of the yuv picture. - client->handleShutter((image_rect_type *)ext1); + client->handleShutter((image_rect_type *)ext1, (bool)ext2); break; default: sp<ICameraClient> c = client->mCameraClient; diff --git a/camera/libcameraservice/CameraService.h b/camera/libcameraservice/CameraService.h index bc49b1d..81c10b0 100644 --- a/camera/libcameraservice/CameraService.h +++ b/camera/libcameraservice/CameraService.h @@ -145,7 +145,7 @@ private: static sp<Client> getClientFromCookie(void* user); void handlePreviewData(const sp<IMemory>&); - void handleShutter(image_rect_type *image); + void handleShutter(image_rect_type *image, bool playShutterSoundOnly); void handlePostview(const sp<IMemory>&); void handleRawPicture(const sp<IMemory>&); void handleCompressedPicture(const sp<IMemory>&); diff --git a/include/camera/CameraParameters.h b/include/camera/CameraParameters.h index 68fe5e7..dde56a9 100644 --- a/include/camera/CameraParameters.h +++ b/include/camera/CameraParameters.h @@ -104,6 +104,10 @@ public: // The height (in pixels) of EXIF thumbnail in Jpeg picture. // Example value: "384". Read/write. static const char KEY_JPEG_THUMBNAIL_HEIGHT[]; + + //++TODO is the following parameter is needed when jpeg thumbnail is available + static const char KEY_SUPPORTED_THUMBNAIL_SIZES[]; + // Supported EXIF thumbnail sizes (width x height). 0x0 means not thumbnail // in EXIF. // Example value: "512x384,320x240,0x0". Read only. @@ -137,6 +141,33 @@ public: // GPS altitude. This will be stored in JPEG EXIF header. // Example value: "21.0". Write only. static const char KEY_GPS_ALTITUDE[]; + + static const char KEY_GPS_LATITUDE_REF[]; + static const char KEY_GPS_LONGITUDE_REF[]; + static const char KEY_GPS_ALTITUDE_REF[]; + static const char KEY_GPS_STATUS[]; + static const char KEY_EXIF_DATETIME[]; + + static const char KEY_AUTO_EXPOSURE[]; + static const char KEY_SUPPORTED_AUTO_EXPOSURE[]; + static const char KEY_ISO_MODE[]; + static const char KEY_SUPPORTED_ISO_MODES[]; + static const char KEY_LENSSHADE[] ; + static const char KEY_SUPPORTED_LENSSHADE_MODES[] ; + static const char KEY_SHARPNESS[]; + static const char KEY_MAX_SHARPNESS[]; + static const char KEY_CONTRAST[]; + static const char KEY_MAX_CONTRAST[]; + static const char KEY_SATURATION[]; + static const char KEY_MAX_SATURATION[]; + + // Values for auto exposure settings. + static const char AUTO_EXPOSURE_FRAME_AVG[]; + static const char AUTO_EXPOSURE_CENTER_WEIGHTED[]; + static const char AUTO_EXPOSURE_SPOT_METERING[]; + + + // GPS timestamp (UTC in seconds since January 1, 1970). This should be // stored in JPEG EXIF header. // Example value: "1251192757". Write only. @@ -301,6 +332,7 @@ public: static const char PIXEL_FORMAT_YUV422I[]; // YUY2 static const char PIXEL_FORMAT_RGB565[]; static const char PIXEL_FORMAT_JPEG[]; + static const char PIXEL_FORMAT_RAW[]; // Values for focus mode settings. // Auto-focus mode. @@ -308,6 +340,7 @@ public: // Focus is set at infinity. Applications should not call // CameraHardwareInterface.autoFocus in this mode. static const char FOCUS_MODE_INFINITY[]; + static const char FOCUS_MODE_NORMAL[]; static const char FOCUS_MODE_MACRO[]; // Focus is fixed. The camera is always in this mode if the focus is not // adjustable. If the camera has auto-focus, this mode can fix the @@ -319,6 +352,16 @@ public: // CameraHardwareInterface.autoFocus in this mode. static const char FOCUS_MODE_EDOF[]; + static const char ISO_AUTO[]; + static const char ISO_HJR[] ; + static const char ISO_100[]; + static const char ISO_200[] ; + static const char ISO_400[]; + static const char ISO_800[]; + static const char ISO_1600[]; + // Values for Lens Shading + static const char LENSSHADE_ENABLE[] ; + static const char LENSSHADE_DISABLE[] ; private: DefaultKeyedVector<String8,String8> mMap; }; @@ -326,3 +369,4 @@ private: }; // namespace android #endif + diff --git a/include/media/AudioRecord.h b/include/media/AudioRecord.h index 92bc126..18347d5 100644 --- a/include/media/AudioRecord.h +++ b/include/media/AudioRecord.h @@ -129,9 +129,9 @@ public: */ enum record_flags { - RECORD_AGC_ENABLE = AudioSystem::AGC_ENABLE, - RECORD_NS_ENABLE = AudioSystem::NS_ENABLE, - RECORD_IIR_ENABLE = AudioSystem::TX_IIR_ENABLE + RECORD_AGC_ENABLE = 0x0001, // AudioSystem::AGC_ENABLE, + RECORD_NS_ENABLE = 0x0002, // AudioSystem::NS_ENABLE, + RECORD_IIR_ENABLE = 0x0004, // AudioSystem::TX_IIR_ENABLE }; AudioRecord(int inputSource, diff --git a/libs/camera/CameraParameters.cpp b/libs/camera/CameraParameters.cpp index 7a87b5f..ab14156 100644 --- a/libs/camera/CameraParameters.cpp +++ b/libs/camera/CameraParameters.cpp @@ -139,6 +139,45 @@ const char CameraParameters::FOCUS_MODE_FIXED[] = "fixed"; const char CameraParameters::FOCUS_MODE_EDOF[] = "edof"; +const char CameraParameters::KEY_SUPPORTED_THUMBNAIL_SIZES[] = "jpeg-thumbnail-size-values"; +const char CameraParameters::KEY_GPS_LATITUDE_REF[] = "gps-latitude-ref"; +const char CameraParameters::KEY_GPS_LONGITUDE_REF[] = "gps-longitude-ref"; +const char CameraParameters::KEY_GPS_ALTITUDE_REF[] = "gps-altitude-ref"; +const char CameraParameters::KEY_GPS_STATUS[] = "gps-status"; + +const char CameraParameters::KEY_EXIF_DATETIME[] = "exif-datetime"; +const char CameraParameters::KEY_AUTO_EXPOSURE[] = "auto-exposure"; +const char CameraParameters::KEY_SUPPORTED_AUTO_EXPOSURE[] = "auto-exposure-values"; + +const char CameraParameters::KEY_ISO_MODE[] = "iso"; +const char CameraParameters::KEY_SUPPORTED_ISO_MODES[] = "iso-values"; +const char CameraParameters::KEY_LENSSHADE[] = "lensshade"; +const char CameraParameters::KEY_SUPPORTED_LENSSHADE_MODES[] = "lensshade-values"; +const char CameraParameters::KEY_SHARPNESS[] = "sharpness"; +const char CameraParameters::KEY_MAX_SHARPNESS[] = "max-sharpness"; +const char CameraParameters::KEY_CONTRAST[] = "contrast"; +const char CameraParameters::KEY_MAX_CONTRAST[] = "max-contrast"; +const char CameraParameters::KEY_SATURATION[] = "saturation"; +const char CameraParameters::KEY_MAX_SATURATION[] = "max-saturation"; + + +// Values for auto exposure settings. +const char CameraParameters::AUTO_EXPOSURE_FRAME_AVG[] = "frame-average"; +const char CameraParameters::AUTO_EXPOSURE_CENTER_WEIGHTED[] = "center-weighted"; +const char CameraParameters::AUTO_EXPOSURE_SPOT_METERING[] = "spot-metering"; + + // Values for ISO Settings +const char CameraParameters::ISO_AUTO[] = "auto"; +const char CameraParameters::ISO_HJR[] = "ISO_HJR"; +const char CameraParameters::ISO_100[] = "ISO100"; +const char CameraParameters::ISO_200[] = "ISO200"; +const char CameraParameters::ISO_400[] = "ISO400"; +const char CameraParameters::ISO_800[] = "ISO800"; +const char CameraParameters::ISO_1600[] = "ISO1600"; + + //Values for Lens Shading +const char CameraParameters::LENSSHADE_ENABLE[] = "enable"; +const char CameraParameters::LENSSHADE_DISABLE[] = "disable"; static const char* portrait = "portrait"; static const char* landscape = "landscape"; |