Kodi Documentation 22.0
Kodi is an open source media player and entertainment hub.
Loading...
Searching...
No Matches
2. Channels (required)

Functions to get available TV or Radio channels
These are mandatory functions for using this addon to get the available channels. More...

Functions

virtual PVR_ERROR kodi::addon::CInstancePVRClient::GetProvidersAmount (int &amount)
 The total amount of providers on the backend.
 
virtual PVR_ERROR kodi::addon::CInstancePVRClient::GetProviders (kodi::addon::PVRProvidersResultSet &results)
 Request the list of all providers from the backend.
 
void kodi::addon::CInstancePVRClient::TriggerProvidersUpdate ()
 Callback to Kodi Function
Request Kodi to update it's list of providers.
 
virtual PVR_ERROR kodi::addon::CInstancePVRClient::GetChannelsAmount (int &amount)
 The total amount of channels on the backend.
 
virtual PVR_ERROR kodi::addon::CInstancePVRClient::GetChannels (bool radio, kodi::addon::PVRChannelsResultSet &results)
 Request the list of all channels from the backend.
 
virtual PVR_ERROR kodi::addon::CInstancePVRClient::GetChannelStreamProperties (const kodi::addon::PVRChannel &channel, PVR_SOURCE source, std::vector< kodi::addon::PVRStreamProperty > &properties)
 Get the stream properties for a channel from the backend.
 
virtual PVR_ERROR kodi::addon::CInstancePVRClient::GetSignalStatus (int channelUid, kodi::addon::PVRSignalStatus &signalStatus)
 Get the signal status of the stream that's currently open.
 
virtual PVR_ERROR kodi::addon::CInstancePVRClient::GetDescrambleInfo (int channelUid, kodi::addon::PVRDescrambleInfo &descrambleInfo)
 Get the descramble information of the stream that's currently open.
 
void kodi::addon::CInstancePVRClient::TriggerChannelUpdate ()
 Callback to Kodi Function
Request Kodi to update it's list of channels.
 

Detailed Description

Functions to get available TV or Radio channels
These are mandatory functions for using this addon to get the available channels.

Remarks
Either SetSupportsTV() or SetSupportsRadio() is required to be set to true.
If a channel changes after the initial import, or if a new one was added, then the add-on should call TriggerChannelUpdate().

Channel parts in interface:
Copy this to your project and extend with your parts or leave functions complete away where not used or supported.

Function Documentation

◆ GetChannels()

virtual PVR_ERROR kodi::addon::CInstancePVRClient::GetChannels ( bool radio,
kodi::addon::PVRChannelsResultSet & results )
inlinevirtual

Request the list of all channels from the backend.

Parameters
[in]radioTrue to get the radio channels, false to get the TV channels.
[out]resultsThe channels defined with class PVRChannel and available at the addon, them transferred with class PVRChannelsResultSet.
Returns
PVR_ERROR_NO_ERROR if the list has been fetched successfully.

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

Name Type Set call Get call Usage
Unique id unsigned int SetUniqueId GetUniqueId required to set
Is radio bool SetIsRadio GetIsRadio required to set
Channel number unsigned int SetChannelNumber GetChannelNumber optional
Sub channel number unsigned int SetSubChannelNumber GetSubChannelNumber optional
Channel name std::string SetChannelName GetChannelName optional
Mime type std::string SetMimeType GetMimeType optional
Encryption system unsigned int SetEncryptionSystem GetEncryptionSystem optional
Icon path std::string SetIconPath GetIconPath optional
Is hidden bool SetIsHidden GetIsHidden optional
Has archive bool SetHasArchive GetHasArchive optional
Order int SetOrder GetOrder optional
Client provider unique identifier int SetClientProviderUid GetClientProviderUid optional

Remarks
If PVRCapabilities::SetSupportsTV() is set to true, a valid result set needs to be provided for radio = false.
If PVRCapabilities::SetSupportsRadio() is set to true, a valid result set needs to be provided for radio = true. At least one of these two must provide a valid result set.

Example:

...
PVR_ERROR CMyPVRInstance::GetChannels(bool radio, kodi::addon::PVRChannelsResultSet& results)
{
// Minimal demo example, in reality bigger and loop to transfer all
channel.SetUniqueId(123);
channel.SetIsRadio(false);
channel.SetChannelNumber(1);
channel.SetChannelName("My channel name");
...
// Give it now to Kodi
results.Add(channel);
}
...
Definition Channels.h:39
Definition Channels.h:226
void SetChannelName(const std::string &channelName)
optional Channel name given to this channel.
Definition Channels.h:107
void SetUniqueId(unsigned int uniqueId)
required Unique identifier for this channel.
Definition Channels.h:73
void SetChannelNumber(unsigned int channelNumber)
optional Channel number of this channel on the backend.
Definition Channels.h:87
void SetIsRadio(bool isRadio)
required true if this is a radio channel, false if it's a TV channel.
Definition Channels.h:80
void Add(const kodi::addon::PVRChannel &tag)
To add and give content from addon to Kodi on related call.
Definition Channels.h:242
@ PVR_ERROR_NO_ERROR
0 : No error occurred.
Definition pvr_general.h:38

◆ GetChannelsAmount()

virtual PVR_ERROR kodi::addon::CInstancePVRClient::GetChannelsAmount ( int & amount)
inlinevirtual

The total amount of channels on the backend.

Parameters
[out]amountThe total amount of channels on the backend
Returns
PVR_ERROR_NO_ERROR if the amount has been fetched successfully.
Remarks
Valid implementation required.

◆ GetChannelStreamProperties()

virtual PVR_ERROR kodi::addon::CInstancePVRClient::GetChannelStreamProperties ( const kodi::addon::PVRChannel & channel,
PVR_SOURCE source,
std::vector< kodi::addon::PVRStreamProperty > & properties )
inlinevirtual

Get the stream properties for a channel from the backend.

Parameters
[in]channelThe channel to get the stream properties for.
[in]sourcePVR_SOURCE_EPG_AS_LIVE if this call resulted from PVR_STREAM_PROPERTY_EPGPLAYBACKASLIVE being set from GetEPGTagStreamProperties(), DEFAULT otherwise
[out]propertiesthe properties required to play the stream.
Returns
PVR_ERROR_NO_ERROR if the stream is available.
Remarks
If SetSupportsTV or SetSupportsRadio are set to true and SetHandlesInputStream is set to false.

In this case the implementation must fill the property PVR_STREAM_PROPERTY_STREAMURL with the URL Kodi should resolve to playback the channel.
Note
The value directly related to inputstream must always begin with the name of the associated add-on, e.g. "inputstream.adaptive.manifest_update_parameter".

Example:

...
PVR_ERROR CMyPVRInstance::GetChannelStreamProperties(const kodi::addon::PVRChannel& channel,
PVR_SOURCE source,
std::vector<kodi::addon::PVRStreamProperty>& properties)
{
...
properties.emplace_back(PVR_STREAM_PROPERTY_INPUTSTREAM, "inputstream.adaptive");
properties.emplace_back("inputstream.adaptive.manifest_type", "mpd");
properties.emplace_back("inputstream.adaptive.manifest_update_parameter", "full");
properties.emplace_back(PVR_STREAM_PROPERTY_MIMETYPE, "application/xml+dash");
}
...
PVR_SOURCE
Definition pvr_general.h:127
#define PVR_STREAM_PROPERTY_MIMETYPE
the MIME type of the stream that should be played.
Definition pvr_general.h:311
#define PVR_STREAM_PROPERTY_INPUTSTREAM
To define in stream properties the name of the inputstream add-on that should be used.
Definition pvr_general.h:235

◆ GetDescrambleInfo()

virtual PVR_ERROR kodi::addon::CInstancePVRClient::GetDescrambleInfo ( int channelUid,
kodi::addon::PVRDescrambleInfo & descrambleInfo )
inlinevirtual

Get the descramble information of the stream that's currently open.

Parameters
[out]descrambleInfoThe descramble information.
Returns
PVR_ERROR_NO_ERROR if the descramble information has been read successfully, false otherwise.
Remarks
Optional, and only used if supportsDescrambleInfo is set to true.

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

Name Type Set call Get call Usage
Packet identifier int SetPID GetPID optional
Conditional access identifier int SetCAID GetCAID optional
Provider-ID int SetProviderID GetProviderID optional
ECM time int SetECMTime GetECMTime optional
Hops int SetHops GetHops optional
Descramble card system std::string SetHops GetHops optional
Reader std::string SetReader GetReader optional
From std::string SetFrom GetFrom optional
Protocol std::string SetProtocol GetProtocol optional

◆ GetProviders()

virtual PVR_ERROR kodi::addon::CInstancePVRClient::GetProviders ( kodi::addon::PVRProvidersResultSet & results)
inlinevirtual

Request the list of all providers from the backend.

Parameters
[out]resultsThe channels defined with class PVRProvider and available at the addon, then transferred with class PVRProvidersResultSet.
Returns
PVR_ERROR_NO_ERROR if the list has been fetched successfully.
Remarks
Optional, and only used if supportsProviders is set to true.

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

Name Type Set call Get call Usage
Unique id unsigned int SetUniqueId GetUniqueId required to set
Provider name std::string SetName GetName required to set
Provider type PVR_PROVIDER_TYPE SetType GetType optional
Icon path std::string SetIconPath GetIconPath optional
Countries std::vector<std::string> SetCountries GetCountries optional
Languages std::vector<std::string> SetLanguages GetLanguages optional

Example:

...
PVR_ERROR CMyPVRInstance::GetProviders(kodi::addon::PVRProvidersResultSet& results)
{
// Minimal demo example, in reality bigger and loop to transfer all
provider.SetUniqueId(123);
provider.SetProviderName("My provider name");
provider.SetProviderType(PVR_PROVIDER_TYPE_SATELLITE);
...
// Give it now to Kodi
results.Add(provider);
}
...
Definition Providers.h:40
Definition Providers.h:189
@ PVR_PROVIDER_TYPE_SATELLITE
2 : Satellite provider.
Definition pvr_providers.h:55
void SetUniqueId(unsigned int uniqueId)
required Unique identifier for this provider.
Definition Providers.h:68
void Add(const kodi::addon::PVRProvider &provider)
To add and give content from addon to Kodi on related call.
Definition Providers.h:205

◆ GetProvidersAmount()

virtual PVR_ERROR kodi::addon::CInstancePVRClient::GetProvidersAmount ( int & amount)
inlinevirtual

The total amount of providers on the backend.

Parameters
[out]amountThe total amount of providers on the backend
Returns
PVR_ERROR_NO_ERROR if the amount has been fetched successfully.
Remarks
Optional, and only used if supportsProviders is set to true.

◆ GetSignalStatus()

virtual PVR_ERROR kodi::addon::CInstancePVRClient::GetSignalStatus ( int channelUid,
kodi::addon::PVRSignalStatus & signalStatus )
inlinevirtual

Get the signal status of the stream that's currently open.

Parameters
[out]signalStatusThe signal status.
Returns
PVR_ERROR_NO_ERROR if the signal status has been read successfully, false otherwise.
Remarks
Optional, and only used if SetHandlesInputStream is set to true.

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

Name Type Set call Get call Usage
Adapter name std::string SetAdapterName GetAdapterName optional
Adapter status std::string SetAdapterStatus GetAdapterStatus optional
Service name std::string SetServiceName GetServiceName optional
Provider name std::string SetProviderName GetProviderName optional
Mux name std::string SetMuxName GetMuxName optional
Signal/noise ratio int SetSNR GetSNR optional
Signal strength int SetSignal GetSignal optional
Bit error rate long SetBER GetBER optional
Uncorrected blocks long SetUNC GetUNC optional

Here's example about the use of this:

...
class ATTR_DLL_LOCAL CPVRExample
{
public:
...
PVR_ERROR SignalStatus(PVRSignalStatus &signalStatus) override
{
signalStatus.SetAapterName("Example adapter 1");
signalStatus.SetAdapterStatus("OK");
signalStatus.SetSignal(0xFFFF); // 100%
}
};
ADDONCREATOR(CPVRExample)
#define ATTR_DLL_LOCAL
Definition addon_base.h:86
Definition kodi-dev-kit/include/kodi/AddonBase.h:775
Definition addon-instance/pvr.h:404
Definition Channels.h:271
void SetAdapterStatus(const std::string &adapterStatus)
optional Status of the adapter that's being used.
Definition Channels.h:315
void SetSignal(int signal)
optional Signal strength.
Definition Channels.h:378
PVR_ERROR
Definition pvr_general.h:36
#define ADDONCREATOR(AddonClass)
Definition kodi-dev-kit/include/kodi/AddonBase.h:2047

◆ TriggerChannelUpdate()

void kodi::addon::CInstancePVRClient::TriggerChannelUpdate ( )
inline

Callback to Kodi Function
Request Kodi to update it's list of channels.

Remarks
Only called from addon itself.

◆ TriggerProvidersUpdate()

void kodi::addon::CInstancePVRClient::TriggerProvidersUpdate ( )
inline

Callback to Kodi Function
Request Kodi to update it's list of providers.

Remarks
Only called from addon itself.