1 尝试了下CCamera ,打开之后,调用PrepareVideoCaptureL,然后StartVideoCapture。
得到的数据时yuv格式的
/** 4:2:0 format, 8 bits per sample, Y00Y01Y10Y11UV. */
EFormatYUV420Interleaved = 0x0400,
/** 4:2:0 format, 8 bits per sample, Y00Y01Y02Y03...U0...V0... */
EFormatYUV420Planar = 0x0800,
/** 4:2:2 format, 8 bits per sample, UY0VY1. */
EFormatYUV422 = 0x1000,
/** 4:2:2 format, 8 bits per sample, Y1VY0U. */
EFormatYUV422Reversed = 0x2000,
/** 4:4:4 format, 8 bits per sample, Y00U00V00 Y01U01V01... */
EFormatYUV444 = 0x4000,
/** 4:2:0 format, 8 bits per sample, Y00Y01Y02Y03...U0V0... */
EFormatYUV420SemiPlanar = 0x8000,
用YUV Player 是可以播放的,但是是没有音频的。文件也特别的大。
但是可以采集图像。
RGB与YUV的转换
从S60第三版FP2开始,MDF DevVideoRecord API作为SDK API Plug-in的一部分出现了。DevVideoRecord允许对视频解码和预处理进行直接和底层的访问。
传输到解码器的必须是特殊的颜色格式,YUV422或更常见的YUV420(planar),YUV420每个像素有8位luminance (Y),和减少数量的chrominance(U,V)采样,每个都覆盖一个2x2像素区域。在plane模式下,Y,U和V值在内存中被分组为[Y0Y1Y2Y3Y4Y5Y6Y7....U0U1....V0V1],这样增强了图片的压缩率.
下列代码演示了如何将一帧原始RGB(8 bits/channel)转化为YUV420格式。
// Definitions that help access each colour component in source bitmap
#define sR ((TInt32)(s[2]))
#define sG ((TInt32)(s[1]))
#define sB ((TInt32)(s[0]))
#define KImageWidth 176 // QCIF resolution
#define KImageHeigth 144
const TInt KImageNumPixels = KImageWidth * KImageHeigth;
// Lock source bitmap (CFbsBitmap)
iSourceBitmap->LockHeap(EFalse);
TUint8* s = (TUint8*)iSourceBitmap->