Add camera parameters for htc evo 3D. (1/2)
diff --git a/camera/CameraParameters.cpp b/camera/CameraParameters.cpp
index 77e6bec..49af680 100644
--- a/camera/CameraParameters.cpp
+++ b/camera/CameraParameters.cpp
@@ -67,6 +67,7 @@
const char CameraParameters::KEY_PICTURE_SIZE[] = "picture-size";
const char CameraParameters::KEY_SUPPORTED_PICTURE_SIZES[] = "picture-size-values";
const char CameraParameters::KEY_PICTURE_FORMAT[] = "picture-format";
+const char CameraParameters::KEY_SUPPORTED_3D_FILE_FORMAT[] = "3d-file-format";
const char CameraParameters::KEY_SUPPORTED_PICTURE_FORMATS[] = "picture-format-values";
const char CameraParameters::KEY_JPEG_THUMBNAIL_WIDTH[] = "jpeg-thumbnail-width";
const char CameraParameters::KEY_JPEG_THUMBNAIL_HEIGHT[] = "jpeg-thumbnail-height";
@@ -364,6 +365,9 @@
const char CameraParameters::FACE_DETECTION_OFF[] = "off";
const char CameraParameters::FACE_DETECTION_ON[] = "on";
+const char CameraParameters::FILE_FORMAT_MPO[] = "mpo";
+const char CameraParameters::FILE_FORMAT_JPS[] = "jps";
+
// Values for MCE settings.
const char CameraParameters::MCE_ENABLE[] = "enable";
const char CameraParameters::MCE_DISABLE[] = "disable";
@@ -741,6 +745,11 @@
parseSizesList(pictureSizesStr, sizes);
}
+void CameraParameters::set3DFileFormat(const char *format)
+{
+ set(KEY_SUPPORTED_3D_FILE_FORMAT, format);
+}
+
void CameraParameters::setPictureFormat(const char *format)
{
set(KEY_PICTURE_FORMAT, format);
diff --git a/include/camera/CameraParameters.h b/include/camera/CameraParameters.h
index c39f926..58aa855 100644
--- a/include/camera/CameraParameters.h
+++ b/include/camera/CameraParameters.h
@@ -114,6 +114,7 @@
void setPictureSize(int width, int height);
void getPictureSize(int *width, int *height) const;
void getSupportedPictureSizes(Vector<Size> &sizes) const;
+ void set3DFileFormat(const char* buffer);
void setPictureFormat(const char *format);
const char *getPictureFormat() const;
#ifdef QCOM_HARDWARE
@@ -202,6 +203,8 @@
// Supported dimensions for captured pictures in pixels.
// Example value: "2048x1536,1024x768". Read only.
static const char KEY_SUPPORTED_PICTURE_SIZES[];
+ //HTC 3D color format
+ static const char KEY_SUPPORTED_3D_FILE_FORMAT[];
// The image format for captured pictures. See CAMERA_MSG_COMPRESSED_IMAGE
// in frameworks/base/include/camera/Camera.h.
// Example value: "jpeg" or PIXEL_FORMAT_XXX constants. Read/write.
@@ -906,6 +909,10 @@
static const char FACE_DETECTION_OFF[];
static const char FACE_DETECTION_ON[];
+ // Values for HTC 3D image settings.
+ static const char FILE_FORMAT_MPO[];
+ static const char FILE_FORMAT_JPS[];
+
// Values for MCE settings.
static const char MCE_ENABLE[];
static const char MCE_DISABLE[];
diff --git a/media/libstagefright/Android.mk b/media/libstagefright/Android.mk
index 35a5d05..cefa20d 100644
--- a/media/libstagefright/Android.mk
+++ b/media/libstagefright/Android.mk
@@ -9,6 +9,10 @@
include frameworks/av/media/libstagefright/codecs/common/Config.mk
+ifeq ($(BOARD_HTC_3D_SUPPORT),true)
+ LOCAL_CFLAGS += -DHTC_3D_SUPPORT
+endif
+
LOCAL_SRC_FILES:= \
ACodec.cpp \
AACExtractor.cpp \
diff --git a/media/libstagefright/CameraSource.cpp b/media/libstagefright/CameraSource.cpp
index 29a2369..ed94c02 100755
--- a/media/libstagefright/CameraSource.cpp
+++ b/media/libstagefright/CameraSource.cpp
@@ -339,11 +339,13 @@
ALOGV("Supported frame rates: %s", supportedFrameRates);
char buf[4];
snprintf(buf, 4, "%d", frameRate);
+#ifndef HTC_3D_SUPPORT // HTC uses invalid frame rates intentionally on the 3D camera
if (strstr(supportedFrameRates, buf) == NULL) {
ALOGE("Requested frame rate (%d) is not supported: %s",
frameRate, supportedFrameRates);
return BAD_VALUE;
}
+#endif
// The frame rate is supported, set the camera to the requested value.
params->setPreviewFrameRate(frameRate);
@@ -441,11 +443,13 @@
// Check the actual video frame rate against the target/requested
// video frame rate.
+#ifndef HTC_3D_SUPPORT // HTC uses invalid frame rates intentionally on the 3D camera
if (frameRate != -1 && (frameRateActual - frameRate) != 0) {
ALOGE("Failed to set preview frame rate to %d fps. The actual "
"frame rate is %d", frameRate, frameRateActual);
return UNKNOWN_ERROR;
}
+#endif
// Good now.
mVideoFrameRate = frameRateActual;
diff --git a/media/libstagefright/OMXCodec.cpp b/media/libstagefright/OMXCodec.cpp
index 4e6c395..d85cf62 100644
--- a/media/libstagefright/OMXCodec.cpp
+++ b/media/libstagefright/OMXCodec.cpp
@@ -269,6 +269,32 @@
uint32_t OMXCodec::getComponentQuirks(
const MediaCodecList *list, size_t index) {
uint32_t quirks = 0;
+
+ if (list->codecHasQuirk(
+ index, "needs-flush-before-disable")) {
+ quirks |= kNeedsFlushBeforeDisable;
+ }
+ if (list->codecHasQuirk(
+ index, "requires-flush-complete-emulation")) {
+ quirks |= kRequiresFlushCompleteEmulation;
+ }
+ if (list->codecHasQuirk(
+ index, "supports-multiple-frames-per-input-buffer")) {
+ quirks |= kSupportsMultipleFramesPerInputBuffer;
+ }
+ if (list->codecHasQuirk(
+ index, "input-buffer-sizes-are-bogus")) {
+ quirks |= kInputBufferSizesAreBogus;
+ }
+ if (list->codecHasQuirk(
+ index, "avoid-memcopy-input-recording-frames")) {
+ quirks |= kAvoidMemcopyInputRecordingFrames;
+ }
+ if (list->codecHasQuirk(
+ index, "requires-larger-encoder-output-buffer")) {
+ quirks |= kRequiresLargerEncoderOutputBuffer;
+ }
+
if (list->codecHasQuirk(
index, "requires-allocate-on-input-ports")) {
quirks |= kRequiresAllocateBufferOnInputPorts;
@@ -283,8 +309,8 @@
}
#ifdef QCOM_HARDWARE
if (list->codecHasQuirk(
- index, "requies-loaded-to-idle-after-allocation")) {
- quirks |= kRequiresLoadedToIdleAfterAllocation;
+ index, "requires-loaded-to-idle-after-allocation")) {
+ quirks |= kRequiresLoadedToIdleAfterAllocation;
}
if (list->codecHasQuirk(
index, "requires-global-flush")) {
diff --git a/services/camera/libcameraservice/Android.mk b/services/camera/libcameraservice/Android.mk
index eff47c8..d3f3d0e 100644
--- a/services/camera/libcameraservice/Android.mk
+++ b/services/camera/libcameraservice/Android.mk
@@ -40,6 +40,10 @@
system/media/camera/include \
external/jpeg
+ifeq ($(BOARD_HTC_3D_SUPPORT),true)
+ LOCAL_CFLAGS += -DHTC_3D_SUPPORT
+endif
+
LOCAL_MODULE:= libcameraservice
include $(BUILD_SHARED_LIBRARY)
diff --git a/services/camera/libcameraservice/CameraHardwareInterface.h b/services/camera/libcameraservice/CameraHardwareInterface.h
index 9f529a0..e90549c 100644
--- a/services/camera/libcameraservice/CameraHardwareInterface.h
+++ b/services/camera/libcameraservice/CameraHardwareInterface.h
@@ -644,6 +644,9 @@
static int __set_usage(struct preview_stream_ops* w, int usage)
{
+#ifdef HTC_3D_SUPPORT
+ usage |= GRALLOC_USAGE_PRIVATE_0;
+#endif
ANativeWindow *a = anw(w);
return native_window_set_usage(a, usage);
}
@@ -662,6 +665,14 @@
return a->query(a, NATIVE_WINDOW_MIN_UNDEQUEUED_BUFFERS, count);
}
+#ifdef HTC_3D_SUPPORT
+ static int __set_3d_mode(
+ const struct preview_stream_ops *w, int r1, int r2, int r3)
+ {
+ return 0;
+ }
+#endif
+
void initHalPreviewWindow()
{
mHalPreviewWindow.nw.cancel_buffer = __cancel_buffer;
@@ -669,6 +680,9 @@
mHalPreviewWindow.nw.dequeue_buffer = __dequeue_buffer;
mHalPreviewWindow.nw.enqueue_buffer = __enqueue_buffer;
mHalPreviewWindow.nw.set_buffer_count = __set_buffer_count;
+#ifdef HTC_3D_SUPPORT
+ mHalPreviewWindow.nw.set_3d_mode = __set_3d_mode;
+#endif
mHalPreviewWindow.nw.set_buffers_geometry = __set_buffers_geometry;
mHalPreviewWindow.nw.set_crop = __set_crop;
mHalPreviewWindow.nw.set_timestamp = __set_timestamp;