Class: kodi::addon::CInstanceVisualization
Visualization add-on instance
Music visualization, or music visualisation, is a feature in Kodi that generates animated imagery based on a piece of music. The imagery is usually generated and rendered in real time synchronized to the music.
Visualization techniques range from simple ones (e.g., a simulation of an oscilloscope display) to elaborate ones, which often include a plurality of composited effects. The changes in the music's loudness and frequency spectrum are among the properties used as input to the visualization.
Include the header #include <kodi/addon-instance/Visualization.h> to use this class.
This interface allows the creation of visualizations for Kodi, based upon DirectX or/and OpenGL rendering with C++
code.
Additionally, there are several other functions available in which the child class can ask about the current hardware, including the device, display and several other parts.
Here's an example on addon.xml:
<?xml version="1.0" encoding="UTF-8"?>
<addon
id="visualization.myspecialnamefor"
version="1.0.0"
name="My special visualization addon"
provider-name="Your Name">
<requires>@ADDON_DEPENDS@</requires>
<extension
point="xbmc.player.musicviz"
library_@PLATFORM@="@LIBRARY_FILENAME@"/>
<extension point="xbmc.addon.metadata">
<summary lang="en_GB">My visualization addon addon</summary>
<description lang="en_GB">My visualization addon description</description>
<platform>@PLATFORM@</platform>
</extension>
</addon>
Description to visualization related addon.xml values:
Name | Description |
point | Addon type specification
At all addon types and for this kind always "xbmc.player.musicviz". |
library_@PLATFORM@ | Sets the used library name, which is automatically set by cmake at addon build. |
Here is an example of the minimum required code to start a visualization:
#include <kodi/addon-instance/Visualization.h>
{
public:
CMyVisualization();
bool Start(
int channels,
int samplesPerSec,
int bitsPerSample,
const std::string& songName)
override;
void AudioData(
const float* audioData,
size_t audioDataLength)
override;
};
CMyVisualization::CMyVisualization()
{
...
}
bool CMyVisualization::Start(int channels, int samplesPerSec, int bitsPerSample, const std::string& songName)
{
...
return true;
}
void CMyVisualization::AudioData(const float* audioData, size_t audioDataLength)
{
...
}
void CMyVisualization::Render()
{
...
}
ADDONCREATOR(CMyVisualization)
Definition AddonBase.h:775
Definition Visualization.h:386
virtual void Render()
Used to indicate when the add-on should render.
Definition Visualization.h:513
virtual void AudioData(const float *audioData, size_t audioDataLength)
Pass audio data to the visualization.
Definition Visualization.h:496
virtual bool Start(int channels, int samplesPerSec, int bitsPerSample, const std::string &songName)
Used to notify the visualization that a new song has been started.
Definition Visualization.h:472
Here is another example where the visualization is used together with other instance types:
#include <kodi/addon-instance/Visualization.h>
{
public:
bool Start(
int channels,
int samplesPerSec,
int bitsPerSample,
const std::string& songName)
override;
void AudioData(
const float* audioData,
size_t audioDataLength)
override;
};
: kodi::addon::CInstanceAudioDecoder(instance)
{
...
}
bool CMyVisualization::Start(int channels, int samplesPerSec, int bitsPerSample, const std::string& songName)
{
...
return true;
}
void CMyVisualization::AudioData(const float* audioData, size_t audioDataLength)
{
...
}
void CMyVisualization::Render()
{
...
}
{
public:
CMyAddon() = default;
KODI_ADDON_INSTANCE_HDL& hdl) override;
};
KODI_ADDON_INSTANCE_HDL& hdl)
{
{
hdl = new CMyVisualization(instance);
}
else if (...)
{
...
}
}
ADDONCREATOR(CMyAddon)
Definition AddonBase.h:498
@ ADDON_LOG_INFO
1 : To include information messages in the log file.
Definition addon_base.h:187
ADDON_STATUS
Definition addon_base.h:138
@ ADDON_STATUS_OK
For everything OK and no error.
Definition addon_base.h:140
@ ADDON_STATUS_UNKNOWN
Unknown and incomprehensible error.
Definition addon_base.h:152
@ ADDON_INSTANCE_VISUALIZATION
Music visualization instance, see kodi::addon::CInstanceVisualization.
Definition versions.h:240
bool IsType(KODI_ADDON_INSTANCE_TYPE type) const
Check asked type used on this class.
Definition AddonBase.h:525
virtual ADDON_STATUS CreateInstance(const kodi::addon::IInstanceInfo &instance, KODI_ADDON_INSTANCE_HDL &hdl)
Instance created.
Definition AddonBase.h:924
void ATTR_DLL_LOCAL Log(const ADDON_LOG loglevel, const char *format,...)
Add a message to Kodi's log.
Definition AddonBase.h:1938
The destruction of the example class CMyVisualization
is called from Kodi's header. Manually deleting the add-on instance is not required.
◆ CInstanceVisualization() [1/2]
Visualization class constructor.
Used by an add-on that only supports visualizations.
◆ CInstanceVisualization() [2/2]
Visualization class constructor used to support multiple instance types.
- Parameters
-
[in] | instance | The instance value given to kodi::addon::CAddonBase::CreateInstance(...) . |
[in] | kodiVersion | [opt] Version used in Kodi for this instance, to allow compatibility to older Kodi versions. |
- Note
- Recommended to set
kodiVersion
.
Here's example about the use of this:
{
public:
{
...
}
...
};
KODI_ADDON_INSTANCE_HDL& hdl)
{
hdl = new CMyVisualization(instance);
}
Definition AudioDecoder.h:431
◆ ~CInstanceVisualization()
◆ Start()
virtual bool Start |
( |
int | channels, |
|
|
int | samplesPerSec, |
|
|
int | bitsPerSample, |
|
|
const std::string & | songName ) |
|
inlinevirtual |
Used to notify the visualization that a new song has been started.
- Parameters
-
[in] | channels | Number of channels in the stream |
[in] | samplesPerSec | Samples per second of stream |
[in] | bitsPerSample | Number of bits in one sample |
[in] | songName | The name of the currently-playing song |
- Returns
- true if start successful done
◆ Stop()
Used to inform the visualization that the rendering control was stopped.
◆ AudioData()
virtual void AudioData |
( |
const float * | audioData, |
|
|
size_t | audioDataLength ) |
|
inlinevirtual |
Pass audio data to the visualization.
- Parameters
-
[in] | audioData | The raw audio data |
[in] | audioDataLength | Length of the audioData array |
◆ IsDirty()
Used to inform Kodi that the rendered region is dirty and need an update.
- Returns
- True if dirty
◆ Render()
Used to indicate when the add-on should render.
◆ GetSyncDelay()
virtual int GetSyncDelay |
( |
| ) |
|
|
inlinevirtual |
Used to get the number of buffers from the current visualization.
- Returns
- The number of buffers to delay before calling AudioData()
- Note
- If this function is not implemented, it will default to 0.
◆ GetPresets()
virtual bool GetPresets |
( |
std::vector< std::string > & | presets | ) |
|
|
inlinevirtual |
Used to get a list of visualization presets the user can select. from.
- Parameters
-
[out] | presets | The vector list containing the names of presets that the user can select |
- Returns
- Return true if successful, or false if there are no presets to choose from
◆ GetActivePreset()
virtual int GetActivePreset |
( |
| ) |
|
|
inlinevirtual |
Get the index of the current preset.
- Returns
- Index number of the current preset
◆ IsLocked()
virtual bool IsLocked |
( |
| ) |
|
|
inlinevirtual |
Check if the add-on is locked to the current preset.
- Returns
- True if locked to the current preset
◆ PrevPreset()
virtual bool PrevPreset |
( |
| ) |
|
|
inlinevirtual |
Load the previous visualization preset.
- Returns
- Return true if the previous preset was loaded
◆ NextPreset()
virtual bool NextPreset |
( |
| ) |
|
|
inlinevirtual |
Load the next visualization preset.
- Returns
- Return true if the next preset was loaded
◆ LoadPreset()
virtual bool LoadPreset |
( |
int | select | ) |
|
|
inlinevirtual |
Load a visualization preset.
This function is called after a new preset is selected.
- Parameters
-
[in] | select | Preset index to use |
- Returns
- Return true if the preset is loaded
◆ RandomPreset()
virtual bool RandomPreset |
( |
| ) |
|
|
inlinevirtual |
Switch to a new random preset.
- Returns
- Return true if a random preset was loaded
◆ LockPreset()
virtual bool LockPreset |
( |
bool | lockUnlock | ) |
|
|
inlinevirtual |
Lock the current visualization preset, preventing it from changing.
- Parameters
-
[in] | lockUnlock | If set to true, the preset should be locked |
- Returns
- Return true if the current preset is locked
◆ RatePreset()
virtual bool RatePreset |
( |
bool | plusMinus | ) |
|
|
inlinevirtual |
Used to increase/decrease the visualization preset rating.
- Parameters
-
[in] | plusMinus | If set to true the rating is increased, otherwise decreased |
- Returns
- Return true if the rating is modified
◆ UpdateAlbumart()
virtual bool UpdateAlbumart |
( |
const std::string & | albumart | ) |
|
|
inlinevirtual |
Inform the visualization of the current album art image.
- Parameters
-
[in] | albumart | Path to the current album art image |
- Returns
- Return true if the image is used
◆ UpdateTrack()
Inform the visualization of the current track's tag information.
- Parameters
-
[in] | track | Visualization track information structure |
- Returns
- Return true if the track information is used
The following table contains values that can be set with class VisualizationTrack :
Example:
#include <kodi/addon-instance/Visualization.h>
{
public:
CMyVisualization(KODI_HANDLE instance, const std::string& version);
...
private:
};
{
return true;
}
Definition Visualization.h:39
Definition visualization.h:22