contrib/brl/vvid/cmu_1394_camera_params.cxx
Go to the documentation of this file.
00001 // This is brl/vvid/cmu_1394_camera_params.cxx
00002 #include "cmu_1394_camera_params.h"
00003 #include <vcl_iostream.h>
00004 
00005 cmu_1394_camera_params::~cmu_1394_camera_params()
00006 {
00007 }
00008 
00009 cmu_1394_camera_params::cmu_1394_camera_params(int video_format,
00010                                                int video_mode,
00011                                                int frame_rate,
00012                                                bool auto_exposure,
00013                                                bool auto_gain,
00014                                                bool manual_shutter_control,
00015                                                bool auto_exposure_control,
00016                                                int shutter,
00017                                                int min_shutter,
00018                                                int max_shutter,
00019                                                int gain,
00020                                                int min_gain,
00021                                                int max_gain,
00022                                                int brightness,
00023                                                int min_brightness,
00024                                                int max_brightness,
00025                                                int sharpness,
00026                                                int min_sharpness,
00027                                                int max_sharpness,
00028                                                int exposure,
00029                                                int min_exposure,
00030                                                int max_exposure,
00031                                                bool capture,
00032                                                bool rgb,
00033                                                bool autowhitebalance,
00034                                                int whitebalanceU,
00035                                                int whitebalanceV,
00036                                                bool onepushWBbalance,
00037                                                int min_WB,
00038                                                int max_WB)
00039  
00040 { 
00041 
00042  video_format_ = video_format;   
00043  video_mode_ = video_mode;       
00044  frame_rate_ = frame_rate;
00045  auto_exposure_ = auto_exposure;
00046  auto_gain_ = auto_gain;
00047   manual_shutter_control_ = manual_shutter_control;
00048   shutter_ = shutter;
00049   min_shutter_ = min_shutter;
00050   max_shutter_ = max_shutter;
00051   gain_ = gain;
00052   min_gain_ = min_gain;
00053   max_gain_ = max_gain;
00054   brightness_ = brightness;
00055   min_brightness_ = min_brightness;
00056   max_brightness_ = max_brightness;
00057   sharpness_ = sharpness;
00058   min_sharpness_ = min_sharpness;
00059   max_sharpness_ = max_sharpness;
00060   auto_exposure_control_ = auto_exposure_control;
00061   exposure_ = exposure;
00062   min_exposure_ = min_exposure;
00063   max_exposure_ = max_exposure;
00064   capture_ = capture;
00065   rgb_ = rgb;
00066   autowhitebalance_=autowhitebalance;
00067   whitebalanceU_=whitebalanceU;
00068   whitebalanceV_=whitebalanceV;
00069   onepushWBbalance_=onepushWBbalance;
00070   min_WB_=min_WB;
00071   max_WB_=max_WB;
00072 }
00073 
00074 void cmu_1394_camera_params::set_params(const cmu_1394_camera_params& cp)
00075 {
00076   video_format_ = cp.video_format_;
00077   video_mode_ = cp.video_mode_;
00078   frame_rate_ = cp.frame_rate_;
00079   auto_exposure_ = cp.auto_exposure_;
00080   auto_gain_ = cp.auto_gain_;
00081   manual_shutter_control_ =  cp.manual_shutter_control_;
00082   shutter_ = cp.shutter_;
00083   min_shutter_ = cp.min_shutter_;
00084   max_shutter_ = cp.max_shutter_;
00085   gain_ = cp.gain_;
00086   min_gain_ = cp.min_gain_;
00087   max_gain_ = cp.max_gain_;
00088   brightness_ = cp.brightness_;
00089   min_brightness_ = cp.min_brightness_;
00090   max_brightness_ = cp.max_brightness_;
00091   sharpness_ = cp.sharpness_;
00092   min_sharpness_ = cp.min_sharpness_;
00093   max_sharpness_ = cp.max_sharpness_;
00094   auto_exposure_control_ = cp.auto_exposure_control_;
00095   exposure_ = cp.exposure_;
00096   min_exposure_ = cp.min_exposure_;
00097   max_exposure_ = cp.max_exposure_;
00098   capture_ = cp.capture_;
00099   rgb_ = cp.rgb_;
00100   autowhitebalance_=cp.autowhitebalance_;
00101   whitebalanceU_=cp.whitebalanceU_;
00102   whitebalanceV_=cp.whitebalanceV_;
00103   onepushWBbalance_=cp.onepushWBbalance_;
00104   min_WB_=cp.min_WB_;
00105   max_WB_=cp.max_WB_;
00106 }
00107 
00108 cmu_1394_camera_params::cmu_1394_camera_params(const cmu_1394_camera_params& cp)
00109 {
00110   this->set_params(cp);
00111 }
00112 
00113 //ensure that the parameters are consistent with the bounds
00114 void cmu_1394_camera_params::constrain()
00115 {
00116   if (!manual_shutter_control_&&auto_exposure_control_)
00117     auto_exposure_ = true;
00118 
00119   //shutter
00120   if (shutter_<min_shutter_)
00121     shutter_ = min_shutter_;
00122   if (shutter_>max_shutter_)
00123     shutter_ = max_shutter_;
00124   //gain
00125   if (gain_<min_gain_)
00126     gain_ = min_gain_;
00127   if (gain_>max_gain_)
00128     gain_ = max_gain_;
00129   //brightness
00130   if (brightness_<min_brightness_)
00131     brightness_ = min_brightness_;
00132   if (brightness_>max_brightness_)
00133     brightness_ = max_brightness_;
00134   //sharpness
00135   if (sharpness_<min_sharpness_)
00136     sharpness_ = min_sharpness_;
00137   if (sharpness_>max_sharpness_)
00138     sharpness_ = max_sharpness_;
00139   //exposure
00140   if (exposure_<min_exposure_)
00141     exposure_ = min_exposure_;
00142   if (exposure_>max_exposure_)
00143     exposure_ = max_exposure_;
00144 }
00145 
00146 vcl_string cmu_1394_camera_params::
00147 video_configuration(const int video_format, const int video_mode) const
00148 {
00149   if (video_format<0||video_mode<0)
00150     return "";
00151   else if (video_format==0)
00152     switch (video_mode)
00153     {
00154      case 0:
00155       return "160x120 YUV(4:4:4)";
00156      case 1:
00157       return "320x240 YUV(4:2:2)";
00158      case 2:
00159       return "640x480 YUV(4:1:1)";
00160      case 3:
00161       return "640x480 YUV(4:2:2)";
00162      case 4:
00163       return "640x480 RGB";
00164      case 5:
00165       return "640x480 Mono";
00166      default:
00167       return "";
00168     }
00169   else if (video_format==1)
00170     switch (video_mode)
00171     {
00172      case 0:
00173       return "800x600 YUV(4:2:2)" ;
00174      case 1:
00175       return "800x600 RGB";
00176      case 2:
00177       return "800x600 Mono";
00178      case 3:
00179       return "1024x768 YUV(4:2:2)";
00180      case 4:
00181       return "1024x768 RGB";
00182      case 5:
00183       return "1024x768 Mono(8 bits)";
00184      default:
00185       return "";
00186     }
00187   else if (video_format==2)
00188     switch (video_mode)
00189     {
00190      case 0:
00191       return "1280x960 YUV(4:2:2)";
00192      case 1:
00193       return "1280x960 RGB";
00194      case 2:
00195       return "1280x960 Mono";
00196      case 3:
00197       return "1600x1200 YUV(4:2:2)";
00198      case 4:
00199       return "1600x1200 RGB";
00200      case 5:
00201       return "1600x1200 Mono";
00202      default:
00203       return "";
00204     }
00205   else if (video_format==7)
00206     return "Partial Scan (ROIs)";
00207   else
00208     return "";
00209 }
00210 
00211 vcl_string cmu_1394_camera_params::frame_rate(const int rate_code) const
00212 {
00213   switch (rate_code)
00214   {
00215    case 0:
00216     return "1.875";
00217    case 1:
00218     return "3.75";
00219    case 2:
00220     return "7.5";
00221    case 3:
00222     return "15.0";
00223    case 4:
00224     return "30.0";
00225    case 5:
00226     return "60.0";
00227    default:
00228     return "";
00229   }
00230 }
00231 
00232 vcl_ostream& operator<<(vcl_ostream& os, const cmu_1394_camera_params& cp)
00233 {
00234   return
00235   os << "video_format: " << cp.video_format_
00236      << "\nvideo_mode: " << cp.video_mode_
00237      << "\nframe_rate: " << cp.frame_rate_
00238      << "\nmanual shutter control: "<< (cp.manual_shutter_control_?"YES" : "NO")
00239      << " | auto exposure control: "<< (cp.auto_exposure_control_ ?"YES" : "NO")
00240      << "\nauto_exposure: "<< (cp.auto_exposure_ ? "ON" : "OFF")
00241      << " | auto_gain: "   << (cp.auto_gain_     ? "ON" : "OFF")
00242      << "\nshutter: " << cp.min_shutter_ << " < " << cp.shutter_
00243      <<         " < " << cp.max_shutter_
00244      << "\ngain: " << cp.min_gain_ << " < " << cp.gain_ << " < " << cp.max_gain_
00245      << "\nbrightness: " << cp.min_brightness_ << " < " << cp.brightness_
00246      <<            " < " << cp.max_brightness_
00247      << "\nsharpness: " << cp.min_sharpness_ << " < " << cp.sharpness_
00248      <<           " < " << cp.max_sharpness_
00249      << "\nexposure: " << cp.min_exposure_ << " < " << cp.exposure_
00250      <<          " < " << cp.max_exposure_
00251      << "\ncapture: " << cp.capture_
00252      << "\nrgb: " << cp.rgb_ 
00253      << "\nWB U "<<cp.min_WB_<<"<"<<cp.whitebalanceU_<<">"<<cp.max_WB_
00254      << "\nWB V "<<cp.min_WB_<<"<"<<cp.whitebalanceV_<<">"<<cp.max_WB_<<vcl_endl;
00255 }