From 84f7cb40698b17ccb99b425bbe55c6e57048659f Mon Sep 17 00:00:00 2001 From: Martyn Ranyard Date: Sat, 12 Feb 2022 17:30:42 +0100 Subject: [PATCH] Move the stuff to the widget, not the player --- pkg/bufferedvid/bufferedvid.go | 46 +++++++++++++++++----------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/pkg/bufferedvid/bufferedvid.go b/pkg/bufferedvid/bufferedvid.go index d83d761..1db9c08 100644 --- a/pkg/bufferedvid/bufferedvid.go +++ b/pkg/bufferedvid/bufferedvid.go @@ -41,16 +41,15 @@ const ( // player holds all the data // necessary for playing video. type player struct { - pix *image.NRGBA - ticker <-chan time.Time - errs <-chan error - frameBuffer <-chan *image.RGBA - audioBuffer <-chan [2]float64 - last time.Time - fps int - paused bool - frameCount int64 - audioProcessor func([2]float64) + pix *image.NRGBA + ticker <-chan time.Time + errs <-chan error + frameBuffer <-chan *image.RGBA + audioBuffer <-chan [2]float64 + last time.Time + fps int + paused bool + frameCount int64 } // readVideoAndAudio reads video and audio frames @@ -179,18 +178,6 @@ func (p *player) readVideoAndAudio(media *reisen.Media) (<-chan *image.RGBA, <-c return frameBuffer, sampleBuffer, errs, nil } -func (p *player) SetAudioProcessorFunc(f func(data [2]float64)) { - p.audioProcessor = f -} - -func (p *player) processAudioFrame(data [2]float64) { - if p.audioProcessor != nil { - p.audioProcessor(data) - } else { - _ = data - } -} - // Starts reading samples and frames // of the media file. func (p *player) open(fname string) error { @@ -271,6 +258,7 @@ type BufferedVidPlayback struct { allFrames []image.RGBA bufferFilling bool paused bool + audioProcessor func([2]float64) } func NewBufferedVidPlayback() *BufferedVidPlayback { @@ -309,7 +297,7 @@ func (w *BufferedVidPlayback) Play() { w.fpsTimer.Reset(frameDuration) go func(p player) { for { - p.processAudioFrame(<-w.playerStruct.audioBuffer) + w.processAudioFrame(<-w.playerStruct.audioBuffer) } }(w.playerStruct) w.FillBuffer() @@ -373,6 +361,18 @@ func (w *BufferedVidPlayback) CreateRenderer() fyne.WidgetRenderer { return newBufferedVidPlaybackRenderer(w) } +func (w *BufferedVidPlayback) SetAudioProcessorFunc(f func(data [2]float64)) { + w.audioProcessor = f +} + +func (w *BufferedVidPlayback) processAudioFrame(data [2]float64) { + if w.audioProcessor != nil { + w.audioProcessor(data) + } else { + _ = data + } +} + type bufferedVidPlaybackRenderer struct { bufferedVidPlayback *BufferedVidPlayback currentframe *canvas.Raster