Skip to content

Commit

Permalink
Merge pull request #1631 from runner365/3.0release.srt.dev
Browse files Browse the repository at this point in the history
add h264 sei filter configure
  • Loading branch information
winlinvip authored Mar 7, 2020
2 parents 72155fc + a2839aa commit 82824ba
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 5 deletions.
16 changes: 15 additions & 1 deletion trunk/src/app/srs_app_config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3530,7 +3530,7 @@ srs_error_t SrsConfig::check_normal_config()
&& n != "mss" && n != "latency" && n != "recvlatency"
&& n != "peerlatency" && n != "tlpkdrop" && n != "connect_timeout"
&& n != "sendbuf" && n != "recvbuf" && n != "payloadsize"
&& n != "default_app" && n != "mix_correct") {
&& n != "default_app" && n != "mix_correct" && n != "sei_filter") {
return srs_error_new(ERROR_SYSTEM_CONFIG_INVALID, "illegal srt_stream.%s", n.c_str());
}
}
Expand Down Expand Up @@ -6838,6 +6838,20 @@ int SrsConfig::get_srto_peer_latency() {
return atoi(conf->arg0().c_str());
}

bool SrsConfig::get_srt_sei_filter() {
static bool DEFAULT = true;
SrsConfDirective* conf = root->get("srt_server");
if (!conf) {
return DEFAULT;
}

conf = conf->get("sei_filter");
if (!conf || conf->arg0().empty()) {
return DEFAULT;
}
return SRS_CONF_PERFER_TRUE(conf->arg0());
}

bool SrsConfig::get_srto_tlpkdrop() {
static bool DEFAULT = true;
SrsConfDirective* conf = root->get("srt_server");
Expand Down
2 changes: 2 additions & 0 deletions trunk/src/app/srs_app_config.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -613,6 +613,8 @@ class SrsConfig
virtual int get_srto_recv_latency();
// Get the srt SRTO_PEERLATENCY, peer latency, default is 0..
virtual int get_srto_peer_latency();
// Get the srt h264 sei filter, default is on, it will drop h264 sei packet.
virtual bool get_srt_sei_filter();
// Get the srt SRTO_TLPKDROP, Too-late Packet Drop, default is true.
virtual bool get_srto_tlpkdrop();
// Get the srt SRTO_CONNTIMEO, connection timeout, default is 3000ms.
Expand Down
3 changes: 2 additions & 1 deletion trunk/src/srt/srt_handle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,8 @@ void srt_handle::add_newconn(SRT_CONN_PTR conn_ptr, int events) {
srs_trace("srto SRTO_RCVBUF=%d", val_i);
srt_getsockopt(conn_ptr->get_conn(), 0, SRTO_MAXBW, &val_i, &opt_len);
srs_trace("srto SRTO_MAXBW=%d", val_i);
srs_trace("srt mix_correct is %s", _srs_config->get_srt_mix_correct() ? "enable" : "disable");
srs_trace("srt mix_correct is %s.", _srs_config->get_srt_mix_correct() ? "enable" : "disable");
srs_trace("srt h264 sei filter is %s.", _srs_config->get_srt_sei_filter() ? "enable" : "disable");

if (conn_ptr->get_mode() == PULL_SRT_MODE) {
add_new_puller(conn_ptr, conn_ptr->get_subpath());
Expand Down
9 changes: 7 additions & 2 deletions trunk/src/srt/srt_to_rtmp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -459,6 +459,12 @@ srs_error_t rtmp_client::on_ts_video(std::shared_ptr<SrsBuffer> avs_ptr, uint64_
if (nal_unit_type == SrsAvcNaluTypeAccessUnitDelimiter) {
continue;
}

if (_srs_config->get_srt_sei_filter()) {
if (nal_unit_type == SrsAvcNaluTypeSEI) {
continue;
}
}

// for sps
if (_avc_ptr->is_sps(frame, frame_size)) {
Expand Down Expand Up @@ -624,8 +630,7 @@ void rtmp_client::on_data_callback(SRT_DATA_MSG_PTR data_ptr, unsigned int media
} else if (media_type == STREAM_TYPE_AUDIO_AAC) {
on_ts_audio(avs_ptr, dts, pts);
} else {
srs_error("mpegts demux unkown stream type:0x%02x", media_type);
assert(0);
srs_error("mpegts demux unkown stream type:0x%02x, only support h264+aac", media_type);
}
return;
}
Expand Down
6 changes: 5 additions & 1 deletion trunk/src/srt/ts_demux.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,11 @@ int ts_demux::decode_unit(unsigned char* data_p, std::string key_path, TS_DATA_C
//callback last media data in data buffer
on_callback(callback, _last_pid, key_path, _last_dts, _last_pts);

pes_parse(data_p+npos, npos, &ret_data_p, ret_size, dts, pts);
int ret = pes_parse(data_p+npos, npos, &ret_data_p, ret_size, dts, pts);
assert(ret <= 188);
if (ret > 188) {
return -1;
}

_last_pts = pts;
_last_dts = (dts == 0) ? pts : dts;
Expand Down

0 comments on commit 82824ba

Please sign in to comment.