diff options
author | Vishal Bhoj <vishal.bhoj@linaro.org> | 2011-11-11 18:09:08 +0530 |
---|---|---|
committer | Vishal Bhoj <vishal.bhoj@linaro.org> | 2011-11-11 19:15:47 +0530 |
commit | 120c22ceb513ca37685854e467fb4cb482840d1c (patch) | |
tree | bea205b17fb99bb2b943dc1c515e1c9400901f8b | |
parent | 9f3cf8400b6c7e43b8ca434efb61acdbd42b3fa6 (diff) | |
download | common-linaro_android_2.3.5.tar.gz |
camera: modified to support recordinglinaro_android_2.3.7linaro_android_2.3.5
The cameraHardware implementation has been
modified for recording and also to support
multipple resolutions.It also has additional
cameraParameters which are tried to access
by linphone application.
Note:Moving ahead we may have to add other
cameraparameters since there are a whole set
of parameters which application can querry
Change-Id: I7e3eee472c9ae0ca330d763b7272081962efb15b
Signed-off-by: Vishal Bhoj <vishal.bhoj@linaro.org>
-rw-r--r-- | libcamera/Android.mk | 2 | ||||
-rw-r--r-- | libcamera/CameraHardware.cpp | 67 | ||||
-rw-r--r-- | libcamera/V4L2Camera.cpp | 93 | ||||
-rw-r--r-- | libcamera/V4L2Camera.h | 1 | ||||
-rw-r--r-- | libcamera/convert.S | 35 | ||||
-rw-r--r-- | libcamera/converter.cpp | 261 | ||||
-rw-r--r-- | libcamera/converter.h | 25 |
7 files changed, 75 insertions, 409 deletions
diff --git a/libcamera/Android.mk b/libcamera/Android.mk index e2a82b9..9e7dc3e 100644 --- a/libcamera/Android.mk +++ b/libcamera/Android.mk @@ -7,7 +7,7 @@ include $(CLEAR_VARS) LOCAL_SRC_FILES := \ CameraHardware.cpp \ V4L2Camera.cpp \ - converter.cpp + convert.S LOCAL_C_INCLUDES += external/jpeg diff --git a/libcamera/CameraHardware.cpp b/libcamera/CameraHardware.cpp index 64afcc3..1c30f0d 100644 --- a/libcamera/CameraHardware.cpp +++ b/libcamera/CameraHardware.cpp @@ -25,15 +25,20 @@ #include <fcntl.h> #include <sys/mman.h> -#define MIN_WIDTH 640 -#define MIN_HEIGHT 480 -#define CAM_SIZE "640x480" +#define MIN_WIDTH 320 +#define MIN_HEIGHT 240 +#define CAM_SIZE "320x240" #define PIXEL_FORMAT V4L2_PIX_FMT_YUYV +extern "C" { + void yuyv422_to_yuv420sp(unsigned char*,unsigned char*,int,int); +} namespace android { wp<CameraHardwareInterface> CameraHardware::singleton; +const char supportedFpsRanges [] = "(8000,8000),(8000,10000),(10000,10000),(8000,15000),(15000,15000),(8000,20000),(20000,20000),(24000,24000),(25000,25000),(8000,30000),(30000,30000)"; + CameraHardware::CameraHardware(int cameraId) : mCameraId(cameraId), mParameters(), @@ -61,10 +66,11 @@ void CameraHardware::initDefaultParameters() CameraParameters p; p.setPreviewSize(MIN_WIDTH, MIN_HEIGHT); - p.setPreviewFrameRate(15); + p.setPreviewFrameRate(30); p.setPreviewFormat("yuv422sp"); p.set(p.KEY_SUPPORTED_PREVIEW_SIZES, CAM_SIZE); - + p.set(p.KEY_SUPPORTED_PREVIEW_SIZES, "640x480"); + p.set(CameraParameters::KEY_VIDEO_FRAME_FORMAT,CameraParameters::PIXEL_FORMAT_YUV420SP); p.setPictureSize(MIN_WIDTH, MIN_HEIGHT); p.setPictureFormat("jpeg"); p.set(p.KEY_SUPPORTED_PICTURE_SIZES, CAM_SIZE); @@ -125,15 +131,17 @@ bool CameraHardware::msgTypeEnabled(int32_t msgType) //------------------------------------------------------------- int CameraHardware::previewThread() { + int width, height; + mParameters.getPreviewSize(&width, &height); if (!previewStopped) { // Get preview frame camera.GrabPreviewFrame(mHeap->getBase()); if ((mMsgEnabled & CAMERA_MSG_PREVIEW_FRAME) || - (mMsgEnabled & CAMERA_MSG_VIDEO_FRAME)) { - if (mMsgEnabled & CAMERA_MSG_VIDEO_FRAME) { - camera.GrabRecordFrame(mRecordHeap->getBase()); - nsecs_t timeStamp = systemTime(SYSTEM_TIME_MONOTONIC); - mTimestampFn(timeStamp, CAMERA_MSG_VIDEO_FRAME,mRecordBuffer, mUser); + (mMsgEnabled & CAMERA_MSG_VIDEO_FRAME)) { + if ((mMsgEnabled & CAMERA_MSG_VIDEO_FRAME ) && mRecordRunning ) { + yuyv422_to_yuv420sp((unsigned char *)mHeap->getBase(), (unsigned char*)mRecordHeap->getBase(), width, height); + nsecs_t timeStamp = systemTime(SYSTEM_TIME_MONOTONIC); + mTimestampFn(timeStamp, CAMERA_MSG_VIDEO_FRAME,mRecordBuffer, mUser); } mDataFn(CAMERA_MSG_PREVIEW_FRAME,mBuffer, mUser); } @@ -154,11 +162,11 @@ status_t CameraHardware::startPreview() return INVALID_OPERATION; } LOGI("startPreview: in startpreview \n"); - + mParameters.getPreviewSize(&width, &height); for( i=0; i<10; i++) { sprintf(devnode,"/dev/video%d",i); - LOGI("trying the node %s \n",devnode); - ret = camera.Open(devnode, MIN_WIDTH, MIN_HEIGHT, PIXEL_FORMAT); + LOGI("trying the node %s width=%d height=%d \n",devnode,width,height); + ret = camera.Open(devnode, width, height, PIXEL_FORMAT); if( ret >= 0) break; } @@ -166,7 +174,7 @@ status_t CameraHardware::startPreview() if( ret < 0) return -1; - mPreviewFrameSize = MIN_WIDTH * MIN_HEIGHT * 2; + mPreviewFrameSize = width * height * 2; mHeap = new MemoryHeapBase(mPreviewFrameSize); mBuffer = new MemoryBase(mHeap, 0, mPreviewFrameSize); @@ -201,12 +209,6 @@ void CameraHardware::stopPreview() previewStopped = true; } - if (mPreviewThread != 0) { - camera.Uninit(); - camera.StopStreaming(); - camera.Close(); - } - { Mutex::Autolock lock(mLock); previewThread = mPreviewThread; @@ -216,6 +218,12 @@ void CameraHardware::stopPreview() previewThread->requestExitAndWait(); } + if (mPreviewThread != 0) { + camera.Uninit(); + camera.StopStreaming(); + camera.Close(); + } + Mutex::Autolock lock(mLock); mPreviewThread.clear(); } @@ -229,8 +237,8 @@ status_t CameraHardware::startRecording() { Mutex::Autolock lock(mLock); - mRecordHeap = new MemoryHeapBase(mPreviewFrameSize); - mRecordBuffer = new MemoryBase(mRecordHeap, 0, mPreviewFrameSize); + mRecordHeap = new MemoryHeapBase(mPreviewFrameSize*3/4); + mRecordBuffer = new MemoryBase(mRecordHeap, 0, mPreviewFrameSize*3/4); mRecordRunning = true; return NO_ERROR; @@ -307,11 +315,12 @@ int CameraHardware::pictureThread() int width, height; mParameters.getPictureSize(&width, &height); + mParameters.getPreviewSize(&width, &height); for(i=0; i<10; i++) { sprintf(devnode,"/dev/video%d",i); LOGI("trying the node %s \n",devnode); - ret = camera.Open(devnode, MIN_WIDTH, MIN_HEIGHT, PIXEL_FORMAT); + ret = camera.Open(devnode, width, height, PIXEL_FORMAT); if( ret >= 0) break; } @@ -374,16 +383,16 @@ status_t CameraHardware::setParameters(const CameraParameters& params) int w, h; int framerate; + mParameters = params; + params.getPictureSize(&w, &h); + mParameters.setPictureSize(w,h); params.getPreviewSize(&w, &h); + mParameters.setPreviewSize(w,h); framerate = params.getPreviewFrameRate(); LOGD("PREVIEW SIZE: w=%d h=%d framerate=%d", w, h, framerate); - - params.getPictureSize(&w, &h); - mParameters = params; - - // Set to fixed sizes - mParameters.setPreviewSize(MIN_WIDTH,MIN_HEIGHT); + mParameters.setPreviewSize(w,h); + mParameters.set(CameraParameters::KEY_SUPPORTED_PREVIEW_FPS_RANGE, supportedFpsRanges); return NO_ERROR; } diff --git a/libcamera/V4L2Camera.cpp b/libcamera/V4L2Camera.cpp index 6c0ed4b..78e17b0 100644 --- a/libcamera/V4L2Camera.cpp +++ b/libcamera/V4L2Camera.cpp @@ -13,7 +13,6 @@ #include <utils/threads.h> #include <fcntl.h> -#include "converter.h" #include "V4L2Camera.h" extern "C" { /* Android jpeglib.h missed extern "C" */ @@ -204,8 +203,6 @@ void V4L2Camera::GrabPreviewFrame (void *previewBuffer) unsigned char *tmpBuffer; int ret; - tmpBuffer = (unsigned char *) calloc (1, videoIn->width * videoIn->height * 2); - videoIn->buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; videoIn->buf.memory = V4L2_MEMORY_MMAP; @@ -218,11 +215,7 @@ void V4L2Camera::GrabPreviewFrame (void *previewBuffer) } nDequeued++; - //memcpy (tmpBuffer, videoIn->mem[videoIn->buf.index], (size_t) videoIn->buf.bytesused); - memcpy (tmpBuffer, videoIn->mem[videoIn->buf.index], (size_t) videoIn->buf.bytesused); - //convertYUYVtoYUV422SP((uint8_t *)tmpBuffer, (uint8_t *)previewBuffer, videoIn->width, videoIn->height); - convert((unsigned char *)tmpBuffer, (unsigned char *)previewBuffer, videoIn->width, videoIn->height); - + memcpy (previewBuffer, videoIn->mem[videoIn->buf.index], (size_t) videoIn->buf.bytesused); ret = ioctl(fd, VIDIOC_QBUF, &videoIn->buf); if (ret < 0) { LOGE("GrabPreviewFrame: VIDIOC_QBUF Failed"); @@ -231,42 +224,8 @@ void V4L2Camera::GrabPreviewFrame (void *previewBuffer) nQueued++; - free(tmpBuffer); } -void V4L2Camera::GrabRecordFrame (void *recordBuffer) -{ - unsigned char *tmpBuffer; - int ret; - - tmpBuffer = (unsigned char *) calloc (1, videoIn->width * videoIn->height * 2); - - videoIn->buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - videoIn->buf.memory = V4L2_MEMORY_MMAP; - - /* DQ */ - ret = ioctl(fd, VIDIOC_DQBUF, &videoIn->buf); - if (ret < 0) { - LOGE("GrabRecordFrame: VIDIOC_DQBUF Failed"); - - return; - } - nDequeued++; - - memcpy (tmpBuffer, videoIn->mem[videoIn->buf.index], (size_t) videoIn->buf.bytesused); - - yuyv422_to_yuv420((unsigned char *)tmpBuffer, (unsigned char *)recordBuffer, videoIn->width, videoIn->height); - - ret = ioctl(fd, VIDIOC_QBUF, &videoIn->buf); - if (ret < 0) { - LOGE("GrabRecordFrame: VIDIOC_QBUF Failed"); - return; - } - - nQueued++; - - free(tmpBuffer); -} sp<IMemory> V4L2Camera::GrabRawFrame () { @@ -452,54 +411,4 @@ int V4L2Camera::saveYUYVtoJPEG (unsigned char *inputBuffer, int width, int heigh return fileSize; } -void V4L2Camera::convert(unsigned char *buf, unsigned char *rgb, int width, int height) -{ - int x,y,z=0; - int blocks; - - blocks = (width * height) * 2; - - for (y = 0; y < blocks; y+=4) { - unsigned char Y1, Y2, U, V; - - Y1 = buf[y + 0]; - U = buf[y + 1]; - Y2 = buf[y + 2]; - V = buf[y + 3]; - - yuv_to_rgb16(Y1, U, V, &rgb[y]); - yuv_to_rgb16(Y2, U, V, &rgb[y + 2]); - } - -} - -void V4L2Camera::yuv_to_rgb16(unsigned char y, unsigned char u, unsigned char v, unsigned char *rgb) -{ - int r,g,b; - int z; - int rgb16; - - z = 0; - - r = 1.164 * (y - 16) + 1.596 * (v - 128); - g = 1.164 * (y - 16) - 0.813 * (v - 128) - 0.391 * (u -128); - b = 1.164 * (y - 16) + 2.018 * (u - 128); - - if (r > 255) r = 255; - if (g > 255) g = 255; - if (b > 255) b = 255; - - if (r < 0) r = 0; - if (g < 0) g = 0; - if (b < 0) b = 0; - - rgb16 = (int)(((r >> 3)<<11) | ((g >> 2) << 5)| ((b >> 3) << 0)); - - *rgb = (unsigned char)(rgb16 & 0xFF); - rgb++; - *rgb = (unsigned char)((rgb16 & 0xFF00) >> 8); - -} - - }; // namespace android diff --git a/libcamera/V4L2Camera.h b/libcamera/V4L2Camera.h index a4cf55b..97255ec 100644 --- a/libcamera/V4L2Camera.h +++ b/libcamera/V4L2Camera.h @@ -48,7 +48,6 @@ public: int StopStreaming (); void GrabPreviewFrame (void *previewBuffer); - void GrabRecordFrame (void *recordBuffer); sp<IMemory> GrabRawFrame (); sp<IMemory> GrabJpegFrame (); diff --git a/libcamera/convert.S b/libcamera/convert.S new file mode 100644 index 0000000..5254a30 --- /dev/null +++ b/libcamera/convert.S @@ -0,0 +1,35 @@ + .arch armv7-a + .fpu neon + .text + + .globl yuyv422_to_yuv420sp + .type yuyv422_to_yuv420sp, STT_FUNC + .func yuyv422_to_yuv420sp +yuyv422_to_yuv420sp: + push {r4-r5,lr} + mul r12, r2, r3 + add r4, r0, r2, lsl #1 @ in_1 + add r5, r1, r2 @ out_1 + add lr, r1, r12 @ out_uv +1: + mov r12, r2 +2: + vld1.8 {q0}, [r0]! + vld1.8 {q1}, [r4]! + vuzp.8 d0, d1 + vuzp.8 d2, d3 + vhadd.u8 d1, d1, d3 + vrev16.8 d1, d1 + vst1.8 {d0}, [r1]! + vst1.8 {d2}, [r5]! + vst1.8 {d1}, [lr]! + subs r12, r12, #8 + bgt 2b + add r0, r0, r2, lsl #1 + add r4, r4, r2, lsl #1 + add r1, r1, r2 + add r5, r5, r2 + subs r3, r3, #2 + bgt 1b + pop {r4-r5,pc} +.endfunc diff --git a/libcamera/converter.cpp b/libcamera/converter.cpp deleted file mode 100644 index f0dc54d..0000000 --- a/libcamera/converter.cpp +++ /dev/null @@ -1,261 +0,0 @@ -/* -** -** Copyright (C) 2009 0xlab.org - http://0xlab.org/ -** Copyright 2008, The Android Open Source Project -** -** This work is based on yuvconverter project. -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - -#include "converter.h" - -void -yuyv422_to_yuv420(unsigned char *bufsrc, unsigned char *bufdest, int width, int height) -{ - unsigned char *ptrsrcy1, *ptrsrcy2; - unsigned char *ptrsrcy3, *ptrsrcy4; - unsigned char *ptrsrccb1, *ptrsrccb2; - unsigned char *ptrsrccb3, *ptrsrccb4; - unsigned char *ptrsrccr1, *ptrsrccr2; - unsigned char *ptrsrccr3, *ptrsrccr4; - int srcystride, srcccstride; - - ptrsrcy1 = bufsrc ; - ptrsrcy2 = bufsrc + (width<<1) ; - ptrsrcy3 = bufsrc + (width<<1)*2 ; - ptrsrcy4 = bufsrc + (width<<1)*3 ; - - ptrsrccb1 = bufsrc + 1; - ptrsrccb2 = bufsrc + (width<<1) + 1; - ptrsrccb3 = bufsrc + (width<<1)*2 + 1; - ptrsrccb4 = bufsrc + (width<<1)*3 + 1; - - ptrsrccr1 = bufsrc + 3; - ptrsrccr2 = bufsrc + (width<<1) + 3; - ptrsrccr3 = bufsrc + (width<<1)*2 + 3; - ptrsrccr4 = bufsrc + (width<<1)*3 + 3; - - srcystride = (width<<1)*3; - srcccstride = (width<<1)*3; - - unsigned char *ptrdesty1, *ptrdesty2; - unsigned char *ptrdesty3, *ptrdesty4; - unsigned char *ptrdestcb1, *ptrdestcb2; - unsigned char *ptrdestcr1, *ptrdestcr2; - int destystride, destccstride; - - ptrdesty1 = bufdest; - ptrdesty2 = bufdest + width; - ptrdesty3 = bufdest + width*2; - ptrdesty4 = bufdest + width*3; - - ptrdestcb1 = bufdest + width*height; - ptrdestcb2 = bufdest + width*height + (width>>1); - - ptrdestcr1 = bufdest + width*height + ((width*height) >> 2); - ptrdestcr2 = bufdest + width*height + ((width*height) >> 2) + (width>>1); - - destystride = (width)*3; - destccstride = (width>>1); - - int i, j; - - for(j=0; j<(height/4); j++) - { - for(i=0;i<(width/2);i++) - { - (*ptrdesty1++) = (*ptrsrcy1); - (*ptrdesty2++) = (*ptrsrcy2); - (*ptrdesty3++) = (*ptrsrcy3); - (*ptrdesty4++) = (*ptrsrcy4); - - ptrsrcy1 += 2; - ptrsrcy2 += 2; - ptrsrcy3 += 2; - ptrsrcy4 += 2; - - (*ptrdesty1++) = (*ptrsrcy1); - (*ptrdesty2++) = (*ptrsrcy2); - (*ptrdesty3++) = (*ptrsrcy3); - (*ptrdesty4++) = (*ptrsrcy4); - - ptrsrcy1 += 2; - ptrsrcy2 += 2; - ptrsrcy3 += 2; - ptrsrcy4 += 2; - - (*ptrdestcb1++) = (*ptrsrccb1); - (*ptrdestcb2++) = (*ptrsrccb3); - - ptrsrccb1 += 4; - ptrsrccb3 += 4; - - (*ptrdestcr1++) = (*ptrsrccr1); - (*ptrdestcr2++) = (*ptrsrccr3); - - ptrsrccr1 += 4; - ptrsrccr3 += 4; - - } - - - /* Update src pointers */ - ptrsrcy1 += srcystride; - ptrsrcy2 += srcystride; - ptrsrcy3 += srcystride; - ptrsrcy4 += srcystride; - - ptrsrccb1 += srcccstride; - ptrsrccb3 += srcccstride; - - ptrsrccr1 += srcccstride; - ptrsrccr3 += srcccstride; - - - /* Update dest pointers */ - ptrdesty1 += destystride; - ptrdesty2 += destystride; - ptrdesty3 += destystride; - ptrdesty4 += destystride; - - ptrdestcb1 += destccstride; - ptrdestcb2 += destccstride; - - ptrdestcr1 += destccstride; - ptrdestcr2 += destccstride; - - } -} - -void -yuyv422_to_yuv420sp(unsigned char *bufsrc, unsigned char *bufdest, int width, int height) -{ - unsigned char *ptrsrcy1, *ptrsrcy2; - unsigned char *ptrsrcy3, *ptrsrcy4; - unsigned char *ptrsrccb1, *ptrsrccb2; - unsigned char *ptrsrccb3, *ptrsrccb4; - unsigned char *ptrsrccr1, *ptrsrccr2; - unsigned char *ptrsrccr3, *ptrsrccr4; - int srcystride, srcccstride; - - ptrsrcy1 = bufsrc ; - ptrsrcy2 = bufsrc + (width<<1) ; - ptrsrcy3 = bufsrc + (width<<1)*2 ; - ptrsrcy4 = bufsrc + (width<<1)*3 ; - - ptrsrccb1 = bufsrc + 1; - ptrsrccb2 = bufsrc + (width<<1) + 1; - ptrsrccb3 = bufsrc + (width<<1)*2 + 1; - ptrsrccb4 = bufsrc + (width<<1)*3 + 1; - - ptrsrccr1 = bufsrc + 3; - ptrsrccr2 = bufsrc + (width<<1) + 3; - ptrsrccr3 = bufsrc + (width<<1)*2 + 3; - ptrsrccr4 = bufsrc + (width<<1)*3 + 3; - - srcystride = (width<<1)*3; - srcccstride = (width<<1)*3; - - unsigned char *ptrdesty1, *ptrdesty2; - unsigned char *ptrdesty3, *ptrdesty4; - unsigned char *ptrdestcb1, *ptrdestcb2; - unsigned char *ptrdestcr1, *ptrdestcr2; - int destystride, destccstride; - - ptrdesty1 = bufdest; - ptrdesty2 = bufdest + width; - ptrdesty3 = bufdest + width*2; - ptrdesty4 = bufdest + width*3; - - ptrdestcb1 = bufdest + width*height; - ptrdestcb2 = bufdest + width*height + width; - - ptrdestcr1 = bufdest + width*height + 1; - ptrdestcr2 = bufdest + width*height + width + 1; - - destystride = (width)*3; - destccstride = width; - - int i, j; - - for(j=0; j<(height/4); j++) - { - for(i=0;i<(width/2);i++) - { - (*ptrdesty1++) = (*ptrsrcy1); - (*ptrdesty2++) = (*ptrsrcy2); - (*ptrdesty3++) = (*ptrsrcy3); - (*ptrdesty4++) = (*ptrsrcy4); - - ptrsrcy1 += 2; - ptrsrcy2 += 2; - ptrsrcy3 += 2; - ptrsrcy4 += 2; - - (*ptrdesty1++) = (*ptrsrcy1); - (*ptrdesty2++) = (*ptrsrcy2); - (*ptrdesty3++) = (*ptrsrcy3); - (*ptrdesty4++) = (*ptrsrcy4); - - ptrsrcy1 += 2; - ptrsrcy2 += 2; - ptrsrcy3 += 2; - ptrsrcy4 += 2; - - (*ptrdestcb1) = (*ptrsrccb1); - (*ptrdestcb2) = (*ptrsrccb3); - ptrdestcb1 += 2; - ptrdestcb2 += 2; - - ptrsrccb1 += 4; - ptrsrccb3 += 4; - - (*ptrdestcr1) = (*ptrsrccr1); - (*ptrdestcr2) = (*ptrsrccr3); - ptrdestcr1 += 2; - ptrdestcr2 += 2; - - ptrsrccr1 += 4; - ptrsrccr3 += 4; - - } - - - /* Update src pointers */ - ptrsrcy1 += srcystride; - ptrsrcy2 += srcystride; - ptrsrcy3 += srcystride; - ptrsrcy4 += srcystride; - - ptrsrccb1 += srcccstride; - ptrsrccb3 += srcccstride; - - ptrsrccr1 += srcccstride; - ptrsrccr3 += srcccstride; - - - /* Update dest pointers */ - ptrdesty1 += destystride; - ptrdesty2 += destystride; - ptrdesty3 += destystride; - ptrdesty4 += destystride; - - ptrdestcb1 += destccstride; - ptrdestcb2 += destccstride; - - ptrdestcr1 += destccstride; - ptrdestcr2 += destccstride; - - } -} diff --git a/libcamera/converter.h b/libcamera/converter.h deleted file mode 100644 index e7ecf40..0000000 --- a/libcamera/converter.h +++ /dev/null @@ -1,25 +0,0 @@ -/* -** -** Copyright (C) 2009 0xlab.org - http://0xlab.org/ -** Copyright 2008, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - -#ifndef CONVERTER_H -#define CONVERTER_H - -void yuyv422_to_yuv420(unsigned char *bufsrc, unsigned char *bufdest, int width, int height); -void yuyv422_to_yuv420sp(unsigned char *bufsrc, unsigned char *bufdest, int width, int height); - -#endif |