DVBCore  17.9.0
Open Source DVB Engine
 All Data Structures Files Functions Typedefs Macros Pages
Macros | Functions
ap_pvr.c File Reference

PVR handling functions used by the application. More...

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "techtype.h"
#include "dbgfuncs.h"
#include "stbhwos.h"
#include "stbhwav.h"
#include "stbpvrpr.h"
#include "stbhwdsk.h"
#include "stbgc.h"
#include "stbdpc.h"
#include "stbsiflt.h"
#include "stbsitab.h"
#include "stbpvr.h"
#include "stbheap.h"
#include "stbuni.h"
#include "stbdsapi.h"
#include "stbpvrmsg.h"
#include "stbllist.h"
#include "stbebutt.h"
#include "stberc.h"
#include "ca_glue.h"
#include "app.h"
#include "app_nvm.h"
#include "ap_pvr.h"
#include "ap_tmr.h"
#include "ap_cfg.h"
#include "ap_dbacc.h"
#include "ap_dbdef.h"
#include "ap_si.h"
#include "ap_cntrl.h"

Macros

#define APP_PRINT_PVR_REC(x)
 
#define APP_PRINT_PVR_PAUSE(x)
 
#define APP_PRINT_PVR_PLAY_STATUS(x)
 
#define APP_PRINT_PVR_PLAY_TUNE(x)
 
#define APP_PRINT_PVR_FP(x)
 
#define PVR_NUM_DUMMY_RECORDINGS   15
 
#define PVR_NORMAL_PLAY_SPEED   100
 
#define RECORD_WAIT_TIMEOUT   1000
 
#define MS_DIGIT   0
 
#define LS_DIGIT   1
 
#define PVR_100_PERCENT   100
 
#define CRID_DATE_TIMEOUT
 
#define CRID_MAX_SIZE   64
 
#define PAT_PID   0
 
#define CAT_PID   1
 
#define EIT_PID   18
 
#define DBG_PVR(X)
 

Functions

void APVR_Initialise (void)
 Initialise all PVR resources: filters, recordings etc.
 
void APVR_Terminate (void)
 Destroy all PVR resources: filters, recordings etc.
 
BOOLEAN APVR_IsInitialised (void)
 Use to query whether the PVR function is available and ready to be used. More...
 
U16BIT APVR_GetPlayList (U32BIT **handle_list, U8BIT ***name_list, U32BIT **rec_status_list, U32BIT **locked_list, U32BIT **selected_list, U32BIT **split_list)
 Returns a list of all the existing recordings that can be played. All the arrays returned will be allocated by this function and should be freed by calling APVR_ReleasePlayList. More...
 
void APVR_ReleasePlayList (U32BIT *handle_list, U8BIT **name_list, U32BIT *rec_status_list, U32BIT *locked_list, U32BIT *selected_list, U32BIT *split_list)
 Frees the arrays allocated by APVR_GetPlayList. More...
 
BOOLEAN APVR_PlayRecording (U32BIT recording_handle, BOOLEAN resume_playback, void *monitor_service)
 Starts playback of the given recording. More...
 
U32BIT APVR_GetPlaybackHandle (void)
 Returns the handle of the recording currently being played back. More...
 
BOOLEAN APVR_IsDecodingFile (void)
 Returns the PVR play status. More...
 
BOOLEAN APVR_IsPlaying (void)
 Returns whether playback is in progress. More...
 
BOOLEAN APVR_GetPlaybackElapsedTime (U32BIT handle, U8BIT *hours, U8BIT *mins, U8BIT *secs, U8BIT *progress)
 Returns the playback progress in time and as a percentage. More...
 
void APVR_NormalPlay (void)
 If playback has been paused or is subject to some trick mode, calling this function will result in playback resuming at normal playback speed (i.e. 100%)
 
void APVR_StopPlay (BOOLEAN return_to_live)
 Stops playback and optionally returns to live TV. More...
 
void APVR_PausePlay (void)
 Pause playback.
 
void APVR_FFPlay (void)
 If paused, playback will go into the first available slow motion speed in a forwards direction. If speed is already > 0% then the next fast forward speed will be selected. If playback is in the reverse direction then the next slowest reverse play speed will be selected.
 
void APVR_FRPlay (void)
 If paused, playback will go into the first available slow motion speed in a reverse direction. If speed is already < 0% then the next reverse speed will be selected. If playback is in the forwards direction then the next slowest forwards play speed will be selected.
 
void APVR_SlowMoPlay (void)
 Play in slow mothing mode.
 
void APVR_QRPlay (void)
 quick replay current playing recording
 
void APVR_JTLPlay (void)
 quick replay current playing recording
 
E_PVR_PLAY_STATUS APVR_GetPlayMode (void)
 Returns the current play mode according to the current play speed. More...
 
S16BIT APVR_GetPlaySpeed (void)
 Returns the current play speed as a signed percentage value representing the speed, where 100% is normal playback speed. More...
 
void APVR_TrickModeMuteOn (void)
 Mute for trick mode.
 
void APVR_TrickModeMuteOff (void)
 Unmute for trick mode.
 
U8BIT APVR_PrepareNewRecording (U16BIT onet_id, U16BIT trans_id, U16BIT service_id, BOOLEAN *new_tuned_service)
 Acquires a decode path for recording the given service and tunes to it. More...
 
BOOLEAN APVR_StartNewRecording (U16BIT disk_id, U8BIT path, U8BIT *recording_name, U16BIT event_id, U8BIT *prog_crid, U8BIT *other_crid, U32BIT *rec_handle)
 Starts a recording after any tuning has completed and sets the info to be stored with it. More...
 
BOOLEAN APVR_StopRecording (U32BIT recording_handle)
 Stops the given recording. More...
 
U8BIT APVR_GetActiveRecordingList (U32BIT **handle_list)
 Returns an array of recordings currently in progress. Use APVR_ReleaseActiveRecordingList to free the returned array. More...
 
void APVR_ReleaseActiveRecordingList (U32BIT *handle_list)
 Frees the arrays allocated by APVR_GetActiveRecordingList. More...
 
BOOLEAN APVR_GetPathRecordingName (U8BIT path, U8BIT **name_ptr)
 Get the name of the recording currently taking place on the given decode path. More...
 
BOOLEAN APVR_DeleteRecording (U32BIT handle)
 Delete the given recording, including all files associated with it and remove it from the database of available recordings that can be played back. More...
 
BOOLEAN APVR_DeleteAllSelectedRecordings (U32BIT *handles, U16BIT num_handles)
 Delete all the recordings marked as selected but not locked in the given list, including all files associated with it and remove it from the database of available recordings that can be played back. More...
 
void APVR_UnselectAllRecordings (U32BIT *handles, U16BIT num_handles)
 Un-select all recordings.
 
BOOLEAN APVR_AreSelectedRecordings (U32BIT *handles, U16BIT num_handles)
 Checks if any recording in a list is selected. More...
 
void APVR_SetTimeshiftBufferSize (U16BIT time_in_mins)
 Sets the size of the timeshift buffer so that it's able to store a recording of the given length before it has to loop round. Whether this value can be accurately achieved may vary according to the support provided by the platform. More...
 
U8BIT APVR_StartPauseRecord (void)
 Starts recording the live service ready for timeshift playback. The recording may not have started when this function returns, so an app should wait for the STB_EVENT_PVR_REC_START event before starting the paused playback using APVR_StartPausePlay. More...
 
U8BIT APVR_StartPausePlay (void)
 Starts playback of a live timeshift recording started with APVR_StartPauseRecord. This function should not be called until STB_EVENT_PVR_REC_START has been received with the correct recording path as an argument (as returned by APVR_StartPauseRecord). More...
 
void APVR_StopPauseRecord (BOOLEAN return_to_live)
 Stops timeshifted playback and recording and optionally restarts decoding of the live signal. More...
 
BOOLEAN APVR_IsRecordingInProgress (void)
 Returns TRUE if there are any recordings currently in progress. More...
 
BOOLEAN APVR_IsRecordingHandle (U8BIT path, U32BIT recording_handle)
 Returns TRUE if given recording handle is still in progress on the given decode path. More...
 
BOOLEAN APVR_GetRecordingHandle (U8BIT path, U32BIT *recording_handle_ptr)
 Returns the handle of the recording taking place on the given decode path. More...
 
BOOLEAN APVR_CheckSpaceForEvent (U16BIT disk_id, void *event_ptr)
 Checks if there is enough space for the recording of the given event to take place. More...
 
BOOLEAN APVR_CheckSpaceForDuration (U16BIT disk_id, U8BIT hours, U8BIT mins)
 Check if there is enough space for the recording of the given duration to take place. More...
 
BOOLEAN APVR_CheckSpaceDuration (U16BIT disk_id, U32BIT duration)
 Check if there is enough space for the recording of the given duration to take place. More...
 
U8BIT APVR_GetTotalSpacePercentUsed (U16BIT disk_id)
 get total percentage of recording space used More...
 
void APVR_GetDiskTime (U16BIT disk_id, U8BIT *used_hour_ptr, U8BIT *used_min_ptr, U8BIT *free_hour_ptr, U8BIT *free_min_ptr, U8BIT *size_hour_ptr, U8BIT *size_min_ptr)
 Gets an estimate of disk space in time (hour / min): used, free and size. More...
 
void APVR_GetDiskMbyte (U16BIT disk_id, U32BIT *used_mbyte_ptr, U32BIT *free_mbyte_ptr, U32BIT *size_mbyte_ptr)
 Ges disk space in Mbytes: used, free and size. More...
 
U32BIT APVR_GetPauseProgress (void)
 Calculates and returns the number of seconds behind live TV. More...
 
U8BIT APVR_GetPlaybackPath (void)
 Returns the path currently acquired fro playback. More...
 
BOOLEAN APVR_IsEventInRecordList (U8BIT *prog_crid)
 Determines whether the given programme CRID is already in the list of recorded events. More...
 
void APVR_RecordSeries (void *crid_ptr, BOOLEAN radio_service)
 Seaches the schedule for events that are part of the given series and that haven't already been recorded or aren't set to be recorded and creates a timer to record them. More...
 
void APVR_RecordRecommendations (void *crid_ptr, BOOLEAN radio_service)
 Searches the schedule for events that are part of the given recommendation and that haven't already been recorded or aren't set to be recorded and creates a timer to record them. More...
 
BOOLEAN APVR_FindNextSplitEvent (U32BIT curr_handle, U32BIT *next_handle)
 If the current playback recording is a split event then the next chronological part of the event is found and its handle returned. More...
 
void * APVR_GetPlaybackService (void)
 A service instance is associated to the playback, this function returns its pointer. The handle can be used, for example, to call ADB_ServiceHasSubtitles as it's done for live channels. More...
 
BOOLEAN APVR_HandlePrivateTimer (U32BIT timer_handle)
 Deals with any private timers started by the PVR module. More...
 
void APVR_EitUpdated (void)
 Ensures that any EIT updates are processed to handle scenarios such as checking for new series recordings, etc.
 
void APVR_PidsUpdated (U8BIT path)
 This function should be called when there's an update to the PIDs for a service that's being recorded. The PIDs being recorded are checked and any that are no longer valid will no longer be recorded and any new PIDs will be added. More...
 

Detailed Description

PVR handling functions used by the application.

Date
11/06/2004
Author
Ocean Blue

Macro Definition Documentation

#define CRID_DATE_TIMEOUT
Value:
91 /* This is the number of days that a CRID record should
* remain in the CRID record list since it was last seen
* in the EIT schedule data. */

Function Documentation

BOOLEAN APVR_AreSelectedRecordings ( U32BIT *  handles,
U16BIT  num_handles 
)

Checks if any recording in a list is selected.

Parameters
handlesarray of recording handles
num_handlesnumber of recording handles in the array
Returns
TRUE if at least one recording is selected, FALSE otherwise
BOOLEAN APVR_CheckSpaceDuration ( U16BIT  disk_id,
U32BIT  duration 
)

Check if there is enough space for the recording of the given duration to take place.

disk_id ID of disk to be queried

Parameters
durationRecording duration expressed as U32DHMS
Returns
TRUE if there is space availiable, FALSE otherwise
BOOLEAN APVR_CheckSpaceForDuration ( U16BIT  disk_id,
U8BIT  hours,
U8BIT  mins 
)

Check if there is enough space for the recording of the given duration to take place.

disk_id ID of disk to be queried

Parameters
hoursnumber of hours of the duration
minsnumber of minutes of the duration
Returns
TRUE if there is space availiable, FALSE otherwise
BOOLEAN APVR_CheckSpaceForEvent ( U16BIT  disk_id,
void *  event_ptr 
)

Checks if there is enough space for the recording of the given event to take place.

disk_id ID of disk to be queried

Parameters
event_ptrThe event to check if there is any free space
Returns
TRUE if there is space availiable, FALSE otherwise
BOOLEAN APVR_DeleteAllSelectedRecordings ( U32BIT *  handles,
U16BIT  num_handles 
)

Delete all the recordings marked as selected but not locked in the given list, including all files associated with it and remove it from the database of available recordings that can be played back.

Parameters
handlesarray of recording handles
num_handlesnumber of recordings in the array
Returns
TRUE if at least one recording is deleted, FALSE otherwise
BOOLEAN APVR_DeleteRecording ( U32BIT  handle)

Delete the given recording, including all files associated with it and remove it from the database of available recordings that can be played back.

Parameters
handlerecording to be deleted
Returns
TRUE if the recording is deleted, FALSE otherwise
BOOLEAN APVR_FindNextSplitEvent ( U32BIT  curr_handle,
U32BIT *  next_handle 
)

If the current playback recording is a split event then the next chronological part of the event is found and its handle returned.

Parameters
curr_handlehandle of split recording when searching for the next part
next_handlehandle of the next recording to be played, returned
Returns
TRUE if a recording is found, FALSE otherwise
U8BIT APVR_GetActiveRecordingList ( U32BIT **  handle_list)

Returns an array of recordings currently in progress. Use APVR_ReleaseActiveRecordingList to free the returned array.

Parameters
handle_listaddress of an array allocated by the function containing the recording handles
Returns
number of recordings in progress
void APVR_GetDiskMbyte ( U16BIT  disk_id,
U32BIT *  used_mbyte_ptr,
U32BIT *  free_mbyte_ptr,
U32BIT *  size_mbyte_ptr 
)

Ges disk space in Mbytes: used, free and size.

disk_id ID of disk to be queried used_mbyte_ptr amount of data stored on the disk free_mbyte_ptr free space on the disk size_mbyte_ptr total size of the disk

void APVR_GetDiskTime ( U16BIT  disk_id,
U8BIT *  used_hour_ptr,
U8BIT *  used_min_ptr,
U8BIT *  free_hour_ptr,
U8BIT *  free_min_ptr,
U8BIT *  size_hour_ptr,
U8BIT *  size_min_ptr 
)

Gets an estimate of disk space in time (hour / min): used, free and size.

Parameters
disk_idID of disk to be queried
used_hour_ptrpointer to the variable containing the number of hours that the stored data is worth
used_min_ptrpointer to the variable containing the number of minutes that the stored data is worth
free_hour_ptrpointer to the variable containing the number of hours that the available space is worth
free_min_ptrpointer to the variable containing the number of minutes that the available space is worth
size_hour_ptrpointer to the variable containing the number of hours that the total disk size is worth
size_min_ptrpointer to the variable containing the number of minutes that the total disk size is worth
BOOLEAN APVR_GetPathRecordingName ( U8BIT  path,
U8BIT **  name_ptr 
)

Get the name of the recording currently taking place on the given decode path.

Parameters
pathdecode path being used for a recording
name_ptraddress of variable into which the name reference will be returned. This is actually a U8BIT*, but the string shouldn't be freed.
Returns
TRUE if a recording is taking place on the given path and the name is returned, FALSE otherwise
U32BIT APVR_GetPauseProgress ( void  )

Calculates and returns the number of seconds behind live TV.

Returns
Number of seconds behind live
BOOLEAN APVR_GetPlaybackElapsedTime ( U32BIT  handle,
U8BIT *  hours,
U8BIT *  mins,
U8BIT *  secs,
U8BIT *  progress 
)

Returns the playback progress in time and as a percentage.

Parameters
handlerecording handle being played
hourspointer for return of playback hours
minspointer for return of playback minutes
secspointer for return of playback seconds
progresspointer for return of position in playback as a percentage
Returns
TRUE if values are returned
U32BIT APVR_GetPlaybackHandle ( void  )

Returns the handle of the recording currently being played back.

Returns
playback handle, which may be invalid if playback isn't taking place
U8BIT APVR_GetPlaybackPath ( void  )

Returns the path currently acquired fro playback.

Returns
Decode path for playback
void* APVR_GetPlaybackService ( void  )

A service instance is associated to the playback, this function returns its pointer. The handle can be used, for example, to call ADB_ServiceHasSubtitles as it's done for live channels.

Returns
Playback service pointer
U16BIT APVR_GetPlayList ( U32BIT **  handle_list,
U8BIT ***  name_list,
U32BIT **  rec_status_list,
U32BIT **  locked_list,
U32BIT **  selected_list,
U32BIT **  split_list 
)

Returns a list of all the existing recordings that can be played. All the arrays returned will be allocated by this function and should be freed by calling APVR_ReleasePlayList.

Parameters
handle_listaddress to return an array of recording handles
name_listaddress to return an array of names for each recording, the U32BIT value will actually be a U8BIT* of a UTF-8 string
rec_status_listaddress to return an array indicating whether each recording is currently being recorded, 0=no, 1=yes
locked_listaddress to return an array indicating whether each recording is parentally locked, 0=no, 1=yes
selected_listaddress to return an array indicating whether each recording is marked as selected, 0=no, 1=yes
split_listaddress to return an array indicating whether each recording is part of a split recording, 0=no, 1=yes
Returns
number of recordings
E_PVR_PLAY_STATUS APVR_GetPlayMode ( void  )

Returns the current play mode according to the current play speed.

Returns
play mode
S16BIT APVR_GetPlaySpeed ( void  )

Returns the current play speed as a signed percentage value representing the speed, where 100% is normal playback speed.

Returns
play speed
BOOLEAN APVR_GetRecordingHandle ( U8BIT  path,
U32BIT *  recording_handle_ptr 
)

Returns the handle of the recording taking place on the given decode path.

Parameters
pathdecode path used for recording
recording_handle_ptraddress to return the recording handle, only valid on return if a recording is taking place
Returns
TRUE if a recording is taking place and handle is returned, FALSE otherwise
U8BIT APVR_GetTotalSpacePercentUsed ( U16BIT  disk_id)

get total percentage of recording space used

Parameters
total_space_usedtotal percentage of recording space used
BOOLEAN APVR_HandlePrivateTimer ( U32BIT  timer_handle)

Deals with any private timers started by the PVR module.

Parameters
timer_handlehandle of the timer that's been triggered
Returns
TRUE if the timer is a PVR timer and has been dealt with, FALSE otherwise
BOOLEAN APVR_IsDecodingFile ( void  )

Returns the PVR play status.

Returns
TRUE if a recoding is being played, FALSE otherwise
BOOLEAN APVR_IsEventInRecordList ( U8BIT *  prog_crid)

Determines whether the given programme CRID is already in the list of recorded events.

Parameters
prog_cridfull CRID (i.e. including default authority) of event to be searched for
Returns
TRUE if a recording with the given CRID is found, FALSE otherwise
BOOLEAN APVR_IsInitialised ( void  )

Use to query whether the PVR function is available and ready to be used.

Returns
TRUE if available and ready, FALSE otherwise
BOOLEAN APVR_IsPlaying ( void  )

Returns whether playback is in progress.

Returns
TRUE if playback has been started, FALSE otherwise
BOOLEAN APVR_IsRecordingHandle ( U8BIT  path,
U32BIT  recording_handle 
)

Returns TRUE if given recording handle is still in progress on the given decode path.

Parameters
pathdecode path used for recording
recording_handlerecording
Returns
TRUE if the recording is still in progress, FALSE otherwise
BOOLEAN APVR_IsRecordingInProgress ( void  )

Returns TRUE if there are any recordings currently in progress.

Returns
TRUE if recording in progress, FALSE otherwise
void APVR_PidsUpdated ( U8BIT  path)

This function should be called when there's an update to the PIDs for a service that's being recorded. The PIDs being recorded are checked and any that are no longer valid will no longer be recorded and any new PIDs will be added.

Parameters
pathrecording path
BOOLEAN APVR_PlayRecording ( U32BIT  recording_handle,
BOOLEAN  resume_playback,
void *  monitor_service 
)

Starts playback of the given recording.

Parameters
recording_handlehandle of recorded programme to playback
resume_playbackTRUE if playback of the recording should resume from where it was last stopped, FALSE to start from the beginning
monitor_serviceservice to be tuned to in order to monitor SI data whilst playback is in progress. If this is NULL and the live path is still valid and tuned to a service then this will be used to monitor SI data. If neither are valid then no SI monitoring will be performed, which may result in recordings failing to be started if they're set to be event triggered.
Returns
TRUE if playback starts, FALSE otherwise
U8BIT APVR_PrepareNewRecording ( U16BIT  onet_id,
U16BIT  trans_id,
U16BIT  service_id,
BOOLEAN *  new_tuned_service 
)

Acquires a decode path for recording the given service and tunes to it.

Parameters
onet_idoriginal network id for the service
trans_idtransport id for the service
service_idservice id for the service
new_tuned_servicereturns TRUE if tuning is started. FALSE means the path is already tuned to the service
Returns
ID of path or INVALID_RES_ID on failure
void APVR_RecordRecommendations ( void *  crid_ptr,
BOOLEAN  radio_service 
)

Searches the schedule for events that are part of the given recommendation and that haven't already been recorded or aren't set to be recorded and creates a timer to record them.

Parameters
crid_ptrpointer to the CRID record
radio_serviceTRUE if the CRID is for a radio service
void APVR_RecordSeries ( void *  crid_ptr,
BOOLEAN  radio_service 
)

Seaches the schedule for events that are part of the given series and that haven't already been recorded or aren't set to be recorded and creates a timer to record them.

Parameters
crid_ptrpointer to the CRID record
radio_serviceTRUE if the CRID is for a radio service
void APVR_ReleaseActiveRecordingList ( U32BIT *  handle_list)

Frees the arrays allocated by APVR_GetActiveRecordingList.

Parameters
handle_listarray of recording handles
void APVR_ReleasePlayList ( U32BIT *  handle_list,
U8BIT **  name_list,
U32BIT *  rec_status_list,
U32BIT *  locked_list,
U32BIT *  selected_list,
U32BIT *  split_list 
)

Frees the arrays allocated by APVR_GetPlayList.

Parameters
handle_listarray of recording handles
name_listarray of recording names
rec_status_listarray of recording status'
locked_listarray of locked status'
selected_listarray of selected status'
void APVR_SetTimeshiftBufferSize ( U16BIT  time_in_mins)

Sets the size of the timeshift buffer so that it's able to store a recording of the given length before it has to loop round. Whether this value can be accurately achieved may vary according to the support provided by the platform.

Parameters
time_in_minstimeshift buffer size in minutes
BOOLEAN APVR_StartNewRecording ( U16BIT  disk_id,
U8BIT  path,
U8BIT *  recording_name,
U16BIT  event_id,
U8BIT *  prog_crid,
U8BIT *  other_crid,
U32BIT *  rec_handle 
)

Starts a recording after any tuning has completed and sets the info to be stored with it.

Parameters
disk_iddisk to record onto, default disk will be used if given disk id is invalid
pathdecode path to use for recording
recording_namename to be given to recording
event_idevent id which will be used to obtain info to save with the recording
prog_cridprogramme crid (only relevant for systems that broadcast CRIDs)
other_cridseries or recommendation crid
rec_handlepointer to returned recording handle
Returns
TRUE if the recording is started successfully, FALSE otherwise
U8BIT APVR_StartPausePlay ( void  )

Starts playback of a live timeshift recording started with APVR_StartPauseRecord. This function should not be called until STB_EVENT_PVR_REC_START has been received with the correct recording path as an argument (as returned by APVR_StartPauseRecord).

Returns
decode path used for the playback, INVALID_RES_ID on error
U8BIT APVR_StartPauseRecord ( void  )

Starts recording the live service ready for timeshift playback. The recording may not have started when this function returns, so an app should wait for the STB_EVENT_PVR_REC_START event before starting the paused playback using APVR_StartPausePlay.

Returns
decode path used for the pause recording, INVALID_RES_ID on error
void APVR_StopPauseRecord ( BOOLEAN  return_to_live)

Stops timeshifted playback and recording and optionally restarts decoding of the live signal.

Parameters
return_to_liveTRUE to start decoding the live service
void APVR_StopPlay ( BOOLEAN  return_to_live)

Stops playback and optionally returns to live TV.

Parameters
return_to_liveTRUE to return to live TV after stopping playback
BOOLEAN APVR_StopRecording ( U32BIT  recording_handle)

Stops the given recording.

Parameters
recording_handlerecording to be stopped
Returns
TRUE if recording stopped ok, FALSE otherwise