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 rtph264
import (
"bytes"
"testing"
"time"
"github.com/pion/rtp"
"github.com/stretchr/testify/require"
@@ -28,7 +27,6 @@ func mergeBytes(vals ...[]byte) []byte {
var cases = []struct {
name string
nalus [][]byte
pts time.Duration
pkts []*rtp.Packet
}{
{
@@ -39,7 +37,6 @@ var cases = []struct {
bytes.Repeat([]byte{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07}, 8),
),
},
25 * time.Millisecond,
[]*rtp.Packet{
{
Header: rtp.Header{
@@ -47,7 +44,7 @@ var cases = []struct {
Marker: true,
PayloadType: 96,
SequenceNumber: 17645,
Timestamp: 2289528607,
Timestamp: 2289526357,
SSRC: 0x9dbb7812,
},
Payload: mergeBytes(
@@ -65,7 +62,6 @@ var cases = []struct {
bytes.Repeat([]byte{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07}, 512),
),
},
55 * time.Millisecond,
[]*rtp.Packet{
{
Header: rtp.Header{
@@ -73,7 +69,7 @@ var cases = []struct {
Marker: false,
PayloadType: 96,
SequenceNumber: 17645,
Timestamp: 2289531307,
Timestamp: 2289526357,
SSRC: 0x9dbb7812,
},
Payload: mergeBytes(
@@ -88,7 +84,7 @@ var cases = []struct {
Marker: false,
PayloadType: 96,
SequenceNumber: 17646,
Timestamp: 2289531307,
Timestamp: 2289526357,
SSRC: 0x9dbb7812,
},
Payload: mergeBytes(
@@ -104,7 +100,7 @@ var cases = []struct {
Marker: true,
PayloadType: 96,
SequenceNumber: 17647,
Timestamp: 2289531307,
Timestamp: 2289526357,
SSRC: 0x9dbb7812,
},
Payload: mergeBytes(
@@ -131,7 +127,6 @@ var cases = []struct {
0x00, 0x00, 0x6d, 0x40,
},
},
0,
[]*rtp.Packet{
{
Header: rtp.Header{
@@ -177,7 +172,6 @@ var cases = []struct {
bytes.Repeat([]byte{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07}, 175),
),
},
0,
[]*rtp.Packet{
{
Header: rtp.Header{
@@ -227,7 +221,6 @@ var cases = []struct {
{0x09, 0xF0},
{0x09, 0xF0},
},
0,
[]*rtp.Packet{
{
Header: rtp.Header{
@@ -297,7 +290,7 @@ func TestEncode(t *testing.T) {
}
e.Init()
pkts, err := e.Encode(ca.nalus, ca.pts)
pkts, err := e.Encode(ca.nalus, 0)
require.NoError(t, err)
require.Equal(t, ca.pkts, pkts)
})