author | Jiyu Yang <jiyu.yang@amlogic.com> | 2014-12-25 12:11:19 (GMT) |
---|---|---|
committer | Jiyu Yang <jiyu.yang@amlogic.com> | 2014-12-25 12:22:36 (GMT) |
commit | 0c5f9c7088184b7eb136724546d6c694e88f1225 (patch) | |
tree | 45ba39af15297f28c0b92a6a466f31b557352e58 | |
parent | 326f4baa3a39a285fe298ba05807adb6a8cf7d6f (diff) | |
download | camera-0c5f9c7088184b7eb136724546d6c694e88f1225.zip camera-0c5f9c7088184b7eb136724546d6c694e88f1225.tar.gz camera-0c5f9c7088184b7eb136724546d6c694e88f1225.tar.bz2 |
PD#101549 add HAL_PIXEL_FORMAT_YCbCr_420_888 fmt
this also fixed PD#101547
use HAL_PIXEL_FORMAT_YCbCr_420_888 as
HAL_PIXEL_FORMAT_YCrCb_420_SP
Change-Id: I38ffd503ee58ca63b391201fa6ad62abffc483fe
Signed-off-by: Jiyu Yang <jiyu.yang@amlogic.com>
-rwxr-xr-x | v3/EmulatedFakeCamera3.cpp | 10 | ||||
-rwxr-xr-x | v3/fake-pipeline2/Sensor.cpp | 149 |
2 files changed, 80 insertions, 79 deletions
diff --git a/v3/EmulatedFakeCamera3.cpp b/v3/EmulatedFakeCamera3.cpp index 62c48e5..b53ab7e 100755 --- a/v3/EmulatedFakeCamera3.cpp +++ b/v3/EmulatedFakeCamera3.cpp @@ -414,7 +414,7 @@ status_t EmulatedFakeCamera3::checkValidJpegSize(uint32_t width, uint32_t height status_t EmulatedFakeCamera3::configureStreams( camera3_stream_configuration *streamList) { Mutex::Autolock l(mLock); - uint32_t width, height,pixelfmt; + uint32_t width, height, pixelfmt; bool isRestart = false; DBG_LOGB("%s: %d streams", __FUNCTION__, streamList->num_streams); @@ -474,7 +474,7 @@ status_t EmulatedFakeCamera3::configureStreams( } inputStream = newStream; } - + bool validFormat = false; for (size_t f = 0; f < sizeof(kAvailableFormats)/sizeof(kAvailableFormats[0]); @@ -484,9 +484,7 @@ status_t EmulatedFakeCamera3::configureStreams( //HAL_PIXEL_FORMAT_YCrCb_420_SP, if (HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED == newStream->format) newStream->format = HAL_PIXEL_FORMAT_YCrCb_420_SP; - else if (HAL_PIXEL_FORMAT_YCbCr_420_888 == newStream->format) - newStream->format = HAL_PIXEL_FORMAT_YV12; - + break; } DBG_LOGB("stream_type=%d\n", newStream->stream_type); @@ -520,6 +518,8 @@ status_t EmulatedFakeCamera3::configureStreams( height = newStream->height; pixelfmt = (uint32_t)newStream->format; + if (HAL_PIXEL_FORMAT_YCbCr_420_888 == pixelfmt) + pixelfmt = HAL_PIXEL_FORMAT_YCrCb_420_SP; } } diff --git a/v3/fake-pipeline2/Sensor.cpp b/v3/fake-pipeline2/Sensor.cpp index 01fc503..bfd2027 100755 --- a/v3/fake-pipeline2/Sensor.cpp +++ b/v3/fake-pipeline2/Sensor.cpp @@ -1048,91 +1048,92 @@ int Sensor::captureNewImageWithGe2d() { int Sensor::captureNewImage() { bool isjpeg = false; uint32_t gain = mGainFactor; - mKernelBuffer = NULL; - - // Might be adding more buffers, so size isn't constant - for (size_t i = 0; i < mNextCapturedBuffers->size(); i++) { - const StreamBuffer &b = (*mNextCapturedBuffers)[i]; - ALOGVV("Sensor capturing buffer %d: stream %d," - " %d x %d, format %x, stride %d, buf %p, img %p", - i, b.streamId, b.width, b.height, b.format, b.stride, - b.buffer, b.img); - switch(b.format) { - case HAL_PIXEL_FORMAT_RAW_SENSOR: - captureRaw(b.img, gain, b.stride); - break; - case HAL_PIXEL_FORMAT_RGB_888: - captureRGB(b.img, gain, b.stride); - break; - case HAL_PIXEL_FORMAT_RGBA_8888: - captureRGBA(b.img, gain, b.stride); - break; - case HAL_PIXEL_FORMAT_BLOB: - // Add auxillary buffer of the right size - // Assumes only one BLOB (JPEG) buffer in - // mNextCapturedBuffers - isjpeg = true; - StreamBuffer bAux; - int orientation; - orientation = getPictureRotate(); - ALOGD("bAux orientation=%d",orientation); - if (!msupportrotate) { + mKernelBuffer = NULL; + + // Might be adding more buffers, so size isn't constant + for (size_t i = 0; i < mNextCapturedBuffers->size(); i++) { + const StreamBuffer &b = (*mNextCapturedBuffers)[i]; + ALOGVV("Sensor capturing buffer %d: stream %d," + " %d x %d, format %x, stride %d, buf %p, img %p", + i, b.streamId, b.width, b.height, b.format, b.stride, + b.buffer, b.img); + switch (b.format) { + case HAL_PIXEL_FORMAT_RAW_SENSOR: + captureRaw(b.img, gain, b.stride); + break; + case HAL_PIXEL_FORMAT_RGB_888: + captureRGB(b.img, gain, b.stride); + break; + case HAL_PIXEL_FORMAT_RGBA_8888: + captureRGBA(b.img, gain, b.stride); + break; + case HAL_PIXEL_FORMAT_BLOB: + // Add auxillary buffer of the right size + // Assumes only one BLOB (JPEG) buffer in + // mNextCapturedBuffers + isjpeg = true; + StreamBuffer bAux; + int orientation; + orientation = getPictureRotate(); + ALOGD("bAux orientation=%d",orientation); + if (!msupportrotate) { + bAux.streamId = 0; + bAux.width = b.width; + bAux.height = b.height; + bAux.format = HAL_PIXEL_FORMAT_RGB_888; + bAux.stride = b.width; + bAux.buffer = NULL; + } else { + if ((orientation == 90) || (orientation == 270)) { bAux.streamId = 0; - bAux.width = b.width; - bAux.height = b.height; - bAux.format = HAL_PIXEL_FORMAT_RGB_888; - bAux.stride = b.width; - bAux.buffer = NULL; + bAux.width = b.height; + bAux.height = b.width; + bAux.format = HAL_PIXEL_FORMAT_RGB_888; + bAux.stride = b.height; + bAux.buffer = NULL; } else { - if ((orientation==90)||(orientation==270)) { - bAux.streamId = 0; - bAux.width = b.height; - bAux.height = b.width; - bAux.format = HAL_PIXEL_FORMAT_RGB_888; - bAux.stride = b.height; - bAux.buffer = NULL; - } else { - bAux.streamId = 0; - bAux.width = b.width; - bAux.height = b.height; - bAux.format = HAL_PIXEL_FORMAT_RGB_888; - bAux.stride = b.width; - bAux.buffer = NULL; - } + bAux.streamId = 0; + bAux.width = b.width; + bAux.height = b.height; + bAux.format = HAL_PIXEL_FORMAT_RGB_888; + bAux.stride = b.width; + bAux.buffer = NULL; } - // TODO: Reuse these - bAux.img = new uint8_t[b.width * b.height * 3]; - mNextCapturedBuffers->push_back(bAux); - break; - case HAL_PIXEL_FORMAT_YCrCb_420_SP: - captureNV21(b, gain); - break; - case HAL_PIXEL_FORMAT_YV12: - captureYV12(b, gain); - break; - case HAL_PIXEL_FORMAT_YCbCr_422_I: - captureYUYV(b.img, gain, b.stride); - break; - default: - ALOGE("%s: Unknown format %x, no output", __FUNCTION__, - b.format); - break; - } - } - if(!isjpeg) { //jpeg buffer that is rgb888 has been save in the different buffer struct; - // whose buffer putback separately. - putback_frame(vinfo); + } + // TODO: Reuse these + bAux.img = new uint8_t[b.width * b.height * 3]; + mNextCapturedBuffers->push_back(bAux); + break; + case HAL_PIXEL_FORMAT_YCrCb_420_SP: + case HAL_PIXEL_FORMAT_YCbCr_420_888: + captureNV21(b, gain); + break; + case HAL_PIXEL_FORMAT_YV12: + captureYV12(b, gain); + break; + case HAL_PIXEL_FORMAT_YCbCr_422_I: + captureYUYV(b.img, gain, b.stride); + break; + default: + ALOGE("%s: Unknown format %x, no output", __FUNCTION__, + b.format); + break; } - mKernelBuffer = NULL; + } + if (!isjpeg) { //jpeg buffer that is rgb888 has been save in the different buffer struct; + // whose buffer putback separately. + putback_frame(vinfo); + } + mKernelBuffer = NULL; - return 0; + return 0; } int Sensor::getStreamConfigurations(uint32_t picSizes[], const int32_t kAvailableFormats[], int size) { int res; int i, j, k, START; int count = 0; - int pixelfmt; + int pixelfmt; struct v4l2_frmsizeenum frmsize; char property[PROPERTY_VALUE_MAX]; unsigned int support_w,support_h; |