Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
62
Src/replicant/replaygain/ifc_replaygain_settings.h
Normal file
62
Src/replicant/replaygain/ifc_replaygain_settings.h
Normal file
|
@ -0,0 +1,62 @@
|
|||
#pragma once
|
||||
#include "foundation/dispatch.h"
|
||||
|
||||
/* ok, this could have easily been a config group, but I decided to make it its own interface for two reasons
|
||||
1) it's a little more maintainable and easier to understand and use, rather than just using a generic key/value interface
|
||||
2) the original ReplayGain specs suggests using the average gain of the last 10 played tracks in cases of missing replay gain data
|
||||
http://replaygain.hydrogenaudio.org/proposal/player_scale.html
|
||||
So we need a way to have the playback object pass along gain values so they can be averages in this way
|
||||
|
||||
*/
|
||||
|
||||
// {1CE24DEC-A189-4BC7-86A7-C6CDB0F8953D}
|
||||
static const GUID replaygain_settings_interface_guid =
|
||||
{ 0x1ce24dec, 0xa189, 0x4bc7, { 0x86, 0xa7, 0xc6, 0xcd, 0xb0, 0xf8, 0x95, 0x3d } };
|
||||
|
||||
class ifc_metadata;
|
||||
|
||||
class ifc_replaygain_settings : public Wasabi2::Dispatchable
|
||||
{
|
||||
protected:
|
||||
ifc_replaygain_settings() : Wasabi2::Dispatchable(DISPATCHABLE_VERSION) {}
|
||||
~ifc_replaygain_settings() {}
|
||||
public:
|
||||
static GUID GetInterfaceGUID() { return replaygain_settings_interface_guid; }
|
||||
|
||||
enum
|
||||
{
|
||||
REPLAYGAIN_OFF=0x0,
|
||||
REPLAYGAIN_ON=0x1,
|
||||
REPLAYGAIN_MODE_TRACK=0x2,
|
||||
REPLAYGAIN_MODE_ALBUM=0x4,
|
||||
REPLAYGAIN_MODE_MASK=REPLAYGAIN_MODE_TRACK|REPLAYGAIN_MODE_ALBUM,
|
||||
REPLAYGAIN_PREVENT_CLIPPING=0x8,
|
||||
REPLAYGAIN_AUTO=0x16, // automatically determine gain values for unscanned tracks from prior history
|
||||
};
|
||||
|
||||
/* pass the ifc_metadata associated with the track
|
||||
warning values:
|
||||
NErr_Success: gain is set to the gain adjustment to play this track with
|
||||
NErr_False: gain is set to the default gain adjustment because there was no metadata
|
||||
NErr_Unknown: gain is set to the default gain adjustment, because the metadata object does not understand the ReplayGain metadata keys (MetadataKeys::TRACK_GAIN, etc)
|
||||
|
||||
return values:
|
||||
NErr_Success: *gain has been assigned and is valid
|
||||
NErr_Disabled: ReplayGain is turned off
|
||||
*/
|
||||
int GetGain(ifc_metadata *metadata, double *gain, int *warning) { return ReplayGainSettings_GetGain(metadata, gain, warning); }
|
||||
|
||||
/* Adds a track to the history, which is optionally used when playing back tracks without ReplayGain
|
||||
pass the track length (or an estimate). Pass 0.0 for length if don't know.
|
||||
You should only call this if GetGain returned NErr_Success and there was no warning!
|
||||
*/
|
||||
int AddToHistory(double seconds, double gain) { return ReplayGainSettings_AddToHistory(seconds, gain); }
|
||||
private:
|
||||
virtual int WASABICALL ReplayGainSettings_GetGain(ifc_metadata *metadata, double *gain, int *warning)=0;
|
||||
virtual int WASABICALL ReplayGainSettings_AddToHistory(double seconds, double gain)=0;
|
||||
|
||||
enum
|
||||
{
|
||||
DISPATCHABLE_VERSION,
|
||||
};
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue