summaryrefslogtreecommitdiff
path: root/rhimport/bs1770_responses.go
diff options
context:
space:
mode:
Diffstat (limited to 'rhimport/bs1770_responses.go')
-rw-r--r--rhimport/bs1770_responses.go89
1 files changed, 89 insertions, 0 deletions
diff --git a/rhimport/bs1770_responses.go b/rhimport/bs1770_responses.go
new file mode 100644
index 0000000..b254b9c
--- /dev/null
+++ b/rhimport/bs1770_responses.go
@@ -0,0 +1,89 @@
+//
+// rhimportd
+//
+// The Radio Helsinki Rivendell Import Daemon
+//
+//
+// Copyright (C) 2015-2016 Christian Pointner <equinox@helsinki.at>
+//
+// This file is part of rhimportd.
+//
+// rhimportd is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// any later version.
+//
+// rhimportd is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with rhimportd. If not, see <http://www.gnu.org/licenses/>.
+//
+
+package rhimport
+
+import (
+ "encoding/xml"
+ "fmt"
+ "io"
+)
+
+type BS1770Result struct {
+ Album BS1770ResultAlbum `xml:"album"`
+}
+
+type BS1770ResultAlbum struct {
+ Tracks []BS1770ResultTrack `xml:"track"`
+ Summary BS1770ResultSummary `xml:"summary"`
+}
+
+type BS1770ResultTrack struct {
+ Total uint `xml:"total,attr"`
+ Number uint `xml:"number,attr"`
+ File string `xml:"file,attr"`
+ Integrated BS1770ResultValueLUFS `xml:"integrated"`
+ Momentary BS1770ResultValueLUFS `xml:"momentary"`
+ ShorttermMaximum BS1770ResultValueLUFS `xml:"shortterm-maximum"`
+ SamplePeak BS1770ResultValueSPFS `xml:"sample-peak"`
+ TruePeak BS1770ResultValueTPFS `xml:"true-peak"`
+}
+
+type BS1770ResultSummary struct {
+ Total uint `xml:"total,attr"`
+ Integrated BS1770ResultValueLUFS `xml:"integrated"`
+ Momentary BS1770ResultValueLUFS `xml:"momentary"`
+ ShorttermMaximum BS1770ResultValueLUFS `xml:"shortterm-maximum"`
+ SamplePeak BS1770ResultValueSPFS `xml:"sample-peak"`
+ TruePeak BS1770ResultValueTPFS `xml:"true-peak"`
+}
+
+type BS1770ResultValueLUFS struct {
+ LUFS float64 `xml:"lufs,attr"`
+ LU float64 `xml:"lu,attr"`
+}
+
+type BS1770ResultValueRange struct {
+ LUFS float64 `xml:"lufs,attr"`
+}
+
+type BS1770ResultValueSPFS struct {
+ SPFS float64 `xml:"spfs,attr"`
+ Factor float64 `xml:"factor,attr"`
+}
+
+type BS1770ResultValueTPFS struct {
+ TPFS float64 `xml:"tpfs,attr"`
+ Factor float64 `xml:"factor,attr"`
+}
+
+func NewBS1770ResultFromXML(data io.Reader) (res *BS1770Result, err error) {
+ decoder := xml.NewDecoder(data)
+ res = &BS1770Result{}
+ if xmlerr := decoder.Decode(res); xmlerr != nil {
+ err = fmt.Errorf("Error parsing XML response: %s", xmlerr)
+ return
+ }
+ return
+}