author | guosong.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) |
commit | 7aa85728f41a417e9ca172b7af0998cc051486ea (patch) | |
tree | d0036baa24b02e68a115c33e8f5c7c46620b96d6 | |
parent | a76d05640ca502fc254a7ebde7c51898ccd492a1 (diff) | |
download | camera-7aa85728f41a417e9ca172b7af0998cc051486ea.zip camera-7aa85728f41a417e9ca172b7af0998cc051486ea.tar.gz camera-7aa85728f41a417e9ca172b7af0998cc051486ea.tar.bz2 |
fix usb camera crash bug
Change-Id: I153b32ba4e3bf90391c3f19f825373ed1ad04338
-rwxr-xr-x | v3/EmulatedFakeCamera3.cpp | 16 | ||||
-rwxr-xr-x | v3/EmulatedFakeCamera3.h | 2 | ||||
-rwxr-xr-x | v3/fake-pipeline2/Sensor.cpp | 2 |
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, |