Kodi Development  20.0
for Binary and Script based Add-Ons

Detailed Description

PVR TV stream
Stream processing regarding live TV.


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

Header parts:

bool OpenLiveStream(const kodi::addon::PVRChannel& channel) override;
void CloseLiveStream() override;
int ReadLiveStream(unsigned char* buffer, unsigned int size) override;
int64_t SeekLiveStream(int64_t position, int whence) override;
int64_t LengthLiveStream() override;
PVR_ERROR GetStreamProperties(std::vector<kodi::addon::PVRStreamProperties>& properties) override;
DEMUX_PACKET* DemuxRead() override;
void DemuxReset() override;
void DemuxAbort() override;
void DemuxFlush() override;
void SetSpeed(int speed) override;
void FillBuffer(bool mode) override;
bool SeekTime(double time, bool backwards, double& startpts) override;
Definition: Channels.h:39
Definition: demux_packet.h:46
PVR_ERROR
Definition: pvr_general.h:35
virtual PVR_ERROR GetStreamProperties(std::vector< kodi::addon::PVRStreamProperties > &properties)
Get the stream properties of the stream that's currently being read.
Definition: PVR.h:2427
virtual void DemuxReset()
Reset the demultiplexer in the add-on.
Definition: PVR.h:2455
virtual void DemuxAbort()
Abort the demultiplexer thread in the add-on.
Definition: PVR.h:2463
virtual DEMUX_PACKET * DemuxRead()
Read the next packet from the demultiplexer, if there is one.
Definition: PVR.h:2447
virtual void DemuxFlush()
Flush all data that's currently in the demultiplexer buffer in the add-on.
Definition: PVR.h:2472
virtual bool SeekTime(double time, bool backwards, double &startpts)
Notify the pvr addon/demuxer that Kodi wishes to seek the stream by time.
Definition: PVR.h:2508
virtual void SetSpeed(int speed)
Notify the pvr addon/demuxer that Kodi wishes to change playback speed.
Definition: PVR.h:2483
virtual void FillBuffer(bool mode)
Notify the pvr addon/demuxer that Kodi wishes to fill demux queue.
Definition: PVR.h:2493
virtual void CloseLiveStream()
Close an open live stream.
Definition: PVR.h:2351
virtual bool OpenLiveStream(const kodi::addon::PVRChannel &channel)
Open a live stream on the backend.
Definition: PVR.h:2342
virtual int64_t SeekLiveStream(int64_t position, int whence)
Seek in a live stream on a backend that supports timeshifting.
Definition: PVR.h:2384
virtual int ReadLiveStream(unsigned char *buffer, unsigned int size)
Read from an open live stream.
Definition: PVR.h:2364
virtual int64_t LengthLiveStream()
Obtain the length of a live stream.
Definition: PVR.h:2395

Source parts:

bool CMyInstance::OpenLiveStream(const kodi::addon::PVRChannel& channel)
{
return false;
}
void CMyInstance::CloseLiveStream()
{
}
int CMyInstance::ReadLiveStream(unsigned char* buffer, unsigned int size)
{
return 0;
}
int64_t CMyInstance::SeekLiveStream(int64_t position, int whence)
{
return 0;
}
int64_t CMyInstance::LengthLiveStream()
{
return 0;
}
PVR_ERROR CMyInstance::GetStreamProperties(std::vector<kodi::addon::PVRStreamProperties>& properties)
{
}
DEMUX_PACKET* CMyInstance::DemuxRead()
{
return nullptr;
}
void CMyInstance::DemuxReset()
{
}
void CMyInstance::DemuxAbort()
{
}
void CMyInstance::DemuxFlush()
{
}
void CMyInstance::SetSpeed(int speed)
{
}
void CMyInstance::FillBuffer(bool mode)
{
}
bool CMyInstance::SeekTime(double time, bool backwards, double& startpts)
{
return false;
}
@ PVR_ERROR_NOT_IMPLEMENTED
-2 : The method that Kodi called is not implemented by the add-on.
Definition: pvr_general.h:43

Modules

 Group header include
 
 Group source include
 
 8.1.1. Stream demuxing
 PVR stream demuxing
Read TV streams with own demux within addon.
 

Function Documentation

◆ OpenLiveStream()

virtual bool OpenLiveStream ( const kodi::addon::PVRChannel channel)
inlinevirtual

Open a live stream on the backend.

Parameters
[in]channelThe channel to stream.
Returns
True if the stream has been opened successfully, false otherwise.

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
Required if PVRCapabilities::SetHandlesInputStream() or PVRCapabilities::SetHandlesDemuxing() is set to true. CloseLiveStream() will always be called by Kodi prior to calling this function.

◆ CloseLiveStream()

virtual void CloseLiveStream ( )
inlinevirtual

Close an open live stream.

Remarks
Required if PVRCapabilities::SetHandlesInputStream() or PVRCapabilities::SetHandlesDemuxing() is set to true.

◆ ReadLiveStream()

virtual int ReadLiveStream ( unsigned char *  buffer,
unsigned int  size 
)
inlinevirtual

Read from an open live stream.

Parameters
[in]pBufferThe buffer to store the data in.
[in]iBufferSizeThe amount of bytes to read.
Returns
The amount of bytes that were actually read from the stream.
Remarks
Required if PVRCapabilities::SetHandlesInputStream() is set to true.

◆ SeekLiveStream()

virtual int64_t SeekLiveStream ( int64_t  position,
int  whence 
)
inlinevirtual

Seek in a live stream on a backend that supports timeshifting.

Parameters
[in]positionThe position to seek to.
[in]whence[optional] offset relative to You can set the value of whence to one of three things:
Value int Description
SEEK_SET 0 position is relative to the beginning of the file. This is probably what you had in mind anyway, and is the most commonly used value for whence.
SEEK_CUR 1 position is relative to the current file pointer position. So, in effect, you can say, "Move to my current position plus 30 bytes," or, "move to my current position minus 20 bytes."
SEEK_END 2 position is relative to the end of the file. Just like SEEK_SET except from the other end of the file. Be sure to use negative values for offset if you want to back up from the end of the file, instead of going past the end into oblivion.
Returns
The new position.
Remarks
Optional, and only used if PVRCapabilities::SetHandlesInputStream() is set to true.

◆ LengthLiveStream()

virtual int64_t LengthLiveStream ( )
inlinevirtual

Obtain the length of a live stream.

Returns
The total length of the stream that's currently being read.
Remarks
Optional, and only used if PVRCapabilities::SetHandlesInputStream() is set to true.