Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

mxcpc_namespace.cpp

00001 //           ///          //                                        Mx clientSDK
00002 //          /////        ////                    Mx Crossplatform Client Library
00003 //         /// XXX     XXX ///
00004 //        ///    XXX XXX    ///     $RCSfile: mxcpc_namespace.cpp,v $
00005 //       ///       XXX       ///     $Revision: 1.7 $
00006 //      ///      XXX XXX      ///     $Date: 2006/01/20 11:57:00 $
00007 //     ////    XXX     XXX    ////     $Author: cvs-kai $
00008 //    ////                     ////
00009 //   ////  M  O  B  O  T  I  X  ////////////////////////////////////////////////
00010 //  //// Security Vision Systems //////////////////////////////////////////////
00011 //                                                                          //
00012 //  Copyright (C) 2005 - 2006, MOBOTIX AG, Germany                         //
00013 //  This software is made available under the BSD licence. Please refer   //
00014 //  to the file LICENCE.TXT contained in this distribution for details.  //
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  *  The generated base64 string will be <tt>0</tt>-terminated.
00105  *
00106  *  Note that the target buffer must be of reasonable size, namely of at least
00107  *   <tt>(byte_num/3 + 1) * 4 + 1</tt> bytes.
00108  *
00109  *  \note The base64 encoding code was adapted from some Bob Trower who has 
00110  *  released it to the public domain.
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     // get next 3-byte block of binary input data...
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     // generate corresponding 4-byte base64 block...
00134     encode_base64_block(in, out, len);
00135     
00136     // ... and write it to target buffer...
00137     *target_buffer++ = out[0];
00138     *target_buffer++ = out[1];
00139     *target_buffer++ = out[2];
00140     *target_buffer++ = out[3];
00141   }  
00142   
00143   // properly terminate base64-string in target buffer
00144   *target_buffer = 0;
00145 }
00146 

Generated on Mon Jan 30 15:13:05 2006 for mxcpc by  doxygen 1.4.4