UNPKG

kurento-client-core

Version:

JavaScript Client API for Kurento Media Server

524 lines (445 loc) 15 kB
/* Autogenerated with Kurento Idl */ /* * (C) Copyright 2013-2015 Kurento (https://kurento.openvidu.io/) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ var inherits = require('inherits'); var kurentoClient = require('kurento-client'); var disguise = kurentoClient.disguise; var checkType = kurentoClient.checkType; var ChecktypeError = checkType.ChecktypeError; var Transaction = kurentoClient.TransactionsManager.Transaction; var SessionEndpoint = require('./SessionEndpoint'); function noop(error, result) { if (error) console.trace(error); return result }; /** * @classdesc * Interface implemented by Endpoints that require an SDP Offer/Answer * negotiation in order to configure a media session. * <p>Functionality provided by this API:</p> * <ul> * <li>Generate SDP offers.</li> * <li>Process SDP offers.</li> * <li>Configure SDP related params.</li> * </ul> * * @abstract * @extends module:core/abstracts.SessionEndpoint * * @constructor module:core/abstracts.SdpEndpoint */ function SdpEndpoint(){ SdpEndpoint.super_.call(this); }; inherits(SdpEndpoint, SessionEndpoint); // // Public properties // /** * Maximum inbound bitrate requested by this endpoint. Signaled to compatible * WebRTC and RTP senders as part of Kurento's REMB bandwidth estimations, and * also * as an SDP bitrate attribute (<code>b=AS:{value}</code>, see * <a href='https://datatracker.ietf.org/doc/html/rfc8866#section-5.8' * >RFC 8866 Section 5.8. Bandwidth Information</a * >) in <i>sendrecv</i> and <i>recvonly</i> SDP Offers. * <ul> * <li>Unit: kbps (kilobits per second).</li> * <li>Default: 0 (unlimited).</li> * </ul> * * @alias module:core/abstracts.SdpEndpoint#getMaxAudioRecvBandwidth * * @param {module:core/abstracts.SdpEndpoint~getMaxAudioRecvBandwidthCallback} [callback] * * @return {external:Promise} */ SdpEndpoint.prototype.getMaxAudioRecvBandwidth = function(callback){ var transaction = (arguments[0] instanceof Transaction) ? Array.prototype.shift.apply(arguments) : undefined; var usePromise = false; if (callback == undefined) { usePromise = true; } if(!arguments.length) callback = undefined; callback = (callback || noop).bind(this) return disguise(this._invoke(transaction, 'getMaxAudioRecvBandwidth', callback), this) }; /** * @callback module:core/abstracts.SdpEndpoint~getMaxAudioRecvBandwidthCallback * @param {external:Error} error * @param {external:Integer} result */ /** * Maximum inbound bitrate requested by this endpoint. Signaled to compatible * WebRTC and RTP senders as part of Kurento's REMB bandwidth estimations, and * also * as an SDP bitrate attribute (<code>b=AS:{value}</code>, see * <a href='https://datatracker.ietf.org/doc/html/rfc8866#section-5.8' * >RFC 8866 Section 5.8. Bandwidth Information</a * >) in <i>sendrecv</i> and <i>recvonly</i> SDP Offers. * <ul> * <li>Unit: kbps (kilobits per second).</li> * <li>Default: 0 (unlimited).</li> * </ul> * * @alias module:core/abstracts.SdpEndpoint#setMaxAudioRecvBandwidth * * @param {external:Integer} maxAudioRecvBandwidth * @param {module:core/abstracts.SdpEndpoint~setMaxAudioRecvBandwidthCallback} [callback] * * @return {external:Promise} */ SdpEndpoint.prototype.setMaxAudioRecvBandwidth = function(maxAudioRecvBandwidth, callback){ var transaction = (arguments[0] instanceof Transaction) ? Array.prototype.shift.apply(arguments) : undefined; // // checkType('int', 'maxAudioRecvBandwidth', maxAudioRecvBandwidth, {required: true}); // var params = { maxAudioRecvBandwidth: maxAudioRecvBandwidth }; callback = (callback || noop).bind(this) return disguise(this._invoke(transaction, 'setMaxAudioRecvBandwidth', params, callback), this) }; /** * @callback module:core/abstracts.SdpEndpoint~setMaxAudioRecvBandwidthCallback * @param {external:Error} error */ /** * Maximum inbound bitrate requested by this endpoint. Signaled to compatible * WebRTC and RTP senders as part of Kurento's REMB bandwidth estimations, and * also * as an SDP bitrate attribute (<code>b=AS:{value}</code>, see * <a href='https://datatracker.ietf.org/doc/html/rfc8866#section-5.8' * >RFC 8866 Section 5.8. Bandwidth Information</a * >) in <i>sendrecv</i> and <i>recvonly</i> SDP Offers. * <ul> * <li>Unit: kbps (kilobits per second).</li> * <li>Default: 0 (unlimited).</li> * </ul> * * @alias module:core/abstracts.SdpEndpoint#getMaxVideoRecvBandwidth * * @param {module:core/abstracts.SdpEndpoint~getMaxVideoRecvBandwidthCallback} [callback] * * @return {external:Promise} */ SdpEndpoint.prototype.getMaxVideoRecvBandwidth = function(callback){ var transaction = (arguments[0] instanceof Transaction) ? Array.prototype.shift.apply(arguments) : undefined; var usePromise = false; if (callback == undefined) { usePromise = true; } if(!arguments.length) callback = undefined; callback = (callback || noop).bind(this) return disguise(this._invoke(transaction, 'getMaxVideoRecvBandwidth', callback), this) }; /** * @callback module:core/abstracts.SdpEndpoint~getMaxVideoRecvBandwidthCallback * @param {external:Error} error * @param {external:Integer} result */ /** * Maximum inbound bitrate requested by this endpoint. Signaled to compatible * WebRTC and RTP senders as part of Kurento's REMB bandwidth estimations, and * also * as an SDP bitrate attribute (<code>b=AS:{value}</code>, see * <a href='https://datatracker.ietf.org/doc/html/rfc8866#section-5.8' * >RFC 8866 Section 5.8. Bandwidth Information</a * >) in <i>sendrecv</i> and <i>recvonly</i> SDP Offers. * <ul> * <li>Unit: kbps (kilobits per second).</li> * <li>Default: 0 (unlimited).</li> * </ul> * * @alias module:core/abstracts.SdpEndpoint#setMaxVideoRecvBandwidth * * @param {external:Integer} maxVideoRecvBandwidth * @param {module:core/abstracts.SdpEndpoint~setMaxVideoRecvBandwidthCallback} [callback] * * @return {external:Promise} */ SdpEndpoint.prototype.setMaxVideoRecvBandwidth = function(maxVideoRecvBandwidth, callback){ var transaction = (arguments[0] instanceof Transaction) ? Array.prototype.shift.apply(arguments) : undefined; // // checkType('int', 'maxVideoRecvBandwidth', maxVideoRecvBandwidth, {required: true}); // var params = { maxVideoRecvBandwidth: maxVideoRecvBandwidth }; callback = (callback || noop).bind(this) return disguise(this._invoke(transaction, 'setMaxVideoRecvBandwidth', params, callback), this) }; /** * @callback module:core/abstracts.SdpEndpoint~setMaxVideoRecvBandwidthCallback * @param {external:Error} error */ // // Public methods // /** * Generates an SDP offer with media capabilities of the Endpoint. * Throws: * <ul> * <li> * SDP_END_POINT_ALREADY_NEGOTIATED If the endpoint is already negotiated. * </li> * <li> * SDP_END_POINT_GENERATE_OFFER_ERROR if the generated offer is empty. This * is * most likely due to an internal error. * </li> * </ul> * * @alias module:core/abstracts.SdpEndpoint.generateOffer * * @param {module:core/complexTypes.OfferOptions} [options] * An <code>OfferOptions</code> providing options requested for the offer. * * @param {module:core/abstracts.SdpEndpoint~generateOfferCallback} [callback] * * @return {external:Promise} */ SdpEndpoint.prototype.generateOffer = function(options, callback){ var transaction = (arguments[0] instanceof Transaction) ? Array.prototype.shift.apply(arguments) : undefined; callback = arguments[arguments.length-1] instanceof Function ? Array.prototype.pop.call(arguments) : undefined; switch(arguments.length){ case 0: options = undefined; break; case 1: break; default: var error = new RangeError('Number of params ('+arguments.length+') not in range [0-1]'); error.length = arguments.length; error.min = 0; error.max = 1; throw error; } // // checkType('OfferOptions', 'options', options); // var params = { options: options }; callback = (callback || noop).bind(this) return disguise(this._invoke(transaction, 'generateOffer', params, callback), this) }; /** * @callback module:core/abstracts.SdpEndpoint~generateOfferCallback * @param {external:Error} error * @param {external:String} result * The SDP offer. */ /** * Returns the local SDP. * <ul> * <li> * No offer has been generated: returns null. * </li> * <li> * Offer has been generated: returns the SDP offer. * </li> * <li> * Offer has been generated and answer processed: returns the agreed SDP. * </li> * </ul> * * @alias module:core/abstracts.SdpEndpoint.getLocalSessionDescriptor * * @param {module:core/abstracts.SdpEndpoint~getLocalSessionDescriptorCallback} [callback] * * @return {external:Promise} */ SdpEndpoint.prototype.getLocalSessionDescriptor = function(callback){ var transaction = (arguments[0] instanceof Transaction) ? Array.prototype.shift.apply(arguments) : undefined; var usePromise = false; if (callback == undefined) { usePromise = true; } if(!arguments.length) callback = undefined; callback = (callback || noop).bind(this) return disguise(this._invoke(transaction, 'getLocalSessionDescriptor', callback), this) }; /** * @callback module:core/abstracts.SdpEndpoint~getLocalSessionDescriptorCallback * @param {external:Error} error * @param {external:String} result * The last agreed SessionSpec. */ /** * This method returns the remote SDP. * If the negotiation process is not complete, it will return NULL. * * @alias module:core/abstracts.SdpEndpoint.getRemoteSessionDescriptor * * @param {module:core/abstracts.SdpEndpoint~getRemoteSessionDescriptorCallback} [callback] * * @return {external:Promise} */ SdpEndpoint.prototype.getRemoteSessionDescriptor = function(callback){ var transaction = (arguments[0] instanceof Transaction) ? Array.prototype.shift.apply(arguments) : undefined; var usePromise = false; if (callback == undefined) { usePromise = true; } if(!arguments.length) callback = undefined; callback = (callback || noop).bind(this) return disguise(this._invoke(transaction, 'getRemoteSessionDescriptor', callback), this) }; /** * @callback module:core/abstracts.SdpEndpoint~getRemoteSessionDescriptorCallback * @param {external:Error} error * @param {external:String} result * The last agreed User Agent session description. */ /** * Generates an SDP offer with media capabilities of the Endpoint. * Throws: * <ul> * <li> * SDP_PARSE_ERROR If the offer is empty or has errors. * </li> * <li> * SDP_END_POINT_ALREADY_NEGOTIATED If the endpoint is already negotiated. * </li> * <li> * SDP_END_POINT_PROCESS_ANSWER_ERROR if the result of processing the answer * an empty string. This is most likely due to an internal error. * </li> * <li> * SDP_END_POINT_NOT_OFFER_GENERATED If the method is invoked before the * generateOffer method. * </li> * </ul> * * @alias module:core/abstracts.SdpEndpoint.processAnswer * * @param {external:String} answer * SessionSpec answer from the remote User Agent * * @param {module:core/abstracts.SdpEndpoint~processAnswerCallback} [callback] * * @return {external:Promise} */ SdpEndpoint.prototype.processAnswer = function(answer, callback){ var transaction = (arguments[0] instanceof Transaction) ? Array.prototype.shift.apply(arguments) : undefined; // // checkType('String', 'answer', answer, {required: true}); // var params = { answer: answer }; callback = (callback || noop).bind(this) return disguise(this._invoke(transaction, 'processAnswer', params, callback), this) }; /** * @callback module:core/abstracts.SdpEndpoint~processAnswerCallback * @param {external:Error} error * @param {external:String} result * Updated SDP offer, based on the answer received. */ /** * Processes SDP offer of the remote peer, and generates an SDP answer based on * the endpoint's capabilities. * <p> * If no matching capabilities are found, the SDP will contain no codecs. * </p> * Throws: * <ul> * <li> * SDP_PARSE_ERROR If the offer is empty or has errors. * </li> * <li> * SDP_END_POINT_ALREADY_NEGOTIATED If the endpoint is already negotiated. * </li> * <li> * SDP_END_POINT_PROCESS_OFFER_ERROR if the generated offer is empty. This * is * most likely due to an internal error. * </li> * </ul> * * @alias module:core/abstracts.SdpEndpoint.processOffer * * @param {external:String} offer * SessionSpec offer from the remote User Agent * * @param {module:core/abstracts.SdpEndpoint~processOfferCallback} [callback] * * @return {external:Promise} */ SdpEndpoint.prototype.processOffer = function(offer, callback){ var transaction = (arguments[0] instanceof Transaction) ? Array.prototype.shift.apply(arguments) : undefined; // // checkType('String', 'offer', offer, {required: true}); // var params = { offer: offer }; callback = (callback || noop).bind(this) return disguise(this._invoke(transaction, 'processOffer', params, callback), this) }; /** * @callback module:core/abstracts.SdpEndpoint~processOfferCallback * @param {external:Error} error * @param {external:String} result * The chosen configuration from the ones stated in the SDP offer. */ /** * @alias module:core/abstracts.SdpEndpoint.constructorParams */ SdpEndpoint.constructorParams = { }; /** * @alias module:core/abstracts.SdpEndpoint.events * * @extends module:core/abstracts.SessionEndpoint.events */ SdpEndpoint.events = SessionEndpoint.events; /** * Checker for {@link module:core/abstracts.SdpEndpoint} * * @memberof module:core/abstracts * * @param {external:String} key * @param {module:core/abstracts.SdpEndpoint} value */ function checkSdpEndpoint(key, value) { if(!(value instanceof SdpEndpoint)) throw ChecktypeError(key, SdpEndpoint, value); }; module.exports = SdpEndpoint; SdpEndpoint.check = checkSdpEndpoint;