1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

RTC: Refine code

This commit is contained in:
winlin 2020-08-13 17:20:03 +08:00
parent 4c7de039ba
commit 3617acf01c
3 changed files with 16 additions and 6 deletions

View file

@ -1806,6 +1806,7 @@ srs_error_t SrsRtcConnection::dispatch_rtcp(SrsRtcpCommon* rtcp)
publisher = it->second; publisher = it->second;
} }
} }
if (true) { if (true) {
uint32_t ssrc = required_player_ssrc? required_player_ssrc : rtcp->get_ssrc(); uint32_t ssrc = required_player_ssrc? required_player_ssrc : rtcp->get_ssrc();
map<uint32_t, SrsRtcPlayStream*>::iterator it = players_ssrc_map_.find(ssrc); map<uint32_t, SrsRtcPlayStream*>::iterator it = players_ssrc_map_.find(ssrc);
@ -1816,11 +1817,11 @@ srs_error_t SrsRtcConnection::dispatch_rtcp(SrsRtcpCommon* rtcp)
// Ignore if packet is required by publisher or player. // Ignore if packet is required by publisher or player.
if (required_publisher_ssrc && !publisher) { if (required_publisher_ssrc && !publisher) {
srs_warn("SR: no ssrc %u in publishers", required_publisher_ssrc); srs_warn("no ssrc %u in publishers. rtcp type:%u", required_publisher_ssrc, rtcp->type());
return err; return err;
} }
if (required_player_ssrc && !player) { if (required_player_ssrc && !player) {
srs_warn("SR: no ssrc %u in players", required_player_ssrc); srs_warn("no ssrc %u in players. rtcp type:%u", required_player_ssrc, rtcp->type());
return err; return err;
} }
@ -2686,7 +2687,7 @@ srs_error_t SrsRtcConnection::negotiate_play_capability(SrsRequest* req, const S
// TODO: check opus format specific param // TODO: check opus format specific param
std::vector<SrsMediaPayloadType> payloads = remote_media_desc.find_media_with_encoding_name("H264"); std::vector<SrsMediaPayloadType> payloads = remote_media_desc.find_media_with_encoding_name("H264");
if (payloads.empty()) { if (payloads.empty()) {
return srs_error_new(ERROR_RTC_SDP_EXCHANGE, "no valid found opus payload type"); return srs_error_new(ERROR_RTC_SDP_EXCHANGE, "no valid found h264 payload type");
} }
SrsMediaPayloadType payload = payloads.at(0); SrsMediaPayloadType payload = payloads.at(0);
@ -2757,7 +2758,7 @@ srs_error_t SrsRtcConnection::negotiate_play_capability(SrsRequest* req, SrsRtcS
} }
} }
//negotiate audio media //negotiate video media
std::vector<SrsRtcTrackDescription*> req_video_tracks = req_stream_desc->video_track_descs_; std::vector<SrsRtcTrackDescription*> req_video_tracks = req_stream_desc->video_track_descs_;
src_track_descs = source->get_track_desc("video", "h264"); src_track_descs = source->get_track_desc("video", "h264");
for(int i = 0; i < req_video_tracks.size(); ++i) { for(int i = 0; i < req_video_tracks.size(); ++i) {
@ -2998,7 +2999,8 @@ srs_error_t SrsRtcConnection::create_player(SrsRequest* req, std::map<uint32_t,
// make map between ssrc and player for fastly searching // make map between ssrc and player for fastly searching
for(map<uint32_t, SrsRtcTrackDescription*>::iterator it = sub_relations.begin(); it != sub_relations.end(); ++it) { for(map<uint32_t, SrsRtcTrackDescription*>::iterator it = sub_relations.begin(); it != sub_relations.end(); ++it) {
SrsRtcTrackDescription* track_desc = it->second; SrsRtcTrackDescription* track_desc = it->second;
if(players_ssrc_map_.end() != players_ssrc_map_.find(track_desc->ssrc_)) { map<uint32_t, SrsRtcPlayStream*>::iterator it_player = players_ssrc_map_.find(track_desc->ssrc_);
if((players_ssrc_map_.end() != it_player) && (player != it_player->second)) {
return srs_error_new(ERROR_RTC_DUPLICATED_SSRC, "duplicate ssrc %d, track id: %s", return srs_error_new(ERROR_RTC_DUPLICATED_SSRC, "duplicate ssrc %d, track id: %s",
track_desc->ssrc_, track_desc->id_.c_str()); track_desc->ssrc_, track_desc->id_.c_str());
} }

View file

@ -29,6 +29,7 @@ using namespace std;
#include <iostream> #include <iostream>
#include <sstream> #include <sstream>
#include <vector> #include <vector>
#include <algorithm>
#include <srs_kernel_error.hpp> #include <srs_kernel_error.hpp>
#include <srs_kernel_log.hpp> #include <srs_kernel_log.hpp>
@ -314,8 +315,13 @@ vector<SrsMediaPayloadType> SrsMediaDesc::find_media_with_encoding_name(const st
{ {
std::vector<SrsMediaPayloadType> payloads; std::vector<SrsMediaPayloadType> payloads;
std::string lower_name, upper_name;
transform(encoding_name.begin(), encoding_name.end(), lower_name.begin(), ::tolower);
transform(encoding_name.begin(), encoding_name.end(), upper_name.begin(), ::toupper);
for (size_t i = 0; i < payload_types_.size(); ++i) { for (size_t i = 0; i < payload_types_.size(); ++i) {
if (payload_types_[i].encoding_name_ == encoding_name) { if (payload_types_[i].encoding_name_ == std::string(lower_name.c_str()) ||
payload_types_[i].encoding_name_ == std::string(upper_name.c_str())) {
payloads.push_back(payload_types_[i]); payloads.push_back(payload_types_[i]);
} }
} }

View file

@ -1194,6 +1194,8 @@ SrsMediaPayloadType SrsVideoPayload::generate_media_payload_type()
srs_error_t SrsVideoPayload::set_h264_param_desc(std::string fmtp) srs_error_t SrsVideoPayload::set_h264_param_desc(std::string fmtp)
{ {
// TODO: FIXME: Refine code.
// for example: level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
srs_error_t err = srs_success; srs_error_t err = srs_success;
std::vector<std::string> vec = split_str(fmtp, ";"); std::vector<std::string> vec = split_str(fmtp, ";");
for (size_t i = 0; i < vec.size(); ++i) { for (size_t i = 0; i < vec.size(); ++i) {