diff --git a/packages/video_player_videohole/tizen/src/video_player.cc b/packages/video_player_videohole/tizen/src/video_player.cc index 0e0e33024..4bbc25dd9 100644 --- a/packages/video_player_videohole/tizen/src/video_player.cc +++ b/packages/video_player_videohole/tizen/src/video_player.cc @@ -15,6 +15,19 @@ static int64_t player_index = 1; +template +static bool GetValueFromEncodableMap(const flutter::EncodableMap *map, + const char *key, T &out) { + auto iter = map->find(flutter::EncodableValue(key)); + if (iter != map->end()) { + if (std::holds_alternative(iter->second)) { + out = std::get(iter->second); + return true; + } + } + return false; +} + VideoPlayer::VideoPlayer(flutter::PluginRegistrar *plugin_registrar, void *native_window) : plugin_registrar_(plugin_registrar), native_window_(native_window) { @@ -122,7 +135,7 @@ bool VideoPlayer::SetDisplay() { int64_t VideoPlayer::Create(const std::string &uri, int drm_type, const std::string &license_server_url, - flutter::EncodableMap &http_headers) { + const flutter::EncodableMap *http_headers) { LOG_INFO("[VideoPlayer] uri: %s, drm_type: %d", uri.c_str(), drm_type); player_id_ = player_index++; @@ -152,30 +165,23 @@ int64_t VideoPlayer::Create(const std::string &uri, int drm_type, } } - if (!http_headers.empty()) { - auto iter = http_headers.find(flutter::EncodableValue("Cookie")); - if (iter != http_headers.end()) { - if (std::holds_alternative(iter->second)) { - std::string cookie = std::get(iter->second); - ret = - player_set_streaming_cookie(player_, cookie.c_str(), cookie.size()); - if (ret != PLAYER_ERROR_NONE) { - LOG_ERROR("[MediaPlayer] player_set_streaming_cookie failed: %s.", - get_error_message(ret)); - } + if (http_headers && !http_headers->empty()) { + std::string cookie; + if (GetValueFromEncodableMap(http_headers, "Cookie", cookie)) { + ret = player_set_streaming_cookie(player_, cookie.c_str(), cookie.size()); + if (ret != PLAYER_ERROR_NONE) { + LOG_ERROR("[MediaPlayer] player_set_streaming_cookie failed: %s.", + get_error_message(ret)); } } - iter = http_headers.find(flutter::EncodableValue("User-Agent")); - if (iter != http_headers.end()) { - if (std::holds_alternative(iter->second)) { - std::string user_agent = std::get(iter->second); - ret = player_set_streaming_user_agent(player_, user_agent.c_str(), - user_agent.size()); - if (ret != PLAYER_ERROR_NONE) { - LOG_ERROR("[MediaPlayer] player_set_streaming_user_agent failed: %s.", - get_error_message(ret)); - } + std::string user_agent; + if (GetValueFromEncodableMap(http_headers, "User-Agent", user_agent)) { + ret = player_set_streaming_user_agent(player_, user_agent.c_str(), + user_agent.size()); + if (ret != PLAYER_ERROR_NONE) { + LOG_ERROR("[MediaPlayer] player_set_streaming_user_agent failed: %s.", + get_error_message(ret)); } } } diff --git a/packages/video_player_videohole/tizen/src/video_player.h b/packages/video_player_videohole/tizen/src/video_player.h index 077024b80..0eb02900e 100644 --- a/packages/video_player_videohole/tizen/src/video_player.h +++ b/packages/video_player_videohole/tizen/src/video_player.h @@ -76,7 +76,7 @@ class VideoPlayer { int64_t Create(const std::string &uri, int drm_type, const std::string &license_server_url, - flutter::EncodableMap &http_headers); + const flutter::EncodableMap *http_headers); void Dispose(); void SetDisplayRoi(int32_t x, int32_t y, int32_t width, int32_t height); diff --git a/packages/video_player_videohole/tizen/src/video_player_tizen_plugin.cc b/packages/video_player_videohole/tizen/src/video_player_tizen_plugin.cc index 5a0ffd663..e32bad05e 100644 --- a/packages/video_player_videohole/tizen/src/video_player_tizen_plugin.cc +++ b/packages/video_player_videohole/tizen/src/video_player_tizen_plugin.cc @@ -118,7 +118,7 @@ ErrorOr VideoPlayerTizenPlugin::Create( std::string uri; int32_t drm_type = 0; // DRM_TYPE_NONE std::string license_server_url; - flutter::EncodableMap http_headers = {}; + const flutter::EncodableMap *http_headers = nullptr; if (msg.asset() && !msg.asset()->empty()) { char *res_path = app_get_resource_path(); @@ -147,10 +147,7 @@ ErrorOr VideoPlayerTizenPlugin::Create( } } - const flutter::EncodableMap *http_headers_map = msg.http_headers(); - if (http_headers_map) { - http_headers = *http_headers_map; - } + http_headers = msg.http_headers(); } else { return FlutterError("Invalid argument", "Either asset or uri must be set."); }