diff options
Diffstat (limited to 'rhimport/converter.go')
-rw-r--r-- | rhimport/converter.go | 104 |
1 files changed, 52 insertions, 52 deletions
diff --git a/rhimport/converter.go b/rhimport/converter.go index e53da9c..d9ac263 100644 --- a/rhimport/converter.go +++ b/rhimport/converter.go @@ -37,31 +37,31 @@ import ( "strings" ) -type FetchConverter interface { +type fetchConverter interface { io.WriteCloser GetResult(ctx *Context, res *Result) (result string, err error) } -type FetchConverterResult struct { +type fetchConverterResult struct { output string err error loudnessCorr float64 } -func NewFetchConverter(ctx *Context, filename string, metadata map[string]string) (FetchConverter, string, error) { +func newFetchConverter(ctx *Context, filename string, metadata map[string]string) (fetchConverter, string, error) { switch ctx.FetchConverter { case "null": // no support for loudness evaluation - leave normalization to Rivendell - return NewNullFetchConverter(ctx, filename, metadata) + return newNullFetchConverter(ctx, filename, metadata) case "ffmpeg": // no support for loudness evaluation - leave normalization to Rivendell - return NewFFMpegFetchConverter(ctx, filename, metadata) + return newFFMpegFetchConverter(ctx, filename, metadata) case "bs1770": ctx.NormalizationLevel = 0 // disable Rivendell normalization - return NewBS1770FetchConverter(ctx, filename, metadata) + return newBS1770FetchConverter(ctx, filename, metadata) case "ffmpeg-bs1770": ctx.NormalizationLevel = 0 // disable Rivendell normalization - return NewFFMpegBS1770FetchConverter(ctx, filename, metadata) + return newFFMpegBS1770FetchConverter(ctx, filename, metadata) } return nil, "", errors.New("unknown fetch converter type: " + ctx.FetchConverter) } @@ -70,27 +70,27 @@ func NewFetchConverter(ctx *Context, filename string, metadata map[string]string // NUll Converter aka File Writer // -type NullFetchConverter struct { +type nullFetchConverter struct { file *os.File } -func NewNullFetchConverter(ctx *Context, filename string, metadata map[string]string) (n *NullFetchConverter, newFilename string, err error) { - n = &NullFetchConverter{} +func newNullFetchConverter(ctx *Context, filename string, metadata map[string]string) (n *nullFetchConverter, newFilename string, err error) { + n = &nullFetchConverter{} newFilename = filepath.Dir(filename) + "/conv-null" + filepath.Ext(filename) ctx.stdlog.Printf("null-converter: opening file '%s' -> '%s'", filename, newFilename) n.file, err = os.OpenFile(newFilename, os.O_WRONLY|os.O_CREATE|os.O_EXCL, 0600) return } -func (c *NullFetchConverter) Write(p []byte) (n int, err error) { +func (c *nullFetchConverter) Write(p []byte) (n int, err error) { return c.file.Write(p) } -func (c *NullFetchConverter) Close() (err error) { +func (c *nullFetchConverter) Close() (err error) { return c.file.Close() } -func (c *NullFetchConverter) GetResult(ctx *Context, res *Result) (result string, err error) { +func (c *nullFetchConverter) GetResult(ctx *Context, res *Result) (result string, err error) { return "", nil } @@ -98,14 +98,14 @@ func (c *NullFetchConverter) GetResult(ctx *Context, res *Result) (result string // FFMpeg Converter: converts all files into flac // -type FFMpegFetchConverter struct { +type ffmpegFetchConverter struct { cmd *exec.Cmd pipe io.WriteCloser - result chan FetchConverterResult + result chan fetchConverterResult } -func NewFFMpegFetchConverter(ctx *Context, filename string, metadata map[string]string) (ff *FFMpegFetchConverter, filenameFlac string, err error) { - ff = &FFMpegFetchConverter{} +func newFFMpegFetchConverter(ctx *Context, filename string, metadata map[string]string) (ff *ffmpegFetchConverter, filenameFlac string, err error) { + ff = &ffmpegFetchConverter{} filenameFlac = filepath.Dir(filename) + "/conv-ffmpeg.flac" ctx.stdlog.Printf("ffmpeg-converter: starting ffmpeg for file '%s' -> '%s'", filename, filenameFlac) ff.cmd = exec.Command("ffmpeg", "-loglevel", "warning", "-i", "-", "-map_metadata", "0") @@ -119,23 +119,23 @@ func NewFFMpegFetchConverter(ctx *Context, filename string, metadata map[string] return nil, "", err } - ff.result = make(chan FetchConverterResult, 1) + ff.result = make(chan fetchConverterResult, 1) go func() { output, err := ff.cmd.CombinedOutput() - ff.result <- FetchConverterResult{strings.TrimSpace(string(output)), err, 0.0} + ff.result <- fetchConverterResult{strings.TrimSpace(string(output)), err, 0.0} }() return } -func (ff *FFMpegFetchConverter) Write(p []byte) (n int, err error) { +func (ff *ffmpegFetchConverter) Write(p []byte) (n int, err error) { return ff.pipe.Write(p) } -func (ff *FFMpegFetchConverter) Close() (err error) { +func (ff *ffmpegFetchConverter) Close() (err error) { return ff.pipe.Close() } -func (ff *FFMpegFetchConverter) GetResult(ctx *Context, res *Result) (result string, err error) { +func (ff *ffmpegFetchConverter) GetResult(ctx *Context, res *Result) (result string, err error) { if ff.result != nil { select { case r := <-ff.result: @@ -155,16 +155,16 @@ func (ff *FFMpegFetchConverter) GetResult(ctx *Context, res *Result) (result str // BS1770 Converter: calculates loudness correction value using ITU BS1770 (EBU R128) // -type BS1770FetchConverter struct { +type bs1770FetchConverter struct { cmd *exec.Cmd file *os.File pipe io.WriteCloser multi io.Writer - result chan FetchConverterResult + result chan fetchConverterResult } -func NewBS1770FetchConverter(ctx *Context, filename string, metadata map[string]string) (bs *BS1770FetchConverter, newFilename string, err error) { - bs = &BS1770FetchConverter{} +func newBS1770FetchConverter(ctx *Context, filename string, metadata map[string]string) (bs *bs1770FetchConverter, newFilename string, err error) { + bs = &bs1770FetchConverter{} newFilename = filepath.Dir(filename) + "/conv-bs1770" + filepath.Ext(filename) ctx.stdlog.Printf("bs1770-converter: starting bs1770gain for file '%s' -> '%s'", filename, newFilename) bs.file, err = os.OpenFile(newFilename, os.O_WRONLY|os.O_CREATE|os.O_EXCL, 0600) @@ -179,31 +179,31 @@ func NewBS1770FetchConverter(ctx *Context, filename string, metadata map[string] bs.cmd.Stdout = &bsStdout bs.cmd.Stderr = &bsStderr - bs.result = make(chan FetchConverterResult, 1) + bs.result = make(chan fetchConverterResult, 1) go func() { if err := bs.cmd.Run(); err != nil { - bs.result <- FetchConverterResult{strings.TrimSpace(string(bsStderr.String())), err, 0.0} + bs.result <- fetchConverterResult{strings.TrimSpace(string(bsStderr.String())), err, 0.0} } - res, err := NewBS1770ResultFromXML(&bsStdout) + res, err := newBS1770ResultFromXML(&bsStdout) if err != nil { - bs.result <- FetchConverterResult{bsStdout.String(), err, 0.0} + bs.result <- fetchConverterResult{bsStdout.String(), err, 0.0} return } if len(res.Album.Tracks) == 0 { - bs.result <- FetchConverterResult{bsStdout.String(), fmt.Errorf("bs1770gain returned no/invalid result"), 0.0} + bs.result <- fetchConverterResult{bsStdout.String(), fmt.Errorf("bs1770gain returned no/invalid result"), 0.0} return } - bs.result <- FetchConverterResult{"", nil, res.Album.Tracks[0].Integrated.LU} + bs.result <- fetchConverterResult{"", nil, res.Album.Tracks[0].Integrated.LU} }() return } -func (bs *BS1770FetchConverter) Write(p []byte) (n int, err error) { +func (bs *bs1770FetchConverter) Write(p []byte) (n int, err error) { return bs.multi.Write(p) } -func (bs *BS1770FetchConverter) Close() (err error) { +func (bs *bs1770FetchConverter) Close() (err error) { errPipe := bs.pipe.Close() errFile := bs.file.Close() if errFile != nil { @@ -212,7 +212,7 @@ func (bs *BS1770FetchConverter) Close() (err error) { return errPipe } -func (bs *BS1770FetchConverter) GetResult(ctx *Context, res *Result) (result string, err error) { +func (bs *bs1770FetchConverter) GetResult(ctx *Context, res *Result) (result string, err error) { if bs.result != nil { select { case r := <-bs.result: @@ -233,16 +233,16 @@ func (bs *BS1770FetchConverter) GetResult(ctx *Context, res *Result) (result str // using ITU BS1770 (EBU R128) // -type FFMpegBS1770FetchConverter struct { +type ffmpegBS1770FetchConverter struct { ffmpeg *exec.Cmd bs1770 *exec.Cmd pipe io.WriteCloser - resultFF chan FetchConverterResult - resultBS chan FetchConverterResult + resultFF chan fetchConverterResult + resultBS chan fetchConverterResult } -func NewFFMpegBS1770FetchConverter(ctx *Context, filename string, metadata map[string]string) (ff *FFMpegBS1770FetchConverter, filenameFlac string, err error) { - ff = &FFMpegBS1770FetchConverter{} +func newFFMpegBS1770FetchConverter(ctx *Context, filename string, metadata map[string]string) (ff *ffmpegBS1770FetchConverter, filenameFlac string, err error) { + ff = &ffmpegBS1770FetchConverter{} filenameFlac = filepath.Dir(filename) + "/conv-ffmpeg-bs1770.flac" ctx.stdlog.Printf("ffmpeg-bs1770-converter: starting ffmpeg and bs1770gain for file '%s' -> '%s'", filename, filenameFlac) ff.ffmpeg = exec.Command("ffmpeg", "-loglevel", "warning", "-i", "pipe:0", "-map_metadata", "0") @@ -270,46 +270,46 @@ func NewFFMpegBS1770FetchConverter(ctx *Context, filename string, metadata map[s ff.bs1770.Stdout = &bsStdout ff.bs1770.Stderr = &bsStderr - ff.resultFF = make(chan FetchConverterResult, 1) - ff.resultBS = make(chan FetchConverterResult, 1) + ff.resultFF = make(chan fetchConverterResult, 1) + ff.resultBS = make(chan fetchConverterResult, 1) go func() { err := ff.ffmpeg.Run() ffstdout.Close() - ff.resultFF <- FetchConverterResult{strings.TrimSpace(string(ffStderr.String())), err, 0.0} + ff.resultFF <- fetchConverterResult{strings.TrimSpace(string(ffStderr.String())), err, 0.0} }() go func() { if err := ff.bs1770.Run(); err != nil { - ff.resultBS <- FetchConverterResult{strings.TrimSpace(string(bsStderr.String())), err, 0.0} + ff.resultBS <- fetchConverterResult{strings.TrimSpace(string(bsStderr.String())), err, 0.0} } - res, err := NewBS1770ResultFromXML(&bsStdout) + res, err := newBS1770ResultFromXML(&bsStdout) if err != nil { - ff.resultBS <- FetchConverterResult{bsStdout.String(), err, 0.0} + ff.resultBS <- fetchConverterResult{bsStdout.String(), err, 0.0} return } if len(res.Album.Tracks) == 0 { - ff.resultBS <- FetchConverterResult{bsStdout.String(), fmt.Errorf("bs1770gain returned no/invalid result"), 0.0} + ff.resultBS <- fetchConverterResult{bsStdout.String(), fmt.Errorf("bs1770gain returned no/invalid result"), 0.0} return } - ff.resultBS <- FetchConverterResult{"", nil, res.Album.Tracks[0].Integrated.LU} + ff.resultBS <- fetchConverterResult{"", nil, res.Album.Tracks[0].Integrated.LU} }() return } -func (ff *FFMpegBS1770FetchConverter) Write(p []byte) (n int, err error) { +func (ff *ffmpegBS1770FetchConverter) Write(p []byte) (n int, err error) { return ff.pipe.Write(p) } -func (ff *FFMpegBS1770FetchConverter) Close() (err error) { +func (ff *ffmpegBS1770FetchConverter) Close() (err error) { return ff.pipe.Close() } -func (ff *FFMpegBS1770FetchConverter) GetResult(ctx *Context, res *Result) (result string, err error) { +func (ff *ffmpegBS1770FetchConverter) GetResult(ctx *Context, res *Result) (result string, err error) { if ff.resultFF == nil || ff.resultBS == nil { return "", nil } - var rff, rbs *FetchConverterResult + var rff, rbs *fetchConverterResult for { select { case r := <-ff.resultFF: |