From 9067a7e2cd917707dbb7dbd50c095dd0c8f8ff93 Mon Sep 17 00:00:00 2001 From: Eunhye Choi Date: Thu, 8 Sep 2022 19:07:31 +0900 Subject: [PATCH] [0.0.11] remove bundle type for connection param - remove set/get param list by using bundle - add get param interface to set each connection param - sync default value of rist connection param with rist gst plugin - fix coverity issue Change-Id: Ife97c35f802eda26b47e6eb1371e6cff4363cef5 --- include/MediaTransporterBase.h | 6 +- include/MediaTransporterParam.h | 3 +- include/MediaTransporterReceiverRist.h | 4 - include/MediaTransporterReceiverSrt.h | 3 +- include/MediaTransporterSenderRist.h | 13 +- include/MediaTransporterSenderRtsp.h | 4 - include/MediaTransporterSenderSrt.h | 3 +- include/MediaTransporterSenderToServerRtsp.h | 4 - include/mtpr.h | 130 ++++++---------- packaging/capi-media-transporter.spec | 2 +- src/MediaTransporter.cpp | 43 ++---- src/MediaTransporterBase.cpp | 10 ++ src/MediaTransporterParam.cpp | 37 ++--- src/MediaTransporterParseIni.cpp | 2 +- src/MediaTransporterReceiverSrt.cpp | 9 +- src/MediaTransporterSenderRist.cpp | 75 +++------ src/MediaTransporterSenderSrt.cpp | 9 +- test/mtpr_test.c | 124 ++++----------- unittest/ut_srt_sender.cpp | 218 ++++++++++----------------- 19 files changed, 232 insertions(+), 467 deletions(-) diff --git a/include/MediaTransporterBase.h b/include/MediaTransporterBase.h index 2b9906a..8c78bbb 100644 --- a/include/MediaTransporterBase.h +++ b/include/MediaTransporterBase.h @@ -24,7 +24,6 @@ #include #include #include -#include #include "MediaTransporter.h" #include "MediaTransporterParseIni.h" @@ -67,9 +66,8 @@ public: virtual mtprConnectionType type() = 0; - virtual void setConnection(std::string name, std::string value) = 0; - virtual void setConnection(bundle* params) = 0; - virtual void getConnection(bundle* params) = 0; + virtual void setConnection(std::string name, std::string value); + virtual std::string getConnection(std::string name); void setResourceManager(std::shared_ptr resourceManager); void changed() override; // resource interrupted diff --git a/include/MediaTransporterParam.h b/include/MediaTransporterParam.h index 7c16d7d..f670e08 100644 --- a/include/MediaTransporterParam.h +++ b/include/MediaTransporterParam.h @@ -70,8 +70,7 @@ struct connectionParam { bool _isValidKeyLength(int keyLen); void setConnectionParam(std::string key, std::string value, connectionParam* connectionParam); -void setConnectionParamList(bundle* paramList, connectionParam* connectionParam); -void getConnectionParamList(const connectionParam& connectionParam, bundle* paramList); +std::string getConnectionParam(const connectionParam& connectionParam, const std::string& key); }; // srt }; // param diff --git a/include/MediaTransporterReceiverRist.h b/include/MediaTransporterReceiverRist.h index c706e67..cbe80a7 100644 --- a/include/MediaTransporterReceiverRist.h +++ b/include/MediaTransporterReceiverRist.h @@ -38,10 +38,6 @@ public: void startPipeline() override; void stopPipeline() override; - void setConnection(std::string name, std::string value) override {} - void setConnection(bundle* params) override {} - void getConnection(bundle* params) override {} - void setReceiverAddress(std::string address) override; std::string getReceiverAddress() override { return _receiverAddress; } diff --git a/include/MediaTransporterReceiverSrt.h b/include/MediaTransporterReceiverSrt.h index c766352..6dcc30f 100644 --- a/include/MediaTransporterReceiverSrt.h +++ b/include/MediaTransporterReceiverSrt.h @@ -40,8 +40,7 @@ public: void stopPipeline() override; void setConnection(std::string name, std::string value) override; - void setConnection(bundle* paramList) override; - void getConnection(bundle* paramList) override; + std::string getConnection(std::string name) override; void setSenderAddress(std::string address) override; std::string getSenderAddress() override { return _senderAddress; } diff --git a/include/MediaTransporterSenderRist.h b/include/MediaTransporterSenderRist.h index d91773c..2167e1b 100644 --- a/include/MediaTransporterSenderRist.h +++ b/include/MediaTransporterSenderRist.h @@ -26,6 +26,10 @@ #include "MediaTransporterSender.h" #include "MediaTransporterGst.h" +constexpr size_t DEFAULT_MAX_RTCP_BANDWIDTH = 0.05; +constexpr size_t DEFAULT_MIN_RTCP_INTERVAL = 100; +constexpr size_t DEFAULT_SEND_BUFFER = 1200; + namespace tizen_media_transporter { class MediaTransporterSenderRist : public MediaTransporterSender @@ -39,8 +43,7 @@ public: void stopPipeline() override; void setConnection(std::string name, std::string value) override; - void setConnection(bundle* params) override; - void getConnection(bundle* params) override; + std::string getConnection(std::string name) override; void setReceiverAddress(std::string address) override; std::string getReceiverAddress() override { return _receiverAddress; } @@ -50,9 +53,9 @@ public: private: struct MtprConnectionParamRist { std::string bondingAddress; - double maxRtcpBandwidth { -1 }; - unsigned int minRtcpInterval { UINT_MAX }; - unsigned int senderBuffer { UINT_MAX }; + double maxRtcpBandwidth { DEFAULT_MAX_RTCP_BANDWIDTH }; + unsigned int minRtcpInterval { DEFAULT_MIN_RTCP_INTERVAL }; + unsigned int senderBuffer { DEFAULT_SEND_BUFFER }; }; MtprConnectionParamRist _connectionParam; diff --git a/include/MediaTransporterSenderRtsp.h b/include/MediaTransporterSenderRtsp.h index 3c6504d..048a663 100644 --- a/include/MediaTransporterSenderRtsp.h +++ b/include/MediaTransporterSenderRtsp.h @@ -36,10 +36,6 @@ public: void startPipeline() override; void stopPipeline() override; - void setConnection(std::string name, std::string value) override {} - void setConnection(bundle* params) override {} - void getConnection(bundle* params) override {} - void setSenderAddress(std::string address) override; std::string getSenderAddress() override { return _senderAddress; } diff --git a/include/MediaTransporterSenderSrt.h b/include/MediaTransporterSenderSrt.h index 08534d7..9fd16c5 100644 --- a/include/MediaTransporterSenderSrt.h +++ b/include/MediaTransporterSenderSrt.h @@ -39,8 +39,7 @@ public: void stopPipeline() override; void setConnection(std::string name, std::string value) override; - void setConnection(bundle* paramList) override; - void getConnection(bundle* paramList) override; + std::string getConnection(std::string name) override; void setSenderAddress(std::string address) override; std::string getSenderAddress() override { return _senderAddress; } diff --git a/include/MediaTransporterSenderToServerRtsp.h b/include/MediaTransporterSenderToServerRtsp.h index e042a91..da4955b 100644 --- a/include/MediaTransporterSenderToServerRtsp.h +++ b/include/MediaTransporterSenderToServerRtsp.h @@ -37,10 +37,6 @@ public: void startPipeline() override; void stopPipeline() override; - void setConnection(std::string name, std::string value) override {} - void setConnection(bundle* params) override {} - void getConnection(bundle* params) override {} - void setReceiverAddress(std::string address) override; std::string getReceiverAddress() override { return _receiverAddress; } diff --git a/include/mtpr.h b/include/mtpr.h index 2906088..e4c9f95 100644 --- a/include/mtpr.h +++ b/include/mtpr.h @@ -69,15 +69,16 @@ typedef enum { * @since_tizen 7.0 */ typedef enum { - MTPR_ERROR_NONE = TIZEN_ERROR_NONE, /**< Successful */ - MTPR_ERROR_NOT_SUPPORTED = TIZEN_ERROR_NOT_SUPPORTED, /**< Not supported */ - MTPR_ERROR_PERMISSION_DENIED = TIZEN_ERROR_PERMISSION_DENIED, /**< Permission denied */ - MTPR_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER, /**< Invalid parameter */ - MTPR_ERROR_INVALID_OPERATION = TIZEN_ERROR_INVALID_OPERATION, /**< Invalid operation */ - MTPR_ERROR_INVALID_STATE = TIZEN_ERROR_MEDIA_TRANSPORTER | 0x01, /**< Invalid state */ - MTPR_ERROR_CONNECTION_FAILED = TIZEN_ERROR_MEDIA_TRANSPORTER | 0x02, /**< Connection failed */ - MTPR_ERROR_RESOURCE_FAILED = TIZEN_ERROR_MEDIA_TRANSPORTER | 0x03, /**< Resource failed */ - MTPR_ERROR_RESOURCE_CONFLICT = TIZEN_ERROR_MEDIA_TRANSPORTER | 0x04, /**< Resource conflict */ + MTPR_ERROR_NONE = TIZEN_ERROR_NONE, /**< Successful */ + MTPR_ERROR_NOT_SUPPORTED = TIZEN_ERROR_NOT_SUPPORTED, /**< Not supported */ + MTPR_ERROR_PERMISSION_DENIED = TIZEN_ERROR_PERMISSION_DENIED, /**< Permission denied */ + MTPR_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER, /**< Invalid parameter */ + MTPR_ERROR_INVALID_OPERATION = TIZEN_ERROR_INVALID_OPERATION, /**< Invalid operation */ + MTPR_ERROR_NO_DATA = TIZEN_ERROR_NO_DATA, /**< No data */ + MTPR_ERROR_INVALID_STATE = TIZEN_ERROR_MEDIA_TRANSPORTER | 0x01, /**< Invalid state */ + MTPR_ERROR_CONNECTION_FAILED = TIZEN_ERROR_MEDIA_TRANSPORTER | 0x02, /**< Connection failed */ + MTPR_ERROR_RESOURCE_FAILED = TIZEN_ERROR_MEDIA_TRANSPORTER | 0x03, /**< Resource failed */ + MTPR_ERROR_RESOURCE_CONFLICT = TIZEN_ERROR_MEDIA_TRANSPORTER | 0x04, /**< Resource conflict */ } mtpr_error_e; /** @@ -119,8 +120,8 @@ typedef enum { 2: listener mode to wait for being connected by peer caller.\n 3: rendezvous mode to support one-to-one only connection. * @since_tizen 7.0 - * @see mtpr_set_connection_params() - * @see mtpr_get_connection_params() + * @see mtpr_set_connection_param() + * @see mtpr_get_connection_param() */ #define MTPR_CONNECTION_PARAM_SRT_MODE "mode" @@ -128,8 +129,8 @@ typedef enum { * @brief Definition for streamid parameter of SRT. * @details The streamid for the SRT access control. * @since_tizen 7.0 - * @see mtpr_set_connection_params() - * @see mtpr_get_connection_params() + * @see mtpr_set_connection_param() + * @see mtpr_get_connection_param() */ #define MTPR_CONNECTION_PARAM_SRT_STREAMID "streamid" @@ -139,7 +140,7 @@ typedef enum { * The number of characters must be 10 to 79. * @since_tizen 7.0 * @remarks This is write only parameter. - * @see mtpr_set_connection_params() + * @see mtpr_set_connection_param() */ #define MTPR_CONNECTION_PARAM_SRT_PASSPHRASE "passphrase" @@ -151,8 +152,8 @@ typedef enum { 24: 24 bytes (192-bit) length.\n 32: 32 bytes (256-bit) length. * @since_tizen 7.0 - * @see mtpr_set_connection_params() - * @see mtpr_get_connection_params() + * @see mtpr_set_connection_param() + * @see mtpr_get_connection_param() */ #define MTPR_CONNECTION_PARAM_SRT_PBKEYLEN "pbkeylen" @@ -161,8 +162,8 @@ typedef enum { * @details Bonding address to send packets to (IPv4 or IPv6).\n Comma (,) separated list of
: to send to * @since_tizen 7.0 - * @see mtpr_set_connection_params() - * @see mtpr_get_connection_params() + * @see mtpr_set_connection_param() + * @see mtpr_get_connection_param() */ #define MTPR_CONNECTION_PARAM_RIST_BONDING_ADDRESS "bonding-address" @@ -171,8 +172,8 @@ typedef enum { * @details The maximum bandwidth used for RTCP as a fraction of RTP bandwidth of RIST Range: 0 ~ 0.05 * @since_tizen 7.0 - * @see mtpr_set_connection_params() - * @see mtpr_get_connection_params() + * @see mtpr_set_connection_param() + * @see mtpr_get_connection_param() */ #define MTPR_CONNECTION_PARAM_RIST_MAX_RTCP_BANDWIDTH "max-rtcp-bandwidth" @@ -181,8 +182,8 @@ typedef enum { * @details The minimum interval (in ms) between two regular successive RTCP packets.\n Range: 0 ~ 100 (ms) * @since_tizen 7.0 - * @see mtpr_set_connection_params() - * @see mtpr_get_connection_params() + * @see mtpr_set_connection_param() + * @see mtpr_get_connection_param() */ #define MTPR_CONNECTION_PARAM_RIST_MIN_RTCP_INTERVAL "min-rtcp-interval" @@ -190,42 +191,12 @@ typedef enum { * @brief Definition for size of retransmission queue for RIST * @details Size of the retransmission queue (in ms). * @since_tizen 7.0 - * @see mtpr_set_connection_params() - * @see mtpr_get_connection_params() + * @see mtpr_set_connection_param() + * @see mtpr_get_connection_param() */ #define MTPR_CONNECTION_PARAM_RIST_SENDER_BUFFER "sender-buffer" /** - * @brief Definition for IP to configure RTSP server - * @details IP address where the RTSP server will listen on. - * @remarks The default value is localhost (0.0.0.0 / 127.0.0.1). - * @since_tizen 7.0 - * @see mtpr_set_connection_params() - * @see mtpr_get_connection_params() - */ -#define MTPR_CONNECTION_PARAM_RTSP_SERVER_IP "server-ip" - -/** - * @brief Definition for port of RTSP server - * @details String containing port number bewteen 1 and 65535\n - where the RTSP server will listen on. - * @remarks The default value is '8554'. - * @since_tizen 7.0 - * @see mtpr_set_connection_params() - * @see mtpr_get_connection_params() - */ -#define MTPR_CONNECTION_PARAM_RTSP_SERVER_PORT "server-port" - -/** - * @brief Definition for mount point of RTSP server - * @remarks The default value is '/mtpr_server/tmp'. - * @since_tizen 7.0 - * @see mtpr_set_connection_params() - * @see mtpr_get_connection_params() - */ -#define MTPR_CONNECTION_PARAM_RTSP_SERVER_MOUNT_POINT "mount-point" - -/** * @brief Definition for video source width * @remarks The default value 320 * @since_tizen 7.0 @@ -462,12 +433,13 @@ int mtpr_set_sender_address(mtpr_h mtpr, const char *address); /** * @brief Gets the sender address * @since_tizen 7.0 - * @remarks The @a address should be released using free(). + * @remarks The @a address must be released by using @c free(). * @param[in] mtpr Media Transporter handle * @param[out] address The sender address * @return @c 0 on success, * otherwise a negative error value * @retval #MTPR_ERROR_NONE Successful + * @retval #MTPR_ERROR_NO_DATA No output data * @retval #MTPR_ERROR_INVALID_PARAMETER Invalid parameter * @see mtpr_set_sender_address() */ @@ -477,7 +449,7 @@ int mtpr_get_sender_address(mtpr_h mtpr, char **address); * @brief Sets the receiver address * @since_tizen 7.0 * @remarks It should set when mtpr connection type is \n - * (#MTPR_CONNECTION_TYPE_RIST_SENDER, #MTPR_CONNECTION_TYPE_RIST_RECEIVER, #MTPR_CONNECTION_TYPE_RTSP_SENDER_TO_SERVER + * (#MTPR_CONNECTION_TYPE_RIST_SENDER, #MTPR_CONNECTION_TYPE_RIST_RECEIVER, #MTPR_CONNECTION_TYPE_RTSP_SENDER_TO_SERVER) * @param[in] mtpr Media Transporter handle * @param[in] address The connection address * @return @c 0 on success, @@ -493,24 +465,25 @@ int mtpr_set_receiver_address(mtpr_h mtpr, const char *address); /** * @brief Gets the receiver address * @since_tizen 7.0 - * @remarks The @a address should be released using free(). + * @remarks The @a address must be released by using @c free(). * @param[in] mtpr Media Transporter handle * @param[out] address The receiver address * @return @c 0 on success, * otherwise a negative error value * @retval #MTPR_ERROR_NONE Successful + * @retval #MTPR_ERROR_NO_DATA No output data * @retval #MTPR_ERROR_INVALID_PARAMETER Invalid parameter * @see mtpr_set_receiver_address() */ int mtpr_get_receiver_address(mtpr_h mtpr, char **address); /** - * @brief Sets connection parameter list. + * @brief Sets connection parameter. * @details The parameters are key and value pairs. \n The key is defined in this header file and the value data type must be string. * @since_tizen 7.0 * @param[in] mtpr Media Transporter handle - * @param[in] param_name connection parameter nam + * @param[in] param_name connection parameter name * @param[in] param_value connection parameter value * @return @c 0 on success, * otherwise a negative error value @@ -519,47 +492,28 @@ int mtpr_get_receiver_address(mtpr_h mtpr, char **address); * @retval #MTPR_ERROR_INVALID_STATE Invalid state * @retval #MTPR_ERROR_INVALID_OPERATION Invalid operation * @pre @a mtpr state must be set to #MTPR_STATE_IDLE. - * @see mtpr_set_connection_params() - * @see mtpr_get_connection_params() - * @see #bundle + * @see mtpr_get_connection_param() */ int mtpr_set_connection_param(mtpr_h mtpr, const char *param_name, const char *param_value); /** - * @brief Sets connection parameter list. - * @details Many connection parameters can be set at one time all together by using bundle. \n - The parameters are key and value pairs. \n - The key is defined in this header file and the value data type must be string. - * @since_tizen 7.0 - * @param[in] mtpr Media Transporter handle - * @param[in] param_list Key value array of connection parameters - * @return @c 0 on success, - * otherwise a negative error value - * @retval #MTPR_ERROR_NONE Successful - * @retval #MTPR_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #MTPR_ERROR_INVALID_STATE Invalid state - * @retval #MTPR_ERROR_INVALID_OPERATION Invalid operation - * @pre @a mtpr state must be set to #MTPR_STATE_IDLE. - * @see mtpr_get_connection_params() - * @see #bundle - */ -int mtpr_set_connection_params(mtpr_h mtpr, bundle *param_list); - -/** - * @brief Gets connection parameter list. + * @brief Gets connection parameter. * @since_tizen 7.0 - * @remarks The @a param_list should be released using bundle_free().\n + * @details The parameters are key and value pairs. \n + The key is defined in this header file. + * @remarks The @a param_value must be released by using @c free(). * @param[in] mtpr Media Transporter handle - * @param[out] param_list Key value array of connection parameters + * @param[in] param_name connection parameter name + * @param[out] param_value connection parameter value * @return @c 0 on success, * otherwise a negative error value * @retval #MTPR_ERROR_NONE Successful + * @retval #MTPR_ERROR_NO_DATA No output data * @retval #MTPR_ERROR_INVALID_PARAMETER Invalid parameter * @retval #MTPR_ERROR_INVALID_OPERATION Invalid operation - * @see mtpr_set_connection_params() - * @see #bundle + * @see mtpr_set_connection_param() */ -int mtpr_get_connection_params(mtpr_h mtpr, bundle **param_list); +int mtpr_get_connection_param(mtpr_h mtpr, const char *param_name, char **param_value); /** * @brief Adds a media source. diff --git a/packaging/capi-media-transporter.spec b/packaging/capi-media-transporter.spec index f2b8d11..aba59a0 100644 --- a/packaging/capi-media-transporter.spec +++ b/packaging/capi-media-transporter.spec @@ -1,6 +1,6 @@ Name: capi-media-transporter Summary: A Media Transporter library in Tizen Native API -Version: 0.0.10 +Version: 0.0.11 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/src/MediaTransporter.cpp b/src/MediaTransporter.cpp index f044786..e4d8fa6 100644 --- a/src/MediaTransporter.cpp +++ b/src/MediaTransporter.cpp @@ -164,8 +164,8 @@ int mtpr_get_sender_address(mtpr_h mtpr, char **address) assert(handle->base); std::string senderAddress = handle->base->getSenderAddress(); if (senderAddress.empty()) { - *address = NULL; - return MTPR_ERROR_INVALID_OPERATION; + LOG_WARNING("sender address is empty"); + return MTPR_ERROR_NO_DATA; } *address = strdup(senderAddress.c_str()); } catch (const MediaTransporterException& e) { @@ -203,8 +203,8 @@ int mtpr_get_receiver_address(mtpr_h mtpr, char **address) assert(handle->base); std::string receiverAddress = handle->base->getReceiverAddress(); if (receiverAddress.empty()) { - *address = NULL; - return MTPR_ERROR_INVALID_OPERATION; + LOG_WARNING("receiver address is empty"); + return MTPR_ERROR_NO_DATA; } *address = strdup(receiverAddress.c_str()); } catch (const MediaTransporterException& e) { @@ -233,39 +233,22 @@ int mtpr_set_connection_param(mtpr_h mtpr, const char *param_name, const char *p return MTPR_ERROR_NONE; } -int mtpr_set_connection_params(mtpr_h mtpr, bundle *param_list) +int mtpr_get_connection_param(mtpr_h mtpr, const char *param_name, char **param_value) { RET_ERR_IF_INVALID_INSTANCE(mtpr); - RET_ERR_IF_NULL_ARG(param_list); - - try { - auto handle = static_cast(mtpr); - assert(handle->base); - handle->base->setConnection(param_list); - } catch (const MediaTransporterException& e) { - LOG_ERROR("Failed to set connection params!!! : %s", e.what()); - return e.error(); - } - - return MTPR_ERROR_NONE; -} - -int mtpr_get_connection_params(mtpr_h mtpr, bundle **param_list) -{ - RET_ERR_IF_INVALID_INSTANCE(mtpr); - RET_ERR_IF_NULL_ARG(param_list); + RET_ERR_IF_NULL_ARG(param_name); + RET_ERR_IF_NULL_ARG(param_value); - bundle *params = NULL; try { auto handle = static_cast(mtpr); assert(handle->base); - params = bundle_create(); - RET_VAL_IF(!params, MTPR_ERROR_INVALID_OPERATION, "created param_list is NULL!!!"); - handle->base->getConnection(params); - *param_list = params; + std::string value = handle->base->getConnection(param_name); + if (value.empty()) { + LOG_WARNING("param value is empty"); + return MTPR_ERROR_NO_DATA; + } + *param_value = strdup(value.c_str()); } catch (const MediaTransporterException& e) { - if (params) - bundle_free(params); LOG_ERROR("Failed to get connection params!!! : %s", e.what()); return e.error(); } diff --git a/src/MediaTransporterBase.cpp b/src/MediaTransporterBase.cpp index 0bd10f3..f483cb4 100644 --- a/src/MediaTransporterBase.cpp +++ b/src/MediaTransporterBase.cpp @@ -213,6 +213,16 @@ std::string MediaTransporterBase::getReceiverAddress() "not supported, get sender address instead!"); } +void MediaTransporterBase::setConnection(std::string name, std::string value) +{ + throw MediaTransporterException(MTPR_ERROR_INVALID_OPERATION, "not supported"); +} + +std::string MediaTransporterBase::getConnection(std::string name) +{ + throw MediaTransporterException(MTPR_ERROR_INVALID_OPERATION, "not supported"); +} + void MediaTransporterBase::setErrorCallback(void* handle, mtprErrorCallback callback, void* userData) { _errorCallback = std::unique_ptr(new ErrorCallback(handle, callback, userData)); diff --git a/src/MediaTransporterParam.cpp b/src/MediaTransporterParam.cpp index 7b0b413..2bc908b 100644 --- a/src/MediaTransporterParam.cpp +++ b/src/MediaTransporterParam.cpp @@ -160,36 +160,19 @@ void param::srt::setConnectionParam(std::string key, std::string value, param::s } } -void param::srt::setConnectionParamList(bundle* paramList, param::srt::connectionParam* connectionParam) +std::string param::srt::getConnectionParam(const param::srt::connectionParam& connectionParam, const std::string& key) { - char* string_val = NULL; - - if (bundle_get_str(paramList, MTPR_CONNECTION_PARAM_SRT_MODE, &string_val) != BUNDLE_ERROR_KEY_NOT_AVAILABLE) - setConnectionParam(MTPR_CONNECTION_PARAM_SRT_MODE, string_val, connectionParam); - - if (bundle_get_str(paramList, MTPR_CONNECTION_PARAM_SRT_STREAMID, &string_val) != BUNDLE_ERROR_KEY_NOT_AVAILABLE) - connectionParam->streamId = string_val; - - if (bundle_get_str(paramList, MTPR_CONNECTION_PARAM_SRT_PASSPHRASE, &string_val) != BUNDLE_ERROR_KEY_NOT_AVAILABLE) - setConnectionParam(MTPR_CONNECTION_PARAM_SRT_PASSPHRASE, string_val, connectionParam); + if (key == MTPR_CONNECTION_PARAM_SRT_STREAMID) + return connectionParam.streamId; - if (bundle_get_str(paramList, MTPR_CONNECTION_PARAM_SRT_PBKEYLEN, &string_val) != BUNDLE_ERROR_KEY_NOT_AVAILABLE) - setConnectionParam(MTPR_CONNECTION_PARAM_SRT_PBKEYLEN, string_val, connectionParam); -} - -void param::srt::getConnectionParamList(const param::srt::connectionParam& connectionParam, bundle *paramList) -{ - bundle_add_str(paramList, - MTPR_CONNECTION_PARAM_SRT_MODE, - std::to_string(static_cast(connectionParam.mode)).c_str()); + if (key == MTPR_CONNECTION_PARAM_SRT_PASSPHRASE) + return connectionParam.passPhrase; - if (!connectionParam.streamId.empty()) - bundle_add_str(paramList, MTPR_CONNECTION_PARAM_SRT_STREAMID, connectionParam.streamId.c_str()); + if (key == MTPR_CONNECTION_PARAM_SRT_PBKEYLEN) + return std::to_string(static_cast(connectionParam.pbKeyLen)); - if (!connectionParam.passPhrase.empty()) - bundle_add_str(paramList, MTPR_CONNECTION_PARAM_SRT_PASSPHRASE, connectionParam.passPhrase.c_str()); + if (key == MTPR_CONNECTION_PARAM_SRT_MODE) + return std::to_string(static_cast(connectionParam.mode)); - bundle_add_str(paramList, - MTPR_CONNECTION_PARAM_SRT_PBKEYLEN, - std::to_string(static_cast(connectionParam.pbKeyLen)).c_str()); + throw MediaTransporterException(MTPR_ERROR_INVALID_PARAMETER, "invalid param name"); } diff --git a/src/MediaTransporterParseIni.cpp b/src/MediaTransporterParseIni.cpp index a8008a6..891b221 100644 --- a/src/MediaTransporterParseIni.cpp +++ b/src/MediaTransporterParseIni.cpp @@ -298,8 +298,8 @@ void MediaTransporterIni::load() dumpIni(); if (dict) { - iniparser_freedict(dict); LOG_DEBUG("ini instance[%p] is freed", dict); + iniparser_freedict(dict); dict = NULL; } } \ No newline at end of file diff --git a/src/MediaTransporterReceiverSrt.cpp b/src/MediaTransporterReceiverSrt.cpp index 7d22924..4bb54b9 100644 --- a/src/MediaTransporterReceiverSrt.cpp +++ b/src/MediaTransporterReceiverSrt.cpp @@ -133,14 +133,9 @@ void MediaTransporterReceiverSrt::setConnection(std::string name, std::string st setConnectionParam(name, string_val, &_connectionParam); } -void MediaTransporterReceiverSrt::setConnection(bundle* paramList) +std::string MediaTransporterReceiverSrt::getConnection(std::string name) { - setConnectionParamList(paramList, &_connectionParam); -} - -void MediaTransporterReceiverSrt::getConnection(bundle* paramList) -{ - getConnectionParamList(_connectionParam, paramList); + return getConnectionParam(_connectionParam, name); } void MediaTransporterReceiverSrt::setSenderAddress(std::string address) diff --git a/src/MediaTransporterSenderRist.cpp b/src/MediaTransporterSenderRist.cpp index 84da981..4c8ec22 100644 --- a/src/MediaTransporterSenderRist.cpp +++ b/src/MediaTransporterSenderRist.cpp @@ -22,10 +22,9 @@ #include "MediaTransporterUtil.h" #include "MediaTransporterParseIni.h" -#define RTCP_BANDWIDTH_PARAM_MIN 0 -#define RTCP_BANDWIDTH_PARAM_MAX 0.05 -#define RTCP_INTERVAL_PARAM_MIN 0 -#define RTCP_INTERVAL_PARAM_MAX 100 +constexpr size_t MIN_RTCP_BANDWIDTH_PARAM = 0; +constexpr size_t MAX_RTCP_BANDWIDTH_PARAM = 0.05; +constexpr size_t MAX_RTCP_INTERVAL_PARAM = 100; using namespace tizen_media_transporter; @@ -49,13 +48,11 @@ void MediaTransporterSenderRist::buildPipeline() sink = gst::_createElement(gst::DEFAULT_ELEMENT_RISTSINK); g_object_set(G_OBJECT(sink), "bonding-addresses", _receiverAddress.c_str(), NULL); - if (_connectionParam.maxRtcpBandwidth > 0 && _connectionParam.maxRtcpBandwidth <= 0.05) + if (_connectionParam.maxRtcpBandwidth != DEFAULT_MAX_RTCP_BANDWIDTH) g_object_set(G_OBJECT(sink), "max-rtcp-bandwidth", _connectionParam.maxRtcpBandwidth, NULL); - - if (_connectionParam.minRtcpInterval != UINT_MAX && _connectionParam.minRtcpInterval <= 100) + if (_connectionParam.minRtcpInterval != DEFAULT_MIN_RTCP_INTERVAL) g_object_set(G_OBJECT(sink), "min-rtcp-interval", _connectionParam.minRtcpInterval, NULL); - - if (_connectionParam.senderBuffer != UINT_MAX) + if (_connectionParam.senderBuffer != DEFAULT_SEND_BUFFER) g_object_set(G_OBJECT(sink), "sender-buffer", _connectionParam.senderBuffer, NULL); SECURE_LOG_INFO("max-rtcp-bandwidth %f, min-rtcp-interval %u, sender-buffer %u", @@ -103,32 +100,31 @@ void MediaTransporterSenderRist::setConnection(std::string name, std::string str SECURE_LOG_INFO("%s : %s", name.c_str(), string_val.c_str()); try { - if (name.compare(MTPR_CONNECTION_PARAM_RIST_BONDING_ADDRESS) == 0) { - _connectionParam.bondingAddress = string_val; + if (name == MTPR_CONNECTION_PARAM_RIST_BONDING_ADDRESS) { + _connectionParam.bondingAddress = string_val; /* FIXME : need to consider with _receiverAddress */ - } else if (name.compare(MTPR_CONNECTION_PARAM_RIST_MAX_RTCP_BANDWIDTH) == 0) { + } else if (name == MTPR_CONNECTION_PARAM_RIST_MAX_RTCP_BANDWIDTH) { size_t size; double val = stod(string_val, &size); if ((string_val.size() != size) || - (val < RTCP_BANDWIDTH_PARAM_MIN) || (val > RTCP_BANDWIDTH_PARAM_MAX)) { + (val < MIN_RTCP_BANDWIDTH_PARAM) || (val > MAX_RTCP_BANDWIDTH_PARAM)) { LOG_ERROR("invalid rtcp bandwidth value %s", string_val.c_str()); throw MediaTransporterException(MTPR_ERROR_INVALID_PARAMETER, "invalid rtcp bandwidth value"); } _connectionParam.maxRtcpBandwidth = val; - } else if (name.compare(MTPR_CONNECTION_PARAM_RIST_MIN_RTCP_INTERVAL) == 0) { + } else if (name == MTPR_CONNECTION_PARAM_RIST_MIN_RTCP_INTERVAL) { size_t size; - int val = stoi(string_val, &size); - if ((string_val.size() != size) || - (val < RTCP_INTERVAL_PARAM_MIN) || (val > RTCP_INTERVAL_PARAM_MAX)) { + unsigned int val = stoul(string_val, &size); + if ((string_val.size() != size) || (val > MAX_RTCP_INTERVAL_PARAM)) { LOG_ERROR("invalid rtcp interval value %s", string_val.c_str()); throw MediaTransporterException(MTPR_ERROR_INVALID_PARAMETER, "invalid rtcp interval value"); } _connectionParam.minRtcpInterval = val; - } else if (name.compare(MTPR_CONNECTION_PARAM_RIST_SENDER_BUFFER) == 0) { + } else if (name == MTPR_CONNECTION_PARAM_RIST_SENDER_BUFFER) { size_t size; - int val = stoi(string_val, &size); + unsigned int val = stoul(string_val, &size); if (string_val.size() != size) { LOG_ERROR("invalid sender buffer value %s", string_val.c_str()); throw MediaTransporterException(MTPR_ERROR_INVALID_PARAMETER, "invalid sender buffer value"); @@ -145,42 +141,21 @@ void MediaTransporterSenderRist::setConnection(std::string name, std::string str } } -void MediaTransporterSenderRist::setConnection(bundle* params) +std::string MediaTransporterSenderRist::getConnection(std::string name) { - char* string_val = NULL; + if (name == MTPR_CONNECTION_PARAM_RIST_BONDING_ADDRESS) + return _connectionParam.bondingAddress; /* FIXME : need to consider with _receiverAddress */ - if (bundle_get_str(params, MTPR_CONNECTION_PARAM_RIST_BONDING_ADDRESS, &string_val) != BUNDLE_ERROR_KEY_NOT_AVAILABLE) - _connectionParam.bondingAddress = string_val; + if (name == MTPR_CONNECTION_PARAM_RIST_MAX_RTCP_BANDWIDTH) + return std::to_string(_connectionParam.maxRtcpBandwidth); - if (bundle_get_str(params, MTPR_CONNECTION_PARAM_RIST_MAX_RTCP_BANDWIDTH, &string_val) != BUNDLE_ERROR_KEY_NOT_AVAILABLE) - setConnection(MTPR_CONNECTION_PARAM_RIST_MAX_RTCP_BANDWIDTH, string_val); + if (name == MTPR_CONNECTION_PARAM_RIST_MIN_RTCP_INTERVAL) + return std::to_string(_connectionParam.minRtcpInterval); - if (bundle_get_str(params, MTPR_CONNECTION_PARAM_RIST_MIN_RTCP_INTERVAL, &string_val) != BUNDLE_ERROR_KEY_NOT_AVAILABLE) - setConnection(MTPR_CONNECTION_PARAM_RIST_MIN_RTCP_INTERVAL, string_val); + if (name == MTPR_CONNECTION_PARAM_RIST_SENDER_BUFFER) + return std::to_string(_connectionParam.senderBuffer); - if (bundle_get_str(params, MTPR_CONNECTION_PARAM_RIST_SENDER_BUFFER, &string_val) != BUNDLE_ERROR_KEY_NOT_AVAILABLE) - setConnection(MTPR_CONNECTION_PARAM_RIST_SENDER_BUFFER, string_val); -} - -void MediaTransporterSenderRist::getConnection(bundle* params) -{ - if (!_connectionParam.bondingAddress.empty()) - bundle_add_str(params, MTPR_CONNECTION_PARAM_RIST_BONDING_ADDRESS, _connectionParam.bondingAddress.c_str()); - - if (_connectionParam.maxRtcpBandwidth > -1) - bundle_add_str(params, - MTPR_CONNECTION_PARAM_RIST_MAX_RTCP_BANDWIDTH, - std::to_string(_connectionParam.maxRtcpBandwidth).c_str()); - - if (_connectionParam.minRtcpInterval != UINT_MAX) - bundle_add_str(params, - MTPR_CONNECTION_PARAM_RIST_MIN_RTCP_INTERVAL, - std::to_string(_connectionParam.minRtcpInterval).c_str()); - - if (_connectionParam.senderBuffer != UINT_MAX) - bundle_add_str(params, - MTPR_CONNECTION_PARAM_RIST_SENDER_BUFFER, - std::to_string(_connectionParam.senderBuffer).c_str()); + throw MediaTransporterException(MTPR_ERROR_INVALID_PARAMETER, "invalid param name"); } void MediaTransporterSenderRist::setReceiverAddress(std::string address) diff --git a/src/MediaTransporterSenderSrt.cpp b/src/MediaTransporterSenderSrt.cpp index 6b058b1..5a85621 100644 --- a/src/MediaTransporterSenderSrt.cpp +++ b/src/MediaTransporterSenderSrt.cpp @@ -133,14 +133,9 @@ void MediaTransporterSenderSrt::setConnection(std::string name, std::string stri setConnectionParam(name, string_val, &_connectionParam); } -void MediaTransporterSenderSrt::setConnection(bundle* paramList) +std::string MediaTransporterSenderSrt::getConnection(std::string name) { - setConnectionParamList(paramList, &_connectionParam); -} - -void MediaTransporterSenderSrt::getConnection(bundle* paramList) -{ - getConnectionParamList(_connectionParam, paramList); + return getConnectionParam(_connectionParam, name); } void MediaTransporterSenderSrt::setSenderAddress(std::string address) diff --git a/test/mtpr_test.c b/test/mtpr_test.c index e10be22..337ec09 100644 --- a/test/mtpr_test.c +++ b/test/mtpr_test.c @@ -47,9 +47,7 @@ enum { CURRENT_STATUS_CONNECTION_RIST_MAX_RTCP_BANDWIDTH, CURRENT_STATUS_CONNECTION_RIST_MIN_RTCP_INTERVAL, CURRENT_STATUS_CONNECTION_RIST_SENDER_BUFFER, - CURRENT_STATUS_CONNECTION_RTSP_SERVER_IP, - CURRENT_STATUS_CONNECTION_RTSP_SERVER_PORT, - CURRENT_STATUS_CONNECTION_RTSP_SERVER_MOUNT_POINT, + CURRENT_STATUS_CONNECTION_GET_PARAM, CURRENT_STATUS_ADD_MEDIA_SOURCE, CURRENT_STATUS_SOURCE_VIDEO_WIDTH, CURRENT_STATUS_SOURCE_VIDEO_HEIGHT, @@ -77,7 +75,6 @@ typedef struct { static appdata g_ad; static mtpr_h g_mtpr; -static bundle *g_connection_param; static bundle *g_source_param; static mtpr_source_type_e g_source_type; @@ -637,48 +634,28 @@ static void _mtpr_test_get_state() g_print(" => state: [%d]\n", state); } -static void _mtpr_test_set_connection_params() +static void _mtpr_test_set_connection_param(const char* name, const char* val) { int ret = MTPR_ERROR_NONE; - int param_len = 0; - param_len = bundle_get_count(g_connection_param); - g_print(" => num of connection param : %d\n", param_len); - if (param_len > 0) - ret = mtpr_set_connection_params(g_mtpr, g_connection_param); + ret = mtpr_set_connection_param(g_mtpr, name, val); if (ret != MTPR_ERROR_NONE) - g_print(" => failed to mtpr_set_connection_params() returned [0x%x]\n", ret); - bundle_free(g_connection_param); - g_connection_param = NULL; -} - -static void __bundle_iter_cb(const char *key, const int type, const bundle_keyval_t *kv, void *user_data) -{ - void *val = NULL; - size_t size = 0; - - bundle_keyval_get_basic_val((bundle_keyval_t *)kv, &val, &size); - - g_print(" => key : %s, size : %zu,\t val : %s\n", key, size, (char *)val); + g_print(" => failed to mtpr_set_connection_param(%s, %s) returned [0x%x]\n", name, val, ret); } -static void _mtpr_test_get_connection_params() +static void _mtpr_test_get_connection_param(const char *name) { int ret = MTPR_ERROR_NONE; - bundle *param = NULL; - int param_len = 0; - - ret = mtpr_get_connection_params(g_mtpr, ¶m); - if (ret != MTPR_ERROR_NONE) { - g_print(" => failed to mtpr_get_connection_params() returned [0x%x]\n", ret); - return; - } + char *value = NULL; - param_len = bundle_get_count(param); - g_print(" => num of connection param : %d\n", param_len); + ret = mtpr_get_connection_param(g_mtpr, name, &value); + if (ret != MTPR_ERROR_NONE) + g_print(" => failed to mtpr_get_connection_param(%s) returned [0x%x]\n", name, ret); + else + g_print(" => param: %s, %s\n", name, value); - bundle_foreach(param, __bundle_iter_cb, NULL); - bundle_free(param); + if (value) + free(value); } static void _mtpr_test_set_track_cb() @@ -861,7 +838,7 @@ void _interpret_main_menu(char *cmd) } else if (strncmp(cmd, "cr", 2) == 0) { g_menu_state = CURRENT_STATUS_CONNECTION_RIST_BONDING_ADDRESS; } else if (strncmp(cmd, "cg", 2) == 0) { - _mtpr_test_get_connection_params(); + g_menu_state = CURRENT_STATUS_CONNECTION_GET_PARAM; } else if (strncmp(cmd, "ds", 2) == 0) { g_menu_state = CURRENT_STATUS_SET_DISPLAY; } else if (strncmp(cmd, "dm", 2) == 0) { @@ -888,8 +865,6 @@ void _interpret_main_menu(char *cmd) g_menu_state = CURRENT_STATUS_SENDER_ADDRESS; } else if (strncmp(cmd, "cra", 3) == 0) { g_menu_state = CURRENT_STATUS_RECEIVER_ADDRESS; - } else if (strncmp(cmd, "crs", 3) == 0) { - g_menu_state = CURRENT_STATUS_CONNECTION_RTSP_SERVER_IP; } else if (strncmp(cmd, "cgs", 3) == 0) { _mtpr_test_get_sender_address(); } else if (strncmp(cmd, "cgr", 3) == 0) { @@ -923,8 +898,7 @@ void display_sub_basic() g_print("cgs. get sender address\t\t"); g_print("cgr. get receiver address\n"); g_print("cs. set SRT params\t"); - g_print("cr. set RIST params\t"); - g_print("crs. set RTSP sender params\n"); + g_print("cr. set RIST params\n"); g_print("cgt. get connection type\t"); g_print("cg. get connection params\n\n"); @@ -973,12 +947,8 @@ static void displaymenu() g_print("*** Input RIST min RTCP interval (0 ~ 100ms)(default:100)\n"); } else if (g_menu_state == CURRENT_STATUS_CONNECTION_RIST_SENDER_BUFFER) { g_print("*** Input RIST sender buffer size (default:1200)\n"); - } else if (g_menu_state == CURRENT_STATUS_CONNECTION_RTSP_SERVER_IP) { - g_print("*** Input RTSP server ip\n"); - } else if (g_menu_state == CURRENT_STATUS_CONNECTION_RTSP_SERVER_PORT) { - g_print("*** Input RTSP server port\n"); - } else if (g_menu_state == CURRENT_STATUS_CONNECTION_RTSP_SERVER_MOUNT_POINT) { - g_print("*** Input RTSP mount point\n"); + } else if (g_menu_state == CURRENT_STATUS_CONNECTION_GET_PARAM) { + g_print("*** Input connection param key\n"); } else if (g_menu_state == CURRENT_STATUS_ADD_MEDIA_SOURCE) { g_print("*** Input media source type.(1:camera, 2:mic, 3:videotest, 4:audiotest)\n"); } else if (g_menu_state == CURRENT_STATUS_SOURCE_VIDEO_WIDTH) { @@ -1032,7 +1002,6 @@ void reset_menu_state(void) static void interpret(char *cmd) { int value = 0; - double value_d = 0; switch (g_menu_state) { case CURRENT_STATUS_MAINMENU: @@ -1055,85 +1024,56 @@ static void interpret(char *cmd) break; } case CURRENT_STATUS_CONNECTION_SRT_MODE: { - if (g_connection_param != NULL) - bundle_free(g_connection_param); - g_connection_param = bundle_create(); - value = atoi(cmd); - if (value > 0) - bundle_add_str(g_connection_param, MTPR_CONNECTION_PARAM_SRT_MODE, g_strdup_printf("%u", (guint)value)); + if (strlen(cmd) > 0) + _mtpr_test_set_connection_param(MTPR_CONNECTION_PARAM_SRT_MODE, cmd); g_menu_state = CURRENT_STATUS_CONNECTION_SRT_STREAMID; break; } case CURRENT_STATUS_CONNECTION_SRT_STREAMID: { if (strlen(cmd) > 0) - bundle_add_str(g_connection_param, MTPR_CONNECTION_PARAM_SRT_STREAMID, strdup(cmd)); + _mtpr_test_set_connection_param(MTPR_CONNECTION_PARAM_SRT_STREAMID, cmd); g_menu_state = CURRENT_STATUS_CONNECTION_SRT_PASSPHRASE; break; } case CURRENT_STATUS_CONNECTION_SRT_PASSPHRASE: { if (strlen(cmd) > 0) - bundle_add_str(g_connection_param, MTPR_CONNECTION_PARAM_SRT_PASSPHRASE, strdup(cmd)); + _mtpr_test_set_connection_param(MTPR_CONNECTION_PARAM_SRT_PASSPHRASE, cmd); g_menu_state = CURRENT_STATUS_CONNECTION_SRT_PBKEYLEN; break; } case CURRENT_STATUS_CONNECTION_SRT_PBKEYLEN: { - value = atoi(cmd); - if (value > 0) - bundle_add_str(g_connection_param, MTPR_CONNECTION_PARAM_SRT_PBKEYLEN, g_strdup_printf("%u", (guint)value)); - _mtpr_test_set_connection_params(); + if (strlen(cmd) > 0) + _mtpr_test_set_connection_param(MTPR_CONNECTION_PARAM_SRT_PBKEYLEN, cmd); reset_menu_state(); break; } case CURRENT_STATUS_CONNECTION_RIST_BONDING_ADDRESS: { - if (g_connection_param != NULL) - bundle_free(g_connection_param); - g_connection_param = bundle_create(); if (strlen(cmd) > 0) - bundle_add_str(g_connection_param, MTPR_CONNECTION_PARAM_RIST_BONDING_ADDRESS, strdup(cmd)); + _mtpr_test_set_connection_param(MTPR_CONNECTION_PARAM_RIST_BONDING_ADDRESS, cmd); g_menu_state = CURRENT_STATUS_CONNECTION_RIST_MAX_RTCP_BANDWIDTH; break; } case CURRENT_STATUS_CONNECTION_RIST_MAX_RTCP_BANDWIDTH: { - value_d = atof(cmd); - if (value_d >= 0) - bundle_add_str(g_connection_param, MTPR_CONNECTION_PARAM_RIST_MAX_RTCP_BANDWIDTH, g_strdup_printf("%f", (gdouble)value_d)); + if (strlen(cmd) > 0) + _mtpr_test_set_connection_param(MTPR_CONNECTION_PARAM_RIST_MAX_RTCP_BANDWIDTH, cmd); g_menu_state = CURRENT_STATUS_CONNECTION_RIST_MIN_RTCP_INTERVAL; break; } case CURRENT_STATUS_CONNECTION_RIST_MIN_RTCP_INTERVAL: { - value = atoi(cmd); - if (value > 0) - bundle_add_str(g_connection_param, MTPR_CONNECTION_PARAM_RIST_MIN_RTCP_INTERVAL, g_strdup_printf("%u", (guint)value)); + if (strlen(cmd) > 0) + _mtpr_test_set_connection_param(MTPR_CONNECTION_PARAM_RIST_MIN_RTCP_INTERVAL, cmd); g_menu_state = CURRENT_STATUS_CONNECTION_RIST_SENDER_BUFFER; break; } case CURRENT_STATUS_CONNECTION_RIST_SENDER_BUFFER: { - value = atoi(cmd); - if (value > 0) - bundle_add_str(g_connection_param, MTPR_CONNECTION_PARAM_RIST_SENDER_BUFFER, g_strdup_printf("%u", (guint)value)); - _mtpr_test_set_connection_params(); - reset_menu_state(); - break; - } - case CURRENT_STATUS_CONNECTION_RTSP_SERVER_IP: { - if (g_connection_param != NULL) - bundle_free(g_connection_param); - g_connection_param = bundle_create(); if (strlen(cmd) > 0) - bundle_add_str(g_connection_param, MTPR_CONNECTION_PARAM_RTSP_SERVER_IP, strdup(cmd)); - g_menu_state = CURRENT_STATUS_CONNECTION_RTSP_SERVER_PORT; - break; - } - case CURRENT_STATUS_CONNECTION_RTSP_SERVER_PORT: { - if (strlen(cmd) > 0) - bundle_add_str(g_connection_param, MTPR_CONNECTION_PARAM_RTSP_SERVER_PORT, strdup(cmd)); - g_menu_state = CURRENT_STATUS_CONNECTION_RTSP_SERVER_MOUNT_POINT; + _mtpr_test_set_connection_param(MTPR_CONNECTION_PARAM_RIST_SENDER_BUFFER, cmd); + reset_menu_state(); break; } - case CURRENT_STATUS_CONNECTION_RTSP_SERVER_MOUNT_POINT: { + case CURRENT_STATUS_CONNECTION_GET_PARAM: { if (strlen(cmd) > 0) - bundle_add_str(g_connection_param, MTPR_CONNECTION_PARAM_RTSP_SERVER_MOUNT_POINT, strdup(cmd)); - _mtpr_test_set_connection_params(); + _mtpr_test_get_connection_param(cmd); reset_menu_state(); break; } diff --git a/unittest/ut_srt_sender.cpp b/unittest/ut_srt_sender.cpp index 7f01fad..24b0dcc 100644 --- a/unittest/ut_srt_sender.cpp +++ b/unittest/ut_srt_sender.cpp @@ -16,16 +16,15 @@ #include "ut_base.hpp" -class MediaTransporterSrtSenderTest : public MediaTransporterTestBase { +class MediaTransporterTestSrtSender : public MediaTransporterTestBase { public: - MediaTransporterSrtSenderTest() = default; - ~MediaTransporterSrtSenderTest() = default; + MediaTransporterTestSrtSender() = default; + ~MediaTransporterTestSrtSender() = default; void SetUp() override { LOGD("Enter"); - int ret = MTPR_ERROR_NONE; - ret = mtpr_create(MTPR_CONNECTION_TYPE_SRT_SENDER, &_mtpr); + int ret = mtpr_create(MTPR_CONNECTION_TYPE_SRT_SENDER, &_mtpr); ASSERT_EQ(ret, MTPR_ERROR_NONE); LOGD("Leave"); @@ -54,13 +53,13 @@ protected: const std::string _srtSenderPath = "srt://:8888"; }; -TEST_F(MediaTransporterSrtSenderTest, set_address_p) +TEST_F(MediaTransporterTestSrtSender, set_address_p) { int ret = mtpr_set_sender_address(_mtpr, _srtSenderPath.c_str()); ASSERT_EQ(ret, MTPR_ERROR_NONE); } -TEST_F(MediaTransporterSrtSenderTest, set_address_n1) +TEST_F(MediaTransporterTestSrtSender, set_address_n1) { int ret = MTPR_ERROR_NONE; @@ -74,13 +73,13 @@ TEST_F(MediaTransporterSrtSenderTest, set_address_n1) ASSERT_EQ(ret, MTPR_ERROR_INVALID_PARAMETER); } -TEST_F(MediaTransporterSrtSenderTest, set_address_n2) +TEST_F(MediaTransporterTestSrtSender, set_address_n2) { int ret = mtpr_set_receiver_address(_mtpr, _srtSenderPath.c_str()); ASSERT_EQ(ret, MTPR_ERROR_INVALID_OPERATION); } -TEST_F(MediaTransporterSrtSenderTest, get_address_p) +TEST_F(MediaTransporterTestSrtSender, get_address_p) { int ret = MTPR_ERROR_NONE; char *address = NULL; @@ -94,7 +93,7 @@ TEST_F(MediaTransporterSrtSenderTest, get_address_p) ASSERT_STREQ(_srtSenderPath.c_str(), address); } -TEST_F(MediaTransporterSrtSenderTest, get_address_n1) +TEST_F(MediaTransporterTestSrtSender, get_address_n1) { int ret = MTPR_ERROR_NONE; char *address = NULL; @@ -112,15 +111,15 @@ TEST_F(MediaTransporterSrtSenderTest, get_address_n1) ASSERT_EQ(ret, MTPR_ERROR_INVALID_PARAMETER); } -TEST_F(MediaTransporterSrtSenderTest, get_address_n2) +TEST_F(MediaTransporterTestSrtSender, get_address_n2) { char *address = NULL; int ret = mtpr_get_sender_address(_mtpr, &address); - ASSERT_EQ(ret, MTPR_ERROR_INVALID_OPERATION); + ASSERT_EQ(ret, MTPR_ERROR_NO_DATA); } -TEST_F(MediaTransporterSrtSenderTest, get_address_n3) +TEST_F(MediaTransporterTestSrtSender, get_address_n3) { int ret = MTPR_ERROR_NONE; char *address = NULL; @@ -132,7 +131,7 @@ TEST_F(MediaTransporterSrtSenderTest, get_address_n3) ASSERT_EQ(ret, MTPR_ERROR_INVALID_OPERATION); } -TEST_F(MediaTransporterSrtSenderTest, get_connection_type_p) +TEST_F(MediaTransporterTestSrtSender, get_connection_type_p) { mtpr_connection_type_e type; @@ -141,7 +140,7 @@ TEST_F(MediaTransporterSrtSenderTest, get_connection_type_p) ASSERT_EQ(type, MTPR_CONNECTION_TYPE_SRT_SENDER); } -TEST_F(MediaTransporterSrtSenderTest, get_connection_type_n1) +TEST_F(MediaTransporterTestSrtSender, get_connection_type_n1) { int ret = MTPR_ERROR_NONE; mtpr_connection_type_e type; @@ -156,7 +155,7 @@ TEST_F(MediaTransporterSrtSenderTest, get_connection_type_n1) ASSERT_EQ(ret, MTPR_ERROR_INVALID_PARAMETER); } -TEST_F(MediaTransporterSrtSenderTest, add_media_source_p) +TEST_F(MediaTransporterTestSrtSender, add_media_source_p) { int ret = MTPR_ERROR_NONE; unsigned int source_id = 0; @@ -170,7 +169,7 @@ TEST_F(MediaTransporterSrtSenderTest, add_media_source_p) ASSERT_GE(source_id, 0); } -TEST_F(MediaTransporterSrtSenderTest, add_media_source_n1) +TEST_F(MediaTransporterTestSrtSender, add_media_source_n1) { int ret = MTPR_ERROR_NONE; unsigned int source_id = 0; @@ -182,7 +181,7 @@ TEST_F(MediaTransporterSrtSenderTest, add_media_source_n1) ASSERT_EQ(ret, MTPR_ERROR_INVALID_PARAMETER); } -TEST_F(MediaTransporterSrtSenderTest, start_p) +TEST_F(MediaTransporterTestSrtSender, start_p) { int ret = MTPR_ERROR_NONE; unsigned int source_id = 0; @@ -199,7 +198,7 @@ TEST_F(MediaTransporterSrtSenderTest, start_p) ASSERT_EQ(ret, MTPR_ERROR_NONE); } -TEST_F(MediaTransporterSrtSenderTest, start_n1) +TEST_F(MediaTransporterTestSrtSender, start_n1) { int ret = MTPR_ERROR_NONE; unsigned int source_id = 0; @@ -215,7 +214,7 @@ TEST_F(MediaTransporterSrtSenderTest, start_n1) ASSERT_EQ(ret, MTPR_ERROR_INVALID_PARAMETER); } -TEST_F(MediaTransporterSrtSenderTest, start_n2) +TEST_F(MediaTransporterTestSrtSender, start_n2) { int ret = MTPR_ERROR_NONE; unsigned int source_id = 0; @@ -228,7 +227,7 @@ TEST_F(MediaTransporterSrtSenderTest, start_n2) ASSERT_EQ(ret, MTPR_ERROR_INVALID_OPERATION); } -TEST_F(MediaTransporterSrtSenderTest, start_n3) +TEST_F(MediaTransporterTestSrtSender, start_n3) { int ret = MTPR_ERROR_NONE; @@ -239,7 +238,7 @@ TEST_F(MediaTransporterSrtSenderTest, start_n3) ASSERT_EQ(ret, MTPR_ERROR_INVALID_OPERATION); } -TEST_F(MediaTransporterSrtSenderTest, stop_p) +TEST_F(MediaTransporterTestSrtSender, stop_p) { int ret = MTPR_ERROR_NONE; unsigned int source_id = 0; @@ -258,7 +257,7 @@ TEST_F(MediaTransporterSrtSenderTest, stop_p) ASSERT_EQ(ret, MTPR_ERROR_NONE); } -TEST_F(MediaTransporterSrtSenderTest, stop_n1) +TEST_F(MediaTransporterTestSrtSender, stop_n1) { int ret = MTPR_ERROR_NONE; unsigned int source_id = 0; @@ -277,13 +276,13 @@ TEST_F(MediaTransporterSrtSenderTest, stop_n1) ASSERT_EQ(ret, MTPR_ERROR_INVALID_PARAMETER); } -TEST_F(MediaTransporterSrtSenderTest, stop_n2) +TEST_F(MediaTransporterTestSrtSender, stop_n2) { int ret = mtpr_stop(_mtpr); ASSERT_EQ(ret, MTPR_ERROR_INVALID_STATE); } -TEST_F(MediaTransporterSrtSenderTest, get_state_p1) +TEST_F(MediaTransporterTestSrtSender, get_state_p1) { mtpr_state_e state = MTPR_STATE_IDLE; @@ -292,7 +291,7 @@ TEST_F(MediaTransporterSrtSenderTest, get_state_p1) ASSERT_EQ(state, MTPR_STATE_IDLE); } -TEST_F(MediaTransporterSrtSenderTest, get_state_p2) +TEST_F(MediaTransporterTestSrtSender, get_state_p2) { int ret = MTPR_ERROR_NONE; unsigned int source_id = 0; @@ -313,7 +312,7 @@ TEST_F(MediaTransporterSrtSenderTest, get_state_p2) ASSERT_EQ(state, MTPR_STATE_PLAYING); } -TEST_F(MediaTransporterSrtSenderTest, get_state_p3) +TEST_F(MediaTransporterTestSrtSender, get_state_p3) { int ret = MTPR_ERROR_NONE; unsigned int source_id = 0; @@ -337,7 +336,7 @@ TEST_F(MediaTransporterSrtSenderTest, get_state_p3) ASSERT_EQ(state, MTPR_STATE_IDLE); } -TEST_F(MediaTransporterSrtSenderTest, get_state_n) +TEST_F(MediaTransporterTestSrtSender, get_state_n) { int ret = MTPR_ERROR_NONE; mtpr_state_e state = MTPR_STATE_IDLE; @@ -352,67 +351,67 @@ TEST_F(MediaTransporterSrtSenderTest, get_state_n) ASSERT_EQ(ret, MTPR_ERROR_INVALID_PARAMETER); } -TEST_F(MediaTransporterSrtSenderTest, set_connection_param_mode_p) +TEST_F(MediaTransporterTestSrtSender, set_connection_param_mode_p) { int ret = mtpr_set_connection_param(_mtpr, MTPR_CONNECTION_PARAM_SRT_MODE, "2"); ASSERT_EQ(ret, MTPR_ERROR_NONE); } -TEST_F(MediaTransporterSrtSenderTest, set_connection_param_mode_n1) +TEST_F(MediaTransporterTestSrtSender, set_connection_param_mode_n1) { int ret = mtpr_set_connection_param(_mtpr, MTPR_CONNECTION_PARAM_SRT_MODE, "4"); ASSERT_EQ(ret, MTPR_ERROR_INVALID_PARAMETER); } -TEST_F(MediaTransporterSrtSenderTest, set_connection_param_mode_n2) +TEST_F(MediaTransporterTestSrtSender, set_connection_param_mode_n2) { int ret = mtpr_set_connection_param(_mtpr, MTPR_CONNECTION_PARAM_SRT_MODE, "test"); ASSERT_EQ(ret, MTPR_ERROR_INVALID_PARAMETER); } -TEST_F(MediaTransporterSrtSenderTest, set_connection_param_streamid_p) +TEST_F(MediaTransporterTestSrtSender, set_connection_param_streamid_p) { int ret = mtpr_set_connection_param(_mtpr, MTPR_CONNECTION_PARAM_SRT_STREAMID, "testid"); ASSERT_EQ(ret, MTPR_ERROR_NONE); } -TEST_F(MediaTransporterSrtSenderTest, set_connection_param_passphrase_p) +TEST_F(MediaTransporterTestSrtSender, set_connection_param_passphrase_p) { int ret = mtpr_set_connection_param(_mtpr, MTPR_CONNECTION_PARAM_SRT_PASSPHRASE, "testpassphrase"); ASSERT_EQ(ret, MTPR_ERROR_NONE); } -TEST_F(MediaTransporterSrtSenderTest, set_connection_param_passphrase_n) +TEST_F(MediaTransporterTestSrtSender, set_connection_param_passphrase_n) { int ret = mtpr_set_connection_param(_mtpr, MTPR_CONNECTION_PARAM_SRT_PASSPHRASE, "testpwd"); ASSERT_EQ(ret, MTPR_ERROR_INVALID_PARAMETER); } -TEST_F(MediaTransporterSrtSenderTest, set_connection_param_pbkeylen_p) +TEST_F(MediaTransporterTestSrtSender, set_connection_param_pbkeylen_p) { int ret = mtpr_set_connection_param(_mtpr, MTPR_CONNECTION_PARAM_SRT_PBKEYLEN, "16"); ASSERT_EQ(ret, MTPR_ERROR_NONE); } -TEST_F(MediaTransporterSrtSenderTest, set_connection_param_pbkeylen_n1) +TEST_F(MediaTransporterTestSrtSender, set_connection_param_pbkeylen_n1) { int ret = mtpr_set_connection_param(_mtpr, MTPR_CONNECTION_PARAM_SRT_PBKEYLEN, "20"); ASSERT_EQ(ret, MTPR_ERROR_INVALID_PARAMETER); } -TEST_F(MediaTransporterSrtSenderTest, set_connection_param_pbkeylen_n2) +TEST_F(MediaTransporterTestSrtSender, set_connection_param_pbkeylen_n2) { int ret = mtpr_set_connection_param(_mtpr, MTPR_CONNECTION_PARAM_SRT_PBKEYLEN, "16test"); ASSERT_EQ(ret, MTPR_ERROR_INVALID_PARAMETER); } -TEST_F(MediaTransporterSrtSenderTest, set_connection_param_pbkeylen_n3) +TEST_F(MediaTransporterTestSrtSender, set_connection_param_pbkeylen_n3) { int ret = mtpr_set_connection_param(_mtpr, MTPR_CONNECTION_PARAM_SRT_PBKEYLEN, "test"); ASSERT_EQ(ret, MTPR_ERROR_INVALID_PARAMETER); } -TEST_F(MediaTransporterSrtSenderTest, set_connection_param_n) +TEST_F(MediaTransporterTestSrtSender, set_connection_param_n) { int ret = MTPR_ERROR_NONE; @@ -426,138 +425,83 @@ TEST_F(MediaTransporterSrtSenderTest, set_connection_param_n) ASSERT_EQ(ret, MTPR_ERROR_INVALID_PARAMETER); } -TEST_F(MediaTransporterSrtSenderTest, set_connection_params_p1) +TEST_F(MediaTransporterTestSrtSender, get_connection_param_p) { int ret = MTPR_ERROR_NONE; - bundle* params = bundle_create(); - - bundle_add_str(params, MTPR_CONNECTION_PARAM_SRT_MODE, "2"); - bundle_add_str(params, MTPR_CONNECTION_PARAM_SRT_STREAMID, "testid"); - bundle_add_str(params, MTPR_CONNECTION_PARAM_SRT_PASSPHRASE, "testpassphrase"); - bundle_add_str(params, MTPR_CONNECTION_PARAM_SRT_PBKEYLEN, "24"); + gchar* value = NULL; - ret = mtpr_set_connection_params(_mtpr, params); + ret = mtpr_set_connection_param(_mtpr, MTPR_CONNECTION_PARAM_SRT_MODE, "2"); ASSERT_EQ(ret, MTPR_ERROR_NONE); - bundle_free(params); -} + ret = mtpr_get_connection_param(_mtpr, MTPR_CONNECTION_PARAM_SRT_MODE, &value); + ASSERT_EQ(ret, MTPR_ERROR_NONE); + ASSERT_STREQ(value, "2"); + g_free(value); -TEST_F(MediaTransporterSrtSenderTest, set_connection_params_p2) -{ - int ret = MTPR_ERROR_NONE; - bundle* params = bundle_create(); + ret = mtpr_set_connection_param(_mtpr, MTPR_CONNECTION_PARAM_SRT_STREAMID, "testid"); + ASSERT_EQ(ret, MTPR_ERROR_NONE); - bundle_add_str(params, MTPR_CONNECTION_PARAM_SRT_MODE, "2"); - ret = mtpr_set_connection_params(_mtpr, params); + ret = mtpr_get_connection_param(_mtpr, MTPR_CONNECTION_PARAM_SRT_STREAMID, &value); ASSERT_EQ(ret, MTPR_ERROR_NONE); + ASSERT_STREQ(value, "testid"); + g_free(value); - bundle_add_str(params, MTPR_CONNECTION_PARAM_SRT_STREAMID, "testid"); - ret = mtpr_set_connection_params(_mtpr, params); + ret = mtpr_set_connection_param(_mtpr, MTPR_CONNECTION_PARAM_SRT_PASSPHRASE, "testpassphrase"); ASSERT_EQ(ret, MTPR_ERROR_NONE); - bundle_add_str(params, MTPR_CONNECTION_PARAM_SRT_PASSPHRASE, "testpassphrase"); - ret = mtpr_set_connection_params(_mtpr, params); + ret = mtpr_get_connection_param(_mtpr, MTPR_CONNECTION_PARAM_SRT_PASSPHRASE, &value); ASSERT_EQ(ret, MTPR_ERROR_NONE); + ASSERT_STREQ(value, "testpassphrase"); + g_free(value); - bundle_add_str(params, MTPR_CONNECTION_PARAM_SRT_PBKEYLEN, "24"); - ret = mtpr_set_connection_params(_mtpr, params); + ret = mtpr_set_connection_param(_mtpr, MTPR_CONNECTION_PARAM_SRT_PBKEYLEN, "24"); ASSERT_EQ(ret, MTPR_ERROR_NONE); - bundle_free(params); + ret = mtpr_get_connection_param(_mtpr, MTPR_CONNECTION_PARAM_SRT_PBKEYLEN, &value); + ASSERT_EQ(ret, MTPR_ERROR_NONE); + ASSERT_STREQ(value, "24"); + g_free(value); } -TEST_F(MediaTransporterSrtSenderTest, set_connection_params_n1) +TEST_F(MediaTransporterTestSrtSender, get_connection_param_p2) { int ret = MTPR_ERROR_NONE; - bundle* params = bundle_create(); - - bundle_add_str(params, MTPR_CONNECTION_PARAM_SRT_MODE, "7"); + gchar* value = NULL; - ret = mtpr_set_connection_params(_mtpr, params); - ASSERT_EQ(ret, MTPR_ERROR_INVALID_PARAMETER); + ret = mtpr_get_connection_param(_mtpr, MTPR_CONNECTION_PARAM_SRT_MODE, &value); + ASSERT_EQ(ret, MTPR_ERROR_NONE); + ASSERT_TRUE(value); + g_free(value); - bundle_free(params); + ret = mtpr_get_connection_param(_mtpr, MTPR_CONNECTION_PARAM_SRT_PBKEYLEN, &value); + ASSERT_EQ(ret, MTPR_ERROR_NONE); + ASSERT_TRUE(value); + g_free(value); } -TEST_F(MediaTransporterSrtSenderTest, set_connection_params_n2) +TEST_F(MediaTransporterTestSrtSender, get_connection_param_n1) { int ret = MTPR_ERROR_NONE; - bundle* params = bundle_create(); + gchar* value = NULL; - bundle_add_str(params, MTPR_CONNECTION_PARAM_SRT_PASSPHRASE, "testwd"); - - ret = mtpr_set_connection_params(_mtpr, params); + ret = mtpr_get_connection_param(NULL, MTPR_CONNECTION_PARAM_SRT_MODE, &value); ASSERT_EQ(ret, MTPR_ERROR_INVALID_PARAMETER); - bundle_free(params); -} - -TEST_F(MediaTransporterSrtSenderTest, set_connection_params_n3) -{ - int ret = MTPR_ERROR_NONE; - bundle* params = bundle_create(); - - bundle_add_str(params, MTPR_CONNECTION_PARAM_SRT_PBKEYLEN, "30"); - - ret = mtpr_set_connection_params(_mtpr, params); + ret = mtpr_get_connection_param(_mtpr, NULL, &value); ASSERT_EQ(ret, MTPR_ERROR_INVALID_PARAMETER); - bundle_free(params); -} - -TEST_F(MediaTransporterSrtSenderTest, get_connection_params_p) -{ - int ret = MTPR_ERROR_NONE; - bundle* in = bundle_create(); - bundle* out = bundle_create(); - char* out_val = NULL; - - bundle_add_str(in, MTPR_CONNECTION_PARAM_SRT_MODE, "2"); - bundle_add_str(in, MTPR_CONNECTION_PARAM_SRT_STREAMID, "testid"); - bundle_add_str(in, MTPR_CONNECTION_PARAM_SRT_PASSPHRASE, "testpassphrase"); - bundle_add_str(in, MTPR_CONNECTION_PARAM_SRT_PBKEYLEN, "24"); - int len = bundle_get_count(in); - ret = mtpr_set_connection_params(_mtpr, in); - ASSERT_EQ(ret, MTPR_ERROR_NONE); - - ret = mtpr_get_connection_params(_mtpr, &out); - ASSERT_EQ(ret, MTPR_ERROR_NONE); - ASSERT_EQ(len, bundle_get_count(out)); - - int bundle_ret = BUNDLE_ERROR_NONE; - bundle_ret = bundle_get_str(out, MTPR_CONNECTION_PARAM_SRT_MODE, &out_val); - ASSERT_EQ(bundle_ret, BUNDLE_ERROR_NONE); - ASSERT_STREQ(out_val, "2"); - - bundle_ret = bundle_get_str(out, MTPR_CONNECTION_PARAM_SRT_STREAMID, &out_val); - ASSERT_EQ(bundle_ret, BUNDLE_ERROR_NONE); - ASSERT_STREQ(out_val, "testid"); - - bundle_ret = bundle_get_str(out, MTPR_CONNECTION_PARAM_SRT_PASSPHRASE, &out_val); - ASSERT_EQ(bundle_ret, BUNDLE_ERROR_NONE); - ASSERT_STREQ(out_val, "testpassphrase"); - - bundle_ret = bundle_get_str(out, MTPR_CONNECTION_PARAM_SRT_PBKEYLEN, &out_val); - ASSERT_EQ(bundle_ret, BUNDLE_ERROR_NONE); - ASSERT_STREQ(out_val, "24"); - - bundle_free(in); - bundle_free(out); + ret = mtpr_get_connection_param(_mtpr, MTPR_CONNECTION_PARAM_SRT_MODE, NULL); + ASSERT_EQ(ret, MTPR_ERROR_INVALID_PARAMETER); } -TEST_F(MediaTransporterSrtSenderTest, get_connection_params_n) +TEST_F(MediaTransporterTestSrtSender, get_connection_param_n2) { int ret = MTPR_ERROR_NONE; - bundle* out = bundle_create(); + gchar* value = NULL; - ret = mtpr_get_connection_params(NULL, &out); - ASSERT_EQ(ret, MTPR_ERROR_INVALID_PARAMETER); - - ret = mtpr_get_connection_params(_mtpr, NULL); - ASSERT_EQ(ret, MTPR_ERROR_INVALID_PARAMETER); - - ret = mtpr_get_connection_params(NULL, NULL); - ASSERT_EQ(ret, MTPR_ERROR_INVALID_PARAMETER); + ret = mtpr_get_connection_param(_mtpr, MTPR_CONNECTION_PARAM_SRT_STREAMID, &value); + ASSERT_EQ(ret, MTPR_ERROR_NO_DATA); - bundle_free(out); + ret = mtpr_get_connection_param(_mtpr, MTPR_CONNECTION_PARAM_SRT_PASSPHRASE, &value); + ASSERT_EQ(ret, MTPR_ERROR_NO_DATA); } -- 2.7.4