From ba150beb0faa6d3f7e4201f55b678561c5325e42 Mon Sep 17 00:00:00 2001 From: john Date: Mon, 5 Feb 2024 15:17:32 +0800 Subject: [PATCH] RTC: Fix video and audio track pt_ is not change in player before publisher. v5.0.207 (#3925) For WebRTC: when player before publisher, it will happen track pt didn't change. - At source change step, change track pt --------- Co-authored-by: mingche.tsai Co-authored-by: john --- trunk/doc/CHANGELOG.md | 1 + trunk/src/app/srs_app_rtc_conn.cpp | 18 ++++++++++++++++++ trunk/src/core/srs_core_version5.hpp | 2 +- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/trunk/doc/CHANGELOG.md b/trunk/doc/CHANGELOG.md index 7f8d03c4c..93b9859b1 100644 --- a/trunk/doc/CHANGELOG.md +++ b/trunk/doc/CHANGELOG.md @@ -7,6 +7,7 @@ The changelog for SRS. ## SRS 5.0 Changelog +* v5.0, 2024-02-05, Merge [#3925](https://github.com/ossrs/srs/pull/3925): RTC: Fix video and audio track pt_ is not change in player before publisher. v5.0.207 (#3925) * v5.0, 2024-02-05, Merge [#3923](https://github.com/ossrs/srs/pull/3923): Configure: print enabled/disable sanitizer. v5.0.206 (#3923) * v5.0, 2023-12-30, Merge [#3916](https://github.com/ossrs/srs/pull/3916): Enhancing the compatibility of options.sh. v5.0.204 (#3916) * v5.0, 2023-12-14, Merge [#3910](https://github.com/ossrs/srs/pull/3910): RTC: Support OPUS stereo SDP option. v5.0.203 (#3910) diff --git a/trunk/src/app/srs_app_rtc_conn.cpp b/trunk/src/app/srs_app_rtc_conn.cpp index 744a8e81d..75f09197e 100644 --- a/trunk/src/app/srs_app_rtc_conn.cpp +++ b/trunk/src/app/srs_app_rtc_conn.cpp @@ -533,6 +533,15 @@ void SrsRtcPlayStream::on_stream_change(SrsRtcSourceDescription* desc) uint32_t ssrc = desc->audio_track_desc_->ssrc_; SrsRtcAudioSendTrack* track = audio_tracks_.begin()->second; + if (track->track_desc_->media_->pt_of_publisher_ != desc->audio_track_desc_->media_->pt_) { + track->track_desc_->media_->pt_of_publisher_ = desc->audio_track_desc_->media_->pt_; + } + + if (desc->audio_track_desc_->red_ && track->track_desc_->red_ && + track->track_desc_->red_->pt_of_publisher_ != desc->audio_track_desc_->red_->pt_) { + track->track_desc_->red_->pt_of_publisher_ = desc->audio_track_desc_->red_->pt_; + } + audio_tracks_.clear(); audio_tracks_.insert(make_pair(ssrc, track)); } @@ -546,6 +555,15 @@ void SrsRtcPlayStream::on_stream_change(SrsRtcSourceDescription* desc) uint32_t ssrc = vdesc->ssrc_; SrsRtcVideoSendTrack* track = video_tracks_.begin()->second; + if (track->track_desc_->media_->pt_of_publisher_ != vdesc->media_->pt_) { + track->track_desc_->media_->pt_of_publisher_ = vdesc->media_->pt_; + } + + if (vdesc->red_ && track->track_desc_->red_ && + track->track_desc_->red_->pt_of_publisher_ != vdesc->red_->pt_) { + track->track_desc_->red_->pt_of_publisher_ = vdesc->red_->pt_; + } + video_tracks_.clear(); video_tracks_.insert(make_pair(ssrc, track)); } diff --git a/trunk/src/core/srs_core_version5.hpp b/trunk/src/core/srs_core_version5.hpp index 42f3b96ef..3e92bb67d 100644 --- a/trunk/src/core/srs_core_version5.hpp +++ b/trunk/src/core/srs_core_version5.hpp @@ -9,6 +9,6 @@ #define VERSION_MAJOR 5 #define VERSION_MINOR 0 -#define VERSION_REVISION 206 +#define VERSION_REVISION 207 #endif