mirror of https://bitbucket.org/ausocean/av.git
rtmp: moved amf structs into amf_headers.go and rtmp structs into rtmp_headers.go
This commit is contained in:
parent
dec662d19e
commit
4fa0637fa1
50
rtmp/amf.go
50
rtmp/amf.go
|
@ -26,61 +26,11 @@ import (
|
|||
"unsafe"
|
||||
)
|
||||
|
||||
const (
|
||||
AMF_NUMBER = iota
|
||||
AMF_BOOLEAN
|
||||
AMF_STRING
|
||||
AMF_OBJECT
|
||||
AMF_MOVIECLIP /* reserved, not used */
|
||||
AMF_NULL
|
||||
AMF_UNDEFINED
|
||||
AMF_REFERENCE
|
||||
AMF_ECMA_ARRAY
|
||||
AMF_OBJECT_END
|
||||
AMF_STRICT_ARRAY
|
||||
AMF_DATE
|
||||
AMF_LONG_STRING
|
||||
AMF_UNSUPPORTED
|
||||
AMF_RECORDSET /* reserved, not used */
|
||||
AMF_XML_DOC
|
||||
AMF_TYPED_OBJECT
|
||||
AMF_AVMPLUS /* switch to AMF3 */
|
||||
AMF_INVALID = 0xff
|
||||
)
|
||||
|
||||
var (
|
||||
AMFObj_Invalid C_AMFObject
|
||||
AMFProp_Invalid = C_AMFObjectProperty{p_type: AMF_INVALID}
|
||||
)
|
||||
|
||||
// typedef enum
|
||||
// amf.h +40
|
||||
type C_AMFDataType int32
|
||||
|
||||
// typedef struct AMF_Object
|
||||
// amf.h +67
|
||||
type C_AMFObject struct {
|
||||
o_num int32
|
||||
o_props *C_AMFObjectProperty
|
||||
}
|
||||
|
||||
// typedef struct AMFObjectProperty
|
||||
// amf.h +79
|
||||
type C_AMFObjectProperty struct {
|
||||
p_name C_AVal
|
||||
p_type C_AMFDataType
|
||||
p_vu P_vu
|
||||
p_UTCoffset int16
|
||||
}
|
||||
|
||||
// typedef struct P_vu
|
||||
// amf.h +73
|
||||
type P_vu struct {
|
||||
p_number float64
|
||||
p_aval C_AVal
|
||||
p_object C_AMFObject
|
||||
}
|
||||
|
||||
// char* AMFPropEncode(AMFOBjectProperty* prop, char* pBufer, char* pBufEnd);
|
||||
// amf.c +366
|
||||
func C_AMF_PropEncode(p *C_AMFObjectProperty, pBuffer *byte, pBufEnd *byte) *byte {
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
package rtmp
|
||||
|
||||
const (
|
||||
AMF_NUMBER = iota
|
||||
AMF_BOOLEAN
|
||||
AMF_STRING
|
||||
AMF_OBJECT
|
||||
AMF_MOVIECLIP /* reserved, not used */
|
||||
AMF_NULL
|
||||
AMF_UNDEFINED
|
||||
AMF_REFERENCE
|
||||
AMF_ECMA_ARRAY
|
||||
AMF_OBJECT_END
|
||||
AMF_STRICT_ARRAY
|
||||
AMF_DATE
|
||||
AMF_LONG_STRING
|
||||
AMF_UNSUPPORTED
|
||||
AMF_RECORDSET /* reserved, not used */
|
||||
AMF_XML_DOC
|
||||
AMF_TYPED_OBJECT
|
||||
AMF_AVMPLUS /* switch to AMF3 */
|
||||
AMF_INVALID = 0xff
|
||||
)
|
||||
|
||||
// typedef struct C_AVal
|
||||
// amf.h +57
|
||||
type C_AVal struct {
|
||||
av_val *byte
|
||||
av_len int32
|
||||
}
|
||||
|
||||
// typedef enum
|
||||
// amf.h +40
|
||||
type C_AMFDataType int32
|
||||
|
||||
// typedef struct AMF_Object
|
||||
// amf.h +67
|
||||
type C_AMFObject struct {
|
||||
o_num int32
|
||||
o_props *C_AMFObjectProperty
|
||||
}
|
||||
|
||||
// typedef struct AMFObjectProperty
|
||||
// amf.h +79
|
||||
type C_AMFObjectProperty struct {
|
||||
p_name C_AVal
|
||||
p_type C_AMFDataType
|
||||
p_vu P_vu
|
||||
p_UTCoffset int16
|
||||
}
|
||||
|
||||
// typedef struct P_vu
|
||||
// amf.h +73
|
||||
type P_vu struct {
|
||||
p_number float64
|
||||
p_aval C_AVal
|
||||
p_object C_AMFObject
|
||||
}
|
210
rtmp/rtmp.go
210
rtmp/rtmp.go
|
@ -69,80 +69,6 @@ import (
|
|||
"github.com/chamaken/cgolmnl/inet"
|
||||
)
|
||||
|
||||
const (
|
||||
RTMPT_OPEN = iota
|
||||
RTMPT_SEND
|
||||
RTMPT_IDLE
|
||||
RTMPT_CLOSE
|
||||
)
|
||||
|
||||
// typedef struct C_AVal
|
||||
// amf.h +57
|
||||
type C_AVal struct {
|
||||
av_val *byte
|
||||
av_len int32
|
||||
}
|
||||
|
||||
const (
|
||||
RTMP_PACKET_TYPE_CHUNK_SIZE = 0x01
|
||||
RTMP_PACKET_TYPE_BYTES_READ_REPORT = 0x03
|
||||
RTMP_PACKET_TYPE_CONTROL = 0x04
|
||||
RTMP_PACKET_TYPE_SERVER_BW = 0x05
|
||||
RTMP_PACKET_TYPE_CLIENT_BW = 0x06
|
||||
RTMP_PACKET_TYPE_AUDIO = 0x08
|
||||
RTMP_PACKET_TYPE_VIDEO = 0x09
|
||||
RTMP_PACKET_TYPE_FLEX_MESSAGE = 0x11
|
||||
RTMP_PACKET_TYPE_INFO = 0x12
|
||||
RTMP_PACKET_TYPE_INVOKE = 0x14
|
||||
RTMP_PACKET_TYPE_FLASH_VIDEO = 0x16
|
||||
)
|
||||
|
||||
const (
|
||||
RTMP_PACKET_SIZE_LARGE = 0
|
||||
RTMP_PACKET_SIZE_MEDIUM = 1
|
||||
RTMP_PACKET_SIZE_SMALL = 2
|
||||
RTMP_PACKET_SIZE_MINIMUM = 3
|
||||
)
|
||||
|
||||
const (
|
||||
RTMP_READ_HEADER = 0x01
|
||||
RTMP_READ_SEEKING = 0x2
|
||||
)
|
||||
|
||||
const (
|
||||
RTMP_LF_AUTH = 0x0001 /* using auth param */
|
||||
RTMP_LF_LIVE = 0x0002 /* stream is live */
|
||||
RTMP_LF_PLST = 0x0008 /* send playlist before play */
|
||||
RTMP_LF_FTCU = 0x0020 /* free tcUrl on close */
|
||||
RTMP_LF_FAPU = 0x0040 /* free app on close */
|
||||
)
|
||||
|
||||
const (
|
||||
RTMP_FEATURE_HTTP = 0x01
|
||||
RTMP_FEATURE_ENC = 0x02
|
||||
RTMP_FEATURE_SSL = 0x04
|
||||
RTMP_FEATURE_MFP = 0x08 /* not yet supported */
|
||||
RTMP_FEATURE_WRITE = 0x10 /* publish, not play */
|
||||
)
|
||||
|
||||
const (
|
||||
RTMP_PROTOCOL_RTMP = 0
|
||||
RTMP_PROTOCOL_RTMPE = RTMP_FEATURE_ENC
|
||||
RTMP_PROTOCOL_RTMPT = RTMP_FEATURE_HTTP
|
||||
RTMP_PROTOCOL_RTMPS = RTMP_FEATURE_SSL
|
||||
RTMP_PROTOCOL_RTMPTE = (RTMP_FEATURE_HTTP | RTMP_FEATURE_ENC)
|
||||
RTMP_PROTOCOL_RTMPTS = (RTMP_FEATURE_HTTP | RTMP_FEATURE_SSL)
|
||||
RTMP_PROTOCOL_RTMFP = RTMP_FEATURE_MFP
|
||||
)
|
||||
|
||||
const (
|
||||
RTMP_DEFAULT_CHUNKSIZE = 128
|
||||
RTMP_BUFFER_CACHE_SIZE = (16 * 1024)
|
||||
RTMP_SIG_SIZE = 1536
|
||||
RTMP_LARGE_HEADER_SIZE = 12
|
||||
RTMP_MAX_HEADER_SIZE = 18
|
||||
)
|
||||
|
||||
const (
|
||||
minDataSize = 11
|
||||
debugMode = false
|
||||
|
@ -231,142 +157,6 @@ type Session struct {
|
|||
timeout uint
|
||||
}
|
||||
|
||||
// typedef struct RTMPPacket
|
||||
// rtmp.h +113
|
||||
type C_RTMPPacket struct {
|
||||
m_headerType uint8
|
||||
m_packetType uint8
|
||||
m_hasAbsTimestamp uint8
|
||||
m_nChannel int32
|
||||
m_nTimeStamp uint32
|
||||
m_nInfoField2 int32
|
||||
m_nBodySize uint32
|
||||
m_nBytesRead uint32
|
||||
m_chunk *C_RTMPChunk
|
||||
m_body *byte
|
||||
}
|
||||
|
||||
// typedef struct RTMPMethod
|
||||
// rtmp.h +231
|
||||
type C_RTMP_METHOD struct {
|
||||
name C_AVal
|
||||
num int32
|
||||
}
|
||||
|
||||
// typedef struct RTMP
|
||||
// rtmp.h +237
|
||||
type C_RTMP struct {
|
||||
m_inChunkSize int32
|
||||
m_outChunkSize int32
|
||||
m_nBWCheckCounter int32
|
||||
m_nBytesIn int32
|
||||
m_nBytesInSent int32
|
||||
m_nBufferMS int32
|
||||
m_stream_id int32
|
||||
m_mediaChannel int32
|
||||
m_mediaStamp uint32
|
||||
m_pauseStamp uint32
|
||||
m_pausing int32
|
||||
m_nServerBW int32
|
||||
m_nClientBW int32
|
||||
m_nClientBW2 uint8
|
||||
m_bPlaying uint8
|
||||
m_bSendEncoding uint8
|
||||
m_bSendCounter uint8
|
||||
m_numInvokes int32
|
||||
m_numCalls int32
|
||||
m_methodCalls *C_RTMP_METHOD
|
||||
m_channelsAllocatedIn int32
|
||||
m_channelsAllocatedOut int32
|
||||
m_vecChannelsIn **C_RTMPPacket
|
||||
m_vecChannelsOut **C_RTMPPacket
|
||||
m_channelTimestamp *int32
|
||||
m_fAudioCodecs float64
|
||||
m_fVideoCodecs float64
|
||||
m_fEncoding float64
|
||||
m_fDuration float64
|
||||
m_msgCounter int32
|
||||
m_polling int32
|
||||
m_resplen int32
|
||||
m_unackd int32
|
||||
m_clientID C_AVal
|
||||
m_read C_RTMP_READ
|
||||
m_write C_RTMPPacket
|
||||
m_sb C_RTMPSockBuf
|
||||
Link C_RTMP_LNK
|
||||
}
|
||||
|
||||
// typedef struct RTMP_READ
|
||||
// rtmp.h +200
|
||||
type C_RTMP_READ struct {
|
||||
buf *byte
|
||||
bufpos *byte
|
||||
buflen uint
|
||||
timestamp uint32
|
||||
dataType uint8
|
||||
flags uint8
|
||||
status int8
|
||||
initialFrameType uint8
|
||||
nResumeTS uint32
|
||||
metaHeader *byte
|
||||
initialFrame *byte
|
||||
nMetaHeaderSize uint32
|
||||
nInitialFrameSize uint32
|
||||
nIgnoredFrameCounter uint32
|
||||
nIgnoredFlvFrameCounter uint32
|
||||
}
|
||||
|
||||
// typedef struct RTMP_READ
|
||||
// rtmp.h +200
|
||||
type C_RTMPSockBuf struct {
|
||||
sb_socket int32
|
||||
sb_size int32
|
||||
sb_start *byte
|
||||
sb_buf [RTMP_BUFFER_CACHE_SIZE]byte // port const
|
||||
sb_timedout int32
|
||||
sb_ssl uintptr
|
||||
}
|
||||
|
||||
// typedef struct RTMPChunk
|
||||
// rtmp.h +105
|
||||
type C_RTMPChunk struct {
|
||||
c_headerSize int32
|
||||
c_chunkSize int32
|
||||
c_chunk *byte
|
||||
c_header [RTMP_MAX_HEADER_SIZE]byte
|
||||
}
|
||||
|
||||
// typedef struct RTMP_LNK
|
||||
// rtmp.h +144
|
||||
type C_RTMP_LNK struct {
|
||||
hostname C_AVal
|
||||
sockshost C_AVal
|
||||
playpath0 C_AVal
|
||||
playpath C_AVal
|
||||
tcUrl C_AVal
|
||||
swfUrl C_AVal
|
||||
pageUrl C_AVal
|
||||
app C_AVal
|
||||
auth C_AVal
|
||||
flashVer C_AVal
|
||||
subscribepath C_AVal
|
||||
usherToken C_AVal
|
||||
token C_AVal
|
||||
pubUser C_AVal
|
||||
pubPasswd C_AVal
|
||||
extras C_AMFObject
|
||||
edepth int32
|
||||
seekTime int32
|
||||
stopTime int32
|
||||
lFlags int32
|
||||
swfAge int32
|
||||
protocol int32
|
||||
timeout int32
|
||||
pFlags int32
|
||||
socksport uint16
|
||||
port uint16
|
||||
}
|
||||
|
||||
// NewSession returns a new session.
|
||||
func NewSession(url string, connectTimeout uint) *Session {
|
||||
return &Session{
|
||||
|
|
|
@ -0,0 +1,204 @@
|
|||
package rtmp
|
||||
|
||||
const (
|
||||
RTMPT_OPEN = iota
|
||||
RTMPT_SEND
|
||||
RTMPT_IDLE
|
||||
RTMPT_CLOSE
|
||||
)
|
||||
|
||||
const (
|
||||
RTMP_PACKET_TYPE_CHUNK_SIZE = 0x01
|
||||
RTMP_PACKET_TYPE_BYTES_READ_REPORT = 0x03
|
||||
RTMP_PACKET_TYPE_CONTROL = 0x04
|
||||
RTMP_PACKET_TYPE_SERVER_BW = 0x05
|
||||
RTMP_PACKET_TYPE_CLIENT_BW = 0x06
|
||||
RTMP_PACKET_TYPE_AUDIO = 0x08
|
||||
RTMP_PACKET_TYPE_VIDEO = 0x09
|
||||
RTMP_PACKET_TYPE_FLEX_MESSAGE = 0x11
|
||||
RTMP_PACKET_TYPE_INFO = 0x12
|
||||
RTMP_PACKET_TYPE_INVOKE = 0x14
|
||||
RTMP_PACKET_TYPE_FLASH_VIDEO = 0x16
|
||||
)
|
||||
|
||||
const (
|
||||
RTMP_PACKET_SIZE_LARGE = 0
|
||||
RTMP_PACKET_SIZE_MEDIUM = 1
|
||||
RTMP_PACKET_SIZE_SMALL = 2
|
||||
RTMP_PACKET_SIZE_MINIMUM = 3
|
||||
)
|
||||
|
||||
const (
|
||||
RTMP_READ_HEADER = 0x01
|
||||
RTMP_READ_SEEKING = 0x2
|
||||
)
|
||||
|
||||
const (
|
||||
RTMP_LF_AUTH = 0x0001 /* using auth param */
|
||||
RTMP_LF_LIVE = 0x0002 /* stream is live */
|
||||
RTMP_LF_PLST = 0x0008 /* send playlist before play */
|
||||
RTMP_LF_FTCU = 0x0020 /* free tcUrl on close */
|
||||
RTMP_LF_FAPU = 0x0040 /* free app on close */
|
||||
)
|
||||
|
||||
const (
|
||||
RTMP_FEATURE_HTTP = 0x01
|
||||
RTMP_FEATURE_ENC = 0x02
|
||||
RTMP_FEATURE_SSL = 0x04
|
||||
RTMP_FEATURE_MFP = 0x08 /* not yet supported */
|
||||
RTMP_FEATURE_WRITE = 0x10 /* publish, not play */
|
||||
)
|
||||
|
||||
const (
|
||||
RTMP_PROTOCOL_RTMP = 0
|
||||
RTMP_PROTOCOL_RTMPE = RTMP_FEATURE_ENC
|
||||
RTMP_PROTOCOL_RTMPT = RTMP_FEATURE_HTTP
|
||||
RTMP_PROTOCOL_RTMPS = RTMP_FEATURE_SSL
|
||||
RTMP_PROTOCOL_RTMPTE = (RTMP_FEATURE_HTTP | RTMP_FEATURE_ENC)
|
||||
RTMP_PROTOCOL_RTMPTS = (RTMP_FEATURE_HTTP | RTMP_FEATURE_SSL)
|
||||
RTMP_PROTOCOL_RTMFP = RTMP_FEATURE_MFP
|
||||
)
|
||||
|
||||
const (
|
||||
RTMP_DEFAULT_CHUNKSIZE = 128
|
||||
RTMP_BUFFER_CACHE_SIZE = (16 * 1024)
|
||||
RTMP_SIG_SIZE = 1536
|
||||
RTMP_LARGE_HEADER_SIZE = 12
|
||||
RTMP_MAX_HEADER_SIZE = 18
|
||||
)
|
||||
|
||||
// typedef struct RTMPPacket
|
||||
// rtmp.h +113
|
||||
type C_RTMPPacket struct {
|
||||
m_headerType uint8
|
||||
m_packetType uint8
|
||||
m_hasAbsTimestamp uint8
|
||||
m_nChannel int32
|
||||
m_nTimeStamp uint32
|
||||
m_nInfoField2 int32
|
||||
m_nBodySize uint32
|
||||
m_nBytesRead uint32
|
||||
m_chunk *C_RTMPChunk
|
||||
m_body *byte
|
||||
}
|
||||
|
||||
// typedef struct RTMPMethod
|
||||
// rtmp.h +231
|
||||
type C_RTMP_METHOD struct {
|
||||
name C_AVal
|
||||
num int32
|
||||
}
|
||||
|
||||
// typedef struct RTMP
|
||||
// rtmp.h +237
|
||||
type C_RTMP struct {
|
||||
m_inChunkSize int32
|
||||
m_outChunkSize int32
|
||||
m_nBWCheckCounter int32
|
||||
m_nBytesIn int32
|
||||
m_nBytesInSent int32
|
||||
m_nBufferMS int32
|
||||
m_stream_id int32
|
||||
m_mediaChannel int32
|
||||
m_mediaStamp uint32
|
||||
m_pauseStamp uint32
|
||||
m_pausing int32
|
||||
m_nServerBW int32
|
||||
m_nClientBW int32
|
||||
m_nClientBW2 uint8
|
||||
m_bPlaying uint8
|
||||
m_bSendEncoding uint8
|
||||
m_bSendCounter uint8
|
||||
m_numInvokes int32
|
||||
m_numCalls int32
|
||||
m_methodCalls *C_RTMP_METHOD
|
||||
m_channelsAllocatedIn int32
|
||||
m_channelsAllocatedOut int32
|
||||
m_vecChannelsIn **C_RTMPPacket
|
||||
m_vecChannelsOut **C_RTMPPacket
|
||||
m_channelTimestamp *int32
|
||||
m_fAudioCodecs float64
|
||||
m_fVideoCodecs float64
|
||||
m_fEncoding float64
|
||||
m_fDuration float64
|
||||
m_msgCounter int32
|
||||
m_polling int32
|
||||
m_resplen int32
|
||||
m_unackd int32
|
||||
m_clientID C_AVal
|
||||
m_read C_RTMP_READ
|
||||
m_write C_RTMPPacket
|
||||
m_sb C_RTMPSockBuf
|
||||
Link C_RTMP_LNK
|
||||
}
|
||||
|
||||
// typedef struct RTMP_READ
|
||||
// rtmp.h +200
|
||||
type C_RTMP_READ struct {
|
||||
buf *byte
|
||||
bufpos *byte
|
||||
buflen uint
|
||||
timestamp uint32
|
||||
dataType uint8
|
||||
flags uint8
|
||||
status int8
|
||||
initialFrameType uint8
|
||||
nResumeTS uint32
|
||||
metaHeader *byte
|
||||
initialFrame *byte
|
||||
nMetaHeaderSize uint32
|
||||
nInitialFrameSize uint32
|
||||
nIgnoredFrameCounter uint32
|
||||
nIgnoredFlvFrameCounter uint32
|
||||
}
|
||||
|
||||
// typedef struct RTMP_READ
|
||||
// rtmp.h +200
|
||||
type C_RTMPSockBuf struct {
|
||||
sb_socket int32
|
||||
sb_size int32
|
||||
sb_start *byte
|
||||
sb_buf [RTMP_BUFFER_CACHE_SIZE]byte // port const
|
||||
sb_timedout int32
|
||||
sb_ssl uintptr
|
||||
}
|
||||
|
||||
// typedef struct RTMPChunk
|
||||
// rtmp.h +105
|
||||
type C_RTMPChunk struct {
|
||||
c_headerSize int32
|
||||
c_chunkSize int32
|
||||
c_chunk *byte
|
||||
c_header [RTMP_MAX_HEADER_SIZE]byte
|
||||
}
|
||||
|
||||
// typedef struct RTMP_LNK
|
||||
// rtmp.h +144
|
||||
type C_RTMP_LNK struct {
|
||||
hostname C_AVal
|
||||
sockshost C_AVal
|
||||
playpath0 C_AVal
|
||||
playpath C_AVal
|
||||
tcUrl C_AVal
|
||||
swfUrl C_AVal
|
||||
pageUrl C_AVal
|
||||
app C_AVal
|
||||
auth C_AVal
|
||||
flashVer C_AVal
|
||||
subscribepath C_AVal
|
||||
usherToken C_AVal
|
||||
token C_AVal
|
||||
pubUser C_AVal
|
||||
pubPasswd C_AVal
|
||||
extras C_AMFObject
|
||||
edepth int32
|
||||
seekTime int32
|
||||
stopTime int32
|
||||
lFlags int32
|
||||
swfAge int32
|
||||
protocol int32
|
||||
timeout int32
|
||||
pFlags int32
|
||||
socksport uint16
|
||||
port uint16
|
||||
}
|
Loading…
Reference in New Issue