Got rid of build errors, just need to test

This commit is contained in:
saxon 2018-07-27 14:44:02 +09:30
parent 736e96142c
commit 0d7d445804
1 changed files with 24 additions and 16 deletions

View File

@ -863,23 +863,23 @@ func sendConnectPacket(r *C.RTMP, cp *C.RTMPPacket) int {
if r.Link.protocol&RTMP_FEATURE_WRITE == 0 { if r.Link.protocol&RTMP_FEATURE_WRITE == 0 {
// TODO: port this // TODO: port this
enc = C.AMF_EncodeNamedBoolean(enc, pend, &av_fpad, 0) enc = amfEncodeNamedBoolean(enc, pend, &av_fpad, 0)
if enc == nil { if enc == nil {
return 0 return 0
} }
enc = C.AMF_EncodeNamedNumber(enc, pend, &av_capabilities, 15.0) enc = amfEncodeNamedNumber(enc, pend, &av_capabilities, 15.0)
if enc == nil { if enc == nil {
return 0 return 0
} }
enc = C.AMF_EncodeNamedNumber(enc, pend, &av_audioCodecs, r.m_fAudioCodecs) enc = amfEncodeNamedNumber(enc, pend, &av_audioCodecs, float64(r.m_fAudioCodecs))
if enc == nil { if enc == nil {
return 0 return 0
} }
enc = C.AMF_EncodeNamedNumber(enc, pend, &av_videoCodecs, r.m_fVideoCodecs) enc = amfEncodeNamedNumber(enc, pend, &av_videoCodecs, float64(r.m_fVideoCodecs))
if enc == nil { if enc == nil {
return 0 return 0
} }
enc = C.AMF_EncodeNamedNumber(enc, pend, &av_videoFunction, 1.0) enc = amfEncodeNamedNumber(enc, pend, &av_videoFunction, 1.0)
if enc == nil { if enc == nil {
return 0 return 0
} }
@ -892,7 +892,7 @@ func sendConnectPacket(r *C.RTMP, cp *C.RTMPPacket) int {
} }
if r.m_fEncoding != 0.0 || r.m_bSendEncoding != 0 { if r.m_fEncoding != 0.0 || r.m_bSendEncoding != 0 {
enc = C.AMF_EncodeNamedNumber(enc, pend, &av_objectEncoding, r.m_fEncoding) enc = amfEncodeNamedNumber(enc, pend, &av_objectEncoding, float64(r.m_fEncoding))
if enc == nil { if enc == nil {
return 0 return 0
} }
@ -913,8 +913,7 @@ func sendConnectPacket(r *C.RTMP, cp *C.RTMPPacket) int {
/* add auth string */ /* add auth string */
if r.Link.auth.av_len != 0 { if r.Link.auth.av_len != 0 {
// TODO: port this // TODO: port this
enc = (*byte)(unsafe.Pointer(C.AMF_EncodeBoolean((*C.char)(unsafe.Pointer(enc)), (*C.char)( enc = amfEncodeBoolean(enc, pend, int(r.Link.lFlags&RTMP_LF_AUTH))
unsafe.Pointer(pend)), r.Link.lFlags&RTMP_LF_AUTH)))
if enc == nil { if enc == nil {
return 0 return 0
} }
@ -1430,37 +1429,46 @@ func amfEncodeNamedNumber(output *byte, outend *byte, strName *C.AVal, dVal floa
return amfEncodeNumber(output, outend, dVal) return amfEncodeNumber(output, outend, dVal)
} }
func amfEncodeNamedBoolean(output *byte, outend *byte, strName *AVal, bVal int) *byte { func amfEncodeNamedBoolean(output *byte, outend *byte, strName *C.AVal, bVal int) *byte {
if int(uintptr(unsafe.Pointer(output)))+2+int(strName.av_len) > int(uintptr(unsafe.Pointer(outend))) { if int(uintptr(unsafe.Pointer(output)))+2+int(strName.av_len) > int(uintptr(unsafe.Pointer(outend))) {
return nil return nil
} }
output = amfEncodeInt16(output, outend, int16(strName.av_len)) output = amfEncodeInt16(output, outend, int16(strName.av_len))
memmove(unsafe.Pointer(output), unsafe.Pointer(outend), uintptr(strName.av_len)) memmove(unsafe.Pointer(output), unsafe.Pointer(outend), uintptr(strName.av_len))
output = (*byte)(incBytePtr(unsafe.Pointer(output), int(strName.av_len))) output = (*byte)(incBytePtr(unsafe.Pointer(output), int(strName.av_len)))
return amfEncodeBoolean(output, outend, bVal)
}
return amfEncodeBoolean(output, outend, dVal) func amfEncodeBoolean(output *byte, outend *byte, bVal int) *byte {
if int(uintptr(unsafe.Pointer(output)))+2 > int(uintptr(unsafe.Pointer(outend))) {
return nil
}
*(*byte)(unsafe.Pointer(output)) = C.AMF_BOOLEAN
output = (*byte)(incBytePtr(unsafe.Pointer(output), 1))
val := byte(0x01)
if bVal == 0 {
val = byte(0x00)
}
*(*byte)(unsafe.Pointer(output)) = val
return output
} }
func amfEncodeNumber(output *byte, outend *byte, dVal float64) *byte { func amfEncodeNumber(output *byte, outend *byte, dVal float64) *byte {
if int(uintptr(unsafe.Pointer(output)))+1+8 > int(uintptr(unsafe.Pointer(outend))) { if int(uintptr(unsafe.Pointer(output)))+1+8 > int(uintptr(unsafe.Pointer(outend))) {
return nil return nil
} }
// TODO: port this // TODO: port this
*(*byte)(unsafe.Pointer(enc)) = C.AMF_NUMBER *(*byte)(unsafe.Pointer(output)) = C.AMF_NUMBER
output = (*byte)(incBytePtr(unsafe.Pointer(output), 1)) output = (*byte)(incBytePtr(unsafe.Pointer(output), 1))
// NOTE: here we are assuming little endian for both byte order and float // NOTE: here we are assuming little endian for both byte order and float
// word order // word order
var ci, co *uint8 var ci, co *uint8
ci = (*uint8)(unsafe.Pointer(&dVal)) ci = (*uint8)(unsafe.Pointer(&dVal))
co = (*uint8)(unsafe.Pointer(output)) co = (*uint8)(unsafe.Pointer(output))
for i := 0; i < 8; i++ { for i := 0; i < 8; i++ {
*indxBytePtr(unsafe.Pointer(co), i) = *indxBytePtr(unsafe.Pointer(ci), 7-i) *indxBytePtr(unsafe.Pointer(co), i) = *indxBytePtr(unsafe.Pointer(ci), 7-i)
} }
return (*byte)(incBytePtr(unsafe.Pointer(output), 8))
return (*Byte)(incBytePtr(unsafe.Pointer(output), 8))
} }
func amfEncodeNamedString(output *byte, outend *byte, strName *C.AVal, strValue *C.AVal) *byte { func amfEncodeNamedString(output *byte, outend *byte, strName *C.AVal, strValue *C.AVal) *byte {