Simple USBHost WebCam test program

Dependencies:   F401RE-USBHost mbed

Fork of KL46Z-USBHostC270_example by Norimasa Okamoto

WebカメラからJPEG画像を読み取るテストプログラムです。
使い方はKL46Z-USBHostC270_exampleと同じです。
動作確認カメラ: Logitech C270, Logitech C210, Logitech Q200R(Qcam Orbit AF), LifeCam VX-500
/media/uploads/va009039/f401re-c270-1.jpg /media/uploads/va009039/k64f-c270.jpg

Committer:
va009039
Date:
Tue Jan 28 06:54:16 2014 +0000
Revision:
1:22304b8f8395
support Logitech C210 Q200R, LifeCam VX-700(VX-500), Sonix Camera.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
va009039 1:22304b8f8395 1 // CamInfo.cpp
va009039 1:22304b8f8395 2 #include "USBHostCam.h"
va009039 1:22304b8f8395 3
va009039 1:22304b8f8395 4 // Logitech C270
va009039 1:22304b8f8395 5 #define C270_VID 0x046d
va009039 1:22304b8f8395 6 #define C270_PID 0x0825
va009039 1:22304b8f8395 7 #define C270_160x120 2
va009039 1:22304b8f8395 8 #define C270_176x144 3
va009039 1:22304b8f8395 9 #define C270_320x176 4
va009039 1:22304b8f8395 10 #define C270_320x240 5
va009039 1:22304b8f8395 11 #define C270_352x288 6
va009039 1:22304b8f8395 12 #define C270_432x240 7
va009039 1:22304b8f8395 13 #define C270_640x480 1
va009039 1:22304b8f8395 14 #define C270_544x288 8
va009039 1:22304b8f8395 15 #define C270_640x360 9
va009039 1:22304b8f8395 16 #define C270_752x416 10
va009039 1:22304b8f8395 17 #define C270_800x448 11
va009039 1:22304b8f8395 18 #define C270_800x600 12
va009039 1:22304b8f8395 19
va009039 1:22304b8f8395 20 #define C270_MJPEG 2
va009039 1:22304b8f8395 21 #define C270_YUV2 1
va009039 1:22304b8f8395 22
va009039 1:22304b8f8395 23 #define C270_EN 0x81
va009039 1:22304b8f8395 24 #define C270_MPS 192
va009039 1:22304b8f8395 25 #define C270_IF_ALT_192 1
va009039 1:22304b8f8395 26 #define C270_IF_ALT(A) C270_IF_ALT_##A
va009039 1:22304b8f8395 27
va009039 1:22304b8f8395 28 #define C270_INFO(SIZE) {C270_VID, C270_PID, _##SIZE, 0, \
va009039 1:22304b8f8395 29 "C270", \
va009039 1:22304b8f8395 30 C270_MJPEG, \
va009039 1:22304b8f8395 31 C270_##SIZE, \
va009039 1:22304b8f8395 32 _5FPS, \
va009039 1:22304b8f8395 33 C270_EN, \
va009039 1:22304b8f8395 34 192, \
va009039 1:22304b8f8395 35 C270_IF_ALT(192), \
va009039 1:22304b8f8395 36 }
va009039 1:22304b8f8395 37
va009039 1:22304b8f8395 38 #define C210_PID 0x819
va009039 1:22304b8f8395 39 #define C210_INFO(SIZE) {C270_VID, C210_PID, _##SIZE, 0, \
va009039 1:22304b8f8395 40 "C270", \
va009039 1:22304b8f8395 41 C270_MJPEG, \
va009039 1:22304b8f8395 42 C270_##SIZE, \
va009039 1:22304b8f8395 43 _5FPS, \
va009039 1:22304b8f8395 44 C270_EN, \
va009039 1:22304b8f8395 45 192, \
va009039 1:22304b8f8395 46 C270_IF_ALT(192), \
va009039 1:22304b8f8395 47 }
va009039 1:22304b8f8395 48
va009039 1:22304b8f8395 49 // Logitech Qcam Orbit AF QCAM-200R
va009039 1:22304b8f8395 50 #define Q200R_VID 0x046d
va009039 1:22304b8f8395 51 #define Q200R_PID 0x0994
va009039 1:22304b8f8395 52 #define Q200R_160x120 1
va009039 1:22304b8f8395 53 #define Q200R_176x144 2
va009039 1:22304b8f8395 54 #define Q200R_320x240 3
va009039 1:22304b8f8395 55 #define Q200R_352x288 4
va009039 1:22304b8f8395 56 #define Q200R_640x480 5
va009039 1:22304b8f8395 57 #define Q200R_800x600 6
va009039 1:22304b8f8395 58
va009039 1:22304b8f8395 59 #define Q200R_MJPEG 1
va009039 1:22304b8f8395 60 #define Q200R_YUV2 2
va009039 1:22304b8f8395 61
va009039 1:22304b8f8395 62 #define Q200R_EN 0x81
va009039 1:22304b8f8395 63 #define Q200R_MPS 192
va009039 1:22304b8f8395 64 #define Q200R_IF_ALT_192 1
va009039 1:22304b8f8395 65 #define Q200R_IF_ALT_384 2
va009039 1:22304b8f8395 66 #define Q200R_IF_ALT_512 3
va009039 1:22304b8f8395 67 #define Q200R_IF_ALT_640 4
va009039 1:22304b8f8395 68 #define Q200R_IF_ALT_800 5
va009039 1:22304b8f8395 69 #define Q200R_IF_ALT_944 6
va009039 1:22304b8f8395 70 #define Q200R_IF_ALT(A) Q200R_IF_ALT_##A
va009039 1:22304b8f8395 71 #define Q200R_INFO(SIZE) {Q200R_VID, Q200R_PID, _##SIZE, 0, \
va009039 1:22304b8f8395 72 "Q200R", \
va009039 1:22304b8f8395 73 Q200R_MJPEG, \
va009039 1:22304b8f8395 74 Q200R_##SIZE, \
va009039 1:22304b8f8395 75 _5FPS, \
va009039 1:22304b8f8395 76 Q200R_EN, \
va009039 1:22304b8f8395 77 192, \
va009039 1:22304b8f8395 78 Q200R_IF_ALT(192), \
va009039 1:22304b8f8395 79 }
va009039 1:22304b8f8395 80
va009039 1:22304b8f8395 81 //LifeCam VX700 / VX500
va009039 1:22304b8f8395 82 #define VX700_VID 0x045e
va009039 1:22304b8f8395 83 #define VX700_PID 0x074a
va009039 1:22304b8f8395 84
va009039 1:22304b8f8395 85 #define VX700_160x120 5
va009039 1:22304b8f8395 86 #define VX700_176x144 4
va009039 1:22304b8f8395 87 #define VX700_320x240 3
va009039 1:22304b8f8395 88 #define VX700_352x288 2
va009039 1:22304b8f8395 89 #define VX700_640x480 1
va009039 1:22304b8f8395 90
va009039 1:22304b8f8395 91 #define VX700_MJPEG 1
va009039 1:22304b8f8395 92
va009039 1:22304b8f8395 93 #define VX700_EN 0x81
va009039 1:22304b8f8395 94 #define VX700_MPS 128
va009039 1:22304b8f8395 95 #define VX700_IF_ALT_128 1
va009039 1:22304b8f8395 96 #define VX700_IF_ALT(A) VX700_IF_ALT_##A
va009039 1:22304b8f8395 97 #define VX700_INFO(SIZE) {VX700_VID, VX700_PID, _##SIZE, 0, \
va009039 1:22304b8f8395 98 "VX700", \
va009039 1:22304b8f8395 99 VX700_MJPEG, \
va009039 1:22304b8f8395 100 VX700_##SIZE, \
va009039 1:22304b8f8395 101 _5FPS, \
va009039 1:22304b8f8395 102 VX700_EN, \
va009039 1:22304b8f8395 103 128, \
va009039 1:22304b8f8395 104 VX700_IF_ALT(128), \
va009039 1:22304b8f8395 105 }
va009039 1:22304b8f8395 106
va009039 1:22304b8f8395 107 //Sonix USB 2.0 Camera
va009039 1:22304b8f8395 108 #define SONIX_160x120 5
va009039 1:22304b8f8395 109 #define SONIX_176x144 4
va009039 1:22304b8f8395 110 #define SONIX_320x240 3
va009039 1:22304b8f8395 111 #define SONIX_352x288 2
va009039 1:22304b8f8395 112 #define SONIX_640x480 1
va009039 1:22304b8f8395 113
va009039 1:22304b8f8395 114 #define SONIX_IF_ALT_128 1
va009039 1:22304b8f8395 115 #define SONIX_IF_ALT_256 2
va009039 1:22304b8f8395 116 #define SONIX_IF_ALT_512 3
va009039 1:22304b8f8395 117 #define SONIX_IF_ALT_600 4
va009039 1:22304b8f8395 118 #define SONIX_IF_ALT_800 5
va009039 1:22304b8f8395 119 #define SONIX_IF_ALT_956 6
va009039 1:22304b8f8395 120 #define SONIX_IF_ALT(A) SONIX_IF_ALT_##A
va009039 1:22304b8f8395 121 #define SONIX_INFO(SIZE) {0x0c45, 0x62c0, _##SIZE, 0, \
va009039 1:22304b8f8395 122 "SONIX", \
va009039 1:22304b8f8395 123 1, \
va009039 1:22304b8f8395 124 SONIX_##SIZE, \
va009039 1:22304b8f8395 125 _5FPS, \
va009039 1:22304b8f8395 126 0x81, \
va009039 1:22304b8f8395 127 128, \
va009039 1:22304b8f8395 128 SONIX_IF_ALT(128), \
va009039 1:22304b8f8395 129 }
va009039 1:22304b8f8395 130
va009039 1:22304b8f8395 131 static const CamInfo CamInfoList[] = {
va009039 1:22304b8f8395 132 // Logitech C270
va009039 1:22304b8f8395 133 C270_INFO(160x120),
va009039 1:22304b8f8395 134 C270_INFO(176x144),
va009039 1:22304b8f8395 135 C270_INFO(320x176),
va009039 1:22304b8f8395 136 C270_INFO(320x240),
va009039 1:22304b8f8395 137 C270_INFO(352x288),
va009039 1:22304b8f8395 138 C270_INFO(432x240),
va009039 1:22304b8f8395 139 C270_INFO(640x480),
va009039 1:22304b8f8395 140 C270_INFO(544x288),
va009039 1:22304b8f8395 141 C270_INFO(640x360),
va009039 1:22304b8f8395 142 C270_INFO(752x416),
va009039 1:22304b8f8395 143 C270_INFO(800x448),
va009039 1:22304b8f8395 144 C270_INFO(800x600),
va009039 1:22304b8f8395 145
va009039 1:22304b8f8395 146 // Logitech C210
va009039 1:22304b8f8395 147 C210_INFO(160x120),
va009039 1:22304b8f8395 148 C210_INFO(176x144),
va009039 1:22304b8f8395 149 C210_INFO(320x176),
va009039 1:22304b8f8395 150 C210_INFO(320x240),
va009039 1:22304b8f8395 151 C210_INFO(352x288),
va009039 1:22304b8f8395 152 C210_INFO(432x240),
va009039 1:22304b8f8395 153 C210_INFO(640x480),
va009039 1:22304b8f8395 154 C210_INFO(544x288),
va009039 1:22304b8f8395 155 C210_INFO(640x360),
va009039 1:22304b8f8395 156 C210_INFO(752x416),
va009039 1:22304b8f8395 157 C210_INFO(800x448),
va009039 1:22304b8f8395 158 C210_INFO(800x600),
va009039 1:22304b8f8395 159
va009039 1:22304b8f8395 160 // Logitech Qcam Orbit AF QCAM-200R
va009039 1:22304b8f8395 161 Q200R_INFO(160x120),
va009039 1:22304b8f8395 162 Q200R_INFO(176x144),
va009039 1:22304b8f8395 163 Q200R_INFO(320x240),
va009039 1:22304b8f8395 164 Q200R_INFO(352x288),
va009039 1:22304b8f8395 165 Q200R_INFO(640x480),
va009039 1:22304b8f8395 166 Q200R_INFO(800x600),
va009039 1:22304b8f8395 167
va009039 1:22304b8f8395 168 // LifeCam VX700
va009039 1:22304b8f8395 169 VX700_INFO(160x120),
va009039 1:22304b8f8395 170 VX700_INFO(176x144),
va009039 1:22304b8f8395 171 VX700_INFO(320x240),
va009039 1:22304b8f8395 172 VX700_INFO(352x288),
va009039 1:22304b8f8395 173 VX700_INFO(640x480),
va009039 1:22304b8f8395 174
va009039 1:22304b8f8395 175 // Sonix USB 2.0 Camera
va009039 1:22304b8f8395 176 SONIX_INFO(160x120),
va009039 1:22304b8f8395 177 SONIX_INFO(176x144),
va009039 1:22304b8f8395 178 SONIX_INFO(320x240),
va009039 1:22304b8f8395 179 SONIX_INFO(352x288),
va009039 1:22304b8f8395 180 SONIX_INFO(640x480),
va009039 1:22304b8f8395 181
va009039 1:22304b8f8395 182 // Not found
va009039 1:22304b8f8395 183 {0,0,0,0},
va009039 1:22304b8f8395 184 };
va009039 1:22304b8f8395 185
va009039 1:22304b8f8395 186 CamInfo* getCamInfoList() {
va009039 1:22304b8f8395 187 return const_cast<CamInfo*>(CamInfoList);
va009039 1:22304b8f8395 188 }