pianod2
multisource multiuser scriptable networked music player
metadata.h
Go to the documentation of this file.
1 
10 #pragma once
11 
12 #include <config.h>
13 
14 #include <string>
15 #include <exception>
16 
17 
18 namespace Media {
21  class MediaException : public std::exception {
22  const char *reason = nullptr;
23  public:
24  MediaException (const char *why) : reason (why) { };
25  virtual const char *what() const noexcept override { return reason; };
26  };
27 
28  class Metadata {
29  protected:
30  static void splitOf (const char *value, int *first, int *second);
31  static void splitOf (const std::string &value, int *first, int *second) {
32  splitOf (value.c_str(), first, second);
33  };
34  public:
35  static float gainFromiTunesNormalization (const char *);
36  static float gainFromiTunesNormalization (const std::string &value) {
37  return gainFromiTunesNormalization (value.c_str());
38  }
39  public:
40  std::string artist;
41  std::string album;
42  std::string title;
43  std::string cddb_id;
44  std::string genre;
45  int year = 0;
46  int track_number = 0;
47  int track_count = 0;
48  int disc_number = 0;
49  int disc_count = 0;
50  float duration = 0;
51  float gain = 0;
52 
53  static float getFileGain (const std::string &filename);
54  static const Metadata getMetadata (const std::string &filename);
55  };
56 }
57 
An exception thrown by metadata readers when metadata cannot be extracted.
Definition: metadata.h:21
const char * reason
Definition: metadata.h:22
MediaException(const char *why)
Definition: metadata.h:24
virtual const char * what() const noexcept override
Definition: metadata.h:25
Definition: metadata.h:28
static float gainFromiTunesNormalization(const char *)
Get the iTunes normalization, a/k/a sound check.
Definition: metadata.cpp:88
static void splitOf(const char *value, int *first, int *second)
Split a string <number>/<number> into its two components.
Definition: metadata.cpp:74
int disc_number
Definition: metadata.h:48
int track_count
Definition: metadata.h:47
std::string title
Definition: metadata.h:42
int track_number
Definition: metadata.h:46
std::string genre
Definition: metadata.h:44
static const Metadata getMetadata(const std::string &filename)
Get metadata using whatever best mechanism is available.
Definition: metadata.cpp:48
static float gainFromiTunesNormalization(const std::string &value)
Definition: metadata.h:36
std::string cddb_id
Definition: metadata.h:43
std::string album
Definition: metadata.h:41
std::string artist
Definition: metadata.h:40
int year
Definition: metadata.h:45
static float getFileGain(const std::string &filename)
Get a file's gain for playback.
Definition: metadata.cpp:38
static void splitOf(const std::string &value, int *first, int *second)
Definition: metadata.h:31
float duration
Definition: metadata.h:50
int disc_count
Definition: metadata.h:49
float gain
Definition: metadata.h:51
uint32_t value
Definition: audiooutput.cpp:68
Media source, source parameters and player interfaces.
Definition: connection.h:22