mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
merge code
This commit is contained in:
commit
76fa3e91bf
8 changed files with 3751 additions and 3751 deletions
1503
trunk/src/core/srs_core_client.cpp
Executable file → Normal file
1503
trunk/src/core/srs_core_client.cpp
Executable file → Normal file
File diff suppressed because it is too large
Load diff
182
trunk/src/core/srs_core_client.hpp
Executable file → Normal file
182
trunk/src/core/srs_core_client.hpp
Executable file → Normal file
|
@ -1,91 +1,91 @@
|
||||||
/*
|
/*
|
||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
|
|
||||||
Copyright (c) 2013-2014 winlin
|
Copyright (c) 2013-2014 winlin
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
this software and associated documentation files (the "Software"), to deal in
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
the Software without restriction, including without limitation the rights to
|
the Software without restriction, including without limitation the rights to
|
||||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||||
subject to the following conditions:
|
subject to the following conditions:
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
The above copyright notice and this permission notice shall be included in all
|
||||||
copies or substantial portions of the Software.
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
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.
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef SRS_CORE_CLIENT_HPP
|
#ifndef SRS_CORE_CLIENT_HPP
|
||||||
#define SRS_CORE_CLIENT_HPP
|
#define SRS_CORE_CLIENT_HPP
|
||||||
|
|
||||||
/*
|
/*
|
||||||
#include <srs_core_client.hpp>
|
#include <srs_core_client.hpp>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <srs_core.hpp>
|
#include <srs_core.hpp>
|
||||||
|
|
||||||
#include <srs_core_conn.hpp>
|
#include <srs_core_conn.hpp>
|
||||||
#include <srs_core_reload.hpp>
|
#include <srs_core_reload.hpp>
|
||||||
|
|
||||||
class SrsRtmp;
|
class SrsRtmp;
|
||||||
class SrsRequest;
|
class SrsRequest;
|
||||||
class SrsResponse;
|
class SrsResponse;
|
||||||
class SrsSource;
|
class SrsSource;
|
||||||
class SrsRefer;
|
class SrsRefer;
|
||||||
class SrsConsumer;
|
class SrsConsumer;
|
||||||
class SrsCommonMessage;
|
class SrsCommonMessage;
|
||||||
#ifdef SRS_HTTP
|
#ifdef SRS_HTTP
|
||||||
class SrsHttpHooks;
|
class SrsHttpHooks;
|
||||||
#endif
|
#endif
|
||||||
class SrsBandwidth;
|
class SrsBandwidth;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* the client provides the main logic control for RTMP clients.
|
* the client provides the main logic control for RTMP clients.
|
||||||
*/
|
*/
|
||||||
class SrsClient : public SrsConnection, public ISrsReloadHandler
|
class SrsClient : public SrsConnection, public ISrsReloadHandler
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
char* ip;
|
char* ip;
|
||||||
SrsRequest* req;
|
SrsRequest* req;
|
||||||
SrsResponse* res;
|
SrsResponse* res;
|
||||||
SrsRtmp* rtmp;
|
SrsRtmp* rtmp;
|
||||||
SrsRefer* refer;
|
SrsRefer* refer;
|
||||||
#ifdef SRS_HTTP
|
#ifdef SRS_HTTP
|
||||||
SrsHttpHooks* http_hooks;
|
SrsHttpHooks* http_hooks;
|
||||||
#endif
|
#endif
|
||||||
SrsBandwidth* bandwidth;
|
SrsBandwidth* bandwidth;
|
||||||
public:
|
public:
|
||||||
SrsClient(SrsServer* srs_server, st_netfd_t client_stfd);
|
SrsClient(SrsServer* srs_server, st_netfd_t client_stfd);
|
||||||
virtual ~SrsClient();
|
virtual ~SrsClient();
|
||||||
protected:
|
protected:
|
||||||
virtual int do_cycle();
|
virtual int do_cycle();
|
||||||
// interface ISrsReloadHandler
|
// interface ISrsReloadHandler
|
||||||
public:
|
public:
|
||||||
virtual int on_reload_vhost_removed(std::string vhost);
|
virtual int on_reload_vhost_removed(std::string vhost);
|
||||||
private:
|
private:
|
||||||
// when valid and connected to vhost/app, service the client.
|
// when valid and connected to vhost/app, service the client.
|
||||||
virtual int service_cycle();
|
virtual int service_cycle();
|
||||||
// stream(play/publish) service cycle, identify client first.
|
// stream(play/publish) service cycle, identify client first.
|
||||||
virtual int stream_service_cycle();
|
virtual int stream_service_cycle();
|
||||||
virtual int check_vhost();
|
virtual int check_vhost();
|
||||||
virtual int playing(SrsSource* source);
|
virtual int playing(SrsSource* source);
|
||||||
virtual int publish(SrsSource* source, bool is_fmle);
|
virtual int publish(SrsSource* source, bool is_fmle);
|
||||||
virtual int process_publish_message(SrsSource* source, SrsCommonMessage* msg, bool is_fmle);
|
virtual int process_publish_message(SrsSource* source, SrsCommonMessage* msg, bool is_fmle);
|
||||||
virtual int get_peer_ip();
|
virtual int get_peer_ip();
|
||||||
virtual int process_play_control_msg(SrsConsumer* consumer, SrsCommonMessage* msg);
|
virtual int process_play_control_msg(SrsConsumer* consumer, SrsCommonMessage* msg);
|
||||||
private:
|
private:
|
||||||
virtual int on_connect();
|
virtual int on_connect();
|
||||||
virtual void on_close();
|
virtual void on_close();
|
||||||
virtual int on_publish();
|
virtual int on_publish();
|
||||||
virtual void on_unpublish();
|
virtual void on_unpublish();
|
||||||
virtual int on_play();
|
virtual int on_play();
|
||||||
virtual void on_stop();
|
virtual void on_stop();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
59
trunk/src/core/srs_core_error.cpp
Executable file → Normal file
59
trunk/src/core/srs_core_error.cpp
Executable file → Normal file
|
@ -1,29 +1,30 @@
|
||||||
/*
|
/*
|
||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
|
|
||||||
Copyright (c) 2013-2014 winlin
|
Copyright (c) 2013-2014 winlin
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
this software and associated documentation files (the "Software"), to deal in
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
the Software without restriction, including without limitation the rights to
|
the Software without restriction, including without limitation the rights to
|
||||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||||
subject to the following conditions:
|
subject to the following conditions:
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
The above copyright notice and this permission notice shall be included in all
|
||||||
copies or substantial portions of the Software.
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
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.
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <srs_core_error.hpp>
|
#include <srs_core_error.hpp>
|
||||||
|
|
||||||
bool srs_is_system_control_error(int error_code)
|
bool srs_is_system_control_error(int error_code)
|
||||||
{
|
{
|
||||||
return error_code == ERROR_CONTROL_RTMP_CLOSE;
|
return error_code == ERROR_CONTROL_RTMP_CLOSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
320
trunk/src/core/srs_core_error.hpp
Executable file → Normal file
320
trunk/src/core/srs_core_error.hpp
Executable file → Normal file
|
@ -1,160 +1,160 @@
|
||||||
/*
|
/*
|
||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
|
|
||||||
Copyright (c) 2013-2014 winlin
|
Copyright (c) 2013-2014 winlin
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
this software and associated documentation files (the "Software"), to deal in
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
the Software without restriction, including without limitation the rights to
|
the Software without restriction, including without limitation the rights to
|
||||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||||
subject to the following conditions:
|
subject to the following conditions:
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
The above copyright notice and this permission notice shall be included in all
|
||||||
copies or substantial portions of the Software.
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
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.
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef SRS_CORE_ERROR_HPP
|
#ifndef SRS_CORE_ERROR_HPP
|
||||||
#define SRS_CORE_ERROR_HPP
|
#define SRS_CORE_ERROR_HPP
|
||||||
|
|
||||||
/*
|
/*
|
||||||
#include <srs_core_error.hpp>
|
#include <srs_core_error.hpp>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <srs_core.hpp>
|
#include <srs_core.hpp>
|
||||||
|
|
||||||
#define ERROR_SUCCESS 0
|
#define ERROR_SUCCESS 0
|
||||||
|
|
||||||
#define ERROR_ST_SET_EPOLL 100
|
#define ERROR_ST_SET_EPOLL 100
|
||||||
#define ERROR_ST_INITIALIZE 101
|
#define ERROR_ST_INITIALIZE 101
|
||||||
#define ERROR_ST_OPEN_SOCKET 102
|
#define ERROR_ST_OPEN_SOCKET 102
|
||||||
#define ERROR_ST_CREATE_LISTEN_THREAD 103
|
#define ERROR_ST_CREATE_LISTEN_THREAD 103
|
||||||
#define ERROR_ST_CREATE_CYCLE_THREAD 104
|
#define ERROR_ST_CREATE_CYCLE_THREAD 104
|
||||||
#define ERROR_ST_CONNECT 105
|
#define ERROR_ST_CONNECT 105
|
||||||
|
|
||||||
#define ERROR_SOCKET_CREATE 200
|
#define ERROR_SOCKET_CREATE 200
|
||||||
#define ERROR_SOCKET_SETREUSE 201
|
#define ERROR_SOCKET_SETREUSE 201
|
||||||
#define ERROR_SOCKET_BIND 202
|
#define ERROR_SOCKET_BIND 202
|
||||||
#define ERROR_SOCKET_LISTEN 203
|
#define ERROR_SOCKET_LISTEN 203
|
||||||
#define ERROR_SOCKET_CLOSED 204
|
#define ERROR_SOCKET_CLOSED 204
|
||||||
#define ERROR_SOCKET_GET_PEER_NAME 205
|
#define ERROR_SOCKET_GET_PEER_NAME 205
|
||||||
#define ERROR_SOCKET_GET_PEER_IP 206
|
#define ERROR_SOCKET_GET_PEER_IP 206
|
||||||
#define ERROR_SOCKET_READ 207
|
#define ERROR_SOCKET_READ 207
|
||||||
#define ERROR_SOCKET_READ_FULLY 208
|
#define ERROR_SOCKET_READ_FULLY 208
|
||||||
#define ERROR_SOCKET_WRITE 209
|
#define ERROR_SOCKET_WRITE 209
|
||||||
#define ERROR_SOCKET_WAIT 210
|
#define ERROR_SOCKET_WAIT 210
|
||||||
#define ERROR_SOCKET_TIMEOUT 211
|
#define ERROR_SOCKET_TIMEOUT 211
|
||||||
#define ERROR_SOCKET_GET_LOCAL_IP 212
|
#define ERROR_SOCKET_GET_LOCAL_IP 212
|
||||||
|
|
||||||
#define ERROR_RTMP_PLAIN_REQUIRED 300
|
#define ERROR_RTMP_PLAIN_REQUIRED 300
|
||||||
#define ERROR_RTMP_CHUNK_START 301
|
#define ERROR_RTMP_CHUNK_START 301
|
||||||
#define ERROR_RTMP_MSG_INVLIAD_SIZE 302
|
#define ERROR_RTMP_MSG_INVLIAD_SIZE 302
|
||||||
#define ERROR_RTMP_AMF0_DECODE 303
|
#define ERROR_RTMP_AMF0_DECODE 303
|
||||||
#define ERROR_RTMP_AMF0_INVALID 304
|
#define ERROR_RTMP_AMF0_INVALID 304
|
||||||
#define ERROR_RTMP_REQ_CONNECT 305
|
#define ERROR_RTMP_REQ_CONNECT 305
|
||||||
#define ERROR_RTMP_REQ_TCURL 306
|
#define ERROR_RTMP_REQ_TCURL 306
|
||||||
#define ERROR_RTMP_MESSAGE_DECODE 307
|
#define ERROR_RTMP_MESSAGE_DECODE 307
|
||||||
#define ERROR_RTMP_MESSAGE_ENCODE 308
|
#define ERROR_RTMP_MESSAGE_ENCODE 308
|
||||||
#define ERROR_RTMP_AMF0_ENCODE 309
|
#define ERROR_RTMP_AMF0_ENCODE 309
|
||||||
#define ERROR_RTMP_CHUNK_SIZE 310
|
#define ERROR_RTMP_CHUNK_SIZE 310
|
||||||
#define ERROR_RTMP_TRY_SIMPLE_HS 311
|
#define ERROR_RTMP_TRY_SIMPLE_HS 311
|
||||||
#define ERROR_RTMP_CH_SCHEMA 312
|
#define ERROR_RTMP_CH_SCHEMA 312
|
||||||
#define ERROR_RTMP_PACKET_SIZE 313
|
#define ERROR_RTMP_PACKET_SIZE 313
|
||||||
#define ERROR_RTMP_VHOST_NOT_FOUND 314
|
#define ERROR_RTMP_VHOST_NOT_FOUND 314
|
||||||
#define ERROR_RTMP_ACCESS_DENIED 315
|
#define ERROR_RTMP_ACCESS_DENIED 315
|
||||||
#define ERROR_RTMP_HANDSHAKE 316
|
#define ERROR_RTMP_HANDSHAKE 316
|
||||||
#define ERROR_RTMP_NO_REQUEST 317
|
#define ERROR_RTMP_NO_REQUEST 317
|
||||||
|
|
||||||
#define ERROR_SYSTEM_STREAM_INIT 400
|
#define ERROR_SYSTEM_STREAM_INIT 400
|
||||||
#define ERROR_SYSTEM_PACKET_INVALID 401
|
#define ERROR_SYSTEM_PACKET_INVALID 401
|
||||||
#define ERROR_SYSTEM_CLIENT_INVALID 402
|
#define ERROR_SYSTEM_CLIENT_INVALID 402
|
||||||
#define ERROR_SYSTEM_ASSERT_FAILED 403
|
#define ERROR_SYSTEM_ASSERT_FAILED 403
|
||||||
#define ERROR_SYSTEM_SIZE_NEGATIVE 404
|
#define ERROR_SYSTEM_SIZE_NEGATIVE 404
|
||||||
#define ERROR_SYSTEM_CONFIG_INVALID 405
|
#define ERROR_SYSTEM_CONFIG_INVALID 405
|
||||||
#define ERROR_SYSTEM_CONFIG_DIRECTIVE 406
|
#define ERROR_SYSTEM_CONFIG_DIRECTIVE 406
|
||||||
#define ERROR_SYSTEM_CONFIG_BLOCK_START 407
|
#define ERROR_SYSTEM_CONFIG_BLOCK_START 407
|
||||||
#define ERROR_SYSTEM_CONFIG_BLOCK_END 408
|
#define ERROR_SYSTEM_CONFIG_BLOCK_END 408
|
||||||
#define ERROR_SYSTEM_CONFIG_EOF 409
|
#define ERROR_SYSTEM_CONFIG_EOF 409
|
||||||
#define ERROR_SYSTEM_STREAM_BUSY 410
|
#define ERROR_SYSTEM_STREAM_BUSY 410
|
||||||
#define ERROR_SYSTEM_IP_INVALID 411
|
#define ERROR_SYSTEM_IP_INVALID 411
|
||||||
#define ERROR_SYSTEM_FORWARD_LOOP 412
|
#define ERROR_SYSTEM_FORWARD_LOOP 412
|
||||||
#define ERROR_SYSTEM_WAITPID 413
|
#define ERROR_SYSTEM_WAITPID 413
|
||||||
#define ERROR_SYSTEM_BANDWIDTH_KEY 414
|
#define ERROR_SYSTEM_BANDWIDTH_KEY 414
|
||||||
#define ERROR_SYSTEM_BANDWIDTH_DENIED 415
|
#define ERROR_SYSTEM_BANDWIDTH_DENIED 415
|
||||||
|
|
||||||
// see librtmp.
|
// see librtmp.
|
||||||
// failed when open ssl create the dh
|
// failed when open ssl create the dh
|
||||||
#define ERROR_OpenSslCreateDH 500
|
#define ERROR_OpenSslCreateDH 500
|
||||||
// failed when open ssl create the Private key.
|
// failed when open ssl create the Private key.
|
||||||
#define ERROR_OpenSslCreateP 501
|
#define ERROR_OpenSslCreateP 501
|
||||||
// when open ssl create G.
|
// when open ssl create G.
|
||||||
#define ERROR_OpenSslCreateG 502
|
#define ERROR_OpenSslCreateG 502
|
||||||
// when open ssl parse P1024
|
// when open ssl parse P1024
|
||||||
#define ERROR_OpenSslParseP1024 503
|
#define ERROR_OpenSslParseP1024 503
|
||||||
// when open ssl set G
|
// when open ssl set G
|
||||||
#define ERROR_OpenSslSetG 504
|
#define ERROR_OpenSslSetG 504
|
||||||
// when open ssl generate DHKeys
|
// when open ssl generate DHKeys
|
||||||
#define ERROR_OpenSslGenerateDHKeys 505
|
#define ERROR_OpenSslGenerateDHKeys 505
|
||||||
// when open ssl share key already computed.
|
// when open ssl share key already computed.
|
||||||
#define ERROR_OpenSslShareKeyComputed 506
|
#define ERROR_OpenSslShareKeyComputed 506
|
||||||
// when open ssl get shared key size.
|
// when open ssl get shared key size.
|
||||||
#define ERROR_OpenSslGetSharedKeySize 507
|
#define ERROR_OpenSslGetSharedKeySize 507
|
||||||
// when open ssl get peer public key.
|
// when open ssl get peer public key.
|
||||||
#define ERROR_OpenSslGetPeerPublicKey 508
|
#define ERROR_OpenSslGetPeerPublicKey 508
|
||||||
// when open ssl compute shared key.
|
// when open ssl compute shared key.
|
||||||
#define ERROR_OpenSslComputeSharedKey 509
|
#define ERROR_OpenSslComputeSharedKey 509
|
||||||
// when open ssl is invalid DH state.
|
// when open ssl is invalid DH state.
|
||||||
#define ERROR_OpenSslInvalidDHState 510
|
#define ERROR_OpenSslInvalidDHState 510
|
||||||
// when open ssl copy key
|
// when open ssl copy key
|
||||||
#define ERROR_OpenSslCopyKey 511
|
#define ERROR_OpenSslCopyKey 511
|
||||||
// when open ssl sha256 digest key invalid size.
|
// when open ssl sha256 digest key invalid size.
|
||||||
#define ERROR_OpenSslSha256DigestSize 512
|
#define ERROR_OpenSslSha256DigestSize 512
|
||||||
|
|
||||||
#define ERROR_HLS_METADATA 600
|
#define ERROR_HLS_METADATA 600
|
||||||
#define ERROR_HLS_DECODE_ERROR 601
|
#define ERROR_HLS_DECODE_ERROR 601
|
||||||
#define ERROR_HLS_CREATE_DIR 602
|
#define ERROR_HLS_CREATE_DIR 602
|
||||||
#define ERROR_HLS_OPEN_FAILED 603
|
#define ERROR_HLS_OPEN_FAILED 603
|
||||||
#define ERROR_HLS_WRITE_FAILED 604
|
#define ERROR_HLS_WRITE_FAILED 604
|
||||||
#define ERROR_HLS_AAC_FRAME_LENGTH 605
|
#define ERROR_HLS_AAC_FRAME_LENGTH 605
|
||||||
#define ERROR_HLS_AVC_SAMPLE_SIZE 606
|
#define ERROR_HLS_AVC_SAMPLE_SIZE 606
|
||||||
|
|
||||||
#define ERROR_ENCODER_VCODEC 700
|
#define ERROR_ENCODER_VCODEC 700
|
||||||
#define ERROR_ENCODER_OUTPUT 701
|
#define ERROR_ENCODER_OUTPUT 701
|
||||||
#define ERROR_ENCODER_ACHANNELS 702
|
#define ERROR_ENCODER_ACHANNELS 702
|
||||||
#define ERROR_ENCODER_ASAMPLE_RATE 703
|
#define ERROR_ENCODER_ASAMPLE_RATE 703
|
||||||
#define ERROR_ENCODER_ABITRATE 704
|
#define ERROR_ENCODER_ABITRATE 704
|
||||||
#define ERROR_ENCODER_ACODEC 705
|
#define ERROR_ENCODER_ACODEC 705
|
||||||
#define ERROR_ENCODER_VPRESET 706
|
#define ERROR_ENCODER_VPRESET 706
|
||||||
#define ERROR_ENCODER_VPROFILE 707
|
#define ERROR_ENCODER_VPROFILE 707
|
||||||
#define ERROR_ENCODER_VTHREADS 708
|
#define ERROR_ENCODER_VTHREADS 708
|
||||||
#define ERROR_ENCODER_VHEIGHT 709
|
#define ERROR_ENCODER_VHEIGHT 709
|
||||||
#define ERROR_ENCODER_VWIDTH 710
|
#define ERROR_ENCODER_VWIDTH 710
|
||||||
#define ERROR_ENCODER_VFPS 711
|
#define ERROR_ENCODER_VFPS 711
|
||||||
#define ERROR_ENCODER_VBITRATE 712
|
#define ERROR_ENCODER_VBITRATE 712
|
||||||
#define ERROR_ENCODER_FORK 713
|
#define ERROR_ENCODER_FORK 713
|
||||||
#define ERROR_ENCODER_LOOP 714
|
#define ERROR_ENCODER_LOOP 714
|
||||||
#define ERROR_ENCODER_OPEN 715
|
#define ERROR_ENCODER_OPEN 715
|
||||||
#define ERROR_ENCODER_DUP2 716
|
#define ERROR_ENCODER_DUP2 716
|
||||||
|
|
||||||
#define ERROR_HTTP_PARSE_URI 800
|
#define ERROR_HTTP_PARSE_URI 800
|
||||||
#define ERROR_HTTP_DATA_INVLIAD 801
|
#define ERROR_HTTP_DATA_INVLIAD 801
|
||||||
#define ERROR_HTTP_PARSE_HEADER 802
|
#define ERROR_HTTP_PARSE_HEADER 802
|
||||||
|
|
||||||
// system control message,
|
// system control message,
|
||||||
// not an error, but special control logic.
|
// not an error, but special control logic.
|
||||||
// sys ctl: rtmp close stream, support replay.
|
// sys ctl: rtmp close stream, support replay.
|
||||||
#define ERROR_CONTROL_RTMP_CLOSE 900
|
#define ERROR_CONTROL_RTMP_CLOSE 900
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* whether the error code is an system control error.
|
* whether the error code is an system control error.
|
||||||
*/
|
*/
|
||||||
extern bool srs_is_system_control_error(int error_code);
|
extern bool srs_is_system_control_error(int error_code);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
1
trunk/src/core/srs_core_protocol.cpp
Executable file → Normal file
1
trunk/src/core/srs_core_protocol.cpp
Executable file → Normal file
|
@ -3365,4 +3365,3 @@ int SrsUserControlPacket::encode_packet(SrsStream* stream)
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
2512
trunk/src/core/srs_core_protocol.hpp
Executable file → Normal file
2512
trunk/src/core/srs_core_protocol.hpp
Executable file → Normal file
File diff suppressed because it is too large
Load diff
2457
trunk/src/core/srs_core_rtmp.cpp
Executable file → Normal file
2457
trunk/src/core/srs_core_rtmp.cpp
Executable file → Normal file
File diff suppressed because it is too large
Load diff
468
trunk/src/core/srs_core_rtmp.hpp
Executable file → Normal file
468
trunk/src/core/srs_core_rtmp.hpp
Executable file → Normal file
|
@ -1,234 +1,234 @@
|
||||||
/*
|
/*
|
||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
|
|
||||||
Copyright (c) 2013-2014 winlin
|
Copyright (c) 2013-2014 winlin
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
this software and associated documentation files (the "Software"), to deal in
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
the Software without restriction, including without limitation the rights to
|
the Software without restriction, including without limitation the rights to
|
||||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||||
subject to the following conditions:
|
subject to the following conditions:
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
The above copyright notice and this permission notice shall be included in all
|
||||||
copies or substantial portions of the Software.
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
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.
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef SRS_CORE_RTMP_HPP
|
#ifndef SRS_CORE_RTMP_HPP
|
||||||
#define SRS_CORE_RTMP_HPP
|
#define SRS_CORE_RTMP_HPP
|
||||||
|
|
||||||
/*
|
/*
|
||||||
#include <srs_core_rtmp.hpp>
|
#include <srs_core_rtmp.hpp>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <srs_core.hpp>
|
#include <srs_core.hpp>
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
class SrsProtocol;
|
class SrsProtocol;
|
||||||
class ISrsMessage;
|
class ISrsMessage;
|
||||||
class SrsCommonMessage;
|
class SrsCommonMessage;
|
||||||
class SrsCreateStreamPacket;
|
class SrsCreateStreamPacket;
|
||||||
class SrsFMLEStartPacket;
|
class SrsFMLEStartPacket;
|
||||||
class SrsPublishPacket;
|
class SrsPublishPacket;
|
||||||
class SrsSharedPtrMessage;
|
class SrsSharedPtrMessage;
|
||||||
class SrsOnMetaDataPacket;
|
class SrsOnMetaDataPacket;
|
||||||
class SrsPlayPacket;
|
class SrsPlayPacket;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* the original request from client.
|
* the original request from client.
|
||||||
*/
|
*/
|
||||||
struct SrsRequest
|
struct SrsRequest
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* tcUrl: rtmp://request_vhost:port/app/stream
|
* tcUrl: rtmp://request_vhost:port/app/stream
|
||||||
* support pass vhost in query string, such as:
|
* support pass vhost in query string, such as:
|
||||||
* rtmp://ip:port/app?vhost=request_vhost/stream
|
* rtmp://ip:port/app?vhost=request_vhost/stream
|
||||||
* rtmp://ip:port/app...vhost...request_vhost/stream
|
* rtmp://ip:port/app...vhost...request_vhost/stream
|
||||||
*/
|
*/
|
||||||
std::string tcUrl;
|
std::string tcUrl;
|
||||||
std::string pageUrl;
|
std::string pageUrl;
|
||||||
std::string swfUrl;
|
std::string swfUrl;
|
||||||
double objectEncoding;
|
double objectEncoding;
|
||||||
|
|
||||||
std::string schema;
|
std::string schema;
|
||||||
std::string vhost;
|
std::string vhost;
|
||||||
std::string port;
|
std::string port;
|
||||||
std::string app;
|
std::string app;
|
||||||
std::string stream;
|
std::string stream;
|
||||||
|
|
||||||
SrsRequest();
|
SrsRequest();
|
||||||
virtual ~SrsRequest();
|
virtual ~SrsRequest();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* deep copy the request, for source to use it to support reload,
|
* deep copy the request, for source to use it to support reload,
|
||||||
* for when initialize the source, the request is valid,
|
* for when initialize the source, the request is valid,
|
||||||
* when reload it, the request maybe invalid, so need to copy it.
|
* when reload it, the request maybe invalid, so need to copy it.
|
||||||
*/
|
*/
|
||||||
virtual SrsRequest* copy();
|
virtual SrsRequest* copy();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* disconvery vhost/app from tcUrl.
|
* disconvery vhost/app from tcUrl.
|
||||||
*/
|
*/
|
||||||
virtual int discovery_app();
|
virtual int discovery_app();
|
||||||
virtual std::string get_stream_url();
|
virtual std::string get_stream_url();
|
||||||
virtual void strip();
|
virtual void strip();
|
||||||
private:
|
private:
|
||||||
std::string& trim(std::string& str, std::string chs);
|
std::string& trim(std::string& str, std::string chs);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* the response to client.
|
* the response to client.
|
||||||
*/
|
*/
|
||||||
struct SrsResponse
|
struct SrsResponse
|
||||||
{
|
{
|
||||||
int stream_id;
|
int stream_id;
|
||||||
|
|
||||||
SrsResponse();
|
SrsResponse();
|
||||||
virtual ~SrsResponse();
|
virtual ~SrsResponse();
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* the rtmp client type.
|
* the rtmp client type.
|
||||||
*/
|
*/
|
||||||
enum SrsClientType
|
enum SrsClientType
|
||||||
{
|
{
|
||||||
SrsClientUnknown,
|
SrsClientUnknown,
|
||||||
SrsClientPlay,
|
SrsClientPlay,
|
||||||
SrsClientFMLEPublish,
|
SrsClientFMLEPublish,
|
||||||
SrsClientFlashPublish,
|
SrsClientFlashPublish,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* implements the client role protocol.
|
* implements the client role protocol.
|
||||||
*/
|
*/
|
||||||
class SrsRtmpClient
|
class SrsRtmpClient
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
SrsProtocol* protocol;
|
SrsProtocol* protocol;
|
||||||
st_netfd_t stfd;
|
st_netfd_t stfd;
|
||||||
public:
|
public:
|
||||||
SrsRtmpClient(st_netfd_t _stfd);
|
SrsRtmpClient(st_netfd_t _stfd);
|
||||||
virtual ~SrsRtmpClient();
|
virtual ~SrsRtmpClient();
|
||||||
public:
|
public:
|
||||||
virtual void set_recv_timeout(int64_t timeout_us);
|
virtual void set_recv_timeout(int64_t timeout_us);
|
||||||
virtual void set_send_timeout(int64_t timeout_us);
|
virtual void set_send_timeout(int64_t timeout_us);
|
||||||
virtual int64_t get_recv_bytes();
|
virtual int64_t get_recv_bytes();
|
||||||
virtual int64_t get_send_bytes();
|
virtual int64_t get_send_bytes();
|
||||||
virtual int get_recv_kbps();
|
virtual int get_recv_kbps();
|
||||||
virtual int get_send_kbps();
|
virtual int get_send_kbps();
|
||||||
virtual int recv_message(SrsCommonMessage** pmsg);
|
virtual int recv_message(SrsCommonMessage** pmsg);
|
||||||
virtual int send_message(ISrsMessage* msg);
|
virtual int send_message(ISrsMessage* msg);
|
||||||
public:
|
public:
|
||||||
virtual int handshake();
|
virtual int handshake();
|
||||||
virtual int connect_app(std::string app, std::string tc_url);
|
virtual int connect_app(std::string app, std::string tc_url);
|
||||||
virtual int create_stream(int& stream_id);
|
virtual int create_stream(int& stream_id);
|
||||||
virtual int play(std::string stream, int stream_id);
|
virtual int play(std::string stream, int stream_id);
|
||||||
virtual int publish(std::string stream, int stream_id);
|
virtual int publish(std::string stream, int stream_id);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* the rtmp provices rtmp-command-protocol services,
|
* the rtmp provices rtmp-command-protocol services,
|
||||||
* a high level protocol, media stream oriented services,
|
* a high level protocol, media stream oriented services,
|
||||||
* such as connect to vhost/app, play stream, get audio/video data.
|
* such as connect to vhost/app, play stream, get audio/video data.
|
||||||
*/
|
*/
|
||||||
class SrsRtmp
|
class SrsRtmp
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
SrsProtocol* protocol;
|
SrsProtocol* protocol;
|
||||||
st_netfd_t stfd;
|
st_netfd_t stfd;
|
||||||
public:
|
public:
|
||||||
SrsRtmp(st_netfd_t client_stfd);
|
SrsRtmp(st_netfd_t client_stfd);
|
||||||
virtual ~SrsRtmp();
|
virtual ~SrsRtmp();
|
||||||
public:
|
public:
|
||||||
virtual SrsProtocol* get_protocol();
|
virtual SrsProtocol* get_protocol();
|
||||||
virtual void set_recv_timeout(int64_t timeout_us);
|
virtual void set_recv_timeout(int64_t timeout_us);
|
||||||
virtual int64_t get_recv_timeout();
|
virtual int64_t get_recv_timeout();
|
||||||
virtual void set_send_timeout(int64_t timeout_us);
|
virtual void set_send_timeout(int64_t timeout_us);
|
||||||
virtual int64_t get_send_timeout();
|
virtual int64_t get_send_timeout();
|
||||||
virtual int64_t get_recv_bytes();
|
virtual int64_t get_recv_bytes();
|
||||||
virtual int64_t get_send_bytes();
|
virtual int64_t get_send_bytes();
|
||||||
virtual int get_recv_kbps();
|
virtual int get_recv_kbps();
|
||||||
virtual int get_send_kbps();
|
virtual int get_send_kbps();
|
||||||
virtual int recv_message(SrsCommonMessage** pmsg);
|
virtual int recv_message(SrsCommonMessage** pmsg);
|
||||||
virtual int send_message(ISrsMessage* msg);
|
virtual int send_message(ISrsMessage* msg);
|
||||||
public:
|
public:
|
||||||
virtual int handshake();
|
virtual int handshake();
|
||||||
virtual int connect_app(SrsRequest* req);
|
virtual int connect_app(SrsRequest* req);
|
||||||
virtual int set_window_ack_size(int ack_size);
|
virtual int set_window_ack_size(int ack_size);
|
||||||
/**
|
/**
|
||||||
* @type: The sender can mark this message hard (0), soft (1), or dynamic (2)
|
* @type: The sender can mark this message hard (0), soft (1), or dynamic (2)
|
||||||
* using the Limit type field.
|
* using the Limit type field.
|
||||||
*/
|
*/
|
||||||
virtual int set_peer_bandwidth(int bandwidth, int type);
|
virtual int set_peer_bandwidth(int bandwidth, int type);
|
||||||
/**
|
/**
|
||||||
* @param server_ip the ip of server.
|
* @param server_ip the ip of server.
|
||||||
*/
|
*/
|
||||||
virtual int response_connect_app(SrsRequest* req, const char* server_ip = NULL);
|
virtual int response_connect_app(SrsRequest* req, const char* server_ip = NULL);
|
||||||
virtual void response_connect_reject(SrsRequest* req, const char* desc);
|
virtual void response_connect_reject(SrsRequest* req, const char* desc);
|
||||||
virtual int on_bw_done();
|
virtual int on_bw_done();
|
||||||
/**
|
/**
|
||||||
* recv some message to identify the client.
|
* recv some message to identify the client.
|
||||||
* @stream_id, client will createStream to play or publish by flash,
|
* @stream_id, client will createStream to play or publish by flash,
|
||||||
* the stream_id used to response the createStream request.
|
* the stream_id used to response the createStream request.
|
||||||
* @type, output the client type.
|
* @type, output the client type.
|
||||||
*/
|
*/
|
||||||
virtual int identify_client(int stream_id, SrsClientType& type, std::string& stream_name);
|
virtual int identify_client(int stream_id, SrsClientType& type, std::string& stream_name);
|
||||||
/**
|
/**
|
||||||
* set the chunk size when client type identified.
|
* set the chunk size when client type identified.
|
||||||
*/
|
*/
|
||||||
virtual int set_chunk_size(int chunk_size);
|
virtual int set_chunk_size(int chunk_size);
|
||||||
/**
|
/**
|
||||||
* when client type is play, response with packets:
|
* when client type is play, response with packets:
|
||||||
* StreamBegin,
|
* StreamBegin,
|
||||||
* onStatus(NetStream.Play.Reset), onStatus(NetStream.Play.Start).,
|
* onStatus(NetStream.Play.Reset), onStatus(NetStream.Play.Start).,
|
||||||
* |RtmpSampleAccess(false, false),
|
* |RtmpSampleAccess(false, false),
|
||||||
* onStatus(NetStream.Data.Start).
|
* onStatus(NetStream.Data.Start).
|
||||||
*/
|
*/
|
||||||
virtual int start_play(int stream_id);
|
virtual int start_play(int stream_id);
|
||||||
/**
|
/**
|
||||||
* when client(type is play) send pause message,
|
* when client(type is play) send pause message,
|
||||||
* if is_pause, response the following packets:
|
* if is_pause, response the following packets:
|
||||||
* onStatus(NetStream.Pause.Notify)
|
* onStatus(NetStream.Pause.Notify)
|
||||||
* StreamEOF
|
* StreamEOF
|
||||||
* if not is_pause, response the following packets:
|
* if not is_pause, response the following packets:
|
||||||
* onStatus(NetStream.Unpause.Notify)
|
* onStatus(NetStream.Unpause.Notify)
|
||||||
* StreamBegin
|
* StreamBegin
|
||||||
*/
|
*/
|
||||||
virtual int on_play_client_pause(int stream_id, bool is_pause);
|
virtual int on_play_client_pause(int stream_id, bool is_pause);
|
||||||
/**
|
/**
|
||||||
* when client type is publish, response with packets:
|
* when client type is publish, response with packets:
|
||||||
* releaseStream response
|
* releaseStream response
|
||||||
* FCPublish
|
* FCPublish
|
||||||
* FCPublish response
|
* FCPublish response
|
||||||
* createStream response
|
* createStream response
|
||||||
* onFCPublish(NetStream.Publish.Start)
|
* onFCPublish(NetStream.Publish.Start)
|
||||||
* onStatus(NetStream.Publish.Start)
|
* onStatus(NetStream.Publish.Start)
|
||||||
*/
|
*/
|
||||||
virtual int start_fmle_publish(int stream_id);
|
virtual int start_fmle_publish(int stream_id);
|
||||||
/**
|
/**
|
||||||
* process the FMLE unpublish event.
|
* process the FMLE unpublish event.
|
||||||
* @unpublish_tid the unpublish request transaction id.
|
* @unpublish_tid the unpublish request transaction id.
|
||||||
*/
|
*/
|
||||||
virtual int fmle_unpublish(int stream_id, double unpublish_tid);
|
virtual int fmle_unpublish(int stream_id, double unpublish_tid);
|
||||||
/**
|
/**
|
||||||
* when client type is publish, response with packets:
|
* when client type is publish, response with packets:
|
||||||
* onStatus(NetStream.Publish.Start)
|
* onStatus(NetStream.Publish.Start)
|
||||||
*/
|
*/
|
||||||
virtual int start_flash_publish(int stream_id);
|
virtual int start_flash_publish(int stream_id);
|
||||||
private:
|
private:
|
||||||
virtual int identify_create_stream_client(SrsCreateStreamPacket* req, int stream_id, SrsClientType& type, std::string& stream_name);
|
virtual int identify_create_stream_client(SrsCreateStreamPacket* req, int stream_id, SrsClientType& type, std::string& stream_name);
|
||||||
virtual int identify_fmle_publish_client(SrsFMLEStartPacket* req, SrsClientType& type, std::string& stream_name);
|
virtual int identify_fmle_publish_client(SrsFMLEStartPacket* req, SrsClientType& type, std::string& stream_name);
|
||||||
virtual int identify_flash_publish_client(SrsPublishPacket* req, SrsClientType& type, std::string& stream_name);
|
virtual int identify_flash_publish_client(SrsPublishPacket* req, SrsClientType& type, std::string& stream_name);
|
||||||
private:
|
private:
|
||||||
virtual int identify_play_client(SrsPlayPacket* req, SrsClientType& type, std::string& stream_name);
|
virtual int identify_play_client(SrsPlayPacket* req, SrsClientType& type, std::string& stream_name);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue