Home | History | Annotate | Download | only in src

Lines Matching refs:camHal

99 static int initUsbCamera(               camera_hardware_t *camHal,
102 static int startUsbCamCapture( camera_hardware_t *camHal);
103 static int stopUsbCamCapture( camera_hardware_t *camHal);
104 static int initV4L2mmap( camera_hardware_t *camHal);
105 static int unInitV4L2mmap( camera_hardware_t *camHal);
106 static int launch_preview_thread( camera_hardware_t *camHal);
107 static int launchTakePictureThread( camera_hardware_t *camHal);
108 static int initDisplayBuffers( camera_hardware_t *camHal);
109 static int deInitDisplayBuffers( camera_hardware_t *camHal);
110 static int stopPreviewInternal( camera_hardware_t *camHal);
111 static int get_buf_from_cam( camera_hardware_t *camHal);
112 static int put_buf_to_cam( camera_hardware_t *camHal);
113 static int prvwThreadTakePictureInternal(camera_hardware_t *camHal);
114 static int get_buf_from_display( camera_hardware_t *camHal, int *buffer_id);
115 static int put_buf_to_display( camera_hardware_t *camHal, int buffer_id);
116 static int convert_data_frm_cam_to_disp(camera_hardware_t *camHal, int buffer_id);
121 static int getPreviewCaptureFmt(camera_hardware_t *camHal);
127 static int encodeJpeg( camera_hardware_t *camHal);
180 camera_hardware_t *camHal;
188 camHal = new camera_hardware_t();
189 if(!camHal) {
195 rc = usbCamInitDefaultParameters(camHal);
203 dev_name = camHal->dev_name;
211 camHal->fd = open(dev_name, O_RDWR /* required */ | O_NONBLOCK, 0);
213 if (camHal->fd < 0) {
215 free(camHal);
225 device = &camHal->hw_dev;
228 device->priv = (void *)camHal;
231 ALOGD("%s: camHal: %p", __func__, camHal);
244 camera_hardware_t *camHal = (camera_hardware_t *)device->priv;
245 if(camHal) {
246 rc = close(camHal->fd);
250 camHal->fd = 0;
251 delete camHal;
253 ALOGE("%s: camHal is NULL pointer ", __func__);
265 camera_hardware_t *camHal;
267 VALIDATE_DEVICE_HDL(camHal, device, -1);
268 Mutex::Autolock autoLock(camHal->lock);
271 if(camHal->window){
272 rc = deInitDisplayBuffers(camHal);
277 camHal->window = window;
279 if(camHal->window){
280 rc = initDisplayBuffers(camHal);
297 camera_hardware_t *camHal;
300 camHal = (camera_hardware_t *)device->priv;
306 Mutex::Autolock autoLock(camHal->lock);
308 camHal->notify_cb = notify_cb;
309 camHal->data_cb = data_cb;
310 camHal->data_cb_timestamp = data_cb_timestamp;
311 camHal->get_memory = get_memory;
312 camHal->cb_ctxt = user;
322 camera_hardware_t *camHal;
325 camHal = (camera_hardware_t *)device->priv;
331 Mutex::Autolock autoLock(camHal->lock);
333 camHal->msgEnabledFlag |= msg_type;
343 camera_hardware_t *camHal;
345 camHal = (camera_hardware_t *)device->priv;
351 Mutex::Autolock autoLock(camHal->lock);
353 camHal->msgEnabledFlag &= ~msg_type;
362 camera_hardware_t *camHal;
364 camHal = (camera_hardware_t *)device->priv;
370 Mutex::Autolock autoLock(camHal->lock);
373 return (camHal->msgEnabledFlag & msg_type);
381 camera_hardware_t *camHal = NULL;
383 VALIDATE_DEVICE_HDL(camHal, device, -1);
384 Mutex::Autolock autoLock(camHal->lock);
387 if(camHal->previewEnabledFlag){
393 rc = initUsbCamera(camHal, camHal->prevWidth,
394 camHal->prevHeight, getPreviewCaptureFmt(camHal));
398 rc = startUsbCamCapture(camHal);
402 rc = launch_preview_thread(camHal);
409 rc = launch_preview_thread(camHal);
416 camHal->previewEnabledFlag = 1;
427 camera_hardware_t *camHal;
430 camHal = (camera_hardware_t *)device->priv;
436 Mutex::Autolock autoLock(camHal->lock);
438 rc = stopPreviewInternal(camHal);
450 camera_hardware_t *camHal;
453 camHal = (camera_hardware_t *)device->priv;
458 Mutex::Autolock autoLock(camHal->lock);
461 return camHal->previewEnabledFlag;
536 camera_hardware_t *camHal;
538 VALIDATE_DEVICE_HDL(camHal, device, -1);
540 Mutex::Autolock autoLock(camHal->lock);
543 if(camHal->takePictInProgress){
548 if(camHal->previewEnabledFlag)
550 rc = stopPreviewInternal(camHal);
554 USB_CAM_CLOSE(camHal);
555 camHal->prvwStoppedForPicture = 1;
558 rc = launchTakePictureThread(camHal);
564 if(camHal->previewEnabledFlag)
566 camHal->prvwCmdPending++;
567 camHal->prvwCmd = USB_CAM_PREVIEW_TAKEPIC;
576 camHal->takePictInProgress = 1;
598 camera_hardware_t *camHal;
600 VALIDATE_DEVICE_HDL(camHal, device, -1);
602 Mutex::Autolock autoLock(camHal->lock);
604 rc = usbCamSetParameters(camHal, params);
615 camera_hardware_t *camHal;
616 VALIDATE_DEVICE_HDL(camHal, device, NULL);
618 Mutex::Autolock autoLock(camHal->lock);
620 parms = usbCamGetParameters(camHal);
631 camera_hardware_t *camHal;
634 camHal = (camera_hardware_t *)device->priv;
640 usbCamPutParameters(camHal, parm);
748 * camHal - camera HAL handle
755 static int initDisplayBuffers(camera_hardware_t *camHal)
768 if(camHal == NULL) {
769 ALOGE("%s: camHal = NULL", __func__);
773 mPreviewWindow = camHal->window;
808 camHal->previewMem.buffer_count = numMinUndequeuedBufs
812 camHal->previewMem.buffer_count);
825 camHal->dispWidth,
826 camHal->dispHeight,
827 camHal->dispFormat);
855 for (int cnt = 0; cnt < camHal->previewMem.buffer_count; cnt++) {
859 &camHal->previewMem.buffer_handle[cnt],
860 &camHal->previewMem.stride[cnt]);
863 __func__, camHal->previewMem.buffer_handle[cnt]);
868 camHal->previewMem.buffer_handle[cnt]);
875 __func__, (*camHal->previewMem.buffer_handle[cnt]));
879 (native_handle_t *) (*camHal->previewMem.buffer_handle[cnt]),
884 camHal->previewMem.local_flag[cnt] = BUFFER_UNLOCKED;
887 __func__, *camHal->previewMem.buffer_handle[cnt]);
888 camHal->previewMem.local_flag[cnt] = BUFFER_LOCKED;
892 camHal->previewMem.private_buffer_handle[cnt] =
893 (struct private_handle_t *) (*camHal->previewMem.buffer_handle[cnt]);
896 cnt, camHal->previewMem.private_buffer_handle[cnt]->fd,
897 camHal->previewMem.private_buffer_handle[cnt]->size,
898 camHal->previewMem.private_buffer_handle[cnt]->offset);
900 camHal->previewMem.camera_memory[cnt] =
901 camHal->get_memory(
902 camHal->previewMem.private_buffer_handle[cnt]->fd,
903 camHal->previewMem.private_buffer_handle[cnt]->size,
904 1, camHal->cb_ctxt);
907 camHal->previewMem.camera_memory[cnt]->data,
908 camHal->previewMem.camera_memory[cnt]->size,
909 camHal->previewMem.camera_memory[cnt]->handle);
913 camHal->previewMem.mem_info[cnt].main_ion_fd =
915 if (camHal->previewMem.mem_info[cnt].main_ion_fd < 0) {
920 camHal->previewMem.private_buffer_handle[cnt]->fd;
921 if (ioctl(camHal->previewMem.mem_info[cnt].main_ion_fd,
926 camHal->previewMem.mem_info[cnt].fd =
927 camHal->previewMem.private_buffer_handle[cnt]->fd;
928 camHal->previewMem.mem_info[cnt].size =
929 camHal->previewMem.private_buffer_handle[cnt]->size;
930 camHal->previewMem.mem_info[cnt].handle = ion_info_fd.handle;
940 for (int cnt = 0; cnt < camHal->previewMem.buffer_count; cnt++) {
942 (native_handle_t *)(*(camHal->previewMem.buffer_handle[cnt])))){
944 (*(camHal->previewMem.buffer_handle[cnt])) );
946 camHal->previewMem.local_flag[cnt] = BUFFER_UNLOCKED;
948 __func__, (*(camHal->previewMem.buffer_handle[cnt])));
952 (buffer_handle_t *)camHal->previewMem.buffer_handle[cnt]);
955 __func__, camHal->previewMem.buffer_handle[cnt]);
958 camHal->previewMem.buffer_handle[cnt]);
973 * camHal - camera HAL handle
980 static int deInitDisplayBuffers(camera_hardware_t *camHal)
987 if(!camHal || !camHal->window) {
988 ALOGE("%s: camHal = NULL or window = NULL ", __func__);
992 previewWindow = camHal->window;
1002 for (int cnt = 0; cnt < camHal->previewMem.buffer_count; cnt++) {
1005 camHal->previewMem.camera_memory[cnt]->release(
1006 camHal->previewMem.camera_memory[cnt]);
1012 ion_handle.handle = camHal->previewMem.mem_info[cnt].handle;
1013 if (ioctl(camHal->previewMem.mem_info[cnt].main_ion_fd,
1017 close(camHal->previewMem.mem_info[cnt].main_ion_fd);
1021 if(camHal->previewMem.local_flag[cnt] == BUFFER_LOCKED){
1023 (native_handle_t *)(*(camHal->previewMem.buffer_handle[cnt])))){
1025 (*(camHal->previewMem.buffer_handle[cnt])) );
1027 camHal->previewMem.local_flag[cnt] = BUFFER_UNLOCKED;
1029 __func__, (*(camHal->previewMem.buffer_handle[cnt])));
1034 (buffer_handle_t *)camHal->previewMem.buffer_handle[cnt]);
1037 __func__, camHal->previewMem.buffer_handle[cnt]);
1040 camHal->previewMem.buffer_handle[cnt]);
1043 memset(&camHal->previewMem, 0, sizeof(camHal->previewMem));
1055 * camHal - camera HAL handle
1062 static int getPreviewCaptureFmt(camera_hardware_t *camHal)
1080 if (-1 == ioctlLoop(camHal->fd, VIDIOC_ENUM_FMT, &fmtdesc)) {
1103 camHal->captureFormat = V4L2_PIX_FMT_YUYV;
1104 if(camHal->prevWidth > 640){
1106 camHal->captureFormat = V4L2_PIX_FMT_MJPEG;
1108 camHal->captureFormat = V4L2_PIX_FMT_H264;
1111 __func__, camHal->captureFormat, V4L2_PIX_FMT_YUYV,
1114 return camHal->captureFormat;
1172 * camHal - camera HAL handle
1180 static int initV4L2mmap(camera_hardware_t *camHal)
1192 if (-1 == ioctlLoop(camHal->fd, VIDIOC_REQBUFS, &reqBufs)) {
1205 camHal->buffers =
1208 if (!camHal->buffers) {
1213 for (camHal->n_buffers = 0;
1214 camHal->n_buffers < reqBufs.count;
1215 camHal->n_buffers++) {
1219 tempBuf.index = camHal->n_buffers;
1223 if (-1 == ioctlLoop(camHal->fd, VIDIOC_QUERYBUF, &tempBuf))
1228 camHal->buffers[camHal->n_buffers].len = tempBuf.length;
1229 camHal->buffers[camHal->n_buffers].data =
1234 camHal->fd, tempBuf.m.offset);
1236 if (MAP_FAILED == camHal->buffers[camHal->n_buffers].data)
1248 * camHal - camera HAL handle
1256 static int unInitV4L2mmap(camera_hardware_t *camHal)
1261 for (i = 0; i < camHal->n_buffers; i++)
1262 if (-1 == munmap(camHal->buffers[i].data, camHal->buffers[i].len)){
1277 * camHal - camera HAL handle
1288 static int initUsbCamera(camera_hardware_t *camHal, int width, int height,
1300 if (-1 == ioctlLoop(camHal->fd, VIDIOC_QUERYCAP, &cap)) {
1325 if (0 == ioctlLoop(camHal->fd, VIDIOC_CROPCAP, &cropcap)) {
1332 if (-1 == ioctlLoop(camHal->fd, VIDIOC_S_CROP, &crop)) {
1359 if (-1 == ioctlLoop(camHal->fd, VIDIOC_S_FMT, &v4l2format))
1373 rc = initV4L2mmap(camHal);
1384 * camHal - camera HAL handle
1392 static int startUsbCamCapture(camera_hardware_t *camHal)
1399 for (i = 0; i < camHal->n_buffers; ++i) {
1407 if (-1 == ioctlLoop(camHal->fd, VIDIOC_QBUF, &tempBuf))
1414 if (-1 == ioctlLoop(camHal->fd, VIDIOC_STREAMON, &v4l2BufType))
1431 * camHal - camera HAL handle
1439 static int stopUsbCamCapture(camera_hardware_t *camHal)
1446 if(!camHal->fd){
1447 ALOGE("%s: camHal->fd = NULL ", __func__);
1451 if (-1 == ioctlLoop(camHal->fd, VIDIOC_STREAMOFF, &v4l2BufType)){
1467 * assumes that calling function has locked camHal->lock
1470 * camHal - camera HAL handle
1478 static int stopPreviewInternal(camera_hardware_t *camHal)
1483 if(camHal->previewEnabledFlag)
1485 camHal->prvwCmdPending++;
1486 camHal->prvwCmd = USB_CAM_PREVIEW_EXIT;
1489 camHal->lock.unlock();
1490 if(pthread_join(camHal->previewThread, NULL)){
1493 camHal->lock.lock();
1495 if(stopUsbCamCapture(camHal)){
1499 if(unInitV4L2mmap(camHal)){
1503 camHal->previewEnabledFlag = 0;
1516 * camHal - camera HAL handle
1524 static int prvwThreadTakePictureInternal(camera_hardware_t *camHal)
1541 if (camHal->msgEnabledFlag & CAMERA_MSG_SHUTTER){
1542 camHal->lock.unlock();
1543 camHal->notify_cb(CAMERA_MSG_SHUTTER, 0, 0, camHal->cb_ctxt);
1544 camHal->lock.lock();
1551 if (0 == get_buf_from_cam(camHal))
1562 if(V4L2_PIX_FMT_MJPEG == camHal->captureFormat){
1564 mem_info = &camHal->pictMem.mem_info[0];
1565 mem_info->size = camHal->curCaptureBuf.bytesused;
1574 camHal->pictMem.camera_memory[0] = camHal->get_memory(
1575 mem_info->fd, mem_info->size, 1, camHal->cb_ctxt);
1576 if(!camHal->pictMem.camera_memory[0])
1579 memcpy( camHal->pictMem.camera_memory[0]->data,
1580 (char *)camHal->buffers[camHal->curCaptureBuf.index].data,
1581 camHal->curCaptureBuf.bytesused);
1587 if ((camHal->msgEnabledFlag & CAMERA_MSG_COMPRESSED_IMAGE) &&
1588 (camHal->data_cb)){
1589 camHal->lock.unlock();
1590 camHal->data_cb(CAMERA_MSG_COMPRESSED_IMAGE,
1591 camHal->pictMem.camera_memory[0],
1592 0, NULL, camHal->cb_ctxt);
1593 camHal->lock.lock();
1596 if(camHal->pictMem.camera_memory[0])
1597 camHal->pictMem.camera_memory[0]->release(
1598 camHal->pictMem.camera_memory[0]);
1609 if(0 == put_buf_to_cam(camHal)) {
1679 * camHal - camera HAL handle
1687 static int get_buf_from_cam(camera_hardware_t *camHal)
1693 memset(&camHal->curCaptureBuf, 0, sizeof(camHal->curCaptureBuf));
1695 camHal->curCaptureBuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
1696 camHal->curCaptureBuf.memory = V4L2_MEMORY_MMAP;
1698 if (-1 == ioctlLoop(camHal->fd, VIDIOC_DQBUF, &camHal->curCaptureBuf)){
1717 __func__, camHal->curCaptureBuf.index,
1718 camHal->curCaptureBuf.bytesused);
1731 * camHal - camera HAL handle
1739 static int put_buf_to_cam(camera_hardware_t *camHal)
1743 camHal->curCaptureBuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
1744 camHal->curCaptureBuf.memory = V4L2_MEMORY_MMAP;
1747 if (-1 == ioctlLoop(camHal->fd, VIDIOC_QBUF, &camHal->curCaptureBuf))
1762 * camHal - camera HAL handle
1772 static int get_buf_from_display(camera_hardware_t *camHal, int *buffer_id)
1782 if (camHal == NULL) {
1783 ALOGE("%s: camHal = NULL", __func__);
1787 mPreviewWindow = camHal->window;
1821 for(cnt = 0; cnt < camHal->previewMem.buffer_count + 2; cnt++) {
1823 camHal->previewMem.private_buffer_handle[cnt]->fd) {
1844 * camHal - camera HAL handle
1853 static int put_buf_to_display(camera_hardware_t *camHal, int buffer_id)
1860 if (camHal == NULL) {
1861 ALOGE("%s: camHal = NULL", __func__);
1865 mPreviewWindow = camHal->window;
1874 (*(camHal->previewMem.buffer_handle[buffer_id])))) {
1876 __func__, (*(camHal->previewMem.buffer_handle[buffer_id])) );
1879 __func__, (*(camHal->previewMem.buffer_handle[buffer_id])) );
1883 cache_ops(&camHal->previewMem.mem_info[buffer_id],
1884 (void *)camHal->previewMem.camera_memory[buffer_id]->data,
1887 cache_ops(&camHal->previewMem.mem_info[buffer_id],
1888 (void *)camHal->previewMem.camera_memory[buffer_id]->data,
1892 (buffer_handle_t *)camHal->previewMem.buffer_handle[buffer_id]);
1895 __func__, camHal->previewMem.buffer_handle[buffer_id]);
1898 __func__, camHal->previewMem.buffer_handle[buffer_id]);
1911 * camHal - camera HAL handle
1920 static int convert_data_frm_cam_to_disp(camera_hardware_t *camHal, int buffer_id)
1924 if(!camHal) {
1925 ALOGE("%s: camHal is NULL", __func__);
1930 if( (V4L2_PIX_FMT_YUYV == camHal->captureFormat) &&
1931 (HAL_PIXEL_FORMAT_YCrCb_420_SP == camHal->dispFormat))
1934 (char *)camHal->buffers[camHal->curCaptureBuf.index].data,
1935 (char *)camHal->previewMem.camera_memory[buffer_id]->data,
1936 camHal->prevWidth,
1937 camHal->prevHeight);
1939 __func__, camHal->curCaptureBuf.bytesused,
1940 camHal->curCaptureBuf.index, buffer_id);
1945 if(V4L2_PIX_FMT_MJPEG == camHal->captureFormat)
1947 if(NULL == camHal->mjpegd)
1949 rc = mjpegDecoderInit(&camHal->mjpegd);
1953 if(camHal->mjpegd)
1956 camHal->mjpegd,
1957 (char *)camHal->buffers[camHal->curCaptureBuf.index].data,
1958 camHal->curCaptureBuf.bytesused,
1959 (char *)camHal->previewMem.camera_memory[buffer_id]->data,
1960 (char *)camHal->previewMem.camera_memory[buffer_id]->data +
1961 camHal->prevWidth * camHal->prevHeight,
1962 getMjpegdOutputFormat(camHal->dispFormat));
1975 * camHal - camera HAL handle
1983 static int launch_preview_thread(camera_hardware_t *camHal)
1988 if(!camHal) {
1989 ALOGE("%s: camHal is NULL", __func__);
1996 pthread_create(&camHal->previewThread, &attr, previewloop, camHal);
2020 camera_hardware_t *camHal = NULL;
2026 camHal = (camera_hardware_t *)hcamHal;
2029 if(!camHal) {
2030 ALOGE("%s: camHal is NULL", __func__);
2056 FD_SET(camHal->fd, &fds);
2065 ALOGD("%s: b4 select on camHal->fd + 1,fd: %d", __func__, camHal->fd);
2067 r = select(camHal->fd + 1, &fds, NULL, NULL, &tv);
2071 ALOGD("%s: after select : %d", __func__, camHal->fd);
2085 Mutex::Autolock autoLock(camHal->lock);
2090 if(camHal->prvwCmdPending)
2093 camHal->prvwCmdPending--;
2095 if(USB_CAM_PREVIEW_EXIT == camHal->prvwCmd){
2097 camHal->lock.unlock();
2100 }else if(USB_CAM_PREVIEW_TAKEPIC == camHal->prvwCmd){
2101 rc = prvwThreadTakePictureInternal(camHal);
2109 if(!camHal->window) {
2110 ALOGD("%s: sleeping coz camHal->window = NULL",__func__);
2111 camHal->lock.unlock();
2119 if(0 == get_buf_from_display(camHal, &buffer_id)) {
2133 if (0 == get_buf_from_cam(camHal))
2145 (char*)camHal->buffers[camHal->curCaptureBuf.index].data,
2146 camHal->prevWidth * camHal->prevHeight * 1.5,
2159 memset(camHal->previewMem.camera_memory[buffer_id]->data,
2160 color, camHal->dispWidth * camHal->dispHeight * 1.5 + 2 * 1024);
2162 convert_data_frm_cam_to_disp(camHal, buffer_id);
2172 (char*) camHal->previewMem.camera_memory[buffer_id]->data,
2173 camHal->dispWidth * camHal->dispHeight * 1.5,
2183 if(0 == put_buf_to_display(camHal, buffer_id)) {
2194 if(0 == put_buf_to_cam(camHal)) {
2206 int previewBufSize = camHal->prevWidth * camHal->prevHeight * 1.5;
2211 camHal->previewMem.private_buffer_handle[buffer_id]->size) {
2213 previewMem = camHal->get_memory(
2214 camHal->previewMem.private_buffer_handle[buffer_id]->fd,
2217 camHal->cb_ctxt);
2228 camHal->previewMem.private_buffer_handle[buffer_id]->size);
2232 data = camHal->previewMem.camera_memory[buffer_id];
2239 camHal->lock.unlock();
2240 if((camHal->msgEnabledFlag & CAMERA_MSG_PREVIEW_FRAME) &&
2241 camHal->data_cb){
2243 camHal->data_cb(msgType, data, 0,metadata, camHal->cb_ctxt);
2244 ALOGD("%s: after data callback: %p", __func__, camHal->data_cb);
2246 camHal->lock.lock();
2408 * camHal - camera HAL handle
2416 static int launchTakePictureThread(camera_hardware_t *camHal)
2421 if(!camHal) {
2422 ALOGE("%s: camHal is NULL", __func__);
2431 pthread_create(&camHal->takePictureThread, &attr, takePictureThread, camHal);
2442 * camHal - camera HAL handle
2455 camera_hardware_t *camHal = NULL;
2460 camHal = (camera_hardware_t *)hcamHal;
2463 if(!camHal) {
2464 ALOGE("%s: camHal is NULL", __func__);
2485 Mutex::Autolock autoLock(camHal->lock);
2491 if (camHal->msgEnabledFlag & CAMERA_MSG_SHUTTER){
2492 camHal->lock.unlock();
2493 camHal->notify_cb(CAMERA_MSG_SHUTTER, 0, 0, camHal->cb_ctxt);
2494 camHal->lock.lock();
2500 USB_CAM_OPEN(camHal);
2503 rc = initUsbCamera(camHal, camHal->pictWidth, camHal->pictHeight,
2506 rc = initUsbCamera(camHal, camHal->pictWidth, camHal->pictHeight,
2511 rc = startUsbCamCapture(camHal);
2523 FD_SET(camHal->fd, &fds);
2529 ALOGD("%s: b4 select on camHal->fd : %d", __func__, camHal->fd);
2530 r = select(camHal->fd + 1, &fds, NULL, NULL, &tv);
2543 if (0 == get_buf_from_cam(camHal))
2551 mem_info = &camHal->pictMem.mem_info[0];
2560 camHal->pictMem.camera_memory[0] = camHal->get_memory(
2561 mem_info->fd, mem_info->size, 1, camHal->cb_ctxt);
2562 if(!camHal->pictMem.camera_memory[0])
2567 (char*)camHal->pictMem.camera_memory[0]->data,
2568 camHal->pictMem.camera_memory[0]->size);
2569 camHal->pictMem.camera_memory[0]->size = jpegLength;
2572 memcpy((char*)camHal->pictMem.camera_memory[0]->data,
2573 (char *)camHal->buffers[camHal->curCaptureBuf.index].data,
2574 camHal->curCaptureBuf.bytesused);
2575 camHal->pictMem.camera_memory[0]->size = camHal->curCaptureBuf.bytesused;
2576 jpegLength = camHal->curCaptureBuf.bytesused;
2579 rc = encodeJpeg(camHal);
2591 if ((camHal->msgEnabledFlag & CAMERA_MSG_COMPRESSED_IMAGE) &&
2592 (camHal->data_cb)){
2594 camHal->lock.unlock();
2596 camHal->data_cb(CAMERA_MSG_COMPRESSED_IMAGE,
2597 camHal->pictMem.camera_memory[0],
2598 0, NULL, camHal->cb_ctxt);
2599 camHal->lock.lock();
2603 if(camHal->pictMem.camera_memory[0])
2604 camHal->pictMem.camera_memory[0]->release(
2605 camHal->pictMem.camera_memory[0]);
2614 if(0 == put_buf_to_cam(camHal)) {
2623 rc = stopUsbCamCapture(camHal);
2626 rc = unInitV4L2mmap(camHal);
2629 USB_CAM_CLOSE(camHal);
2633 if(camHal->prvwStoppedForPicture)
2636 device.priv = (void *)camHal;
2638 USB_CAM_OPEN(camHal);
2640 camHal->lock.unlock();
2644 camHal->lock.lock();
2645 camHal->prvwStoppedForPicture = 0;
2649 camHal->takePictInProgress = 0;
2660 * camHal - camera HAL handle
2724 * camHal - camera HAL handle
2757 * camHal - camera HAL handle
2793 * camHal - camera HAL handle
2801 int encodeJpeg(camera_hardware_t *camHal)
2817 jpegInMemInfo.size = camHal->pictWidth * camHal->pictHeight * 2;
2823 jpegInMem = camHal->get_memory(
2824 jpegInMemInfo.fd, jpegInMemInfo.size, 1, camHal->cb_ctxt);
2831 (char *)camHal->buffers[camHal->curCaptureBuf.index].data,
2832 (char *)jpegInMem->data, camHal->pictWidth, camHal->pictHeight);
2835 /* - Populate JPEG encoding parameters from the camHal context */
2841 mmJpegJob.encode_job.userdata = (void *)camHal;
2861 srcBuf->src_dim.width = camHal->pictWidth;
2862 srcBuf->src_dim.height = camHal->pictHeight;
2863 srcBuf->out_dim.width = camHal->pictWidth;
2864 srcBuf->out_dim.height = camHal->pictHeight;
2869 srcBuf->quality = camHal->pictJpegQlty;
2875 (uint8_t*)camHal->pictMem.camera_memory[0]->data;
2879 camHal->pictWidth * camHal->pictHeight * 1.5;
2891 camHal->jpegEncInProgress = 1;
2897 pthread_mutex_init(&camHal->jpegEncMutex, NULL);
2898 pthread_cond_init(&camHal->jpegEncCond, NULL);
2900 pthread_mutex_lock(&camHal->jpegEncMutex);
2901 while(camHal->jpegEncInProgress)
2902 pthread_cond_wait(&camHal->jpegEncCond, &camHal->jpegEncMutex);
2903 pthread_mutex_unlock(&camHal->jpegEncMutex);
2925 * camHal - camera HAL handle
2942 camera_hardware_t *camHal = NULL;
2946 camHal = (camera_hardware_t*) userData;
2951 camHal->jpegEncInProgress = 0;
2954 pthread_mutex_lock(&camHal->jpegEncMutex);
2955 pthread_cond_signal(&camHal->jpegEncCond);
2956 pthread_mutex_unlock(&camHal->jpegEncMutex);