mirror of
https://github.com/aler9/gortsplib
synced 2025-10-05 07:06:58 +08:00
simplify format.Unmarshal; improve tests (#631)
This commit is contained in:
@@ -4,7 +4,6 @@ package description
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"reflect"
|
"reflect"
|
||||||
"regexp"
|
|
||||||
"sort"
|
"sort"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
@@ -16,26 +15,6 @@ import (
|
|||||||
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
|
||||||
smartPayloadTypeRegexp = regexp.MustCompile("^smart/[0-9]/[0-9]+$")
|
|
||||||
smartRtpmapRegexp = regexp.MustCompile("^([0-9]+) (.+)/[0-9]+$")
|
|
||||||
)
|
|
||||||
|
|
||||||
func replaceSmartPayloadType(payloadType string, attributes []psdp.Attribute) string {
|
|
||||||
re1 := smartPayloadTypeRegexp.FindStringSubmatch(payloadType)
|
|
||||||
if re1 != nil {
|
|
||||||
for _, attr := range attributes {
|
|
||||||
if attr.Key == "rtpmap" {
|
|
||||||
re2 := smartRtpmapRegexp.FindStringSubmatch(attr.Value)
|
|
||||||
if re2 != nil {
|
|
||||||
return re2[1]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return payloadType
|
|
||||||
}
|
|
||||||
|
|
||||||
func getAttribute(attributes []psdp.Attribute, key string) string {
|
func getAttribute(attributes []psdp.Attribute, key string) string {
|
||||||
for _, attr := range attributes {
|
for _, attr := range attributes {
|
||||||
if attr.Key == key {
|
if attr.Key == key {
|
||||||
@@ -54,45 +33,6 @@ func isBackChannel(attributes []psdp.Attribute) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
func getFormatAttribute(attributes []psdp.Attribute, payloadType uint8, key string) string {
|
|
||||||
for _, attr := range attributes {
|
|
||||||
if attr.Key == key {
|
|
||||||
v := strings.TrimSpace(attr.Value)
|
|
||||||
if parts := strings.SplitN(v, " ", 2); len(parts) == 2 {
|
|
||||||
if tmp, err := strconv.ParseUint(parts[0], 10, 8); err == nil && uint8(tmp) == payloadType {
|
|
||||||
return parts[1]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func decodeFMTP(enc string) map[string]string {
|
|
||||||
if enc == "" {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
ret := make(map[string]string)
|
|
||||||
|
|
||||||
for _, kv := range strings.Split(enc, ";") {
|
|
||||||
kv = strings.Trim(kv, " ")
|
|
||||||
|
|
||||||
if len(kv) == 0 {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
tmp := strings.SplitN(kv, "=", 2)
|
|
||||||
if len(tmp) != 2 {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
ret[strings.ToLower(tmp[0])] = tmp[1]
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret
|
|
||||||
}
|
|
||||||
|
|
||||||
func sortedKeys(fmtp map[string]string) []string {
|
func sortedKeys(fmtp map[string]string) []string {
|
||||||
keys := make([]string, len(fmtp))
|
keys := make([]string, len(fmtp))
|
||||||
i := 0
|
i := 0
|
||||||
@@ -155,19 +95,9 @@ func (m *Media) Unmarshal(md *psdp.MediaDescription) error {
|
|||||||
m.Control = getAttribute(md.Attributes, "control")
|
m.Control = getAttribute(md.Attributes, "control")
|
||||||
|
|
||||||
m.Formats = nil
|
m.Formats = nil
|
||||||
|
|
||||||
for _, payloadType := range md.MediaName.Formats {
|
for _, payloadType := range md.MediaName.Formats {
|
||||||
payloadType = replaceSmartPayloadType(payloadType, md.Attributes)
|
format, err := format.Unmarshal(md, payloadType)
|
||||||
|
|
||||||
tmp, err := strconv.ParseUint(payloadType, 10, 8)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
payloadTypeInt := uint8(tmp)
|
|
||||||
|
|
||||||
rtpMap := getFormatAttribute(md.Attributes, payloadTypeInt, "rtpmap")
|
|
||||||
fmtp := decodeFMTP(getFormatAttribute(md.Attributes, payloadTypeInt, "fmtp"))
|
|
||||||
|
|
||||||
format, err := format.Unmarshal(string(m.Type), payloadTypeInt, rtpMap, fmtp)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@@ -550,133 +550,6 @@ var casesSession = []struct {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"issue mediamtx/1267 (tp-link)",
|
|
||||||
"v=0\r\n" +
|
|
||||||
"o=- 4158123474391860926 2 IN IP4 127.0.0.1\r\n" +
|
|
||||||
"s=-\r\n" +
|
|
||||||
"t=0 0\r\n" +
|
|
||||||
"m=application/TP-LINK 0 RTP/AVP smart/1/90000\r\n" +
|
|
||||||
"a=rtpmap:95 TP-LINK/90000\r\n",
|
|
||||||
"v=0\r\n" +
|
|
||||||
"o=- 0 0 IN IP4 127.0.0.1\r\n" +
|
|
||||||
"s=-\r\n" +
|
|
||||||
"c=IN IP4 0.0.0.0\r\n" +
|
|
||||||
"t=0 0\r\n" +
|
|
||||||
"m=application/TP-LINK 0 RTP/AVP 95\r\n" +
|
|
||||||
"a=control\r\n" +
|
|
||||||
"a=rtpmap:95 TP-LINK/90000\r\n",
|
|
||||||
Session{
|
|
||||||
Title: `-`,
|
|
||||||
Medias: []*Media{
|
|
||||||
{
|
|
||||||
Type: "application/TP-LINK",
|
|
||||||
Formats: []format.Format{&format.Generic{
|
|
||||||
PayloadTyp: 95,
|
|
||||||
RTPMa: "TP-LINK/90000",
|
|
||||||
ClockRat: 90000,
|
|
||||||
}},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"issue gortsplib/509 (tp-link)",
|
|
||||||
"v=0\n" +
|
|
||||||
"o=- 14665860 31787219 1 IN IP4 192.168.1.102\n" +
|
|
||||||
"s=Session streamed by \"TP-LINK RTSP Server\"\n" +
|
|
||||||
"t=0 0\n" +
|
|
||||||
"a=smart_encoder:virtualIFrame=1\n" +
|
|
||||||
"m=application/tp-link 0 RTP/AVP smart/0/25000\n" +
|
|
||||||
"a=rtpmap:95 tp-link/25000\n" +
|
|
||||||
"a=control:track3\n",
|
|
||||||
"v=0\r\n" +
|
|
||||||
"o=- 0 0 IN IP4 127.0.0.1\r\n" +
|
|
||||||
"s=Session streamed by \"TP-LINK RTSP Server\"\r\n" +
|
|
||||||
"c=IN IP4 0.0.0.0\r\n" +
|
|
||||||
"t=0 0\r\n" +
|
|
||||||
"m=application/tp-link 0 RTP/AVP 95\r\n" +
|
|
||||||
"a=control:track3\r\n" +
|
|
||||||
"a=rtpmap:95 tp-link/25000\r\n",
|
|
||||||
Session{
|
|
||||||
Title: `Session streamed by "TP-LINK RTSP Server"`,
|
|
||||||
Medias: []*Media{
|
|
||||||
{
|
|
||||||
Type: "application/tp-link",
|
|
||||||
Formats: []format.Format{&format.Generic{
|
|
||||||
PayloadTyp: 95,
|
|
||||||
RTPMa: "tp-link/25000",
|
|
||||||
ClockRat: 25000,
|
|
||||||
}},
|
|
||||||
Control: "track3",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"mercury",
|
|
||||||
"v=0\n" +
|
|
||||||
"o=- 14665860 31787219 1 IN IP4 192.168.0.60\n" +
|
|
||||||
"s=Session streamed by \"MERCURY RTSP Server\"\n" +
|
|
||||||
"t=0 0\n" +
|
|
||||||
"a=smart_encoder:virtualIFrame=1\n" +
|
|
||||||
"m=application/MERCURY 0 RTP/AVP smart/1/90000\n" +
|
|
||||||
"a=rtpmap:95 MERCURY/90000\n",
|
|
||||||
"v=0\r\n" +
|
|
||||||
"o=- 0 0 IN IP4 127.0.0.1\r\n" +
|
|
||||||
"s=Session streamed by \"MERCURY RTSP Server\"\r\n" +
|
|
||||||
"c=IN IP4 0.0.0.0\r\n" +
|
|
||||||
"t=0 0\r\n" +
|
|
||||||
"m=application/MERCURY 0 RTP/AVP 95\r\n" +
|
|
||||||
"a=control\r\n" +
|
|
||||||
"a=rtpmap:95 MERCURY/90000\r\n",
|
|
||||||
Session{
|
|
||||||
Title: `Session streamed by "MERCURY RTSP Server"`,
|
|
||||||
Medias: []*Media{
|
|
||||||
{
|
|
||||||
Type: "application/MERCURY",
|
|
||||||
Formats: []format.Format{&format.Generic{
|
|
||||||
PayloadTyp: 95,
|
|
||||||
RTPMa: "MERCURY/90000",
|
|
||||||
ClockRat: 90000,
|
|
||||||
}},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"h264 with space at end",
|
|
||||||
"v=0\r\n" +
|
|
||||||
"o=- 4158123474391860926 2 IN IP4 127.0.0.1\r\n" +
|
|
||||||
"s=-\r\n" +
|
|
||||||
"t=0 0\r\n" +
|
|
||||||
"m=video 42504 RTP/AVP 96\r\n" +
|
|
||||||
"a=rtpmap:96 H264/90000 \r\n" +
|
|
||||||
"a=fmtp:96 packetization-mode=1\r\n",
|
|
||||||
"v=0\r\n" +
|
|
||||||
"o=- 0 0 IN IP4 127.0.0.1\r\n" +
|
|
||||||
"s=-\r\n" +
|
|
||||||
"c=IN IP4 0.0.0.0\r\n" +
|
|
||||||
"t=0 0\r\n" +
|
|
||||||
"m=video 0 RTP/AVP 96\r\n" +
|
|
||||||
"a=control\r\n" +
|
|
||||||
"a=rtpmap:96 H264/90000\r\n" +
|
|
||||||
"a=fmtp:96 packetization-mode=1\r\n",
|
|
||||||
Session{
|
|
||||||
Title: "-",
|
|
||||||
Medias: []*Media{
|
|
||||||
{
|
|
||||||
Type: MediaTypeVideo,
|
|
||||||
Formats: []format.Format{
|
|
||||||
&format.H264{
|
|
||||||
PayloadTyp: 96,
|
|
||||||
PacketizationMode: 1,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"ulpfec rfc5109",
|
"ulpfec rfc5109",
|
||||||
"v=0\r\n" +
|
"v=0\r\n" +
|
||||||
|
@@ -33,35 +33,3 @@ func TestAV1DecEncoder(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, [][]byte{{0x01, 0x02, 0x03, 0x04}}, byts)
|
require.Equal(t, [][]byte{{0x01, 0x02, 0x03, 0x04}}, byts)
|
||||||
}
|
}
|
||||||
|
|
||||||
func FuzzUnmarshalAV1(f *testing.F) {
|
|
||||||
f.Fuzz(func(
|
|
||||||
_ *testing.T,
|
|
||||||
a bool,
|
|
||||||
b string,
|
|
||||||
c bool,
|
|
||||||
d string,
|
|
||||||
e bool,
|
|
||||||
f string,
|
|
||||||
) {
|
|
||||||
ma := map[string]string{}
|
|
||||||
|
|
||||||
if a {
|
|
||||||
ma["level-idx"] = b
|
|
||||||
}
|
|
||||||
|
|
||||||
if c {
|
|
||||||
ma["profile"] = d
|
|
||||||
}
|
|
||||||
|
|
||||||
if e {
|
|
||||||
ma["tier"] = f
|
|
||||||
}
|
|
||||||
|
|
||||||
fo, err := Unmarshal("video", 96, "AV1/90000", ma)
|
|
||||||
if err == nil {
|
|
||||||
fo.(*AV1).RTPMap()
|
|
||||||
fo.(*AV1).FMTP()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
@@ -2,11 +2,48 @@
|
|||||||
package format
|
package format
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"regexp"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
|
psdp "github.com/pion/sdp/v3"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
smartPayloadTypeRegexp = regexp.MustCompile("^smart/[0-9]/[0-9]+$")
|
||||||
|
smartRtpmapRegexp = regexp.MustCompile("^([0-9]+) (.+)/[0-9]+$")
|
||||||
|
)
|
||||||
|
|
||||||
|
func replaceSmartPayloadType(payloadType string, attributes []psdp.Attribute) string {
|
||||||
|
re1 := smartPayloadTypeRegexp.FindStringSubmatch(payloadType)
|
||||||
|
if re1 != nil {
|
||||||
|
for _, attr := range attributes {
|
||||||
|
if attr.Key == "rtpmap" {
|
||||||
|
re2 := smartRtpmapRegexp.FindStringSubmatch(attr.Value)
|
||||||
|
if re2 != nil {
|
||||||
|
return re2[1]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return payloadType
|
||||||
|
}
|
||||||
|
|
||||||
|
func getFormatAttribute(attributes []psdp.Attribute, payloadType uint8, key string) string {
|
||||||
|
for _, attr := range attributes {
|
||||||
|
if attr.Key == key {
|
||||||
|
v := strings.TrimSpace(attr.Value)
|
||||||
|
if parts := strings.SplitN(v, " ", 2); len(parts) == 2 {
|
||||||
|
if tmp, err := strconv.ParseUint(parts[0], 10, 8); err == nil && uint8(tmp) == payloadType {
|
||||||
|
return parts[1]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
func getCodecAndClock(rtpMap string) (string, string) {
|
func getCodecAndClock(rtpMap string) (string, string) {
|
||||||
parts2 := strings.SplitN(rtpMap, "/", 2)
|
parts2 := strings.SplitN(rtpMap, "/", 2)
|
||||||
if len(parts2) != 2 {
|
if len(parts2) != 2 {
|
||||||
@@ -16,6 +53,31 @@ func getCodecAndClock(rtpMap string) (string, string) {
|
|||||||
return strings.ToLower(parts2[0]), parts2[1]
|
return strings.ToLower(parts2[0]), parts2[1]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func decodeFMTP(enc string) map[string]string {
|
||||||
|
if enc == "" {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
ret := make(map[string]string)
|
||||||
|
|
||||||
|
for _, kv := range strings.Split(enc, ";") {
|
||||||
|
kv = strings.Trim(kv, " ")
|
||||||
|
|
||||||
|
if len(kv) == 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
tmp := strings.SplitN(kv, "=", 2)
|
||||||
|
if len(tmp) != 2 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
ret[strings.ToLower(tmp[0])] = tmp[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
|
||||||
type unmarshalContext struct {
|
type unmarshalContext struct {
|
||||||
mediaType string
|
mediaType string
|
||||||
payloadType uint8
|
payloadType uint8
|
||||||
@@ -50,7 +112,19 @@ type Format interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Unmarshal decodes a format from a media description.
|
// Unmarshal decodes a format from a media description.
|
||||||
func Unmarshal(mediaType string, payloadType uint8, rtpMap string, fmtp map[string]string) (Format, error) {
|
func Unmarshal(md *psdp.MediaDescription, payloadTypeStr string) (Format, error) {
|
||||||
|
mediaType := md.MediaName.Media
|
||||||
|
payloadTypeStr = replaceSmartPayloadType(payloadTypeStr, md.Attributes)
|
||||||
|
|
||||||
|
tmp, err := strconv.ParseUint(payloadTypeStr, 10, 8)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
payloadType := uint8(tmp)
|
||||||
|
|
||||||
|
rtpMap := getFormatAttribute(md.Attributes, payloadType, "rtpmap")
|
||||||
|
fmtp := decodeFMTP(getFormatAttribute(md.Attributes, payloadType, "fmtp"))
|
||||||
|
|
||||||
codec, clock := getCodecAndClock(rtpMap)
|
codec, clock := getCodecAndClock(rtpMap)
|
||||||
|
|
||||||
format := func() Format {
|
format := func() Format {
|
||||||
@@ -148,7 +222,7 @@ func Unmarshal(mediaType string, payloadType uint8, rtpMap string, fmtp map[stri
|
|||||||
return &Generic{}
|
return &Generic{}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
err := format.unmarshal(&unmarshalContext{
|
err = format.unmarshal(&unmarshalContext{
|
||||||
mediaType: mediaType,
|
mediaType: mediaType,
|
||||||
payloadType: payloadType,
|
payloadType: payloadType,
|
||||||
clock: clock,
|
clock: clock,
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -62,32 +62,6 @@ func TestH264DecEncoder(t *testing.T) {
|
|||||||
require.Equal(t, [][]byte{{0x01, 0x02, 0x03, 0x04}}, byts)
|
require.Equal(t, [][]byte{{0x01, 0x02, 0x03, 0x04}}, byts)
|
||||||
}
|
}
|
||||||
|
|
||||||
func FuzzUnmarshalH264(f *testing.F) {
|
|
||||||
f.Fuzz(func(
|
|
||||||
_ *testing.T,
|
|
||||||
a bool,
|
|
||||||
b string,
|
|
||||||
c bool,
|
|
||||||
d string,
|
|
||||||
) {
|
|
||||||
ma := map[string]string{}
|
|
||||||
|
|
||||||
if a {
|
|
||||||
ma["sprop-parameter-sets"] = b
|
|
||||||
}
|
|
||||||
|
|
||||||
if c {
|
|
||||||
ma["packetization-mode"] = d
|
|
||||||
}
|
|
||||||
|
|
||||||
fo, err := Unmarshal("video", 96, "H264/90000", ma)
|
|
||||||
if err == nil {
|
|
||||||
fo.RTPMap()
|
|
||||||
fo.FMTP()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func FuzzH264PTSEqualsDTS(f *testing.F) {
|
func FuzzH264PTSEqualsDTS(f *testing.F) {
|
||||||
f.Fuzz(func(t *testing.T, b []byte) {
|
f.Fuzz(func(t *testing.T, b []byte) {
|
||||||
(&H264{}).PTSEqualsDTS(&rtp.Packet{Payload: b})
|
(&H264{}).PTSEqualsDTS(&rtp.Packet{Payload: b})
|
||||||
|
@@ -71,40 +71,6 @@ func TestH265DecEncoder(t *testing.T) {
|
|||||||
require.Equal(t, [][]byte{{0x01, 0x02, 0x03, 0x04}}, byts)
|
require.Equal(t, [][]byte{{0x01, 0x02, 0x03, 0x04}}, byts)
|
||||||
}
|
}
|
||||||
|
|
||||||
func FuzzUnmarshalH265(f *testing.F) {
|
|
||||||
f.Fuzz(func(
|
|
||||||
_ *testing.T,
|
|
||||||
a bool,
|
|
||||||
b string,
|
|
||||||
c bool,
|
|
||||||
d string,
|
|
||||||
) {
|
|
||||||
ma := map[string]string{}
|
|
||||||
|
|
||||||
if a {
|
|
||||||
ma["sprop-vps"] = b
|
|
||||||
}
|
|
||||||
|
|
||||||
if c {
|
|
||||||
ma["sprop-sps"] = d
|
|
||||||
}
|
|
||||||
|
|
||||||
if c {
|
|
||||||
ma["sprop-pps"] = d
|
|
||||||
}
|
|
||||||
|
|
||||||
if c {
|
|
||||||
ma["sprop-max-don-diff"] = d
|
|
||||||
}
|
|
||||||
|
|
||||||
fo, err := Unmarshal("video", 96, "H265/90000", ma)
|
|
||||||
if err == nil {
|
|
||||||
fo.RTPMap()
|
|
||||||
fo.FMTP()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func FuzzH265PTSEqualsDTS(f *testing.F) {
|
func FuzzH265PTSEqualsDTS(f *testing.F) {
|
||||||
f.Fuzz(func(t *testing.T, b []byte) {
|
f.Fuzz(func(t *testing.T, b []byte) {
|
||||||
(&H265{}).PTSEqualsDTS(&rtp.Packet{Payload: b})
|
(&H265{}).PTSEqualsDTS(&rtp.Packet{Payload: b})
|
||||||
|
@@ -41,13 +41,3 @@ func TestLPCMDecEncoder(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, []byte{0x01, 0x02, 0x03, 0x04}, byts)
|
require.Equal(t, []byte{0x01, 0x02, 0x03, 0x04}, byts)
|
||||||
}
|
}
|
||||||
|
|
||||||
func FuzzUnmarshalLPCM(f *testing.F) {
|
|
||||||
f.Fuzz(func(_ *testing.T, a string) {
|
|
||||||
fo, err := Unmarshal("audio", 96, "L16/"+a, nil)
|
|
||||||
if err == nil {
|
|
||||||
fo.RTPMap()
|
|
||||||
fo.FMTP()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
@@ -124,109 +124,3 @@ func TestMPEG4AudioDecEncoder(t *testing.T) {
|
|||||||
require.Equal(t, [][]byte{{0x01, 0x02, 0x03, 0x04}}, byts)
|
require.Equal(t, [][]byte{{0x01, 0x02, 0x03, 0x04}}, byts)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func FuzzUnmarshalMPEG4AudioGeneric(f *testing.F) {
|
|
||||||
f.Fuzz(func(
|
|
||||||
_ *testing.T,
|
|
||||||
a bool,
|
|
||||||
b string,
|
|
||||||
c bool,
|
|
||||||
d string,
|
|
||||||
e bool,
|
|
||||||
f string,
|
|
||||||
g bool,
|
|
||||||
h string,
|
|
||||||
i bool,
|
|
||||||
j string,
|
|
||||||
k bool,
|
|
||||||
l string,
|
|
||||||
m bool,
|
|
||||||
n string,
|
|
||||||
) {
|
|
||||||
ma := map[string]string{}
|
|
||||||
|
|
||||||
if a {
|
|
||||||
ma["streamtype"] = b
|
|
||||||
}
|
|
||||||
|
|
||||||
if c {
|
|
||||||
ma["mode"] = d
|
|
||||||
}
|
|
||||||
|
|
||||||
if e {
|
|
||||||
ma["profile-level-id"] = f
|
|
||||||
}
|
|
||||||
|
|
||||||
if g {
|
|
||||||
ma["config"] = h
|
|
||||||
}
|
|
||||||
|
|
||||||
if i {
|
|
||||||
ma["sizelength"] = j
|
|
||||||
}
|
|
||||||
|
|
||||||
if k {
|
|
||||||
ma["indexlength"] = l
|
|
||||||
}
|
|
||||||
|
|
||||||
if m {
|
|
||||||
ma["indexdeltalength"] = n
|
|
||||||
}
|
|
||||||
|
|
||||||
fo, err := Unmarshal("audio", 96, "MPEG4-generic/48000/2", ma) //nolint:errcheck
|
|
||||||
if err == nil {
|
|
||||||
fo.(*MPEG4Audio).GetConfig()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func FuzzUnmarshalMPEG4AudioLATM(f *testing.F) {
|
|
||||||
f.Fuzz(func(
|
|
||||||
_ *testing.T,
|
|
||||||
a bool,
|
|
||||||
b string,
|
|
||||||
c bool,
|
|
||||||
d string,
|
|
||||||
e bool,
|
|
||||||
f string,
|
|
||||||
g bool,
|
|
||||||
h string,
|
|
||||||
i bool,
|
|
||||||
j string,
|
|
||||||
k bool,
|
|
||||||
l string,
|
|
||||||
) {
|
|
||||||
ma := map[string]string{}
|
|
||||||
|
|
||||||
if a {
|
|
||||||
ma["profile-level-id"] = b
|
|
||||||
}
|
|
||||||
|
|
||||||
if c {
|
|
||||||
ma["bitrate"] = d
|
|
||||||
}
|
|
||||||
|
|
||||||
if e {
|
|
||||||
ma["cpresent"] = f
|
|
||||||
}
|
|
||||||
|
|
||||||
if g {
|
|
||||||
ma["config"] = h
|
|
||||||
}
|
|
||||||
|
|
||||||
if i {
|
|
||||||
ma["object"] = j
|
|
||||||
}
|
|
||||||
|
|
||||||
if k {
|
|
||||||
ma["sbr-enabled"] = l
|
|
||||||
}
|
|
||||||
|
|
||||||
fo, err := Unmarshal("audio", 96, "MP4A-LATM/48000/2", ma)
|
|
||||||
if err == nil {
|
|
||||||
fo.(*MPEG4Audio).RTPMap()
|
|
||||||
fo.(*MPEG4Audio).FMTP()
|
|
||||||
fo.(*MPEG4Audio).GetConfig()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
@@ -37,29 +37,3 @@ func TestMPEG4VideoDecEncoder(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, []byte{0x01, 0x02, 0x03, 0x04}, byts)
|
require.Equal(t, []byte{0x01, 0x02, 0x03, 0x04}, byts)
|
||||||
}
|
}
|
||||||
|
|
||||||
func FuzzUnmarshalMPEG4Video(f *testing.F) {
|
|
||||||
f.Fuzz(func(
|
|
||||||
_ *testing.T,
|
|
||||||
a bool,
|
|
||||||
b string,
|
|
||||||
c bool,
|
|
||||||
d string,
|
|
||||||
) {
|
|
||||||
ma := map[string]string{}
|
|
||||||
|
|
||||||
if a {
|
|
||||||
ma["profile-level-id"] = b
|
|
||||||
}
|
|
||||||
|
|
||||||
if c {
|
|
||||||
ma["config"] = d
|
|
||||||
}
|
|
||||||
|
|
||||||
fo, err := Unmarshal("audio", 96, "MP4V-ES/90000", ma)
|
|
||||||
if err == nil {
|
|
||||||
fo.RTPMap()
|
|
||||||
fo.FMTP()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
@@ -34,27 +34,3 @@ func TestOpusDecEncoder(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, []byte{0x01, 0x02, 0x03, 0x04}, byts)
|
require.Equal(t, []byte{0x01, 0x02, 0x03, 0x04}, byts)
|
||||||
}
|
}
|
||||||
|
|
||||||
func FuzzUnmarshalOpus(f *testing.F) {
|
|
||||||
f.Add("48000/a")
|
|
||||||
|
|
||||||
f.Fuzz(func(_ *testing.T, a string) {
|
|
||||||
fo, err := Unmarshal("audio", 96, "Opus/"+a, nil)
|
|
||||||
if err == nil {
|
|
||||||
fo.RTPMap()
|
|
||||||
fo.FMTP()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func FuzzUnmarshalOpusMulti(f *testing.F) {
|
|
||||||
f.Add("48000/a")
|
|
||||||
|
|
||||||
f.Fuzz(func(_ *testing.T, a string) {
|
|
||||||
fo, err := Unmarshal("audio", 96, "multiopus/"+a, nil)
|
|
||||||
if err == nil {
|
|
||||||
fo.RTPMap()
|
|
||||||
fo.FMTP()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/034abdada9825c88
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/034abdada9825c88
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=video 0 AVP 96\na=rtpmap:96 AV1/90000\na=fmtp:96 tier=")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/0bf5831d94e96868
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/0bf5831d94e96868
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 0A")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/11a1645d8d3b471e
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/11a1645d8d3b471e
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 110\na=rtpmap:110 MP4A-LATM/\na=fmtp:110 Config=7001d01010")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/29c5602317dcc787
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/29c5602317dcc787
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=video 0 AVP 96\na=rtpmap:96 H264/90000\na=fmtp:96 sprop-pArAmeter-sets=,0")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/30b767478066fd0d
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/30b767478066fd0d
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 96\na=rtpmap:96 mpeg4-generiC/\na=fmtp:96 SiZeLength=A")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/3376b5ae75b1a24c
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/3376b5ae75b1a24c
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 96\na=rtpmap:96 mpeg4-generiC/\na=fmtp:96 IndeXLength=")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/36a3ed85efc6a1f7
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/36a3ed85efc6a1f7
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 96\na=rtpmap:96 multiopus//")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/3a376c3e00e61fd6
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/3a376c3e00e61fd6
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 96\na=rtpmap:96 VORBIS/0/0")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/3b20c0b4a9b513c9
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/3b20c0b4a9b513c9
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 96\na=rtpmap:96 MP4A-LATM/\na=fmtp:96 Cpresent=")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/3b281e7f1169e546
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/3b281e7f1169e546
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 110\na=rtpmap:110 MP4A-LATM/\na=fmtp:110 profile-level-id=")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/3b697a94739c061a
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/3b697a94739c061a
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 96\na=rtpmap:96 mpeg4-generiC/\na=fmtp:96 Config=")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/3b94c0a14997fa8e
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/3b94c0a14997fa8e
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=video 0 AVP 96\na=rtpmap:96 H264/90000\na=fmtp:96 pACketiZAtion-mode=")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/3d9078c9105f644c
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/3d9078c9105f644c
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=video 0 AVP 96\na=rtpmap:96 VP8/90000\na=fmtp:96 mAX-fs=")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/413db20183d4e979
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/413db20183d4e979
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 96\na=rtpmap:96 AC3/")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/423c64c5363f3801
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/423c64c5363f3801
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 96\na=rtpmap:96 mpeg4-generiC/")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/4995d0f1f765d676
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/4995d0f1f765d676
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 96\na=rtpmap:96 mpeg4-generiC/\na=fmtp:96 Config=0")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/4bef93ff7ecac01e
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/4bef93ff7ecac01e
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 97\na=rtpmap:97 L8/0/")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/4dce10144578f984
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/4dce10144578f984
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=video 0 AVP 96\na=rtpmap:96 H265/90000\na=fmtp:96 sprop-sps=")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/50616734ee54c407
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/50616734ee54c407
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=video 0 AVP 96\na=rtpmap:96 H264/90000\na=fmtp:96 sprop-pArAmeter-sets=0,")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/5188afc3e28a714a
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/5188afc3e28a714a
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 110\na=rtpmap:110 MP4A-LATM/\na=fmtp:110 BitrAte=")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/523c4bb794171e98
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/523c4bb794171e98
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 96\na=rtpmap:96 PCMA/")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/5f7d6603a814b3a2
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/5f7d6603a814b3a2
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=video 0 AVP 96\na=rtpmap:96 AV1/90000\na=fmtp:96 profile=")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/6577d661dc3e8ba2
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/6577d661dc3e8ba2
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=video 0 AVP 96\na=rtpmap:96 MP4V-ES/90000\na=fmtp:96 Config=")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/6900f94173f808ce
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/6900f94173f808ce
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=video 0 AVP 96\na=rtpmap:96 MP4V-ES/90000\na=fmtp:96 Config=0")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/6a7c1f14fe28275b
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/6a7c1f14fe28275b
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=video 0 AVP 96\na=rtpmap:96 VP8/90000\na=fmtp:96 mAX-fr=")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/76d640019c196cbc
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/76d640019c196cbc
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=video 0 AVP 96\na=rtpmap:96 MP4V-ES/90000\na=fmtp:96 profile-level-id=")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/87f8e3c82de38c3e
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/87f8e3c82de38c3e
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=video 0 AVP 96\na=rtpmap:96 H265/90000\na=fmtp:96 sprop-sps=0")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/8fd80eda6c0e2f13
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/8fd80eda6c0e2f13
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 96\na=rtpmap:96 opus//")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/91d47ea512cdda3c
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/91d47ea512cdda3c
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 97\na=rtpmap:97 L16/")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/92d2b72f40915528
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/92d2b72f40915528
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 96\na=rtpmap:96 VORBIS/")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/96307de7e97ac685
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/96307de7e97ac685
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=video 0 AVP 96\na=rtpmap:96 H265/90000\na=fmtp:96 sprop-vps=0")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/98200394850efb6f
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/98200394850efb6f
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 96\na=rtpmap:96 mpeg4-generiC/\na=fmtp:96 ConfiG=1010")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/9a290dfa7fa3b3c9
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/9a290dfa7fa3b3c9
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=video 0 AVP 96\na=fmtp:96 ;")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/9b47fdc0d0409444
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/9b47fdc0d0409444
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 96\na=rtpmap:96 VORBIS/0/")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/a0ceb61cbc690724
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/a0ceb61cbc690724
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 96\na=rtpmap:96 PCMA/0/")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/a9a010cfdac9dc47
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/a9a010cfdac9dc47
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 96\na=rtpmap:96 multiopus/48000/")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/afe443360ca786f8
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/afe443360ca786f8
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 96\na=rtpmap:96 mpeg4-generiC/\na=fmtp:96 profile-level-id=")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/b2f5e634fa2e6a4e
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/b2f5e634fa2e6a4e
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=video 0 RTP 96\na=rtpmap:96 H265/90000\na=fmtp:96 sprop-mAX-don-diff=")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/b3784ea9b177385f
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/b3784ea9b177385f
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 96\na=rtpmap:96 opus/")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/b6535f672b25662e
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/b6535f672b25662e
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=video 0 AVP 96\na=rtpmap:96 VP9/90000\na=fmtp:96 mAX-fs=")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/b654e108157859e4
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/b654e108157859e4
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=video 0 AVP 96\na=rtpmap:96 VP9/90000\na=fmtp:96 mAX-fr=")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/b986bb7d07c6f72a
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/b986bb7d07c6f72a
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 110\na=rtpmap:110 MP4A-LATM/\na=fmtp:110 Config=0")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/ba0dd5e9e3af186d
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/ba0dd5e9e3af186d
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 96\na=rtpmap:96 opus/48000/")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/bd1f3d6f9c9af61b
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/bd1f3d6f9c9af61b
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 96\na=rtpmap:96 VORBIS//")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/c0e9e8ca3ca76b11
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/c0e9e8ca3ca76b11
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=video 0 AVP 96\na=rtpmap:96 AV1/90000\na=fmtp:96 level-idX=")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/cf6df355fbd0f3ef
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/cf6df355fbd0f3ef
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 96\na=rtpmap:96 mpeg4-generiC/\na=fmtp:96 streAmtYpe=")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/d0c09b9869788237
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/d0c09b9869788237
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 96\na=rtpmap:96 VORBIS/0/0\na=fmtp:96 ConfigurAtion=0")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/da69831ba96d38ce
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/da69831ba96d38ce
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=video 0 AVP 96\na=rtpmap:96 H265/90000\na=fmtp:96 sprop-pps=0")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/ddde5138312670b5
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/ddde5138312670b5
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 96\na=rtpmap:96 multiopus/")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/de14ef8edfc9fd56
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/de14ef8edfc9fd56
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 96\na=rtpmap:96 AC3/0/A")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/e221a08a9ff51e3b
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/e221a08a9ff51e3b
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 96\na=fmtp:96 0")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/e4a8f6640dba9776
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/e4a8f6640dba9776
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=video 0 AVP 96\na=rtpmap:96 H265/90000\na=fmtp:96 sprop-pps=")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/e4d4225b3bafe927
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/e4d4225b3bafe927
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 96\na=rtpmap:96 mpeg4-generiC/\na=fmtp:96 mode=")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/e5541bd80eef8c03
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/e5541bd80eef8c03
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 96\na=rtpmap:96 mpeg4-generiC/\na=fmtp:96 IndeXDeltALength=")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/e5ebd400c30d4ee0
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/e5ebd400c30d4ee0
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=video 0 AVP 96\na=rtpmap:96 VP9/90000\na=fmtp:96 profile-id=")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/f076a0e487d5c86b
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/f076a0e487d5c86b
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=audio 0 AVP 110\na=rtpmap:110 MP4A-LATM/\na=fmtp:110 Config=")
|
2
pkg/format/testdata/fuzz/FuzzUnmarshal/f64c2ab9f4956c76
vendored
Normal file
2
pkg/format/testdata/fuzz/FuzzUnmarshal/f64c2ab9f4956c76
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("m=video 0 AVP 96\na=rtpmap:96 /")
|
@@ -1,7 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string(" \x17T\x9b")
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
@@ -1,7 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("7XXB")
|
|
@@ -1,7 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
@@ -1,5 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
@@ -1,5 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
bool(true)
|
|
||||||
string("1,")
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
@@ -1,5 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
bool(true)
|
|
||||||
string(",0")
|
|
||||||
bool(true)
|
|
||||||
string("0")
|
|
@@ -1,5 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
bool(false)
|
|
||||||
string("6")
|
|
||||||
bool(true)
|
|
||||||
string("\v\xd7F?O\xc1\x86\t")
|
|
@@ -1,5 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
bool(false)
|
|
||||||
string("\xd9\xf3fdž\xd7\xf6\x1d6")
|
|
||||||
bool(true)
|
|
||||||
string("\v\xd7F?O\xc1\x86\t")
|
|
@@ -1,5 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
@@ -1,5 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
bool(true)
|
|
||||||
string("0")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
@@ -1,5 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
bool(false)
|
|
||||||
string("6")
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
@@ -1,2 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
string("0/")
|
|
@@ -1,2 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
string("A")
|
|
@@ -1,15 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
@@ -1,15 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
@@ -1,15 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
bool(true)
|
|
||||||
string("wB\xaa(A\x0e}")
|
|
||||||
bool(true)
|
|
||||||
string("\xe4o\xe0^\xae\t")
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("D")
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
@@ -1,15 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
@@ -1,15 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
@@ -1,15 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
||||||
bool(true)
|
|
||||||
string("u7\xae")
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
@@ -1,15 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
@@ -1,15 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
@@ -1,15 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
@@ -1,15 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
bool(false)
|
|
||||||
string("0")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("0")
|
|
||||||
bool(true)
|
|
||||||
string("1010")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
@@ -1,13 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
@@ -1,13 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("0")
|
|
@@ -1,13 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
@@ -1,13 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(true)
|
|
||||||
string("0")
|
|
@@ -1,13 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(false)
|
|
||||||
string("0")
|
|
@@ -1,13 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
bool(false)
|
|
||||||
string("0")
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
||||||
bool(true)
|
|
||||||
string("0")
|
|
||||||
bool(false)
|
|
||||||
string("0")
|
|
||||||
bool(true)
|
|
||||||
string("0")
|
|
@@ -1,13 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
bool(false)
|
|
||||||
string("0")
|
|
||||||
bool(true)
|
|
||||||
string("0")
|
|
||||||
bool(true)
|
|
||||||
string("0")
|
|
||||||
bool(true)
|
|
||||||
string("70102010")
|
|
||||||
bool(true)
|
|
||||||
string("0")
|
|
||||||
bool(true)
|
|
||||||
string("0")
|
|
@@ -1,13 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
bool(false)
|
|
||||||
string("")
|
|
||||||
bool(true)
|
|
||||||
string("0")
|
|
||||||
bool(false)
|
|
||||||
string("0")
|
|
||||||
bool(true)
|
|
||||||
string("70002010")
|
|
||||||
bool(true)
|
|
||||||
string("0")
|
|
||||||
bool(true)
|
|
||||||
string("0")
|
|
@@ -1,5 +0,0 @@
|
|||||||
go test fuzz v1
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
||||||
bool(true)
|
|
||||||
string("")
|
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user