summaryrefslogtreecommitdiff
path: root/rhimport/converter.go
diff options
context:
space:
mode:
Diffstat (limited to 'rhimport/converter.go')
-rw-r--r--rhimport/converter.go32
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
}