FrameGrabberConfigurator.C
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #include "Devices/FrameGrabberConfigurator.H"
00039
00040 #include "Component/OptionManager.H"
00041 #include "Devices/DeviceOpts.H"
00042 #include "Devices/FrameGrabberFactory.H"
00043 #include "Transport/BobDeinterlacer.H"
00044
00045
00046 FrameGrabberConfigurator::
00047 FrameGrabberConfigurator(OptionManager& mgr,
00048 const std::string& descrName,
00049 const std::string& tagName) :
00050 ModelComponent(mgr, descrName, tagName),
00051 itsGrabberType(&OPT_FrameGrabberType, this),
00052 itsDeinterlacerType(&OPT_DeinterlacerType, this),
00053 itsGrabber()
00054 { }
00055
00056
00057 FrameGrabberConfigurator::~FrameGrabberConfigurator()
00058 { }
00059
00060
00061 nub::soft_ref<FrameIstream> FrameGrabberConfigurator::getFrameGrabber() const
00062 {
00063 if (itsDeinterlacer.isValid())
00064 {
00065 itsDeinterlacer->setDelegate(itsGrabber);
00066 return itsDeinterlacer;
00067 }
00068
00069
00070 return itsGrabber;
00071 }
00072
00073
00074 void FrameGrabberConfigurator::
00075 paramChanged(ModelParamBase* const param,
00076 const bool valueChanged,
00077 ParamClient::ChangeStatus* status)
00078 {
00079 ModelComponent::paramChanged(param, valueChanged, status);
00080
00081
00082 if (param == &itsGrabberType) {
00083
00084
00085 if (itsGrabber.isValid())
00086 { removeSubComponent(*itsGrabber); itsGrabber.reset(NULL); }
00087
00088
00089 if (itsGrabberType.getVal().compare("None") == 0)
00090 itsGrabber.reset(NULL);
00091 else if (itsGrabberType.getVal().compare("V4L") == 0)
00092 itsGrabber = makeV4Lgrabber(getManager());
00093 else if (itsGrabberType.getVal().compare("V4L2") == 0)
00094 itsGrabber = makeV4L2grabber(getManager());
00095 else if (itsGrabberType.getVal().compare("1394") == 0)
00096 itsGrabber = makeIEEE1394grabber(getManager());
00097 else if (itsGrabberType.getVal().compare("XC") == 0)
00098 itsGrabber = makeXCgrabber(getManager());
00099 else if (itsGrabberType.getVal().compare("XCFLEX") == 0)
00100 itsGrabber = makeXCgrabberFlex(getManager());
00101 else if (itsGrabberType.getVal().compare("KINECT") == 0)
00102 itsGrabber = makeKinectgrabber(getManager());
00103 else if (itsGrabberType.getVal().compare("OPENNI") == 0)
00104 itsGrabber = makeOpenNIgrabber(getManager());
00105 else
00106 LFATAL("Unknown FrameGrabber type %s", itsGrabberType.getVal().c_str());
00107
00108
00109
00110
00111
00112 if (itsGrabber.isValid()) {
00113 addSubComponent(itsGrabber);
00114
00115
00116 itsGrabber->exportOptions(MC_RECURSE);
00117 }
00118
00119
00120 LINFO("Selected FrameGrabber of type %s", itsGrabberType.getVal().c_str());
00121 }
00122
00123 else if (param == &itsDeinterlacerType) {
00124 if (itsDeinterlacer.isValid())
00125 {
00126 removeSubComponent(*itsDeinterlacer);
00127 itsDeinterlacer.reset(NULL);
00128 }
00129
00130 if (itsDeinterlacerType.getVal().compare("None") == 0)
00131 itsDeinterlacer.reset(NULL);
00132 else if (itsDeinterlacerType.getVal().compare("Bob") == 0)
00133 itsDeinterlacer.reset(new BobDeinterlacer(getManager()));
00134 else
00135 LFATAL("Unknown Deinterlacer type %s",
00136 itsDeinterlacerType.getVal().c_str());
00137
00138 if (itsDeinterlacer.isValid()) {
00139 addSubComponent(itsDeinterlacer);
00140
00141 itsDeinterlacer->exportOptions(MC_RECURSE);
00142 }
00143
00144
00145 LINFO("Selected Deinterlacer of type %s",
00146 itsDeinterlacerType.getVal().c_str());
00147 }
00148 }
00149
00150
00151
00152
00153
00154
00155