Kodi Development 22.0
for Binary and Script based Add-Ons
 
Loading...
Searching...
No Matches

Detailed Description

Class: kodi::addon::CInstanceImageDecoder

Image decoder add-on instance
This instance type is used to allow Kodi various additional image format types.

This usage can be requested under various conditions, by a Mimetype protocol defined in addon.xml or supported file extensions.

Include the header #include <kodi/addon-instance/ImageDecoder.h> to use this class.


Here is an example of what the addon.xml.in would look like for an image decoder addon:

<?xml version="1.0" encoding="UTF-8"?>
<addon
id="imagedecoder.myspecialnamefor"
version="1.0.0"
name="My image decoder addon"
provider-name="Your Name">
<requires>@ADDON_DEPENDS@</requires>
<extension
point="kodi.imagedecoder"
library_@PLATFORM@="@LIBRARY_FILENAME@">
<support>
<mimetype name="image/mymimea">
<extension>.imga</extension>
<description>30100</description>
<icon>resources/file_format_icon_a.png</icon>
</mimetype>
<mimetype name="image/mymimeb">
<extension>.imgb</extension>
<description>30101</description>
<icon>resources/file_format_icon_b.png</icon>
</mimetype>
</support>
</extension>
<extension point="xbmc.addon.metadata">
<summary lang="en_GB">My image decoder addon summary</summary>
<description lang="en_GB">My image decoder description</description>
<platform>@PLATFORM@</platform>
</extension>
</addon>

Standard values that can be declared for processing in addon.xml.

These values are used by Kodi to identify associated images and file extensions and then to select the associated addon.

Labels Type Description
point string The identification of the addon instance to image decoder is mandatory kodi.imagedecoder. In addition, the instance declared in the first <support> is also the main type of addon.
library_@PLATFORM@ string The runtime library used for the addon. This is usually declared by cmake and correctly displayed in the translated addon.xml.
<support>...</support> XML group Contains the formats supported by the addon.
<mimetype name="image/mymimea">...</mimetype> string / group The from addon operated image mimetypes.
Optional can be with <description> and <icon> additional info added where used for list views in Kodi.
<mimetype ...><extension>...</extension></mimetype> string The file extensions / styles supported by this addon and relates to given mimetype before.
Note
Required to use about info support by CInstanceImageDecoder::SupportsFile and CInstanceImageDecoder::ReadTag!
Remarks
For more detailed description of the addon.xml, see also https://kodi.wiki/view/Addon.xml.

Example:

#include <kodi/addon-instance/ImageDecoder.h>
class ATTR_DLL_LOCAL CMyImageDecoder : public kodi::addon::CInstanceImageDecoder
{
public:
CMyImageDecoder(const kodi::addon::IInstanceInfo& instance);
bool LoadImageFromMemory(const uint8_t* buffer,
size_t bufSize,
unsigned int& width,
unsigned int& height) override;
bool Decode(uint8_t* pixels,
unsigned int width,
unsigned int height,
unsigned int pitch,
ADDON_IMG_FMT format) override;
...
};
CMyImageDecoder::CMyImageDecoder(const kodi::addon::IInstanceInfo& instance)
: CInstanceImageDecoder(instance)
{
...
}
bool CMyImageDecoder::LoadImageFromMemory(const uint8_t* buffer,
size_t bufSize,
unsigned int& width,
unsigned int& height)
{
...
return true;
}
bool CMyImageDecoder::Decode(uint8_t* pixels,
unsigned int width,
unsigned int height,
unsigned int pitch,
ADDON_IMG_FMT format) override;
{
...
return true;
}
//----------------------------------------------------------------------
class ATTR_DLL_LOCAL CMyAddon : public kodi::addon::CAddonBase
{
public:
CMyAddon() = default;
ADDON_STATUS CreateInstance(const kodi::addon::IInstanceInfo& instance,
KODI_ADDON_INSTANCE_HDL& hdl) override;
};
// If you use only one instance in your add-on, can be instanceType and
// instanceID ignored
ADDON_STATUS CMyAddon::CreateInstance(const kodi::addon::IInstanceInfo& instance,
KODI_ADDON_INSTANCE_HDL& hdl)
{
{
kodi::Log(ADDON_LOG_INFO, "Creating my image decoder instance");
hdl = new CMyImageDecoder(instance);
}
else if (...)
{
...
}
}
ADDONCREATOR(CMyAddon)
Definition AddonBase.h:583
Definition ImageDecoder.h:537
Definition AddonBase.h:306
@ 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_IMAGEDECODER
Image decoder instance, see kodi::addon::CInstanceImageDecoder.
Definition versions.h:245
bool IsType(KODI_ADDON_INSTANCE_TYPE type) const
Check asked type used on this class.
Definition AddonBase.h:333
ADDON_IMG_FMT
Definition imagedecoder.h:30
void ATTR_DLL_LOCAL Log(const ADDON_LOG loglevel, const char *format,...)
Add a message to Kodi's log.
Definition AddonBase.h:1746

The destruction of the example class CMyImageDecoder is called from Kodi's header. Manually deleting the add-on instance is not required.

Topics

 Definitions, structures and enumerators
 Image decoder add-on general variables
 

Function Documentation

◆ CInstanceImageDecoder()

CInstanceImageDecoder ( const IInstanceInfo & instance)
inlineexplicit

Class constructor.

Parameters
[in]instanceThe from Kodi given instance given be add-on CreateInstance call with instance id ADDON_INSTANCE_IMAGEDECODER.

◆ SupportsFile()

virtual bool SupportsFile ( const std::string & filename)
inlinevirtual

Checks addon support given file path.

Parameters
[in]filenameThe file to read
Returns
true if successfully done and supported, otherwise false
Note
Optional to add, as default becomes true used.

◆ ReadTag()

virtual bool ReadTag ( const std::string & file,
kodi::addon::ImageDecoderInfoTag & tag )
inlinevirtual

Read tag of a file.

Parameters
[in]fileFile to read tag for
[out]tagInformation tag about
Returns
True on success, false on failure

The following table contains values that can be set with class ImageDecoderInfoTag :

Name Type Set call Get call
Width int SetWidth GetWidth
Height int SetHeight GetHeight
Distance float SetDistance GetDistance
Color enum ADDON_IMG_COLOR SetColor GetColor
Orientation enum ADDON_IMG_ORIENTATION SetOrientation GetOrientation
Metering mode enum ADDON_IMG_METERING_MODE SetMeteringMode GetMeteringMode
Exposure time float SetExposureTime GetExposureTime
Exposure bias float SetExposureBias GetExposureBias
Exposure program enum ADDON_IMG_EXPOSURE_PROGRAM SetExposureProgram GetExposureProgram
Exposure mode enum ADDON_IMG_EXPOSURE_MODE SetExposureMode GetExposureMode
Time created time_t SetTimeCreated GetTimeCreated
Aperture F number float SetApertureFNumber GetApertureFNumber
Flash used ADDON_IMG_FLASH_TYPE SetFlashUsed GetFlashUsed
Light source ADDON_IMG_LIGHT_SOURCE SetLightSource GetLightSource
Focal length int SetFocalLength GetFocalLength
Focal length in 35 mm format int SetFocalLengthIn35mmFormat GetFocalLengthIn35mmFormat
Digital zoom ratio float SetDigitalZoomRatio GetDigitalZoomRatio
ISO sensitivity float SetISOSpeed GetISOSpeed
Camera manufacturer std::string SetCameraManufacturer GetCameraManufacturer
GPS info bool, char, float[3], char, float[3], int, float SetGPSInfo GetGPSInfo
Camera model std::string SetCameraModel GetCameraModel
Author std::string SetAuthor GetAuthor
Description std::string SetDescription GetDescription
Copyright std::string SetCopyright GetCopyright

◆ LoadImageFromMemory()

virtual bool LoadImageFromMemory ( const std::string & mimetype,
const uint8_t * buffer,
size_t bufSize,
unsigned int & width,
unsigned int & height )
pure virtual

Initialize an encoder.

Parameters
[in]mimetypeThe mimetype wanted from Kodi
[in]bufferThe data to read from memory
[in]bufSizeThe buffer size
[in,out]widthThe optimal width of image on entry, obtained width on return
[in,out]heightThe optimal height of image, actual obtained height on return
Returns
true if successful done, false on error

◆ Decode()

virtual bool Decode ( uint8_t * pixels,
unsigned int width,
unsigned int height,
unsigned int pitch,
ADDON_IMG_FMT format )
pure virtual

Decode previously loaded image.

Parameters
[in]pixelsOutput buffer
[in]widthWidth of output image
[in]heightHeight of output image
[in]pitchPitch of output image
[in]formatFormat of output image
Returns
true if successful done, false on error