mirror of
https://github.com/ossrs/srs.git
synced 2025-02-13 20:01:56 +00:00
RTC: Remove dead code
This commit is contained in:
parent
c0021ab78a
commit
8efbdec2af
3 changed files with 9 additions and 157 deletions
|
@ -99,88 +99,6 @@ srs_error_t SrsRtpH264Muxer::filter(SrsSharedPtrMessage* shared_frame, SrsFormat
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
SrsRtpOpusMuxer::SrsRtpOpusMuxer()
|
|
||||||
{
|
|
||||||
codec = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
SrsRtpOpusMuxer::~SrsRtpOpusMuxer()
|
|
||||||
{
|
|
||||||
srs_freep(codec);
|
|
||||||
}
|
|
||||||
|
|
||||||
srs_error_t SrsRtpOpusMuxer::initialize()
|
|
||||||
{
|
|
||||||
srs_error_t err = srs_success;
|
|
||||||
|
|
||||||
codec = new SrsAudioRecode(kChannel, kSamplerate);
|
|
||||||
if (!codec) {
|
|
||||||
return srs_error_new(ERROR_RTC_RTP_MUXER, "SrsAacOpus init failed");
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((err = codec->initialize()) != srs_success) {
|
|
||||||
return srs_error_wrap(err, "init codec");
|
|
||||||
}
|
|
||||||
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
// An AAC packet may be transcoded to many OPUS packets.
|
|
||||||
const int kMaxOpusPackets = 8;
|
|
||||||
// The max size for each OPUS packet.
|
|
||||||
const int kMaxOpusPacketSize = 4096;
|
|
||||||
|
|
||||||
srs_error_t SrsRtpOpusMuxer::transcode(SrsSharedPtrMessage* shared_audio, char* adts_audio, int nn_adts_audio)
|
|
||||||
{
|
|
||||||
srs_error_t err = srs_success;
|
|
||||||
|
|
||||||
// Opus packet cache.
|
|
||||||
static char* opus_payloads[kMaxOpusPackets];
|
|
||||||
|
|
||||||
static bool initialized = false;
|
|
||||||
if (!initialized) {
|
|
||||||
initialized = true;
|
|
||||||
|
|
||||||
static char opus_packets_cache[kMaxOpusPackets][kMaxOpusPacketSize];
|
|
||||||
opus_payloads[0] = &opus_packets_cache[0][0];
|
|
||||||
for (int i = 1; i < kMaxOpusPackets; i++) {
|
|
||||||
opus_payloads[i] = opus_packets_cache[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Transcode an aac packet to many opus packets.
|
|
||||||
SrsSample aac;
|
|
||||||
aac.bytes = adts_audio;
|
|
||||||
aac.size = nn_adts_audio;
|
|
||||||
|
|
||||||
int nn_opus_packets = 0;
|
|
||||||
int opus_sizes[kMaxOpusPackets];
|
|
||||||
if ((err = codec->recode(&aac, opus_payloads, opus_sizes, nn_opus_packets)) != srs_success) {
|
|
||||||
return srs_error_wrap(err, "recode error");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Save OPUS packets in shared message.
|
|
||||||
if (nn_opus_packets <= 0) {
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
int nn_max_extra_payload = 0;
|
|
||||||
SrsSample samples[nn_opus_packets];
|
|
||||||
for (int i = 0; i < nn_opus_packets; i++) {
|
|
||||||
SrsSample* p = samples + i;
|
|
||||||
p->size = opus_sizes[i];
|
|
||||||
p->bytes = new char[p->size];
|
|
||||||
memcpy(p->bytes, opus_payloads[i], p->size);
|
|
||||||
|
|
||||||
nn_max_extra_payload = srs_max(nn_max_extra_payload, p->size);
|
|
||||||
}
|
|
||||||
|
|
||||||
shared_audio->set_extra_payloads(samples, nn_opus_packets);
|
|
||||||
shared_audio->set_max_extra_payload(nn_max_extra_payload);
|
|
||||||
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
SrsRtc::SrsRtc()
|
SrsRtc::SrsRtc()
|
||||||
{
|
{
|
||||||
req = NULL;
|
req = NULL;
|
||||||
|
@ -222,13 +140,8 @@ srs_error_t SrsRtc::initialize(SrsRequest* r)
|
||||||
rtp_h264_muxer->discard_bframe = _srs_config->get_rtc_bframe_discard(req->vhost);
|
rtp_h264_muxer->discard_bframe = _srs_config->get_rtc_bframe_discard(req->vhost);
|
||||||
// TODO: FIXME: Support reload and log it.
|
// TODO: FIXME: Support reload and log it.
|
||||||
discard_aac = _srs_config->get_rtc_aac_discard(req->vhost);
|
discard_aac = _srs_config->get_rtc_aac_discard(req->vhost);
|
||||||
|
|
||||||
rtp_opus_muxer = new SrsRtpOpusMuxer();
|
|
||||||
if (!rtp_opus_muxer) {
|
|
||||||
return srs_error_wrap(err, "rtp_opus_muxer nullptr");
|
|
||||||
}
|
|
||||||
|
|
||||||
return rtp_opus_muxer->initialize();
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
srs_error_t SrsRtc::on_publish()
|
srs_error_t SrsRtc::on_publish()
|
||||||
|
@ -266,52 +179,6 @@ void SrsRtc::on_unpublish()
|
||||||
enabled = false;
|
enabled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
srs_error_t SrsRtc::on_audio(SrsSharedPtrMessage* shared_audio, SrsFormat* format)
|
|
||||||
{
|
|
||||||
srs_error_t err = srs_success;
|
|
||||||
|
|
||||||
if (!enabled) {
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ignore if no format->acodec, it means the codec is not parsed, or unknown codec.
|
|
||||||
// @issue https://github.com/ossrs/srs/issues/1506#issuecomment-562079474
|
|
||||||
if (!format->acodec) {
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
// update the hls time, for hls_dispose.
|
|
||||||
last_update_time = srs_get_system_time();
|
|
||||||
|
|
||||||
// ts support audio codec: aac/mp3
|
|
||||||
SrsAudioCodecId acodec = format->acodec->id;
|
|
||||||
if (acodec != SrsAudioCodecIdAAC && acodec != SrsAudioCodecIdMP3) {
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
// When drop aac audio packet, never transcode.
|
|
||||||
if (discard_aac && acodec == SrsAudioCodecIdAAC) {
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
// ignore sequence header
|
|
||||||
srs_assert(format->audio);
|
|
||||||
|
|
||||||
char* adts_audio = NULL;
|
|
||||||
int nn_adts_audio = 0;
|
|
||||||
// TODO: FIXME: Reserve 7 bytes header when create shared message.
|
|
||||||
if ((err = aac_raw_append_adts_header(shared_audio, format, &adts_audio, &nn_adts_audio)) != srs_success) {
|
|
||||||
return srs_error_wrap(err, "aac append header");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (adts_audio) {
|
|
||||||
err = rtp_opus_muxer->transcode(shared_audio, adts_audio, nn_adts_audio);
|
|
||||||
srs_freep(adts_audio);
|
|
||||||
}
|
|
||||||
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
srs_error_t SrsRtc::on_video(SrsSharedPtrMessage* shared_video, SrsFormat* format)
|
srs_error_t SrsRtc::on_video(SrsSharedPtrMessage* shared_video, SrsFormat* format)
|
||||||
{
|
{
|
||||||
srs_error_t err = srs_success;
|
srs_error_t err = srs_success;
|
||||||
|
|
|
@ -45,9 +45,6 @@ const int kRtpPacketSize = 1500;
|
||||||
const uint8_t kOpusPayloadType = 111;
|
const uint8_t kOpusPayloadType = 111;
|
||||||
const uint8_t kH264PayloadType = 102;
|
const uint8_t kH264PayloadType = 102;
|
||||||
|
|
||||||
const int kChannel = 2;
|
|
||||||
const int kSamplerate = 48000;
|
|
||||||
|
|
||||||
// SSRC will rewrite in srs_app_rtc_conn.cpp when send to client.
|
// SSRC will rewrite in srs_app_rtc_conn.cpp when send to client.
|
||||||
const uint32_t kAudioSSRC = 1;
|
const uint32_t kAudioSSRC = 1;
|
||||||
const uint32_t kVideoSSRC = 2;
|
const uint32_t kVideoSSRC = 2;
|
||||||
|
@ -64,19 +61,6 @@ public:
|
||||||
srs_error_t filter(SrsSharedPtrMessage* shared_video, SrsFormat* format);
|
srs_error_t filter(SrsSharedPtrMessage* shared_video, SrsFormat* format);
|
||||||
};
|
};
|
||||||
|
|
||||||
// TODO: FIXME: It's not a muxer, but a transcoder.
|
|
||||||
class SrsRtpOpusMuxer
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
SrsAudioRecode* codec;
|
|
||||||
public:
|
|
||||||
SrsRtpOpusMuxer();
|
|
||||||
virtual ~SrsRtpOpusMuxer();
|
|
||||||
virtual srs_error_t initialize();
|
|
||||||
public:
|
|
||||||
srs_error_t transcode(SrsSharedPtrMessage* shared_audio, char* adts_audio, int nn_adts_audio);
|
|
||||||
};
|
|
||||||
|
|
||||||
class SrsRtc
|
class SrsRtc
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
@ -86,7 +70,6 @@ private:
|
||||||
bool discard_aac;
|
bool discard_aac;
|
||||||
srs_utime_t last_update_time;
|
srs_utime_t last_update_time;
|
||||||
SrsRtpH264Muxer* rtp_h264_muxer;
|
SrsRtpH264Muxer* rtp_h264_muxer;
|
||||||
SrsRtpOpusMuxer* rtp_opus_muxer;
|
|
||||||
public:
|
public:
|
||||||
SrsRtc();
|
SrsRtc();
|
||||||
virtual ~SrsRtc();
|
virtual ~SrsRtc();
|
||||||
|
@ -97,7 +80,6 @@ public:
|
||||||
virtual srs_error_t initialize(SrsRequest* r);
|
virtual srs_error_t initialize(SrsRequest* r);
|
||||||
virtual srs_error_t on_publish();
|
virtual srs_error_t on_publish();
|
||||||
virtual void on_unpublish();
|
virtual void on_unpublish();
|
||||||
virtual srs_error_t on_audio(SrsSharedPtrMessage* shared_audio, SrsFormat* format);
|
|
||||||
virtual srs_error_t on_video(SrsSharedPtrMessage* shared_video, SrsFormat* format);
|
virtual srs_error_t on_video(SrsSharedPtrMessage* shared_video, SrsFormat* format);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,14 @@
|
||||||
#include <srs_kernel_buffer.hpp>
|
#include <srs_kernel_buffer.hpp>
|
||||||
#include <srs_app_rtc_codec.hpp>
|
#include <srs_app_rtc_codec.hpp>
|
||||||
|
|
||||||
|
const int kChannel = 2;
|
||||||
|
const int kSamplerate = 48000;
|
||||||
|
|
||||||
|
// An AAC packet may be transcoded to many OPUS packets.
|
||||||
|
const int kMaxOpusPackets = 8;
|
||||||
|
// The max size for each OPUS packet.
|
||||||
|
const int kMaxOpusPacketSize = 4096;
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
// TODO: Add this function into SrsRtpMux class.
|
// TODO: Add this function into SrsRtpMux class.
|
||||||
|
@ -585,11 +593,6 @@ srs_error_t SrsRtcFromRtmpBridger::on_audio(SrsSharedPtrMessage* msg)
|
||||||
return source_->on_audio_imp(msg);
|
return source_->on_audio_imp(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
// An AAC packet may be transcoded to many OPUS packets.
|
|
||||||
const int kMaxOpusPackets = 8;
|
|
||||||
// The max size for each OPUS packet.
|
|
||||||
const int kMaxOpusPacketSize = 4096;
|
|
||||||
|
|
||||||
srs_error_t SrsRtcFromRtmpBridger::transcode(SrsSharedPtrMessage* shared_audio, char* adts_audio, int nn_adts_audio)
|
srs_error_t SrsRtcFromRtmpBridger::transcode(SrsSharedPtrMessage* shared_audio, char* adts_audio, int nn_adts_audio)
|
||||||
{
|
{
|
||||||
srs_error_t err = srs_success;
|
srs_error_t err = srs_success;
|
||||||
|
|
Loading…
Reference in a new issue