1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
/*
* Copyright (C) 2013 Arne Morten Kvarving
*
* SPDX-License-Identifier: GPL-2.0-or-later
* See LICENSES/README.md for more information.
*/
#include "AudioEncoder.h"
namespace ADDON
{
CAudioEncoder::CAudioEncoder(const AddonInfoPtr& addonInfo)
: IAddonInstanceHandler(ADDON_INSTANCE_AUDIOENCODER, addonInfo)
{
// Create "C" interface structures, used as own parts to prevent API problems on update
m_struct.props = new AddonProps_AudioEncoder();
m_struct.toAddon = new KodiToAddonFuncTable_AudioEncoder();
m_struct.toKodi = new AddonToKodiFuncTable_AudioEncoder();
}
CAudioEncoder::~CAudioEncoder()
{
// Delete "C" interface structures
delete m_struct.toAddon;
delete m_struct.toKodi;
delete m_struct.props;
}
bool CAudioEncoder::Init(AddonToKodiFuncTable_AudioEncoder& callbacks)
{
*m_struct.toKodi = callbacks;
if (CreateInstance(&m_struct) != ADDON_STATUS_OK || !m_struct.toAddon->start)
return false;
return m_struct.toAddon->start(&m_struct, m_iInChannels, m_iInSampleRate, m_iInBitsPerSample,
m_strTitle.c_str(), m_strArtist.c_str(), m_strAlbumArtist.c_str(),
m_strAlbum.c_str(), m_strYear.c_str(), m_strTrack.c_str(),
m_strGenre.c_str(), m_strComment.c_str(), m_iTrackLength);
}
int CAudioEncoder::Encode(int nNumBytesRead, uint8_t* pbtStream)
{
if (m_struct.toAddon->encode)
return m_struct.toAddon->encode(&m_struct, nNumBytesRead, pbtStream);
return 0;
}
bool CAudioEncoder::Close()
{
bool ret = false;
if (m_struct.toAddon->finish)
ret = m_struct.toAddon->finish(&m_struct);
DestroyInstance();
return ret;
}
} /*namespace ADDON*/
|