[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[libcvd-members] libcvd/progs qtkit_ice_source.cxx
From: |
Joseph Newman |
Subject: |
[libcvd-members] libcvd/progs qtkit_ice_source.cxx |
Date: |
Tue, 30 Mar 2010 15:16:30 +0000 |
CVSROOT: /sources/libcvd
Module name: libcvd
Changes by: Joseph Newman <jfn20> 10/03/30 15:16:30
Added files:
progs : qtkit_ice_source.cxx
Log message:
ICE client using Apple's QTKit framework
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/libcvd/progs/qtkit_ice_source.cxx?cvsroot=libcvd&rev=1.1
Patches:
Index: qtkit_ice_source.cxx
===================================================================
RCS file: qtkit_ice_source.cxx
diff -N qtkit_ice_source.cxx
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ qtkit_ice_source.cxx 30 Mar 2010 15:16:30 -0000 1.1
@@ -0,0 +1,141 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2009 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+#include <Ice/Ice.h>
+#include "video_capture.h"
+#include <cvd/byte.h>
+//#include <png.h>
+#include <cvd/rgb.h>
+#include <cvd/image.h>
+#include <cvd/thread.h>
+#include <cvd/localvideoframe.h>
+#include <cvd/image_ref.h>
+
+
+//#include <Hello.h>
+
+using namespace std;
+//using namespace Demo;
+
+void console_callback(const vcapture_frame_format* format,
+ const vcapture_frame* frame,
+ unsigned long long int timestamp,
+ void* userdata) {
+ printf("count=%d\n",frame->count);
+ vcapture_frame_format gFormat = *format;
+ //gBuffer.resize(format->height * format->bytes_per_row);
+ //gBuffer = new CVD::byte[format->height * format->bytes_per_row];
+ //gBuffer = new CVD::Rgb<CVD::byte>[format->height*format->width];
+ CVD::ImageRef image_ref(format->width, format->height);
+ //CVD::BasicImage< CVD::byte > image(gBuffer, image_ref);
+ //CVD::Image<CVD::Rgb<CVD::byte> > rgb_im;
+ //CVD::Image<CVD::Rgb<CVD::byte> > rgb_im(gBuffer, image_ref);
+ CVD::Image<CVD::Rgb<CVD::byte> > image(image_ref);
+ memcpy(image.data(), frame->planes[0], format->height *
format->bytes_per_row);
+
+ CVD::LocalVideoFrame<CVD::Rgb<CVD::byte> > cvd_frame((double)
timestamp, image);
+
+ std::cerr << "timestamp = " << cvd_frame.timestamp() << " " <<
timestamp << std::endl;
+
+ //CVD::BasicImage<CVD::Rgb<CVD::byte> > im(gBuffer, image_ref);
+ //CVD::VideoFrame<CVD::Rgb<CVD::byte> > frame(0.0, gBuffer);
+ CVD::ImageRef iref(320, 240);
+ //CVD::byte b = image[iref];
+ // std::cerr << (unsigned int) b << std::endl;
+ //std::cerr << "image " << image.pos[iref] << std::endl;
+ //CVD::BasicImage<unsigned char> i;
+ //CVD::BasicImage<CVD::Rgb<CVD::byte> > image;//(gBuffer, image_ref);
+ CVD::Rgb<CVD::byte> rgb;
+ rgb = image[320][240];
+ std::cout << "pixel is (" << ((unsigned int) rgb.red) << ", " <<
((unsigned int) rgb.green) << ", " << ((unsigned int) rgb.blue) << ")" <<
std::endl;
+
+ // memcpy(&(gBuffer[0]), frame->planes[0], gBuffer.size());
+ //memcpy(&(gBuffer[0]), frame->planes[0], format->height *
format->bytes_per_row);
+ // if (gBuffer.size() && gFormat.type == VC_TYPE_RGB) {
+ if (gFormat.type == VC_TYPE_RGB) {
+ printf("got rgb\n");
+ //std::cout << "pixel is (" << ((unsigned int) r) << ", " <<
((unsigned int) g) << ", " << ((unsigned int) b) << ")" << std::endl;
+ }
+}
+
+
+class QTKitIceClient : public Ice::Application
+{
+public:
+
+ QTKitIceClient();
+
+ virtual int run(int, char*[]);
+
+private:
+};
+
+int
+main(int argc, char* argv[])
+{
+ QTKitIceClient app;
+ return app.main(argc, argv, "config.client");
+}
+
+QTKitIceClient::QTKitIceClient() :
+ //
+ // Since this is an interactive demo we don't want any signal
+ // handling.
+ //
+ Ice::Application(Ice::NoSignalHandling)
+{
+}
+
+int
+QTKitIceClient::run(int argc, char* argv[])
+{
+ std::cout << "QTKitIceClient" << std::endl;
+ std::cerr << "starting run" << std::endl;
+ vcapture v = vcapture_alloc();
+ std::cerr << "QTKitFrameGrabber constructor" << std::endl;
+ vcapture_frame_format format;
+ memset(&format, 0, sizeof(format));
+ format.type = VC_TYPE_RGB;
+ vcapture_set_requested_format(v, &format);
+ //vcapture_set_callback(v, callback, this);
+ vcapture_set_callback(v, console_callback, this);
+ int n = vcapture_device_count(v);
+ std::cerr << "n=" << n << std::endl;
+ static int i=0;
+ for (int i=0; i<n; ++i) {
+ printf("device %d is '%s'\n", i, vcapture_device_name(v, i));
+ }
+ std::cerr << "vcapture_set_device" << std::endl;
+ int status = vcapture_set_device(v, 0);
+ std::cerr << "status = " << status << std::endl;
+ std::cerr << "device set" << std::endl;
+ if (status == 0) {
+ printf("set device!\n");
+ status = vcapture_start(v);
+ if (status == 0) {
+ printf("started!\n");
+ for (int j=0; j<50; j++) {
+ std::cerr << "j=" << j << std::endl;
+ vcapture_poll(1000);
+ }
+ vcapture_stop(v);
+ }
+ }
+ vcapture_free(v);
+// HelloPrx twoway = HelloPrx::checkedCast(
+//
communicator()->propertyToProxy("Hello.Proxy")->ice_twoway()->ice_timeout(-1)->ice_secure(false));
+// if(!twoway)
+// {
+// cerr << argv[0] << ": invalid proxy" << endl;
+// return EXIT_FAILURE;
+// }
+// HelloPrx oneway = twoway->ice_oneway();
+
+ return EXIT_SUCCESS;
+}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [libcvd-members] libcvd/progs qtkit_ice_source.cxx,
Joseph Newman <=