summaryrefslogtreecommitdiff
authorguosong.zhou <guosong.zhou@amlogic.com>2014-12-09 04:33:42 (GMT)
committer guosong.zhou <guosong.zhou@amlogic.com>2014-12-09 04:33:42 (GMT)
commit7aa85728f41a417e9ca172b7af0998cc051486ea (patch)
treed0036baa24b02e68a115c33e8f5c7c46620b96d6
parenta76d05640ca502fc254a7ebde7c51898ccd492a1 (diff)
downloadcamera-7aa85728f41a417e9ca172b7af0998cc051486ea.zip
camera-7aa85728f41a417e9ca172b7af0998cc051486ea.tar.gz
camera-7aa85728f41a417e9ca172b7af0998cc051486ea.tar.bz2
fix usb camera crash bug
Change-Id: I153b32ba4e3bf90391c3f19f825373ed1ad04338
Diffstat
-rwxr-xr-xv3/EmulatedFakeCamera3.cpp16
-rwxr-xr-xv3/EmulatedFakeCamera3.h2
-rwxr-xr-xv3/fake-pipeline2/Sensor.cpp2
3 files changed, 13 insertions, 7 deletions
diff --git a/v3/EmulatedFakeCamera3.cpp b/v3/EmulatedFakeCamera3.cpp
index 8d8daf0..24b0fa2 100755
--- a/v3/EmulatedFakeCamera3.cpp
+++ b/v3/EmulatedFakeCamera3.cpp
@@ -45,6 +45,8 @@
#define ALOGVV(...) ((void)0)
#endif
+#define ARRAY_SIZE(x) (sizeof((x))/sizeof(((x)[0])))
+
namespace android {
/**
@@ -1469,10 +1471,11 @@ status_t EmulatedFakeCamera3::constructStaticInfo() {
CameraMetadata info;
uint32_t picSizes[64 * 8];
int64_t duration[36];
- int count, duration_count;
+ int count, duration_count, availablejpegsize;
uint8_t maxCount = 10;
- char property[PROPERTY_VALUE_MAX];
- memset(mAvailableJpegSize,0,(sizeof(uint32_t))*32);
+ char property[PROPERTY_VALUE_MAX];
+ availablejpegsize = ARRAY_SIZE(mAvailableJpegSize);
+ memset(mAvailableJpegSize,0,(sizeof(uint32_t))*availablejpegsize);
sp<Sensor> s = new Sensor();
s->startUp(mCameraID);
// android.lens
@@ -1621,7 +1624,10 @@ status_t EmulatedFakeCamera3::constructStaticInfo() {
info.update(ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS,
(int32_t*)picSizes, count);
- getValidJpegSize(picSizes,mAvailableJpegSize,count);
+ if (count < availablejpegsize) {
+ availablejpegsize = count;
+ }
+ getValidJpegSize(picSizes,mAvailableJpegSize,availablejpegsize);
maxJpegResolution = getMaxJpegResolution(picSizes,count);
int32_t full_size[4];
@@ -1867,7 +1873,7 @@ status_t EmulatedFakeCamera3::constructStaticInfo() {
&supportedHardwareLevel,
/*count*/1);
- static const uint8_t android_sync_max_latency = ANDROID_SYNC_MAX_LATENCY_UNKNOWN;
+ int32_t android_sync_max_latency = ANDROID_SYNC_MAX_LATENCY_UNKNOWN;
info.update(ANDROID_SYNC_MAX_LATENCY, &android_sync_max_latency, 1);
uint8_t len[] = {1};
diff --git a/v3/EmulatedFakeCamera3.h b/v3/EmulatedFakeCamera3.h
index 6557d21..dec3edc 100755
--- a/v3/EmulatedFakeCamera3.h
+++ b/v3/EmulatedFakeCamera3.h
@@ -229,7 +229,7 @@ private:
typedef List<camera3_stream_t*>::iterator StreamIterator;
typedef Vector<camera3_stream_buffer> HalBufferVector;
- uint32_t mAvailableJpegSize[32];
+ uint32_t mAvailableJpegSize[64];
// All streams, including input stream
StreamList mStreams;
diff --git a/v3/fake-pipeline2/Sensor.cpp b/v3/fake-pipeline2/Sensor.cpp
index d4c8927..6f2b093 100755
--- a/v3/fake-pipeline2/Sensor.cpp
+++ b/v3/fake-pipeline2/Sensor.cpp
@@ -1323,7 +1323,7 @@ int Sensor::getStreamConfigurationDurations(uint32_t picSizes[], int64_t duratio
int i,j=0;
int count = 0;
int tmp_size = size;
- memset(duration, 0 ,sizeof(int64_t));
+ memset(duration, 0 ,sizeof(int64_t)*ARRAY_SIZE(duration));
int pixelfmt_tbl[] = {
V4L2_PIX_FMT_YVU420,
V4L2_PIX_FMT_NV21,