♻️ Convert SelectAudioStream into a method of Probe

This commit is contained in:
Dan Jones 2023-09-04 09:09:49 -05:00
commit d87422488c
2 changed files with 20 additions and 21 deletions

View file

@ -9,7 +9,6 @@ import (
"codeberg.org/danjones000/strip-beats/app" "codeberg.org/danjones000/strip-beats/app"
"codeberg.org/danjones000/strip-beats/input/boolean" "codeberg.org/danjones000/strip-beats/input/boolean"
"codeberg.org/danjones000/strip-beats/media"
"github.com/spf13/cobra" "github.com/spf13/cobra"
) )
@ -25,8 +24,8 @@ var rootCmd = &cobra.Command{
// media.Watch(out.Format.Path) // media.Watch(out.Format.Path)
show := boolean.Choose("Show stream?") show := boolean.Choose("Show stream?")
if show { if show {
stream := media.SelectAudioStream(out) stream := out.WantedAudioStream()
fmt.Printf("Stream %d of %s: %+v\n", stream, out.Format.Path, out.Streams[stream]) fmt.Printf("Stream %d of %s: %+v\n", stream.Index, out.Format.Path, stream)
} }
}, },
} }

View file

@ -62,6 +62,24 @@ func (p Probe) GetFirstAcceptableAudio() *Stream {
return sts[0] return sts[0]
} }
func (pr Probe) WantedAudioStream() *Stream {
count := pr.GetAudioCount()
if count < 1 {
return nil
}
if count == 1 {
return pr.GetFirstAudio()
}
pref := pr.GetFirstAcceptableAudio()
if pref != nil {
return pref
}
return pr.GetFirstAudio()
}
type Stream struct { type Stream struct {
Index int Index int
CodecName string `json:"codec_name"` CodecName string `json:"codec_name"`
@ -130,21 +148,3 @@ func ProbeFile(path string) Probe {
} }
return ret return ret
} }
func SelectAudioStream(pr Probe) int {
count := pr.GetAudioCount()
if count < 1 {
return -1
}
if count == 1 {
return pr.GetFirstAudio().Index
}
pref := pr.GetFirstAcceptableAudio()
if pref != nil {
return pref.Index
}
return pr.GetFirstAudio().Index
}