@ -710,6 +710,7 @@ srs_error_t SrsRtcSource::on_timer(srs_utime_t interval)
}
}
# ifdef SRS_FFMPEG_FIT
# ifdef SRS_FFMPEG_FIT
SrsRtcFromRtmpBridge : : SrsRtcFromRtmpBridge ( SrsRtcSource * source )
SrsRtcFromRtmpBridge : : SrsRtcFromRtmpBridge ( SrsRtcSource * source )
{
{
req = NULL ;
req = NULL ;
@ -729,6 +730,8 @@ SrsRtcFromRtmpBridge::SrsRtcFromRtmpBridge(SrsRtcSource* source)
if ( ! descs . empty ( ) ) {
if ( ! descs . empty ( ) ) {
audio_ssrc = descs . at ( 0 ) - > ssrc_ ;
audio_ssrc = descs . at ( 0 ) - > ssrc_ ;
}
}
// Note we must use the PT of source, see https://github.com/ossrs/srs/pull/3079
audio_payload_type_ = descs . empty ( ) ? kAudioPayloadType : descs . front ( ) - > media_ - > pt_ ;
}
}
// video track ssrc
// video track ssrc
@ -737,6 +740,8 @@ SrsRtcFromRtmpBridge::SrsRtcFromRtmpBridge(SrsRtcSource* source)
if ( ! descs . empty ( ) ) {
if ( ! descs . empty ( ) ) {
video_ssrc = descs . at ( 0 ) - > ssrc_ ;
video_ssrc = descs . at ( 0 ) - > ssrc_ ;
}
}
// Note we must use the PT of source, see https://github.com/ossrs/srs/pull/3079
video_payload_type_ = descs . empty ( ) ? kVideoPayloadType : descs . front ( ) - > media_ - > pt_ ;
}
}
}
}
@ -910,7 +915,7 @@ srs_error_t SrsRtcFromRtmpBridge::package_opus(SrsAudioFrame* audio, SrsRtpPacke
{
{
srs_error_t err = srs_success ;
srs_error_t err = srs_success ;
pkt - > header . set_payload_type ( kAudioPayloadType ) ;
pkt - > header . set_payload_type ( audio_payload_type_ ) ;
pkt - > header . set_ssrc ( audio_ssrc ) ;
pkt - > header . set_ssrc ( audio_ssrc ) ;
pkt - > frame_type = SrsFrameTypeAudio ;
pkt - > frame_type = SrsFrameTypeAudio ;
pkt - > header . set_marker ( true ) ;
pkt - > header . set_marker ( true ) ;
@ -1054,7 +1059,7 @@ srs_error_t SrsRtcFromRtmpBridge::package_stap_a(SrsRtcSource* source, SrsShared
return srs_error_new ( ERROR_RTC_RTP_MUXER , " sps/pps empty " ) ;
return srs_error_new ( ERROR_RTC_RTP_MUXER , " sps/pps empty " ) ;
}
}
pkt - > header . set_payload_type ( kVideoPayloadType ) ;
pkt - > header . set_payload_type ( video_payload_type_ ) ;
pkt - > header . set_ssrc ( video_ssrc ) ;
pkt - > header . set_ssrc ( video_ssrc ) ;
pkt - > frame_type = SrsFrameTypeVideo ;
pkt - > frame_type = SrsFrameTypeVideo ;
pkt - > nalu_type = ( SrsAvcNaluType ) kStapA ;
pkt - > nalu_type = ( SrsAvcNaluType ) kStapA ;
@ -1136,7 +1141,7 @@ srs_error_t SrsRtcFromRtmpBridge::package_nalus(SrsSharedPtrMessage* msg, const
SrsRtpPacket * pkt = new SrsRtpPacket ( ) ;
SrsRtpPacket * pkt = new SrsRtpPacket ( ) ;
pkts . push_back ( pkt ) ;
pkts . push_back ( pkt ) ;
pkt - > header . set_payload_type ( kVideoPayloadType ) ;
pkt - > header . set_payload_type ( video_payload_type_ ) ;
pkt - > header . set_ssrc ( video_ssrc ) ;
pkt - > header . set_ssrc ( video_ssrc ) ;
pkt - > frame_type = SrsFrameTypeVideo ;
pkt - > frame_type = SrsFrameTypeVideo ;
pkt - > nalu_type = ( SrsAvcNaluType ) first_nalu_type ;
pkt - > nalu_type = ( SrsAvcNaluType ) first_nalu_type ;
@ -1170,7 +1175,7 @@ srs_error_t SrsRtcFromRtmpBridge::package_nalus(SrsSharedPtrMessage* msg, const
SrsRtpPacket * pkt = new SrsRtpPacket ( ) ;
SrsRtpPacket * pkt = new SrsRtpPacket ( ) ;
pkts . push_back ( pkt ) ;
pkts . push_back ( pkt ) ;
pkt - > header . set_payload_type ( kVideoPayloadType ) ;
pkt - > header . set_payload_type ( video_payload_type_ ) ;
pkt - > header . set_ssrc ( video_ssrc ) ;
pkt - > header . set_ssrc ( video_ssrc ) ;
pkt - > frame_type = SrsFrameTypeVideo ;
pkt - > frame_type = SrsFrameTypeVideo ;
pkt - > nalu_type = ( SrsAvcNaluType ) kFuA ;
pkt - > nalu_type = ( SrsAvcNaluType ) kFuA ;
@ -1200,7 +1205,7 @@ srs_error_t SrsRtcFromRtmpBridge::package_single_nalu(SrsSharedPtrMessage* msg,
SrsRtpPacket * pkt = new SrsRtpPacket ( ) ;
SrsRtpPacket * pkt = new SrsRtpPacket ( ) ;
pkts . push_back ( pkt ) ;
pkts . push_back ( pkt ) ;
pkt - > header . set_payload_type ( kVideoPayloadType ) ;
pkt - > header . set_payload_type ( video_payload_type_ ) ;
pkt - > header . set_ssrc ( video_ssrc ) ;
pkt - > header . set_ssrc ( video_ssrc ) ;
pkt - > frame_type = SrsFrameTypeVideo ;
pkt - > frame_type = SrsFrameTypeVideo ;
pkt - > header . set_sequence ( video_sequence + + ) ;
pkt - > header . set_sequence ( video_sequence + + ) ;
@ -1233,7 +1238,7 @@ srs_error_t SrsRtcFromRtmpBridge::package_fu_a(SrsSharedPtrMessage* msg, SrsSamp
SrsRtpPacket * pkt = new SrsRtpPacket ( ) ;
SrsRtpPacket * pkt = new SrsRtpPacket ( ) ;
pkts . push_back ( pkt ) ;
pkts . push_back ( pkt ) ;
pkt - > header . set_payload_type ( kVideoPayloadType ) ;
pkt - > header . set_payload_type ( video_payload_type_ ) ;
pkt - > header . set_ssrc ( video_ssrc ) ;
pkt - > header . set_ssrc ( video_ssrc ) ;
pkt - > frame_type = SrsFrameTypeVideo ;
pkt - > frame_type = SrsFrameTypeVideo ;
pkt - > header . set_sequence ( video_sequence + + ) ;
pkt - > header . set_sequence ( video_sequence + + ) ;