Using my amfEncodeArray func - tested and working

This commit is contained in:
saxon 2018-08-01 07:38:35 +09:30
parent 56a7bede73
commit 7f6d377cb1
1 changed files with 26 additions and 1 deletions

View File

@ -1159,7 +1159,8 @@ func amfPropEncode(p *C.AMFObjectProperty, pBuffer *byte, pBufEnd *byte) *byte {
pBuffer = amfEncodeEcmaArray(&p.p_vu.p_object, pBuffer, pBufEnd) pBuffer = amfEncodeEcmaArray(&p.p_vu.p_object, pBuffer, pBufEnd)
//pBuffer = (*byte)(unsafe.Pointer(C.AMF_EncodeEcmaArray(&p.p_vu.p_object, (*C.char)(unsafe.Pointer(pBuffer)), (*C.char)(unsafe.Pointer(pBufEnd))))) //pBuffer = (*byte)(unsafe.Pointer(C.AMF_EncodeEcmaArray(&p.p_vu.p_object, (*C.char)(unsafe.Pointer(pBuffer)), (*C.char)(unsafe.Pointer(pBufEnd)))))
case AMF_STRICT_ARRAY: case AMF_STRICT_ARRAY:
pBuffer = (*byte)(unsafe.Pointer(C.AMF_EncodeArray(&p.p_vu.p_object, (*C.char)(unsafe.Pointer(pBuffer)), (*C.char)(unsafe.Pointer(pBufEnd))))) //pBuffer = (*byte)(unsafe.Pointer(C.AMF_EncodeArray(&p.p_vu.p_object, (*C.char)(unsafe.Pointer(pBuffer)), (*C.char)(unsafe.Pointer(pBufEnd)))))
pBuffer = amfEncodeArray(&p.p_vu.p_object, pBuffer, pBufEnd)
default: default:
log.Println("amfPropEncode: invalid type!") log.Println("amfPropEncode: invalid type!")
pBuffer = nil pBuffer = nil
@ -1225,6 +1226,30 @@ func amfEncodeEcmaArray(obj *C.AMFObject, pBuffer *byte, pBufEnd *byte) *byte {
return pBuffer return pBuffer
} }
func amfEncodeArray(obj *C.AMFObject, pBuffer *byte, pBufEnd *byte) *byte {
if int(uintptr(unsafe.Pointer(pBuffer)))+4 >= int(uintptr(unsafe.Pointer(pBufEnd))) {
return nil
}
*pBuffer = AMF_STRICT_ARRAY
pBuffer = (*byte)(incBytePtr(unsafe.Pointer(pBuffer), 1))
pBuffer = amfEncodeInt32(pBuffer, pBufEnd, int32(obj.o_num))
for i := 0; i < int(obj.o_num); i++ {
res := amfPropEncode((*C.AMFObjectProperty)(incPtr(unsafe.Pointer(
obj.o_props), i, int(unsafe.Sizeof(*obj.o_props)))), pBuffer, pBufEnd)
if res == nil {
log.Println("amfEncodeEcmaArray: failed to encode property!")
break
} else {
pBuffer = res
}
}
return pBuffer
}
func rtmpConnectStream(r *C.RTMP, seekTime int32) int { func rtmpConnectStream(r *C.RTMP, seekTime int32) int {
var packet C.RTMPPacket var packet C.RTMPPacket
memset((*byte)(unsafe.Pointer(&packet)), 0, int(unsafe.Sizeof(packet))) memset((*byte)(unsafe.Pointer(&packet)), 0, int(unsafe.Sizeof(packet)))