Skip to content
Merged
Show file tree
Hide file tree
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
18 changes: 18 additions & 0 deletions mpd/events.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package mpd

import "encoding/xml"

type EventStream struct {
XMLName xml.Name `xml:"EventStream"`
SchemeIDURI *string `xml:"schemeIdUri,attr"`
Value *string `xml:"value,attr,omitempty"`
Timescale *int64 `xml:"timescale,attr"`
Events []Event `xml:"Event,omitempty"`
}

type Event struct {
XMLName xml.Name `xml:"Event"`
ID *string `xml:"id,attr,omitempty"`
PresentationTime *int64 `xml:"presentationTime,attr,omitempty"`
Duration *int64 `xml:"duration,attr,omitempty"`
}
66 changes: 66 additions & 0 deletions mpd/events_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package mpd

import (
"testing"

"github.com/zencoder/go-dash/helpers/ptrs"
"github.com/zencoder/go-dash/helpers/require"
"github.com/zencoder/go-dash/helpers/testfixtures"
)

const (
VALID_EVENT_STREAM_SCHEME_ID_URI = "urn:example:eventstream"
VALID_EVENT_STREAM_VALUE = "eventstream"
VALID_EVENT_STREAM_TIMESCALE int64 = 10
)

func newEventStreamMPD() *MPD {
m := NewDynamicMPD(
DASH_PROFILE_LIVE,
VALID_AVAILABILITY_START_TIME,
VALID_MIN_BUFFER_TIME,
)
p := m.GetCurrentPeriod()

es := EventStream{
SchemeIDURI: ptrs.Strptr(VALID_EVENT_STREAM_SCHEME_ID_URI),
Value: ptrs.Strptr(VALID_EVENT_STREAM_VALUE),
Timescale: ptrs.Int64ptr(VALID_EVENT_STREAM_TIMESCALE),
}

e0 := Event{
ID: ptrs.Strptr("event-0"),
PresentationTime: ptrs.Int64ptr(100),
Duration: ptrs.Int64ptr(50),
}

e1 := Event{
ID: ptrs.Strptr("event-1"),
PresentationTime: ptrs.Int64ptr(200),
Duration: ptrs.Int64ptr(50),
}

es.Events = append(es.Events, e0, e1)
p.EventStreams = append(p.EventStreams, es)

return m
}

func TestEventStreamsWriteToString(t *testing.T) {
m := newEventStreamMPD()

got, err := m.WriteToString()
require.NoError(t, err)

testfixtures.CompareFixture(t, "fixtures/events.mpd", got)
}

func TestReadEventStreams(t *testing.T) {
m, err := ReadFromFile("fixtures/events.mpd")
require.NoError(t, err)

got, err := m.WriteToString()
require.NoError(t, err)

testfixtures.CompareFixture(t, "fixtures/events.mpd", got)
}
10 changes: 10 additions & 0 deletions mpd/fixtures/events.mpd
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" profiles="urn:mpeg:dash:profile:isoff-live:2011" type="dynamic" minBufferTime="PT1.97S" availabilityStartTime="1970-01-01T00:00:00Z">
<Period>
<EventStream schemeIdUri="urn:example:eventstream" value="eventstream" timescale="10">
<Event id="event-0" presentationTime="100" duration="50"></Event>
<Event id="event-1" presentationTime="200" duration="50"></Event>
</EventStream>
</Period>
<UTCTiming></UTCTiming>
</MPD>
1 change: 1 addition & 0 deletions mpd/mpd.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ type Period struct {
SegmentList *SegmentList `xml:"SegmentList,omitempty"`
SegmentTemplate *SegmentTemplate `xml:"SegmentTemplate,omitempty"`
AdaptationSets []*AdaptationSet `xml:"AdaptationSet,omitempty"`
EventStreams []EventStream `xml:"EventStream,omitempty"`
}

type DescriptorType struct {
Expand Down