imports.gi.versions.GLib = '2.0'; imports.gi.versions.GObject = '2.0'; imports.gi.versions.Gio = '2.0'; imports.gi.versions.Gdk = '3.0'; imports.gi.versions.Gtk = '3.0'; imports.gi.versions.Clutter = '1.0'; imports.gi.versions.Gst = '0.10'; imports.gi.versions.GstBase = '0.10'; imports.gi.versions.GstVideo = '0.10'; const Lang = imports.lang; const Mainloop = imports.mainloop; const GLib = imports.gi.GLib; const GObject = imports.gi.GObject; const Gio = imports.gi.Gio; const Gdk = imports.gi.Gdk; const Gtk = imports.gi.Gtk; const Clutter = imports.gi.Clutter; const ClutterGst = imports.gi.ClutterGst; const Gst = imports.gi.Gst; const GstBase = imports.gi.GstBase; const GstApp = imports.gi.GstApp; const GstVideo = imports.gi.GstVideo; const KEYFRAME_INTERVAL = 64; function IcecastClient() { this._init.apply(this, arguments); } IcecastClient.prototype = { _init: function(feeds) { this._feeds = feeds; this._pipeline = Gst.Pipeline.new('stream'); this._bus = this._pipeline.get_bus(); this._bus.add_signal_watch(); this._bus.connect('message::eos', Lang.bind(this, this._onEndOfStream)); this._bus.connect('message::error', Lang.bind(this, this._onErrorMessage)); _setupPipeline(); }, _findInputSource: function() { let cameraSource = Gst.ElementFactory.make('camerabin', 'camera-source'); if (!cameraSource) { return null; } cameraSource.video_capture_height = 0; cameraSource.video_capture_width = 0; return cameraSource; }, _setupPipeline: function() { this._inputSource = _findInputSource(); if (!this._inputSource) throw new Error("could not find input source for stream"); this._pipeline.add(this._inputSource); }, _onEndOfStream: function(bus, message) { }, _onErrorMessage: function(bus, message) { }, start: function() { }, stop: function() { } }