Skip to content

Commit 40f8460

Browse files
committed
Squash: Merge SRS 4.0
1 parent 28e3a1c commit 40f8460

File tree

4 files changed

+39
-19
lines changed

4 files changed

+39
-19
lines changed

trunk/src/app/srs_app_caster_flv.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,9 @@ void SrsAppCasterFlv::remove(ISrsResource* c)
9696
srs_error_t SrsAppCasterFlv::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r)
9797
{
9898
SrsHttpMessage* msg = dynamic_cast<SrsHttpMessage*>(r);
99-
SrsDynamicHttpConn* conn = dynamic_cast<SrsDynamicHttpConn*>(msg->connection());
100-
srs_assert(conn);
99+
SrsHttpConn* hconn = dynamic_cast<SrsHttpConn*>(msg->connection());
100+
SrsDynamicHttpConn* dconn = dynamic_cast<SrsDynamicHttpConn*>(hconn->handler());
101+
srs_assert(dconn);
101102

102103
std::string app = srs_path_dirname(r->path());
103104
app = srs_string_trim_start(app, "/");
@@ -116,7 +117,7 @@ srs_error_t SrsAppCasterFlv::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessa
116117
o = o.substr(0, o.length() - 4);
117118
}
118119

119-
srs_error_t err = conn->proxy(w, r, o);
120+
srs_error_t err = dconn->proxy(w, r, o);
120121
if (err != srs_success) {
121122
return srs_error_wrap(err, "proxy");
122123
}

trunk/src/app/srs_app_latest_version.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ void srs_build_features(stringstream& ss)
5151
int nn_vhosts = 0;
5252
bool rtsp = false, forward = false, ingest = false, edge = false, hls = false, dvr = false, flv = false;
5353
bool hooks = false, dash = false, hds = false, exec = false, transcode = false, security = false;
54+
bool flv2 = false;
5455

5556
SrsConfDirective* root = _srs_config->get_root();
5657
// Note that we limit the loop, never detect all configs.
@@ -61,6 +62,8 @@ void srs_build_features(stringstream& ss)
6162
string engine = _srs_config->get_stream_caster_engine(conf);
6263
if (engine == "rtsp") {
6364
rtsp = true;
65+
} else if (engine == "flv") {
66+
flv2 = true;
6467
}
6568
}
6669

@@ -117,6 +120,7 @@ void srs_build_features(stringstream& ss)
117120

118121
SRS_CHECK_FEATURE2(nn_vhosts, "vhosts", ss);
119122
SRS_CHECK_FEATURE(rtsp, ss);
123+
SRS_CHECK_FEATURE(flv2, ss);
120124
SRS_CHECK_FEATURE(forward, ss);
121125
SRS_CHECK_FEATURE(ingest, ss);
122126
SRS_CHECK_FEATURE(edge, ss);

trunk/src/app/srs_app_rtc_codec.cpp

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,32 @@
1010
#include <srs_kernel_error.hpp>
1111
#include <srs_kernel_log.hpp>
1212

13-
static const char* id2codec_name(SrsAudioCodecId id)
13+
static const AVCodec* srs_find_decoder_by_id(SrsAudioCodecId id)
1414
{
15-
switch (id) {
16-
case SrsAudioCodecIdAAC:
17-
return "aac";
18-
case SrsAudioCodecIdOpus:
19-
return "libopus";
20-
default:
21-
return "";
15+
if (id == SrsAudioCodecIdAAC) {
16+
return avcodec_find_decoder_by_name("aac");
17+
} else if (id == SrsAudioCodecIdOpus) {
18+
const AVCodec* codec = avcodec_find_decoder_by_name("libopus");
19+
if (!codec) {
20+
codec = avcodec_find_decoder_by_name("opus");
21+
}
22+
return codec;
2223
}
24+
return NULL;
25+
}
26+
27+
static const AVCodec* srs_find_encoder_by_id(SrsAudioCodecId id)
28+
{
29+
if (id == SrsAudioCodecIdAAC) {
30+
return avcodec_find_encoder_by_name("aac");
31+
} else if (id == SrsAudioCodecIdOpus) {
32+
const AVCodec* codec = avcodec_find_encoder_by_name("libopus");
33+
if (!codec) {
34+
codec = avcodec_find_encoder_by_name("opus");
35+
}
36+
return codec;
37+
}
38+
return NULL;
2339
}
2440

2541
class SrsFFmpegLogHelper {
@@ -175,10 +191,9 @@ void SrsAudioTranscoder::aac_codec_header(uint8_t **data, int *len)
175191

176192
srs_error_t SrsAudioTranscoder::init_dec(SrsAudioCodecId src_codec)
177193
{
178-
const char* codec_name = id2codec_name(src_codec);
179-
const AVCodec *codec = avcodec_find_decoder_by_name(codec_name);
194+
const AVCodec *codec = srs_find_decoder_by_id(src_codec);
180195
if (!codec) {
181-
return srs_error_new(ERROR_RTC_RTP_MUXER, "Codec not found by name(%d,%s)", src_codec, codec_name);
196+
return srs_error_new(ERROR_RTC_RTP_MUXER, "Codec not found by %d", src_codec);
182197
}
183198

184199
dec_ = avcodec_alloc_context3(codec);
@@ -208,15 +223,14 @@ srs_error_t SrsAudioTranscoder::init_dec(SrsAudioCodecId src_codec)
208223

209224
srs_error_t SrsAudioTranscoder::init_enc(SrsAudioCodecId dst_codec, int dst_channels, int dst_samplerate, int dst_bit_rate)
210225
{
211-
const char* codec_name = id2codec_name(dst_codec);
212-
const AVCodec *codec = avcodec_find_encoder_by_name(codec_name);
226+
const AVCodec *codec = srs_find_encoder_by_id(dst_codec);
213227
if (!codec) {
214-
return srs_error_new(ERROR_RTC_RTP_MUXER, "Codec not found by name(%d,%s)", dst_codec, codec_name);
228+
return srs_error_new(ERROR_RTC_RTP_MUXER, "Codec not found by %d", dst_codec);
215229
}
216230

217231
enc_ = avcodec_alloc_context3(codec);
218232
if (!enc_) {
219-
return srs_error_new(ERROR_RTC_RTP_MUXER, "Could not allocate audio codec context(%d,%s)", dst_codec, codec_name);
233+
return srs_error_new(ERROR_RTC_RTP_MUXER, "Could not allocate audio codec context %d", dst_codec);
220234
}
221235

222236
enc_->sample_rate = dst_samplerate;
@@ -228,6 +242,7 @@ srs_error_t SrsAudioTranscoder::init_enc(SrsAudioCodecId dst_codec, int dst_chan
228242
if (dst_codec == SrsAudioCodecIdOpus) {
229243
//TODO: for more level setting
230244
enc_->compression_level = 1;
245+
enc_->strict_std_compliance = FF_COMPLIANCE_EXPERIMENTAL;
231246
} else if (dst_codec == SrsAudioCodecIdAAC) {
232247
enc_->strict_std_compliance = FF_COMPLIANCE_EXPERIMENTAL;
233248
}

trunk/src/core/srs_core_version4.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,6 @@
99

1010
#define VERSION_MAJOR 4
1111
#define VERSION_MINOR 0
12-
#define VERSION_REVISION 161
12+
#define VERSION_REVISION 162
1313

1414
#endif

0 commit comments

Comments
 (0)