mirror of https://bitbucket.org/ausocean/av.git
rtmp: Implemented afmEncodeInt24
This commit is contained in:
parent
de4e673e94
commit
9c1c5cb601
28
rtmp/rtmp.go
28
rtmp/rtmp.go
|
@ -793,12 +793,11 @@ func sendPacket(r *C.RTMP, packet *C.RTMPPacket, queue int) int {
|
|||
if t > 0xffffff {
|
||||
res = 0xffffff
|
||||
}
|
||||
hptr = unsafe.Pointer(C.AMF_EncodeInt24((*C.char)(hptr), (*C.char)(hend), C.int(res)))
|
||||
hptr = unsafe.Pointer(afmEncodeInt24((*byte)(hptr), (*byte)(hend), res))
|
||||
}
|
||||
|
||||
if nSize > 4 {
|
||||
hptr = unsafe.Pointer(C.AMF_EncodeInt24((*C.char)(hptr), (*C.char)(hend),
|
||||
C.int(packet.m_nBodySize)))
|
||||
hptr = unsafe.Pointer(afmEncodeInt24((*byte)(hptr), (*byte)(hend), (int32(packet.m_nBodySize))))
|
||||
*(*byte)(hptr) = byte(packet.m_packetType)
|
||||
hptr = incBytePtr(hptr, 1)
|
||||
}
|
||||
|
@ -962,6 +961,29 @@ func afmDecodeInt16(data *byte) uint16 {
|
|||
return (uint16(*(*uint8)(c)) << 8) | *(*uint16)(incBytePtr(c, 1))
|
||||
}
|
||||
|
||||
// afmEncodeInt24 encodes a int24 into data
|
||||
func afmEncodeInt24(output *byte, outend *byte, nVal int32) *byte {
|
||||
outputPtr := unsafe.Pointer(output)
|
||||
outendPtr := unsafe.Pointer(outend)
|
||||
if uintptr(outputPtr)+3 > uintptr(outendPtr) {
|
||||
// length < 3
|
||||
return nil
|
||||
}
|
||||
|
||||
// Assign output[2]
|
||||
third := (*byte)(incBytePtr(outputPtr, 2))
|
||||
*third = (byte)(nVal & 0xff)
|
||||
|
||||
// Assign output[1]
|
||||
second := (*byte)(incBytePtr(outputPtr, 1))
|
||||
*second = (byte)(nVal >> 8)
|
||||
|
||||
// Assign output[0]
|
||||
*output = (byte)(nVal >> 16)
|
||||
|
||||
return (*byte)(incBytePtr(outputPtr, 3))
|
||||
}
|
||||
|
||||
func writeN(r *C.RTMP, buffer unsafe.Pointer, n int) int {
|
||||
ptr := buffer
|
||||
for n > 0 {
|
||||
|
|
Loading…
Reference in New Issue