📄 sensorformats.h
字号:
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Use of this sample source code is subject to the terms of the Microsoft
// license agreement under which you licensed this sample source code. If
// you did not accept the terms of the license agreement, you are not
// authorized to use this sample source code. For the terms of the license,
// please see the license agreement between you and Microsoft or, if applicable,
// see the LICENSE.RTF on your install media or the root of your tools installation.
// THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
//
#ifndef __SENSORFORMATS_H
#define __SENSORFORMATS_H
// Camera sensor default settings (should be synchronize with "adapterprops.h")
// Sensor h/w - Agilent ADCM2650
#define DEFAULT_VIDEO_WIDTH 176
#define DEFAULT_VIDEO_HEIGHT 144
#define DEFAULT_STILL_WIDTH 176
#define DEFAULT_STILL_HEIGHT 144
#define DEFAULT_CAMERA_STILL_INPUT_FORMAT (XLLP_CAMERA_IMAGE_FORMAT_RGB888_PACKED)
#define DEFAULT_CAMERA_STILL_OUTPUT_FORMAT (XLLP_CAMERA_IMAGE_FORMAT_RGB565)
#define DEFAULT_CAMERA_VIDEO_INPUT_FORMAT (XLLP_CAMERA_IMAGE_FORMAT_YCBCR422_PACKED)
#define DEFAULT_CAMERA_VIDEO_OUTPUT_FORMAT (XLLP_CAMERA_IMAGE_FORMAT_YCBCR422_PACKED)
#ifndef mmioFOURCC
#define mmioFOURCC( ch0, ch1, ch2, ch3 ) \
( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) | \
( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) )
#endif
#define BITRATE(DX,DY,DBITCOUNT,FRAMERATE) (DX * abs(DY) * DBITCOUNT * FRAMERATE)
#define SAMPLESIZE(DX,DY,DBITCOUNT) (DX * abs(DY) * DBITCOUNT / 8)
#define REFTIME_30FPS 333333
#define REFTIME_15FPS 666666
#define FRAMEINTERVAL_30FPS 333000
#define FRAMEINTERVAL_15FPS 666000
#define FRAMEINTERVAL_7_5FPS 1333333
#define FRAMEINTERVAL_3_75FPS 2666666
//
// FourCC of the YUV formats
// For information about FourCC, go to:
// http://www.webartz.com/fourcc/indexyuv.htm
// http://www.fourcc.org
//
#define FOURCC_UYVY mmioFOURCC('U', 'Y', 'V', 'Y') // MSYUV: 1394 conferencing camera 4:4:4 mode 1 and 3
#define FOURCC_YUY2 mmioFOURCC('Y', 'U', 'Y', '2')
#define FOURCC_YV12 mmioFOURCC('Y', 'V', '1', '2')
#define MEDIASUBTYPE_RGB565 {0xe436eb7b, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70}
#define MEDIASUBTYPE_RGB555 {0xe436eb7c, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70}
#define MEDIASUBTYPE_RGB24 {0xe436eb7d, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70}
#define MEDIASUBTYPE_RGB32 {0xe436eb7e, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70}
#define MEDIASUBTYPE_YV12 {0x32315659, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
#define MEDIASUBTYPE_YUY2 {0x32595559, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
#define MAKE_STREAM_MODE_YV12(StreamModeName, DX, DY, DBITCOUNT, FRAMERATE) \
CS_DATARANGE_VIDEO StreamModeName = \
{ \
{ \
sizeof (CS_DATARANGE_VIDEO), \
0, \
SAMPLESIZE(DX,DY,DBITCOUNT), \
0, \
STATIC_CSDATAFORMAT_TYPE_VIDEO, \
MEDIASUBTYPE_YV12, \
STATIC_CSDATAFORMAT_SPECIFIER_VIDEOINFO \
}, \
\
TRUE, \
TRUE, \
CS_VIDEOSTREAM_CAPTURE, \
0, \
\
{ \
STATIC_CSDATAFORMAT_SPECIFIER_VIDEOINFO, \
CS_AnalogVideo_None, \
DX,DY, \
DX,DY, \
DX,DY, \
1, \
1, \
1, \
1, \
DX, DY, \
DX, DY, \
DX, \
DY, \
0, \
0, \
0, \
0, \
REFTIME_15FPS, \
REFTIME_15FPS, \
BITRATE(DX,DY,DBITCOUNT,FRAMERATE) / 8, \
BITRATE(DX,DY,DBITCOUNT,FRAMERATE), \
}, \
\
{ \
0,0,0,0, \
0,0,0,0, \
BITRATE(DX,DY,DBITCOUNT,FRAMERATE), \
0L, \
REFTIME_15FPS, \
sizeof (CS_BITMAPINFOHEADER), \
DX, \
DY, \
1, \
DBITCOUNT, \
FOURCC_YV12 | BI_SRCPREROTATE, \
SAMPLESIZE(DX,DY,DBITCOUNT), \
0, \
0, \
0, \
0, \
0, 0, 0 \
} \
};
#define MAKE_STREAM_MODE_YUY2(StreamModeName, DX, DY, DBITCOUNT, FRAMERATE) \
CS_DATARANGE_VIDEO StreamModeName = \
{ \
{ \
sizeof (CS_DATARANGE_VIDEO), \
0, \
SAMPLESIZE(DX,DY,DBITCOUNT), \
0, \
STATIC_CSDATAFORMAT_TYPE_VIDEO, \
MEDIASUBTYPE_YUY2, \
STATIC_CSDATAFORMAT_SPECIFIER_VIDEOINFO \
}, \
\
TRUE, \
TRUE, \
CS_VIDEOSTREAM_CAPTURE, \
0, \
\
{ \
STATIC_CSDATAFORMAT_SPECIFIER_VIDEOINFO, \
CS_AnalogVideo_None, \
DX,DY, \
DX,DY, \
DX,DY, \
1, \
1, \
1, \
1, \
DX, DY, \
DX, DY, \
DX, \
DY, \
0, \
0, \
0, \
0, \
REFTIME_15FPS, \
REFTIME_15FPS, \
BITRATE(DX,DY,DBITCOUNT,FRAMERATE) / 8, \
BITRATE(DX,DY,DBITCOUNT,FRAMERATE), \
}, \
\
{ \
0,0,0,0, \
0,0,0,0, \
BITRATE(DX,DY,DBITCOUNT,FRAMERATE), \
0L, \
REFTIME_15FPS, \
sizeof (CS_BITMAPINFOHEADER), \
DX, \
DY, \
1, \
DBITCOUNT, \
FOURCC_YUY2 | BI_SRCPREROTATE, \
SAMPLESIZE(DX,DY,DBITCOUNT), \
0, \
0, \
0, \
0, \
0, 0, 0 \
} \
};
#define MAKE_STREAM_MODE_RGB565(StreamModeName, DX, DY, DBITCOUNT, FRAMERATE) \
CS_DATARANGE_VIDEO StreamModeName = \
{ \
{ \
sizeof (CS_DATARANGE_VIDEO), \
0, \
SAMPLESIZE(DX,DY,DBITCOUNT), \
0, \
STATIC_CSDATAFORMAT_TYPE_VIDEO, \
MEDIASUBTYPE_RGB565, \
STATIC_CSDATAFORMAT_SPECIFIER_VIDEOINFO \
}, \
\
TRUE, \
TRUE, \
CS_VIDEOSTREAM_CAPTURE, \
0, \
\
{ \
STATIC_CSDATAFORMAT_SPECIFIER_VIDEOINFO, \
CS_AnalogVideo_None, \
DX,DY, \
DX,DY, \
DX,DY, \
1, \
1, \
1, \
1, \
DX, DY, \
DX, DY, \
DX, \
DY, \
0, \
0, \
0, \
0, \
REFTIME_15FPS, \
REFTIME_15FPS, \
BITRATE(DX,DY,DBITCOUNT,FRAMERATE) / 4, \
BITRATE(DX,DY,DBITCOUNT,FRAMERATE), \
}, \
\
{ \
0,0,0,0, \
0,0,0,0, \
BITRATE(DX,DY,DBITCOUNT,FRAMERATE), \
0L, \
REFTIME_15FPS, \
sizeof (CS_BITMAPINFOHEADER), \
DX, \
DY, \
1, \
DBITCOUNT, \
CS_BI_BITFIELDS | BI_SRCPREROTATE, \
SAMPLESIZE(DX,DY,DBITCOUNT), \
0, \
0, \
0, \
0, \
0xf800, 0x07e0, 0x001f \
} \
};
// For Still pictures, we will use DCAM_StreamMode_4 and for Capture
// We will use DCAM_StreamMode_5. We need to color convert from YCbYCr to
// YV12.
MAKE_STREAM_MODE_RGB565(DCAM_StreamMode_0, 160, 120, 16, 30);
MAKE_STREAM_MODE_RGB565(DCAM_StreamMode_1, 176, 144, 16, 30);
MAKE_STREAM_MODE_RGB565(DCAM_StreamMode_2, 320, 240, 16, 15);
MAKE_STREAM_MODE_RGB565(DCAM_StreamMode_3, 320, 240, 16, 30);
MAKE_STREAM_MODE_RGB565(DCAM_StreamMode_4, 640, 480, 16, 15);
MAKE_STREAM_MODE_YV12(DCAM_StreamMode_5, 176, -144, 12, 15);
MAKE_STREAM_MODE_YV12(DCAM_StreamMode_6, 320, -240, 12, 30);
MAKE_STREAM_MODE_YUY2(DCAM_StreamMode_7, 176, -144, 16, 15);
#endif //__SENSORFORMATS_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -