add RTP/MPEG-4 Video decoder and encoder (#266)

This commit is contained in:
Alessandro Ros
2023-05-01 21:19:23 +02:00
committed by GitHub
parent 00f66555e2
commit 6937b85704
31 changed files with 445 additions and 105 deletions

View File

@@ -3,7 +3,6 @@ package rtpvp8
import (
"bytes"
"testing"
"time"
"github.com/pion/rtp"
"github.com/stretchr/testify/require"
@@ -28,13 +27,11 @@ func mergeBytes(vals ...[]byte) []byte {
var cases = []struct {
name string
frame []byte
pts time.Duration
pkts []*rtp.Packet
}{
{
"single",
[]byte{0x01, 0x02, 0x03, 0x04},
25 * time.Millisecond,
[]*rtp.Packet{
{
Header: rtp.Header{
@@ -42,7 +39,7 @@ var cases = []struct {
Marker: true,
PayloadType: 96,
SequenceNumber: 17645,
Timestamp: 2289528607,
Timestamp: 2289526357,
SSRC: 0x9dbb7812,
},
Payload: []byte{0x10, 0x01, 0x02, 0x03, 0x04},
@@ -52,7 +49,6 @@ var cases = []struct {
{
"fragmented",
bytes.Repeat([]byte{0x01, 0x02, 0x03, 0x04}, 4096/4),
55 * time.Millisecond,
[]*rtp.Packet{
{
Header: rtp.Header{
@@ -60,7 +56,7 @@ var cases = []struct {
Marker: false,
PayloadType: 96,
SequenceNumber: 17645,
Timestamp: 2289531307,
Timestamp: 2289526357,
SSRC: 0x9dbb7812,
},
Payload: mergeBytes([]byte{0x10}, bytes.Repeat([]byte{0x01, 0x02, 0x03, 0x04}, 364), []byte{0x01, 0x02, 0x03}),
@@ -71,7 +67,7 @@ var cases = []struct {
Marker: false,
PayloadType: 96,
SequenceNumber: 17646,
Timestamp: 2289531307,
Timestamp: 2289526357,
SSRC: 0x9dbb7812,
},
Payload: mergeBytes([]byte{0x00, 0x04}, bytes.Repeat([]byte{0x01, 0x02, 0x03, 0x04}, 364), []byte{0x01, 0x02}),
@@ -82,7 +78,7 @@ var cases = []struct {
Marker: true,
PayloadType: 96,
SequenceNumber: 17647,
Timestamp: 2289531307,
Timestamp: 2289526357,
SSRC: 0x9dbb7812,
},
Payload: mergeBytes([]byte{0x00, 0x03, 0x04}, bytes.Repeat([]byte{0x01, 0x02, 0x03, 0x04}, 294)),
@@ -111,7 +107,7 @@ func TestEncode(t *testing.T) {
}
e.Init()
pkts, err := e.Encode(ca.frame, ca.pts)
pkts, err := e.Encode(ca.frame, 0)
require.NoError(t, err)
require.Equal(t, ca.pkts, pkts)
})