11#include "../AddonBase.h"
12#include "../c-api/addon-instance/video_codec.h"
13#include "inputstream/DemuxPacket.h"
14#include "inputstream/StreamCodec.h"
15#include "inputstream/StreamCrypto.h"
24class CInstanceVideoCodec;
77 std::vector<VIDEOCODEC_FORMAT> formats;
81 formats.emplace_back(m_cStructure->videoFormats[i++]);
88 uint32_t
GetWidth()
const {
return m_cStructure->width; }
91 uint32_t
GetHeight()
const {
return m_cStructure->height; }
94 const uint8_t*
GetExtraData()
const {
return m_cStructure->extraData; }
262 if (CPrivateBase::m_interface->globalSingleInstance !=
nullptr)
263 throw std::logic_error(
"kodi::addon::CInstanceVideoCodec: Creation of multiple together with "
264 "single instance way is not allowed!");
266 SetAddonStruct(instance);
339 virtual const char*
GetName() {
return nullptr; }
369 return m_instanceData->toKodi->get_frame_buffer(m_instanceData->toKodi->kodiInstance, &picture);
384 return m_instanceData->toKodi->release_frame_buffer(m_instanceData->toKodi->kodiInstance,
414 if (!m_instanceData->toKodi->get_frame_buffer_platform_handle)
416 return m_instanceData->toKodi->get_frame_buffer_platform_handle(
417 m_instanceData->toKodi->kodiInstance, videoBufferHandle, &platformBuffer);
424 instance->hdl =
this;
425 instance->videocodec->toAddon->open = ADDON_Open;
426 instance->videocodec->toAddon->reconfigure = ADDON_Reconfigure;
427 instance->videocodec->toAddon->add_data = ADDON_AddData;
428 instance->videocodec->toAddon->get_picture = ADDON_GetPicture;
429 instance->videocodec->toAddon->get_name = ADDON_GetName;
430 instance->videocodec->toAddon->reset = ADDON_Reset;
432 m_instanceData = instance->videocodec;
433 m_instanceData->toAddon->addonInstance =
this;
439 return static_cast<CInstanceVideoCodec*
>(instance->toAddon->addonInstance)->Open(initData);
445 return static_cast<CInstanceVideoCodec*
>(instance->toAddon->addonInstance)
446 ->Reconfigure(initData);
452 return static_cast<CInstanceVideoCodec*
>(instance->toAddon->addonInstance)->AddData(*packet);
458 return static_cast<CInstanceVideoCodec*
>(instance->toAddon->addonInstance)
459 ->GetPicture(*picture);
464 return static_cast<CInstanceVideoCodec*
>(instance->toAddon->addonInstance)->GetName();
469 return static_cast<CInstanceVideoCodec*
>(instance->toAddon->addonInstance)->Reset();
Definition VideoCodec.h:248
Definition AddonBase.h:206
Definition AddonBase.h:566
Definition AddonBase.h:502
Definition StreamCrypto.h:43
Definition VideoCodec.h:37
Definition video_codec.h:233
Definition video_codec.h:408
uint32_t GetWidth() const
Picture width.
Definition VideoCodec.h:88
const uint8_t * GetExtraData() const
Depending on the required decoding, additional data given by the stream.
Definition VideoCodec.h:94
VIDEOCODEC_TYPE GetCodecType() const
The codec type required by Kodi to process the stream.
Definition VideoCodec.h:65
VIDEOCODEC_TYPE
Video codec types that can be requested from Kodi.
Definition video_codec.h:117
STREAMCODEC_PROFILE GetCodecProfile() const
Used profiles for non-scalable 2D video.
Definition VideoCodec.h:68
std::vector< VIDEOCODEC_FORMAT > GetVideoFormats() const
The video stream representations requested by Kodi.
Definition VideoCodec.h:75
uint32_t GetHeight() const
Picture height.
Definition VideoCodec.h:91
kodi::addon::StreamCryptoSession GetCryptoSession() const
Data to manage stream cryptography To get class structure manages any encryption values required in o...
Definition VideoCodec.h:107
unsigned int GetExtraDataSize() const
Size of the data given with extraData.
Definition VideoCodec.h:97
@ VIDEOCODEC_FORMAT_MAXFORMATS
The maximum value to use in a list.
Definition video_codec.h:108
@ VIDEOCODEC_FORMAT_UNKNOWN
Unknown types, this is used to declare the end of a list of requested types.
Definition video_codec.h:61
VIDEOCODEC_RETVAL
Changes since 2.1.0 (ABI 2.2.0)
Definition video_codec.h:35
@ VC_ERROR
An error occurred, no other messages will be returned.
Definition video_codec.h:40
~CInstanceVideoCodec() override=default
Destructor.
virtual bool Open(const kodi::addon::VideoCodecInitdata &initData)
Open the decoder, returns true on success.
Definition VideoCodec.h:292
virtual VIDEOCODEC_RETVAL GetPicture(VIDEOCODEC_PICTURE &picture)
GetPicture controls decoding.
Definition VideoCodec.h:330
virtual void Reset()
Reset the decoder.
Definition VideoCodec.h:346
bool GetFrameBuffer(VIDEOCODEC_PICTURE &picture)
AddonToKodi interface.
Definition VideoCodec.h:367
void ReleaseFrameBuffer(void *buffer)
Release the with GetFrameBuffer() given framebuffer.
Definition VideoCodec.h:382
virtual bool Reconfigure(const kodi::addon::VideoCodecInitdata &initData)
Reconfigure the decoder, returns true on success.
Definition VideoCodec.h:306
bool GetFrameBufferPlatformHandle(KODI_HANDLE videoBufferHandle, VIDEOCODEC_PLATFORM_BUFFER &platformBuffer)
Query the platform-native buffer handle for a buffer previously obtained via GetFrameBuffer().
Definition VideoCodec.h:411
virtual const char * GetName()
should return codecs name
Definition VideoCodec.h:339
CInstanceVideoCodec(const IInstanceInfo &instance)
Video codec class constructor used to support multiple instance types.
Definition VideoCodec.h:260
virtual bool AddData(const DEMUX_PACKET &packet)
add data, decoder has to consume the entire packet
Definition VideoCodec.h:316
Definition video_codec.h:476
Definition addon_base.h:269
Definition video_codec.h:419