feat(transcode): add a generic transcoding package for encoding/decoding/caching

This commit is contained in:
sentriz
2022-03-10 00:42:52 +00:00
parent fd211d706a
commit 165904c2bb
25 changed files with 713 additions and 388 deletions

View File

@@ -72,10 +72,11 @@ type Genre struct {
// AudioFile is used to avoid some duplication in handlers_raw.go
// between Track and Podcast
type AudioFile interface {
AudioFilename() string
Ext() string
MIME() string
AudioFilename() string
AudioBitrate() int
AudioLength() int
}
type Track struct {
@@ -100,6 +101,9 @@ type Track struct {
TagBrainzID string `sql:"default: null"`
}
func (t *Track) AudioLength() int { return t.Length }
func (t *Track) AudioBitrate() int { return t.Bitrate }
func (t *Track) SID() *specid.ID {
return &specid.ID{Type: specid.Track, Value: t.ID}
}
@@ -124,10 +128,6 @@ func (t *Track) AudioFilename() string {
return t.Filename
}
func (t *Track) AudioBitrate() int {
return t.Bitrate
}
func (t *Track) MIME() string {
v, _ := mime.FromExtension(t.Ext())
return v
@@ -364,6 +364,9 @@ type PodcastEpisode struct {
Error string
}
func (pe *PodcastEpisode) AudioLength() int { return pe.Length }
func (pe *PodcastEpisode) AudioBitrate() int { return pe.Bitrate }
func (pe *PodcastEpisode) SID() *specid.ID {
return &specid.ID{Type: specid.PodcastEpisode, Value: pe.ID}
}
@@ -385,10 +388,6 @@ func (pe *PodcastEpisode) MIME() string {
return v
}
func (pe *PodcastEpisode) AudioBitrate() int {
return pe.Bitrate
}
type Bookmark struct {
ID int `gorm:"primary_key"`
User *User