mirror of https://bitbucket.org/ausocean/av.git
Move amfEncodeString under rtmpWrite
This commit is contained in:
parent
9ac7f6d1f7
commit
f7c9719d5b
57
rtmp/rtmp.go
57
rtmp/rtmp.go
|
@ -172,32 +172,6 @@ func (s *session) Write(data []byte) (int, error) {
|
|||
return len(data), nil
|
||||
}
|
||||
|
||||
func afmEncodeString(output *byte, outend *byte, bv *C.AVal) *byte {
|
||||
outputPtr := unsafe.Pointer(output)
|
||||
outendPtr := unsafe.Pointer(outend)
|
||||
if (bv.av_len < 65536 && uintptr(incBytePtr(outputPtr, 1+2+int(bv.av_len))) > uintptr(outendPtr)) || uintptr(incBytePtr(outputPtr, 1+4+int(bv.av_len))) > uintptr(outendPtr) {
|
||||
return nil
|
||||
}
|
||||
|
||||
if bv.av_len < 65536 {
|
||||
*(*C.char)(outputPtr) = C.AMF_STRING
|
||||
incBytePtr(outputPtr, 1)
|
||||
|
||||
// TODO Encode Int16
|
||||
outputPtr = unsafe.Pointer(C.AMF_EncodeInt16((*C.char)(outputPtr), (*C.char)(outendPtr), (C.short)(bv.av_len)))
|
||||
} else {
|
||||
*(*C.char)(outputPtr) = C.AMF_LONG_STRING
|
||||
incBytePtr(outputPtr, 1)
|
||||
|
||||
// TODO Encode Int16
|
||||
outputPtr = unsafe.Pointer(C.AMF_EncodeInt32((*C.char)(outputPtr), (*C.char)(outendPtr), bv.av_len))
|
||||
}
|
||||
C.memcpy(unsafe.Pointer(outputPtr), unsafe.Pointer(bv.av_val), (C.ulong)(bv.av_len))
|
||||
incBytePtr(outputPtr, int(bv.av_len))
|
||||
|
||||
return (*byte)(outputPtr)
|
||||
}
|
||||
|
||||
// rtmpWrite writes data to the current rtmp connection encapsulated by r
|
||||
func rtmpWrite(r *C.RTMP, data []byte) int {
|
||||
buf := sliceToPtr(data)
|
||||
|
@ -295,6 +269,33 @@ func rtmpWrite(r *C.RTMP, data []byte) int {
|
|||
return size + s2
|
||||
}
|
||||
|
||||
func afmEncodeString(output *byte, outend *byte, bv *C.AVal) *byte {
|
||||
outputPtr := unsafe.Pointer(output)
|
||||
outendPtr := unsafe.Pointer(outend)
|
||||
if (bv.av_len < 65536 && uintptr(incBytePtr(outputPtr, 1+2+int(bv.av_len))) > uintptr(outendPtr)) || uintptr(incBytePtr(outputPtr, 1+4+int(bv.av_len))) > uintptr(outendPtr) {
|
||||
return nil
|
||||
}
|
||||
|
||||
if bv.av_len < 65536 {
|
||||
*(*C.char)(outputPtr) = C.AMF_STRING
|
||||
incBytePtr(outputPtr, 1)
|
||||
|
||||
// TODO Encode Int16
|
||||
outputPtr = unsafe.Pointer(C.AMF_EncodeInt16((*C.char)(outputPtr), (*C.char)(outendPtr), (C.short)(bv.av_len)))
|
||||
} else {
|
||||
*(*C.char)(outputPtr) = C.AMF_LONG_STRING
|
||||
incBytePtr(outputPtr, 1)
|
||||
|
||||
// TODO Encode Int16
|
||||
outputPtr = unsafe.Pointer(C.AMF_EncodeInt32((*C.char)(outputPtr), (*C.char)(outendPtr), bv.av_len))
|
||||
}
|
||||
C.memcpy(unsafe.Pointer(outputPtr), unsafe.Pointer(bv.av_val), (C.ulong)(bv.av_len))
|
||||
incBytePtr(outputPtr, int(bv.av_len))
|
||||
|
||||
return (*byte)(outputPtr)
|
||||
}
|
||||
|
||||
|
||||
// send packet version 1 - less C stuff
|
||||
func sendPacket(r *C.RTMP, packet *C.RTMPPacket, queue int) int {
|
||||
var prevPacket *C.RTMPPacket
|
||||
|
@ -604,7 +605,7 @@ func writeN(r *C.RTMP, buffer unsafe.Pointer, n int) int {
|
|||
return 0
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
// TODO: port RTMP_METHOD
|
||||
func avQueue(vals **C.RTMP_METHOD, num *int, av *C.AVal, txn int ) {
|
||||
var rtmpMethodPtr *C.RTMP_METHOD
|
||||
|
@ -622,7 +623,7 @@ func avQueue(vals **C.RTMP_METHOD, num *int, av *C.AVal, txn int ) {
|
|||
(*(*C.RTMP_METHOD)(incPtr(unsafe.Pointer(*vals),*num,
|
||||
int(unsafe.Sizeof(rtmpMethodPtr))))).name.av_val = (*C.char)(tmp)
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
// indxBytePtr returns a byte at the indx inc give a ptr
|
||||
func indxBytePtr(ptr unsafe.Pointer, inc int) *byte {
|
||||
|
|
Loading…
Reference in New Issue