465 if (CPrivateBase::m_interface->globalSingleInstance !=
nullptr)
466 throw std::logic_error(
"kodi::addon::CInstancePVRClient: Creation of more as one in single "
467 "instance way is not allowed!");
469 SetAddonStruct(CPrivateBase::m_interface->firstKodiInstance);
470 CPrivateBase::m_interface->globalSingleInstance =
this;
509 if (CPrivateBase::m_interface->globalSingleInstance !=
nullptr)
510 throw std::logic_error(
"kodi::addon::CInstancePVRClient: Creation of multiple together with "
511 "single instance way is not allowed!");
513 SetAddonStruct(instance);
746 m_instanceData->toKodi->AddMenuHook(m_instanceData->toKodi->kodiInstance, hook);
780 const std::string& message)
782 m_instanceData->toKodi->ConnectionStateChange(
783 m_instanceData->toKodi->kodiInstance, connectionString.c_str(), newState, message.c_str());
797 inline std::string
UserPath()
const {
return m_instanceData->props->strUserPath; }
810 inline std::string
ClientPath()
const {
return m_instanceData->props->strClientPath; }
904 m_instanceData->toKodi->TriggerProvidersUpdate(m_instanceData->toKodi->kodiInstance);
1014 std::vector<kodi::addon::PVRStreamProperty>& properties)
1097 m_instanceData->toKodi->TriggerChannelUpdate(m_instanceData->toKodi->kodiInstance);
1258 m_instanceData->toKodi->TriggerChannelGroupsUpdate(m_instanceData->toKodi->kodiInstance);
1517 std::vector<kodi::addon::PVREDLEntry>& edl)
1657 m_instanceData->toKodi->TriggerEpgUpdate(m_instanceData->toKodi->kodiInstance, channelUid);
1695 m_instanceData->toKodi->EpgEventStateChange(m_instanceData->toKodi->kodiInstance, tag,
1892 int lastplayedposition)
1930 std::vector<kodi::addon::PVREDLEntry>& edl)
1990 std::vector<kodi::addon::PVRStreamProperty>& properties)
2029 const std::string& fileName,
2032 m_instanceData->toKodi->RecordingNotification(m_instanceData->toKodi->kodiInstance,
2033 recordingName.c_str(), fileName.c_str(), on);
2045 m_instanceData->toKodi->TriggerRecordingUpdate(m_instanceData->toKodi->kodiInstance);
2228 m_instanceData->toKodi->TriggerTimerUpdate(m_instanceData->toKodi->kodiInstance);
2514 virtual bool SeekTime(
double time,
bool backwards,
double& startpts) {
return false; }
2528 return PVRCodec(m_instanceData->toKodi->GetCodecByName(m_instanceData->toKodi->kodiInstance,
2529 codecName.c_str()));
2544 return m_instanceData->toKodi->AllocateDemuxPacket(m_instanceData->toKodi->kodiInstance,
2559 m_instanceData->toKodi->FreeDemuxPacket(m_instanceData->toKodi->kodiInstance, pPacket);
2827 instance->hdl =
this;
2830 instance->pvr->toAddon->GetCapabilities = ADDON_GetCapabilities;
2831 instance->pvr->toAddon->GetConnectionString = ADDON_GetConnectionString;
2832 instance->pvr->toAddon->GetBackendName = ADDON_GetBackendName;
2833 instance->pvr->toAddon->GetBackendVersion = ADDON_GetBackendVersion;
2834 instance->pvr->toAddon->GetBackendHostname = ADDON_GetBackendHostname;
2835 instance->pvr->toAddon->GetDriveSpace = ADDON_GetDriveSpace;
2836 instance->pvr->toAddon->CallSettingsMenuHook = ADDON_CallSettingsMenuHook;
2838 instance->pvr->toAddon->GetChannelsAmount = ADDON_GetChannelsAmount;
2839 instance->pvr->toAddon->GetChannels = ADDON_GetChannels;
2840 instance->pvr->toAddon->GetChannelStreamProperties = ADDON_GetChannelStreamProperties;
2841 instance->pvr->toAddon->GetSignalStatus = ADDON_GetSignalStatus;
2842 instance->pvr->toAddon->GetDescrambleInfo = ADDON_GetDescrambleInfo;
2844 instance->pvr->toAddon->GetProvidersAmount = ADDON_GetProvidersAmount;
2845 instance->pvr->toAddon->GetProviders = ADDON_GetProviders;
2847 instance->pvr->toAddon->GetChannelGroupsAmount = ADDON_GetChannelGroupsAmount;
2848 instance->pvr->toAddon->GetChannelGroups = ADDON_GetChannelGroups;
2849 instance->pvr->toAddon->GetChannelGroupMembers = ADDON_GetChannelGroupMembers;
2851 instance->pvr->toAddon->DeleteChannel = ADDON_DeleteChannel;
2852 instance->pvr->toAddon->RenameChannel = ADDON_RenameChannel;
2853 instance->pvr->toAddon->OpenDialogChannelSettings = ADDON_OpenDialogChannelSettings;
2854 instance->pvr->toAddon->OpenDialogChannelAdd = ADDON_OpenDialogChannelAdd;
2855 instance->pvr->toAddon->OpenDialogChannelScan = ADDON_OpenDialogChannelScan;
2856 instance->pvr->toAddon->CallChannelMenuHook = ADDON_CallChannelMenuHook;
2858 instance->pvr->toAddon->GetEPGForChannel = ADDON_GetEPGForChannel;
2859 instance->pvr->toAddon->IsEPGTagRecordable = ADDON_IsEPGTagRecordable;
2860 instance->pvr->toAddon->IsEPGTagPlayable = ADDON_IsEPGTagPlayable;
2861 instance->pvr->toAddon->GetEPGTagEdl = ADDON_GetEPGTagEdl;
2862 instance->pvr->toAddon->GetEPGTagStreamProperties = ADDON_GetEPGTagStreamProperties;
2863 instance->pvr->toAddon->SetEPGMaxPastDays = ADDON_SetEPGMaxPastDays;
2864 instance->pvr->toAddon->SetEPGMaxFutureDays = ADDON_SetEPGMaxFutureDays;
2865 instance->pvr->toAddon->CallEPGMenuHook = ADDON_CallEPGMenuHook;
2867 instance->pvr->toAddon->GetRecordingsAmount = ADDON_GetRecordingsAmount;
2868 instance->pvr->toAddon->GetRecordings = ADDON_GetRecordings;
2869 instance->pvr->toAddon->DeleteRecording = ADDON_DeleteRecording;
2870 instance->pvr->toAddon->UndeleteRecording = ADDON_UndeleteRecording;
2871 instance->pvr->toAddon->DeleteAllRecordingsFromTrash = ADDON_DeleteAllRecordingsFromTrash;
2872 instance->pvr->toAddon->RenameRecording = ADDON_RenameRecording;
2873 instance->pvr->toAddon->SetRecordingLifetime = ADDON_SetRecordingLifetime;
2874 instance->pvr->toAddon->SetRecordingPlayCount = ADDON_SetRecordingPlayCount;
2875 instance->pvr->toAddon->SetRecordingLastPlayedPosition = ADDON_SetRecordingLastPlayedPosition;
2876 instance->pvr->toAddon->GetRecordingLastPlayedPosition = ADDON_GetRecordingLastPlayedPosition;
2877 instance->pvr->toAddon->GetRecordingEdl = ADDON_GetRecordingEdl;
2878 instance->pvr->toAddon->GetRecordingSize = ADDON_GetRecordingSize;
2879 instance->pvr->toAddon->GetRecordingStreamProperties = ADDON_GetRecordingStreamProperties;
2880 instance->pvr->toAddon->CallRecordingMenuHook = ADDON_CallRecordingMenuHook;
2882 instance->pvr->toAddon->GetTimerTypes = ADDON_GetTimerTypes;
2883 instance->pvr->toAddon->GetTimersAmount = ADDON_GetTimersAmount;
2884 instance->pvr->toAddon->GetTimers = ADDON_GetTimers;
2885 instance->pvr->toAddon->AddTimer = ADDON_AddTimer;
2886 instance->pvr->toAddon->DeleteTimer = ADDON_DeleteTimer;
2887 instance->pvr->toAddon->UpdateTimer = ADDON_UpdateTimer;
2888 instance->pvr->toAddon->CallTimerMenuHook = ADDON_CallTimerMenuHook;
2890 instance->pvr->toAddon->OnSystemSleep = ADDON_OnSystemSleep;
2891 instance->pvr->toAddon->OnSystemWake = ADDON_OnSystemWake;
2892 instance->pvr->toAddon->OnPowerSavingActivated = ADDON_OnPowerSavingActivated;
2893 instance->pvr->toAddon->OnPowerSavingDeactivated = ADDON_OnPowerSavingDeactivated;
2895 instance->pvr->toAddon->OpenLiveStream = ADDON_OpenLiveStream;
2896 instance->pvr->toAddon->CloseLiveStream = ADDON_CloseLiveStream;
2897 instance->pvr->toAddon->ReadLiveStream = ADDON_ReadLiveStream;
2898 instance->pvr->toAddon->SeekLiveStream = ADDON_SeekLiveStream;
2899 instance->pvr->toAddon->LengthLiveStream = ADDON_LengthLiveStream;
2900 instance->pvr->toAddon->GetStreamProperties = ADDON_GetStreamProperties;
2901 instance->pvr->toAddon->StreamClosed = ADDON_StreamClosed;
2902 instance->pvr->toAddon->GetStreamReadChunkSize = ADDON_GetStreamReadChunkSize;
2903 instance->pvr->toAddon->IsRealTimeStream = ADDON_IsRealTimeStream;
2905 instance->pvr->toAddon->OpenRecordedStream = ADDON_OpenRecordedStream;
2906 instance->pvr->toAddon->CloseRecordedStream = ADDON_CloseRecordedStream;
2907 instance->pvr->toAddon->ReadRecordedStream = ADDON_ReadRecordedStream;
2908 instance->pvr->toAddon->SeekRecordedStream = ADDON_SeekRecordedStream;
2909 instance->pvr->toAddon->LengthRecordedStream = ADDON_LengthRecordedStream;
2910 instance->pvr->toAddon->IsRecordedStreamRealTime = ADDON_IsRecordedStreamRealTime;
2911 instance->pvr->toAddon->PauseRecordedStream = ADDON_PauseRecordedStream;
2912 instance->pvr->toAddon->GetRecordedStreamTimes = ADDON_GetRecordedStreamTimes;
2914 instance->pvr->toAddon->DemuxReset = ADDON_DemuxReset;
2915 instance->pvr->toAddon->DemuxAbort = ADDON_DemuxAbort;
2916 instance->pvr->toAddon->DemuxFlush = ADDON_DemuxFlush;
2917 instance->pvr->toAddon->DemuxRead = ADDON_DemuxRead;
2919 instance->pvr->toAddon->CanPauseStream = ADDON_CanPauseStream;
2920 instance->pvr->toAddon->PauseStream = ADDON_PauseStream;
2921 instance->pvr->toAddon->CanSeekStream = ADDON_CanSeekStream;
2922 instance->pvr->toAddon->SeekTime = ADDON_SeekTime;
2923 instance->pvr->toAddon->SetSpeed = ADDON_SetSpeed;
2924 instance->pvr->toAddon->FillBuffer = ADDON_FillBuffer;
2925 instance->pvr->toAddon->GetStreamTimes = ADDON_GetStreamTimes;
2927 instance->pvr->toAddon->FreeCapabilities = ADDON_FreeCapabilities;
2928 instance->pvr->toAddon->FreeTimerTypes = ADDON_FreeTimerTypes;
2929 instance->pvr->toAddon->FreeProperties = ADDON_FreeProperties;
2930 instance->pvr->toAddon->FreeDescrambleInfo = ADDON_FreeDescrambleInfo;
2931 instance->pvr->toAddon->FreeSignalStatus = ADDON_FreeSignalStatus;
2932 instance->pvr->toAddon->FreeEdlEntries = ADDON_FreeEdlEntries;
2933 instance->pvr->toAddon->FreeString = ADDON_FreeString;
2935 m_instanceData = instance->pvr;
2936 m_instanceData->toAddon->addonInstance =
this;
2942 PVRCapabilities cppCapabilities(capabilities);
2943 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
2944 ->GetCapabilities(cppCapabilities);
2950 PVRCapabilities::FreeResources(capabilities);
2956 std::string backendName;
2957 PVR_ERROR err =
static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
2958 ->GetBackendName(backendName);
2960 *str = AllocAndCopyString(backendName.c_str());
2966 std::string backendVersion;
2967 PVR_ERROR err =
static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
2968 ->GetBackendVersion(backendVersion);
2970 *str = AllocAndCopyString(backendVersion.c_str());
2976 std::string backendHostname;
2977 PVR_ERROR err =
static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
2978 ->GetBackendHostname(backendHostname);
2980 *str = AllocAndCopyString(backendHostname.c_str());
2986 std::string connectionString;
2987 PVR_ERROR err =
static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
2988 ->GetConnectionString(connectionString);
2990 *str = AllocAndCopyString(connectionString.c_str());
2998 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
2999 ->GetDriveSpace(*total, *used);
3005 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3006 ->CallSettingsMenuHook(menuhook);
3013 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3014 ->GetChannelsAmount(*amount);
3021 PVRChannelsResultSet result(instance, handle);
3022 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3023 ->GetChannels(radio, result);
3030 unsigned int* propertiesCount)
3032 *propertiesCount = 0;
3033 std::vector<PVRStreamProperty> propertiesList;
3034 PVR_ERROR error =
static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3035 ->GetChannelStreamProperties(channel, source, propertiesList);
3038 *properties = AllocAndCopyPointerArray<PVRStreamProperty, PVR_NAMED_VALUE>(propertiesList,
3048 PVRSignalStatus cppSignalStatus(signalStatus);
3049 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3050 ->GetSignalStatus(channelUid, cppSignalStatus);
3056 PVRSignalStatus::FreeResources(signalStatus);
3064 PVRDescrambleInfo cppDescrambleInfo(descrambleInfo);
3065 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3066 ->GetDescrambleInfo(channelUid, cppDescrambleInfo);
3072 PVRDescrambleInfo::FreeResources(descrambleInfo);
3080 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3081 ->GetProvidersAmount(*amount);
3086 PVRProvidersResultSet result(instance, handle);
3087 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->GetProviders(result);
3095 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3096 ->GetChannelGroupsAmount(*amount);
3103 PVRChannelGroupsResultSet result(instance, handle);
3104 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3105 ->GetChannelGroups(radio, result);
3112 PVRChannelGroupMembersResultSet result(instance, handle);
3113 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3114 ->GetChannelGroupMembers(group, result);
3122 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3123 ->DeleteChannel(channel);
3129 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3130 ->RenameChannel(channel);
3136 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3137 ->OpenDialogChannelSettings(channel);
3143 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3144 ->OpenDialogChannelAdd(channel);
3149 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3150 ->OpenDialogChannelScan();
3157 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3158 ->CallChannelMenuHook(menuhook, channel);
3169 PVREPGTagsResultSet result(instance, handle);
3170 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3171 ->GetEPGForChannel(channelUid, start, end, result);
3178 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3179 ->IsEPGTagRecordable(tag, *isRecordable);
3186 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3187 ->IsEPGTagPlayable(tag, *isPlayable);
3196 std::vector<PVREDLEntry> edlList;
3197 PVR_ERROR error =
static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3198 ->GetEPGTagEdl(tag, edlList);
3201 *edls = AllocAndCopyPointerArray<PVREDLEntry, PVR_EDL_ENTRY>(edlList, *size);
3209 unsigned int* propertiesCount)
3211 *propertiesCount = 0;
3212 std::vector<PVRStreamProperty> propertiesList;
3213 PVR_ERROR error =
static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3214 ->GetEPGTagStreamProperties(tag, propertiesList);
3217 *properties = AllocAndCopyPointerArray<PVRStreamProperty, PVR_NAMED_VALUE>(propertiesList,
3225 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3226 ->SetEPGMaxPastDays(pastDays);
3232 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3233 ->SetEPGMaxFutureDays(futureDays);
3240 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3241 ->CallEPGMenuHook(menuhook, tag);
3250 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3251 ->GetRecordingsAmount(deleted, *amount);
3258 PVRRecordingsResultSet result(instance, handle);
3259 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3260 ->GetRecordings(deleted, result);
3266 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3267 ->DeleteRecording(recording);
3273 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3274 ->UndeleteRecording(recording);
3279 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3280 ->DeleteAllRecordingsFromTrash();
3286 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3287 ->RenameRecording(recording);
3293 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3294 ->SetRecordingLifetime(recording);
3301 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3302 ->SetRecordingPlayCount(recording, count);
3307 int lastplayedposition)
3309 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3310 ->SetRecordingLastPlayedPosition(recording, lastplayedposition);
3317 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3318 ->GetRecordingLastPlayedPosition(recording, *position);
3327 std::vector<PVREDLEntry> edlList;
3328 PVR_ERROR error =
static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3329 ->GetRecordingEdl(recording, edlList);
3332 *edls = AllocAndCopyPointerArray<PVREDLEntry, PVR_EDL_ENTRY>(edlList, *size);
3341 FreeStaticPointerArray<PVREDLEntry, PVR_EDL_ENTRY>(edls, size);
3349 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3350 ->GetRecordingSize(recording, *size);
3356 unsigned int* propertiesCount)
3358 *propertiesCount = 0;
3359 std::vector<PVRStreamProperty> propertiesList;
3360 PVR_ERROR error =
static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3361 ->GetRecordingStreamProperties(recording, propertiesList);
3364 *properties = AllocAndCopyPointerArray<PVRStreamProperty, PVR_NAMED_VALUE>(propertiesList,
3372 unsigned int propertiesCount)
3374 FreeDynamicPointerArray<PVRStreamProperty, PVR_NAMED_VALUE>(properties, propertiesCount);
3382 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3383 ->CallRecordingMenuHook(menuhook, recording);
3390 unsigned int* typesCount)
3393 std::vector<PVRTimerType> timerTypes;
3394 PVR_ERROR error =
static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3395 ->GetTimerTypes(timerTypes);
3398 *types = AllocAndCopyPointerArray<PVRTimerType, PVR_TIMER_TYPE>(timerTypes, *typesCount);
3405 unsigned int typesCount)
3407 FreeDynamicPointerArray<PVRTimerType, PVR_TIMER_TYPE>(types, typesCount);
3413 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3414 ->GetTimersAmount(*amount);
3419 PVRTimersResultSet result(instance, handle);
3420 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->GetTimers(result);
3425 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->AddTimer(timer);
3432 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3433 ->DeleteTimer(timer, forceDelete);
3439 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->UpdateTimer(timer);
3446 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3447 ->CallTimerMenuHook(menuhook, timer);
3454 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->OnSystemSleep();
3459 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->OnSystemWake();
3464 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3465 ->OnPowerSavingActivated();
3470 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3471 ->OnPowerSavingDeactivated();
3480 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3481 ->OpenLiveStream(channel);
3486 static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->CloseLiveStream();
3490 unsigned char* buffer,
3493 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3494 ->ReadLiveStream(buffer, size);
3501 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3502 ->SeekLiveStream(position, whence);
3507 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->LengthLiveStream();
3513 properties->iStreamCount = 0;
3514 std::vector<PVRStreamProperties> cppProperties;
3515 PVR_ERROR err =
static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3516 ->GetStreamProperties(cppProperties);
3519 for (
unsigned int i = 0; i < cppProperties.size(); ++i)
3521 memcpy(&properties->stream[i],
3524 ++properties->iStreamCount;
3530 "CInstancePVRClient::%s: Addon given with '%li' more allowed streams where '%i'",
3542 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->StreamClosed();
3548 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3549 ->GetStreamReadChunkSize(*chunksize);
3554 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->IsRealTimeStream();
3561 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3562 ->OpenRecordedStream(recording, *streamId);
3565 inline static void ADDON_CloseRecordedStream(
const AddonInstance_PVR* instance, int64_t streamId)
3567 static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3568 ->CloseRecordedStream(streamId);
3573 unsigned char* buffer,
3576 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3577 ->ReadRecordedStream(streamId, buffer, size);
3580 inline static int64_t ADDON_SeekRecordedStream(
const AddonInstance_PVR* instance,
3585 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3586 ->SeekRecordedStream(streamId, position, whence);
3589 inline static int64_t ADDON_LengthRecordedStream(
const AddonInstance_PVR* instance,
3592 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3593 ->LengthRecordedStream(streamId);
3600 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3601 ->IsRecordedStreamRealTime(streamId, *isRealTime);
3608 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3609 ->PauseRecordedStream(streamId, paused);
3616 PVRStreamTimes cppTimes(times);
3617 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3618 ->GetRecordedStreamTimes(streamId, cppTimes);
3623 static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->DemuxReset();
3628 static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->DemuxAbort();
3633 static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->DemuxFlush();
3638 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->DemuxRead();
3643 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->CanPauseStream();
3648 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->CanSeekStream();
3651 inline static void ADDON_PauseStream(
const AddonInstance_PVR* instance,
bool bPaused)
3653 static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->PauseStream(bPaused);
3661 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3662 ->SeekTime(time, backwards, *startpts);
3667 static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->SetSpeed(speed);
3670 inline static void ADDON_FillBuffer(
const AddonInstance_PVR* instance,
bool mode)
3672 static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)->FillBuffer(mode);
3678 PVRStreamTimes cppTimes(times);
3679 return static_cast<CInstancePVRClient*
>(instance->toAddon->addonInstance)
3680 ->GetStreamTimes(cppTimes);