diff --git a/engine/media_streamer.go b/engine/media_streamer.go index e727488f1..ce25e59ea 100644 --- a/engine/media_streamer.go +++ b/engine/media_streamer.go @@ -11,7 +11,7 @@ import ( "github.com/deluan/navidrome/conf" "github.com/deluan/navidrome/consts" - "github.com/deluan/navidrome/engine/ffmpeg" + "github.com/deluan/navidrome/engine/transcoder" "github.com/deluan/navidrome/log" "github.com/deluan/navidrome/model" "github.com/deluan/navidrome/utils" @@ -22,13 +22,13 @@ type MediaStreamer interface { NewStream(ctx context.Context, id string, maxBitRate int, format string) (*Stream, error) } -func NewMediaStreamer(ds model.DataStore, ffm ffmpeg.FFmpeg, cache fscache.Cache) MediaStreamer { +func NewMediaStreamer(ds model.DataStore, ffm transcoder.Transcoder, cache fscache.Cache) MediaStreamer { return &mediaStreamer{ds: ds, ffm: ffm, cache: cache} } type mediaStreamer struct { ds model.DataStore - ffm ffmpeg.FFmpeg + ffm transcoder.Transcoder cache fscache.Cache } @@ -66,7 +66,7 @@ func (ms *mediaStreamer) NewStream(ctx context.Context, id string, maxBitRate in // If this is a brand new transcoding request, not in the cache, start transcoding if w != nil { log.Trace(ctx, "Cache miss. Starting new transcoding session", "id", mf.ID) - out, err := ms.ffm.StartTranscoding(ctx, mf.Path, bitRate, format) + out, err := ms.ffm.Start(ctx, mf.Path, bitRate, format) if err != nil { log.Error(ctx, "Error starting transcoder", "id", mf.ID, err) return nil, os.ErrInvalid diff --git a/engine/media_streamer_test.go b/engine/media_streamer_test.go index f6887d29e..d7a19d3b9 100644 --- a/engine/media_streamer_test.go +++ b/engine/media_streamer_test.go @@ -78,7 +78,7 @@ type fakeFFmpeg struct { closed bool } -func (ff *fakeFFmpeg) StartTranscoding(ctx context.Context, path string, maxBitRate int, format string) (f io.ReadCloser, err error) { +func (ff *fakeFFmpeg) Start(ctx context.Context, path string, maxBitRate int, format string) (f io.ReadCloser, err error) { ff.r = strings.NewReader(ff.Data) return ff, nil } diff --git a/engine/ffmpeg/ffmpeg.go b/engine/transcoder/ffmpeg.go similarity index 56% rename from engine/ffmpeg/ffmpeg.go rename to engine/transcoder/ffmpeg.go index dc5143b50..00a83a7e3 100644 --- a/engine/ffmpeg/ffmpeg.go +++ b/engine/transcoder/ffmpeg.go @@ -1,4 +1,4 @@ -package ffmpeg +package transcoder import ( "context" @@ -12,30 +12,30 @@ import ( "github.com/deluan/navidrome/log" ) -type FFmpeg interface { - StartTranscoding(ctx context.Context, path string, maxBitRate int, format string) (f io.ReadCloser, err error) +type Transcoder interface { + Start(ctx context.Context, path string, maxBitRate int, format string) (f io.ReadCloser, err error) } -func New() FFmpeg { +func New() Transcoder { return &ffmpeg{} } type ffmpeg struct{} -func (ff *ffmpeg) StartTranscoding(ctx context.Context, path string, maxBitRate int, format string) (f io.ReadCloser, err error) { - cmdLine, args := createTranscodeCommand(path, maxBitRate, format) +func (ff *ffmpeg) Start(ctx context.Context, path string, maxBitRate int, format string) (f io.ReadCloser, err error) { + arg0, args := createTranscodeCommand(path, maxBitRate, format) - log.Trace(ctx, "Executing ffmpeg command", "arg0", cmdLine, "args", args) - cmd := exec.Command(cmdLine, args...) + log.Trace(ctx, "Executing ffmpeg command", "cmd", arg0, "args", args) + cmd := exec.Command(arg0, args...) cmd.Stderr = os.Stderr if f, err = cmd.StdoutPipe(); err != nil { - return f, err + return } if err = cmd.Start(); err != nil { - return f, err + return } go cmd.Wait() // prevent zombies - return f, err + return } func createTranscodeCommand(path string, maxBitRate int, format string) (string, []string) { diff --git a/engine/ffmpeg/ffmpeg_test.go b/engine/transcoder/ffmpeg_test.go similarity index 88% rename from engine/ffmpeg/ffmpeg_test.go rename to engine/transcoder/ffmpeg_test.go index 7f841360d..b6231c8b2 100644 --- a/engine/ffmpeg/ffmpeg_test.go +++ b/engine/transcoder/ffmpeg_test.go @@ -1,4 +1,4 @@ -package ffmpeg +package transcoder import ( "testing" @@ -10,11 +10,11 @@ import ( . "github.com/onsi/gomega" ) -func TestFFmpeg(t *testing.T) { +func TestTranscoder(t *testing.T) { tests.Init(t, false) log.SetLevel(log.LevelCritical) RegisterFailHandler(Fail) - RunSpecs(t, "FFmpeg Suite") + RunSpecs(t, "Transcoder Suite") } var _ = Describe("createTranscodeCommand", func() { diff --git a/engine/wire_providers.go b/engine/wire_providers.go index 5bb1f5197..547e19bbd 100644 --- a/engine/wire_providers.go +++ b/engine/wire_providers.go @@ -1,7 +1,7 @@ package engine import ( - "github.com/deluan/navidrome/engine/ffmpeg" + "github.com/deluan/navidrome/engine/transcoder" "github.com/google/wire" ) @@ -16,6 +16,6 @@ var Set = wire.NewSet( NewNowPlayingRepository, NewUsers, NewMediaStreamer, - ffmpeg.New, + transcoder.New, NewTranscodingCache, ) diff --git a/wire_gen.go b/wire_gen.go index b828cc046..63e0d7f7b 100644 --- a/wire_gen.go +++ b/wire_gen.go @@ -7,7 +7,7 @@ package main import ( "github.com/deluan/navidrome/engine" - "github.com/deluan/navidrome/engine/ffmpeg" + "github.com/deluan/navidrome/engine/transcoder" "github.com/deluan/navidrome/persistence" "github.com/deluan/navidrome/scanner" "github.com/deluan/navidrome/server" @@ -42,12 +42,12 @@ func CreateSubsonicAPIRouter() (*subsonic.Router, error) { ratings := engine.NewRatings(dataStore) scrobbler := engine.NewScrobbler(dataStore, nowPlayingRepository) search := engine.NewSearch(dataStore) - fFmpeg := ffmpeg.New() + transcoderTranscoder := transcoder.New() cache, err := engine.NewTranscodingCache() if err != nil { return nil, err } - mediaStreamer := engine.NewMediaStreamer(dataStore, fFmpeg, cache) + mediaStreamer := engine.NewMediaStreamer(dataStore, transcoderTranscoder, cache) router := subsonic.New(browser, cover, listGenerator, users, playlists, ratings, scrobbler, search, mediaStreamer) return router, nil }