summaryrefslogtreecommitdiff
authorJiyu 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)
commit0c5f9c7088184b7eb136724546d6c694e88f1225 (patch)
tree45ba39af15297f28c0b92a6a466f31b557352e58
parent326f4baa3a39a285fe298ba05807adb6a8cf7d6f (diff)
downloadcamera-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>
Diffstat
-rwxr-xr-xv3/EmulatedFakeCamera3.cpp10
-rwxr-xr-xv3/fake-pipeline2/Sensor.cpp149
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;