prominenceai/deepstream-services-library

Implement new dsl_tap_record_max_size_get/set and dsl_sink_record_max_size_get/set services

rjhowell44 opened this issue · 0 comments

The client application need to be able to control the maximum size of the smart recording. Note: the actual property name for the smart record bin is defaultDuration which is misleading.

New default settings:

/**
 * @brief Default maximum size for any Tap/Sink smart record in seconds.
 * start + duration < max-size  
*/
#define DSL_DEFAULT_VIDEO_RECORD_MAX_SIZE_IN_SEC                    600

/**
 * @brief Default cache size for any Tap/Sink smart record in seconds.
 * start < cache-size  
*/
#define DSL_DEFAULT_VIDEO_RECORD_CACHE_SIZE_IN_SEC                  60

The relationship between properties

max-size > start + duration
cache-size > start

New Record Tap services

/**
 * @brief Returns the video recording max size in units of seconds.
 * The default max size is set to DSL_DEFAULT_VIDEO_RECORD_MAX_SIZE_IN_SEC.
 * @param[in] name name of the Record Tap to query.
 * @param[out] max_size current max size setting in units of seconds.
 * @return DSL_RESULT_SUCCESS on success, one of DSL_RESULT_TAP_RESULT on failure.
 */
DslReturnType dsl_tap_record_max_size_get(const wchar_t* name, uint* max_size);

/**
 * @brief Sets the video recording max size in units of seconds.
 * The default cache size is set to DSL_DEFAULT_VIDEO_RECORD_CACHE_SIZE_IN_SEC
 * @param[in] name name of the Record Tap to update.
 * @param[in] max_size new cache size setting to use in units of seconds.
 * @return DSL_RESULT_SUCCESS on success, one of DSL_RESULT_TAP_RESULT on failure.
 */
DslReturnType dsl_tap_record_max_size_set(const wchar_t* name, uint max_size);

New Record Sink services

/**
 * @brief returns the video recording max size in units of seconds
 * The max size is fixed when the Pipeline is linked and played. 
 * The default max size is set to DSL_DEFAULT_VIDEO_RECORD_MAX_SIZE_IN_SEC
 * @param[in] name name of the Record Sink to query
 * @param[out] max_size current max size setting in units of seconds.
 * @return DSL_RESULT_SUCCESS on success, DSL_RESULT_SINK_RESULT
 */
DslReturnType dsl_sink_record_max_size_get(const wchar_t* name, uint* max_size);

/**
 * @brief sets the video recording max size in units of seconds.
 * The default max size is set to DSL_DEFAULT_VIDEO_RECORD_MAX_SIZE_IN_SEC
 * @param[in] name name of the Record Sink to query
 * @param[in] max_size new max size setting in units of seconds.
 * @return DSL_RESULT_SUCCESS on success, DSL_RESULT_SINK_RESULT
 */
DslReturnType dsl_sink_record_max_size_set(const wchar_t* name, uint max_size);