diff options
Diffstat (limited to 'rhimport/converter.go')
-rw-r--r-- | rhimport/converter.go | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/rhimport/converter.go b/rhimport/converter.go index a116a8d..72f746d 100644 --- a/rhimport/converter.go +++ b/rhimport/converter.go @@ -48,18 +48,22 @@ type FetchConverterResult struct { loudnessCorr float64 } -func NewFetchConverter(convType, filename string, metadata map[string]string, channels uint) (FetchConverter, string, error) { - switch convType { +func NewFetchConverter(ctx *Context, filename string, metadata map[string]string) (FetchConverter, string, error) { + switch ctx.FetchConverter { case "null": - return NewNullFetchConverter(filename, metadata, channels) + // no support for loudness evaluation - leave normalization to Rivendell + return NewNullFetchConverter(filename, metadata, ctx.conf.SampleRate, ctx.Channels) case "ffmpeg": - return NewFFMpegFetchConverter(filename, metadata, channels) + // no support for loudness evaluation - leave normalization to Rivendell + return NewFFMpegFetchConverter(filename, metadata, ctx.conf.SampleRate, ctx.Channels) case "bs1770": - return NewBS1770FetchConverter(filename, metadata, channels) + ctx.NormalizationLevel = 0 // disable Rivendell normalization + return NewBS1770FetchConverter(filename, metadata, ctx.conf.SampleRate, ctx.Channels) case "ffmpeg-bs1770": - return NewFFMpegBS1770FetchConverter(filename, metadata, channels) + ctx.NormalizationLevel = 0 // disable Rivendell normalization + return NewFFMpegBS1770FetchConverter(filename, metadata, ctx.conf.SampleRate, ctx.Channels) } - return nil, "", errors.New("unknown fetch converter type: " + convType) + return nil, "", errors.New("unknown fetch converter type: " + ctx.FetchConverter) } // @@ -70,7 +74,7 @@ type NullFetchConverter struct { file *os.File } -func NewNullFetchConverter(filename string, metadata map[string]string, channels uint) (n *NullFetchConverter, newFilename string, err error) { +func NewNullFetchConverter(filename string, metadata map[string]string, samplerate, channels uint) (n *NullFetchConverter, newFilename string, err error) { n = &NullFetchConverter{} rhl.Printf("null-converter: opening file '%s'", filename) newFilename = filename @@ -100,7 +104,7 @@ type FFMpegFetchConverter struct { result chan FetchConverterResult } -func NewFFMpegFetchConverter(filename string, metadata map[string]string, channels uint) (ff *FFMpegFetchConverter, filenameFlac string, err error) { +func NewFFMpegFetchConverter(filename string, metadata map[string]string, samplerate, channels uint) (ff *FFMpegFetchConverter, filenameFlac string, err error) { ff = &FFMpegFetchConverter{} ext := filepath.Ext(filename) filenameFlac = strings.TrimSuffix(filename, ext) + ".flac" @@ -111,7 +115,7 @@ func NewFFMpegFetchConverter(filename string, metadata map[string]string, channe ff.cmd.Args = append(ff.cmd.Args, "-metadata", fmt.Sprintf("%s=%s", key, value)) } } - ff.cmd.Args = append(ff.cmd.Args, "-ac", strconv.FormatUint(uint64(channels), 10), "-f", "flac", filenameFlac) + ff.cmd.Args = append(ff.cmd.Args, "-ar", strconv.FormatUint(uint64(samplerate), 10), "-ac", strconv.FormatUint(uint64(channels), 10), "-f", "flac", filenameFlac) if ff.pipe, err = ff.cmd.StdinPipe(); err != nil { return nil, "", err } @@ -160,7 +164,7 @@ type BS1770FetchConverter struct { result chan FetchConverterResult } -func NewBS1770FetchConverter(filename string, metadata map[string]string, channels uint) (bs *BS1770FetchConverter, newFilename string, err error) { +func NewBS1770FetchConverter(filename string, metadata map[string]string, samplerate, channels uint) (bs *BS1770FetchConverter, newFilename string, err error) { bs = &BS1770FetchConverter{} rhl.Printf("bs1770-converter: starting bs1770gain for file '%s'", filename) newFilename = filename @@ -236,7 +240,7 @@ type FFMpegBS1770FetchConverter struct { resultBS chan FetchConverterResult } -func NewFFMpegBS1770FetchConverter(filename string, metadata map[string]string, channels uint) (ff *FFMpegBS1770FetchConverter, filenameFlac string, err error) { +func NewFFMpegBS1770FetchConverter(filename string, metadata map[string]string, samplerate, channels uint) (ff *FFMpegBS1770FetchConverter, filenameFlac string, err error) { ff = &FFMpegBS1770FetchConverter{} ext := filepath.Ext(filename) filenameFlac = strings.TrimSuffix(filename, ext) + ".flac" @@ -247,8 +251,8 @@ func NewFFMpegBS1770FetchConverter(filename string, metadata map[string]string, ff.ffmpeg.Args = append(ff.ffmpeg.Args, "-metadata", fmt.Sprintf("%s=%s", key, value)) } } - ff.ffmpeg.Args = append(ff.ffmpeg.Args, "-ac", strconv.FormatUint(uint64(channels), 10), "-f", "flac", filenameFlac) - ff.ffmpeg.Args = append(ff.ffmpeg.Args, "-ac", strconv.FormatUint(uint64(channels), 10), "-f", "flac", "pipe:1") + ff.ffmpeg.Args = append(ff.ffmpeg.Args, "-ar", strconv.FormatUint(uint64(samplerate), 10), "-ac", strconv.FormatUint(uint64(channels), 10), "-f", "flac", filenameFlac) + ff.ffmpeg.Args = append(ff.ffmpeg.Args, "-ar", strconv.FormatUint(uint64(samplerate), 10), "-ac", strconv.FormatUint(uint64(channels), 10), "-f", "flac", "pipe:1") if ff.pipe, err = ff.ffmpeg.StdinPipe(); err != nil { return nil, "", err } |