From 4b05c36b796013f0d5c1e5df694176294de2fb5a Mon Sep 17 00:00:00 2001 From: Guosong Zhou Date: Fri, 18 Sep 2015 09:42:25 +0000 Subject: PD#112647:fix continue picture crash Change-Id: I36936d14c6fd74cbaf7c0ac3dae6b65851e0b4ee --- diff --git a/v3/EmulatedFakeCamera3.cpp b/v3/EmulatedFakeCamera3.cpp index c9ca6c1..69fd2c5 100644 --- a/v3/EmulatedFakeCamera3.cpp +++ b/v3/EmulatedFakeCamera3.cpp @@ -1240,7 +1240,6 @@ status_t EmulatedFakeCamera3::processCaptureRequest( nsecs_t frameDuration; uint32_t sensitivity; bool needJpeg = false; - struct ExifInfo info; ssize_t jpegbuffersize; uint32_t jpegpixelfmt; bool mHaveThumbnail = false; @@ -1374,7 +1373,8 @@ status_t EmulatedFakeCamera3::processCaptureRequest( info.has_altitude = false; } if (settings.exists(ANDROID_JPEG_GPS_PROCESSING_METHOD)) { - info.gpsProcessingMethod = settings.find(ANDROID_JPEG_GPS_PROCESSING_METHOD).data.u8; + uint8_t * gpsString = settings.find(ANDROID_JPEG_GPS_PROCESSING_METHOD).data.u8; + memcpy(info.gpsProcessingMethod, gpsString , sizeof(info.gpsProcessingMethod)-1); info.has_gpsProcessingMethod = true; } else { info.has_gpsProcessingMethod = false; diff --git a/v3/EmulatedFakeCamera3.h b/v3/EmulatedFakeCamera3.h index 4a23f26..b98beb8 100644 --- a/v3/EmulatedFakeCamera3.h +++ b/v3/EmulatedFakeCamera3.h @@ -242,6 +242,8 @@ private: uint32_t mAvailableJpegSize[64 * 8]; + struct ExifInfo info; + // All streams, including input stream StreamList mStreams; diff --git a/v3/fake-pipeline2/Base.h b/v3/fake-pipeline2/Base.h index 1f27ca6..2437758 100755..100644 --- a/v3/fake-pipeline2/Base.h +++ b/v3/fake-pipeline2/Base.h @@ -69,7 +69,7 @@ struct ExifInfo { double longitude; double latitude; double altitude; - uint8_t *gpsProcessingMethod; + uint8_t gpsProcessingMethod[32]; bool has_longitude; bool has_latitude; bool has_altitude; diff --git a/v3/fake-pipeline2/JpegCompressor.cpp b/v3/fake-pipeline2/JpegCompressor.cpp index cae9f0d..4399d4d 100644 --- a/v3/fake-pipeline2/JpegCompressor.cpp +++ b/v3/fake-pipeline2/JpegCompressor.cpp @@ -801,24 +801,7 @@ ssize_t JpegCompressor::GetMaxJpegBufferSize() } void JpegCompressor::SetExifInfo(struct ExifInfo info) { - mInfo.mainwidth = info.mainwidth; - mInfo.mainheight = info.mainheight; - mInfo.thumbwidth = info.thumbwidth; - mInfo.thumbheight = info.thumbheight; - mInfo.gpsTimestamp = info.gpsTimestamp; - mInfo.latitude = info.latitude; - mInfo.longitude = info.longitude; - mInfo.altitude = info.altitude; - mInfo.gpsProcessingMethod = info.gpsProcessingMethod; - mInfo.focallen = info.focallen; - mInfo.orientation = info.orientation; - mInfo.has_latitude = info.has_latitude; - mInfo.has_longitude = info.has_longitude; - mInfo.has_altitude = info.has_altitude; - mInfo.has_gpsProcessingMethod = info.has_gpsProcessingMethod; - mInfo.has_gpsTimestamp = info.has_gpsTimestamp; - mInfo.has_focallen = info.has_focallen; - + memcpy(&mInfo, &info, sizeof(struct ExifInfo)); } int JpegCompressor::GenExif(ExifElementsTable* exiftable) { -- cgit