summaryrefslogtreecommitdiff
path: root/libcamera/V4L2Camera.cpp
diff options
context:
space:
mode:
authorVishal Bhoj <vishal.bhoj@linaro.org>2012-01-31 22:13:09 +0530
committerVishal Bhoj <vishal.bhoj@linaro.org>2012-01-31 22:16:05 +0530
commit1ad0e928edf6f046572b3f32eb5ee23d8d7f3f79 (patch)
tree5c4a1c48e7f64ddccbe801a6ba3d16d69e7464ea /libcamera/V4L2Camera.cpp
parent120c22ceb513ca37685854e467fb4cb482840d1c (diff)
camera: Initial changes for ICS supportlinaro_android_4.0.3
Preview,Image capture and apps like skype, linphone, hangouts are working. Recording fails. Change-Id: I4587c31014e40b87146a2cafb294cc33e532a26f Signed-off-by: Vishal Bhoj <vishal.bhoj@linaro.org>
Diffstat (limited to 'libcamera/V4L2Camera.cpp')
-rw-r--r--libcamera/V4L2Camera.cpp28
1 files changed, 14 insertions, 14 deletions
diff --git a/libcamera/V4L2Camera.cpp b/libcamera/V4L2Camera.cpp
index 78e17b0..90fc123 100644
--- a/libcamera/V4L2Camera.cpp
+++ b/libcamera/V4L2Camera.cpp
@@ -17,6 +17,7 @@
extern "C" { /* Android jpeglib.h missed extern "C" */
#include <jpeglib.h>
+ void convertYUYVtoRGB565(unsigned char *buf, unsigned char *rgb, int width, int height);
}
namespace android {
@@ -198,7 +199,7 @@ int V4L2Camera::StopStreaming ()
return 0;
}
-void V4L2Camera::GrabPreviewFrame (void *previewBuffer)
+void * V4L2Camera::GrabPreviewFrame ()
{
unsigned char *tmpBuffer;
int ret;
@@ -209,21 +210,22 @@ void V4L2Camera::GrabPreviewFrame (void *previewBuffer)
/* DQ */
ret = ioctl(fd, VIDIOC_DQBUF, &videoIn->buf);
if (ret < 0) {
- //LOGE("GrabPreviewFrame: VIDIOC_DQBUF Failed");
-
- return;
+ LOGE("GrabPreviewFrame: VIDIOC_DQBUF Failed");
+ return NULL;
}
nDequeued++;
+ return videoIn->mem[videoIn->buf.index];
+}
- memcpy (previewBuffer, videoIn->mem[videoIn->buf.index], (size_t) videoIn->buf.bytesused);
+void V4L2Camera::ReleasePreviewFrame ()
+{
+ int ret;
ret = ioctl(fd, VIDIOC_QBUF, &videoIn->buf);
+ nQueued++;
if (ret < 0) {
LOGE("GrabPreviewFrame: VIDIOC_QBUF Failed");
return;
}
-
- nQueued++;
-
}
@@ -296,7 +298,7 @@ int MemoryStream::readPipe()
return 0;
}
-sp<IMemory> V4L2Camera::GrabJpegFrame ()
+camera_memory_t* V4L2Camera::GrabJpegFrame (camera_request_memory mRequestMemory)
{
int ret;
@@ -327,13 +329,11 @@ sp<IMemory> V4L2Camera::GrabJpegFrame ()
saveYUYVtoJPEG((unsigned char *)videoIn->mem[videoIn->buf.index], videoIn->width, videoIn->height, strm, 100);
strm.closeStream();
size_t fileSize = strm.getOffset();
-
- sp<MemoryHeapBase> mjpegPictureHeap = new MemoryHeapBase(fileSize);
- sp<MemoryBase> jpegmemBase = new MemoryBase(mjpegPictureHeap, 0, fileSize);
- memcpy(mjpegPictureHeap->base(), tmpBuf, fileSize);
+ camera_memory_t* picture = mRequestMemory(-1,fileSize,1,NULL);
+ memcpy(picture->data, tmpBuf, fileSize);
delete[] tmpBuf;
- return jpegmemBase;
+ return picture;
}
return NULL;