diff --git a/av_transport/av_trans_engine/av_receiver/include/av_receiver_engine.h b/av_transport/av_trans_engine/av_receiver/include/av_receiver_engine.h index 6b6d6be32c1ba4c801f7ef6db1876603bb7cb684..6975b14797cd3abd0f37c4ab020fb2a50958988d 100644 --- a/av_transport/av_trans_engine/av_receiver/include/av_receiver_engine.h +++ b/av_transport/av_trans_engine/av_receiver/include/av_receiver_engine.h @@ -98,6 +98,7 @@ private: void SetStopAvSync(const std::string &value); void SetSharedMemoryFd(const std::string &value); void SetEngineReady(const std::string &value); + void SetAudioSessionNameMid(const std::string &value); StateId GetCurrentState() { diff --git a/av_transport/av_trans_engine/av_receiver/src/av_receiver_engine.cpp b/av_transport/av_trans_engine/av_receiver/src/av_receiver_engine.cpp index 71daee5fd44a7781aac81dad3fcefa53a5d98b7d..b1a3a5c54851038d9df65442c10d2d8f433f12b1 100644 --- a/av_transport/av_trans_engine/av_receiver/src/av_receiver_engine.cpp +++ b/av_transport/av_trans_engine/av_receiver/src/av_receiver_engine.cpp @@ -254,6 +254,7 @@ void AVReceiverEngine::RegRespFunMap() funcMap_[AVTransTag::STOP_AV_SYNC] = &AVReceiverEngine::SetStopAvSync; funcMap_[AVTransTag::SHARED_MEMORY_FD] = &AVReceiverEngine::SetSharedMemoryFd; funcMap_[AVTransTag::ENGINE_READY] = &AVReceiverEngine::SetEngineReady; + funcMap_[AVTransTag::AUDIO_SESSION_NAME_MID] = &AVReceiverEngine::SetAudioSessionNameMid; } void AVReceiverEngine::SetVideoWidth(const std::string &value) @@ -378,6 +379,12 @@ void AVReceiverEngine::SetEngineReady(const std::string &value) TRUE_LOG_MSG(ret != DH_AVT_SUCCESS, "SetParameter ENGINE_READY failed"); } +void AVReceiverEngine::SetAudioSessionNameMid(const std::string &value) +{ + avInput_->SetParameter(static_cast(Plugin::Tag::MEDIA_TITLE), value); + AVTRANS_LOGI("SetParameter audio session name mid success,audio session mid name = %s", value.c_str()); +} + int32_t AVReceiverEngine::SendMessage(const std::shared_ptr &message) { TRUE_RETURN_V_MSG_E(message == nullptr, ERR_DH_AVT_INVALID_PARAM, "input message is nullptr."); diff --git a/av_transport/av_trans_engine/av_sender/include/av_sender_engine.h b/av_transport/av_trans_engine/av_sender/include/av_sender_engine.h index be806b877286d574bc953ec33d72600afce6eec1..25c33823b3f703a980984d89c2224f2a57081ae8 100644 --- a/av_transport/av_trans_engine/av_sender/include/av_sender_engine.h +++ b/av_transport/av_trans_engine/av_sender/include/av_sender_engine.h @@ -98,6 +98,7 @@ private: void SetEngineReady(const std::string &value); void SetEnginePause(const std::string &value); void SetEngineResume(const std::string &value); + void SetAudioSessionNameMid(const std::string &value); StateId GetCurrentState() { diff --git a/av_transport/av_trans_engine/av_sender/src/av_sender_engine.cpp b/av_transport/av_trans_engine/av_sender/src/av_sender_engine.cpp index d8d57abb38c941c8b5d7d01a4fd52be74888119f..553555d57ffb10e1c09ce84ff2e91ffbbe824f77 100644 --- a/av_transport/av_trans_engine/av_sender/src/av_sender_engine.cpp +++ b/av_transport/av_trans_engine/av_sender/src/av_sender_engine.cpp @@ -234,6 +234,7 @@ void AVSenderEngine::RegRespFunMap() funcMap_[AVTransTag::ENGINE_READY] = &AVSenderEngine::SetEngineReady; funcMap_[AVTransTag::ENGINE_PAUSE] = &AVSenderEngine::SetEnginePause; funcMap_[AVTransTag::ENGINE_RESUME] = &AVSenderEngine::SetEngineResume; + funcMap_[AVTransTag::AUDIO_SESSION_NAME_MID] = &AVSenderEngine::SetAudioSessionNameMid; } void AVSenderEngine::SetVideoWidth(const std::string &value) @@ -383,6 +384,12 @@ void AVSenderEngine::SetEngineResume(const std::string &value) TRUE_LOG_MSG(ret != ErrorCode::SUCCESS, "pipeline resume failed"); } +void AVSenderEngine::SetAudioSessionNameMid(const std::string &value) +{ + avOutput_->SetParameter(static_cast(Plugin::Tag::MEDIA_TITLE), value); + AVTRANS_LOGI("SetParameter audio session name mid success,audio session mid name = %s", value.c_str()); +} + int32_t AVSenderEngine::PushData(const std::shared_ptr &buffer) { StateId currentState = GetCurrentState(); diff --git a/av_transport/av_trans_engine/filters/av_transport_input/av_transport_input_filter.cpp b/av_transport/av_trans_engine/filters/av_transport_input/av_transport_input_filter.cpp index e0876194b69be53a4ea7b8165e2a319fc8a659f5..df8c6d925ee4da58eac7400a02ed0446d24f3fae 100644 --- a/av_transport/av_trans_engine/filters/av_transport_input/av_transport_input_filter.cpp +++ b/av_transport/av_trans_engine/filters/av_transport_input/av_transport_input_filter.cpp @@ -513,6 +513,9 @@ ErrorCode AVInputFilter::SetPluginParams() if (paramsMap_.find(Tag::MEDIA_DESCRIPTION) != paramsMap_.end()) { plugin_->SetParameter(Tag::MEDIA_DESCRIPTION, paramsMap_[Tag::MEDIA_DESCRIPTION]); } + if (paramsMap_.find(Tag::MEDIA_TITLE) != paramsMap_.end()) { + plugin_->SetParameter(Tag::MEDIA_TITLE, paramsMap_[Tag::MEDIA_TITLE]); + } return ErrorCode::SUCCESS; } diff --git a/av_transport/av_trans_engine/filters/av_transport_output/av_transport_output_filter.cpp b/av_transport/av_trans_engine/filters/av_transport_output/av_transport_output_filter.cpp index 4c46b4912b50939d5e976a3e4e6594d664eab29b..b236c8f100917d7a87e7207d71b0033c9fe683f0 100644 --- a/av_transport/av_trans_engine/filters/av_transport_output/av_transport_output_filter.cpp +++ b/av_transport/av_trans_engine/filters/av_transport_output/av_transport_output_filter.cpp @@ -309,6 +309,9 @@ ErrorCode AVOutputFilter::SetPluginParams() if (paramsMap_.find(Tag::MEDIA_DESCRIPTION) != paramsMap_.end()) { plugin_->SetParameter(Tag::MEDIA_DESCRIPTION, paramsMap_[Tag::MEDIA_DESCRIPTION]); } + if (paramsMap_.find(Tag::MEDIA_TITLE) != paramsMap_.end()) { + plugin_->SetParameter(Tag::MEDIA_TITLE, paramsMap_[Tag::MEDIA_TITLE]); + } if (paramsMap_.find(Tag::AUDIO_CHANNELS) != paramsMap_.end()) { plugin_->SetParameter(Tag::AUDIO_CHANNELS, paramsMap_[Tag::AUDIO_CHANNELS]); } diff --git a/av_transport/av_trans_engine/plugin/plugins/av_trans_input/dsoftbus_input_audio/dsoftbus_input_audio_plugin.cpp b/av_transport/av_trans_engine/plugin/plugins/av_trans_input/dsoftbus_input_audio/dsoftbus_input_audio_plugin.cpp index b117ba4e0a66bacfdb545467235c9f3318e8b58b..539dd422479872bb2df54979f2bc04b1c2bd997b 100644 --- a/av_transport/av_trans_engine/plugin/plugins/av_trans_input/dsoftbus_input_audio/dsoftbus_input_audio_plugin.cpp +++ b/av_transport/av_trans_engine/plugin/plugins/av_trans_input/dsoftbus_input_audio/dsoftbus_input_audio_plugin.cpp @@ -65,6 +65,7 @@ Status DsoftbusInputAudioPlugin::Init() AVTRANS_LOGI("Init"); Media::OSAL::ScopedLock lock(operationMutes_); state_ = State::INITIALIZED; + sessionNameMid_ = ""; return Status::OK; } @@ -83,7 +84,7 @@ Status DsoftbusInputAudioPlugin::Prepare() return Status::ERROR_WRONG_STATE; } - sessionName_ = ownerName_ + "_" + RECEIVER_DATA_SESSION_NAME_SUFFIX; + sessionName_ = ownerName_ + "_" + sessionNameMid_ + RECEIVER_DATA_SESSION_NAME_SUFFIX; int32_t ret = SoftbusChannelAdapter::GetInstance().CreateChannelServer(TransName2PkgName(ownerName_), sessionName_); if (ret != DH_AVT_SUCCESS) { AVTRANS_LOGE("Create Session Server failed ret: %d.", ret); @@ -177,6 +178,9 @@ Status DsoftbusInputAudioPlugin::SetParameter(Tag tag, const ValueType &value) if (tag == Tag::MEDIA_DESCRIPTION) { ParseChannelDescription(Plugin::AnyCast(value), ownerName_, peerDevId_); } + if (tag == Tag::MEDIA_TITLE) { + sessionNameMid_ = Plugin::AnyCast(value); + } paramsMap_.insert(std::pair(tag, value)); return Status::OK; } diff --git a/av_transport/av_trans_engine/plugin/plugins/av_trans_input/dsoftbus_input_audio/dsoftbus_input_audio_plugin.h b/av_transport/av_trans_engine/plugin/plugins/av_trans_input/dsoftbus_input_audio/dsoftbus_input_audio_plugin.h index 0828187e64d4de5c05b1a5ed6f7166cfea3e99f9..ae8294cd56ec2e6789df655ada32040433df40f2 100644 --- a/av_transport/av_trans_engine/plugin/plugins/av_trans_input/dsoftbus_input_audio/dsoftbus_input_audio_plugin.h +++ b/av_transport/av_trans_engine/plugin/plugins/av_trans_input/dsoftbus_input_audio/dsoftbus_input_audio_plugin.h @@ -79,6 +79,7 @@ private: private: std::string ownerName_; std::string sessionName_; + std::string sessionNameMid_; std::string peerDevId_; std::condition_variable dataCond_; std::shared_ptr bufferPopTask_; diff --git a/av_transport/av_trans_engine/plugin/plugins/av_trans_output/dsoftbus_output_audio/dsoftbus_output_audio_plugin.cpp b/av_transport/av_trans_engine/plugin/plugins/av_trans_output/dsoftbus_output_audio/dsoftbus_output_audio_plugin.cpp index 777232a1d7eb4e8f65f175d5b00abee621d07a82..fd97c1dde61b699703a39dbf72c873062f3272f9 100644 --- a/av_transport/av_trans_engine/plugin/plugins/av_trans_output/dsoftbus_output_audio/dsoftbus_output_audio_plugin.cpp +++ b/av_transport/av_trans_engine/plugin/plugins/av_trans_output/dsoftbus_output_audio/dsoftbus_output_audio_plugin.cpp @@ -65,6 +65,7 @@ Status DsoftbusOutputAudioPlugin::Init() AVTRANS_LOGI("Init."); Media::OSAL::ScopedLock lock(operationMutes_); state_ = State::INITIALIZED; + sessionNameMid_ = ""; return Status::OK; } @@ -83,7 +84,7 @@ Status DsoftbusOutputAudioPlugin::Prepare() return Status::ERROR_WRONG_STATE; } - sessionName_ = ownerName_ + "_" + SENDER_DATA_SESSION_NAME_SUFFIX; + sessionName_ = ownerName_ + "_" + sessionNameMid_ + SENDER_DATA_SESSION_NAME_SUFFIX; int32_t ret = SoftbusChannelAdapter::GetInstance().CreateChannelServer(TransName2PkgName(ownerName_), sessionName_); if (ret != DH_AVT_SUCCESS) { AVTRANS_LOGE("Create Session Server failed ret: %d.", ret); @@ -181,6 +182,9 @@ Status DsoftbusOutputAudioPlugin::SetParameter(Tag tag, const ValueType &value) if (tag == Tag::MEDIA_DESCRIPTION) { ParseChannelDescription(Plugin::AnyCast(value), ownerName_, peerDevId_); } + if (tag == Tag::MEDIA_TITLE) { + sessionNameMid_ = Plugin::AnyCast(value); + } paramsMap_.insert(std::pair(tag, value)); return Status::OK; } @@ -199,7 +203,7 @@ Status DsoftbusOutputAudioPlugin::SetCallback(Callback *cb) Status DsoftbusOutputAudioPlugin::OpenSoftbusChannel() { - std::string peerSessName_ = ownerName_ + "_" + RECEIVER_DATA_SESSION_NAME_SUFFIX; + std::string peerSessName_ = ownerName_ + "_" + sessionNameMid_ + RECEIVER_DATA_SESSION_NAME_SUFFIX; int32_t ret = SoftbusChannelAdapter::GetInstance().OpenSoftbusChannel(sessionName_, peerSessName_, peerDevId_); if ((ret != DH_AVT_SUCCESS) && (ret != ERR_DH_AVT_SESSION_HAS_OPENED)) { AVTRANS_LOGE("Open softbus channel failed ret: %d.", ret); diff --git a/av_transport/av_trans_engine/plugin/plugins/av_trans_output/dsoftbus_output_audio/dsoftbus_output_audio_plugin.h b/av_transport/av_trans_engine/plugin/plugins/av_trans_output/dsoftbus_output_audio/dsoftbus_output_audio_plugin.h index 77ee34920b1566f78b52ddb91973d387efa22df6..18ed3ab0fb58084211ad1401edb7a4f783be5add 100644 --- a/av_transport/av_trans_engine/plugin/plugins/av_trans_output/dsoftbus_output_audio/dsoftbus_output_audio_plugin.h +++ b/av_transport/av_trans_engine/plugin/plugins/av_trans_output/dsoftbus_output_audio/dsoftbus_output_audio_plugin.h @@ -79,6 +79,7 @@ private: private: std::string ownerName_; std::string sessionName_; + std::string sessionNameMid_; std::string peerDevId_; std::condition_variable dataCond_; std::mutex dataQueueMtx_; diff --git a/av_transport/common/include/av_trans_types.h b/av_transport/common/include/av_trans_types.h index 58dc8c6805b92416951e14591ffc36b87ea2b5ff..f3d4edfcf691633dc4f9f2dbff0161fdc1386c82 100644 --- a/av_transport/common/include/av_trans_types.h +++ b/av_transport/common/include/av_trans_types.h @@ -124,6 +124,7 @@ enum struct AVTransTag : uint32_t { AUDIO_CONTENT_TYPE, AUDIO_CHANNEL_LAYOUT, AUDIO_BIT_RATE, + AUDIO_SESSION_NAME_MID, /* -------------------- d_video tag -------------------- */ VIDEO_WIDTH = SECTION_D_VIDEO_START + 1,