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.  
More...
 
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: 
 
{
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()
{
  ...
}
 
const char unsigned int int * channels
Definition addons/kodi-dev-kit/include/kodi/c-api/addon-instance/AudioDecoder.h:108
 
Definition kodi-dev-kit/include/kodi/AddonBase.h:776
 
Definition kodi-dev-kit/include/kodi/addon-instance/Visualization.h:386
 
virtual void Render()
Used to indicate when the add-on should render.
Definition kodi-dev-kit/include/kodi/addon-instance/Visualization.h:513
 
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 kodi-dev-kit/include/kodi/addon-instance/Visualization.h:472
 
virtual void AudioData(const float *audioData, size_t audioDataLength)
Pass audio data to the visualization.
Definition kodi-dev-kit/include/kodi/addon-instance/Visualization.h:496
 
#define ADDONCREATOR(AddonClass)
Definition kodi-dev-kit/include/kodi/AddonBase.h:2048
 
 
Here is another example where the visualization is used together with other instance types:
 
{
public:
 
  bool Start(
int channels, 
int samplesPerSec, 
int bitsPerSample, 
const std::string& songName) 
override;
 
  void AudioData(
const float* audioData, 
size_t audioDataLength) 
override;
 
};
 
{
  ...
}
 
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;
};
 
{
  {
  }
  else if (...)
  {
    ...
  }
}
 
void * KODI_ADDON_INSTANCE_HDL
Definition addon_base.h:121
 
KODI_ADDON_HDL * hdl
Definition addon_base.h:345
 
Definition kodi-dev-kit/include/kodi/AddonBase.h:502
 
@ 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:245
 
virtual ADDON_STATUS CreateInstance(const kodi::addon::IInstanceInfo &instance, KODI_ADDON_INSTANCE_HDL &hdl)
Instance created.
Definition kodi-dev-kit/include/kodi/AddonBase.h:925
 
void ATTR_DLL_LOCAL Log(const ADDON_LOG loglevel, const char *format,...)
Add a message to Kodi's log.
Definition kodi-dev-kit/include/kodi/AddonBase.h:1939
 
Definition addons/kodi-dev-kit/include/kodi/addon-instance/AudioDecoder.h:21
 
Definition addon_base.h:268
 
 The destruction of the example class CMyVisualization is called from Kodi's header. Manually deleting the add-on instance is not required. 
◆ AudioData()
  
  
      
        
          | virtual void kodi::addon::CInstanceVisualization::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  | 
  
   
 
 
◆ CInstanceVisualization() [1/2]
  
  
      
        
          | kodi::addon::CInstanceVisualization::CInstanceVisualization  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inline   | 
  
 
Visualization class constructor. 
Used by an add-on that only supports visualizations. 
 
 
◆ CInstanceVisualization() [2/2]
  
  
      
        
          | kodi::addon::CInstanceVisualization::CInstanceVisualization  | 
          ( | 
          const IInstanceInfo & |           instance | ) | 
           | 
         
       
   | 
  
inlineexplicit   | 
  
 
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:
  {
     ...
  }
 
  ...
};
 
{
}
Definition addons/kodi-dev-kit/include/kodi/addon-instance/AudioDecoder.h:431
 
  
 
 
◆ GetActivePreset()
  
  
      
        
          | virtual int kodi::addon::CInstanceVisualization::GetActivePreset  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inlinevirtual   | 
  
 
Get the index of the current preset. 
- Returns
 - Index number of the current preset 
 
 
 
◆ GetPresets()
  
  
      
        
          | virtual bool kodi::addon::CInstanceVisualization::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 
 
 
 
◆ GetSyncDelay()
  
  
      
        
          | virtual int kodi::addon::CInstanceVisualization::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. 
 
 
 
◆ IsDirty()
  
  
      
        
          | virtual bool kodi::addon::CInstanceVisualization::IsDirty  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inlinevirtual   | 
  
 
Used to inform Kodi that the rendered region is dirty and need an update. 
- Returns
 - True if dirty 
 
 
 
◆ IsLocked()
  
  
      
        
          | virtual bool kodi::addon::CInstanceVisualization::IsLocked  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inlinevirtual   | 
  
 
Check if the add-on is locked to the current preset. 
- Returns
 - True if locked to the current preset 
 
 
 
◆ LoadPreset()
  
  
      
        
          | virtual bool kodi::addon::CInstanceVisualization::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 
 
 
 
◆ LockPreset()
  
  
      
        
          | virtual bool kodi::addon::CInstanceVisualization::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 
 
 
 
◆ NextPreset()
  
  
      
        
          | virtual bool kodi::addon::CInstanceVisualization::NextPreset  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inlinevirtual   | 
  
 
Load the next visualization preset. 
- Returns
 - Return true if the next preset was loaded 
 
 
 
◆ PrevPreset()
  
  
      
        
          | virtual bool kodi::addon::CInstanceVisualization::PrevPreset  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inlinevirtual   | 
  
 
Load the previous visualization preset. 
- Returns
 - Return true if the previous preset was loaded 
 
 
 
◆ RandomPreset()
  
  
      
        
          | virtual bool kodi::addon::CInstanceVisualization::RandomPreset  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inlinevirtual   | 
  
 
Switch to a new random preset. 
- Returns
 - Return true if a random preset was loaded 
 
 
 
◆ RatePreset()
  
  
      
        
          | virtual bool kodi::addon::CInstanceVisualization::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 
 
 
 
◆ Render()
  
  
      
        
          | virtual void kodi::addon::CInstanceVisualization::Render  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inlinevirtual   | 
  
 
Used to indicate when the add-on should render. 
 
 
◆ Start()
  
  
      
        
          | virtual bool kodi::addon::CInstanceVisualization::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()
  
  
      
        
          | virtual void kodi::addon::CInstanceVisualization::Stop  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inlinevirtual   | 
  
 
Used to inform the visualization that the rendering control was stopped. 
 
 
◆ UpdateAlbumart()
  
  
      
        
          | virtual bool kodi::addon::CInstanceVisualization::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: 
 
{
public:
 
  ...
 
private:
};
 
{
  return true;
}
void * KODI_HANDLE
Standard undefined pointer handle.
Definition addon_base.h:292
 
Definition kodi-dev-kit/include/kodi/addon-instance/Visualization.h:39
 
const struct KODI_ADDON_VISUALIZATION_TRACK * track
Definition kodi-dev-kit/include/kodi/c-api/addon-instance/Visualization.h:95
 
Definition kodi-dev-kit/include/kodi/c-api/addon-instance/Visualization.h:22
 
  
 
 
◆ ~CInstanceVisualization()
  
  
      
        
          | kodi::addon::CInstanceVisualization::~CInstanceVisualization  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
overridedefault   |