From 0c819da6f5601f52292eaffe0f93b214fdf6df99 Mon Sep 17 00:00:00 2001 From: Seven Du Date: Wed, 27 May 2015 03:15:00 +0800 Subject: [PATCH] FS-7585: add rtmp video support --- clients/flex/freeswitch-h264.swf | Bin 0 -> 307762 bytes clients/flex/freeswitch-video.html | 195 ++++++ clients/flex/jquery.min.js | 167 +++++ src/mod/endpoints/mod_rtmp/Makefile.am | 2 +- src/mod/endpoints/mod_rtmp/handshake.h | 771 ++++++++++++++++++++++++ src/mod/endpoints/mod_rtmp/mod_rtmp.c | 235 ++++++-- src/mod/endpoints/mod_rtmp/mod_rtmp.h | 60 +- src/mod/endpoints/mod_rtmp/rtmp.c | 157 ++++- src/mod/endpoints/mod_rtmp/rtmp_sig.c | 31 +- src/mod/endpoints/mod_rtmp/rtmp_tcp.c | 80 +-- src/mod/endpoints/mod_rtmp/rtmp_video.c | 749 +++++++++++++++++++++++ src/mod/endpoints/mod_rtmp/rtmp_video.h | 49 ++ 12 files changed, 2363 insertions(+), 133 deletions(-) create mode 100644 clients/flex/freeswitch-h264.swf create mode 100644 clients/flex/freeswitch-video.html create mode 100644 clients/flex/jquery.min.js create mode 100644 src/mod/endpoints/mod_rtmp/handshake.h create mode 100644 src/mod/endpoints/mod_rtmp/rtmp_video.c create mode 100644 src/mod/endpoints/mod_rtmp/rtmp_video.h diff --git a/clients/flex/freeswitch-h264.swf b/clients/flex/freeswitch-h264.swf new file mode 100644 index 0000000000000000000000000000000000000000..fb9f23945ff7029aeae8f4a4458d5ade3fa92bbf GIT binary patch literal 307762 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ⅇ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 z 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 z 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 vBrHfS_!v7j_3yU(59QR&F{E;q^ECsTuCJ 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 + + + FreeSWITCH Video Flash Phone Demo + + + + + + + + + + +

+ + + + + + + + + + + + + + + + + + + + + + + + +
Flash Phone
+ +
+ Ready + +
+
+ +
+ SessionID:
+ Incoming: + +
+ + + + +
+ + + + +
+ +
+
+

Alternative content

+

Get Adobe Flash player

+
+
+ +
+ + + + + diff --git a/clients/flex/jquery.min.js b/clients/flex/jquery.min.js new file mode 100644 index 0000000000..8f3ca2e2da --- /dev/null +++ b/clients/flex/jquery.min.js @@ -0,0 +1,167 @@ +/*! + * jQuery JavaScript Library v1.4.4 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Thu Nov 11 19:04:53 2010 -0500 + */ +(function(E,B){function ka(a,b,d){if(d===B&&a.nodeType===1){d=a.getAttribute("data-"+b);if(typeof d==="string"){try{d=d==="true"?true:d==="false"?false:d==="null"?null:!c.isNaN(d)?parseFloat(d):Ja.test(d)?c.parseJSON(d):d}catch(e){}c.data(a,b,d)}else d=B}return d}function U(){return false}function ca(){return true}function la(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function Ka(a){var b,d,e,f,h,l,k,o,x,r,A,C=[];f=[];h=c.data(this,this.nodeType?"events":"__events__");if(typeof h==="function")h= +h.events;if(!(a.liveFired===this||!h||!h.live||a.button&&a.type==="click")){if(a.namespace)A=RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)");a.liveFired=this;var J=h.live.slice(0);for(k=0;kd)break;a.currentTarget=f.elem;a.data=f.handleObj.data;a.handleObj=f.handleObj;A=f.handleObj.origHandler.apply(f.elem,arguments);if(A===false||a.isPropagationStopped()){d=f.level;if(A===false)b=false;if(a.isImmediatePropagationStopped())break}}return b}}function Y(a,b){return(a&&a!=="*"?a+".":"")+b.replace(La, +"`").replace(Ma,"&")}function ma(a,b,d){if(c.isFunction(b))return c.grep(a,function(f,h){return!!b.call(f,h,f)===d});else if(b.nodeType)return c.grep(a,function(f){return f===b===d});else if(typeof b==="string"){var e=c.grep(a,function(f){return f.nodeType===1});if(Na.test(b))return c.filter(b,e,!d);else b=c.filter(b,e)}return c.grep(a,function(f){return c.inArray(f,b)>=0===d})}function na(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var e=c.data(a[d++]),f=c.data(this, +e);if(e=e&&e.events){delete f.handle;f.events={};for(var h in e)for(var l in e[h])c.event.add(this,h,e[h][l],e[h][l].data)}}})}function Oa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function oa(a,b,d){var e=b==="width"?a.offsetWidth:a.offsetHeight;if(d==="border")return e;c.each(b==="width"?Pa:Qa,function(){d||(e-=parseFloat(c.css(a,"padding"+this))||0);if(d==="margin")e+=parseFloat(c.css(a, +"margin"+this))||0;else e-=parseFloat(c.css(a,"border"+this+"Width"))||0});return e}function da(a,b,d,e){if(c.isArray(b)&&b.length)c.each(b,function(f,h){d||Ra.test(a)?e(a,h):da(a+"["+(typeof h==="object"||c.isArray(h)?f:"")+"]",h,d,e)});else if(!d&&b!=null&&typeof b==="object")c.isEmptyObject(b)?e(a,""):c.each(b,function(f,h){da(a+"["+f+"]",h,d,e)});else e(a,b)}function S(a,b){var d={};c.each(pa.concat.apply([],pa.slice(0,b)),function(){d[this]=a});return d}function qa(a){if(!ea[a]){var b=c("<"+ +a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d==="")d="block";ea[a]=d}return ea[a]}function fa(a){return c.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var t=E.document,c=function(){function a(){if(!b.isReady){try{t.documentElement.doScroll("left")}catch(j){setTimeout(a,1);return}b.ready()}}var b=function(j,s){return new b.fn.init(j,s)},d=E.jQuery,e=E.$,f,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,l=/\S/,k=/^\s+/,o=/\s+$/,x=/\W/,r=/\d/,A=/^<(\w+)\s*\/?>(?:<\/\1>)?$/, +C=/^[\],:{}\s]*$/,J=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,w=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,I=/(?:^|:|,)(?:\s*\[)+/g,L=/(webkit)[ \/]([\w.]+)/,g=/(opera)(?:.*version)?[ \/]([\w.]+)/,i=/(msie) ([\w.]+)/,n=/(mozilla)(?:.*? rv:([\w.]+))?/,m=navigator.userAgent,p=false,q=[],u,y=Object.prototype.toString,F=Object.prototype.hasOwnProperty,M=Array.prototype.push,N=Array.prototype.slice,O=String.prototype.trim,D=Array.prototype.indexOf,R={};b.fn=b.prototype={init:function(j, +s){var v,z,H;if(!j)return this;if(j.nodeType){this.context=this[0]=j;this.length=1;return this}if(j==="body"&&!s&&t.body){this.context=t;this[0]=t.body;this.selector="body";this.length=1;return this}if(typeof j==="string")if((v=h.exec(j))&&(v[1]||!s))if(v[1]){H=s?s.ownerDocument||s:t;if(z=A.exec(j))if(b.isPlainObject(s)){j=[t.createElement(z[1])];b.fn.attr.call(j,s,true)}else j=[H.createElement(z[1])];else{z=b.buildFragment([v[1]],[H]);j=(z.cacheable?z.fragment.cloneNode(true):z.fragment).childNodes}return b.merge(this, +j)}else{if((z=t.getElementById(v[2]))&&z.parentNode){if(z.id!==v[2])return f.find(j);this.length=1;this[0]=z}this.context=t;this.selector=j;return this}else if(!s&&!x.test(j)){this.selector=j;this.context=t;j=t.getElementsByTagName(j);return b.merge(this,j)}else return!s||s.jquery?(s||f).find(j):b(s).find(j);else if(b.isFunction(j))return f.ready(j);if(j.selector!==B){this.selector=j.selector;this.context=j.context}return b.makeArray(j,this)},selector:"",jquery:"1.4.4",length:0,size:function(){return this.length}, +toArray:function(){return N.call(this,0)},get:function(j){return j==null?this.toArray():j<0?this.slice(j)[0]:this[j]},pushStack:function(j,s,v){var z=b();b.isArray(j)?M.apply(z,j):b.merge(z,j);z.prevObject=this;z.context=this.context;if(s==="find")z.selector=this.selector+(this.selector?" ":"")+v;else if(s)z.selector=this.selector+"."+s+"("+v+")";return z},each:function(j,s){return b.each(this,j,s)},ready:function(j){b.bindReady();if(b.isReady)j.call(t,b);else q&&q.push(j);return this},eq:function(j){return j=== +-1?this.slice(j):this.slice(j,+j+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(N.apply(this,arguments),"slice",N.call(arguments).join(","))},map:function(j){return this.pushStack(b.map(this,function(s,v){return j.call(s,v,s)}))},end:function(){return this.prevObject||b(null)},push:M,sort:[].sort,splice:[].splice};b.fn.init.prototype=b.fn;b.extend=b.fn.extend=function(){var j,s,v,z,H,G=arguments[0]||{},K=1,Q=arguments.length,ga=false; +if(typeof G==="boolean"){ga=G;G=arguments[1]||{};K=2}if(typeof G!=="object"&&!b.isFunction(G))G={};if(Q===K){G=this;--K}for(;K0))if(q){var s=0,v=q;for(q=null;j=v[s++];)j.call(t,b);b.fn.trigger&&b(t).trigger("ready").unbind("ready")}}},bindReady:function(){if(!p){p=true;if(t.readyState==="complete")return setTimeout(b.ready,1);if(t.addEventListener){t.addEventListener("DOMContentLoaded",u,false);E.addEventListener("load",b.ready,false)}else if(t.attachEvent){t.attachEvent("onreadystatechange",u);E.attachEvent("onload", +b.ready);var j=false;try{j=E.frameElement==null}catch(s){}t.documentElement.doScroll&&j&&a()}}},isFunction:function(j){return b.type(j)==="function"},isArray:Array.isArray||function(j){return b.type(j)==="array"},isWindow:function(j){return j&&typeof j==="object"&&"setInterval"in j},isNaN:function(j){return j==null||!r.test(j)||isNaN(j)},type:function(j){return j==null?String(j):R[y.call(j)]||"object"},isPlainObject:function(j){if(!j||b.type(j)!=="object"||j.nodeType||b.isWindow(j))return false;if(j.constructor&& +!F.call(j,"constructor")&&!F.call(j.constructor.prototype,"isPrototypeOf"))return false;for(var s in j);return s===B||F.call(j,s)},isEmptyObject:function(j){for(var s in j)return false;return true},error:function(j){throw j;},parseJSON:function(j){if(typeof j!=="string"||!j)return null;j=b.trim(j);if(C.test(j.replace(J,"@").replace(w,"]").replace(I,"")))return E.JSON&&E.JSON.parse?E.JSON.parse(j):(new Function("return "+j))();else b.error("Invalid JSON: "+j)},noop:function(){},globalEval:function(j){if(j&& +l.test(j)){var s=t.getElementsByTagName("head")[0]||t.documentElement,v=t.createElement("script");v.type="text/javascript";if(b.support.scriptEval)v.appendChild(t.createTextNode(j));else v.text=j;s.insertBefore(v,s.firstChild);s.removeChild(v)}},nodeName:function(j,s){return j.nodeName&&j.nodeName.toUpperCase()===s.toUpperCase()},each:function(j,s,v){var z,H=0,G=j.length,K=G===B||b.isFunction(j);if(v)if(K)for(z in j){if(s.apply(j[z],v)===false)break}else for(;H
a";var f=d.getElementsByTagName("*"),h=d.getElementsByTagName("a")[0],l=t.createElement("select"), +k=l.appendChild(t.createElement("option"));if(!(!f||!f.length||!h)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(h.getAttribute("style")),hrefNormalized:h.getAttribute("href")==="/a",opacity:/^0.55$/.test(h.style.opacity),cssFloat:!!h.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:k.selected,deleteExpando:true,optDisabled:false,checkClone:false, +scriptEval:false,noCloneEvent:true,boxModel:null,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableHiddenOffsets:true};l.disabled=true;c.support.optDisabled=!k.disabled;b.type="text/javascript";try{b.appendChild(t.createTextNode("window."+e+"=1;"))}catch(o){}a.insertBefore(b,a.firstChild);if(E[e]){c.support.scriptEval=true;delete E[e]}try{delete b.test}catch(x){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function r(){c.support.noCloneEvent= +false;d.detachEvent("onclick",r)});d.cloneNode(true).fireEvent("onclick")}d=t.createElement("div");d.innerHTML="";a=t.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var r=t.createElement("div");r.style.width=r.style.paddingLeft="1px";t.body.appendChild(r);c.boxModel=c.support.boxModel=r.offsetWidth===2;if("zoom"in r.style){r.style.display="inline";r.style.zoom= +1;c.support.inlineBlockNeedsLayout=r.offsetWidth===2;r.style.display="";r.innerHTML="
";c.support.shrinkWrapBlocks=r.offsetWidth!==2}r.innerHTML="
t
";var A=r.getElementsByTagName("td");c.support.reliableHiddenOffsets=A[0].offsetHeight===0;A[0].style.display="";A[1].style.display="none";c.support.reliableHiddenOffsets=c.support.reliableHiddenOffsets&&A[0].offsetHeight===0;r.innerHTML="";t.body.removeChild(r).style.display= +"none"});a=function(r){var A=t.createElement("div");r="on"+r;var C=r in A;if(!C){A.setAttribute(r,"return;");C=typeof A[r]==="function"}return C};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=f=h=null}})();var ra={},Ja=/^(?:\{.*\}|\[.*\])$/;c.extend({cache:{},uuid:0,expando:"jQuery"+c.now(),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},data:function(a,b,d){if(c.acceptData(a)){a=a==E?ra:a;var e=a.nodeType,f=e?a[c.expando]:null,h= +c.cache;if(!(e&&!f&&typeof b==="string"&&d===B)){if(e)f||(a[c.expando]=f=++c.uuid);else h=a;if(typeof b==="object")if(e)h[f]=c.extend(h[f],b);else c.extend(h,b);else if(e&&!h[f])h[f]={};a=e?h[f]:h;if(d!==B)a[b]=d;return typeof b==="string"?a[b]:a}}},removeData:function(a,b){if(c.acceptData(a)){a=a==E?ra:a;var d=a.nodeType,e=d?a[c.expando]:a,f=c.cache,h=d?f[e]:e;if(b){if(h){delete h[b];d&&c.isEmptyObject(h)&&c.removeData(a)}}else if(d&&c.support.deleteExpando)delete a[c.expando];else if(a.removeAttribute)a.removeAttribute(c.expando); +else if(d)delete f[e];else for(var l in a)delete a[l]}},acceptData:function(a){if(a.nodeName){var b=c.noData[a.nodeName.toLowerCase()];if(b)return!(b===true||a.getAttribute("classid")!==b)}return true}});c.fn.extend({data:function(a,b){var d=null;if(typeof a==="undefined"){if(this.length){var e=this[0].attributes,f;d=c.data(this[0]);for(var h=0,l=e.length;h-1)return true;return false},val:function(a){if(!arguments.length){var b=this[0];if(b){if(c.nodeName(b,"option")){var d=b.attributes.value;return!d||d.specified?b.value:b.text}if(c.nodeName(b,"select")){var e=b.selectedIndex;d=[];var f=b.options;b=b.type==="select-one"; +if(e<0)return null;var h=b?e:0;for(e=b?e+1:f.length;h=0;else if(c.nodeName(this,"select")){var A=c.makeArray(r);c("option",this).each(function(){this.selected=c.inArray(c(this).val(),A)>=0});if(!A.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true}, +attr:function(a,b,d,e){if(!a||a.nodeType===3||a.nodeType===8)return B;if(e&&b in c.attrFn)return c(a)[b](d);e=a.nodeType!==1||!c.isXMLDoc(a);var f=d!==B;b=e&&c.props[b]||b;var h=Ta.test(b);if((b in a||a[b]!==B)&&e&&!h){if(f){b==="type"&&Ua.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");if(d===null)a.nodeType===1&&a.removeAttribute(b);else a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&& +b.specified?b.value:Va.test(a.nodeName)||Wa.test(a.nodeName)&&a.href?0:B;return a[b]}if(!c.support.style&&e&&b==="style"){if(f)a.style.cssText=""+d;return a.style.cssText}f&&a.setAttribute(b,""+d);if(!a.attributes[b]&&a.hasAttribute&&!a.hasAttribute(b))return B;a=!c.support.hrefNormalized&&e&&h?a.getAttribute(b,2):a.getAttribute(b);return a===null?B:a}});var X=/\.(.*)$/,ia=/^(?:textarea|input|select)$/i,La=/\./g,Ma=/ /g,Xa=/[^\w\s.|`]/g,Ya=function(a){return a.replace(Xa,"\\$&")},ua={focusin:0,focusout:0}; +c.event={add:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(c.isWindow(a)&&a!==E&&!a.frameElement)a=E;if(d===false)d=U;else if(!d)return;var f,h;if(d.handler){f=d;d=f.handler}if(!d.guid)d.guid=c.guid++;if(h=c.data(a)){var l=a.nodeType?"events":"__events__",k=h[l],o=h.handle;if(typeof k==="function"){o=k.handle;k=k.events}else if(!k){a.nodeType||(h[l]=h=function(){});h.events=k={}}if(!o)h.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem, +arguments):B};o.elem=a;b=b.split(" ");for(var x=0,r;l=b[x++];){h=f?c.extend({},f):{handler:d,data:e};if(l.indexOf(".")>-1){r=l.split(".");l=r.shift();h.namespace=r.slice(0).sort().join(".")}else{r=[];h.namespace=""}h.type=l;if(!h.guid)h.guid=d.guid;var A=k[l],C=c.event.special[l]||{};if(!A){A=k[l]=[];if(!C.setup||C.setup.call(a,e,r,o)===false)if(a.addEventListener)a.addEventListener(l,o,false);else a.attachEvent&&a.attachEvent("on"+l,o)}if(C.add){C.add.call(a,h);if(!h.handler.guid)h.handler.guid= +d.guid}A.push(h);c.event.global[l]=true}a=null}}},global:{},remove:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(d===false)d=U;var f,h,l=0,k,o,x,r,A,C,J=a.nodeType?"events":"__events__",w=c.data(a),I=w&&w[J];if(w&&I){if(typeof I==="function"){w=I;I=I.events}if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(f in I)c.event.remove(a,f+b)}else{for(b=b.split(" ");f=b[l++];){r=f;k=f.indexOf(".")<0;o=[];if(!k){o=f.split(".");f=o.shift();x=RegExp("(^|\\.)"+ +c.map(o.slice(0).sort(),Ya).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(A=I[f])if(d){r=c.event.special[f]||{};for(h=e||0;h=0){a.type=f=f.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[f]&&c.each(c.cache,function(){this.events&&this.events[f]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType=== +8)return B;a.result=B;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(e=d.nodeType?c.data(d,"handle"):(c.data(d,"__events__")||{}).handle)&&e.apply(d,b);e=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+f]&&d["on"+f].apply(d,b)===false){a.result=false;a.preventDefault()}}catch(h){}if(!a.isPropagationStopped()&&e)c.event.trigger(a,b,e,true);else if(!a.isDefaultPrevented()){var l;e=a.target;var k=f.replace(X,""),o=c.nodeName(e,"a")&&k=== +"click",x=c.event.special[k]||{};if((!x._default||x._default.call(d,a)===false)&&!o&&!(e&&e.nodeName&&c.noData[e.nodeName.toLowerCase()])){try{if(e[k]){if(l=e["on"+k])e["on"+k]=null;c.event.triggered=true;e[k]()}}catch(r){}if(l)e["on"+k]=l;c.event.triggered=false}}},handle:function(a){var b,d,e,f;d=[];var h=c.makeArray(arguments);a=h[0]=c.event.fix(a||E.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;if(!b){e=a.type.split(".");a.type=e.shift();d=e.slice(0).sort();e=RegExp("(^|\\.)"+ +d.join("\\.(?:.*\\.)?")+"(\\.|$)")}a.namespace=a.namespace||d.join(".");f=c.data(this,this.nodeType?"events":"__events__");if(typeof f==="function")f=f.events;d=(f||{})[a.type];if(f&&d){d=d.slice(0);f=0;for(var l=d.length;f-1?c.map(a.options,function(e){return e.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},Z=function(a,b){var d=a.target,e,f;if(!(!ia.test(d.nodeName)||d.readOnly)){e=c.data(d,"_change_data");f=xa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",f);if(!(e===B||f===e))if(e!=null||f){a.type="change";a.liveFired= +B;return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:Z,beforedeactivate:Z,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return Z.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return Z.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,"_change_data",xa(a))}},setup:function(){if(this.type=== +"file")return false;for(var a in V)c.event.add(this,a+".specialChange",V[a]);return ia.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return ia.test(this.nodeName)}};V=c.event.special.change.filters;V.focus=V.beforeactivate}t.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(e){e=c.event.fix(e);e.type=b;return c.event.trigger(e,null,e.target)}c.event.special[b]={setup:function(){ua[b]++===0&&t.addEventListener(a,d,true)},teardown:function(){--ua[b]=== +0&&t.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,e,f){if(typeof d==="object"){for(var h in d)this[b](h,e,d[h],f);return this}if(c.isFunction(e)||e===false){f=e;e=B}var l=b==="one"?c.proxy(f,function(o){c(this).unbind(o,l);return f.apply(this,arguments)}):f;if(d==="unload"&&b!=="one")this.one(d,e,f);else{h=0;for(var k=this.length;h0?this.bind(b,d,e):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});E.attachEvent&&!E.addEventListener&&c(E).bind("unload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}}); +(function(){function a(g,i,n,m,p,q){p=0;for(var u=m.length;p0){F=y;break}}y=y[g]}m[p]=F}}}var d=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,h=false,l=true;[0,0].sort(function(){l=false;return 0});var k=function(g,i,n,m){n=n||[];var p=i=i||t;if(i.nodeType!==1&&i.nodeType!==9)return[];if(!g||typeof g!=="string")return n;var q,u,y,F,M,N=true,O=k.isXML(i),D=[],R=g;do{d.exec("");if(q=d.exec(R)){R=q[3];D.push(q[1]);if(q[2]){F=q[3]; +break}}}while(q);if(D.length>1&&x.exec(g))if(D.length===2&&o.relative[D[0]])u=L(D[0]+D[1],i);else for(u=o.relative[D[0]]?[i]:k(D.shift(),i);D.length;){g=D.shift();if(o.relative[g])g+=D.shift();u=L(g,u)}else{if(!m&&D.length>1&&i.nodeType===9&&!O&&o.match.ID.test(D[0])&&!o.match.ID.test(D[D.length-1])){q=k.find(D.shift(),i,O);i=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]}if(i){q=m?{expr:D.pop(),set:C(m)}:k.find(D.pop(),D.length===1&&(D[0]==="~"||D[0]==="+")&&i.parentNode?i.parentNode:i,O);u=q.expr?k.filter(q.expr, +q.set):q.set;if(D.length>0)y=C(u);else N=false;for(;D.length;){q=M=D.pop();if(o.relative[M])q=D.pop();else M="";if(q==null)q=i;o.relative[M](y,q,O)}}else y=[]}y||(y=u);y||k.error(M||g);if(f.call(y)==="[object Array]")if(N)if(i&&i.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&k.contains(i,y[g])))n.push(u[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&n.push(u[g]);else n.push.apply(n,y);else C(y,n);if(F){k(F,p,n,m);k.uniqueSort(n)}return n};k.uniqueSort=function(g){if(w){h= +l;g.sort(w);if(h)for(var i=1;i0};k.find=function(g,i,n){var m;if(!g)return[];for(var p=0,q=o.order.length;p":function(g,i){var n,m=typeof i==="string",p=0,q=g.length;if(m&&!/\W/.test(i))for(i=i.toLowerCase();p=0))n||m.push(u);else if(n)i[q]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},CHILD:function(g){if(g[1]==="nth"){var i=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=i[1]+(i[2]||1)-0;g[3]=i[3]-0}g[0]=e++;return g},ATTR:function(g,i,n, +m,p,q){i=g[1].replace(/\\/g,"");if(!q&&o.attrMap[i])g[1]=o.attrMap[i];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,i,n,m,p){if(g[1]==="not")if((d.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,i);else{g=k.filter(g[3],i,n,true^p);n||m.push.apply(m,g);return false}else if(o.match.POS.test(g[0])||o.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled=== +true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,i,n){return!!k(n[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"=== +g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},setFilters:{first:function(g,i){return i===0},last:function(g,i,n,m){return i===m.length-1},even:function(g,i){return i%2===0},odd:function(g,i){return i%2===1},lt:function(g,i,n){return in[3]-0},nth:function(g,i,n){return n[3]- +0===i},eq:function(g,i,n){return n[3]-0===i}},filter:{PSEUDO:function(g,i,n,m){var p=i[1],q=o.filters[p];if(q)return q(g,n,i,m);else if(p==="contains")return(g.textContent||g.innerText||k.getText([g])||"").indexOf(i[3])>=0;else if(p==="not"){i=i[3];n=0;for(m=i.length;n=0}},ID:function(g,i){return g.nodeType===1&&g.getAttribute("id")===i},TAG:function(g,i){return i==="*"&&g.nodeType===1||g.nodeName.toLowerCase()=== +i},CLASS:function(g,i){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(i)>-1},ATTR:function(g,i){var n=i[1];n=o.attrHandle[n]?o.attrHandle[n](g):g[n]!=null?g[n]:g.getAttribute(n);var m=n+"",p=i[2],q=i[4];return n==null?p==="!=":p==="="?m===q:p==="*="?m.indexOf(q)>=0:p==="~="?(" "+m+" ").indexOf(q)>=0:!q?m&&n!==false:p==="!="?m!==q:p==="^="?m.indexOf(q)===0:p==="$="?m.substr(m.length-q.length)===q:p==="|="?m===q||m.substr(0,q.length+1)===q+"-":false},POS:function(g,i,n,m){var p=o.setFilters[i[2]]; +if(p)return p(g,n,i,m)}}},x=o.match.POS,r=function(g,i){return"\\"+(i-0+1)},A;for(A in o.match){o.match[A]=RegExp(o.match[A].source+/(?![^\[]*\])(?![^\(]*\))/.source);o.leftMatch[A]=RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[A].source.replace(/\\(\d+)/g,r))}var C=function(g,i){g=Array.prototype.slice.call(g,0);if(i){i.push.apply(i,g);return i}return g};try{Array.prototype.slice.call(t.documentElement.childNodes,0)}catch(J){C=function(g,i){var n=0,m=i||[];if(f.call(g)==="[object Array]")Array.prototype.push.apply(m, +g);else if(typeof g.length==="number")for(var p=g.length;n";n.insertBefore(g,n.firstChild);if(t.getElementById(i)){o.find.ID=function(m,p,q){if(typeof p.getElementById!=="undefined"&&!q)return(p=p.getElementById(m[1]))?p.id===m[1]||typeof p.getAttributeNode!=="undefined"&&p.getAttributeNode("id").nodeValue===m[1]?[p]:B:[]};o.filter.ID=function(m,p){var q=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&q&&q.nodeValue===p}}n.removeChild(g); +n=g=null})();(function(){var g=t.createElement("div");g.appendChild(t.createComment(""));if(g.getElementsByTagName("*").length>0)o.find.TAG=function(i,n){var m=n.getElementsByTagName(i[1]);if(i[1]==="*"){for(var p=[],q=0;m[q];q++)m[q].nodeType===1&&p.push(m[q]);m=p}return m};g.innerHTML="";if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")o.attrHandle.href=function(i){return i.getAttribute("href",2)};g=null})();t.querySelectorAll&& +function(){var g=k,i=t.createElement("div");i.innerHTML="

";if(!(i.querySelectorAll&&i.querySelectorAll(".TEST").length===0)){k=function(m,p,q,u){p=p||t;m=m.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!u&&!k.isXML(p))if(p.nodeType===9)try{return C(p.querySelectorAll(m),q)}catch(y){}else if(p.nodeType===1&&p.nodeName.toLowerCase()!=="object"){var F=p.getAttribute("id"),M=F||"__sizzle__";F||p.setAttribute("id",M);try{return C(p.querySelectorAll("#"+M+" "+m),q)}catch(N){}finally{F|| +p.removeAttribute("id")}}return g(m,p,q,u)};for(var n in g)k[n]=g[n];i=null}}();(function(){var g=t.documentElement,i=g.matchesSelector||g.mozMatchesSelector||g.webkitMatchesSelector||g.msMatchesSelector,n=false;try{i.call(t.documentElement,"[test!='']:sizzle")}catch(m){n=true}if(i)k.matchesSelector=function(p,q){q=q.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(p))try{if(n||!o.match.PSEUDO.test(q)&&!/!=/.test(q))return i.call(p,q)}catch(u){}return k(q,null,null,[p]).length>0}})();(function(){var g= +t.createElement("div");g.innerHTML="
";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){o.order.splice(1,0,"CLASS");o.find.CLASS=function(i,n,m){if(typeof n.getElementsByClassName!=="undefined"&&!m)return n.getElementsByClassName(i[1])};g=null}}})();k.contains=t.documentElement.contains?function(g,i){return g!==i&&(g.contains?g.contains(i):true)}:t.documentElement.compareDocumentPosition? +function(g,i){return!!(g.compareDocumentPosition(i)&16)}:function(){return false};k.isXML=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false};var L=function(g,i){for(var n,m=[],p="",q=i.nodeType?[i]:i;n=o.match.PSEUDO.exec(g);){p+=n[0];g=g.replace(o.match.PSEUDO,"")}g=o.relative[g]?g+"*":g;n=0;for(var u=q.length;n0)for(var h=d;h0},closest:function(a,b){var d=[],e,f,h=this[0];if(c.isArray(a)){var l,k={},o=1;if(h&&a.length){e=0;for(f=a.length;e-1:c(h).is(e))d.push({selector:l,elem:h,level:o})}h= +h.parentNode;o++}}return d}l=cb.test(a)?c(a,b||this.context):null;e=0;for(f=this.length;e-1:c.find.matchesSelector(h,a)){d.push(h);break}else{h=h.parentNode;if(!h||!h.ownerDocument||h===b)break}d=d.length>1?c.unique(d):d;return this.pushStack(d,"closest",a)},index:function(a){if(!a||typeof a==="string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var d=typeof a==="string"?c(a,b||this.context): +c.makeArray(a),e=c.merge(this.get(),d);return this.pushStack(!d[0]||!d[0].parentNode||d[0].parentNode.nodeType===11||!e[0]||!e[0].parentNode||e[0].parentNode.nodeType===11?e:c.unique(e))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a, +2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a, +b){c.fn[a]=function(d,e){var f=c.map(this,b,d);Za.test(a)||(e=d);if(e&&typeof e==="string")f=c.filter(e,f);f=this.length>1?c.unique(f):f;if((this.length>1||ab.test(e))&&$a.test(a))f=f.reverse();return this.pushStack(f,a,bb.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return b.length===1?c.find.matchesSelector(b[0],a)?[b[0]]:[]:c.find.matches(a,b)},dir:function(a,b,d){var e=[];for(a=a[b];a&&a.nodeType!==9&&(d===B||a.nodeType!==1||!c(a).is(d));){a.nodeType===1&& +e.push(a);a=a[b]}return e},nth:function(a,b,d){b=b||1;for(var e=0;a;a=a[d])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var za=/ jQuery\d+="(?:\d+|null)"/g,$=/^\s+/,Aa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Ba=/<([\w:]+)/,db=/\s]+\/)>/g,P={option:[1, +""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};P.optgroup=P.option;P.tbody=P.tfoot=P.colgroup=P.caption=P.thead;P.th=P.td;if(!c.support.htmlSerialize)P._default=[1,"div
","
"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==B)return this.empty().append((this[0]&&this[0].ownerDocument||t).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,e;(e=this[d])!=null;d++)if(!a||c.filter(a,[e]).length){if(!b&&e.nodeType===1){c.cleanData(e.getElementsByTagName("*"));c.cleanData([e])}e.parentNode&&e.parentNode.removeChild(e)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,e=this.ownerDocument;if(!d){d=e.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(za,"").replace(fb,'="$1">').replace($,"")],e)[0]}else return this.cloneNode(true)});if(a===true){na(this,b);na(this.find("*"),b.find("*"))}return b},html:function(a){if(a===B)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(za,""):null; +else if(typeof a==="string"&&!Ca.test(a)&&(c.support.leadingWhitespace||!$.test(a))&&!P[(Ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Aa,"<$1>");try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?h.cloneNode(true):h)}k.length&&c.each(k,Oa)}return this}});c.buildFragment=function(a,b,d){var e,f,h;b=b&&b[0]?b[0].ownerDocument||b[0]:t;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===t&&!Ca.test(a[0])&&(c.support.checkClone||!Da.test(a[0]))){f=true;if(h=c.fragments[a[0]])if(h!==1)e=h}if(!e){e=b.createDocumentFragment();c.clean(a,b,e,d)}if(f)c.fragments[a[0]]=h?e:1;return{fragment:e,cacheable:f}};c.fragments={};c.each({appendTo:"append", +prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var e=[];d=c(d);var f=this.length===1&&this[0].parentNode;if(f&&f.nodeType===11&&f.childNodes.length===1&&d.length===1){d[b](this[0]);return this}else{f=0;for(var h=d.length;f0?this.clone(true):this).get();c(d[f])[b](l);e=e.concat(l)}return this.pushStack(e,a,d.selector)}}});c.extend({clean:function(a,b,d,e){b=b||t;if(typeof b.createElement==="undefined")b=b.ownerDocument|| +b[0]&&b[0].ownerDocument||t;for(var f=[],h=0,l;(l=a[h])!=null;h++){if(typeof l==="number")l+="";if(l){if(typeof l==="string"&&!eb.test(l))l=b.createTextNode(l);else if(typeof l==="string"){l=l.replace(Aa,"<$1>");var k=(Ba.exec(l)||["",""])[1].toLowerCase(),o=P[k]||P._default,x=o[0],r=b.createElement("div");for(r.innerHTML=o[1]+l+o[2];x--;)r=r.lastChild;if(!c.support.tbody){x=db.test(l);k=k==="table"&&!x?r.firstChild&&r.firstChild.childNodes:o[1]===""&&!x?r.childNodes:[];for(o=k.length- +1;o>=0;--o)c.nodeName(k[o],"tbody")&&!k[o].childNodes.length&&k[o].parentNode.removeChild(k[o])}!c.support.leadingWhitespace&&$.test(l)&&r.insertBefore(b.createTextNode($.exec(l)[0]),r.firstChild);l=r.childNodes}if(l.nodeType)f.push(l);else f=c.merge(f,l)}}if(d)for(h=0;f[h];h++)if(e&&c.nodeName(f[h],"script")&&(!f[h].type||f[h].type.toLowerCase()==="text/javascript"))e.push(f[h].parentNode?f[h].parentNode.removeChild(f[h]):f[h]);else{f[h].nodeType===1&&f.splice.apply(f,[h+1,0].concat(c.makeArray(f[h].getElementsByTagName("script")))); +d.appendChild(f[h])}return f},cleanData:function(a){for(var b,d,e=c.cache,f=c.event.special,h=c.support.deleteExpando,l=0,k;(k=a[l])!=null;l++)if(!(k.nodeName&&c.noData[k.nodeName.toLowerCase()]))if(d=k[c.expando]){if((b=e[d])&&b.events)for(var o in b.events)f[o]?c.event.remove(k,o):c.removeEvent(k,o,b.handle);if(h)delete k[c.expando];else k.removeAttribute&&k.removeAttribute(c.expando);delete e[d]}}});var Ea=/alpha\([^)]*\)/i,gb=/opacity=([^)]*)/,hb=/-([a-z])/ig,ib=/([A-Z])/g,Fa=/^-?\d+(?:px)?$/i, +jb=/^-?\d/,kb={position:"absolute",visibility:"hidden",display:"block"},Pa=["Left","Right"],Qa=["Top","Bottom"],W,Ga,aa,lb=function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){if(arguments.length===2&&b===B)return this;return c.access(this,a,b,true,function(d,e,f){return f!==B?c.style(d,e,f):c.css(d,e)})};c.extend({cssHooks:{opacity:{get:function(a,b){if(b){var d=W(a,"opacity","opacity");return d===""?"1":d}else return a.style.opacity}}},cssNumber:{zIndex:true,fontWeight:true,opacity:true, +zoom:true,lineHeight:true},cssProps:{"float":c.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,d,e){if(!(!a||a.nodeType===3||a.nodeType===8||!a.style)){var f,h=c.camelCase(b),l=a.style,k=c.cssHooks[h];b=c.cssProps[h]||h;if(d!==B){if(!(typeof d==="number"&&isNaN(d)||d==null)){if(typeof d==="number"&&!c.cssNumber[h])d+="px";if(!k||!("set"in k)||(d=k.set(a,d))!==B)try{l[b]=d}catch(o){}}}else{if(k&&"get"in k&&(f=k.get(a,false,e))!==B)return f;return l[b]}}},css:function(a,b,d){var e,f=c.camelCase(b), +h=c.cssHooks[f];b=c.cssProps[f]||f;if(h&&"get"in h&&(e=h.get(a,true,d))!==B)return e;else if(W)return W(a,b,f)},swap:function(a,b,d){var e={},f;for(f in b){e[f]=a.style[f];a.style[f]=b[f]}d.call(a);for(f in b)a.style[f]=e[f]},camelCase:function(a){return a.replace(hb,lb)}});c.curCSS=c.css;c.each(["height","width"],function(a,b){c.cssHooks[b]={get:function(d,e,f){var h;if(e){if(d.offsetWidth!==0)h=oa(d,b,f);else c.swap(d,kb,function(){h=oa(d,b,f)});if(h<=0){h=W(d,b,b);if(h==="0px"&&aa)h=aa(d,b,b); +if(h!=null)return h===""||h==="auto"?"0px":h}if(h<0||h==null){h=d.style[b];return h===""||h==="auto"?"0px":h}return typeof h==="string"?h:h+"px"}},set:function(d,e){if(Fa.test(e)){e=parseFloat(e);if(e>=0)return e+"px"}else return e}}});if(!c.support.opacity)c.cssHooks.opacity={get:function(a,b){return gb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var d=a.style;d.zoom=1;var e=c.isNaN(b)?"":"alpha(opacity="+b*100+")",f= +d.filter||"";d.filter=Ea.test(f)?f.replace(Ea,e):d.filter+" "+e}};if(t.defaultView&&t.defaultView.getComputedStyle)Ga=function(a,b,d){var e;d=d.replace(ib,"-$1").toLowerCase();if(!(b=a.ownerDocument.defaultView))return B;if(b=b.getComputedStyle(a,null)){e=b.getPropertyValue(d);if(e===""&&!c.contains(a.ownerDocument.documentElement,a))e=c.style(a,d)}return e};if(t.documentElement.currentStyle)aa=function(a,b){var d,e,f=a.currentStyle&&a.currentStyle[b],h=a.style;if(!Fa.test(f)&&jb.test(f)){d=h.left; +e=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;h.left=b==="fontSize"?"1em":f||0;f=h.pixelLeft+"px";h.left=d;a.runtimeStyle.left=e}return f===""?"auto":f};W=Ga||aa;if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=a.offsetHeight;return a.offsetWidth===0&&b===0||!c.support.reliableHiddenOffsets&&(a.style.display||c.css(a,"display"))==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var mb=c.now(),nb=/)<[^<]*)*<\/script>/gi, +ob=/^(?:select|textarea)/i,pb=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,qb=/^(?:GET|HEAD)$/,Ra=/\[\]$/,T=/\=\?(&|$)/,ja=/\?/,rb=/([?&])_=[^&]*/,sb=/^(\w+:)?\/\/([^\/?#]+)/,tb=/%20/g,ub=/#.*$/,Ha=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!=="string"&&Ha)return Ha.apply(this,arguments);else if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var f=a.slice(e,a.length);a=a.slice(0,e)}e="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b=== +"object"){b=c.param(b,c.ajaxSettings.traditional);e="POST"}var h=this;c.ajax({url:a,type:e,dataType:"html",data:b,complete:function(l,k){if(k==="success"||k==="notmodified")h.html(f?c("
").append(l.responseText.replace(nb,"")).find(f):l.responseText);d&&h.each(d,[l.responseText,k,l])}});return this},serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&& +!this.disabled&&(this.checked||ob.test(this.nodeName)||pb.test(this.type))}).map(function(a,b){var d=c(this).val();return d==null?null:c.isArray(d)?c.map(d,function(e){return{name:b.name,value:e}}):{name:b.name,value:d}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:e})}, +getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:e})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return new E.XMLHttpRequest},accepts:{xml:"application/xml, text/xml",html:"text/html", +script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},ajax:function(a){var b=c.extend(true,{},c.ajaxSettings,a),d,e,f,h=b.type.toUpperCase(),l=qb.test(h);b.url=b.url.replace(ub,"");b.context=a&&a.context!=null?a.context:b;if(b.data&&b.processData&&typeof b.data!=="string")b.data=c.param(b.data,b.traditional);if(b.dataType==="jsonp"){if(h==="GET")T.test(b.url)||(b.url+=(ja.test(b.url)?"&":"?")+(b.jsonp||"callback")+"=?");else if(!b.data|| +!T.test(b.data))b.data=(b.data?b.data+"&":"")+(b.jsonp||"callback")+"=?";b.dataType="json"}if(b.dataType==="json"&&(b.data&&T.test(b.data)||T.test(b.url))){d=b.jsonpCallback||"jsonp"+mb++;if(b.data)b.data=(b.data+"").replace(T,"="+d+"$1");b.url=b.url.replace(T,"="+d+"$1");b.dataType="script";var k=E[d];E[d]=function(m){if(c.isFunction(k))k(m);else{E[d]=B;try{delete E[d]}catch(p){}}f=m;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);r&&r.removeChild(A)}}if(b.dataType==="script"&&b.cache===null)b.cache= +false;if(b.cache===false&&l){var o=c.now(),x=b.url.replace(rb,"$1_="+o);b.url=x+(x===b.url?(ja.test(b.url)?"&":"?")+"_="+o:"")}if(b.data&&l)b.url+=(ja.test(b.url)?"&":"?")+b.data;b.global&&c.active++===0&&c.event.trigger("ajaxStart");o=(o=sb.exec(b.url))&&(o[1]&&o[1].toLowerCase()!==location.protocol||o[2].toLowerCase()!==location.host);if(b.dataType==="script"&&h==="GET"&&o){var r=t.getElementsByTagName("head")[0]||t.documentElement,A=t.createElement("script");if(b.scriptCharset)A.charset=b.scriptCharset; +A.src=b.url;if(!d){var C=false;A.onload=A.onreadystatechange=function(){if(!C&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){C=true;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);A.onload=A.onreadystatechange=null;r&&A.parentNode&&r.removeChild(A)}}}r.insertBefore(A,r.firstChild);return B}var J=false,w=b.xhr();if(w){b.username?w.open(h,b.url,b.async,b.username,b.password):w.open(h,b.url,b.async);try{if(b.data!=null&&!l||a&&a.contentType)w.setRequestHeader("Content-Type", +b.contentType);if(b.ifModified){c.lastModified[b.url]&&w.setRequestHeader("If-Modified-Since",c.lastModified[b.url]);c.etag[b.url]&&w.setRequestHeader("If-None-Match",c.etag[b.url])}o||w.setRequestHeader("X-Requested-With","XMLHttpRequest");w.setRequestHeader("Accept",b.dataType&&b.accepts[b.dataType]?b.accepts[b.dataType]+", */*; q=0.01":b.accepts._default)}catch(I){}if(b.beforeSend&&b.beforeSend.call(b.context,w,b)===false){b.global&&c.active--===1&&c.event.trigger("ajaxStop");w.abort();return false}b.global&& +c.triggerGlobal(b,"ajaxSend",[w,b]);var L=w.onreadystatechange=function(m){if(!w||w.readyState===0||m==="abort"){J||c.handleComplete(b,w,e,f);J=true;if(w)w.onreadystatechange=c.noop}else if(!J&&w&&(w.readyState===4||m==="timeout")){J=true;w.onreadystatechange=c.noop;e=m==="timeout"?"timeout":!c.httpSuccess(w)?"error":b.ifModified&&c.httpNotModified(w,b.url)?"notmodified":"success";var p;if(e==="success")try{f=c.httpData(w,b.dataType,b)}catch(q){e="parsererror";p=q}if(e==="success"||e==="notmodified")d|| +c.handleSuccess(b,w,e,f);else c.handleError(b,w,e,p);d||c.handleComplete(b,w,e,f);m==="timeout"&&w.abort();if(b.async)w=null}};try{var g=w.abort;w.abort=function(){w&&Function.prototype.call.call(g,w);L("abort")}}catch(i){}b.async&&b.timeout>0&&setTimeout(function(){w&&!J&&L("timeout")},b.timeout);try{w.send(l||b.data==null?null:b.data)}catch(n){c.handleError(b,w,null,n);c.handleComplete(b,w,e,f)}b.async||L();return w}},param:function(a,b){var d=[],e=function(h,l){l=c.isFunction(l)?l():l;d[d.length]= +encodeURIComponent(h)+"="+encodeURIComponent(l)};if(b===B)b=c.ajaxSettings.traditional;if(c.isArray(a)||a.jquery)c.each(a,function(){e(this.name,this.value)});else for(var f in a)da(f,a[f],b,e);return d.join("&").replace(tb,"+")}});c.extend({active:0,lastModified:{},etag:{},handleError:function(a,b,d,e){a.error&&a.error.call(a.context,b,d,e);a.global&&c.triggerGlobal(a,"ajaxError",[b,a,e])},handleSuccess:function(a,b,d,e){a.success&&a.success.call(a.context,e,d,b);a.global&&c.triggerGlobal(a,"ajaxSuccess", +[b,a])},handleComplete:function(a,b,d){a.complete&&a.complete.call(a.context,b,d);a.global&&c.triggerGlobal(a,"ajaxComplete",[b,a]);a.global&&c.active--===1&&c.event.trigger("ajaxStop")},triggerGlobal:function(a,b,d){(a.context&&a.context.url==null?c(a.context):c.event).trigger(b,d)},httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===1223}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"), +e=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(e)c.etag[b]=e;return a.status===304},httpData:function(a,b,d){var e=a.getResponseHeader("content-type")||"",f=b==="xml"||!b&&e.indexOf("xml")>=0;a=f?a.responseXML:a.responseText;f&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b==="json"||!b&&e.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&e.indexOf("javascript")>=0)c.globalEval(a);return a}}); +if(E.ActiveXObject)c.ajaxSettings.xhr=function(){if(E.location.protocol!=="file:")try{return new E.XMLHttpRequest}catch(a){}try{return new E.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}};c.support.ajax=!!c.ajaxSettings.xhr();var ea={},vb=/^(?:toggle|show|hide)$/,wb=/^([+\-]=)?([\d+.\-]+)(.*)$/,ba,pa=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b,d){if(a||a===0)return this.animate(S("show", +3),a,b,d);else{d=0;for(var e=this.length;d=0;e--)if(d[e].elem===this){b&&d[e](true);d.splice(e,1)}});b||this.dequeue();return this}});c.each({slideDown:S("show",1),slideUp:S("hide",1),slideToggle:S("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){c.fn[a]=function(d,e,f){return this.animate(b, +d,e,f)}});c.extend({speed:function(a,b,d){var e=a&&typeof a==="object"?c.extend({},a):{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};e.duration=c.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in c.fx.speeds?c.fx.speeds[e.duration]:c.fx.speeds._default;e.old=e.complete;e.complete=function(){e.queue!==false&&c(this).dequeue();c.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,d,e){return d+e*a},swing:function(a,b,d,e){return(-Math.cos(a* +Math.PI)/2+0.5)*e+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||c.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a=parseFloat(c.css(this.elem,this.prop));return a&&a>-1E4?a:0},custom:function(a,b,d){function e(l){return f.step(l)} +var f=this,h=c.fx;this.startTime=c.now();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;this.pos=this.state=0;e.elem=this.elem;if(e()&&c.timers.push(e)&&!ba)ba=setInterval(h.tick,h.interval)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true; +this.custom(this.cur(),0)},step:function(a){var b=c.now(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var e in this.options.curAnim)if(this.options.curAnim[e]!==true)d=false;if(d){if(this.options.overflow!=null&&!c.support.shrinkWrapBlocks){var f=this.elem,h=this.options;c.each(["","X","Y"],function(k,o){f.style["overflow"+o]=h.overflow[k]})}this.options.hide&&c(this.elem).hide();if(this.options.hide|| +this.options.show)for(var l in this.options.curAnim)c.style(this.elem,l,this.options.orig[l]);this.options.complete.call(this.elem)}return false}else{a=b-this.startTime;this.state=a/this.options.duration;b=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||b](this.state,a,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a= +c.timers,b=0;b-1;e={};var x={};if(o)x=f.position();l=o?x.top:parseInt(l,10)||0;k=o?x.left:parseInt(k,10)||0;if(c.isFunction(b))b=b.call(a,d,h);if(b.top!=null)e.top=b.top-h.top+l;if(b.left!=null)e.left=b.left-h.left+k;"using"in b?b.using.call(a, +e):f.css(e)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),e=Ia.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.css(a,"marginTop"))||0;d.left-=parseFloat(c.css(a,"marginLeft"))||0;e.top+=parseFloat(c.css(b[0],"borderTopWidth"))||0;e.left+=parseFloat(c.css(b[0],"borderLeftWidth"))||0;return{top:d.top-e.top,left:d.left-e.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||t.body;a&&!Ia.test(a.nodeName)&& +c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(e){var f=this[0],h;if(!f)return null;if(e!==B)return this.each(function(){if(h=fa(this))h.scrollTo(!a?e:c(h).scrollLeft(),a?e:c(h).scrollTop());else this[d]=e});else return(h=fa(f))?"pageXOffset"in h?h[a?"pageYOffset":"pageXOffset"]:c.support.boxModel&&h.document.documentElement[d]||h.document.body[d]:f[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase(); +c.fn["inner"+b]=function(){return this[0]?parseFloat(c.css(this[0],d,"padding")):null};c.fn["outer"+b]=function(e){return this[0]?parseFloat(c.css(this[0],d,e?"margin":"border")):null};c.fn[d]=function(e){var f=this[0];if(!f)return e==null?null:this;if(c.isFunction(e))return this.each(function(l){var k=c(this);k[d](e.call(this,l,k[d]()))});if(c.isWindow(f))return f.document.compatMode==="CSS1Compat"&&f.document.documentElement["client"+b]||f.document.body["client"+b];else if(f.nodeType===9)return Math.max(f.documentElement["client"+ +b],f.body["scroll"+b],f.documentElement["scroll"+b],f.body["offset"+b],f.documentElement["offset"+b]);else if(e===B){f=c.css(f,d);var h=parseFloat(f);return c.isNaN(h)?f:h}else return this.css(d,typeof e==="string"?e:e+"px")}})})(window); diff --git a/src/mod/endpoints/mod_rtmp/Makefile.am b/src/mod/endpoints/mod_rtmp/Makefile.am index c9e84239ea..843c79ca40 100644 --- a/src/mod/endpoints/mod_rtmp/Makefile.am +++ b/src/mod/endpoints/mod_rtmp/Makefile.am @@ -1,7 +1,7 @@ include $(top_srcdir)/build/modmake.rulesam MODNAME=mod_rtmp mod_LTLIBRARIES = mod_rtmp.la -mod_rtmp_la_SOURCES = mod_rtmp.c rtmp_sig.c rtmp.c rtmp_tcp.c +mod_rtmp_la_SOURCES = mod_rtmp.c rtmp_sig.c rtmp.c rtmp_tcp.c rtmp_video.c mod_rtmp_la_SOURCES += libamf/src/amf0.c libamf/src/hash.c libamf/src/io.c libamf/src/ptrarray.c libamf/src/types.c mod_rtmp_la_CFLAGS = $(AM_CFLAGS) -Ilibamf/src -I$(abs_srcdir)/libamf/src mod_rtmp_la_LIBADD = $(switch_builddir)/libfreeswitch.la diff --git a/src/mod/endpoints/mod_rtmp/handshake.h b/src/mod/endpoints/mod_rtmp/handshake.h new file mode 100644 index 0000000000..e6a9f1443d --- /dev/null +++ b/src/mod/endpoints/mod_rtmp/handshake.h @@ -0,0 +1,771 @@ +/* + * Copyright (C) 2008-2009 Andrej Stepanchuk + * Copyright (C) 2009-2010 Howard Chu + * Copyright (C) 2010 2a665470ced7adb7156fcef47f8199a6371c117b8a79e399a2771e0b36384090 + * + * This file is part of librtmp. + * + * librtmp is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1, + * or (at your option) any later version. + * + * librtmp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with librtmp see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/lgpl.html + */ + +/* This file is #included in rtmp.c, it is not meant to be compiled alone */ + +#ifndef _RTMP_VIDEO_H +#define _RTMP_VIDEO_H + +#include +#include + +#if OPENSSL_VERSION_NUMBER < 0x0090800 || !defined(SHA256_DIGEST_LENGTH) +#error Your OpenSSL is too old, need 0.9.8 or newer with SHA256 +#endif +#define HMAC_setup(ctx, key, len) HMAC_CTX_init(&ctx); HMAC_Init_ex(&ctx, key, len, EVP_sha256(), 0) +#define HMAC_crunch(ctx, buf, len) HMAC_Update(&ctx, buf, len) +#define HMAC_finish(ctx, dig, dlen) HMAC_Final(&ctx, dig, &dlen); HMAC_CTX_cleanup(&ctx) + +#define FP10 +#define RTMP_SIG_SIZE 1536 + +static const uint8_t GenuineFMSKey[] = { + 0x47, 0x65, 0x6e, 0x75, 0x69, 0x6e, 0x65, 0x20, 0x41, 0x64, 0x6f, 0x62, + 0x65, 0x20, 0x46, 0x6c, + 0x61, 0x73, 0x68, 0x20, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x20, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, + 0x20, 0x30, 0x30, 0x31, /* Genuine Adobe Flash Media Server 001 */ + + 0xf0, 0xee, 0xc2, 0x4a, 0x80, 0x68, 0xbe, 0xe8, 0x2e, 0x00, 0xd0, 0xd1, + 0x02, 0x9e, 0x7e, 0x57, 0x6e, 0xec, 0x5d, 0x2d, 0x29, 0x80, 0x6f, 0xab, + 0x93, 0xb8, 0xe6, 0x36, + 0xcf, 0xeb, 0x31, 0xae +}; /* 68 */ + +static const uint8_t GenuineFPKey[] = { + 0x47, 0x65, 0x6E, 0x75, 0x69, 0x6E, 0x65, 0x20, 0x41, 0x64, 0x6F, 0x62, + 0x65, 0x20, 0x46, 0x6C, + 0x61, 0x73, 0x68, 0x20, 0x50, 0x6C, 0x61, 0x79, 0x65, 0x72, 0x20, 0x30, + 0x30, 0x31, /* Genuine Adobe Flash Player 001 */ + 0xF0, 0xEE, + 0xC2, 0x4A, 0x80, 0x68, 0xBE, 0xE8, 0x2E, 0x00, 0xD0, 0xD1, 0x02, 0x9E, + 0x7E, 0x57, 0x6E, 0xEC, + 0x5D, 0x2D, 0x29, 0x80, 0x6F, 0xAB, 0x93, 0xB8, 0xE6, 0x36, 0xCF, 0xEB, + 0x31, 0xAE +}; /* 62 */ + +typedef unsigned int (getoff)(uint8_t *buf, unsigned int len); + +typedef enum { + RTMP_LOGCRIT=0, + RTMP_LOGERROR, + RTMP_LOGWARNING, + RTMP_LOGINFO, + RTMP_LOGDEBUG, + RTMP_LOGDEBUG2, + RTMP_LOGALL +} RTMP_LogLevel; + +void RTMP_Log(int level, const char *format, ...) +{ +} + +void RTMP_LogHex(int level, const uint8_t *data, unsigned long len) +{ +} + +static unsigned int GetDigestOffset2(uint8_t *handshake, unsigned int len) +{ + unsigned int offset = 0; + uint8_t *ptr = handshake + 772; + unsigned int res; + + offset += (*ptr); + ptr++; + offset += (*ptr); + ptr++; + offset += (*ptr); + ptr++; + offset += (*ptr); + + res = (offset % 728) + 776; + + if (res + 32 > 1535) { + RTMP_Log(RTMP_LOGERROR, "%s: Couldn't calculate correct digest offset (got %d), exiting", __FUNCTION__, res); + } + return res; +} + +static unsigned int GetDigestOffset1(uint8_t *handshake, unsigned int len) +{ + unsigned int offset = 0; + uint8_t *ptr = handshake + 8; + unsigned int res; + + assert(12 <= len); + + offset += (*ptr); + ptr++; + offset += (*ptr); + ptr++; + offset += (*ptr); + ptr++; + offset += (*ptr); + + res = (offset % 728) + 12; + + if (res + 32 > 771) { + RTMP_Log(RTMP_LOGERROR, + "%s: Couldn't calculate digest offset (got %d), exiting!", + __FUNCTION__, res); + } + + return res; +} + +static getoff *digoff[] = {GetDigestOffset1, GetDigestOffset2}; +// static getoff *dhoff[] = {GetDHOffset1, GetDHOffset2}; + +static void HMACsha256(const uint8_t *message, size_t messageLen, const uint8_t *key, size_t keylen, uint8_t *digest) +{ + unsigned int digestLen; + HMAC_CTX ctx; + + HMAC_setup(ctx, key, keylen); + HMAC_crunch(ctx, message, messageLen); + HMAC_finish(ctx, digest, digestLen); + + assert(digestLen == 32); +} + +static void CalculateDigest(unsigned int digestPos, uint8_t *handshakeMessage, const uint8_t *key, size_t keyLen, uint8_t *digest) +{ + const int messageLen = RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH; + uint8_t message[RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH]; + + memcpy(message, handshakeMessage, digestPos); + memcpy(message + digestPos, + &handshakeMessage[digestPos + SHA256_DIGEST_LENGTH], + messageLen - digestPos); + + HMACsha256(message, messageLen, key, keyLen, digest); +} + +static int VerifyDigest(unsigned int digestPos, uint8_t *handshakeMessage, const uint8_t *key, size_t keyLen) +{ + uint8_t calcDigest[SHA256_DIGEST_LENGTH]; + + CalculateDigest(digestPos, handshakeMessage, key, keyLen, calcDigest); + + return memcmp(&handshakeMessage[digestPos], calcDigest, SHA256_DIGEST_LENGTH) == 0; +} + +/* handshake +* +* Type = [1 bytes] plain: 0x03, encrypted: 0x06, 0x08, 0x09 +* -------------------------------------------------------------------- [1536 bytes] +* Uptime = [4 bytes] big endian unsigned number, uptime +* Version = [4 bytes] each byte represents a version number, e.g. 9.0.124.0 +* ... +* +*/ + +static const uint32_t rtmpe8_keys[16][4] = { + {0xbff034b2, 0x11d9081f, 0xccdfb795, 0x748de732}, + {0x086a5eb6, 0x1743090e, 0x6ef05ab8, 0xfe5a39e2}, + {0x7b10956f, 0x76ce0521, 0x2388a73a, 0x440149a1}, + {0xa943f317, 0xebf11bb2, 0xa691a5ee, 0x17f36339}, + {0x7a30e00a, 0xb529e22c, 0xa087aea5, 0xc0cb79ac}, + {0xbdce0c23, 0x2febdeff, 0x1cfaae16, 0x1123239d}, + {0x55dd3f7b, 0x77e7e62e, 0x9bb8c499, 0xc9481ee4}, + {0x407bb6b4, 0x71e89136, 0xa7aebf55, 0xca33b839}, + {0xfcf6bdc3, 0xb63c3697, 0x7ce4f825, 0x04d959b2}, + {0x28e091fd, 0x41954c4c, 0x7fb7db00, 0xe3a066f8}, + {0x57845b76, 0x4f251b03, 0x46d45bcd, 0xa2c30d29}, + {0x0acceef8, 0xda55b546, 0x03473452, 0x5863713b}, + {0xb82075dc, 0xa75f1fee, 0xd84268e8, 0xa72a44cc}, + {0x07cf6e9e, 0xa16d7b25, 0x9fa7ae6c, 0xd92f5629}, + {0xfeb1eae4, 0x8c8c3ce1, 0x4e0064a7, 0x6a387c2a}, + {0x893a9427, 0xcc3013a2, 0xf106385b, 0xa829f927} +}; + +/* RTMPE type 8 uses XTEA on the regular signature +* http://en.wikipedia.org/wiki/XTEA +*/ +static void rtmpe8_sig(uint8_t *in, uint8_t *out, int keyid) +{ + unsigned int i, num_rounds = 32; + uint32_t v0, v1, sum=0, delta=0x9E3779B9; + uint32_t const *k; + + v0 = in[0] | (in[1] << 8) | (in[2] << 16) | (in[3] << 24); + v1 = in[4] | (in[5] << 8) | (in[6] << 16) | (in[7] << 24); + k = rtmpe8_keys[keyid]; + + for (i=0; i < num_rounds; i++) { + v0 += (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]); + sum += delta; + v1 += (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum>>11) & 3]); + } + + out[0] = v0; v0 >>= 8; + out[1] = v0; v0 >>= 8; + out[2] = v0; v0 >>= 8; + out[3] = v0; + + out[4] = v1; v1 >>= 8; + out[5] = v1; v1 >>= 8; + out[6] = v1; v1 >>= 8; + out[7] = v1; +} + +/* RTMPE type 9 uses Blowfish on the regular signature +* http://en.wikipedia.org/wiki/Blowfish_(cipher) +*/ +#define BF_ROUNDS 16 +typedef struct bf_key { + uint32_t s[4][256]; + uint32_t p[BF_ROUNDS+2]; +} bf_key; + +static const uint32_t bf_sinit[][256] = { + /* S-Box 0 */ + { 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96, + 0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, + 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, 0x0d95748f, 0x728eb658, + 0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, + 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e, + 0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60, + 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, 0x55ca396a, 0x2aab10b6, + 0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a, + 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c, + 0x7a325381, 0x28958677, 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193, + 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 0xef845d5d, 0xe98575b1, + 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239, + 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a, + 0x670c9c61, 0xabd388f0, 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, + 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, 0xa1f1651d, 0x39af0176, + 0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe, + 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 0x4ed3aa62, 0x363f7706, + 0x1bfedf72, 0x429b023d, 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b, + 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b, + 0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463, + 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f, 0x9b30952c, + 0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3, + 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, 0x5579c0bd, 0x1a60320a, + 0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, + 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760, + 0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db, + 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, 0x695b27b0, 0xbbca58c8, + 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, + 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33, + 0x62fb1341, 0xcee4c6e8, 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4, + 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 0xd08ed1d0, 0xafc725e0, + 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c, + 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777, + 0xea752dfe, 0x8b021fa1, 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, + 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 0x165fa266, 0x80957705, + 0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf, + 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 0x00250e2d, 0x2071b35e, + 0x226800bb, 0x57b8e0af, 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa, + 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, 0x83260376, 0x6295cfa9, + 0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915, + 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5, 0x571be91f, + 0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664, + 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a, }, + + /* S-Box 1 */ + { 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d, + 0x9cee60b8, 0x8fedb266, 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, + 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65, + 0x6b8fe4d6, 0x99f73fd6, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, + 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9, + 0x3c971814, 0x6b6a70a1, 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, + 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, 0xb03ada37, 0xf0500c0d, + 0xf01c1f04, 0x0200b3ff, 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, + 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc, + 0xc8b57634, 0x9af3dda7, 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, + 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, 0x4e548b38, 0x4f6db908, + 0x6f420d03, 0xf60a04bf, 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, + 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, + 0x501adde6, 0x9f84cd87, 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, + 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, 0xef1c1847, 0x3215d908, + 0xdd433b37, 0x24c2ba16, 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, + 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b, + 0x3c11183b, 0x5924a509, 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, + 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa, + 0x2965dcb9, 0x99e71d0f, 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, + 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d, + 0x1939260f, 0x19c27960, 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, + 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5, + 0x65582185, 0x68ab9802, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, + 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96, + 0x0334fe1e, 0xaa0363cf, 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, + 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca, + 0xa02369b9, 0x655abb50, 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, + 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77, + 0x11ed935f, 0x16681281, 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, + 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, 0xcdb30aeb, 0x532e3054, + 0x8fd948e4, 0x6dbc3128, 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, + 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea, + 0xdb6c4f15, 0xfacb4fd0, 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, + 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, 0xcf62a1f2, 0x5b8d2646, + 0xfc8883a0, 0xc1c7b6a3, 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, + 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea, + 0x1dadf43e, 0x233f7061, 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, + 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e, + 0xe8efd855, 0x61d99735, 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, + 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd, + 0x675fda79, 0xe3674340, 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, + 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7, }, + + /* S-Box 2 */ + { 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, 0x411520f7, 0x7602d4f7, + 0xbcf46b2e, 0xd4a20068, 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, + 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, 0x4d95fc1d, 0x96b591af, + 0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504, + 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, 0x28507825, 0x530429f4, + 0x0a2c86da, 0xe9b66dfb, 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee, + 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, 0xaace1e7c, 0xd3375fec, + 0xce78a399, 0x406b2a42, 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b, + 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, 0x3a6efa74, 0xdd5b4332, + 0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527, + 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, 0x55a867bc, 0xa1159a58, + 0xcca92963, 0x99e1db33, 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, + 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, 0x95c11548, 0xe4c66d22, + 0x48c1133f, 0xc70f86dc, 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17, + 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, 0x257b7834, 0x602a9c60, + 0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115, + 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, 0x85b2a20e, 0xe6ba0d99, + 0xde720c8c, 0x2da2f728, 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0, + 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, 0x0a476341, 0x992eff74, + 0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d, + 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, 0xf1290dc7, 0xcc00ffa3, + 0xb5390f92, 0x690fed0b, 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, + 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, 0x37392eb3, 0xcc115979, + 0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c, + 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, 0x1a6b1018, 0x11caedfa, + 0x3d25bdd8, 0xe2e1c3c9, 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a, + 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, 0x9dbc8057, 0xf0f7c086, + 0x60787bf8, 0x6003604d, 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc, + 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, 0x77a057be, 0xbde8ae24, + 0x55464299, 0xbf582e61, 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2, + 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, 0x7aeb2661, 0x8b1ddf84, + 0x846a0e79, 0x915f95e2, 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, + 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, 0xb77f19b6, 0xe0a9dc09, + 0x662d09a1, 0xc4324633, 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10, + 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, 0xdcb7da83, 0x573906fe, + 0xa1e2ce9b, 0x4fcd7f52, 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027, + 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, 0xf0177a28, 0xc0f586e0, + 0x006058aa, 0x30dc7d62, 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634, + 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, 0x6f05e409, 0x4b7c0188, + 0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc, + 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, 0x1e50ef5e, 0xb161e6f8, + 0xa28514d9, 0x6c51133c, 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, + 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0, }, + + /* S-Box 3 */ + { 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742, + 0xd3822740, 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b, + 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 0x5748ab2f, 0xbc946e79, + 0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6, + 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a, + 0x63ef8ce2, 0x9a86ee22, 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, + 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ae1, + 0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59, + 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, 0xe990fd5a, 0x9e34d797, + 0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, + 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6, + 0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28, + 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4, 0x88f46dba, + 0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a, + 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, 0x7533d928, 0xb155fdf5, + 0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, + 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce, + 0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680, + 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, 0xb39a460a, 0x6445c0dd, + 0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, + 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb, + 0x8d6612ae, 0xbf3c6f47, 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370, + 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 0x4040cb08, 0x4eb4e2cc, + 0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048, + 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, 0x611560b1, 0xe7933fdc, + 0xbb3a792b, 0x344525bd, 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, + 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 0x1a908749, 0xd44fbd9a, + 0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f, + 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, 0xbf97222c, 0x15e6fc2a, + 0x0f91fc71, 0x9b941525, 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1, + 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, 0xe0ec6e0e, 0x1698db3b, + 0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e, + 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d, 0x9b992f2e, + 0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f, + 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, 0xf523f357, 0xa6327623, + 0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, + 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a, + 0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6, + 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, 0x53113ec0, 0x1640e3d3, + 0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060, + 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c, + 0x01c36ae4, 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f, + 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6, }, +}; + +static const uint32_t bf_pinit[] = { + /* P-Box */ + 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0, + 0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, + 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, 0x9216d5d9, 0x8979fb1b, +}; + +#define KEYBYTES 24 + +static const unsigned char rtmpe9_keys[16][KEYBYTES] = { + { 0x79, 0x34, 0x77, 0x4c, 0x67, 0xd1, 0x38, 0x3a, 0xdf, 0xb3, 0x56, 0xbe, + 0x8b, 0x7b, 0xd0, 0x24, 0x38, 0xe0, 0x73, 0x58, 0x41, 0x5d, 0x69, 0x67, }, + { 0x46, 0xf6, 0xb4, 0xcc, 0x01, 0x93, 0xe3, 0xa1, 0x9e, 0x7d, 0x3c, 0x65, + 0x55, 0x86, 0xfd, 0x09, 0x8f, 0xf7, 0xb3, 0xc4, 0x6f, 0x41, 0xca, 0x5c, }, + { 0x1a, 0xe7, 0xe2, 0xf3, 0xf9, 0x14, 0x79, 0x94, 0xc0, 0xd3, 0x97, 0x43, + 0x08, 0x7b, 0xb3, 0x84, 0x43, 0x2f, 0x9d, 0x84, 0x3f, 0x21, 0x01, 0x9b, }, + { 0xd3, 0xe3, 0x54, 0xb0, 0xf7, 0x1d, 0xf6, 0x2b, 0x5a, 0x43, 0x4d, 0x04, + 0x83, 0x64, 0x3e, 0x0d, 0x59, 0x2f, 0x61, 0xcb, 0xb1, 0x6a, 0x59, 0x0d, }, + { 0xc8, 0xc1, 0xe9, 0xb8, 0x16, 0x56, 0x99, 0x21, 0x7b, 0x5b, 0x36, 0xb7, + 0xb5, 0x9b, 0xdf, 0x06, 0x49, 0x2c, 0x97, 0xf5, 0x95, 0x48, 0x85, 0x7e, }, + { 0xeb, 0xe5, 0xe6, 0x2e, 0xa4, 0xba, 0xd4, 0x2c, 0xf2, 0x16, 0xe0, 0x8f, + 0x66, 0x23, 0xa9, 0x43, 0x41, 0xce, 0x38, 0x14, 0x84, 0x95, 0x00, 0x53, }, + { 0x66, 0xdb, 0x90, 0xf0, 0x3b, 0x4f, 0xf5, 0x6f, 0xe4, 0x9c, 0x20, 0x89, + 0x35, 0x5e, 0xd2, 0xb2, 0xc3, 0x9e, 0x9f, 0x7f, 0x63, 0xb2, 0x28, 0x81, }, + { 0xbb, 0x20, 0xac, 0xed, 0x2a, 0x04, 0x6a, 0x19, 0x94, 0x98, 0x9b, 0xc8, + 0xff, 0xcd, 0x93, 0xef, 0xc6, 0x0d, 0x56, 0xa7, 0xeb, 0x13, 0xd9, 0x30, }, + { 0xbc, 0xf2, 0x43, 0x82, 0x09, 0x40, 0x8a, 0x87, 0x25, 0x43, 0x6d, 0xe6, + 0xbb, 0xa4, 0xb9, 0x44, 0x58, 0x3f, 0x21, 0x7c, 0x99, 0xbb, 0x3f, 0x24, }, + { 0xec, 0x1a, 0xaa, 0xcd, 0xce, 0xbd, 0x53, 0x11, 0xd2, 0xfb, 0x83, 0xb6, + 0xc3, 0xba, 0xab, 0x4f, 0x62, 0x79, 0xe8, 0x65, 0xa9, 0x92, 0x28, 0x76, }, + { 0xc6, 0x0c, 0x30, 0x03, 0x91, 0x18, 0x2d, 0x7b, 0x79, 0xda, 0xe1, 0xd5, + 0x64, 0x77, 0x9a, 0x12, 0xc5, 0xb1, 0xd7, 0x91, 0x4f, 0x96, 0x4c, 0xa3, }, + { 0xd7, 0x7c, 0x2a, 0xbf, 0xa6, 0xe7, 0x85, 0x7c, 0x45, 0xad, 0xff, 0x12, + 0x94, 0xd8, 0xde, 0xa4, 0x5c, 0x3d, 0x79, 0xa4, 0x44, 0x02, 0x5d, 0x22, }, + { 0x16, 0x19, 0x0d, 0x81, 0x6a, 0x4c, 0xc7, 0xf8, 0xb8, 0xf9, 0x4e, 0xcd, + 0x2c, 0x9e, 0x90, 0x84, 0xb2, 0x08, 0x25, 0x60, 0xe1, 0x1e, 0xae, 0x18, }, + { 0xe9, 0x7c, 0x58, 0x26, 0x1b, 0x51, 0x9e, 0x49, 0x82, 0x60, 0x61, 0xfc, + 0xa0, 0xa0, 0x1b, 0xcd, 0xf5, 0x05, 0xd6, 0xa6, 0x6d, 0x07, 0x88, 0xa3, }, + { 0x2b, 0x97, 0x11, 0x8b, 0xd9, 0x4e, 0xd9, 0xdf, 0x20, 0xe3, 0x9c, 0x10, + 0xe6, 0xa1, 0x35, 0x21, 0x11, 0xf9, 0x13, 0x0d, 0x0b, 0x24, 0x65, 0xb2, }, + { 0x53, 0x6a, 0x4c, 0x54, 0xac, 0x8b, 0x9b, 0xb8, 0x97, 0x29, 0xfc, 0x60, + 0x2c, 0x5b, 0x3a, 0x85, 0x68, 0xb5, 0xaa, 0x6a, 0x44, 0xcd, 0x3f, 0xa7, }, +}; + +#define BF_ENC(X,S) (((S[0][X>>24] + S[1][X>>16 & 0xff]) ^ S[2][(X>>8) & 0xff]) + S[3][X & 0xff]) + +static void bf_enc(uint32_t *x, bf_key *key) +{ + uint32_t Xl; + uint32_t Xr; + uint32_t temp; + int i; + + Xl = x[0]; + Xr = x[1]; + + for (i = 0; i < BF_ROUNDS; ++i) { + Xl ^= key->p[i]; + Xr ^= BF_ENC(Xl,key->s); + + temp = Xl; + Xl = Xr; + Xr = temp; + } + + Xl ^= key->p[BF_ROUNDS]; + Xr ^= key->p[BF_ROUNDS + 1]; + + x[0] = Xr; + x[1] = Xl; +} + +static void bf_setkey(const unsigned char *kp, int keybytes, bf_key *key) +{ + int i; + int j; + int k; + uint32_t data; + uint32_t d[2]; + + memcpy(key->p, bf_pinit, sizeof(key->p)); + memcpy(key->s, bf_sinit, sizeof(key->s)); + + j = 0; + for (i = 0; i < BF_ROUNDS + 2; ++i) { + data = 0x00000000; + for (k = 0; k < 4; ++k) { + data = (data << 8) | kp[j]; + j = j + 1; + if (j >= keybytes) { + j = 0; + } + } + key->p[i] ^= data; + } + + d[0] = 0x00000000; + d[1] = 0x00000000; + + for (i = 0; i < BF_ROUNDS + 2; i += 2) { + bf_enc(d, key); + + key->p[i] = d[0]; + key->p[i + 1] = d[1]; + } + + for (i = 0; i < 4; ++i) { + for (j = 0; j < 256; j += 2) { + bf_enc(d, key); + + key->s[i][j] = d[0]; + key->s[i][j + 1] = d[1]; + } + } +} + +static void rtmpe9_sig(uint8_t *in, uint8_t *out, int keyid) +{ + uint32_t d[2]; + bf_key key; + + bf_setkey(rtmpe9_keys[keyid], KEYBYTES, &key); + + /* input is little-endian */ + d[0] = in[0] | (in[1] << 8) | (in[2] << 16) | (in[3] << 24); + d[1] = in[4] | (in[5] << 8) | (in[6] << 16) | (in[7] << 24); + bf_enc(d, &key); + out[0] = d[0] & 0xff; + out[1] = (d[0] >> 8) & 0xff; + out[2] = (d[0] >> 16) & 0xff; + out[3] = (d[0] >> 24) & 0xff; + out[4] = d[1] & 0xff; + out[5] = (d[1] >> 8) & 0xff; + out[6] = (d[1] >> 16) & 0xff; + out[7] = (d[1] >> 24) & 0xff; +} + +uint32_t RTMP_GetTime() +{ +#ifdef _DEBUG + return 0; +#elif defined(_WIN32) + return timeGetTime(); +#else +#include + struct timeval tv; + gettimeofday(&tv, 0 ); + return tv.tv_usec; + // I cannot compile the following code on both Mac and Linux + // struct tms t; + // if (!clk_tck) clk_tck = sysconf(_SC_CLK_TCK); + // return times(&t) * 1000 / clk_tck; +#endif +} + +typedef struct handshake_helper { + unsigned char *r_buf; + unsigned char *w_buf; + + size_t r_pos; + size_t r_len; + + size_t w_pos; + size_t w_len; +} handshake_helper_t; + +static int ReadN(void * user_data, void * out_buffer, size_t size) +{ + handshake_helper_t *helper = (handshake_helper_t*)user_data; + size_t len = (helper->r_len - helper->r_pos) < size ? (helper->r_len - helper->r_pos) : size; + + if (len <= 0) return 0; + + memcpy(out_buffer, helper->r_buf + helper->r_pos, len); + helper->r_pos += len; + return len; +} + +static int WriteN(void * user_data, void * buffer, size_t size) +{ + handshake_helper_t *helper = (handshake_helper_t*)user_data; + size_t len = (helper->w_len - helper->w_pos) < size ? (helper->w_len - helper->w_pos) : size; + + if (len <= 0) return 0; + + memcpy(helper->w_buf + helper->w_pos, buffer, len); + helper->w_pos += len; + return len; +} + +static int SHandShake0(handshake_helper_t * r) +{ + + int i = 0; + int offalg = 0; + + int digestPosServer = 0; + + int FP9HandShake = FALSE; + + uint8_t clientsig[RTMP_SIG_SIZE]; + uint8_t serverbuf[RTMP_SIG_SIZE + 4]; + uint8_t *serversig = serverbuf+4; + uint8_t type; + uint32_t uptime; + // getoff *getdh = NULL; + getoff *getdig = NULL; + + + if (ReadN(r, (char *)&type, 1) != 1) { /* 0x03 or 0x06 */ + return FALSE; + } + + if (ReadN(r, (char *)clientsig, RTMP_SIG_SIZE) != RTMP_SIG_SIZE) { + return FALSE; + } + + RTMP_Log(RTMP_LOGDEBUG, "%s: Type Requested : %02X", __FUNCTION__, type); + RTMP_LogHex(RTMP_LOGDEBUG2, clientsig, RTMP_SIG_SIZE); + + if (type != 3) { + RTMP_Log(RTMP_LOGERROR, "%s: Unknown version %02x", + __FUNCTION__, type); + return FALSE; + } + + if (!FP9HandShake && clientsig[4]) FP9HandShake = TRUE; + + serversig[-1] = type; + //fix me ?? linux windows?? + uptime = htonl(RTMP_GetTime()); + memcpy(serversig, &uptime, 4); + + if (FP9HandShake) + { + /* Server version */ + serversig[4] = 3; + serversig[5] = 5; + serversig[6] = 1; + serversig[7] = 1; + + getdig = digoff[offalg]; + // getdh = dhoff[offalg]; + } else { + memset(&serversig[4], 0, 4); + } + + /* generate random data */ +#ifdef _DEBUG + memset(serversig+8, 0, RTMP_SIG_SIZE-8); +#elif defined(__APPLE__) + memset(serversig+8, 0, RTMP_SIG_SIZE-8); +#else + { + int32_t *ip = (int32_t *)(serversig+8); + for (i = 2; i < RTMP_SIG_SIZE/4; i++) { + *ip++ = rand(); + } + } +#endif + + /* set handshake digest */ + if (FP9HandShake) { + digestPosServer = getdig(serversig, RTMP_SIG_SIZE); /* reuse this value in verification */ + RTMP_Log(RTMP_LOGDEBUG, "%s: Server digest offset: %d", __FUNCTION__, digestPosServer); + + CalculateDigest(digestPosServer, serversig, GenuineFMSKey, 36, &serversig[digestPosServer]); + + RTMP_Log(RTMP_LOGDEBUG, "%s: Initial server digest: ", __FUNCTION__); + RTMP_LogHex(RTMP_LOGDEBUG, serversig + digestPosServer, SHA256_DIGEST_LENGTH); + } + + RTMP_Log(RTMP_LOGDEBUG2, "Serversig: "); + RTMP_LogHex(RTMP_LOGDEBUG2, serversig, RTMP_SIG_SIZE); + + if (!WriteN(r, (char *)serversig-1, RTMP_SIG_SIZE + 1)) return FALSE; + + /* decode client response */ + memcpy(&uptime, clientsig, 4); + uptime = ntohl(uptime); + + RTMP_Log(RTMP_LOGDEBUG, "%s: Client Uptime : %d", __FUNCTION__, uptime); + RTMP_Log(RTMP_LOGDEBUG, "%s: Player Version: %d.%d.%d.%d", __FUNCTION__, clientsig[4], + clientsig[5], clientsig[6], clientsig[7]); + + if (FP9HandShake) + { + uint8_t digestResp[SHA256_DIGEST_LENGTH]; + uint8_t *signatureResp = NULL; + + /* we have to use this signature now to find the correct algorithms for getting the digest and DH positions */ + int digestPosClient = getdig(clientsig, RTMP_SIG_SIZE); + + if (!VerifyDigest(digestPosClient, clientsig, GenuineFPKey, 30)) { + RTMP_Log(RTMP_LOGWARNING, "Trying different position for client digest!"); + offalg ^= 1; + getdig = digoff[offalg]; + // getdh = dhoff[offalg]; + + digestPosClient = getdig(clientsig, RTMP_SIG_SIZE); + + if (!VerifyDigest(digestPosClient, clientsig, GenuineFPKey, 30)) { + RTMP_Log(RTMP_LOGERROR, "Couldn't verify the client digest"); /* continuing anyway will probably fail */ + return FALSE; + } + } + + /* calculate response now */ + signatureResp = clientsig+RTMP_SIG_SIZE-SHA256_DIGEST_LENGTH; + + HMACsha256(&clientsig[digestPosClient], SHA256_DIGEST_LENGTH, + GenuineFMSKey, sizeof(GenuineFMSKey), digestResp); + HMACsha256(clientsig, RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH, digestResp, + SHA256_DIGEST_LENGTH, signatureResp); +#ifdef FP10 + if (type == 8 ) { + uint8_t *dptr = digestResp; + uint8_t *sig = signatureResp; + /* encrypt signatureResp */ + for (i=0; i * Anthony Minessale II * William King + * Seven Du * * mod_rtmp.c -- RTMP Endpoint Module * @@ -37,6 +38,7 @@ #endif #include "mod_rtmp.h" +#include "rtmp_video.h" SWITCH_MODULE_LOAD_FUNCTION(mod_rtmp_load); SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_rtmp_shutdown); @@ -68,7 +70,10 @@ switch_io_routines_t rtmp_io_routines = { /*.kill_channel */ rtmp_kill_channel, /*.send_dtmf */ rtmp_send_dtmf, /*.receive_message */ rtmp_receive_message, - /*.receive_event */ rtmp_receive_event + /*.receive_event */ rtmp_receive_event, + /*.state_change*/ NULL, + /*.rtmp_read_vid_frame */ rtmp_read_video_frame, + /*.rtmp_write_vid_frame */ rtmp_write_video_frame }; struct mod_rtmp_globals rtmp_globals; @@ -119,7 +124,7 @@ switch_status_t rtmp_tech_init(rtmp_private_t *tech_pvt, rtmp_session_t *rsessio } if (switch_core_codec_init(&tech_pvt->write_codec, /* name */ "SPEEX", /* modname */ NULL, - /* fmtp */ NULL, /* rate */ 16000, /* ms */ 20, /* channels */ 1, + /* fmtp */ NULL, /* rate */ 16000, /* ms */ 20, /* channels */ 1, /* flags */ SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, /* codec settings */ NULL, switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't initialize write codec\n"); @@ -133,8 +138,40 @@ switch_status_t rtmp_tech_init(rtmp_private_t *tech_pvt, rtmp_session_t *rsessio //static inline uint8_t rtmp_audio_codec(int channels, int bits, int rate, rtmp_audio_format_t format) { tech_pvt->audio_codec = 0xB2; //rtmp_audio_codec(1, 16, 0 /* speex is always 8000 */, RTMP_AUDIO_SPEEX); + if (tech_pvt->has_video) { + /* Initialize video read & write codecs */ + if (switch_core_codec_init(&tech_pvt->video_read_codec, /* name */ "H264", /* modname */ NULL, + /* fmtp */ NULL, /* rate */ 90000, /* ms */ 0, /* channels */ 1, + /* flags */ SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, + /* codec settings */ NULL, switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't initialize video read codec\n"); + + return SWITCH_STATUS_FALSE; + } + + if (switch_core_codec_init(&tech_pvt->video_write_codec, /* name */ "H264", /* modname */ NULL, + /* fmtp */ NULL, /* rate */ 90000, /* ms */ 0, /* channels */ 1, + /* flags */ SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, + /* codec settings */ NULL, switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't initialize write codec\n"); + + return SWITCH_STATUS_FALSE; + } + + switch_core_session_set_video_read_codec(session, &tech_pvt->video_read_codec); + switch_core_session_set_video_write_codec(session, &tech_pvt->video_write_codec); + switch_channel_set_flag(tech_pvt->channel, CF_VIDEO); + + tech_pvt->mparams.external_video_source = SWITCH_TRUE; + switch_media_handle_create(&tech_pvt->media_handle, session, &tech_pvt->mparams); + + on_rtmp_tech_init(session, tech_pvt); + } + switch_core_session_set_private(session, tech_pvt); + // switch_core_session_start_video_thread(session); + return SWITCH_STATUS_SUCCESS; } @@ -232,6 +269,7 @@ switch_status_t rtmp_on_destroy(switch_core_session_t *session) switch_buffer_destroy(&tech_pvt->readbuf); switch_core_timer_destroy(&tech_pvt->timer); + on_rtmp_destroy(tech_pvt); } return SWITCH_STATUS_SUCCESS; @@ -294,6 +332,15 @@ switch_status_t rtmp_on_hangup(switch_core_session_t *session) switch_thread_rwlock_unlock(rsession->session_rwlock); } +#if 0 + // this block could replace the above if block, not sure if it's safe + switch_core_hash_delete_wrlock(rsession->session_hash, switch_core_session_get_uuid(session), rsession->session_rwlock); + + switch_mutex_lock(rsession->count_mutex); + rsession->active_sessions--; + switch_mutex_unlock(rsession->count_mutex); +#endif + #ifndef RTMP_DONT_HOLD if (switch_channel_test_flag(channel, CF_HOLD)) { switch_channel_mark_hold(channel, SWITCH_FALSE); @@ -451,6 +498,7 @@ switch_status_t rtmp_write_frame(switch_core_session_t *session, switch_frame_t //switch_frame_t *pframe; unsigned char buf[AMF_MAX_SIZE]; switch_time_t ts; + switch_status_t status = SWITCH_STATUS_SUCCESS; channel = switch_core_session_get_channel(session); assert(channel != NULL); @@ -460,36 +508,36 @@ switch_status_t rtmp_write_frame(switch_core_session_t *session, switch_frame_t rsession = tech_pvt->rtmp_session; if ( rsession == NULL ) { - goto error_null; + return SWITCH_STATUS_FALSE; } switch_thread_rwlock_wrlock(rsession->rwlock); if (!switch_test_flag(tech_pvt, TFLAG_IO)) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "TFLAG_IO not set\n"); - goto error; + switch_goto_status(SWITCH_STATUS_FALSE, end); } if (switch_test_flag(tech_pvt, TFLAG_DETACHED) || !switch_test_flag(rsession, SFLAG_AUDIO)) { - goto success; + switch_goto_status(SWITCH_STATUS_SUCCESS, end); } if (!rsession || !tech_pvt->audio_codec || !tech_pvt->write_channel) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Missing mandatory value\n"); - goto error; + switch_goto_status(SWITCH_STATUS_FALSE, end); } if (rsession->state >= RS_DESTROY) { - goto error; + switch_goto_status(SWITCH_STATUS_FALSE, end); } if (frame->datalen+1 > frame->buflen) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Datalen too big\n"); - goto error; + switch_goto_status(SWITCH_STATUS_FALSE, end); } if (frame->flags & SFF_CNG) { - goto success; + switch_goto_status(SWITCH_STATUS_SUCCESS, end); } /* Build message */ @@ -504,20 +552,13 @@ switch_status_t rtmp_write_frame(switch_core_session_t *session, switch_frame_t ts = (switch_micro_time_now() / 1000) - tech_pvt->stream_start_ts; } - rtmp_send_message(rsession, RTMP_DEFAULT_STREAM_AUDIO, ts, RTMP_TYPE_AUDIO, rsession->media_streamid, buf, frame->datalen + 1, 0); + status = rtmp_send_message(rsession, RTMP_DEFAULT_STREAM_AUDIO, ts, RTMP_TYPE_AUDIO, rsession->media_streamid, buf, frame->datalen + 1, 0); - success: +end: switch_thread_rwlock_unlock(rsession->rwlock); - return SWITCH_STATUS_SUCCESS; - - error: - switch_thread_rwlock_unlock(rsession->rwlock); - - error_null: - return SWITCH_STATUS_FALSE; + return status; } - switch_status_t rtmp_receive_message(switch_core_session_t *session, switch_core_session_message_t *msg) { switch_channel_t *channel; @@ -546,7 +587,19 @@ switch_status_t rtmp_receive_message(switch_core_session_t *session, switch_core case SWITCH_MESSAGE_INDICATE_UNHOLD: rtmp_notify_call_state(session); break; + case SWITCH_MESSAGE_INDICATE_BRIDGE: + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Flushing read buffer\n"); + switch_mutex_lock(tech_pvt->readbuf_mutex); + switch_buffer_zero(tech_pvt->readbuf); + switch_mutex_unlock(tech_pvt->readbuf_mutex); + + if (tech_pvt->has_video) { + switch_mutex_lock(tech_pvt->video_readbuf_mutex); + switch_buffer_zero(tech_pvt->video_readbuf); + switch_mutex_unlock(tech_pvt->video_readbuf_mutex); + } + break; case SWITCH_MESSAGE_INDICATE_DISPLAY: { const char *name = msg->string_array_arg[0], *number = msg->string_array_arg[1]; @@ -584,6 +637,41 @@ switch_status_t rtmp_receive_message(switch_core_session_t *session, switch_core switch_safe_free(arg); } break; + case SWITCH_MESSAGE_INDICATE_DEBUG_MEDIA: + { + rtmp_session_t *rsession = tech_pvt->rtmp_session; + const char *direction = msg->string_array_arg[0]; + int video = 0; + + if (direction && *direction == 'v') { + direction++; + video = 1; + } + + if (!zstr(direction) && !zstr(msg->string_array_arg[1])) { + int both = !strcasecmp(direction, "both"); + uint8_t flag = 0; + + if (both || !strcasecmp(direction, "read")) { + flag |= (video ? RTMP_MD_VIDEO_READ : RTMP_MD_AUDIO_READ); + } + + if (both || !strcasecmp(direction, "write")) { + flag |= (video ? RTMP_MD_VIDEO_WRITE : RTMP_MD_AUDIO_WRITE); + } + + if (flag) { + if (switch_true(msg->string_array_arg[1])) { + rsession->media_debug |= flag; + } else { + rsession->media_debug &= ~flag; + } + } else { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Invalid Options\n"); + } + } + } + break; default: break; } @@ -595,9 +683,9 @@ switch_status_t rtmp_receive_message(switch_core_session_t *session, switch_core that allocate memory or you will have 1 channel with memory allocated from another channel's pool! */ switch_call_cause_t rtmp_outgoing_channel(switch_core_session_t *session, switch_event_t *var_event, - switch_caller_profile_t *outbound_profile, - switch_core_session_t **newsession, switch_memory_pool_t **inpool, switch_originate_flag_t flags, - switch_call_cause_t *cancel_cause) + switch_caller_profile_t *outbound_profile, + switch_core_session_t **newsession, switch_memory_pool_t **inpool, switch_originate_flag_t flags, + switch_call_cause_t *cancel_cause) { rtmp_private_t *tech_pvt; switch_caller_profile_t *caller_profile; @@ -645,6 +733,25 @@ switch_call_cause_t rtmp_outgoing_channel(switch_core_session_t *session, switch tech_pvt->caller_profile = caller_profile; switch_core_session_add_stream(*newsession, NULL); + if (session) { + const char *video_possible; + + video_possible = switch_channel_get_variable(switch_core_session_get_channel(session), "video_possible"); + if (video_possible && switch_true(video_possible)) { + tech_pvt->has_video = 1; + } + } + + if (var_event) { + const char *video_possible = NULL; + + video_possible = switch_event_get_header(var_event, "video_possible"); + + if (video_possible && switch_true(video_possible)) { + tech_pvt->has_video = 1; + } + } + if (rtmp_tech_init(tech_pvt, rsession, *newsession) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(*newsession), SWITCH_LOG_ERROR, "tech_init failed\n"); cause = SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; @@ -662,7 +769,7 @@ switch_call_cause_t rtmp_outgoing_channel(switch_core_session_t *session, switch switch_channel_ring_ready(channel); rtmp_send_incoming_call(*newsession, var_event); - + // switch_channel_set_flag(channel, CF_VIDEO); switch_channel_set_state(channel, CS_INIT); switch_set_flag_locked(tech_pvt, TFLAG_IO); @@ -762,12 +869,15 @@ switch_status_t rtmp_session_request(rtmp_profile_t *profile, rtmp_session_t **n switch_core_new_memory_pool(&pool); *newsession = switch_core_alloc(pool, sizeof(rtmp_session_t)); + memset(*newsession, 0, sizeof(rtmp_session_t)); (*newsession)->pool = pool; (*newsession)->profile = profile; (*newsession)->in_chunksize = (*newsession)->out_chunksize = RTMP_DEFAULT_CHUNKSIZE; (*newsession)->recv_ack_window = RTMP_DEFAULT_ACK_WINDOW; + (*newsession)->send_ack_window = RTMP_DEFAULT_ACK_WINDOW; (*newsession)->next_streamid = 1; (*newsession)->io_private = NULL; + (*newsession)->dropped_video_frame = 0; switch_uuid_get(&uuid); switch_uuid_format((*newsession)->uuid, &uuid); @@ -786,10 +896,13 @@ switch_status_t rtmp_session_request(rtmp_profile_t *profile, rtmp_session_t **n #ifdef RTMP_DEBUG_IO { char buf[1024]; +#ifndef _WIN32 +#else snprintf(buf, sizeof(buf), "/tmp/rtmp-%s-in.txt", (*newsession)->uuid); (*newsession)->io_debug_in = fopen(buf, "w"); snprintf(buf, sizeof(buf), "/tmp/rtmp-%s-out.txt", (*newsession)->uuid); (*newsession)->io_debug_out = fopen(buf, "w"); +#endif } #endif @@ -982,6 +1095,15 @@ switch_call_cause_t rtmp_session_create_call(rtmp_session_t *rsession, switch_co tech_pvt->caller_profile = caller_profile; switch_core_session_add_stream(*newsession, NULL); + if (event) { + const char *want_video = switch_event_get_header(event, "want_video"); + + if (want_video && switch_true(want_video)) { + tech_pvt->has_video = 1; + switch_channel_set_variable(channel, "video_possible", "true"); + } + } + if (rtmp_tech_init(tech_pvt, rsession, *newsession) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "tech_init failed\n"); goto fail; @@ -1003,6 +1125,7 @@ switch_call_cause_t rtmp_session_create_call(rtmp_session_t *rsession, switch_co for (hp = event->headers; hp; hp = hp->next) { switch_channel_set_variable_name_printf(channel, hp->value, RTMP_USER_VARIABLE_PREFIX "_%s", hp->name); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "%s\n", hp->name); } } @@ -1081,14 +1204,14 @@ switch_status_t rtmp_profile_destroy(rtmp_profile_t **profile) { /* Kill all sessions */ while ((hi = switch_core_hash_first_iter((*profile)->session_hash, hi))) { void *val; - rtmp_session_t *session; + rtmp_session_t *rsession; const void *key; switch_ssize_t keylen; switch_core_hash_this(hi, &key, &keylen, &val); - session = val; - - rtmp_session_destroy(&session); + rsession = val; + + if (rsession->state != RS_DESTROY) rtmp_session_destroy(&rsession); } if ((*profile)->io->running > 0) { @@ -1536,16 +1659,16 @@ done: static const char *state2name(int state) { - switch(state) { - case RS_HANDSHAKE: - return "HANDSHAKE"; - case RS_HANDSHAKE2: - return "HANDSHAKE2"; - case RS_ESTABLISHED: - return "ESTABLISHED"; - default: - return "DESTROY (PENDING)"; - } + switch(state) { + case RS_HANDSHAKE: + return "HANDSHAKE"; + case RS_HANDSHAKE2: + return "HANDSHAKE2"; + case RS_ESTABLISHED: + return "ESTABLISHED"; + default: + return "DESTROY (PENDING)"; + } } #define RTMP_FUNCTION_SYNTAX "profile [profilename] [start | stop | rescan | restart]\nstatus profile [profilename]\nstatus profile [profilename] [reg | sessions]\nsession [session_id] [kill | login [user@domain] | logout [user@domain]]" @@ -1639,7 +1762,6 @@ SWITCH_STANDARD_API(rtmp_function) item->account ? item->account->user : NULL, item->account ? item->account->domain : NULL, item->flashVer, state2name(item->state)); - } switch_thread_rwlock_unlock(profile->session_rwlock); } else if (!zstr(argv[3]) && !strcmp(argv[3], "reg")) { @@ -1672,9 +1794,9 @@ SWITCH_STANDARD_API(rtmp_function) stream->write_function(stream, "-ERR No such profile [%s]\n", argv[2]); } } else { - switch_hash_index_t *hi; + switch_hash_index_t *hi = NULL; switch_thread_rwlock_rdlock(rtmp_globals.profile_rwlock); - for (hi = switch_core_hash_first(rtmp_globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) { + for (hi = switch_core_hash_first_iter(rtmp_globals.profile_hash, hi); hi; hi = switch_core_hash_next(&hi)) { void *val; const void *key; switch_ssize_t keylen; @@ -1742,22 +1864,22 @@ SWITCH_STANDARD_API(rtmp_function) } if (!zstr(dest)) { - if (rtmp_session_create_call(rsession, &newsession, 0, RTMP_DEFAULT_STREAM_AUDIO, dest, user, domain, NULL) != SWITCH_CAUSE_SUCCESS) { - stream->write_function(stream, "-ERR Couldn't create new call\n"); - } else { - rtmp_private_t *new_pvt = switch_core_session_get_private(newsession); - rtmp_send_invoke_free(rsession, 3, 0, 0, - amf0_str("onMakeCall"), - amf0_number_new(0), - amf0_null_new(), - amf0_str(switch_core_session_get_uuid(newsession)), - amf0_str(switch_str_nil(dest)), - amf0_str(switch_str_nil(new_pvt->auth)), - NULL); + if (rtmp_session_create_call(rsession, &newsession, 0, RTMP_DEFAULT_STREAM_AUDIO, dest, user, domain, NULL) != SWITCH_CAUSE_SUCCESS) { + stream->write_function(stream, "-ERR Couldn't create new call\n"); + } else { + rtmp_private_t *new_pvt = switch_core_session_get_private(newsession); + rtmp_send_invoke_free(rsession, 3, 0, 0, + amf0_str("onMakeCall"), + amf0_number_new(0), + amf0_null_new(), + amf0_str(switch_core_session_get_uuid(newsession)), + amf0_str(switch_str_nil(dest)), + amf0_str(switch_str_nil(new_pvt->auth)), + NULL); - rtmp_attach_private(rsession, switch_core_session_get_private(newsession)); - stream->write_function(stream, "+OK\n"); - } + rtmp_attach_private(rsession, switch_core_session_get_private(newsession)); + stream->write_function(stream, "+OK\n"); + } } else { stream->write_function(stream, "-ERR Missing destination number\n"); } @@ -1851,6 +1973,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_rtmp_load) rtmp_register_invoke_function("play", rtmp_i_play); rtmp_register_invoke_function("publish", rtmp_i_publish); rtmp_register_invoke_function("makeCall", rtmp_i_makeCall); + rtmp_register_invoke_function("FCSubscribe", rtmp_i_fcSubscribe); rtmp_register_invoke_function("login", rtmp_i_login); rtmp_register_invoke_function("logout", rtmp_i_logout); rtmp_register_invoke_function("sendDTMF", rtmp_i_sendDTMF); @@ -1926,7 +2049,7 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_rtmp_shutdown) switch_hash_index_t *hi = NULL; switch_mutex_lock(rtmp_globals.mutex); - while ((hi = switch_core_hash_first_iter( rtmp_globals.profile_hash, hi))) { + while ((hi = switch_core_hash_first_iter(rtmp_globals.profile_hash, hi))) { void *val; const void *key; switch_ssize_t keylen; diff --git a/src/mod/endpoints/mod_rtmp/mod_rtmp.h b/src/mod/endpoints/mod_rtmp/mod_rtmp.h index 1f77429747..e53cb95d94 100644 --- a/src/mod/endpoints/mod_rtmp/mod_rtmp.h +++ b/src/mod/endpoints/mod_rtmp/mod_rtmp.h @@ -23,6 +23,7 @@ * Contributor(s): * * Mathieu Rene + * Seven Du * * mod_rtmp.h -- RTMP Endpoint Module * @@ -45,8 +46,8 @@ #define RTMP_USER_VARIABLE_PREFIX "rtmp_u_" #define RTMP_DEFAULT_PORT 1935 -#define RTMP_TCP_READ_BUF 2048 -#define AMF_MAX_SIZE 2048 +#define RTMP_TCP_READ_BUF 2048 * 16 +#define AMF_MAX_SIZE 2048 * 16 #define SUPPORT_SND_NONE 0x0000 #define SUPPORT_SND_ADPCM 0x0002 @@ -77,7 +78,7 @@ #define kAMF0 0 #define kAMF3 3 -#define RTMP_DEFAULT_ACK_WINDOW 0x20000 +#define RTMP_DEFAULT_ACK_WINDOW 0x200000 #define RTMP_TYPE_CHUNKSIZE 0x01 #define RTMP_TYPE_ABORT 0x2 @@ -130,6 +131,12 @@ #define INT32_MAX 0x7fffffffL #endif +/* Media debug flags */ +#define RTMP_MD_AUDIO_READ (1 << 0) +#define RTMP_MD_AUDIO_WRITE (1 << 1) +#define RTMP_MD_VIDEO_READ (1 << 2) +#define RTMP_MD_VIDEO_WRITE (1 << 3) + typedef enum { RTMP_AUDIO_PCM = 0, RTMP_AUDIO_ADPCM = 1, @@ -412,6 +419,29 @@ struct rtmp_account { rtmp_account_t *next; }; +typedef struct rtmp2rtp_helper_s +{ + amf0_data *sps; + amf0_data *pps; + amf0_data *nal_list; + uint32_t lenSize; +} rtmp2rtp_helper_t; + +typedef struct rtp2rtmp_helper_s +{ + amf0_data *sps; + amf0_data *pps; + amf0_data *avc_conf; + switch_bool_t send; + switch_bool_t send_avc; + switch_buffer_t *rtmp_buf; + switch_buffer_t *fua_buf; //fu_a buf + uint32_t last_recv_ts; + uint8_t last_mark; + uint16_t last_seq; + switch_bool_t sps_changed; +} rtp2rtmp_helper_t; + struct rtmp_session { switch_memory_pool_t *pool; rtmp_profile_t *profile; @@ -484,6 +514,9 @@ struct rtmp_session { uint32_t media_streamid; /* < The stream id that was used for the last "play" command, where we should send media */ + switch_size_t dropped_video_frame; + + uint8_t media_debug; }; struct rtmp_private { @@ -509,6 +542,7 @@ struct rtmp_private { uint8_t video_codec; switch_time_t stream_start_ts; + switch_time_t stream_last_ts; switch_timer_t timer; switch_buffer_t *readbuf; switch_mutex_t *readbuf_mutex; @@ -522,6 +556,24 @@ struct rtmp_private { uint16_t maxlen; int over_size; + + //video + int has_video; + switch_codec_t video_read_codec; + switch_codec_t video_write_codec; + rtp2rtmp_helper_t video_write_helper; + rtmp2rtp_helper_t video_read_helper; + switch_frame_t video_read_frame; + uint32_t video_read_ts; + uint16_t seq; + unsigned char video_databuf[SWITCH_RTP_MAX_BUF_LEN]; /* < Buffer for read_frame */ + switch_buffer_t *video_readbuf; + switch_mutex_t *video_readbuf_mutex; + uint16_t video_maxlen; + int video_over_size; + + switch_core_media_params_t mparams; + switch_media_handle_t *media_handle; }; struct rtmp_reg; @@ -540,7 +592,6 @@ typedef enum { MSG_FULLHEADER = 1 } rtmp_message_send_flag_t; - /* Invokable functions from flash */ RTMP_INVOKE_FUNCTION(rtmp_i_connect); RTMP_INVOKE_FUNCTION(rtmp_i_createStream); @@ -548,6 +599,7 @@ RTMP_INVOKE_FUNCTION(rtmp_i_noop); RTMP_INVOKE_FUNCTION(rtmp_i_play); RTMP_INVOKE_FUNCTION(rtmp_i_publish); RTMP_INVOKE_FUNCTION(rtmp_i_makeCall); +RTMP_INVOKE_FUNCTION(rtmp_i_fcSubscribe); RTMP_INVOKE_FUNCTION(rtmp_i_sendDTMF); RTMP_INVOKE_FUNCTION(rtmp_i_login); RTMP_INVOKE_FUNCTION(rtmp_i_logout); diff --git a/src/mod/endpoints/mod_rtmp/rtmp.c b/src/mod/endpoints/mod_rtmp/rtmp.c index 196d51a0de..5bd503b066 100644 --- a/src/mod/endpoints/mod_rtmp/rtmp.c +++ b/src/mod/endpoints/mod_rtmp/rtmp.c @@ -25,12 +25,15 @@ * Mathieu Rene * Joao Mesquita * William King - * + * Seven Du + * Da Xiong * rtmp.c -- RTMP Protocol Handler * */ #include "mod_rtmp.h" +#include "handshake.h" + typedef struct { unsigned char *buf; @@ -97,6 +100,13 @@ void rtmp_handle_control(rtmp_session_t *rsession, int amfnumber) switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_INFO, "Ping reply: %d ms\n", (int)(now - sent)); } break; + case RTMP_CTRL_SET_BUFFER_LENGTH: + { + uint32_t stream_id = state->buf[2] << 24 | state->buf[3] << 16 | state->buf[4] << 8 | state->buf[5]; + uint32_t length = state->buf[6] << 24 | state->buf[7] << 16 | state->buf[8] << 8 | state->buf[9]; + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "stream=%u Client buffer set to %ums\n", stream_id, length); + } + break; default: switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_WARNING, "[amfnumber=%d] Unhandled control packet (type=0x%x)\n", amfnumber, type); @@ -117,7 +127,7 @@ void rtmp_handle_invoke(rtmp_session_t *rsession, int amfnumber) amf0_data *argv[100] = { 0 }; rtmp_invoke_function_t function; -#if 0 +#ifdef RTMP_DEBUG_IO printf(">>>>> BEGIN INVOKE MSG (num=0x%02x, type=0x%02x, stream_id=0x%x)\n", amfnumber, state->type, state->stream_id); while((dump = amf0_data_read(my_buffer_read, &helper))) { amf0_data *dump2; @@ -423,6 +433,9 @@ void rtmp_send_incoming_call(switch_core_session_t *session, switch_event_t *var } if (event) { + if (tech_pvt->has_video) { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "want_video", "true"); + } amf_event_to_object(&obj, event); switch_event_destroy(&event); } @@ -559,12 +572,64 @@ switch_status_t rtmp_send_message(rtmp_session_t *rsession, uint8_t amfnumber, u switch_status_t status = SWITCH_STATUS_SUCCESS; rtmp_state_t *state = &rsession->amfstate_out[amfnumber]; - if ((rsession->send_ack + rsession->send_ack_window) < rsession->send && - (type == RTMP_TYPE_VIDEO || type == RTMP_TYPE_AUDIO)) { + // switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "%d send_ack=%d send=%d window=%d wait_ack=%d\n", + // type, rsession->send_ack, rsession->send, rsession->send_ack_window, rsession->send + 3073 - rsession->send_ack); + + if (type == RTMP_TYPE_VIDEO) { + uint32_t window = rsession->send_ack_window; + + if (rsession->media_debug & RTMP_MD_VIDEO_WRITE) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "W V ts:%u data:0x%02x len:%" SWITCH_SIZE_T_FMT "\n", timestamp, *message, len); + } + + /* start to drop video frame on window/2 if the frame is a non-IDR video frame + start to drop video frame on window * 3/4 if the frame is a IDR frame + start to drop audio frame on widnow full + */ + + if (*message == 0x17) { + window = window / 4 * 3; + } else { + window /= 2; + } + + if ((rsession->send_ack + window) < (rsession->send + 3073)) { + /* We're sending too fast, drop the frame */ + rsession->dropped_video_frame++; + switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_DEBUG, + "DROP VIDEO FRAME [amfnumber=%d type=0x%x stream_id=0x%x ftype=0x%x] len=%"SWITCH_SIZE_T_FMT + " dropped=%"SWITCH_SIZE_T_FMT"\n", + amfnumber, type, stream_id, *message, len, rsession->dropped_video_frame); + return SWITCH_STATUS_SUCCESS; + } + + if (rsession->dropped_video_frame) { + if (*message != 0x17) { + rsession->dropped_video_frame++; + switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_DEBUG, + "DROP VIDEO FRAME [amfnumber=%d type=0x%x stream_id=0x%x ftype=0x%x] len=%"SWITCH_SIZE_T_FMT + " dropped=%"SWITCH_SIZE_T_FMT" waiting for the next IDR\n", + amfnumber, type, stream_id, *message, len, rsession->dropped_video_frame); + + return SWITCH_STATUS_SUCCESS; + } else { + switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_INFO, + "Got IDR frame after %"SWITCH_SIZE_T_FMT" frame(s) dropped\n", + rsession->dropped_video_frame); + rsession->dropped_video_frame = 0; + } + } + } + + if (type == RTMP_TYPE_AUDIO && (rsession->media_debug & RTMP_MD_AUDIO_WRITE)) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "W A ts:%u data:0x%02x len:%" SWITCH_SIZE_T_FMT "\n", timestamp, *message, len); + } + + if (type == RTMP_TYPE_AUDIO && (rsession->send_ack + rsession->send_ack_window) < (rsession->send + 3073)) { /* We're sending too fast, drop the frame */ switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_DEBUG, "DROP %s FRAME [amfnumber=%d type=0x%x stream_id=0x%x] len=%"SWITCH_SIZE_T_FMT" \n", - type == RTMP_TYPE_AUDIO ? "AUDIO" : "VIDEO", amfnumber, type, stream_id, len); + "AUDIO", amfnumber, type, stream_id, len); return SWITCH_STATUS_SUCCESS; } @@ -654,6 +719,7 @@ switch_status_t rtmp_send_message(rtmp_session_t *rsession, uint8_t amfnumber, u while (((signed)len - (signed)pos) > 0) { switch_mutex_unlock(rsession->socket_mutex); /* Let other threads send data on the socket */ + switch_cond_next(); switch_mutex_lock(rsession->socket_mutex); hdrsize = 1; if (rsession->profile->io->write(rsession, (unsigned char*)µhdr, &hdrsize) != SWITCH_STATUS_SUCCESS) { @@ -698,13 +764,26 @@ switch_status_t rtmp_handle_data(rtmp_session_t *rsession) /* Send reply (S0 + S1) */ memset(buf, 0, sizeof(buf)); - *buf = '\x03'; + //*buf = '\x03'; + /* fix handshake for h264 */ + { + handshake_helper_t shake_helper; + shake_helper.r_buf = rsession->hsbuf; + shake_helper.r_len = 2048; + shake_helper.r_pos = 0; + shake_helper.w_buf = buf; + shake_helper.w_len = sizeof(buf); + shake_helper.w_pos = 0; + SHandShake0(&shake_helper); + } + s = 1537; rsession->profile->io->write(rsession, (unsigned char*)buf, &s); /* Send S2 */ s = 1536; - rsession->profile->io->write(rsession, rsession->hsbuf, &s); + //rsession->profile->io->write(rsession, rsession->hsbuf, &s); + rsession->profile->io->write(rsession, (unsigned char*)buf + 1537, &s); switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_DEBUG, "Sent handshake response\n"); @@ -860,7 +939,9 @@ switch_status_t rtmp_handle_data(rtmp_session_t *rsession) if (!s) { /* Restart from beginning */ - s = state->remainlen = state->origlen; + state->remainlen = state->origlen; + s = state->remainlen < rsession->in_chunksize ? state->remainlen : rsession->in_chunksize; + rsession->parse_remain = s; if (!s) { switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_ERROR, "Protocol error, forcing big read\n"); @@ -919,6 +1000,10 @@ switch_status_t rtmp_handle_data(rtmp_session_t *rsession) rtmp_handle_invoke(rsession, rsession->amfnumber); break; case RTMP_TYPE_AUDIO: /* Audio data */ + if (rsession->media_debug & RTMP_MD_AUDIO_READ) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "R A ts:%u data:0x%02x len:%d\n", state->ts, *(state->buf), state->origlen); + } + switch_thread_rwlock_wrlock(rsession->rwlock); if (rsession->tech_pvt) { uint16_t len = state->origlen; @@ -930,13 +1015,13 @@ switch_status_t rtmp_handle_data(rtmp_session_t *rsession) switch_mutex_lock(rsession->tech_pvt->readbuf_mutex); - if (rsession->tech_pvt->maxlen && switch_buffer_inuse(rsession->tech_pvt->readbuf) > (switch_size_t)(rsession->tech_pvt->maxlen * 40)) { + if (rsession->tech_pvt->maxlen && switch_buffer_inuse(rsession->tech_pvt->readbuf) > rsession->tech_pvt->maxlen * 40) { rsession->tech_pvt->over_size++; } else { rsession->tech_pvt->over_size = 0; } if (rsession->tech_pvt->over_size > 10) { - switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_DEBUG, + switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_WARNING, "%s buffer > %u for 10 consecutive packets... Flushing buffer\n", switch_core_session_get_name(rsession->tech_pvt->session), rsession->tech_pvt->maxlen * 40); switch_buffer_zero(rsession->tech_pvt->readbuf); @@ -947,6 +1032,7 @@ switch_status_t rtmp_handle_data(rtmp_session_t *rsession) switch_buffer_write(rsession->tech_pvt->readbuf, &len, 2); switch_buffer_write(rsession->tech_pvt->readbuf, state->buf, len); if (len > rsession->tech_pvt->maxlen) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "changing maxlen from %d to %d\n", rsession->tech_pvt->maxlen, len); rsession->tech_pvt->maxlen = len; } switch_mutex_unlock(rsession->tech_pvt->readbuf_mutex); @@ -954,11 +1040,55 @@ switch_status_t rtmp_handle_data(rtmp_session_t *rsession) switch_thread_rwlock_unlock(rsession->rwlock); break; case RTMP_TYPE_VIDEO: /* Video data */ + if (rsession->media_debug & RTMP_MD_VIDEO_READ) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "R V ts:%u data:0x%02x len:%d \n", state->ts, *(state->buf), state->origlen); + } + + if ((!rsession->tech_pvt) || (!rsession->tech_pvt->has_video)) break; + + switch_thread_rwlock_wrlock(rsession->rwlock); + if (rsession->tech_pvt) { + uint16_t len = state->origlen; + + if (!rsession->tech_pvt->video_readbuf) { + switch_thread_rwlock_unlock(rsession->rwlock); + return SWITCH_STATUS_FALSE; + } + + switch_mutex_lock(rsession->tech_pvt->video_readbuf_mutex); + if (rsession->tech_pvt->video_maxlen && switch_buffer_inuse(rsession->tech_pvt->video_readbuf) > rsession->tech_pvt->video_maxlen * 100) { + rsession->tech_pvt->video_over_size++; + } else { + rsession->tech_pvt->video_over_size = 0; + } + if (rsession->tech_pvt->video_over_size > 10) { + switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_DEBUG, + "%s buffer > %u for 10 consecutive packets... Flushing buffer\n", + switch_core_session_get_name(rsession->tech_pvt->session), rsession->tech_pvt->video_maxlen * 100); + switch_buffer_zero(rsession->tech_pvt->video_readbuf); + #ifdef RTMP_DEBUG_IO + fprintf(rsession->io_debug_in, "[chunk_stream=%d type=0x%x ts=%d stream_id=0x%x] FLUSH BUFFER [exceeded %u]\n", rsession->amfnumber, state->type, (int)state->ts, state->stream_id, rsession->tech_pvt->video_maxlen * 5); + #endif + } + switch_buffer_write(rsession->tech_pvt->video_readbuf, &len, 2); + switch_buffer_write(rsession->tech_pvt->video_readbuf, &state->ts, 4); + switch_buffer_write(rsession->tech_pvt->video_readbuf, state->buf, len); + if (len > rsession->tech_pvt->video_maxlen) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "changing video max len from %d to %d\n", rsession->tech_pvt->video_maxlen, len); + rsession->tech_pvt->video_maxlen = len; + } + switch_mutex_unlock(rsession->tech_pvt->video_readbuf_mutex); + } + switch_thread_rwlock_unlock(rsession->rwlock); + break; case RTMP_TYPE_METADATA: /* Metadata */ break; case RTMP_TYPE_WINDOW_ACK_SIZE: - rsession->send_ack_window = (state->buf[0] << 24) | (state->buf[1] << 16) | (state->buf[2] << 8) | (state->buf[3]); - switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_DEBUG, "Set window size: %lu bytes\n", (long unsigned int)rsession->send_ack_window); + { + uint32_t new_window = (state->buf[0] << 24) | (state->buf[1] << 16) | (state->buf[2] << 8) | (state->buf[3]); + switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_DEBUG, "Set window size: from %u to %u bytes\n", rsession->send_ack_window, new_window); + rsession->send_ack_window = new_window; + } break; case RTMP_TYPE_ACK: { @@ -972,6 +1102,9 @@ switch_status_t rtmp_handle_data(rtmp_session_t *rsession) rsession->send_bw = (ack - rsession->send_ack) / delta; } + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "got ack %d send:%d wait-ack:%d\n", + ack, rsession->send + 3073, rsession->send + 3073 - ack); + rsession->send_ack = ack; rsession->send_ack_ts = switch_micro_time_now(); break; diff --git a/src/mod/endpoints/mod_rtmp/rtmp_sig.c b/src/mod/endpoints/mod_rtmp/rtmp_sig.c index f44b3ec44d..4cba13aabb 100644 --- a/src/mod/endpoints/mod_rtmp/rtmp_sig.c +++ b/src/mod/endpoints/mod_rtmp/rtmp_sig.c @@ -23,6 +23,7 @@ * Contributor(s): * * Mathieu Rene + * Seven Du * * rtmp.c -- RTMP Signalling functions * @@ -284,8 +285,7 @@ RTMP_INVOKE_FUNCTION(rtmp_i_makeCall) if ((number = amf0_get_string(argv[1]))) { switch_event_t *event = NULL; char *auth, *user = NULL, *domain = NULL; - - if ((auth = amf0_get_string(argv[2])) && !zstr(auth)) { + if (argc >= 3 && (auth = amf0_get_string(argv[2])) && !zstr(auth)) { switch_split_user_domain(auth, &user, &domain); if (rtmp_session_check_user(rsession, user, domain) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_WARNING, "Unauthorized call to %s, client is not logged in account [%s@%s]\n", @@ -327,6 +327,33 @@ RTMP_INVOKE_FUNCTION(rtmp_i_makeCall) return SWITCH_STATUS_SUCCESS; } +RTMP_INVOKE_FUNCTION(rtmp_i_fcSubscribe) +{ + switch_status_t status; + int ac; + amf0_data *av[3] = { 0 }; + + switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_DEBUG, "Got FCSubscribe for %s on stream %d\n", switch_str_nil(amf0_get_string(argv[1])), state->stream_id); + + ac = 3; + av[0] = argv[0]; + av[1] = argv[1]; + av[2] = amf0_boolean_new(1); + switch_assert(av[2]); + + status = rtmp_i_receiveaudio(rsession, state, amfnumber, transaction_id, ac, av); + if (status != SWITCH_STATUS_SUCCESS) return status; + + rtmp_i_receivevideo(rsession, state, amfnumber, transaction_id, ac, av); + if (status != SWITCH_STATUS_SUCCESS) return status; + + amf0_data_free(av[2]); + + rtmp_i_makeCall(rsession, state, amfnumber, transaction_id, argc, argv); + + return status; +} + RTMP_INVOKE_FUNCTION(rtmp_i_sendDTMF) { /* Send DTMFs on the active channel */ diff --git a/src/mod/endpoints/mod_rtmp/rtmp_tcp.c b/src/mod/endpoints/mod_rtmp/rtmp_tcp.c index b8470585bb..c4288a4c3b 100644 --- a/src/mod/endpoints/mod_rtmp/rtmp_tcp.c +++ b/src/mod/endpoints/mod_rtmp/rtmp_tcp.c @@ -49,34 +49,10 @@ typedef struct rtmp_io_tcp rtmp_io_tcp_t; struct rtmp_tcp_io_private { switch_pollfd_t *pollfd; switch_socket_t *socket; - switch_buffer_t *sendq; - switch_bool_t poll_send; }; typedef struct rtmp_tcp_io_private rtmp_tcp_io_private_t; -static void rtmp_tcp_alter_pollfd(rtmp_session_t *rsession, switch_bool_t pollout) -{ - rtmp_tcp_io_private_t *io_pvt = rsession->io_private; - rtmp_io_tcp_t *io = (rtmp_io_tcp_t*)rsession->profile->io; - - if (pollout && (io_pvt->pollfd->reqevents & SWITCH_POLLOUT)) { - return; - } else if (!pollout && !(io_pvt->pollfd->reqevents & SWITCH_POLLOUT)) { - return; - } - - switch_pollset_remove(io->pollset, io_pvt->pollfd); - io_pvt->pollfd->reqevents = SWITCH_POLLIN | SWITCH_POLLERR; - if (pollout) { - io_pvt->pollfd->reqevents |= SWITCH_POLLOUT; - } - switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_NOTICE, "Pollout: %s\n", - pollout ? "true" : "false"); - - switch_pollset_add(io->pollset, io_pvt->pollfd); -} - static switch_status_t rtmp_tcp_read(rtmp_session_t *rsession, unsigned char *buf, switch_size_t *len) { //rtmp_io_tcp_t *io = (rtmp_io_tcp_t*)rsession->profile->io; @@ -117,8 +93,10 @@ static switch_status_t rtmp_tcp_write(rtmp_session_t *rsession, const unsigned c { //rtmp_io_tcp_t *io = (rtmp_io_tcp_t*)rsession->profile->io; rtmp_tcp_io_private_t *io_pvt = rsession->io_private; - switch_status_t status; + switch_status_t status = SWITCH_STATUS_SUCCESS; switch_size_t orig_len = *len; + switch_size_t remaining = *len; + int sanity = 100; #ifdef RTMP_DEBUG_IO { @@ -139,29 +117,32 @@ static switch_status_t rtmp_tcp_write(rtmp_session_t *rsession, const unsigned c } #endif - if (io_pvt->sendq && switch_buffer_inuse(io_pvt->sendq) > 0) { - /* We already have queued data, append it to the sendq */ - switch_buffer_write(io_pvt->sendq, buf, *len); - return SWITCH_STATUS_SUCCESS; - } - - status = switch_socket_send_nonblock(io_pvt->socket, (char*)buf, len); - - if (*len > 0 && *len < orig_len) { - + while (remaining > 0) { if (rsession->state >= RS_DESTROY) { return SWITCH_STATUS_FALSE; } - /* We didnt send it all... add it to the sendq*/ - switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_DEBUG, "%"SWITCH_SIZE_T_FMT" bytes added to sendq.\n", (orig_len - *len)); +again: + status = switch_socket_send_nonblock(io_pvt->socket, (char*)buf, len); - switch_buffer_write(io_pvt->sendq, (buf + *len), orig_len - *len); + if ((status == 32 || SWITCH_STATUS_IS_BREAK(status)) && sanity-- > 0) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "sending too fast, retrying %d\n", sanity); + goto again; + } - /* Make sure we poll-write */ - rtmp_tcp_alter_pollfd(rsession, SWITCH_TRUE); + if (status != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "send error %d\n", status); + break; + } + + if (*len != orig_len) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "sent %ld of %ld\n", *len, orig_len); + buf += *len; + remaining -= *len; + *len = remaining; } + *len = orig_len; + return status; } @@ -178,11 +159,6 @@ static switch_status_t rtmp_tcp_close(rtmp_session_t *rsession) switch_socket_close(io_pvt->socket); io_pvt->socket = NULL; } - - if ( io_pvt->sendq ) { - switch_buffer_destroy(&(io_pvt->sendq)); - } - return SWITCH_STATUS_SUCCESS; } @@ -246,7 +222,6 @@ void *SWITCH_THREAD_FUNC rtmp_io_tcp_thread(switch_thread_t *thread, void *obj) pvt->socket = newsocket; switch_socket_create_pollfd(&pvt->pollfd, newsocket, SWITCH_POLLIN | SWITCH_POLLERR, rsession, rsession->pool); switch_pollset_add(io->pollset, pvt->pollfd); - switch_buffer_create_dynamic(&pvt->sendq, 512, 1024, 0); /* Get the remote address/port info */ switch_socket_addr_get(&addr, SWITCH_TRUE, newsocket); @@ -261,18 +236,7 @@ void *SWITCH_THREAD_FUNC rtmp_io_tcp_thread(switch_thread_t *thread, void *obj) rtmp_session_t *rsession = (rtmp_session_t*)fds[i].client_data; rtmp_tcp_io_private_t *io_pvt = (rtmp_tcp_io_private_t*)rsession->io_private; - if (fds[i].rtnevents & SWITCH_POLLOUT && switch_buffer_inuse(io_pvt->sendq) > 0) { - /* Send as much remaining data as possible */ - switch_size_t sendlen; - const void *ptr; - sendlen = switch_buffer_peek_zerocopy(io_pvt->sendq, &ptr); - switch_socket_send_nonblock(io_pvt->socket, ptr, &sendlen); - switch_buffer_toss(io_pvt->sendq, sendlen); - if (switch_buffer_inuse(io_pvt->sendq) == 0) { - /* Remove our fd from OUT polling */ - rtmp_tcp_alter_pollfd(rsession, SWITCH_FALSE); - } - } else if (fds[i].rtnevents & SWITCH_POLLIN && rtmp_handle_data(rsession) != SWITCH_STATUS_SUCCESS) { + if (fds[i].rtnevents & SWITCH_POLLIN && rtmp_handle_data(rsession) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_DEBUG, "Closing socket\n"); switch_mutex_lock(io->mutex); diff --git a/src/mod/endpoints/mod_rtmp/rtmp_video.c b/src/mod/endpoints/mod_rtmp/rtmp_video.c new file mode 100644 index 0000000000..d351640a6a --- /dev/null +++ b/src/mod/endpoints/mod_rtmp/rtmp_video.c @@ -0,0 +1,749 @@ +/* + * mod_rtmp for FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * Copyright (C) 2015, Seven Du. + * + * Version: MPL 1.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (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.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is rtmp_video for FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * + * The Initial Developer of the Original Code is Barracuda Networks Inc. + * Portions created by the Initial Developer are Copyright (C) + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Seven Du + * Da Xiong + * + * rtmp_video.c -- RTMP video + * + */ + +#include + + +amf0_data * amf0_array_shift(amf0_data * data) { + return (data != NULL) ? amf0_array_delete(data, amf0_array_first(data)) : NULL; +} + + +void rtmp2rtp_helper_init(rtmp2rtp_helper_t *helper) +{ + memset(helper, 0, sizeof(rtmp2rtp_helper_t)); + helper->nal_list = amf0_array_new(); + helper->pps = NULL; + helper->sps = NULL; + +} + +void rtp2rtmp_helper_init(rtp2rtmp_helper_t *helper) +{ + memset(helper, 0, sizeof(rtmp2rtp_helper_t)); + helper->pps = NULL; + helper->sps = NULL; + helper->send = SWITCH_FALSE; + helper->send_avc = SWITCH_FALSE; + switch_buffer_create_dynamic(&helper->rtmp_buf, 10240, 10240, 0); + switch_buffer_create_dynamic(&helper->fua_buf, 10240, 10240, 0); +} + +void rtmp2rtp_helper_destroy(rtmp2rtp_helper_t *helper) +{ + amf0_data_free(helper->nal_list); + amf0_data_free(helper->sps); + amf0_data_free(helper->pps); + helper = NULL; +} + +void rtp2rtmp_helper_destroy(rtp2rtmp_helper_t *helper) +{ + + amf0_data_free(helper->avc_conf); + amf0_data_free(helper->sps); + amf0_data_free(helper->pps); + if (helper->rtmp_buf) switch_buffer_destroy(&helper->rtmp_buf); + if (helper->fua_buf) switch_buffer_destroy(&helper->fua_buf); + helper = NULL; +} + +switch_status_t on_rtmp_tech_init(switch_core_session_t *session, rtmp_private_t *tech_pvt) +{ + + //for video + tech_pvt->video_read_frame.packet = tech_pvt->video_databuf; + tech_pvt->video_read_frame.data = tech_pvt->video_databuf + 12; + tech_pvt->video_read_frame.buflen = SWITCH_RECOMMENDED_BUFFER_SIZE - 12; + + switch_mutex_init(&tech_pvt->video_readbuf_mutex, SWITCH_MUTEX_NESTED, switch_core_session_get_pool(session)); + + switch_buffer_create_dynamic(&tech_pvt->video_readbuf, 1024, 1024, 2048000); + + rtmp2rtp_helper_init(&tech_pvt->video_read_helper); + rtp2rtmp_helper_init(&tech_pvt->video_write_helper); + tech_pvt->video_write_helper.last_mark = 1; + tech_pvt->video_codec = 0xB2; + return SWITCH_STATUS_SUCCESS; +} + +switch_status_t on_rtmp_destroy(rtmp_private_t *tech_pvt) +{ + + if (tech_pvt) { + //for video + + if (switch_core_codec_ready(&tech_pvt->video_read_codec)) { + switch_core_codec_destroy(&tech_pvt->video_read_codec); + } + + if (switch_core_codec_ready(&tech_pvt->video_write_codec)) { + switch_core_codec_destroy(&tech_pvt->video_write_codec); + } + + rtmp2rtp_helper_destroy(&tech_pvt->video_read_helper); + rtp2rtmp_helper_destroy(&tech_pvt->video_write_helper); + switch_buffer_destroy(&tech_pvt->video_readbuf); + + switch_media_handle_destroy(tech_pvt->session); + } + + return SWITCH_STATUS_SUCCESS; +} + + +/*Rtmp packet to rtp frame*/ +switch_status_t rtmp_rtmp2rtpH264(rtmp2rtp_helper_t *read_helper, uint8_t* data, uint32_t len) +{ + switch_status_t status = SWITCH_STATUS_SUCCESS; + + if (data[0] == 0x17 && data[1] == 0) { + switch_byte_t *pdata = data + 2; + int cfgVer = pdata[3]; + if (cfgVer == 1) { + int i = 0; + int numSPS = 0; + int numPPS = 0; + int lenSize = (pdata[7] & 0x03) + 1; + int lenSPS; + int lenPPS; + //sps + numSPS = pdata[8] & 0x1f; + pdata += 9; + for (i = 0; i < numSPS; i++) { + lenSPS = ((pdata[0] & 0xff) << 8) | (pdata[1] & 0xff); + pdata += 2; + if (read_helper->sps == NULL) { + read_helper->sps = amf0_string_new(pdata, lenSPS); + } + pdata += lenSPS; + } + //pps + numPPS = pdata[0]; + pdata += 1; + for (i = 0; i < numPPS; i++) { + lenPPS = ((pdata[0] & 0xff) << 8) | (pdata[1] & 0xff); + pdata +=2; + if (read_helper->pps == NULL) { + read_helper->pps = amf0_string_new(pdata, lenPPS); + } + pdata += lenPPS; + } + + read_helper->lenSize = lenSize; + + // add sps to list + if (read_helper->sps != NULL) { + amf0_data *sps = amf0_string_new( + amf0_string_get_uint8_ts(read_helper->sps), + amf0_string_get_size(read_helper->sps)); + + amf0_array_push(read_helper->nal_list, sps); + + } + // add pps to list + if (read_helper->pps != NULL) { + amf0_data *pps = amf0_string_new( + amf0_string_get_uint8_ts(read_helper->pps), + amf0_string_get_size(read_helper->pps)); + amf0_array_push(read_helper->nal_list, pps); + } + + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR,"Unsuported cfgVer=%d" , cfgVer); + } + } else if ((data[0] == 0x17 || data[0] == 0x27) && data[1] == 1) { + if (read_helper->sps && read_helper->pps) { + switch_byte_t * pdata = data + 5; + uint32_t pdata_len = len - 5; + uint32_t lenSize = read_helper->lenSize; + switch_byte_t *nal_buf = NULL; + uint32_t nal_len = 0; + + while (pdata_len > 0) { + uint32_t nalSize = 0; + switch (lenSize) { + case 1: + nalSize = pdata[lenSize - 1] & 0xff; + break; + case 2: + nalSize = ((pdata[lenSize - 2] & 0xff) << 8) | (pdata[lenSize - 1] & 0xff); + break; + case 4: + nalSize = (pdata[lenSize - 4] & 0xff) << 24 | + (pdata[lenSize - 3] & 0xff) << 16 | + (pdata[lenSize - 2] & 0xff) << 8 | + (pdata[lenSize - 1] & 0xff); + break; + default: + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid length size: %d" , lenSize); + return SWITCH_STATUS_FALSE; + } + + nal_buf = pdata + lenSize; + nal_len = nalSize; + + //next nal + pdata = pdata + lenSize + nalSize; + pdata_len -= (lenSize + nalSize); + } + + if ((nal_len > 0 && nal_len < len) && nal_buf != NULL) { + + switch_byte_t * remaining = nal_buf; + int32_t remaining_len = nal_len; + int nalType = remaining[0] & 0x1f; + int nri = remaining[0] & 0x60; + + if (nalType == 5 || nalType == 1) { + if (remaining_len < MAX_RTP_PAYLOAD_SIZE) { + amf0_array_push(read_helper->nal_list, amf0_string_new(remaining, remaining_len)); + } else { + switch_byte_t start = (uint8_t) 0x80; + remaining += 1; + remaining_len -= 1; + + while (remaining_len > 0) { + int32_t payload_len = (MAX_RTP_PAYLOAD_SIZE - 2) < remaining_len ? (MAX_RTP_PAYLOAD_SIZE - 2) : remaining_len; + + switch_byte_t payload[MAX_RTP_PAYLOAD_SIZE]; + switch_byte_t end; + + memcpy(payload + 2, remaining, payload_len); + remaining_len -= payload_len; + remaining += payload_len; + + end = (switch_byte_t) ((remaining_len > 0) ? 0 : 0x40); + payload[0] = nri | 28; // FU-A + payload[1] = start | end | nalType; + + amf0_array_push(read_helper->nal_list, amf0_string_new(payload, payload_len + 2)); + + start = 0; + } + } + } + + } + } + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Missing rtmp data\n"); + } + + return status; +} + +switch_bool_t sps_changed(amf0_data *data, uint8_t *new, int datalen) +{ + uint8_t *old; + int i = 0;; + + if (!data) return SWITCH_TRUE; + if (datalen != amf0_string_get_size(data)) return SWITCH_TRUE; + + old = amf0_string_get_uint8_ts(data); + + while(i < datalen) { + if (*(old + i) != *(new + i)) return SWITCH_TRUE; + i++; + } + + return SWITCH_FALSE; +} + +switch_status_t rtmp_rtp2rtmpH264(rtp2rtmp_helper_t *helper, switch_frame_t *frame) +{ + uint8_t* packet = frame->packet; + uint32_t len = frame->packetlen; + switch_rtp_hdr_t *raw_rtp = (switch_rtp_hdr_t *)packet; + switch_byte_t *payload = packet + 12; + int datalen = len - 12; + int nalType = payload[0] & 0x1f; + uint32_t size = 0; + uint16_t rtp_seq = ntohs(raw_rtp->seq); + // uint32_t rtp_ts = ntohl(raw_rtp->ts); + static const uint8_t rtmp_header17[] = {0x17, 1, 0, 0, 0}; + static const uint8_t rtmp_header27[] = {0x27, 1, 0, 0, 0}; + + // switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, + // "read: %-4u: %02x %02x ts:%u seq:%u %s\n", + // len, payload[0], payload[1], rtp_ts, rtp_seq, raw_rtp->m ? " mark" : ""); + +#if 0 + if (helper->last_seq && helper->last_seq + 1 != rtp_seq) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "possible video rtp packet loss? seq: %u - %u - 1 = %d ts: %u - %u = %d\n", + ntohs(raw_rtp->seq), helper->last_seq, (int)(rtp_seq - helper->last_seq - 1), + ntohl(raw_rtp->ts), helper->last_recv_ts, (int)(rtp_ts - helper->last_recv_ts)); + +/* + if (nalType != 7) { + if (helper->sps) { + amf0_data_free(helper->sps); + helper->sps = NULL; + } + helper->last_recv_ts = rtp_ts; + helper->last_mark = raw_rtp->m; + helper->last_seq = rtp_seq; + goto wait_sps; + } +*/ + } + +#endif + + if (helper->last_recv_ts != frame->timestamp) { + switch_buffer_zero(helper->rtmp_buf); + switch_buffer_zero(helper->fua_buf); + } + helper->last_recv_ts = frame->timestamp; + helper->last_mark = frame->m;//raw_rtp->m; + helper->last_seq = rtp_seq; + + switch (nalType) { + case 7: //sps + if (sps_changed(helper->sps, payload, datalen)) { + amf0_data_free(helper->sps); + helper->sps = amf0_string_new(payload, datalen); + helper->sps_changed++; + } else { + helper->sps_changed = 0; + } + break; + case 8: //pps + amf0_data_free(helper->pps); + helper->pps = amf0_string_new(payload, datalen); + break; + case 1: //Non IDR + size = htonl(datalen); + if (switch_buffer_inuse(helper->rtmp_buf) == 0) + switch_buffer_write(helper->rtmp_buf, rtmp_header27, sizeof(rtmp_header27)); + switch_buffer_write(helper->rtmp_buf, &size, sizeof(uint32_t)); + switch_buffer_write(helper->rtmp_buf, payload, datalen); + break; + case 5: //IDR + size = htonl(datalen); + if (switch_buffer_inuse(helper->rtmp_buf) == 0) + switch_buffer_write(helper->rtmp_buf, rtmp_header17, sizeof(rtmp_header17)); + switch_buffer_write(helper->rtmp_buf, &size, sizeof(uint32_t)); + switch_buffer_write(helper->rtmp_buf, payload, datalen); + break; + case 28: //FU-A + { + uint8_t *q = payload; + uint8_t h264_start_bit = q[1] & 0x80; + uint8_t h264_end_bit = q[1] & 0x40; + uint8_t h264_type = q[1] & 0x1F; + uint8_t h264_nri = (q[0] & 0x60) >> 5; + uint8_t h264_key = (h264_nri << 5) | h264_type; + + if (h264_start_bit) { + /* write NAL unit code */ + switch_buffer_write(helper->fua_buf, &h264_key, sizeof(h264_key)); + } + + switch_buffer_write(helper->fua_buf, q + 2, datalen - 2); + + if (h264_end_bit) { + const void * nal_data; + + uint32_t used = switch_buffer_inuse(helper->fua_buf); + uint32_t used_big = htonl(used); + switch_buffer_peek_zerocopy(helper->fua_buf, &nal_data); + + nalType = ((uint8_t*)nal_data)[0] & 0x1f; + if (switch_buffer_inuse(helper->rtmp_buf) == 0) { + if (nalType == 5) + switch_buffer_write(helper->rtmp_buf, rtmp_header17, sizeof(rtmp_header17)); + else + switch_buffer_write(helper->rtmp_buf, rtmp_header27, sizeof(rtmp_header27)); + } + + switch_buffer_write(helper->rtmp_buf, &used_big, sizeof(uint32_t)); + switch_buffer_write(helper->rtmp_buf, nal_data, used); + switch_buffer_zero(helper->fua_buf); + } + + } + break; + case 24: + {// for aggregated SPS and PPSs + uint8_t *q = payload + 1; + uint16_t nalu_size = 0; + int nt = 0; + int nidx = 0; + while (nidx < datalen - 1) { + /* get NALU size */ + nalu_size = (q[nidx] << 8) | (q[nidx + 1]); + + nidx += 2; + + if (nalu_size == 0) { + nidx++; + continue; + } + + /* write NALU data */ + nt = q[nidx] & 0x1f; + switch (nt) { + case 1: //Non IDR + size = htonl(nalu_size); + if (switch_buffer_inuse(helper->rtmp_buf) == 0) + switch_buffer_write(helper->rtmp_buf, rtmp_header27, sizeof(rtmp_header27)); + switch_buffer_write(helper->rtmp_buf, &size, sizeof(uint32_t)); + switch_buffer_write(helper->rtmp_buf, q + nidx, nalu_size); + break; + case 5: // IDR + size = htonl(nalu_size); + if (switch_buffer_inuse(helper->rtmp_buf) == 0) + switch_buffer_write(helper->rtmp_buf, rtmp_header17, sizeof(rtmp_header17)); + + switch_buffer_write(helper->rtmp_buf, &size, sizeof(uint32_t)); + switch_buffer_write(helper->rtmp_buf, q + nidx, nalu_size); + break; + case 7: //sps + amf0_data_free(helper->sps); + helper->sps = amf0_string_new( q + nidx, nalu_size); + break; + case 8: //pps + amf0_data_free(helper->pps); + helper->pps = amf0_string_new(q + nidx, nalu_size); + break; + default: + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Unsupported NAL %d in STAP-A\n", nt); + break; + } + nidx += nalu_size; + } + } + break; + default: + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Unsupported NAL %d\n", nalType); + break; + } + + // build the avc seq + if (helper->sps_changed && helper->sps != NULL && helper->pps != NULL) { + + int i = 0; + uint16_t size; + uint8_t *sps = amf0_string_get_uint8_ts(helper->sps); + unsigned char buf[AMF_MAX_SIZE * 2]; /* make sure the buffer is big enough */ + + buf[i++] = 0x17; // i = 0 + buf[i++] = 0; // 0 for sps/pps packet + buf[i++] = 0; // timestamp + buf[i++] = 0; // timestamp + buf[i++] = 0; // timestamp + buf[i++] = 1; // AVC Decode Configuration Version + buf[i++] = sps[1]; // H264 profile 0x42 = Baseline + buf[i++] = sps[2]; // Compatiable Level + buf[i++] = sps[3]; // H264 profile 0x1e = profile 30, 0x1f = profile 31 + buf[i++] = 0xff; // 111111 11 0B11 = 3 = lengthSizeMinusOne, LengtSize = 4 + buf[i++] = 0xe1; // i = 10, number of sps = 1 + + // 2 bytes sps size + size = htons(amf0_string_get_size(helper->sps)); + memcpy(buf + i, &size, 2); + i += 2; + // sps data + memcpy(buf + i, sps, amf0_string_get_size(helper->sps)); + buf[i] = 0x67; // set sps header, eyebeam sends 0x27, we set nri = 3, set it to be most important + i += amf0_string_get_size(helper->sps); + + buf[i++] = 0x01; // number of pps + + // 2 bytes pps size + size = htons(amf0_string_get_size(helper->pps)); + memcpy(buf + i, &size, 2); + i += 2; + // pps data + memcpy(buf + i, amf0_string_get_uint8_ts(helper->pps), amf0_string_get_size(helper->pps)); + buf[i] = 0x68; // set pps header + i += amf0_string_get_size(helper->pps); + + amf0_data_free(helper->avc_conf); + helper->avc_conf = amf0_string_new(buf, i); + helper->send_avc = SWITCH_TRUE; + } + + if (frame->m) { + if (helper->avc_conf) { + helper->send = SWITCH_TRUE; + } else { + +// wait_sps: + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "waiting for sps and pps\n"); + switch_buffer_zero(helper->rtmp_buf); + switch_buffer_zero(helper->fua_buf); + helper->send = SWITCH_FALSE; + } + } + + return SWITCH_STATUS_SUCCESS; +} + +switch_status_t rtmp_write_video_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id) +{ + + switch_channel_t *channel = NULL; + rtmp_private_t *tech_pvt = NULL; + rtmp_session_t *rsession = NULL; + switch_time_t ts = 0; + rtp2rtmp_helper_t *helper; + switch_status_t status = SWITCH_STATUS_SUCCESS; + + channel = switch_core_session_get_channel(session); + assert(channel != NULL); + + tech_pvt = switch_core_session_get_private(session); + assert(tech_pvt != NULL); + + helper = &tech_pvt->video_write_helper; + assert(helper != NULL); + + rsession = tech_pvt->rtmp_session; + + if (rsession == NULL) { + return SWITCH_STATUS_FALSE; + } + + //emulate lost packets + // if (frame->seq > 0 && frame->seq % 20 == 0) return SWITCH_STATUS_SUCCESS; + + switch_thread_rwlock_wrlock(rsession->rwlock); + + if (!switch_test_flag(tech_pvt, TFLAG_IO)) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "TFLAG_IO not set\n"); + switch_goto_status(SWITCH_STATUS_FALSE, end); + } + + if (switch_test_flag(tech_pvt, TFLAG_DETACHED) || !switch_test_flag(tech_pvt->rtmp_session, SFLAG_VIDEO)) { + switch_goto_status(SWITCH_STATUS_SUCCESS, end); + } + + if (!tech_pvt->rtmp_session || !tech_pvt->video_codec || !tech_pvt->write_channel) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Missing mandatory value\n"); + switch_goto_status(SWITCH_STATUS_FALSE, end); + } + + if (tech_pvt->rtmp_session->state >= RS_DESTROY) { + switch_goto_status(SWITCH_STATUS_FALSE, end); + } + + if (frame->flags & SFF_CNG) { + switch_goto_status(SWITCH_STATUS_SUCCESS, end); + } + + rtmp_rtp2rtmpH264(helper, frame); + + if (helper->send) { + uint16_t used = switch_buffer_inuse(helper->rtmp_buf); + const void *rtmp_data = NULL; + + switch_buffer_peek_zerocopy(helper->rtmp_buf, &rtmp_data); + + if (!tech_pvt->stream_start_ts) { + tech_pvt->stream_start_ts = switch_micro_time_now() / 1000; + ts = 0; + } else { + ts = (switch_micro_time_now() / 1000) - tech_pvt->stream_start_ts; + } + +#if 0 + { /* use timestamp read from the frame */ + uint32_t timestamp = frame->timestamp & 0xFFFFFFFF; + ts = timestamp / 90; + } +#endif + + if (ts == tech_pvt->stream_last_ts) { + // switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "dup ts: %" SWITCH_TIME_T_FMT "\n", ts); + ts += 1; + if (ts == 1) ts = 0; + } + + tech_pvt->stream_last_ts = ts; + + if (!rtmp_data) { + goto skip; + } + + if (((uint8_t *)rtmp_data)[0] == 0x17 && helper->send_avc) { + uint8_t *avc_conf = amf0_string_get_uint8_ts(helper->avc_conf); + + rtmp_send_message(tech_pvt->rtmp_session, RTMP_DEFAULT_STREAM_VIDEO, ts, + RTMP_TYPE_VIDEO, tech_pvt->rtmp_session->media_streamid, avc_conf, amf0_string_get_size(helper->avc_conf), 0); + helper->send_avc = SWITCH_FALSE; + } + + status = rtmp_send_message(tech_pvt->rtmp_session, RTMP_DEFAULT_STREAM_VIDEO, ts, + RTMP_TYPE_VIDEO, tech_pvt->rtmp_session->media_streamid, rtmp_data, used, 0); + + // if dropped_video_frame > N then ask the far end for a new IDR for each N frames + if (rsession->dropped_video_frame > 0 && rsession->dropped_video_frame % 90 == 0) { + switch_core_session_t *other_session; + if (switch_core_session_get_partner(session, &other_session) == SWITCH_STATUS_SUCCESS) { + switch_core_session_request_video_refresh(session); + switch_core_session_rwunlock(other_session); + } + } +skip: + switch_buffer_zero(helper->rtmp_buf); + switch_buffer_zero(helper->fua_buf); + helper->send = SWITCH_FALSE; + } + +end: + switch_thread_rwlock_unlock(rsession->rwlock); + return status; +} + + +switch_status_t rtmp_read_video_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id) +{ + switch_channel_t *channel = NULL; + rtmp_private_t *tech_pvt = NULL; + uint16_t len; + + channel = switch_core_session_get_channel(session); + assert(channel != NULL); + + tech_pvt = switch_core_session_get_private(session); + assert(tech_pvt != NULL); + + if (tech_pvt->rtmp_session->state >= RS_DESTROY) { + return SWITCH_STATUS_FALSE; + } + + if (switch_test_flag(tech_pvt, TFLAG_DETACHED)) { + switch_yield(20000); + goto cng; + } + + tech_pvt->video_read_frame.flags = SFF_RAW_RTP; + tech_pvt->video_read_frame.codec = &tech_pvt->video_read_codec; + + if (amf0_array_size(tech_pvt->video_read_helper.nal_list) > 0) { + goto wr_frame; + } + + if (switch_buffer_inuse(tech_pvt->video_readbuf) < 2) { + switch_yield(20000); + switch_cond_next(); + } + + if (switch_buffer_inuse(tech_pvt->video_readbuf) < 2) { + switch_yield(20000); + goto cng; + } else { + switch_mutex_lock(tech_pvt->video_readbuf_mutex); + switch_buffer_peek(tech_pvt->video_readbuf, &len, 2); + if (switch_buffer_inuse(tech_pvt->video_readbuf) >= len) { + if (len == 0) { + switch_mutex_unlock(tech_pvt->video_readbuf_mutex); + switch_yield(20000); + goto cng; + } else { + const void *data = NULL; + switch_buffer_toss(tech_pvt->video_readbuf, 2); + switch_buffer_read(tech_pvt->video_readbuf, &tech_pvt->video_read_ts, 4); + tech_pvt->video_read_ts *= 90; + switch_buffer_peek_zerocopy(tech_pvt->video_readbuf, &data); + rtmp_rtmp2rtpH264(&tech_pvt->video_read_helper, (uint8_t *)data, len); + switch_buffer_toss(tech_pvt->video_readbuf, len); + + if (amf0_array_size(tech_pvt->video_read_helper.nal_list) == 0) { + switch_mutex_unlock(tech_pvt->video_readbuf_mutex); + switch_yield(20000); + goto cng; + } + } + } + switch_mutex_unlock(tech_pvt->video_readbuf_mutex); + } + +wr_frame: + { + amf0_data *amf_data; + amf_data = amf0_array_shift(tech_pvt->video_read_helper.nal_list); + if (amf_data) { + int data_size = amf0_string_get_size(amf_data); + if (data_size > 1500) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "data size too large: %d\n", data_size); + amf0_data_free(amf_data); + goto cng; + } + + memcpy(tech_pvt->video_read_frame.data, amf0_string_get_uint8_ts(amf_data), data_size); + tech_pvt->video_read_frame.datalen = data_size; + tech_pvt->video_read_frame.packetlen = data_size + 12; + amf0_data_free(amf_data); + } else { + switch_yield(20000); + goto cng; + } + } + + { /* set the marker bit on the last packet*/ + uint8_t *p = tech_pvt->video_read_frame.data; + uint8_t fragment_type = p[0] & 0x1f; + uint8_t end_bit = p[1] & 0x40; + switch_rtp_hdr_t *rtp_hdr = tech_pvt->video_read_frame.packet; + + if (fragment_type == 28) { + tech_pvt->video_read_frame.m = end_bit == 0x40 ? SWITCH_TRUE : SWITCH_FALSE; + } else { + tech_pvt->video_read_frame.m = SWITCH_TRUE; + } + + rtp_hdr->version = 2; + rtp_hdr->p = 0; + rtp_hdr->x = 0; + rtp_hdr->ts = htonl(tech_pvt->video_read_ts); + rtp_hdr->m = tech_pvt->video_read_frame.m; + rtp_hdr->seq = htons(tech_pvt->seq++); + if (rtp_hdr->ssrc == 0) rtp_hdr->ssrc = (uint32_t) (intptr_t) tech_pvt; + // switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "read %2x %2x %u %u\n", p[0], p[1], tech_pvt->video_read_ts, rtp_hdr->ssrc); + } + + *frame = &tech_pvt->video_read_frame; + (*frame)->img = NULL; + return SWITCH_STATUS_SUCCESS; + +cng: + tech_pvt->video_read_frame.datalen = 0; + tech_pvt->video_read_frame.flags = SFF_CNG; + tech_pvt->video_read_frame.codec = &tech_pvt->video_read_codec; + + *frame = &tech_pvt->video_read_frame; + + return SWITCH_STATUS_SUCCESS; +} diff --git a/src/mod/endpoints/mod_rtmp/rtmp_video.h b/src/mod/endpoints/mod_rtmp/rtmp_video.h new file mode 100644 index 0000000000..e62ce4cbb8 --- /dev/null +++ b/src/mod/endpoints/mod_rtmp/rtmp_video.h @@ -0,0 +1,49 @@ +/* + * mod_rtmp for FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * Copyright (C) 2015, Seven Du. + * + * Version: MPL 1.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (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.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is rtmp_video for FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * + * The Initial Developer of the Original Code is Seven Du + * Portions created by the Initial Developer are Copyright (C) + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Seven Du + * Da Xiong + * + * rtmp_video.h -- RTMP video + * + */ + + +#include "amf0.h" +#include "mod_rtmp.h" + +#define MAX_RTP_PAYLOAD_SIZE 1400 + +void rtmp2rtp_helper_init(rtmp2rtp_helper_t *helper); +void rtp2rtmp_helper_init(rtp2rtmp_helper_t *helper); +void rtmp2rtp_helper_destroy(rtmp2rtp_helper_t *helper); +void rtp2rtmp_helper_destroy(rtp2rtmp_helper_t *helper); +switch_status_t on_rtmp_tech_init(switch_core_session_t *session, rtmp_private_t *tech_pvt); +switch_status_t on_rtmp_destroy(rtmp_private_t *tech_pvt); + +/*Rtmp packet to rtp frame*/ +switch_status_t rtmp_rtmp2rtpH264(rtmp2rtp_helper_t *read_helper, uint8_t* data, uint32_t len); +switch_status_t rtmp_rtp2rtmpH264(rtp2rtmp_helper_t *helper, switch_frame_t *frame); +switch_status_t rtmp_write_video_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id); +switch_status_t rtmp_read_video_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id);