mirror of https://bitbucket.org/ausocean/av.git
rtmp: make string decoding a returning function
This commit is contained in:
parent
a626a740ea
commit
019a1f1c90
26
rtmp/amf.go
26
rtmp/amf.go
|
@ -91,26 +91,24 @@ func C_AMF_DecodeInt32(data *byte) uint32 {
|
||||||
|
|
||||||
// void AMF_DecodeString(const char* data, C_AVal* bv);
|
// void AMF_DecodeString(const char* data, C_AVal* bv);
|
||||||
// amf.c +68
|
// amf.c +68
|
||||||
func C_AMF_DecodeString(data *byte, bv *C_AVal) {
|
func C_AMF_DecodeString(data *byte) C_AVal {
|
||||||
dataPtr := unsafe.Pointer(data)
|
var bv C_AVal
|
||||||
//bv.av_len = int32(C.AMF_DecodeInt16((*byte)(dataPtr)))
|
bv.av_len = int32(C_AMF_DecodeInt16(data))
|
||||||
bv.av_len = int32(C_AMF_DecodeInt16((*byte)(dataPtr)))
|
if bv.av_len != 0 {
|
||||||
if bv.av_len > 0 {
|
bv.av_val = (*byte)(incBytePtr(unsafe.Pointer(data), 2))
|
||||||
bv.av_val = (*byte)(incBytePtr(dataPtr, 2))
|
|
||||||
} else {
|
|
||||||
bv.av_val = nil
|
|
||||||
}
|
}
|
||||||
|
return bv
|
||||||
}
|
}
|
||||||
|
|
||||||
// void AMF_DecodeLongString(const char *data, AVal *bv);
|
// void AMF_DecodeLongString(const char *data, AVal *bv);
|
||||||
// amf.c +75
|
// amf.c +75
|
||||||
func C_AMF_DecodeLongString(data *byte, bv *C_AVal) {
|
func C_AMF_DecodeLongString(data *byte) C_AVal {
|
||||||
|
var bv C_AVal
|
||||||
bv.av_len = int32(C_AMF_DecodeInt32(data))
|
bv.av_len = int32(C_AMF_DecodeInt32(data))
|
||||||
if bv.av_len > 0 {
|
if bv.av_len != 0 {
|
||||||
bv.av_val = (*byte)(incBytePtr(unsafe.Pointer(data), 4))
|
bv.av_val = (*byte)(incBytePtr(unsafe.Pointer(data), 4))
|
||||||
} else {
|
|
||||||
bv.av_val = nil
|
|
||||||
}
|
}
|
||||||
|
return bv
|
||||||
}
|
}
|
||||||
|
|
||||||
// double AMF_DecodeNumber(const char* data);
|
// double AMF_DecodeNumber(const char* data);
|
||||||
|
@ -491,7 +489,7 @@ func C_AMFProp_Decode(prop *C_AMFObjectProperty, pBuffer *byte, nSize, bDecodeNa
|
||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
|
|
||||||
C_AMF_DecodeString(pBuffer, &prop.p_name)
|
prop.p_name = C_AMF_DecodeString(pBuffer)
|
||||||
nSize -= int32(2 + nNameSize)
|
nSize -= int32(2 + nNameSize)
|
||||||
pBuffer = (*byte)(incBytePtr(unsafe.Pointer(pBuffer), int(2+nNameSize)))
|
pBuffer = (*byte)(incBytePtr(unsafe.Pointer(pBuffer), int(2+nNameSize)))
|
||||||
}
|
}
|
||||||
|
@ -522,7 +520,7 @@ func C_AMFProp_Decode(prop *C_AMFObjectProperty, pBuffer *byte, nSize, bDecodeNa
|
||||||
if int64(nSize) < int64(nStringSize)+2 {
|
if int64(nSize) < int64(nStringSize)+2 {
|
||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
C_AMF_DecodeString(pBuffer, &prop.p_vu.p_aval)
|
prop.p_vu.p_aval = C_AMF_DecodeString(pBuffer)
|
||||||
nSize -= int32(2 + nStringSize)
|
nSize -= int32(2 + nStringSize)
|
||||||
|
|
||||||
case AMF_OBJECT:
|
case AMF_OBJECT:
|
||||||
|
|
|
@ -1858,10 +1858,9 @@ func C_RTMP_SendPacket(r *C_RTMP, packet *C_RTMPPacket, queue int) (ok bool) {
|
||||||
// TODO: port the const
|
// TODO: port the const
|
||||||
if packet.m_packetType == RTMP_PACKET_TYPE_INVOKE {
|
if packet.m_packetType == RTMP_PACKET_TYPE_INVOKE {
|
||||||
// TODO: port C_AVal
|
// TODO: port C_AVal
|
||||||
var method C_AVal
|
|
||||||
var ptr unsafe.Pointer
|
var ptr unsafe.Pointer
|
||||||
ptr = incBytePtr(unsafe.Pointer(packet.m_body), 1)
|
ptr = incBytePtr(unsafe.Pointer(packet.m_body), 1)
|
||||||
C_AMF_DecodeString((*byte)(ptr), &method)
|
method := C_AMF_DecodeString((*byte)(ptr))
|
||||||
|
|
||||||
if debugMode {
|
if debugMode {
|
||||||
log.Printf("Invoking %v", method.av_val)
|
log.Printf("Invoking %v", method.av_val)
|
||||||
|
|
Loading…
Reference in New Issue