463 if (CPrivateBase::m_interface->globalSingleInstance !=
nullptr)
464 throw std::logic_error(
"kodi::addon::CInstancePVRClient: Creation of more as one in single "
465 "instance way is not allowed!");
467 SetAddonStruct(CPrivateBase::m_interface->firstKodiInstance);
468 CPrivateBase::m_interface->globalSingleInstance =
this;
507 if (CPrivateBase::m_interface->globalSingleInstance !=
nullptr)
508 throw std::logic_error(
"kodi::addon::CInstancePVRClient: Creation of multiple together with "
509 "single instance way is not allowed!");
511 SetAddonStruct(instance);
744 m_instanceData->toKodi->AddMenuHook(m_instanceData->toKodi->kodiInstance, hook);
778 const std::string& message)
780 m_instanceData->toKodi->ConnectionStateChange(
781 m_instanceData->toKodi->kodiInstance, connectionString.c_str(), newState, message.c_str());
795 inline std::string
UserPath()
const {
return m_instanceData->props->strUserPath; }
808 inline std::string
ClientPath()
const {
return m_instanceData->props->strClientPath; }
902 m_instanceData->toKodi->TriggerProvidersUpdate(m_instanceData->toKodi->kodiInstance);
1012 std::vector<kodi::addon::PVRStreamProperty>& properties)
1094 m_instanceData->toKodi->TriggerChannelUpdate(m_instanceData->toKodi->kodiInstance);
1255 m_instanceData->toKodi->TriggerChannelGroupsUpdate(m_instanceData->toKodi->kodiInstance);
1514 std::vector<kodi::addon::PVREDLEntry>& edl)
1654 m_instanceData->toKodi->TriggerEpgUpdate(m_instanceData->toKodi->kodiInstance, channelUid);
1692 m_instanceData->toKodi->EpgEventStateChange(m_instanceData->toKodi->kodiInstance, tag,
1889 int lastplayedposition)
1927 std::vector<kodi::addon::PVREDLEntry>& edl)
1987 std::vector<kodi::addon::PVRStreamProperty>& properties)
2026 const std::string& fileName,
2029 m_instanceData->toKodi->RecordingNotification(m_instanceData->toKodi->kodiInstance,
2030 recordingName.c_str(), fileName.c_str(), on);
2042 m_instanceData->toKodi->TriggerRecordingUpdate(m_instanceData->toKodi->kodiInstance);
2225 m_instanceData->toKodi->TriggerTimerUpdate(m_instanceData->toKodi->kodiInstance);
2511 virtual bool SeekTime(
double time,
bool backwards,
double& startpts) {
return false; }
2525 return PVRCodec(m_instanceData->toKodi->GetCodecByName(m_instanceData->toKodi->kodiInstance,
2526 codecName.c_str()));
2541 return m_instanceData->toKodi->AllocateDemuxPacket(m_instanceData->toKodi->kodiInstance,
2556 m_instanceData->toKodi->FreeDemuxPacket(m_instanceData->toKodi->kodiInstance, pPacket);
2824 instance->hdl =
this;
2827 instance->pvr->toAddon->GetCapabilities = ADDON_GetCapabilities;
2828 instance->pvr->toAddon->GetConnectionString = ADDON_GetConnectionString;
2829 instance->pvr->toAddon->GetBackendName = ADDON_GetBackendName;
2830 instance->pvr->toAddon->GetBackendVersion = ADDON_GetBackendVersion;
2831 instance->pvr->toAddon->GetBackendHostname = ADDON_GetBackendHostname;
2832 instance->pvr->toAddon->GetDriveSpace = ADDON_GetDriveSpace;
2833 instance->pvr->toAddon->CallSettingsMenuHook = ADDON_CallSettingsMenuHook;
2835 instance->pvr->toAddon->GetChannelsAmount = ADDON_GetChannelsAmount;
2836 instance->pvr->toAddon->GetChannels = ADDON_GetChannels;
2837 instance->pvr->toAddon->GetChannelStreamProperties = ADDON_GetChannelStreamProperties;
2838 instance->pvr->toAddon->GetSignalStatus = ADDON_GetSignalStatus;
2839 instance->pvr->toAddon->GetDescrambleInfo = ADDON_GetDescrambleInfo;
2841 instance->pvr->toAddon->GetProvidersAmount = ADDON_GetProvidersAmount;
2842 instance->pvr->toAddon->GetProviders = ADDON_GetProviders;
2844 instance->pvr->toAddon->GetChannelGroupsAmount = ADDON_GetChannelGroupsAmount;
2845 instance->pvr->toAddon->GetChannelGroups = ADDON_GetChannelGroups;
2846 instance->pvr->toAddon->GetChannelGroupMembers = ADDON_GetChannelGroupMembers;
2848 instance->pvr->toAddon->DeleteChannel = ADDON_DeleteChannel;
2849 instance->pvr->toAddon->RenameChannel = ADDON_RenameChannel;
2850 instance->pvr->toAddon->OpenDialogChannelSettings = ADDON_OpenDialogChannelSettings;
2851 instance->pvr->toAddon->OpenDialogChannelAdd = ADDON_OpenDialogChannelAdd;
2852 instance->pvr->toAddon->OpenDialogChannelScan = ADDON_OpenDialogChannelScan;
2853 instance->pvr->toAddon->CallChannelMenuHook = ADDON_CallChannelMenuHook;
2855 instance->pvr->toAddon->GetEPGForChannel = ADDON_GetEPGForChannel;
2856 instance->pvr->toAddon->IsEPGTagRecordable = ADDON_IsEPGTagRecordable;
2857 instance->pvr->toAddon->IsEPGTagPlayable = ADDON_IsEPGTagPlayable;
2858 instance->pvr->toAddon->GetEPGTagEdl = ADDON_GetEPGTagEdl;
2859 instance->pvr->toAddon->GetEPGTagStreamProperties = ADDON_GetEPGTagStreamProperties;
2860 instance->pvr->toAddon->SetEPGMaxPastDays = ADDON_SetEPGMaxPastDays;
2861 instance->pvr->toAddon->SetEPGMaxFutureDays = ADDON_SetEPGMaxFutureDays;
2862 instance->pvr->toAddon->CallEPGMenuHook = ADDON_CallEPGMenuHook;
2864 instance->pvr->toAddon->GetRecordingsAmount = ADDON_GetRecordingsAmount;
2865 instance->pvr->toAddon->GetRecordings = ADDON_GetRecordings;
2866 instance->pvr->toAddon->DeleteRecording = ADDON_DeleteRecording;
2867 instance->pvr->toAddon->UndeleteRecording = ADDON_UndeleteRecording;
2868 instance->pvr->toAddon->DeleteAllRecordingsFromTrash = ADDON_DeleteAllRecordingsFromTrash;
2869 instance->pvr->toAddon->RenameRecording = ADDON_RenameRecording;
2870 instance->pvr->toAddon->SetRecordingLifetime = ADDON_SetRecordingLifetime;
2871 instance->pvr->toAddon->SetRecordingPlayCount = ADDON_SetRecordingPlayCount;
2872 instance->pvr->toAddon->SetRecordingLastPlayedPosition = ADDON_SetRecordingLastPlayedPosition;
2873 instance->pvr->toAddon->GetRecordingLastPlayedPosition = ADDON_GetRecordingLastPlayedPosition;
2874 instance->pvr->toAddon->GetRecordingEdl = ADDON_GetRecordingEdl;
2875 instance->pvr->toAddon->GetRecordingSize = ADDON_GetRecordingSize;
2876 instance->pvr->toAddon->GetRecordingStreamProperties = ADDON_GetRecordingStreamProperties;
2877 instance->pvr->toAddon->CallRecordingMenuHook = ADDON_CallRecordingMenuHook;
2879 instance->pvr->toAddon->GetTimerTypes = ADDON_GetTimerTypes;
2880 instance->pvr->toAddon->GetTimersAmount = ADDON_GetTimersAmount;
2881 instance->pvr->toAddon->GetTimers = ADDON_GetTimers;
2882 instance->pvr->toAddon->AddTimer = ADDON_AddTimer;
2883 instance->pvr->toAddon->DeleteTimer = ADDON_DeleteTimer;
2884 instance->pvr->toAddon->UpdateTimer = ADDON_UpdateTimer;
2885 instance->pvr->toAddon->CallTimerMenuHook = ADDON_CallTimerMenuHook;
2887 instance->pvr->toAddon->OnSystemSleep = ADDON_OnSystemSleep;
2888 instance->pvr->toAddon->OnSystemWake = ADDON_OnSystemWake;
2889 instance->pvr->toAddon->OnPowerSavingActivated = ADDON_OnPowerSavingActivated;
2890 instance->pvr->toAddon->OnPowerSavingDeactivated = ADDON_OnPowerSavingDeactivated;
2892 instance->pvr->toAddon->OpenLiveStream = ADDON_OpenLiveStream;
2893 instance->pvr->toAddon->CloseLiveStream = ADDON_CloseLiveStream;
2894 instance->pvr->toAddon->ReadLiveStream = ADDON_ReadLiveStream;
2895 instance->pvr->toAddon->SeekLiveStream = ADDON_SeekLiveStream;
2896 instance->pvr->toAddon->LengthLiveStream = ADDON_LengthLiveStream;
2897 instance->pvr->toAddon->GetStreamProperties = ADDON_GetStreamProperties;
2898 instance->pvr->toAddon->StreamClosed = ADDON_StreamClosed;
2899 instance->pvr->toAddon->GetStreamReadChunkSize = ADDON_GetStreamReadChunkSize;
2900 instance->pvr->toAddon->IsRealTimeStream = ADDON_IsRealTimeStream;
2902 instance->pvr->toAddon->OpenRecordedStream = ADDON_OpenRecordedStream;
2903 instance->pvr->toAddon->CloseRecordedStream = ADDON_CloseRecordedStream;
2904 instance->pvr->toAddon->ReadRecordedStream = ADDON_ReadRecordedStream;
2905 instance->pvr->toAddon->SeekRecordedStream = ADDON_SeekRecordedStream;
2906 instance->pvr->toAddon->LengthRecordedStream = ADDON_LengthRecordedStream;
2907 instance->pvr->toAddon->IsRecordedStreamRealTime = ADDON_IsRecordedStreamRealTime;
2908 instance->pvr->toAddon->PauseRecordedStream = ADDON_PauseRecordedStream;
2909 instance->pvr->toAddon->GetRecordedStreamTimes = ADDON_GetRecordedStreamTimes;
2911 instance->pvr->toAddon->DemuxReset = ADDON_DemuxReset;
2912 instance->pvr->toAddon->DemuxAbort = ADDON_DemuxAbort;
2913 instance->pvr->toAddon->DemuxFlush = ADDON_DemuxFlush;
2914 instance->pvr->toAddon->DemuxRead = ADDON_DemuxRead;
2916 instance->pvr->toAddon->CanPauseStream = ADDON_CanPauseStream;
2917 instance->pvr->toAddon->PauseStream = ADDON_PauseStream;
2918 instance->pvr->toAddon->CanSeekStream = ADDON_CanSeekStream;
2919 instance->pvr->toAddon->SeekTime = ADDON_SeekTime;
2920 instance->pvr->toAddon->SetSpeed = ADDON_SetSpeed;
2921 instance->pvr->toAddon->FillBuffer = ADDON_FillBuffer;
2922 instance->pvr->toAddon->GetStreamTimes = ADDON_GetStreamTimes;
2924 instance->pvr->toAddon->FreeCapabilities = ADDON_FreeCapabilities;
2925 instance->pvr->toAddon->FreeTimerTypes = ADDON_FreeTimerTypes;
2926 instance->pvr->toAddon->FreeProperties = ADDON_FreeProperties;
2927 instance->pvr->toAddon->FreeDescrambleInfo = ADDON_FreeDescrambleInfo;
2928 instance->pvr->toAddon->FreeSignalStatus = ADDON_FreeSignalStatus;
2929 instance->pvr->toAddon->FreeEdlEntries = ADDON_FreeEdlEntries;
2930 instance->pvr->toAddon->FreeString = ADDON_FreeString;
2932 m_instanceData = instance->pvr;
2933 m_instanceData->toAddon->addonInstance =
this;
2939 PVRCapabilities cppCapabilities(capabilities);
2940 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
2941 ->GetCapabilities(cppCapabilities);
2947 PVRCapabilities::FreeResources(capabilities);
2953 std::string backendName;
2954 PVR_ERROR err =
static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
2955 ->GetBackendName(backendName);
2957 *str = AllocAndCopyString(backendName.c_str());
2963 std::string backendVersion;
2964 PVR_ERROR err =
static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
2965 ->GetBackendVersion(backendVersion);
2967 *str = AllocAndCopyString(backendVersion.c_str());
2973 std::string backendHostname;
2974 PVR_ERROR err =
static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
2975 ->GetBackendHostname(backendHostname);
2977 *str = AllocAndCopyString(backendHostname.c_str());
2983 std::string connectionString;
2984 PVR_ERROR err =
static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
2985 ->GetConnectionString(connectionString);
2987 *str = AllocAndCopyString(connectionString.c_str());
2995 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
2996 ->GetDriveSpace(*total, *used);
3002 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3003 ->CallSettingsMenuHook(menuhook);
3010 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3011 ->GetChannelsAmount(*amount);
3018 PVRChannelsResultSet result(instance, handle);
3019 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3020 ->GetChannels(radio, result);
3027 unsigned int* propertiesCount)
3029 *propertiesCount = 0;
3030 std::vector<PVRStreamProperty> propertiesList;
3031 PVR_ERROR error =
static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3032 ->GetChannelStreamProperties(channel, source, propertiesList);
3035 *properties = AllocAndCopyPointerArray<PVRStreamProperty, PVR_NAMED_VALUE>(propertiesList,
3045 PVRSignalStatus cppSignalStatus(signalStatus);
3046 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3047 ->GetSignalStatus(channelUid, cppSignalStatus);
3053 PVRSignalStatus::FreeResources(signalStatus);
3061 PVRDescrambleInfo cppDescrambleInfo(descrambleInfo);
3062 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3063 ->GetDescrambleInfo(channelUid, cppDescrambleInfo);
3069 PVRDescrambleInfo::FreeResources(descrambleInfo);
3077 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3078 ->GetProvidersAmount(*amount);
3083 PVRProvidersResultSet result(instance, handle);
3084 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->GetProviders(result);
3092 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3093 ->GetChannelGroupsAmount(*amount);
3100 PVRChannelGroupsResultSet result(instance, handle);
3101 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3102 ->GetChannelGroups(radio, result);
3109 PVRChannelGroupMembersResultSet result(instance, handle);
3110 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3111 ->GetChannelGroupMembers(group, result);
3119 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3120 ->DeleteChannel(channel);
3126 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3127 ->RenameChannel(channel);
3133 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3134 ->OpenDialogChannelSettings(channel);
3140 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3141 ->OpenDialogChannelAdd(channel);
3146 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3147 ->OpenDialogChannelScan();
3154 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3155 ->CallChannelMenuHook(menuhook, channel);
3166 PVREPGTagsResultSet result(instance, handle);
3167 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3168 ->GetEPGForChannel(channelUid, start, end, result);
3175 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3176 ->IsEPGTagRecordable(tag, *isRecordable);
3183 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3184 ->IsEPGTagPlayable(tag, *isPlayable);
3193 std::vector<PVREDLEntry> edlList;
3194 PVR_ERROR error =
static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3195 ->GetEPGTagEdl(tag, edlList);
3198 *edls = AllocAndCopyPointerArray<PVREDLEntry, PVR_EDL_ENTRY>(edlList, *size);
3206 unsigned int* propertiesCount)
3208 *propertiesCount = 0;
3209 std::vector<PVRStreamProperty> propertiesList;
3210 PVR_ERROR error =
static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3211 ->GetEPGTagStreamProperties(tag, propertiesList);
3214 *properties = AllocAndCopyPointerArray<PVRStreamProperty, PVR_NAMED_VALUE>(propertiesList,
3222 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3223 ->SetEPGMaxPastDays(pastDays);
3229 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3230 ->SetEPGMaxFutureDays(futureDays);
3237 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3238 ->CallEPGMenuHook(menuhook, tag);
3247 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3248 ->GetRecordingsAmount(deleted, *amount);
3255 PVRRecordingsResultSet result(instance, handle);
3256 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3257 ->GetRecordings(deleted, result);
3263 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3264 ->DeleteRecording(recording);
3270 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3271 ->UndeleteRecording(recording);
3276 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3277 ->DeleteAllRecordingsFromTrash();
3283 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3284 ->RenameRecording(recording);
3290 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3291 ->SetRecordingLifetime(recording);
3298 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3299 ->SetRecordingPlayCount(recording, count);
3304 int lastplayedposition)
3306 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3307 ->SetRecordingLastPlayedPosition(recording, lastplayedposition);
3314 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3315 ->GetRecordingLastPlayedPosition(recording, *position);
3324 std::vector<PVREDLEntry> edlList;
3325 PVR_ERROR error =
static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3326 ->GetRecordingEdl(recording, edlList);
3329 *edls = AllocAndCopyPointerArray<PVREDLEntry, PVR_EDL_ENTRY>(edlList, *size);
3338 FreeStaticPointerArray<PVREDLEntry, PVR_EDL_ENTRY>(edls, size);
3346 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3347 ->GetRecordingSize(recording, *size);
3353 unsigned int* propertiesCount)
3355 *propertiesCount = 0;
3356 std::vector<PVRStreamProperty> propertiesList;
3357 PVR_ERROR error =
static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3358 ->GetRecordingStreamProperties(recording, propertiesList);
3361 *properties = AllocAndCopyPointerArray<PVRStreamProperty, PVR_NAMED_VALUE>(propertiesList,
3369 unsigned int propertiesCount)
3371 FreeDynamicPointerArray<PVRStreamProperty, PVR_NAMED_VALUE>(properties, propertiesCount);
3379 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3380 ->CallRecordingMenuHook(menuhook, recording);
3387 unsigned int* typesCount)
3390 std::vector<PVRTimerType> timerTypes;
3391 PVR_ERROR error =
static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3392 ->GetTimerTypes(timerTypes);
3395 *types = AllocAndCopyPointerArray<PVRTimerType, PVR_TIMER_TYPE>(timerTypes, *typesCount);
3402 unsigned int typesCount)
3404 FreeDynamicPointerArray<PVRTimerType, PVR_TIMER_TYPE>(types, typesCount);
3410 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3411 ->GetTimersAmount(*amount);
3416 PVRTimersResultSet result(instance, handle);
3417 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->GetTimers(result);
3422 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->AddTimer(timer);
3429 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3430 ->DeleteTimer(timer, forceDelete);
3436 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->UpdateTimer(timer);
3443 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3444 ->CallTimerMenuHook(menuhook, timer);
3451 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->OnSystemSleep();
3456 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->OnSystemWake();
3461 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3462 ->OnPowerSavingActivated();
3467 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3468 ->OnPowerSavingDeactivated();
3477 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3478 ->OpenLiveStream(channel);
3483 static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->CloseLiveStream();
3487 unsigned char* buffer,
3490 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3491 ->ReadLiveStream(buffer, size);
3498 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3499 ->SeekLiveStream(position, whence);
3504 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->LengthLiveStream();
3510 properties->iStreamCount = 0;
3511 std::vector<PVRStreamProperties> cppProperties;
3512 PVR_ERROR err =
static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3513 ->GetStreamProperties(cppProperties);
3516 for (
unsigned int i = 0; i < cppProperties.size(); ++i)
3518 memcpy(&properties->stream[i],
3521 ++properties->iStreamCount;
3527 "CInstancePVRClient::%s: Addon given with '%li' more allowed streams where '%i'",
3539 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->StreamClosed();
3545 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3546 ->GetStreamReadChunkSize(*chunksize);
3551 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->IsRealTimeStream();
3558 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3559 ->OpenRecordedStream(recording, *streamId);
3562 inline static void ADDON_CloseRecordedStream(
const AddonInstance_PVR* instance, int64_t streamId)
3564 static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3565 ->CloseRecordedStream(streamId);
3570 unsigned char* buffer,
3573 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3574 ->ReadRecordedStream(streamId, buffer, size);
3577 inline static int64_t ADDON_SeekRecordedStream(
const AddonInstance_PVR* instance,
3582 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3583 ->SeekRecordedStream(streamId, position, whence);
3586 inline static int64_t ADDON_LengthRecordedStream(
const AddonInstance_PVR* instance,
3589 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3590 ->LengthRecordedStream(streamId);
3597 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3598 ->IsRecordedStreamRealTime(streamId, *isRealTime);
3605 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3606 ->PauseRecordedStream(streamId, paused);
3613 PVRStreamTimes cppTimes(times);
3614 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3615 ->GetRecordedStreamTimes(streamId, cppTimes);
3620 static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->DemuxReset();
3625 static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->DemuxAbort();
3630 static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->DemuxFlush();
3635 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->DemuxRead();
3640 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->CanPauseStream();
3645 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->CanSeekStream();
3648 inline static void ADDON_PauseStream(
const AddonInstance_PVR* instance,
bool bPaused)
3650 static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->PauseStream(bPaused);
3658 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3659 ->SeekTime(time, backwards, *startpts);
3664 static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->SetSpeed(speed);
3667 inline static void ADDON_FillBuffer(
const AddonInstance_PVR* instance,
bool mode)
3669 static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->FillBuffer(mode);
3675 PVRStreamTimes cppTimes(times);
3676 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3677 ->GetStreamTimes(cppTimes);