diff options
author | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2013-03-17 12:11:03 (GMT) |
---|---|---|
committer | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2013-03-17 12:11:03 (GMT) |
commit | ccbf595c52fd705ec70abc774a29b153a7281334 (patch) | |
tree | 81b698cf9b2290a6905d12c71ef62e88a8b1c1cc /src/uscxml/plugins/invoker/miles/MilesSessionInvoker.h | |
parent | 81079295b8be14128b7e532d504b32280360532e (diff) | |
download | uscxml-ccbf595c52fd705ec70abc774a29b153a7281334.zip uscxml-ccbf595c52fd705ec70abc774a29b153a7281334.tar.gz uscxml-ccbf595c52fd705ec70abc774a29b153a7281334.tar.bz2 |
Fixed http responses and added miles invoker
Diffstat (limited to 'src/uscxml/plugins/invoker/miles/MilesSessionInvoker.h')
-rw-r--r-- | src/uscxml/plugins/invoker/miles/MilesSessionInvoker.h | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/src/uscxml/plugins/invoker/miles/MilesSessionInvoker.h b/src/uscxml/plugins/invoker/miles/MilesSessionInvoker.h new file mode 100644 index 0000000..cb3e9ee --- /dev/null +++ b/src/uscxml/plugins/invoker/miles/MilesSessionInvoker.h @@ -0,0 +1,100 @@ +#ifndef MILESSESIONINVOKER_H_W09J90F0 +#define MILESSESIONINVOKER_H_W09J90F0 + +#include <uscxml/Interpreter.h> + +extern "C" { +#include "miles/miles.h" +#include "miles/network.h" +#include "miles/rtp.h" +#include "miles/audio_codec.h" +#include "miles/audio_device.h" +#include "miles/video_codec.h" +#include "miles/video_grabber.h" +#include "miles/session.h" +#include "miles/image.h" +} +#ifdef BUILD_AS_PLUGINS +#include "uscxml/plugins/Plugins.h" +#endif + +namespace uscxml { + +class MilesSessionInvoker : public InvokerImpl { +public: + MilesSessionInvoker(); + virtual ~MilesSessionInvoker(); + virtual boost::shared_ptr<IOProcessorImpl> create(Interpreter* interpreter); + + virtual std::set<std::string> getNames() { + std::set<std::string> names; + names.insert("miles"); + names.insert("http://uscxml.tk.informatik.tu-darmstadt.de/#miles"); + return names; + } + + virtual Data getDataModelVariables(); + virtual void send(const SendRequest& req); + virtual void cancel(const std::string sendId); + virtual void invoke(const InvokeRequest& req); + +protected: + int video_rtp_in_socket, audio_rtp_in_socket; + int video_rtp_out_socket, audio_rtp_out_socket; + int video_rtcp_in_socket, audio_rtcp_in_socket; + int video_rtcp_out_socket, audio_rtcp_out_socket; + struct miles_rtp_session *video_session, *audio_session; + struct miles_video_codec_encode_context *video_encoder; + struct miles_audio_codec_encode_context *audio_encoder; + int *supported_video_grabbers; + struct miles_video_grabber_context *video_grabber; + struct miles_rtp_out_stream *out_rtp_video_stream, *out_rtp_audio_stream; + struct miles_rtcp_out_stream *out_rtcp_video_stream, *out_rtcp_audio_stream; + struct miles_audio_device *audio_dev; + struct miles_audio_device_description *supported_audio_devices; + int video_port, audio_port; + std::string ip_address; + + char video_out_buf[1000000]; + char encoded_out_img[1000000]; + char decoded_in_img[1000000]; + char audio_in_buf[1000000]; + char render_img[1000000]; + char audio_data[1000000]; + char video_data[1000000]; + + char encoded_out_audio[1000000]; + char audio_read_buf[1000000]; + + struct miles_audio_device *audio_dev_playback; + int audio_dev_playback_id; + + static void runAudio(void* instance); + static void runVideo(void* instance); + void processVideo(); + void processAudio(); + + void render_video_image(u_int32_t ssrc, char *img, int width, int height, int img_format); + void playback_audio(u_int32_t ssrc, char *buf, int sample_rate, int bps, int audio_format, int size); + int video_receiver(struct miles_rtp_in_stream *rtp_stream, char *data, int bytes_read); + int audio_receiver(struct miles_rtp_in_stream *rtp_stream, char *data, int bytes_read); + void rtp_audio_receiver(struct miles_rtp_session *rtp_session); + void rtp_video_receiver(struct miles_rtp_session *rtp_session); + int video_transmitter(struct miles_video_grabber_context *grabber, struct miles_video_codec_encode_context *codec_ctx, struct miles_rtp_out_stream *rtp_stream, struct miles_rtcp_out_stream *out_rtcp_stream); + int audio_transmitter(struct miles_audio_device *dev, struct miles_audio_codec_encode_context *codec_ctx, struct miles_rtp_out_stream *rtp_stream, struct miles_rtcp_out_stream *out_rtcp_audio_stream); + + + bool _isRunning; + tthread::thread* _videoThread; + tthread::thread* _audioThread; + tthread::recursive_mutex _mutex; +}; + +#ifdef BUILD_AS_PLUGINS +PLUMA_INHERIT_PROVIDER(MilesSessionInvoker, Invoker); +#endif + +} + + +#endif /* end of include guard: MILESSESIONINVOKER_H_W09J90F0 */ |