mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
merge from 2.0release. refine the thread, protocol, kbps code. 2.0.166
This commit is contained in:
commit
6b28dec8ec
23 changed files with 115 additions and 114 deletions
|
@ -35,7 +35,10 @@ using namespace std;
|
|||
#include <srs_core_autofree.hpp>
|
||||
#include <srs_kernel_utility.hpp>
|
||||
#include <srs_app_utility.hpp>
|
||||
#include <srs_app_kbps.hpp>
|
||||
#include <srs_protocol_kbps.hpp>
|
||||
#include <srs_app_st.hpp>
|
||||
|
||||
#define _SRS_BANDWIDTH_LIMIT_INTERVAL_MS 100
|
||||
|
||||
// default sample duration, in ms
|
||||
#define _SRS_BANDWIDTH_SAMPLE_DURATION_MS 3000
|
||||
|
@ -475,3 +478,40 @@ int SrsBandwidth::finial(SrsBandwidthSample& play_sample, SrsBandwidthSample& pu
|
|||
return ret;
|
||||
}
|
||||
|
||||
SrsKbpsLimit::SrsKbpsLimit(SrsKbps* kbps, int limit_kbps)
|
||||
{
|
||||
_kbps = kbps;
|
||||
_limit_kbps = limit_kbps;
|
||||
}
|
||||
|
||||
SrsKbpsLimit::~SrsKbpsLimit()
|
||||
{
|
||||
}
|
||||
|
||||
int SrsKbpsLimit::limit_kbps()
|
||||
{
|
||||
return _limit_kbps;
|
||||
}
|
||||
|
||||
void SrsKbpsLimit::recv_limit()
|
||||
{
|
||||
_kbps->sample();
|
||||
|
||||
while (_kbps->get_recv_kbps() > _limit_kbps) {
|
||||
_kbps->sample();
|
||||
|
||||
st_usleep(_SRS_BANDWIDTH_LIMIT_INTERVAL_MS * 1000);
|
||||
}
|
||||
}
|
||||
|
||||
void SrsKbpsLimit::send_limit()
|
||||
{
|
||||
_kbps->sample();
|
||||
|
||||
while (_kbps->get_send_kbps() > _limit_kbps) {
|
||||
_kbps->sample();
|
||||
|
||||
st_usleep(_SRS_BANDWIDTH_LIMIT_INTERVAL_MS * 1000);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -34,6 +34,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
|
||||
#include <srs_app_st.hpp>
|
||||
|
||||
class SrsKbps;
|
||||
class SrsRequest;
|
||||
class SrsRtmpServer;
|
||||
class SrsKbpsLimit;
|
||||
|
@ -199,4 +200,30 @@ private:
|
|||
virtual int finial(SrsBandwidthSample& play_sample, SrsBandwidthSample& publish_sample, int64_t start_time, int64_t& end_time);
|
||||
};
|
||||
|
||||
/**
|
||||
* the kbps limit, if exceed the kbps, slow down.
|
||||
*/
|
||||
class SrsKbpsLimit
|
||||
{
|
||||
private:
|
||||
int _limit_kbps;
|
||||
SrsKbps* _kbps;
|
||||
public:
|
||||
SrsKbpsLimit(SrsKbps* kbps, int limit_kbps);
|
||||
virtual ~SrsKbpsLimit();
|
||||
public:
|
||||
/**
|
||||
* get the system limit kbps.
|
||||
*/
|
||||
virtual int limit_kbps();
|
||||
/**
|
||||
* limit the recv bandwidth.
|
||||
*/
|
||||
virtual void recv_limit();
|
||||
/**
|
||||
* limit the send bandwidth.
|
||||
*/
|
||||
virtual void send_limit();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -34,7 +34,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
|
||||
#include <srs_app_st.hpp>
|
||||
#include <srs_app_thread.hpp>
|
||||
#include <srs_app_kbps.hpp>
|
||||
#include <srs_protocol_kbps.hpp>
|
||||
|
||||
class SrsConnection;
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ using namespace std;
|
|||
#include <srs_app_source.hpp>
|
||||
#include <srs_app_pithy_print.hpp>
|
||||
#include <srs_core_autofree.hpp>
|
||||
#include <srs_app_kbps.hpp>
|
||||
#include <srs_protocol_kbps.hpp>
|
||||
#include <srs_rtmp_msg_array.hpp>
|
||||
#include <srs_app_utility.hpp>
|
||||
#include <srs_rtmp_amf0.hpp>
|
||||
|
|
|
@ -38,7 +38,7 @@ using namespace std;
|
|||
#include <srs_app_pithy_print.hpp>
|
||||
#include <srs_rtmp_sdk.hpp>
|
||||
#include <srs_rtmp_utility.hpp>
|
||||
#include <srs_app_kbps.hpp>
|
||||
#include <srs_protocol_kbps.hpp>
|
||||
#include <srs_rtmp_msg_array.hpp>
|
||||
#include <srs_app_utility.hpp>
|
||||
#include <srs_rtmp_amf0.hpp>
|
||||
|
|
|
@ -51,7 +51,7 @@ using namespace std;
|
|||
#include <srs_kernel_utility.hpp>
|
||||
#include <srs_kernel_codec.hpp>
|
||||
#include <srs_kernel_file.hpp>
|
||||
#include <srs_rtmp_buffer.hpp>
|
||||
#include <srs_protocol_buffer.hpp>
|
||||
#include <srs_kernel_ts.hpp>
|
||||
#include <srs_app_utility.hpp>
|
||||
#include <srs_app_http_hooks.hpp>
|
||||
|
|
|
@ -33,7 +33,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
#include <sstream>
|
||||
using namespace std;
|
||||
|
||||
#include <srs_rtmp_buffer.hpp>
|
||||
#include <srs_protocol_buffer.hpp>
|
||||
#include <srs_rtmp_utility.hpp>
|
||||
#include <srs_kernel_log.hpp>
|
||||
#include <srs_kernel_error.hpp>
|
||||
|
|
|
@ -26,7 +26,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
#include <srs_rtmp_sdk.hpp>
|
||||
#include <srs_rtmp_stack.hpp>
|
||||
#include <srs_app_rtmp_conn.hpp>
|
||||
#include <srs_rtmp_buffer.hpp>
|
||||
#include <srs_protocol_buffer.hpp>
|
||||
#include <srs_kernel_utility.hpp>
|
||||
#include <srs_core_performance.hpp>
|
||||
#include <srs_app_config.hpp>
|
||||
|
|
|
@ -33,7 +33,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
#include <vector>
|
||||
|
||||
#include <srs_app_thread.hpp>
|
||||
#include <srs_rtmp_buffer.hpp>
|
||||
#include <srs_protocol_buffer.hpp>
|
||||
#include <srs_core_performance.hpp>
|
||||
#include <srs_app_reload.hpp>
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ using namespace std;
|
|||
|
||||
#include <srs_rtmp_sdk.hpp>
|
||||
#include <srs_app_json.hpp>
|
||||
#include <srs_app_kbps.hpp>
|
||||
#include <srs_protocol_kbps.hpp>
|
||||
#include <srs_app_conn.hpp>
|
||||
#include <srs_app_config.hpp>
|
||||
#include <srs_kernel_utility.hpp>
|
||||
|
|
|
@ -39,7 +39,7 @@ using namespace std;
|
|||
#include <srs_app_config.hpp>
|
||||
#include <srs_kernel_utility.hpp>
|
||||
#include <srs_kernel_error.hpp>
|
||||
#include <srs_app_kbps.hpp>
|
||||
#include <srs_protocol_kbps.hpp>
|
||||
#include <srs_app_json.hpp>
|
||||
#include <srs_kernel_stream.hpp>
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <srs_rtmp_buffer.hpp>
|
||||
#include <srs_protocol_buffer.hpp>
|
||||
|
||||
#include <stdlib.h>
|
||||
|
|
@ -25,7 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
#define SRS_PROTOCOL_BUFFER_HPP
|
||||
|
||||
/*
|
||||
#include <srs_rtmp_buffer.hpp>
|
||||
#include <srs_protocol_buffer.hpp>
|
||||
*/
|
||||
|
||||
#include <srs_core.hpp>
|
|
@ -21,12 +21,9 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <srs_app_kbps.hpp>
|
||||
#include <srs_protocol_kbps.hpp>
|
||||
|
||||
#include <srs_kernel_utility.hpp>
|
||||
#include <srs_app_st.hpp>
|
||||
|
||||
#define _SRS_BANDWIDTH_LIMIT_INTERVAL_MS 100
|
||||
|
||||
SrsKbpsSample::SrsKbpsSample()
|
||||
{
|
||||
|
@ -253,41 +250,3 @@ void SrsKbps::sample()
|
|||
os.sample();
|
||||
}
|
||||
|
||||
SrsKbpsLimit::SrsKbpsLimit(SrsKbps* kbps, int limit_kbps)
|
||||
{
|
||||
_kbps = kbps;
|
||||
_limit_kbps = limit_kbps;
|
||||
}
|
||||
|
||||
SrsKbpsLimit::~SrsKbpsLimit()
|
||||
{
|
||||
}
|
||||
|
||||
int SrsKbpsLimit::limit_kbps()
|
||||
{
|
||||
return _limit_kbps;
|
||||
}
|
||||
|
||||
void SrsKbpsLimit::recv_limit()
|
||||
{
|
||||
_kbps->sample();
|
||||
|
||||
while (_kbps->get_recv_kbps() > _limit_kbps) {
|
||||
_kbps->sample();
|
||||
|
||||
st_usleep(_SRS_BANDWIDTH_LIMIT_INTERVAL_MS * 1000);
|
||||
}
|
||||
}
|
||||
|
||||
void SrsKbpsLimit::send_limit()
|
||||
{
|
||||
_kbps->sample();
|
||||
|
||||
while (_kbps->get_send_kbps() > _limit_kbps) {
|
||||
_kbps->sample();
|
||||
|
||||
st_usleep(_SRS_BANDWIDTH_LIMIT_INTERVAL_MS * 1000);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -21,11 +21,11 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef SRS_APP_KBPS_HPP
|
||||
#define SRS_APP_KBPS_HPP
|
||||
#ifndef SRS_PROTOCOL_KBPS_HPP
|
||||
#define SRS_PROTOCOL_KBPS_HPP
|
||||
|
||||
/*
|
||||
#include <srs_app_kbps.hpp>
|
||||
#include <srs_protocol_kbps.hpp>
|
||||
*/
|
||||
|
||||
#include <srs_core.hpp>
|
||||
|
@ -234,30 +234,4 @@ public:
|
|||
virtual void sample();
|
||||
};
|
||||
|
||||
/**
|
||||
* the kbps limit, if exceed the kbps, slow down.
|
||||
*/
|
||||
class SrsKbpsLimit
|
||||
{
|
||||
private:
|
||||
int _limit_kbps;
|
||||
SrsKbps* _kbps;
|
||||
public:
|
||||
SrsKbpsLimit(SrsKbps* kbps, int limit_kbps);
|
||||
virtual ~SrsKbpsLimit();
|
||||
public:
|
||||
/**
|
||||
* get the system limit kbps.
|
||||
*/
|
||||
virtual int limit_kbps();
|
||||
/**
|
||||
* limit the recv bandwidth.
|
||||
*/
|
||||
virtual void recv_limit();
|
||||
/**
|
||||
* limit the send bandwidth.
|
||||
*/
|
||||
virtual void send_limit();
|
||||
};
|
||||
|
||||
#endif
|
|
@ -28,7 +28,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
#include <srs_kernel_stream.hpp>
|
||||
#include <srs_core_autofree.hpp>
|
||||
#include <srs_kernel_utility.hpp>
|
||||
#include <srs_rtmp_buffer.hpp>
|
||||
#include <srs_protocol_buffer.hpp>
|
||||
#include <srs_rtmp_utility.hpp>
|
||||
|
||||
// for srs-librtmp, @see https://github.com/simple-rtmp-server/srs/issues/213
|
||||
|
|
|
@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
|
||||
#include <string>
|
||||
#include <srs_kernel_file.hpp>
|
||||
#include <srs_rtmp_buffer.hpp>
|
||||
#include <srs_protocol_buffer.hpp>
|
||||
|
||||
class MockBufferReader: public ISrsBufferReader
|
||||
{
|
||||
|
|
|
@ -34,7 +34,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
|
||||
#include <srs_rtmp_sdk.hpp>
|
||||
#include <srs_rtmp_handshake.hpp>
|
||||
#include <srs_rtmp_buffer.hpp>
|
||||
#include <srs_protocol_buffer.hpp>
|
||||
|
||||
#ifdef SRS_AUTO_SSL
|
||||
using namespace _srs_internal;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue