mirror of https://bitbucket.org/ausocean/av.git
Simplified code (identified code that doesn't run in our use case - reducing no of funcs to port
This commit is contained in:
parent
4723a46c91
commit
9266fc79d7
74
rtmp/rtmp.go
74
rtmp/rtmp.go
|
@ -1941,27 +1941,16 @@ func C_HandleClientBW(r *C.RTMP, packet *C.RTMPPacket) {
|
||||||
// rtmp.c +2912
|
// rtmp.c +2912
|
||||||
// TODO port AMF_Dump
|
// TODO port AMF_Dump
|
||||||
// TODO port AMFPRop_GetString
|
// TODO port AMFPRop_GetString
|
||||||
// TODO port AMF_GetProp
|
|
||||||
// TODO port AMFProp_GetNumber
|
// TODO port AMFProp_GetNumber
|
||||||
// TODO port RTMP_FindFirstMatchingProperty
|
// TODO port AMF_GetProp
|
||||||
// TODO port DecodeTEA
|
|
||||||
// TODO port SendSecureTokenResponse
|
|
||||||
// TODO port SendRealseStream
|
|
||||||
// TODO port SendFCPublish
|
|
||||||
// TODO port RTMP_SendServerBW
|
|
||||||
// TODO port RTMP_SendCtrl
|
|
||||||
// TODO port RTMP_SendCreateStream
|
|
||||||
// TODO port SendUsherToken
|
|
||||||
// TODO port SendFCSubscribe
|
|
||||||
// TODO port SendPublish
|
|
||||||
// TODO port SendPlaylist
|
|
||||||
// TODO port SendPlay
|
|
||||||
// TODO port SendCheckBw
|
|
||||||
// TODO port SendPong
|
|
||||||
// TODO port SendCheckBWResult
|
|
||||||
// TODO port AMFProp_GetObject
|
|
||||||
// TODO port AV_erase
|
|
||||||
// TODO port AMF_Decode
|
// TODO port AMF_Decode
|
||||||
|
// TODO port AV_erase
|
||||||
|
// TODO port SendReleaseStream
|
||||||
|
// TODO port SendFCPublish
|
||||||
|
// TODO port RTMP_SendCreateStream
|
||||||
|
// TODO port SendPublish
|
||||||
|
// TODO port SendCheckBW
|
||||||
|
// TODO port AMF_Reset
|
||||||
func C_HandleInvoke(r *C.RTMP, body *byte, nBodySize uint32) int32 {
|
func C_HandleInvoke(r *C.RTMP, body *byte, nBodySize uint32) int32 {
|
||||||
var obj C.AMFObject
|
var obj C.AMFObject
|
||||||
var method C.AVal
|
var method C.AVal
|
||||||
|
@ -2001,6 +1990,7 @@ func C_HandleInvoke(r *C.RTMP, body *byte, nBodySize uint32) int32 {
|
||||||
for i = 0; i < int32(r.m_numCalls); i++ {
|
for i = 0; i < int32(r.m_numCalls); i++ {
|
||||||
if float64((*(*C.RTMP_METHOD)(incPtr(unsafe.Pointer(r.m_methodCalls), int(i),
|
if float64((*(*C.RTMP_METHOD)(incPtr(unsafe.Pointer(r.m_methodCalls), int(i),
|
||||||
int(unsafe.Sizeof(*r.m_methodCalls))))).num) == txn {
|
int(unsafe.Sizeof(*r.m_methodCalls))))).num) == txn {
|
||||||
|
log.Println("1.1")
|
||||||
methodInvoked = (*(*C.RTMP_METHOD)(incPtr(unsafe.Pointer(r.m_methodCalls),
|
methodInvoked = (*(*C.RTMP_METHOD)(incPtr(unsafe.Pointer(r.m_methodCalls),
|
||||||
int(i), int(unsafe.Sizeof(*r.m_methodCalls))))).name
|
int(i), int(unsafe.Sizeof(*r.m_methodCalls))))).name
|
||||||
C.AV_erase(r.m_methodCalls, &r.m_numCalls, C.int(i), 0)
|
C.AV_erase(r.m_methodCalls, &r.m_numCalls, C.int(i), 0)
|
||||||
|
@ -2008,6 +1998,7 @@ func C_HandleInvoke(r *C.RTMP, body *byte, nBodySize uint32) int32 {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if methodInvoked.av_val == nil {
|
if methodInvoked.av_val == nil {
|
||||||
|
log.Println("1.2")
|
||||||
// TODO use new logger here
|
// TODO use new logger here
|
||||||
//RTMP_Log(RTMP_LOGDEBUG, "%s, received result id %f without matching request",
|
//RTMP_Log(RTMP_LOGDEBUG, "%s, received result id %f without matching request",
|
||||||
//__FUNCTION__, txn);
|
//__FUNCTION__, txn);
|
||||||
|
@ -2020,28 +2011,39 @@ func C_HandleInvoke(r *C.RTMP, body *byte, nBodySize uint32) int32 {
|
||||||
case C_AVMATCH(&methodInvoked, &av_connect) != 0:
|
case C_AVMATCH(&methodInvoked, &av_connect) != 0:
|
||||||
{
|
{
|
||||||
log.Println("2")
|
log.Println("2")
|
||||||
|
/* NOTE This code doesn't run in our use case
|
||||||
|
TODO port this eventually
|
||||||
if r.Link.token.av_len != 0 {
|
if r.Link.token.av_len != 0 {
|
||||||
|
log.Println("2.1")
|
||||||
var p C.AMFObjectProperty
|
var p C.AMFObjectProperty
|
||||||
if C.RTMP_FindFirstMatchingProperty(&obj, &av_secureToken, &p) != 0 {
|
if C.RTMP_FindFirstMatchingProperty(&obj, &av_secureToken, &p) != 0 {
|
||||||
|
log.Println("2.2")
|
||||||
C.DecodeTEA(&r.Link.token, &p.p_vu.p_aval)
|
C.DecodeTEA(&r.Link.token, &p.p_vu.p_aval)
|
||||||
C.SendSecureTokenResponse(r, &p.p_vu.p_aval)
|
C.SendSecureTokenResponse(r, &p.p_vu.p_aval)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
if (r.Link.protocol & RTMP_FEATURE_WRITE) != 0 {
|
if (r.Link.protocol & RTMP_FEATURE_WRITE) != 0 {
|
||||||
|
log.Println("2.3")
|
||||||
C.SendReleaseStream(r)
|
C.SendReleaseStream(r)
|
||||||
C.SendFCPublish(r)
|
C.SendFCPublish(r)
|
||||||
} else {
|
} /* NOTE This code doesn't run in our use case
|
||||||
|
else {
|
||||||
|
log.Println("2.4")
|
||||||
C.RTMP_SendServerBW(r)
|
C.RTMP_SendServerBW(r)
|
||||||
C.RTMP_SendCtrl(r, 3, 0, 300)
|
C.RTMP_SendCtrl(r, 3, 0, 300)
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
C.RTMP_SendCreateStream(r)
|
C.RTMP_SendCreateStream(r)
|
||||||
|
/* NOTE This code doesn't run in our use case
|
||||||
if (r.Link.protocol & RTMP_FEATURE_WRITE) == 0 {
|
if (r.Link.protocol & RTMP_FEATURE_WRITE) == 0 {
|
||||||
/* Authenticate on Justin.tv legacy servers before sending FCSubscribe */
|
log.Println("2.5")
|
||||||
|
// Authenticate on Justin.tv legacy servers before sending FCSubscribe
|
||||||
if r.Link.usherToken.av_len != 0 {
|
if r.Link.usherToken.av_len != 0 {
|
||||||
|
log.Println("2.6")
|
||||||
C.SendUsherToken(r, &r.Link.usherToken)
|
C.SendUsherToken(r, &r.Link.usherToken)
|
||||||
}
|
}
|
||||||
/* Send the FCSubscribe if live stream or if subscribepath is set */
|
// Send the FCSubscribe if live stream or if subscribepath is set
|
||||||
switch {
|
switch {
|
||||||
case r.Link.subscribepath.av_len != 0:
|
case r.Link.subscribepath.av_len != 0:
|
||||||
{
|
{
|
||||||
|
@ -2055,6 +2057,7 @@ func C_HandleInvoke(r *C.RTMP, body *byte, nBodySize uint32) int32 {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
case C_AVMATCH(&methodInvoked, &av_createStream) != 0:
|
case C_AVMATCH(&methodInvoked, &av_createStream) != 0:
|
||||||
{
|
{
|
||||||
|
@ -2062,21 +2065,28 @@ func C_HandleInvoke(r *C.RTMP, body *byte, nBodySize uint32) int32 {
|
||||||
r.m_stream_id = C.int(C.AMFProp_GetNumber(C.AMF_GetProp(&obj, nil, 3)))
|
r.m_stream_id = C.int(C.AMFProp_GetNumber(C.AMF_GetProp(&obj, nil, 3)))
|
||||||
|
|
||||||
if (r.Link.protocol & RTMP_FEATURE_WRITE) != 0 {
|
if (r.Link.protocol & RTMP_FEATURE_WRITE) != 0 {
|
||||||
|
log.Println("5.1")
|
||||||
C.SendPublish(r)
|
C.SendPublish(r)
|
||||||
} else {
|
} /* NOTE This code doesn't run in our use case
|
||||||
|
else {
|
||||||
|
log.Println("5.2")
|
||||||
if (r.Link.lFlags & RTMP_LF_PLST) != 0 {
|
if (r.Link.lFlags & RTMP_LF_PLST) != 0 {
|
||||||
|
log.Println("5.3")
|
||||||
C.SendPlaylist(r)
|
C.SendPlaylist(r)
|
||||||
}
|
}
|
||||||
C.SendPlay(r)
|
C.SendPlay(r)
|
||||||
C.RTMP_SendCtrl(r, 3, C.uint(r.m_stream_id), C.uint(r.m_nBufferMS))
|
C.RTMP_SendCtrl(r, 3, C.uint(r.m_stream_id), C.uint(r.m_nBufferMS))
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
/*NOTE This code doesn't run in our use case
|
||||||
case C_AVMATCH(&methodInvoked, &av_play) != 0 ||
|
case C_AVMATCH(&methodInvoked, &av_play) != 0 ||
|
||||||
C_AVMATCH(&methodInvoked, &av_publish) != 0:
|
C_AVMATCH(&methodInvoked, &av_publish) != 0:
|
||||||
{
|
{
|
||||||
log.Println("6")
|
log.Println("6")
|
||||||
r.m_bPlaying = 1
|
r.m_bPlaying = 1
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
C.free(unsafe.Pointer(methodInvoked.av_val))
|
C.free(unsafe.Pointer(methodInvoked.av_val))
|
||||||
}
|
}
|
||||||
|
@ -2084,11 +2094,12 @@ func C_HandleInvoke(r *C.RTMP, body *byte, nBodySize uint32) int32 {
|
||||||
{
|
{
|
||||||
log.Println("7")
|
log.Println("7")
|
||||||
if r.m_nBWCheckCounter == 0 {
|
if r.m_nBWCheckCounter == 0 {
|
||||||
|
log.Println("7.1")
|
||||||
C.SendCheckBW(r)
|
C.SendCheckBW(r)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*NOTE This code doesn't run in our use case
|
||||||
case C_AVMATCH(&method, &av_onFCSubscribe) != 0:
|
case C_AVMATCH(&method, &av_onFCSubscribe) != 0:
|
||||||
/* SendOnFCSubscribe(); */
|
|
||||||
case C_AVMATCH(&method, &av_onFCUnsubscribe) != 0:
|
case C_AVMATCH(&method, &av_onFCUnsubscribe) != 0:
|
||||||
{
|
{
|
||||||
log.Println("8")
|
log.Println("8")
|
||||||
|
@ -2124,22 +2135,20 @@ func C_HandleInvoke(r *C.RTMP, body *byte, nBodySize uint32) int32 {
|
||||||
//RTMP_Log(RTMP_LOGERROR, "rtmp server requested close");
|
//RTMP_Log(RTMP_LOGERROR, "rtmp server requested close");
|
||||||
C.RTMP_Close(r)
|
C.RTMP_Close(r)
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
case C_AVMATCH(&method, &av_onStatus) != 0:
|
case C_AVMATCH(&method, &av_onStatus) != 0:
|
||||||
{
|
{
|
||||||
log.Println("13")
|
log.Println("13")
|
||||||
var obj2 C.AMFObject
|
var obj2 C.AMFObject
|
||||||
log.Println("13.1")
|
|
||||||
var code, level C.AVal
|
var code, level C.AVal
|
||||||
log.Println("13.2")
|
|
||||||
C.AMFProp_GetObject(C.AMF_GetProp(&obj, nil, 3), &obj2)
|
C.AMFProp_GetObject(C.AMF_GetProp(&obj, nil, 3), &obj2)
|
||||||
log.Println("13.3")
|
|
||||||
C.AMFProp_GetString(C.AMF_GetProp(&obj2, &av_code, -1), &code)
|
C.AMFProp_GetString(C.AMF_GetProp(&obj2, &av_code, -1), &code)
|
||||||
log.Println("13.4")
|
|
||||||
C.AMFProp_GetString(C.AMF_GetProp(&obj2, &av_level, -1), &level)
|
C.AMFProp_GetString(C.AMF_GetProp(&obj2, &av_level, -1), &level)
|
||||||
|
|
||||||
// TODO use new logger
|
// TODO use new logger
|
||||||
// RTMP_Log(RTMP_LOGDEBUG, "%s, onStatus: %s", __FUNCTION__, code.av_val);
|
// RTMP_Log(RTMP_LOGDEBUG, "%s, onStatus: %s", __FUNCTION__, code.av_val);
|
||||||
switch {
|
switch {
|
||||||
|
/*NOTE This code doesn't run in our use case
|
||||||
case C_AVMATCH(&code, &av_NetStream_Failed) != 0 ||
|
case C_AVMATCH(&code, &av_NetStream_Failed) != 0 ||
|
||||||
C_AVMATCH(&code, &av_NetStream_Play_Failed) != 0 ||
|
C_AVMATCH(&code, &av_NetStream_Play_Failed) != 0 ||
|
||||||
C_AVMATCH(&code, &av_NetStream_Play_StreamNotFound) != 0 ||
|
C_AVMATCH(&code, &av_NetStream_Play_StreamNotFound) != 0 ||
|
||||||
|
@ -2160,11 +2169,13 @@ func C_HandleInvoke(r *C.RTMP, body *byte, nBodySize uint32) int32 {
|
||||||
for i = 0; i < int32(r.m_numCalls); i++ {
|
for i = 0; i < int32(r.m_numCalls); i++ {
|
||||||
if C_AVMATCH(&(*(*C.RTMP_METHOD)(incPtr(unsafe.Pointer(r.m_methodCalls), int(i),
|
if C_AVMATCH(&(*(*C.RTMP_METHOD)(incPtr(unsafe.Pointer(r.m_methodCalls), int(i),
|
||||||
int(unsafe.Sizeof(*r.m_methodCalls))))).name, &av_play) != 0 {
|
int(unsafe.Sizeof(*r.m_methodCalls))))).name, &av_play) != 0 {
|
||||||
|
log.Println("15.1")
|
||||||
C.AV_erase(r.m_methodCalls, &r.m_numCalls, C.int(i), 1)
|
C.AV_erase(r.m_methodCalls, &r.m_numCalls, C.int(i), 1)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
case C_AVMATCH(&code, &av_NetStream_Publish_Start) != 0:
|
case C_AVMATCH(&code, &av_NetStream_Publish_Start) != 0:
|
||||||
{
|
{
|
||||||
log.Println("16")
|
log.Println("16")
|
||||||
|
@ -2173,11 +2184,13 @@ func C_HandleInvoke(r *C.RTMP, body *byte, nBodySize uint32) int32 {
|
||||||
for i = 0; i < int32(r.m_numCalls); i++ {
|
for i = 0; i < int32(r.m_numCalls); i++ {
|
||||||
if C_AVMATCH(&(*(*C.RTMP_METHOD)(incPtr(unsafe.Pointer(r.m_methodCalls), int(i),
|
if C_AVMATCH(&(*(*C.RTMP_METHOD)(incPtr(unsafe.Pointer(r.m_methodCalls), int(i),
|
||||||
int(unsafe.Sizeof(*r.m_methodCalls))))).name, &av_publish) != 0 {
|
int(unsafe.Sizeof(*r.m_methodCalls))))).name, &av_publish) != 0 {
|
||||||
|
log.Println("16.1")
|
||||||
C.AV_erase(r.m_methodCalls, &r.m_numCalls, C.int(i), 1)
|
C.AV_erase(r.m_methodCalls, &r.m_numCalls, C.int(i), 1)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*NOTE This code doesn't run in our use case
|
||||||
case C_AVMATCH(&code, &av_NetStream_Play_Complete) != 0 ||
|
case C_AVMATCH(&code, &av_NetStream_Play_Complete) != 0 ||
|
||||||
C_AVMATCH(&code, &av_NetStream_Play_Stop) != 0 ||
|
C_AVMATCH(&code, &av_NetStream_Play_Stop) != 0 ||
|
||||||
C_AVMATCH(&code, &av_NetStream_Play_UnpublishNotify) != 0:
|
C_AVMATCH(&code, &av_NetStream_Play_UnpublishNotify) != 0:
|
||||||
|
@ -2200,8 +2213,10 @@ func C_HandleInvoke(r *C.RTMP, body *byte, nBodySize uint32) int32 {
|
||||||
r.m_pausing = 3
|
r.m_pausing = 3
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*NOTE This code doesn't run in our use case
|
||||||
case C_AVMATCH(&method, &av_playlist_ready) != 0:
|
case C_AVMATCH(&method, &av_playlist_ready) != 0:
|
||||||
{
|
{
|
||||||
log.Println("19")
|
log.Println("19")
|
||||||
|
@ -2216,6 +2231,7 @@ func C_HandleInvoke(r *C.RTMP, body *byte, nBodySize uint32) int32 {
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
log.Println("20")
|
log.Println("20")
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
leave:
|
leave:
|
||||||
C.AMF_Reset(&obj)
|
C.AMF_Reset(&obj)
|
||||||
|
|
Loading…
Reference in New Issue