00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include <mxcpc_namespace.h>
00021 #include <mxcpcStatusMessageHandler.h>
00022
00023 #include <cstdio>
00024
00025
00026
00027 const char *mxcpc::Base64EncodeTable = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
00028 "abcdefghijklmnopqrstuvwxyz"
00029 "0123456789"
00030 "+/";
00031
00032 int mxcpc::FrameRatePresetNum = 12;
00033 char *mxcpc::FrameRatePresetNames[] = { "Maximum",
00034 "25 fps",
00035 "12 fps",
00036 " 6 fps",
00037 " 4 fps",
00038 " 3 fps",
00039 " 2 fps",
00040 " 1 fps",
00041 "1/2 fps",
00042 "1/3 fps",
00043 "1/4 fps",
00044 "1/5 fps"
00045 };
00046 float mxcpc::FrameRatePresets[] = { 0.0f,
00047 25.0f,
00048 12.0f,
00049 6.0f,
00050 4.0f,
00051 3.0f,
00052 2.0f,
00053 1.0f,
00054 .5f,
00055 .33f,
00056 .25f,
00057 .2f
00058 };
00059
00060 mxcpcStatusMessageHandler *mxcpc::StatusMessageHandler = 0;
00061
00062
00063
00064 const char *mxcpc::getVersionString(void){
00065
00066 return("MxPEG SDK / mxcpc v0.9.1 (c) 2005-2006 MOBOTIX AG");
00067 }
00068
00069
00070 void mxcpc::sendStatusMsg(const char *txt, void *class_ptr) {
00071
00072 if(StatusMessageHandler)
00073 StatusMessageHandler->sendStatusMsg(txt, class_ptr);
00074 else
00075 std::printf("mxcpc : %s\n", txt);
00076 }
00077
00078
00079 void mxcpc::setStatusMessageHandler(mxcpcStatusMessageHandler *handler) {
00080
00081 delete StatusMessageHandler;
00082
00083 StatusMessageHandler = handler;
00084 }
00085
00086
00087 void mxcpc::encode_base64_block(unsigned char in[3],
00088 unsigned char out[4],
00089 int len) {
00090
00091 out[0] = Base64EncodeTable[in[0] >> 2];
00092 out[1] = Base64EncodeTable[((in[0] & 0x03) << 4) | ((in[1] & 0xf0) >> 4)];
00093 out[2]
00094 = (unsigned char)(
00095 len > 1
00096 ? Base64EncodeTable[((in[1] & 0x0f) << 2) | ((in[2] & 0xc0) >> 6)]
00097 : '='
00098 );
00099 out[3] = (unsigned char) (len > 2 ? Base64EncodeTable[in[2] & 0x3f] : '=');
00100 }
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112 void mxcpc::encode_base64(unsigned char *data, int byte_num,
00113 unsigned char *target_buffer) {
00114
00115 unsigned char in[3], out[4];
00116 int i, len;
00117
00118 while(byte_num) {
00119
00120
00121 len = 0;
00122 for(i = 0; i < 3; i++ ) {
00123 if(byte_num) {
00124 in[i] = (unsigned char) *data++;
00125 byte_num--;
00126 len++;
00127 }
00128 else {
00129 in[i] = 0;
00130 }
00131 }
00132
00133
00134 encode_base64_block(in, out, len);
00135
00136
00137 *target_buffer++ = out[0];
00138 *target_buffer++ = out[1];
00139 *target_buffer++ = out[2];
00140 *target_buffer++ = out[3];
00141 }
00142
00143
00144 *target_buffer = 0;
00145 }
00146