PVR stream demuxing
Read TV streams with own demux within addon.
This is only on Live TV streams and only if PVRCapabilities::SetHandlesDemuxing() has been set to "true".
Stream demuxing 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 SeekTime(
double time,
bool backwards,
double& startpts)
override;
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
Source parts:
PVR_ERROR CMyInstance::GetStreamProperties(std::vector<kodi::addon::PVRStreamProperties>& properties)
{
}
{
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
◆ GetStreamProperties()
Get the stream properties of the stream that's currently being read.
- Parameters
-
[in] | properties | The properties of the currently playing stream. |
- Returns
- PVR_ERROR_NO_ERROR if the properties have been fetched successfully.
◆ DemuxRead()
Read the next packet from the demultiplexer, if there is one.
- Returns
- The next packet. If there is no next packet, then the add-on should return the packet created by calling AllocateDemuxPacket(0) on the callback. If the stream changed and Kodi's player needs to be reinitialised, then, the add-on should call AllocateDemuxPacket(0) on the callback, and set the streamid to DMX_SPECIALID_STREAMCHANGE and return the value. The add-on should return
nullptr
if an error occurred.
◆ DemuxReset()
virtual void DemuxReset |
( |
| ) |
|
|
inlinevirtual |
Reset the demultiplexer in the add-on.
◆ DemuxAbort()
virtual void DemuxAbort |
( |
| ) |
|
|
inlinevirtual |
Abort the demultiplexer thread in the add-on.
◆ DemuxFlush()
virtual void DemuxFlush |
( |
| ) |
|
|
inlinevirtual |
Flush all data that's currently in the demultiplexer buffer in the add-on.
◆ SetSpeed()
virtual void SetSpeed |
( |
int |
speed | ) |
|
|
inlinevirtual |
Notify the pvr addon/demuxer that Kodi wishes to change playback speed.
- Parameters
-
[in] | speed | The requested playback speed |
◆ FillBuffer()
virtual void FillBuffer |
( |
bool |
mode | ) |
|
|
inlinevirtual |
Notify the pvr addon/demuxer that Kodi wishes to fill demux queue.
- Parameters
-
[in] | mode | The requested filling mode |
◆ SeekTime()
virtual bool SeekTime |
( |
double |
time, |
|
|
bool |
backwards, |
|
|
double & |
startpts |
|
) |
| |
|
inlinevirtual |
Notify the pvr addon/demuxer that Kodi wishes to seek the stream by time.
- Parameters
-
[in] | time | The absolute time since stream start |
[in] | backwards | True to seek to keyframe BEFORE time, else AFTER |
[in] | startpts | can be updated to point to where display should start |
- Returns
- True if the seek operation was possible
◆ GetCodecByName()
PVRCodec GetCodecByName |
( |
const std::string & |
codecName | ) |
const |
|
inline |
Callback to Kodi Function
Get the codec id used by Kodi.
- Parameters
-
[in] | codecName | The name of the codec |
- Returns
- The codec_id, or a codec_id with 0 values when not supported
◆ AllocateDemuxPacket()
Callback to Kodi Function
Allocate a demux packet. Free with FreeDemuxPacket().
- Parameters
-
[in] | iDataSize | The size of the data that will go into the packet |
- Returns
- The allocated packet
◆ FreeDemuxPacket()
Callback to Kodi Function
Free a packet that was allocated with AllocateDemuxPacket().
- Parameters
-
[in] | pPacket | The packet to free |