Browse Source

Get rid of obviously bad performance in the slice of segments and reference each in a map instead

pull/23/head
Gabe Kangas 5 years ago
parent
commit
7d5104d581
  1. 21
      playlistMonitor.go

21
playlistMonitor.go

@ -22,16 +22,17 @@ type Segment struct {
type Variant struct { type Variant struct {
VariantIndex int VariantIndex int
Segments []Segment Segments map[string]*Segment
} }
func (v *Variant) getSegmentForFilename(filename string) *Segment { func (v *Variant) getSegmentForFilename(filename string) *Segment {
for _, segment := range v.Segments { return v.Segments[filename]
if path.Base(segment.FullDiskPath) == filename { // for _, segment := range v.Segments {
return &segment // if path.Base(segment.FullDiskPath) == filename {
} // return &segment
} // }
return nil // }
// return nil
} }
func getSegmentFromPath(fullDiskPath string) Segment { func getSegmentFromPath(fullDiskPath string) Segment {
@ -73,10 +74,10 @@ func monitorVideoContent(pathToMonitor string, configuration Config, storage Chu
variants = make([]Variant, len(configuration.VideoSettings.StreamQualities)) variants = make([]Variant, len(configuration.VideoSettings.StreamQualities))
if len(configuration.VideoSettings.StreamQualities) > 0 && !configuration.VideoSettings.EnablePassthrough { if len(configuration.VideoSettings.StreamQualities) > 0 && !configuration.VideoSettings.EnablePassthrough {
for index := range variants { for index := range variants {
variants[index] = Variant{index, make([]Segment, 0)} variants[index] = Variant{index, make(map[string]*Segment)}
} }
} else { } else {
variants[0] = Variant{0, make([]Segment, 0)} variants[0] = Variant{0, make(map[string]*Segment)}
} }
// log.Printf("Using directory %s for storing files with %d variants...\n", pathToMonitor, len(variants)) // log.Printf("Using directory %s for storing files with %d variants...\n", pathToMonitor, len(variants))
@ -118,7 +119,7 @@ func monitorVideoContent(pathToMonitor string, configuration Config, storage Chu
segment.RemoteID = newObjectPath segment.RemoteID = newObjectPath
// fmt.Println("Uploaded", segment.RelativeUploadPath, "as", newObjectPath) // fmt.Println("Uploaded", segment.RelativeUploadPath, "as", newObjectPath)
variants[segment.VariantIndex].Segments = append(variants[segment.VariantIndex].Segments, segment) variants[segment.VariantIndex].Segments[filepath.Base(segment.RelativeUploadPath)] = &segment
// Force a variant's playlist to be updated after a file is uploaded. // Force a variant's playlist to be updated after a file is uploaded.
associatedVariantPlaylist := strings.ReplaceAll(event.Path, path.Base(event.Path), "stream.m3u8") associatedVariantPlaylist := strings.ReplaceAll(event.Path, path.Base(event.Path), "stream.m3u8")

Loading…
Cancel
Save