simplify format.Unmarshal; improve tests (#631)

This commit is contained in:
Alessandro Ros
2024-10-09 16:21:01 +02:00
committed by GitHub
parent 605f3e4972
commit 1ca217ae3a
117 changed files with 594 additions and 1242 deletions

View File

@@ -4,7 +4,6 @@ package description
import (
"fmt"
"reflect"
"regexp"
"sort"
"strconv"
"strings"
@@ -16,26 +15,6 @@ import (
"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 {
for _, attr := range attributes {
if attr.Key == key {
@@ -54,45 +33,6 @@ func isBackChannel(attributes []psdp.Attribute) bool {
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 {
keys := make([]string, len(fmtp))
i := 0
@@ -155,19 +95,9 @@ func (m *Media) Unmarshal(md *psdp.MediaDescription) error {
m.Control = getAttribute(md.Attributes, "control")
m.Formats = nil
for _, payloadType := range md.MediaName.Formats {
payloadType = replaceSmartPayloadType(payloadType, md.Attributes)
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)
format, err := format.Unmarshal(md, payloadType)
if err != nil {
return err
}

View File

@@ -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",
"v=0\r\n" +

View File

@@ -33,35 +33,3 @@ func TestAV1DecEncoder(t *testing.T) {
require.NoError(t, err)
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()
}
})
}

View File

@@ -2,11 +2,48 @@
package format
import (
"regexp"
"strconv"
"strings"
"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) {
parts2 := strings.SplitN(rtpMap, "/", 2)
if len(parts2) != 2 {
@@ -16,6 +53,31 @@ func getCodecAndClock(rtpMap string) (string, string) {
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 {
mediaType string
payloadType uint8
@@ -50,7 +112,19 @@ type Format interface {
}
// 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)
format := func() Format {
@@ -148,7 +222,7 @@ func Unmarshal(mediaType string, payloadType uint8, rtpMap string, fmtp map[stri
return &Generic{}
}()
err := format.unmarshal(&unmarshalContext{
err = format.unmarshal(&unmarshalContext{
mediaType: mediaType,
payloadType: payloadType,
clock: clock,

File diff suppressed because it is too large Load Diff

View File

@@ -62,32 +62,6 @@ func TestH264DecEncoder(t *testing.T) {
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) {
f.Fuzz(func(t *testing.T, b []byte) {
(&H264{}).PTSEqualsDTS(&rtp.Packet{Payload: b})

View File

@@ -71,40 +71,6 @@ func TestH265DecEncoder(t *testing.T) {
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) {
f.Fuzz(func(t *testing.T, b []byte) {
(&H265{}).PTSEqualsDTS(&rtp.Packet{Payload: b})

View File

@@ -41,13 +41,3 @@ func TestLPCMDecEncoder(t *testing.T) {
require.NoError(t, err)
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()
}
})
}

View File

@@ -124,109 +124,3 @@ func TestMPEG4AudioDecEncoder(t *testing.T) {
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()
}
})
}

View File

@@ -37,29 +37,3 @@ func TestMPEG4VideoDecEncoder(t *testing.T) {
require.NoError(t, err)
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()
}
})
}

View File

@@ -34,27 +34,3 @@ func TestOpusDecEncoder(t *testing.T) {
require.NoError(t, err)
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()
}
})
}

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=video 0 AVP 96\na=rtpmap:96 AV1/90000\na=fmtp:96 tier=")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=audio 0 AVP 0A")

View 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")

View 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")

View 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")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=audio 0 AVP 96\na=rtpmap:96 mpeg4-generiC/\na=fmtp:96 IndeXLength=")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=audio 0 AVP 96\na=rtpmap:96 multiopus//")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=audio 0 AVP 96\na=rtpmap:96 VORBIS/0/0")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=audio 0 AVP 96\na=rtpmap:96 MP4A-LATM/\na=fmtp:96 Cpresent=")

View 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=")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=audio 0 AVP 96\na=rtpmap:96 mpeg4-generiC/\na=fmtp:96 Config=")

View 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=")

View 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=")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=audio 0 AVP 96\na=rtpmap:96 AC3/")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=audio 0 AVP 96\na=rtpmap:96 mpeg4-generiC/")

View 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")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=audio 0 AVP 97\na=rtpmap:97 L8/0/")

View 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=")

View 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,")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=audio 0 AVP 110\na=rtpmap:110 MP4A-LATM/\na=fmtp:110 BitrAte=")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=audio 0 AVP 96\na=rtpmap:96 PCMA/")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=video 0 AVP 96\na=rtpmap:96 AV1/90000\na=fmtp:96 profile=")

View 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=")

View 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")

View 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=")

View 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=")

View 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")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=audio 0 AVP 96\na=rtpmap:96 opus//")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=audio 0 AVP 97\na=rtpmap:97 L16/")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=audio 0 AVP 96\na=rtpmap:96 VORBIS/")

View 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")

View 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")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=video 0 AVP 96\na=fmtp:96 ;")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=audio 0 AVP 96\na=rtpmap:96 VORBIS/0/")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=audio 0 AVP 96\na=rtpmap:96 PCMA/0/")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=audio 0 AVP 96\na=rtpmap:96 multiopus/48000/")

View 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=")

View 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=")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=audio 0 AVP 96\na=rtpmap:96 opus/")

View 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=")

View 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=")

View 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")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=audio 0 AVP 96\na=rtpmap:96 opus/48000/")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=audio 0 AVP 96\na=rtpmap:96 VORBIS//")

View 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=")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=audio 0 AVP 96\na=rtpmap:96 mpeg4-generiC/\na=fmtp:96 streAmtYpe=")

View 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")

View 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")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=audio 0 AVP 96\na=rtpmap:96 multiopus/")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=audio 0 AVP 96\na=rtpmap:96 AC3/0/A")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=audio 0 AVP 96\na=fmtp:96 0")

View 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=")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=audio 0 AVP 96\na=rtpmap:96 mpeg4-generiC/\na=fmtp:96 mode=")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=audio 0 AVP 96\na=rtpmap:96 mpeg4-generiC/\na=fmtp:96 IndeXDeltALength=")

View 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=")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=audio 0 AVP 110\na=rtpmap:110 MP4A-LATM/\na=fmtp:110 Config=")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
string("m=video 0 AVP 96\na=rtpmap:96 /")

View File

@@ -1,7 +0,0 @@
go test fuzz v1
bool(true)
string("")
bool(false)
string(" \x17T\x9b")
bool(true)
string("")

View File

@@ -1,7 +0,0 @@
go test fuzz v1
bool(true)
string("")
bool(true)
string("")
bool(false)
string("7XXB")

View File

@@ -1,7 +0,0 @@
go test fuzz v1
bool(true)
string("")
bool(false)
string("")
bool(false)
string("")

View File

@@ -1,5 +0,0 @@
go test fuzz v1
bool(false)
string("")
bool(true)
string("")

View File

@@ -1,5 +0,0 @@
go test fuzz v1
bool(true)
string("1,")
bool(true)
string("")

View File

@@ -1,5 +0,0 @@
go test fuzz v1
bool(true)
string(",0")
bool(true)
string("0")

View File

@@ -1,5 +0,0 @@
go test fuzz v1
bool(false)
string("6")
bool(true)
string("\v\xd7F?O\xc1\x86\t")

View File

@@ -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")

View File

@@ -1,5 +0,0 @@
go test fuzz v1
bool(false)
string("")
bool(true)
string("")

View File

@@ -1,5 +0,0 @@
go test fuzz v1
bool(true)
string("0")
bool(false)
string("")

View File

@@ -1,5 +0,0 @@
go test fuzz v1
bool(false)
string("6")
bool(true)
string("")

View File

@@ -1,2 +0,0 @@
go test fuzz v1
string("0/")

View File

@@ -1,2 +0,0 @@
go test fuzz v1
string("A")

View File

@@ -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("")

View File

@@ -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("")

View File

@@ -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("")

View File

@@ -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("")

View File

@@ -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("")

View File

@@ -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("")

View File

@@ -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("")

View File

@@ -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("")

View File

@@ -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("")

View File

@@ -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("")

View File

@@ -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("")

View File

@@ -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")

View File

@@ -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("")

View File

@@ -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")

View File

@@ -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")

View File

@@ -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")

View File

@@ -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")

View File

@@ -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")

View File

@@ -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