Skip to content

add Write method to RawPacket struct #18

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions src/net/rtp/packets.go
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,14 @@ func (rp *RawPacket) Buffer() []byte {
return rp.buffer
}

// Write writes data bytes from data buffer to the underlying RawPacket.
func (rp *RawPacket) Write(data []byte) (int, error) {
rp.buffer = data
rp.inUse = len(data)
rp.isFree = true
return rp.inUse, nil
}

// InUse returns the number of valid bytes in the packet buffer.
// Several function modify the inUse variable, for example when copying payload or setting extensions
// in the RTP packet. Thus "buffer[0:inUse]" is the slice inside the buffer that will be sent or
Expand All @@ -123,6 +131,12 @@ func (rp *RawPacket) InUse() int {
// *** RTP specific functions start here ***

// DataPacket RTP packet type to define RTP specific functions
//
// if you want to copy incoming RTP packet as-is. For example
// when you need to redirect RTP packet from WebRTC to plain RTP:
// pkt := rtp.DataPacket{}
// pkt.Write(buf.Bytes())
// session.WriteData(&pkt)
type DataPacket struct {
RawPacket
payloadLength int16
Expand Down