int main(int argc, char** argv) { VideoStreamClient vsc("192.168.1.2", "4569"); vsc.connect(argv[1], argv[2]); while(vsc.isConnected()) { cv::Mat sentframe = vsc.requestFrame(); if(sentframe.empty()) continue; cv::imshow("Sent", sentframe); cv::waitKey(1000 / 25); } vsc.disconnect(); return 0; }
ExecStatus ReProp<View,rm>::propagate(Space& home, const ModEventDelta& med) { // Add assigned views to value set if (View::me(med) == ME_INT_VAL) add(home,vs,x); if (b.one()) { if (rm == RM_PMI) return home.ES_SUBSUMED(*this); ValSet vsc(vs); vs.flush(); GECODE_REWRITE(*this,Prop<View>::post(home,vsc,x,y)); } if (b.zero()) { if (rm != RM_IMP) { ValSet::Ranges vsr(vs); GECODE_ME_CHECK(y.minus_r(home,vsr,false)); for (int i=x.size(); i--; ) GECODE_ES_CHECK(Rel::Nq<View>::post(home,x[i],y)); } return home.ES_SUBSUMED(*this); } // Eliminate views from x eliminate(home); switch (vs.compare(y)) { case Iter::Ranges::CS_SUBSET: if (rm != RM_IMP) GECODE_ME_CHECK(b.one(home)); return home.ES_SUBSUMED(*this); case Iter::Ranges::CS_DISJOINT: if (x.size() == 0) { if (rm != RM_PMI) GECODE_ME_CHECK(b.zero(home)); return home.ES_SUBSUMED(*this); } break; case Iter::Ranges::CS_NONE: break; default: GECODE_NEVER; } // Check whether y is in union of x and value set if (x.size() > 0) { Region r(home); ValSet::Ranges vsr(vs); ViewRanges<View> xsr(x[x.size()-1]); Iter::Ranges::NaryUnion u(r,vsr,xsr); for (int i=x.size()-1; i--; ) { ViewRanges<View> xir(x[i]); u |= xir; } ViewRanges<View> yr(y); if (Iter::Ranges::disjoint(u,yr)) { if (rm != RM_PMI) GECODE_ME_CHECK(b.zero(home)); return home.ES_SUBSUMED(*this); } } return ES_FIX; }