Audio Mixer Demo - Init Script

/* Run as Sys.run("c:\\Home\\projects\\CGL-HPSEARCH\\Misc\\scripts\\avdemo.js"); */

/* Define Constants, defined in 
	cgl.globalmmcs.mediaserver.audiomixer.AudioMixerStrings
*/

ACTION = "Action";
IP     = "IP";
PORT   = "Port";
PUBLICATION_TOPIC  = "PublicationTopic";
SUBSCRIPTION_TOPIC = "SubscriptionTopic";
STATUS = "Status";
OK     = "Ok";
FAIL   = "Fail";
REASON = "Raason";
FORMAT = "Format";
SESSION_ID= "SessionID";
REQUESTED_ACTION = "RequestedAction";
RESPONSE_TOPIC = "ResponseTopic";
RTP_EVENT_TOPIC = "RtpEventTopic";

CREATE_AUDIO_MIXER_SESSION  = "CreateAudioMixerSession";
DELETE_AUDIO_MIXER_SESSION  = "DeleteAudioMixerSession";
ADD_PARTICIPANT             = "AddParticipant";
REMOVE_PARTICIPANT          = "RemoveParticipant";

RESPONSE = "Response";

var av = new WSDL();

function createMixerSession(srvEP, pubTopic, ip, port, format, eventTopic) {
	av.wsdl = avservice;
	ssid = av.invoke("createAudioMixer");

	p = new Props();
	p.set(ACTION, "CreateAudioMixerSession");
	p.set(PUBLICATION_TOPIC, 6000);
	p.set(IP, "156.56.104.170");
	p.set(PORT, 3045);
	p.set(RTP_EVENT_TOPIC, "1000");
	p.set(FORMAT, "default");
	p.set(SESSION_ID, ssid);

	respXML = av.invoke("ExecuteAction", ssid, p.XMLize());
	
	if(OK.equals((new Props(respXML)).get(STATUS))) {
		return ssid;
	} else {
		return "-1";
	}
}

function add(ssid, streamIN, streamOUT, format) {
	controlProps = new Props();
	controlProps.set(SESSION_ID, ssid);
	controlProps.set(SUBSCRIPTION_TOPIC, streamIN);
	controlProps.set(PUBLICATION_TOPIC, streamOUT);
	controlProps.set(FORMAT, format);
	controlProps.set(ACTION, ADD_PARTICIPANT);
	respXML = av.invoke("ExecuteAction", ssid, controlProps.XMLize());
	return (new Props(respXML)).get(STATUS);
}

function remove(ssid, stream) {
	controlProps = new Props();
	controlProps.set(SESSION_ID, ssid);
	controlProps.set(SUBSCRIPTION_TOPIC, stream);
	controlProps.set(ACTION, REMOVE_PARTICIPANT);
	respXML = av.invoke("ExecuteAction", ssid, controlProps.XMLize());
	return (new Props(respXML)).get(STATUS);
}

function deleteMixer(ssid) {
	controlProps = new Props();
	controlProps.set(SESSION_ID, ssid);
	controlProps.set(ACTION, DELETE_AUDIO_MIXER_SESSION);
	respXML = av.invoke("ExecuteAction", ssid, controlProps.XMLize());
	return (new Props(respXML)).get(STATUS);	
}