11#include "../AddonBase.h"
12#include "../c-api/addon-instance/audio_encoder.h"
196 !kodiVersion.empty() ? kodiVersion
199 if (CAddonBase::m_interface->globalSingleInstance !=
nullptr)
200 throw std::logic_error(
"kodi::addon::CInstanceAudioEncoder: Creation of multiple together "
201 "with single instance way is not allowed!");
203 SetAddonStruct(instance);
227 const std::string& title,
228 const std::string& artist,
229 const std::string& albumartist,
230 const std::string& album,
231 const std::string& year,
232 const std::string& track,
233 const std::string& genre,
234 const std::string& comment,
235 int trackLength) = 0;
246 virtual int Encode(
int numBytesRead,
const uint8_t* pbtStream) = 0;
268 int Write(
const uint8_t* data,
int length)
270 return m_instanceData->toKodi->write(m_instanceData->toKodi->kodiInstance, data, length);
295 int64_t
Seek(int64_t position,
int whence = SEEK_SET)
297 return m_instanceData->toKodi->seek(m_instanceData->toKodi->kodiInstance, position, whence);
302 void SetAddonStruct(KODI_HANDLE instance)
304 if (instance ==
nullptr)
305 throw std::logic_error(
"kodi::addon::CInstanceAudioEncoder: Creation with empty addon "
306 "structure not allowed, table must be given from Kodi!");
309 m_instanceData->toAddon->addonInstance =
this;
310 m_instanceData->toAddon->start = ADDON_Start;
311 m_instanceData->toAddon->encode = ADDON_Encode;
312 m_instanceData->toAddon->finish = ADDON_Finish;
321 const char* albumartist,
329 return static_cast<CInstanceAudioEncoder*
>(instance->toAddon->addonInstance)
330 ->Start(inChannels, inRate, inBits, title, artist, albumartist, album, year, track, genre,
331 comment, trackLength);
336 const uint8_t* pbtStream)
338 return static_cast<CInstanceAudioEncoder*
>(instance->toAddon->addonInstance)
339 ->Encode(numBytesRead, pbtStream);
344 return static_cast<CInstanceAudioEncoder*
>(instance->toAddon->addonInstance)->Finish();
Definition: AudioEncoder.h:152
Definition: AddonBase.h:186
@ ADDON_INSTANCE_AUDIOENCODER
Audio encoder instance, see kodi::addon::CInstanceAudioEncoder.
Definition: versions.h:219
virtual bool Finish()
Finalize encoding (optional)
Definition: AudioEncoder.h:255
virtual bool Start(int inChannels, int inRate, int inBits, const std::string &title, const std::string &artist, const std::string &albumartist, const std::string &album, const std::string &year, const std::string &track, const std::string &genre, const std::string &comment, int trackLength)=0
Start encoder (required)
CInstanceAudioEncoder(KODI_HANDLE instance, const std::string &kodiVersion="")
Audio encoder class constructor used to support multiple instances.
Definition: AudioEncoder.h:194
int64_t Seek(int64_t position, int whence=SEEK_SET)
Set the file's current position.
Definition: AudioEncoder.h:295
int Write(const uint8_t *data, int length)
Write block of data.
Definition: AudioEncoder.h:268
virtual int Encode(int numBytesRead, const uint8_t *pbtStream)=0
Encode a chunk of audio (required)
std::string ATTRIBUTE_HIDDEN GetKodiTypeVersion(int type)
To get used version inside Kodi itself about asked type.
Definition: AddonBase.h:630
Definition: audio_encoder.h:55