mirror of
https://github.com/ossrs/srs.git
synced 2025-02-13 03:41:55 +00:00
for bug #251, remove the SrsMessage, use SrsCommonMessage or SrsSharedPtrMessage. 2.0.60
This commit is contained in:
parent
528ae1e9b1
commit
f9b9a60de7
21 changed files with 502 additions and 509 deletions
|
@ -94,12 +94,12 @@ int _srs_expect_bandwidth_packet(SrsRtmpServer* rtmp, _CheckPacketType pfn)
|
|||
int ret = ERROR_SUCCESS;
|
||||
|
||||
while (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
SrsBandwidthPacket* pkt = NULL;
|
||||
if ((ret = rtmp->expect_message<SrsBandwidthPacket>(&msg, &pkt)) != ERROR_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
SrsAutoFree(SrsBandwidthPacket, pkt);
|
||||
srs_info("get bwtc message success.");
|
||||
|
||||
|
@ -380,12 +380,12 @@ int SrsBandwidth::publish_checking(SrsBandwidthSample* sample, SrsKbpsLimit* lim
|
|||
srs_update_system_time_ms();
|
||||
int64_t starttime = srs_get_system_time_ms();
|
||||
while ((srs_get_system_time_ms() - starttime) < sample->duration_ms) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
SrsBandwidthPacket* pkt = NULL;
|
||||
if ((ret = _rtmp->expect_message<SrsBandwidthPacket>(&msg, &pkt)) != ERROR_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
SrsAutoFree(SrsBandwidthPacket, pkt);
|
||||
srs_info("get publish message success.");
|
||||
|
||||
|
|
|
@ -183,7 +183,7 @@ int SrsEdgeIngester::ingest()
|
|||
}
|
||||
|
||||
// read from client.
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
if ((ret = client->recv_message(&msg)) != ERROR_SUCCESS) {
|
||||
if (!srs_is_client_gracefully_close(ret)) {
|
||||
srs_error("pull origin server message failed. ret=%d", ret);
|
||||
|
@ -193,7 +193,7 @@ int SrsEdgeIngester::ingest()
|
|||
srs_verbose("edge loop recv message. ret=%d", ret);
|
||||
|
||||
srs_assert(msg);
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
|
||||
if ((ret = process_publish_message(msg)) != ERROR_SUCCESS) {
|
||||
return ret;
|
||||
|
@ -256,7 +256,7 @@ int SrsEdgeIngester::connect_app(string ep_server, string ep_port)
|
|||
return ret;
|
||||
}
|
||||
|
||||
int SrsEdgeIngester::process_publish_message(SrsMessage* msg)
|
||||
int SrsEdgeIngester::process_publish_message(SrsCommonMessage* msg)
|
||||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
|
@ -485,7 +485,7 @@ int SrsEdgeForwarder::cycle()
|
|||
|
||||
// read from client.
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ret = client->recv_message(&msg);
|
||||
|
||||
srs_verbose("edge loop recv message. ret=%d", ret);
|
||||
|
@ -534,7 +534,7 @@ int SrsEdgeForwarder::cycle()
|
|||
return ret;
|
||||
}
|
||||
|
||||
int SrsEdgeForwarder::proxy(SrsMessage* msg)
|
||||
int SrsEdgeForwarder::proxy(SrsCommonMessage* msg)
|
||||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
|
@ -825,7 +825,7 @@ int SrsPublishEdge::on_client_publish()
|
|||
return ret;
|
||||
}
|
||||
|
||||
int SrsPublishEdge::on_proxy_publish(SrsMessage* msg)
|
||||
int SrsPublishEdge::on_proxy_publish(SrsCommonMessage* msg)
|
||||
{
|
||||
return forwarder->proxy(msg);
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@ class SrsRequest;
|
|||
class SrsPlayEdge;
|
||||
class SrsPublishEdge;
|
||||
class SrsRtmpClient;
|
||||
class SrsMessage;
|
||||
class SrsCommonMessage;
|
||||
class SrsMessageQueue;
|
||||
class ISrsProtocolReaderWriter;
|
||||
class SrsKbps;
|
||||
|
@ -104,7 +104,7 @@ private:
|
|||
virtual void close_underlayer_socket();
|
||||
virtual int connect_server(std::string& ep_server, std::string& ep_port);
|
||||
virtual int connect_app(std::string ep_server, std::string ep_port);
|
||||
virtual int process_publish_message(SrsMessage* msg);
|
||||
virtual int process_publish_message(SrsCommonMessage* msg);
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -148,7 +148,7 @@ public:
|
|||
public:
|
||||
virtual int cycle();
|
||||
public:
|
||||
virtual int proxy(SrsMessage* msg);
|
||||
virtual int proxy(SrsCommonMessage* msg);
|
||||
private:
|
||||
virtual void close_underlayer_socket();
|
||||
virtual int connect_server(std::string& ep_server, std::string& ep_port);
|
||||
|
@ -214,7 +214,7 @@ public:
|
|||
/**
|
||||
* proxy publish stream to edge
|
||||
*/
|
||||
virtual int on_proxy_publish(SrsMessage* msg);
|
||||
virtual int on_proxy_publish(SrsCommonMessage* msg);
|
||||
/**
|
||||
* proxy unpublish stream to edge.
|
||||
*/
|
||||
|
|
|
@ -404,7 +404,7 @@ int SrsForwarder::forward()
|
|||
|
||||
// read from client.
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ret = client->recv_message(&msg);
|
||||
|
||||
srs_verbose("play loop recv message. ret=%d", ret);
|
||||
|
|
|
@ -81,7 +81,7 @@ int SrsRecvThread::cycle()
|
|||
continue;
|
||||
}
|
||||
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
|
||||
// recv and handle message
|
||||
ret = rtmp->recv_message(&msg);
|
||||
|
@ -145,9 +145,9 @@ SrsQueueRecvThread::~SrsQueueRecvThread()
|
|||
trd.stop();
|
||||
|
||||
// clear all messages.
|
||||
std::vector<SrsMessage*>::iterator it;
|
||||
std::vector<SrsCommonMessage*>::iterator it;
|
||||
for (it = queue.begin(); it != queue.end(); ++it) {
|
||||
SrsMessage* msg = *it;
|
||||
SrsCommonMessage* msg = *it;
|
||||
srs_freep(msg);
|
||||
}
|
||||
queue.clear();
|
||||
|
@ -173,11 +173,11 @@ int SrsQueueRecvThread::size()
|
|||
return (int)queue.size();
|
||||
}
|
||||
|
||||
SrsMessage* SrsQueueRecvThread::pump()
|
||||
SrsCommonMessage* SrsQueueRecvThread::pump()
|
||||
{
|
||||
srs_assert(!queue.empty());
|
||||
|
||||
SrsMessage* msg = *queue.begin();
|
||||
SrsCommonMessage* msg = *queue.begin();
|
||||
|
||||
queue.erase(queue.begin());
|
||||
|
||||
|
@ -198,7 +198,7 @@ bool SrsQueueRecvThread::can_handle()
|
|||
return empty();
|
||||
}
|
||||
|
||||
int SrsQueueRecvThread::handle(SrsMessage* msg)
|
||||
int SrsQueueRecvThread::handle(SrsCommonMessage* msg)
|
||||
{
|
||||
// put into queue, the send thread will get and process it,
|
||||
// @see SrsRtmpConn::process_play_control_msg
|
||||
|
@ -335,7 +335,7 @@ bool SrsPublishRecvThread::can_handle()
|
|||
return true;
|
||||
}
|
||||
|
||||
int SrsPublishRecvThread::handle(SrsMessage* msg)
|
||||
int SrsPublishRecvThread::handle(SrsCommonMessage* msg)
|
||||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
#include <srs_app_reload.hpp>
|
||||
|
||||
class SrsRtmpServer;
|
||||
class SrsMessage;
|
||||
class SrsCommonMessage;
|
||||
class SrsRtmpConn;
|
||||
class SrsSource;
|
||||
class SrsRequest;
|
||||
|
@ -62,7 +62,7 @@ public:
|
|||
/**
|
||||
* process the received message.
|
||||
*/
|
||||
virtual int handle(SrsMessage* msg) = 0;
|
||||
virtual int handle(SrsCommonMessage* msg) = 0;
|
||||
/**
|
||||
* when recv message error.
|
||||
*/
|
||||
|
@ -107,7 +107,7 @@ public:
|
|||
class SrsQueueRecvThread : public ISrsMessageHandler
|
||||
{
|
||||
private:
|
||||
std::vector<SrsMessage*> queue;
|
||||
std::vector<SrsCommonMessage*> queue;
|
||||
SrsRecvThread trd;
|
||||
SrsRtmpServer* rtmp;
|
||||
// the recv thread error code.
|
||||
|
@ -121,11 +121,11 @@ public:
|
|||
public:
|
||||
virtual bool empty();
|
||||
virtual int size();
|
||||
virtual SrsMessage* pump();
|
||||
virtual SrsCommonMessage* pump();
|
||||
virtual int error_code();
|
||||
public:
|
||||
virtual bool can_handle();
|
||||
virtual int handle(SrsMessage* msg);
|
||||
virtual int handle(SrsCommonMessage* msg);
|
||||
virtual void on_recv_error(int ret);
|
||||
public:
|
||||
virtual void on_thread_start();
|
||||
|
@ -183,7 +183,7 @@ public:
|
|||
// interface ISrsMessageHandler
|
||||
public:
|
||||
virtual bool can_handle();
|
||||
virtual int handle(SrsMessage* msg);
|
||||
virtual int handle(SrsCommonMessage* msg);
|
||||
virtual void on_recv_error(int ret);
|
||||
// interface IMergeReadHandler
|
||||
public:
|
||||
|
|
|
@ -576,7 +576,7 @@ int SrsRtmpConn::do_playing(SrsSource* source, SrsQueueRecvThread* trd)
|
|||
// @see: https://github.com/winlinvip/simple-rtmp-server/issues/196
|
||||
// @see: https://github.com/winlinvip/simple-rtmp-server/issues/217
|
||||
while (!trd->empty()) {
|
||||
SrsMessage* msg = trd->pump();
|
||||
SrsCommonMessage* msg = trd->pump();
|
||||
srs_verbose("pump client message to process.");
|
||||
|
||||
if ((ret = process_play_control_msg(consumer, msg)) != ERROR_SUCCESS) {
|
||||
|
@ -628,7 +628,7 @@ int SrsRtmpConn::do_playing(SrsSource* source, SrsQueueRecvThread* trd)
|
|||
// we start to collect the durations for each message.
|
||||
if (user_specified_duration_to_stop) {
|
||||
for (int i = 0; i < count; i++) {
|
||||
SrsMessage* msg = msgs.msgs[i];
|
||||
SrsSharedPtrMessage* msg = msgs.msgs[i];
|
||||
|
||||
// foreach msg, collect the duration.
|
||||
// @remark: never use msg when sent it, for the protocol sdk will free it.
|
||||
|
@ -806,7 +806,7 @@ int SrsRtmpConn::do_publishing(SrsSource* source, SrsPublishRecvThread* trd)
|
|||
return ret;
|
||||
}
|
||||
|
||||
int SrsRtmpConn::handle_publish_message(SrsSource* source, SrsMessage* msg, bool is_fmle, bool vhost_is_edge)
|
||||
int SrsRtmpConn::handle_publish_message(SrsSource* source, SrsCommonMessage* msg, bool is_fmle, bool vhost_is_edge)
|
||||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
|
@ -850,7 +850,7 @@ int SrsRtmpConn::handle_publish_message(SrsSource* source, SrsMessage* msg, bool
|
|||
return ret;
|
||||
}
|
||||
|
||||
int SrsRtmpConn::process_publish_message(SrsSource* source, SrsMessage* msg, bool vhost_is_edge)
|
||||
int SrsRtmpConn::process_publish_message(SrsSource* source, SrsCommonMessage* msg, bool vhost_is_edge)
|
||||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
|
@ -915,7 +915,7 @@ int SrsRtmpConn::process_publish_message(SrsSource* source, SrsMessage* msg, boo
|
|||
return ret;
|
||||
}
|
||||
|
||||
int SrsRtmpConn::process_play_control_msg(SrsConsumer* consumer, SrsMessage* msg)
|
||||
int SrsRtmpConn::process_play_control_msg(SrsConsumer* consumer, SrsCommonMessage* msg)
|
||||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
|
@ -923,7 +923,7 @@ int SrsRtmpConn::process_play_control_msg(SrsConsumer* consumer, SrsMessage* msg
|
|||
srs_verbose("ignore all empty message.");
|
||||
return ret;
|
||||
}
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
|
||||
if (!msg->header.is_amf0_command() && !msg->header.is_amf3_command()) {
|
||||
srs_info("ignore all message except amf0/amf3 command.");
|
||||
|
|
|
@ -40,7 +40,7 @@ class SrsResponse;
|
|||
class SrsSource;
|
||||
class SrsRefer;
|
||||
class SrsConsumer;
|
||||
class SrsMessage;
|
||||
class SrsCommonMessage;
|
||||
class SrsStSocket;
|
||||
#ifdef SRS_AUTO_HTTP_CALLBACK
|
||||
class SrsHttpHooks;
|
||||
|
@ -101,9 +101,9 @@ private:
|
|||
virtual int fmle_publishing(SrsSource* source);
|
||||
virtual int flash_publishing(SrsSource* source);
|
||||
virtual int do_publishing(SrsSource* source, SrsPublishRecvThread* trd);
|
||||
virtual int handle_publish_message(SrsSource* source, SrsMessage* msg, bool is_fmle, bool vhost_is_edge);
|
||||
virtual int process_publish_message(SrsSource* source, SrsMessage* msg, bool vhost_is_edge);
|
||||
virtual int process_play_control_msg(SrsConsumer* consumer, SrsMessage* msg);
|
||||
virtual int handle_publish_message(SrsSource* source, SrsCommonMessage* msg, bool is_fmle, bool vhost_is_edge);
|
||||
virtual int process_publish_message(SrsSource* source, SrsCommonMessage* msg, bool vhost_is_edge);
|
||||
virtual int process_play_control_msg(SrsConsumer* consumer, SrsCommonMessage* msg);
|
||||
virtual void change_mw_sleep(int sleep_ms);
|
||||
private:
|
||||
virtual int check_edge_token_traverse_auth();
|
||||
|
|
|
@ -208,7 +208,7 @@ int SrsMessageQueue::enqueue(SrsSharedPtrMessage* msg, bool* is_overflow)
|
|||
return ret;
|
||||
}
|
||||
|
||||
int SrsMessageQueue::dump_packets(int max_count, SrsMessage** pmsgs, int& count)
|
||||
int SrsMessageQueue::dump_packets(int max_count, SrsSharedPtrMessage** pmsgs, int& count)
|
||||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
|
@ -951,7 +951,7 @@ bool SrsSource::can_publish()
|
|||
return _can_publish;
|
||||
}
|
||||
|
||||
int SrsSource::on_meta_data(SrsMessage* msg, SrsOnMetaDataPacket* metadata)
|
||||
int SrsSource::on_meta_data(SrsCommonMessage* msg, SrsOnMetaDataPacket* metadata)
|
||||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
|
@ -1072,7 +1072,7 @@ int SrsSource::on_meta_data(SrsMessage* msg, SrsOnMetaDataPacket* metadata)
|
|||
return ret;
|
||||
}
|
||||
|
||||
int SrsSource::on_audio(SrsMessage* __audio)
|
||||
int SrsSource::on_audio(SrsCommonMessage* __audio)
|
||||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
|
@ -1183,7 +1183,7 @@ int SrsSource::on_audio(SrsMessage* __audio)
|
|||
return ret;
|
||||
}
|
||||
|
||||
int SrsSource::on_video(SrsMessage* __video)
|
||||
int SrsSource::on_video(SrsCommonMessage* __video)
|
||||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
|
@ -1287,7 +1287,7 @@ int SrsSource::on_video(SrsMessage* __video)
|
|||
return ret;
|
||||
}
|
||||
|
||||
int SrsSource::on_aggregate(SrsMessage* msg)
|
||||
int SrsSource::on_aggregate(SrsCommonMessage* msg)
|
||||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
|
@ -1349,7 +1349,7 @@ int SrsSource::on_aggregate(SrsMessage* msg)
|
|||
|
||||
// to common message.
|
||||
SrsCommonMessage __o;
|
||||
SrsMessage& o = __o;
|
||||
SrsCommonMessage& o = __o;
|
||||
|
||||
o.header.message_type = type;
|
||||
o.header.payload_length = data_size;
|
||||
|
@ -1570,7 +1570,7 @@ int SrsSource::on_edge_start_publish()
|
|||
return publish_edge->on_client_publish();
|
||||
}
|
||||
|
||||
int SrsSource::on_edge_proxy_publish(SrsMessage* msg)
|
||||
int SrsSource::on_edge_proxy_publish(SrsCommonMessage* msg)
|
||||
{
|
||||
return publish_edge->on_proxy_publish(msg);
|
||||
}
|
||||
|
|
|
@ -41,7 +41,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
class SrsPlayEdge;
|
||||
class SrsPublishEdge;
|
||||
class SrsSource;
|
||||
class SrsMessage;
|
||||
class SrsCommonMessage;
|
||||
class SrsOnMetaDataPacket;
|
||||
class SrsSharedPtrMessage;
|
||||
class SrsForwarder;
|
||||
|
@ -139,11 +139,11 @@ public:
|
|||
virtual int enqueue(SrsSharedPtrMessage* msg, bool* is_overflow = NULL);
|
||||
/**
|
||||
* get packets in consumer queue.
|
||||
* @pmsgs SrsMessages*[], used to store the msgs, user must alloc it.
|
||||
* @pmsgs SrsCommonMessages*[], used to store the msgs, user must alloc it.
|
||||
* @count the count in array, output param.
|
||||
* @max_count the max count to dequeue, must be positive.
|
||||
*/
|
||||
virtual int dump_packets(int max_count, SrsMessage** pmsgs, int& count);
|
||||
virtual int dump_packets(int max_count, SrsSharedPtrMessage** pmsgs, int& count);
|
||||
private:
|
||||
/**
|
||||
* remove a gop from the front.
|
||||
|
@ -395,10 +395,10 @@ public:
|
|||
// logic data methods
|
||||
public:
|
||||
virtual bool can_publish();
|
||||
virtual int on_meta_data(SrsMessage* msg, SrsOnMetaDataPacket* metadata);
|
||||
virtual int on_audio(SrsMessage* audio);
|
||||
virtual int on_video(SrsMessage* video);
|
||||
virtual int on_aggregate(SrsMessage* msg);
|
||||
virtual int on_meta_data(SrsCommonMessage* msg, SrsOnMetaDataPacket* metadata);
|
||||
virtual int on_audio(SrsCommonMessage* audio);
|
||||
virtual int on_video(SrsCommonMessage* video);
|
||||
virtual int on_aggregate(SrsCommonMessage* msg);
|
||||
/**
|
||||
* the pre-publish is we are very sure we are
|
||||
* trying to publish stream, please lock the resource,
|
||||
|
@ -425,7 +425,7 @@ public:
|
|||
// for edge, when publish edge stream, check the state
|
||||
virtual int on_edge_start_publish();
|
||||
// for edge, proxy the publish
|
||||
virtual int on_edge_proxy_publish(SrsMessage* msg);
|
||||
virtual int on_edge_proxy_publish(SrsCommonMessage* msg);
|
||||
// for edge, proxy stop publish
|
||||
virtual void on_edge_proxy_unpublish();
|
||||
private:
|
||||
|
|
|
@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
// current release version
|
||||
#define VERSION_MAJOR 2
|
||||
#define VERSION_MINOR 0
|
||||
#define VERSION_REVISION 59
|
||||
#define VERSION_REVISION 60
|
||||
// server info.
|
||||
#define RTMP_SIG_SRS_KEY "SRS"
|
||||
#define RTMP_SIG_SRS_ROLE "origin/edge server"
|
||||
|
|
|
@ -67,12 +67,12 @@ int _srs_expect_bandwidth_packet(SrsRtmpClient* rtmp, _CheckPacketType pfn)
|
|||
int ret = ERROR_SUCCESS;
|
||||
|
||||
while (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
SrsBandwidthPacket* pkt = NULL;
|
||||
if ((ret = rtmp->expect_message<SrsBandwidthPacket>(&msg, &pkt)) != ERROR_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
SrsAutoFree(SrsBandwidthPacket, pkt);
|
||||
srs_info("get final message success.");
|
||||
|
||||
|
@ -88,12 +88,12 @@ int _srs_expect_bandwidth_packet2(SrsRtmpClient* rtmp, _CheckPacketType pfn, Srs
|
|||
int ret = ERROR_SUCCESS;
|
||||
|
||||
while (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
SrsBandwidthPacket* pkt = NULL;
|
||||
if ((ret = rtmp->expect_message<SrsBandwidthPacket>(&msg, &pkt)) != ERROR_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
srs_info("get final message success.");
|
||||
|
||||
if (pfn(pkt)) {
|
||||
|
|
|
@ -755,7 +755,7 @@ int srs_rtmp_read_packet(srs_rtmp_t rtmp, char* type, u_int32_t* timestamp, char
|
|||
Context* context = (Context*)rtmp;
|
||||
|
||||
for (;;) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
if ((ret = context->rtmp->recv_message(&msg)) != ERROR_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
@ -763,7 +763,7 @@ int srs_rtmp_read_packet(srs_rtmp_t rtmp, char* type, u_int32_t* timestamp, char
|
|||
continue;
|
||||
}
|
||||
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
|
||||
if (msg->header.is_audio()) {
|
||||
*type = SRS_RTMP_TYPE_AUDIO;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE QtCreatorProject>
|
||||
<!-- Written by QtCreator 3.1.1, 2014-12-04T22:24:26. -->
|
||||
<!-- Written by QtCreator 3.1.1, 2014-12-05T22:32:09. -->
|
||||
<qtcreator>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
||||
|
|
|
@ -29,7 +29,7 @@ SrsMessageArray::SrsMessageArray(int max_msgs)
|
|||
{
|
||||
srs_assert(max_msgs > 0);
|
||||
|
||||
msgs = new SrsMessage*[max_msgs];
|
||||
msgs = new SrsSharedPtrMessage*[max_msgs];
|
||||
max = max_msgs;
|
||||
|
||||
zero(max_msgs);
|
||||
|
@ -47,7 +47,7 @@ void SrsMessageArray::free(int count)
|
|||
{
|
||||
// initialize
|
||||
for (int i = 0; i < count; i++) {
|
||||
SrsMessage* msg = msgs[i];
|
||||
SrsSharedPtrMessage* msg = msgs[i];
|
||||
srs_freep(msg);
|
||||
|
||||
msgs[i] = NULL;
|
||||
|
|
|
@ -30,7 +30,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
|
||||
#include <srs_core.hpp>
|
||||
|
||||
class SrsMessage;
|
||||
class SrsSharedPtrMessage;
|
||||
|
||||
/**
|
||||
* the class to auto free the shared ptr message array.
|
||||
|
@ -49,7 +49,7 @@ public:
|
|||
* for instance, msg= msgs.msgs[i], msgs.msgs[i]=NULL, send(msg),
|
||||
* where send(msg) will always send and free it.
|
||||
*/
|
||||
SrsMessage** msgs;
|
||||
SrsSharedPtrMessage** msgs;
|
||||
int max;
|
||||
public:
|
||||
/**
|
||||
|
|
|
@ -360,22 +360,22 @@ int64_t SrsRtmpClient::get_send_bytes()
|
|||
return protocol->get_send_bytes();
|
||||
}
|
||||
|
||||
int SrsRtmpClient::recv_message(SrsMessage** pmsg)
|
||||
int SrsRtmpClient::recv_message(SrsCommonMessage** pmsg)
|
||||
{
|
||||
return protocol->recv_message(pmsg);
|
||||
}
|
||||
|
||||
int SrsRtmpClient::decode_message(SrsMessage* msg, SrsPacket** ppacket)
|
||||
int SrsRtmpClient::decode_message(SrsCommonMessage* msg, SrsPacket** ppacket)
|
||||
{
|
||||
return protocol->decode_message(msg, ppacket);
|
||||
}
|
||||
|
||||
int SrsRtmpClient::send_and_free_message(SrsMessage* msg, int stream_id)
|
||||
int SrsRtmpClient::send_and_free_message(SrsSharedPtrMessage* msg, int stream_id)
|
||||
{
|
||||
return protocol->send_and_free_message(msg, stream_id);
|
||||
}
|
||||
|
||||
int SrsRtmpClient::send_and_free_messages(SrsMessage** msgs, int nb_msgs, int stream_id)
|
||||
int SrsRtmpClient::send_and_free_messages(SrsSharedPtrMessage** msgs, int nb_msgs, int stream_id)
|
||||
{
|
||||
return protocol->send_and_free_messages(msgs, nb_msgs, stream_id);
|
||||
}
|
||||
|
@ -509,13 +509,13 @@ int SrsRtmpClient::connect_app2(
|
|||
}
|
||||
|
||||
// expect connect _result
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
SrsConnectAppResPacket* pkt = NULL;
|
||||
if ((ret = expect_message<SrsConnectAppResPacket>(&msg, &pkt)) != ERROR_SUCCESS) {
|
||||
srs_error("expect connect app response message failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
SrsAutoFree(SrsConnectAppResPacket, pkt);
|
||||
|
||||
// server info
|
||||
|
@ -566,13 +566,13 @@ int SrsRtmpClient::create_stream(int& stream_id)
|
|||
|
||||
// CreateStream _result.
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
SrsCreateStreamResPacket* pkt = NULL;
|
||||
if ((ret = expect_message<SrsCreateStreamResPacket>(&msg, &pkt)) != ERROR_SUCCESS) {
|
||||
srs_error("expect create stream response message failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
SrsAutoFree(SrsCreateStreamResPacket, pkt);
|
||||
srs_info("get create stream response message");
|
||||
|
||||
|
@ -700,13 +700,13 @@ int SrsRtmpClient::fmle_publish(string stream, int& stream_id)
|
|||
|
||||
// expect result of CreateStream
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
SrsCreateStreamResPacket* pkt = NULL;
|
||||
if ((ret = expect_message<SrsCreateStreamResPacket>(&msg, &pkt)) != ERROR_SUCCESS) {
|
||||
srs_error("expect create stream response message failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
SrsAutoFree(SrsCreateStreamResPacket, pkt);
|
||||
srs_info("get create stream response message");
|
||||
|
||||
|
@ -787,22 +787,22 @@ int64_t SrsRtmpServer::get_send_bytes()
|
|||
return protocol->get_send_bytes();
|
||||
}
|
||||
|
||||
int SrsRtmpServer::recv_message(SrsMessage** pmsg)
|
||||
int SrsRtmpServer::recv_message(SrsCommonMessage** pmsg)
|
||||
{
|
||||
return protocol->recv_message(pmsg);
|
||||
}
|
||||
|
||||
int SrsRtmpServer::decode_message(SrsMessage* msg, SrsPacket** ppacket)
|
||||
int SrsRtmpServer::decode_message(SrsCommonMessage* msg, SrsPacket** ppacket)
|
||||
{
|
||||
return protocol->decode_message(msg, ppacket);
|
||||
}
|
||||
|
||||
int SrsRtmpServer::send_and_free_message(SrsMessage* msg, int stream_id)
|
||||
int SrsRtmpServer::send_and_free_message(SrsSharedPtrMessage* msg, int stream_id)
|
||||
{
|
||||
return protocol->send_and_free_message(msg, stream_id);
|
||||
}
|
||||
|
||||
int SrsRtmpServer::send_and_free_messages(SrsMessage** msgs, int nb_msgs, int stream_id)
|
||||
int SrsRtmpServer::send_and_free_messages(SrsSharedPtrMessage** msgs, int nb_msgs, int stream_id)
|
||||
{
|
||||
return protocol->send_and_free_messages(msgs, nb_msgs, stream_id);
|
||||
}
|
||||
|
@ -838,13 +838,13 @@ int SrsRtmpServer::connect_app(SrsRequest* req)
|
|||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
SrsConnectAppPacket* pkt = NULL;
|
||||
if ((ret = expect_message<SrsConnectAppPacket>(&msg, &pkt)) != ERROR_SUCCESS) {
|
||||
srs_error("expect connect app message failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
SrsAutoFree(SrsConnectAppPacket, pkt);
|
||||
srs_info("get connect app message");
|
||||
|
||||
|
@ -1001,7 +1001,7 @@ int SrsRtmpServer::identify_client(int stream_id, SrsRtmpConnType& type, string&
|
|||
int ret = ERROR_SUCCESS;
|
||||
|
||||
while (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
if ((ret = protocol->recv_message(&msg)) != ERROR_SUCCESS) {
|
||||
if (!srs_is_client_gracefully_close(ret)) {
|
||||
srs_error("recv identify client message failed. ret=%d", ret);
|
||||
|
@ -1009,7 +1009,7 @@ int SrsRtmpServer::identify_client(int stream_id, SrsRtmpConnType& type, string&
|
|||
return ret;
|
||||
}
|
||||
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
SrsMessageHeader& h = msg->header;
|
||||
|
||||
if (h.is_ackledgement() || h.is_set_chunk_size() || h.is_window_ackledgement_size() || h.is_user_control_message()) {
|
||||
|
@ -1233,7 +1233,7 @@ int SrsRtmpServer::start_fmle_publish(int stream_id)
|
|||
// FCPublish
|
||||
double fc_publish_tid = 0;
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
SrsFMLEStartPacket* pkt = NULL;
|
||||
if ((ret = expect_message<SrsFMLEStartPacket>(&msg, &pkt)) != ERROR_SUCCESS) {
|
||||
srs_error("recv FCPublish message failed. ret=%d", ret);
|
||||
|
@ -1241,7 +1241,7 @@ int SrsRtmpServer::start_fmle_publish(int stream_id)
|
|||
}
|
||||
srs_info("recv FCPublish request message success.");
|
||||
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
SrsAutoFree(SrsFMLEStartPacket, pkt);
|
||||
|
||||
fc_publish_tid = pkt->transaction_id;
|
||||
|
@ -1259,7 +1259,7 @@ int SrsRtmpServer::start_fmle_publish(int stream_id)
|
|||
// createStream
|
||||
double create_stream_tid = 0;
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
SrsCreateStreamPacket* pkt = NULL;
|
||||
if ((ret = expect_message<SrsCreateStreamPacket>(&msg, &pkt)) != ERROR_SUCCESS) {
|
||||
srs_error("recv createStream message failed. ret=%d", ret);
|
||||
|
@ -1267,7 +1267,7 @@ int SrsRtmpServer::start_fmle_publish(int stream_id)
|
|||
}
|
||||
srs_info("recv createStream request message success.");
|
||||
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
SrsAutoFree(SrsCreateStreamPacket, pkt);
|
||||
|
||||
create_stream_tid = pkt->transaction_id;
|
||||
|
@ -1284,7 +1284,7 @@ int SrsRtmpServer::start_fmle_publish(int stream_id)
|
|||
|
||||
// publish
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
SrsPublishPacket* pkt = NULL;
|
||||
if ((ret = expect_message<SrsPublishPacket>(&msg, &pkt)) != ERROR_SUCCESS) {
|
||||
srs_error("recv publish message failed. ret=%d", ret);
|
||||
|
@ -1292,7 +1292,7 @@ int SrsRtmpServer::start_fmle_publish(int stream_id)
|
|||
}
|
||||
srs_info("recv publish request message success.");
|
||||
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
SrsAutoFree(SrsPublishPacket, pkt);
|
||||
}
|
||||
// publish response onFCPublish(NetStream.Publish.Start)
|
||||
|
@ -1417,7 +1417,7 @@ int SrsRtmpServer::identify_create_stream_client(SrsCreateStreamPacket* req, int
|
|||
}
|
||||
|
||||
while (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
if ((ret = protocol->recv_message(&msg)) != ERROR_SUCCESS) {
|
||||
if (!srs_is_client_gracefully_close(ret)) {
|
||||
srs_error("recv identify client message failed. ret=%d", ret);
|
||||
|
@ -1425,7 +1425,7 @@ int SrsRtmpServer::identify_create_stream_client(SrsCreateStreamPacket* req, int
|
|||
return ret;
|
||||
}
|
||||
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
SrsMessageHeader& h = msg->header;
|
||||
|
||||
if (h.is_ackledgement() || h.is_set_chunk_size() || h.is_window_ackledgement_size() || h.is_user_control_message()) {
|
||||
|
|
|
@ -37,14 +37,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
|
||||
class SrsProtocol;
|
||||
class ISrsProtocolReaderWriter;
|
||||
class ISrsMessage;
|
||||
class ISrsCommonMessage;
|
||||
class SrsCommonMessage;
|
||||
class SrsCreateStreamPacket;
|
||||
class SrsFMLEStartPacket;
|
||||
class SrsPublishPacket;
|
||||
class SrsOnMetaDataPacket;
|
||||
class SrsPlayPacket;
|
||||
class SrsMessage;
|
||||
class SrsCommonMessage;
|
||||
class SrsPacket;
|
||||
class SrsAmf0Object;
|
||||
class IMergeReadHandler;
|
||||
|
@ -207,14 +207,14 @@ public:
|
|||
* never NULL if decode success.
|
||||
* @remark, drop message when msg is empty or payload length is empty.
|
||||
*/
|
||||
virtual int recv_message(SrsMessage** pmsg);
|
||||
virtual int recv_message(SrsCommonMessage** pmsg);
|
||||
/**
|
||||
* decode bytes oriented RTMP message to RTMP packet,
|
||||
* @param ppacket, output decoded packet,
|
||||
* always NULL if error, never NULL if success.
|
||||
* @return error when unknown packet, error when decode failed.
|
||||
*/
|
||||
virtual int decode_message(SrsMessage* msg, SrsPacket** ppacket);
|
||||
virtual int decode_message(SrsCommonMessage* msg, SrsPacket** ppacket);
|
||||
/**
|
||||
* send the RTMP message and always free it.
|
||||
* user must never free or use the msg after this method,
|
||||
|
@ -222,7 +222,7 @@ public:
|
|||
* @param msg, the msg to send out, never be NULL.
|
||||
* @param stream_id, the stream id of packet to send over, 0 for control message.
|
||||
*/
|
||||
virtual int send_and_free_message(SrsMessage* msg, int stream_id);
|
||||
virtual int send_and_free_message(SrsSharedPtrMessage* msg, int stream_id);
|
||||
/**
|
||||
* send the RTMP message and always free it.
|
||||
* user must never free or use the msg after this method,
|
||||
|
@ -231,7 +231,7 @@ public:
|
|||
* @param nb_msgs, the size of msgs to send out.
|
||||
* @param stream_id, the stream id of packet to send over, 0 for control message.
|
||||
*/
|
||||
virtual int send_and_free_messages(SrsMessage** msgs, int nb_msgs, int stream_id);
|
||||
virtual int send_and_free_messages(SrsSharedPtrMessage** msgs, int nb_msgs, int stream_id);
|
||||
/**
|
||||
* send the RTMP packet and always free it.
|
||||
* user must never free or use the packet after this method,
|
||||
|
@ -316,7 +316,7 @@ public:
|
|||
* if need to set timeout, use set timeout of SrsProtocol.
|
||||
*/
|
||||
template<class T>
|
||||
int expect_message(SrsMessage** pmsg, T** ppacket)
|
||||
int expect_message(SrsCommonMessage** pmsg, T** ppacket)
|
||||
{
|
||||
return protocol->expect_message<T>(pmsg, ppacket);
|
||||
}
|
||||
|
@ -389,14 +389,14 @@ public:
|
|||
* never NULL if decode success.
|
||||
* @remark, drop message when msg is empty or payload length is empty.
|
||||
*/
|
||||
virtual int recv_message(SrsMessage** pmsg);
|
||||
virtual int recv_message(SrsCommonMessage** pmsg);
|
||||
/**
|
||||
* decode bytes oriented RTMP message to RTMP packet,
|
||||
* @param ppacket, output decoded packet,
|
||||
* always NULL if error, never NULL if success.
|
||||
* @return error when unknown packet, error when decode failed.
|
||||
*/
|
||||
virtual int decode_message(SrsMessage* msg, SrsPacket** ppacket);
|
||||
virtual int decode_message(SrsCommonMessage* msg, SrsPacket** ppacket);
|
||||
/**
|
||||
* send the RTMP message and always free it.
|
||||
* user must never free or use the msg after this method,
|
||||
|
@ -404,7 +404,7 @@ public:
|
|||
* @param msg, the msg to send out, never be NULL.
|
||||
* @param stream_id, the stream id of packet to send over, 0 for control message.
|
||||
*/
|
||||
virtual int send_and_free_message(SrsMessage* msg, int stream_id);
|
||||
virtual int send_and_free_message(SrsSharedPtrMessage* msg, int stream_id);
|
||||
/**
|
||||
* send the RTMP message and always free it.
|
||||
* user must never free or use the msg after this method,
|
||||
|
@ -416,7 +416,7 @@ public:
|
|||
* @remark performance issue, to support 6k+ 250kbps client,
|
||||
* @see https://github.com/winlinvip/simple-rtmp-server/issues/194
|
||||
*/
|
||||
virtual int send_and_free_messages(SrsMessage** msgs, int nb_msgs, int stream_id);
|
||||
virtual int send_and_free_messages(SrsSharedPtrMessage** msgs, int nb_msgs, int stream_id);
|
||||
/**
|
||||
* send the RTMP packet and always free it.
|
||||
* user must never free or use the packet after this method,
|
||||
|
@ -523,7 +523,7 @@ public:
|
|||
* if need to set timeout, use set timeout of SrsProtocol.
|
||||
*/
|
||||
template<class T>
|
||||
int expect_message(SrsMessage** pmsg, T** ppacket)
|
||||
int expect_message(SrsCommonMessage** pmsg, T** ppacket)
|
||||
{
|
||||
return protocol->expect_message<T>(pmsg, ppacket);
|
||||
}
|
||||
|
|
|
@ -386,14 +386,112 @@ void SrsMessageHeader::initialize_video(int size, u_int32_t time, int stream)
|
|||
perfer_cid = RTMP_CID_Video;
|
||||
}
|
||||
|
||||
SrsMessage::SrsMessage()
|
||||
SrsCommonMessage::SrsCommonMessage()
|
||||
{
|
||||
payload = NULL;
|
||||
size = 0;
|
||||
}
|
||||
|
||||
SrsMessage::~SrsMessage()
|
||||
SrsCommonMessage::~SrsCommonMessage()
|
||||
{
|
||||
srs_freep(payload);
|
||||
}
|
||||
|
||||
SrsSharedPtrMessage::__SrsSharedPtr::__SrsSharedPtr()
|
||||
{
|
||||
payload = NULL;
|
||||
size = 0;
|
||||
shared_count = 0;
|
||||
}
|
||||
|
||||
SrsSharedPtrMessage::__SrsSharedPtr::~__SrsSharedPtr()
|
||||
{
|
||||
srs_freep(payload);
|
||||
}
|
||||
|
||||
SrsSharedPtrMessage::SrsSharedPtrMessage()
|
||||
{
|
||||
ptr = NULL;
|
||||
}
|
||||
|
||||
SrsSharedPtrMessage::~SrsSharedPtrMessage()
|
||||
{
|
||||
if (ptr) {
|
||||
if (ptr->shared_count == 0) {
|
||||
srs_freep(ptr);
|
||||
} else {
|
||||
ptr->shared_count--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int SrsSharedPtrMessage::create(SrsCommonMessage* msg)
|
||||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
if ((ret = create(&msg->header, msg->payload, msg->size)) != ERROR_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
// to prevent double free of payload:
|
||||
// initialize already attach the payload of msg,
|
||||
// detach the payload to transfer the owner to shared ptr.
|
||||
msg->payload = NULL;
|
||||
msg->size = 0;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int SrsSharedPtrMessage::create(SrsMessageHeader* pheader, char* payload, int size)
|
||||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
srs_assert(pheader != NULL);
|
||||
if (ptr) {
|
||||
ret = ERROR_SYSTEM_ASSERT_FAILED;
|
||||
srs_error("should not set the payload twice. ret=%d", ret);
|
||||
srs_assert(false);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
header = *pheader;
|
||||
header.payload_length = size;
|
||||
|
||||
ptr = new __SrsSharedPtr();
|
||||
|
||||
// direct attach the data.
|
||||
ptr->payload = payload;
|
||||
ptr->size = size;
|
||||
|
||||
// message can access it.
|
||||
this->payload = ptr->payload;
|
||||
this->size = ptr->size;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int SrsSharedPtrMessage::count()
|
||||
{
|
||||
srs_assert(ptr);
|
||||
return ptr->shared_count;
|
||||
}
|
||||
|
||||
SrsSharedPtrMessage* SrsSharedPtrMessage::copy()
|
||||
{
|
||||
srs_assert(ptr);
|
||||
|
||||
SrsSharedPtrMessage* copy = new SrsSharedPtrMessage();
|
||||
|
||||
copy->header = header;
|
||||
|
||||
copy->ptr = ptr;
|
||||
ptr->shared_count++;
|
||||
|
||||
copy->payload = ptr->payload;
|
||||
copy->size = ptr->size;
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
SrsProtocol::AckWindowSize::AckWindowSize()
|
||||
|
@ -541,14 +639,14 @@ int64_t SrsProtocol::get_send_bytes()
|
|||
return skt->get_send_bytes();
|
||||
}
|
||||
|
||||
int SrsProtocol::recv_message(SrsMessage** pmsg)
|
||||
int SrsProtocol::recv_message(SrsCommonMessage** pmsg)
|
||||
{
|
||||
*pmsg = NULL;
|
||||
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
while (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
|
||||
if ((ret = recv_interlaced_message(&msg)) != ERROR_SUCCESS) {
|
||||
if (ret != ERROR_SOCKET_TIMEOUT && !srs_is_client_gracefully_close(ret)) {
|
||||
|
@ -587,7 +685,7 @@ int SrsProtocol::recv_message(SrsMessage** pmsg)
|
|||
return ret;
|
||||
}
|
||||
|
||||
int SrsProtocol::decode_message(SrsMessage* msg, SrsPacket** ppacket)
|
||||
int SrsProtocol::decode_message(SrsCommonMessage* msg, SrsPacket** ppacket)
|
||||
{
|
||||
*ppacket = NULL;
|
||||
|
||||
|
@ -620,7 +718,7 @@ int SrsProtocol::decode_message(SrsMessage* msg, SrsPacket** ppacket)
|
|||
return ret;
|
||||
}
|
||||
|
||||
int SrsProtocol::do_send_messages(SrsMessage** msgs, int nb_msgs)
|
||||
int SrsProtocol::do_send_messages(SrsSharedPtrMessage** msgs, int nb_msgs)
|
||||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
|
@ -634,7 +732,7 @@ int SrsProtocol::do_send_messages(SrsMessage** msgs, int nb_msgs)
|
|||
// try to send use the c0c3 header cache,
|
||||
// if cache is consumed, try another loop.
|
||||
for (int i = 0; i < nb_msgs; i++) {
|
||||
SrsMessage* msg = msgs[i];
|
||||
SrsSharedPtrMessage* msg = msgs[i];
|
||||
|
||||
// ignore empty message.
|
||||
if (!msg->payload || msg->size <= 0) {
|
||||
|
@ -785,22 +883,23 @@ int SrsProtocol::do_send_and_free_packet(SrsPacket* packet, int stream_id)
|
|||
}
|
||||
|
||||
// to message
|
||||
SrsMessage* msg = new SrsCommonMessage();
|
||||
SrsMessageHeader header;
|
||||
header.payload_length = size;
|
||||
header.message_type = packet->get_message_type();
|
||||
header.stream_id = stream_id;
|
||||
header.perfer_cid = packet->get_prefer_cid();
|
||||
|
||||
msg->payload = payload;
|
||||
msg->size = size;
|
||||
|
||||
msg->header.payload_length = size;
|
||||
msg->header.message_type = packet->get_message_type();
|
||||
msg->header.stream_id = stream_id;
|
||||
msg->header.perfer_cid = packet->get_prefer_cid();
|
||||
|
||||
// donot use the auto free to free the msg,
|
||||
// for performance issue.
|
||||
SrsSharedPtrMessage* msg = new SrsSharedPtrMessage();
|
||||
ret = msg->create(&header, payload, size);
|
||||
if (ret == ERROR_SUCCESS) {
|
||||
ret = do_send_messages(&msg, 1);
|
||||
if (ret == ERROR_SUCCESS) {
|
||||
ret = on_send_packet(msg, packet);
|
||||
}
|
||||
}
|
||||
|
||||
// donot use the auto free to free the msg,
|
||||
// for performance issue.
|
||||
srs_freep(msg);
|
||||
|
||||
return ret;
|
||||
|
@ -1054,12 +1153,12 @@ int SrsProtocol::do_decode_message(SrsMessageHeader& header, SrsStream* stream,
|
|||
return ret;
|
||||
}
|
||||
|
||||
int SrsProtocol::send_and_free_message(SrsMessage* msg, int stream_id)
|
||||
int SrsProtocol::send_and_free_message(SrsSharedPtrMessage* msg, int stream_id)
|
||||
{
|
||||
return send_and_free_messages(&msg, 1, stream_id);
|
||||
}
|
||||
|
||||
int SrsProtocol::send_and_free_messages(SrsMessage** msgs, int nb_msgs, int stream_id)
|
||||
int SrsProtocol::send_and_free_messages(SrsSharedPtrMessage** msgs, int nb_msgs, int stream_id)
|
||||
{
|
||||
// always not NULL msg.
|
||||
srs_assert(msgs);
|
||||
|
@ -1067,7 +1166,7 @@ int SrsProtocol::send_and_free_messages(SrsMessage** msgs, int nb_msgs, int stre
|
|||
|
||||
// update the stream id in header.
|
||||
for (int i = 0; i < nb_msgs; i++) {
|
||||
SrsMessage* msg = msgs[i];
|
||||
SrsSharedPtrMessage* msg = msgs[i];
|
||||
// we assume that the stream_id in a group must be the same.
|
||||
if (msg->header.stream_id == stream_id) {
|
||||
break;
|
||||
|
@ -1080,7 +1179,7 @@ int SrsProtocol::send_and_free_messages(SrsMessage** msgs, int nb_msgs, int stre
|
|||
int ret = do_send_messages(msgs, nb_msgs);
|
||||
|
||||
for (int i = 0; i < nb_msgs; i++) {
|
||||
SrsMessage* msg = msgs[i];
|
||||
SrsSharedPtrMessage* msg = msgs[i];
|
||||
srs_freep(msg);
|
||||
}
|
||||
|
||||
|
@ -1113,7 +1212,7 @@ int SrsProtocol::send_and_free_packet(SrsPacket* packet, int stream_id)
|
|||
return ret;
|
||||
}
|
||||
|
||||
int SrsProtocol::recv_interlaced_message(SrsMessage** pmsg)
|
||||
int SrsProtocol::recv_interlaced_message(SrsCommonMessage** pmsg)
|
||||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
|
@ -1173,7 +1272,7 @@ int SrsProtocol::recv_interlaced_message(SrsMessage** pmsg)
|
|||
chunk->header.payload_length, chunk->header.timestamp, chunk->header.stream_id);
|
||||
|
||||
// read msg payload from chunk stream.
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
if ((ret = read_message_payload(chunk, &msg)) != ERROR_SUCCESS) {
|
||||
if (ret != ERROR_SOCKET_TIMEOUT && !srs_is_client_gracefully_close(ret)) {
|
||||
srs_error("read message payload failed. ret=%d", ret);
|
||||
|
@ -1591,7 +1690,7 @@ int SrsProtocol::read_message_header(SrsChunkStream* chunk, char fmt)
|
|||
return ret;
|
||||
}
|
||||
|
||||
int SrsProtocol::read_message_payload(SrsChunkStream* chunk, SrsMessage** pmsg)
|
||||
int SrsProtocol::read_message_payload(SrsChunkStream* chunk, SrsCommonMessage** pmsg)
|
||||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
|
@ -1650,7 +1749,7 @@ int SrsProtocol::read_message_payload(SrsChunkStream* chunk, SrsMessage** pmsg)
|
|||
return ret;
|
||||
}
|
||||
|
||||
int SrsProtocol::on_recv_message(SrsMessage* msg)
|
||||
int SrsProtocol::on_recv_message(SrsCommonMessage* msg)
|
||||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
|
@ -1743,7 +1842,7 @@ int SrsProtocol::on_recv_message(SrsMessage* msg)
|
|||
return ret;
|
||||
}
|
||||
|
||||
int SrsProtocol::on_send_packet(SrsMessage* msg, SrsPacket* packet)
|
||||
int SrsProtocol::on_send_packet(SrsSharedPtrMessage* msg, SrsPacket* packet)
|
||||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
|
@ -1859,112 +1958,6 @@ SrsChunkStream::~SrsChunkStream()
|
|||
srs_freep(msg);
|
||||
}
|
||||
|
||||
SrsCommonMessage::SrsCommonMessage()
|
||||
{
|
||||
}
|
||||
|
||||
SrsCommonMessage::~SrsCommonMessage()
|
||||
{
|
||||
srs_freep(payload);
|
||||
}
|
||||
|
||||
SrsSharedPtrMessage::__SrsSharedPtr::__SrsSharedPtr()
|
||||
{
|
||||
payload = NULL;
|
||||
size = 0;
|
||||
shared_count = 0;
|
||||
}
|
||||
|
||||
SrsSharedPtrMessage::__SrsSharedPtr::~__SrsSharedPtr()
|
||||
{
|
||||
srs_freep(payload);
|
||||
}
|
||||
|
||||
SrsSharedPtrMessage::SrsSharedPtrMessage()
|
||||
{
|
||||
ptr = NULL;
|
||||
}
|
||||
|
||||
SrsSharedPtrMessage::~SrsSharedPtrMessage()
|
||||
{
|
||||
if (ptr) {
|
||||
if (ptr->shared_count == 0) {
|
||||
srs_freep(ptr);
|
||||
} else {
|
||||
ptr->shared_count--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int SrsSharedPtrMessage::create(SrsMessage* msg)
|
||||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
if ((ret = create(&msg->header, msg->payload, msg->size)) != ERROR_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
// to prevent double free of payload:
|
||||
// initialize already attach the payload of msg,
|
||||
// detach the payload to transfer the owner to shared ptr.
|
||||
msg->payload = NULL;
|
||||
msg->size = 0;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int SrsSharedPtrMessage::create(SrsMessageHeader* pheader, char* payload, int size)
|
||||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
srs_assert(pheader != NULL);
|
||||
if (ptr) {
|
||||
ret = ERROR_SYSTEM_ASSERT_FAILED;
|
||||
srs_error("should not set the payload twice. ret=%d", ret);
|
||||
srs_assert(false);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
header = *pheader;
|
||||
header.payload_length = size;
|
||||
|
||||
ptr = new __SrsSharedPtr();
|
||||
|
||||
// direct attach the data.
|
||||
ptr->payload = payload;
|
||||
ptr->size = size;
|
||||
|
||||
// message can access it.
|
||||
SrsMessage::payload = ptr->payload;
|
||||
SrsMessage::size = ptr->size;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int SrsSharedPtrMessage::count()
|
||||
{
|
||||
srs_assert(ptr);
|
||||
return ptr->shared_count;
|
||||
}
|
||||
|
||||
SrsSharedPtrMessage* SrsSharedPtrMessage::copy()
|
||||
{
|
||||
srs_assert(ptr);
|
||||
|
||||
SrsSharedPtrMessage* copy = new SrsSharedPtrMessage();
|
||||
|
||||
copy->header = header;
|
||||
|
||||
copy->ptr = ptr;
|
||||
ptr->shared_count++;
|
||||
|
||||
copy->payload = ptr->payload;
|
||||
copy->size = ptr->size;
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
SrsPacket::SrsPacket()
|
||||
{
|
||||
}
|
||||
|
|
|
@ -51,7 +51,7 @@ class SrsStream;
|
|||
class SrsAmf0Object;
|
||||
class SrsAmf0Any;
|
||||
class SrsMessageHeader;
|
||||
class SrsMessage;
|
||||
class SrsCommonMessage;
|
||||
class SrsChunkStream;
|
||||
class SrsSharedPtrMessage;
|
||||
class IMergeReadHandler;
|
||||
|
@ -136,15 +136,10 @@ public:
|
|||
/**
|
||||
* message is raw data RTMP message, bytes oriented,
|
||||
* protcol always recv RTMP message, and can send RTMP message or RTMP packet.
|
||||
* the shared-ptr message is a special RTMP message, use ref-count for performance issue.
|
||||
*
|
||||
* @remark, never directly new SrsMessage, the constructor is protected,
|
||||
* for in the SrsMessage, we never know whether we should free the message,
|
||||
* for SrsCommonMessage, we should free the payload,
|
||||
* while for SrsSharedPtrMessage, we should use ref-count to free it.
|
||||
* so, use these two concrete message, SrsCommonMessage or SrsSharedPtrMessage instread.
|
||||
* the common message is read from underlay protocol sdk.
|
||||
* while the shared ptr message used to copy and send.
|
||||
*/
|
||||
class SrsMessage
|
||||
class SrsCommonMessage
|
||||
{
|
||||
// 4.1. Message Header
|
||||
public:
|
||||
|
@ -158,16 +153,90 @@ public:
|
|||
*/
|
||||
int size;
|
||||
/**
|
||||
* the payload of message, the SrsMessage never know about the detail of payload,
|
||||
* the payload of message, the SrsCommonMessage never know about the detail of payload,
|
||||
* user must use SrsProtocol.decode_message to get concrete packet.
|
||||
* @remark, not all message payload can be decoded to packet. for example,
|
||||
* video/audio packet use raw bytes, no video/audio packet.
|
||||
*/
|
||||
char* payload;
|
||||
protected:
|
||||
SrsMessage();
|
||||
public:
|
||||
virtual ~SrsMessage();
|
||||
SrsCommonMessage();
|
||||
public:
|
||||
virtual ~SrsCommonMessage();
|
||||
};
|
||||
|
||||
/**
|
||||
* shared ptr message.
|
||||
* for audio/video/data message that need less memory copy.
|
||||
* and only for output.
|
||||
*
|
||||
* create first object by constructor and create(),
|
||||
* use copy if need reference count message.
|
||||
*
|
||||
*/
|
||||
class SrsSharedPtrMessage
|
||||
{
|
||||
// 4.1. Message Header
|
||||
public:
|
||||
SrsMessageHeader header;
|
||||
// 4.2. Message Payload
|
||||
public:
|
||||
/**
|
||||
* current message parsed size,
|
||||
* size <= header.payload_length
|
||||
* for the payload maybe sent in multiple chunks.
|
||||
*/
|
||||
int size;
|
||||
/**
|
||||
* the payload of message, the SrsCommonMessage never know about the detail of payload,
|
||||
* user must use SrsProtocol.decode_message to get concrete packet.
|
||||
* @remark, not all message payload can be decoded to packet. for example,
|
||||
* video/audio packet use raw bytes, no video/audio packet.
|
||||
*/
|
||||
char* payload;
|
||||
private:
|
||||
class __SrsSharedPtr
|
||||
{
|
||||
public:
|
||||
char* payload;
|
||||
int size;
|
||||
int shared_count;
|
||||
|
||||
__SrsSharedPtr();
|
||||
virtual ~__SrsSharedPtr();
|
||||
};
|
||||
__SrsSharedPtr* ptr;
|
||||
public:
|
||||
SrsSharedPtrMessage();
|
||||
virtual ~SrsSharedPtrMessage();
|
||||
public:
|
||||
/**
|
||||
* create shared ptr message,
|
||||
* copy header, manage the payload of msg,
|
||||
* set the payload to NULL to prevent double free.
|
||||
* @remark payload of msg set to NULL if success.
|
||||
*/
|
||||
virtual int create(SrsCommonMessage* msg);
|
||||
/**
|
||||
* create shared ptr message,
|
||||
* from the header and payload.
|
||||
* @remark user should never free the payload.
|
||||
*/
|
||||
virtual int create(SrsMessageHeader* pheader, char* payload, int size);
|
||||
/**
|
||||
* get current reference count.
|
||||
* when this object created, count set to 0.
|
||||
* if copy() this object, count increase 1.
|
||||
* if this or copy deleted, free payload when count is 0, or count--.
|
||||
* @remark, assert object is created.
|
||||
*/
|
||||
virtual int count();
|
||||
public:
|
||||
/**
|
||||
* copy current shared ptr message, use ref-count.
|
||||
* @remark, assert object is created.
|
||||
*/
|
||||
virtual SrsSharedPtrMessage* copy();
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -321,14 +390,14 @@ public:
|
|||
* never NULL if decode success.
|
||||
* @remark, drop message when msg is empty or payload length is empty.
|
||||
*/
|
||||
virtual int recv_message(SrsMessage** pmsg);
|
||||
virtual int recv_message(SrsCommonMessage** pmsg);
|
||||
/**
|
||||
* decode bytes oriented RTMP message to RTMP packet,
|
||||
* @param ppacket, output decoded packet,
|
||||
* always NULL if error, never NULL if success.
|
||||
* @return error when unknown packet, error when decode failed.
|
||||
*/
|
||||
virtual int decode_message(SrsMessage* msg, SrsPacket** ppacket);
|
||||
virtual int decode_message(SrsCommonMessage* msg, SrsPacket** ppacket);
|
||||
/**
|
||||
* send the RTMP message and always free it.
|
||||
* user must never free or use the msg after this method,
|
||||
|
@ -336,7 +405,7 @@ public:
|
|||
* @param msg, the msg to send out, never be NULL.
|
||||
* @param stream_id, the stream id of packet to send over, 0 for control message.
|
||||
*/
|
||||
virtual int send_and_free_message(SrsMessage* msg, int stream_id);
|
||||
virtual int send_and_free_message(SrsSharedPtrMessage* msg, int stream_id);
|
||||
/**
|
||||
* send the RTMP message and always free it.
|
||||
* user must never free or use the msg after this method,
|
||||
|
@ -345,7 +414,7 @@ public:
|
|||
* @param nb_msgs, the size of msgs to send out.
|
||||
* @param stream_id, the stream id of packet to send over, 0 for control message.
|
||||
*/
|
||||
virtual int send_and_free_messages(SrsMessage** msgs, int nb_msgs, int stream_id);
|
||||
virtual int send_and_free_messages(SrsSharedPtrMessage** msgs, int nb_msgs, int stream_id);
|
||||
/**
|
||||
* send the RTMP packet and always free it.
|
||||
* user must never free or use the packet after this method,
|
||||
|
@ -371,7 +440,7 @@ public:
|
|||
* if need to set timeout, use set timeout of SrsProtocol.
|
||||
*/
|
||||
template<class T>
|
||||
int expect_message(SrsMessage** pmsg, T** ppacket)
|
||||
int expect_message(SrsCommonMessage** pmsg, T** ppacket)
|
||||
{
|
||||
*pmsg = NULL;
|
||||
*ppacket = NULL;
|
||||
|
@ -379,7 +448,7 @@ public:
|
|||
int ret = ERROR_SUCCESS;
|
||||
|
||||
while (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
if ((ret = recv_message(&msg)) != ERROR_SUCCESS) {
|
||||
if (ret != ERROR_SOCKET_TIMEOUT && !srs_is_client_gracefully_close(ret)) {
|
||||
srs_error("recv message failed. ret=%d", ret);
|
||||
|
@ -418,7 +487,7 @@ private:
|
|||
* send out the messages, donot free it,
|
||||
* the caller must free the param msgs.
|
||||
*/
|
||||
virtual int do_send_messages(SrsMessage** msgs, int nb_msgs);
|
||||
virtual int do_send_messages(SrsSharedPtrMessage** msgs, int nb_msgs);
|
||||
/**
|
||||
* underlayer api for send and free packet.
|
||||
*/
|
||||
|
@ -442,7 +511,7 @@ private:
|
|||
* return success and pmsg set to NULL if no entire message got,
|
||||
* return success and pmsg set to entire message if got one.
|
||||
*/
|
||||
virtual int recv_interlaced_message(SrsMessage** pmsg);
|
||||
virtual int recv_interlaced_message(SrsCommonMessage** pmsg);
|
||||
/**
|
||||
* read the chunk basic header(fmt, cid) from chunk stream.
|
||||
* user can discovery a SrsChunkStream by cid.
|
||||
|
@ -457,15 +526,15 @@ private:
|
|||
* read the chunk payload, remove the used bytes in buffer,
|
||||
* if got entire message, set the pmsg.
|
||||
*/
|
||||
virtual int read_message_payload(SrsChunkStream* chunk, SrsMessage** pmsg);
|
||||
virtual int read_message_payload(SrsChunkStream* chunk, SrsCommonMessage** pmsg);
|
||||
/**
|
||||
* when recv message, update the context.
|
||||
*/
|
||||
virtual int on_recv_message(SrsMessage* msg);
|
||||
virtual int on_recv_message(SrsCommonMessage* msg);
|
||||
/**
|
||||
* when message sentout, update the context.
|
||||
*/
|
||||
virtual int on_send_packet(SrsMessage* msg, SrsPacket* packet);
|
||||
virtual int on_send_packet(SrsSharedPtrMessage* msg, SrsPacket* packet);
|
||||
private:
|
||||
/**
|
||||
* auto response the ack message.
|
||||
|
@ -505,7 +574,7 @@ public:
|
|||
/**
|
||||
* partially read message.
|
||||
*/
|
||||
SrsMessage* msg;
|
||||
SrsCommonMessage* msg;
|
||||
/**
|
||||
* decoded msg count, to identify whether the chunk stream is fresh.
|
||||
*/
|
||||
|
@ -515,75 +584,6 @@ public:
|
|||
virtual ~SrsChunkStream();
|
||||
};
|
||||
|
||||
/**
|
||||
* the common message used free the payload in common way.
|
||||
*/
|
||||
class SrsCommonMessage : public SrsMessage
|
||||
{
|
||||
public:
|
||||
SrsCommonMessage();
|
||||
virtual ~SrsCommonMessage();
|
||||
};
|
||||
|
||||
/**
|
||||
* shared ptr message.
|
||||
* for audio/video/data message that need less memory copy.
|
||||
* and only for output.
|
||||
*
|
||||
* create first object by constructor and create(),
|
||||
* use copy if need reference count message.
|
||||
*
|
||||
* Usage:
|
||||
* SrsSharedPtrMessage msg;
|
||||
*
|
||||
*/
|
||||
class SrsSharedPtrMessage : public SrsMessage
|
||||
{
|
||||
private:
|
||||
class __SrsSharedPtr
|
||||
{
|
||||
public:
|
||||
char* payload;
|
||||
int size;
|
||||
int shared_count;
|
||||
|
||||
__SrsSharedPtr();
|
||||
virtual ~__SrsSharedPtr();
|
||||
};
|
||||
__SrsSharedPtr* ptr;
|
||||
public:
|
||||
SrsSharedPtrMessage();
|
||||
virtual ~SrsSharedPtrMessage();
|
||||
public:
|
||||
/**
|
||||
* create shared ptr message,
|
||||
* copy header, manage the payload of msg,
|
||||
* set the payload to NULL to prevent double free.
|
||||
* @remark payload of msg set to NULL if success.
|
||||
*/
|
||||
virtual int create(SrsMessage* msg);
|
||||
/**
|
||||
* create shared ptr message,
|
||||
* from the header and payload.
|
||||
* @remark user should never free the payload.
|
||||
*/
|
||||
virtual int create(SrsMessageHeader* pheader, char* payload, int size);
|
||||
/**
|
||||
* get current reference count.
|
||||
* when this object created, count set to 0.
|
||||
* if copy() this object, count increase 1.
|
||||
* if this or copy deleted, free payload when count is 0, or count--.
|
||||
* @remark, assert object is created.
|
||||
*/
|
||||
virtual int count();
|
||||
public:
|
||||
/**
|
||||
* copy current shared ptr message, use ref-count.
|
||||
* @remark, assert object is created.
|
||||
*/
|
||||
virtual SrsSharedPtrMessage* copy();
|
||||
};
|
||||
|
||||
/**
|
||||
* the decoded message payload.
|
||||
* @remark we seperate the packet from message,
|
||||
|
@ -1227,7 +1227,7 @@ protected:
|
|||
|
||||
/**
|
||||
* onStatus command, AMF0 Call
|
||||
* @remark, user must set the stream_id by SrsMessage.set_packet().
|
||||
* @remark, user must set the stream_id by SrsCommonMessage.set_packet().
|
||||
*/
|
||||
class SrsOnStatusCallPacket : public SrsPacket
|
||||
{
|
||||
|
@ -1336,7 +1336,7 @@ private:
|
|||
|
||||
/**
|
||||
* onStatus data, AMF0 Data
|
||||
* @remark, user must set the stream_id by SrsMessage.set_packet().
|
||||
* @remark, user must set the stream_id by SrsCommonMessage.set_packet().
|
||||
*/
|
||||
class SrsOnStatusDataPacket : public SrsPacket
|
||||
{
|
||||
|
@ -1365,7 +1365,7 @@ protected:
|
|||
|
||||
/**
|
||||
* AMF0Data RtmpSampleAccess
|
||||
* @remark, user must set the stream_id by SrsMessage.set_packet().
|
||||
* @remark, user must set the stream_id by SrsCommonMessage.set_packet().
|
||||
*/
|
||||
class SrsSampleAccessPacket : public SrsPacket
|
||||
{
|
||||
|
|
|
@ -635,9 +635,9 @@ VOID TEST(ProtocolStackTest, ProtocolRecvMessage)
|
|||
};
|
||||
bio.in_buffer.append(data, sizeof(data));
|
||||
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
|
||||
SrsPacket* pkt = NULL;
|
||||
EXPECT_TRUE(ERROR_SUCCESS == proto.decode_message(msg, &pkt));
|
||||
|
@ -671,9 +671,9 @@ VOID TEST(ProtocolStackTest, ProtocolRecvMessageBug98)
|
|||
};
|
||||
bio.in_buffer.append(data, sizeof(data));
|
||||
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
|
||||
SrsPacket* pkt = NULL;
|
||||
EXPECT_TRUE(ERROR_SUCCESS == proto.decode_message(msg, &pkt));
|
||||
|
@ -706,9 +706,9 @@ VOID TEST(ProtocolStackTest, ProtocolRecvAckSizeMessage)
|
|||
};
|
||||
bio.in_buffer.append(data, sizeof(data));
|
||||
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
|
||||
SrsPacket* pkt = NULL;
|
||||
EXPECT_TRUE(ERROR_SUCCESS == proto.decode_message(msg, &pkt));
|
||||
|
@ -740,9 +740,9 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVMessage)
|
|||
};
|
||||
bio.in_buffer.append(data, sizeof(data));
|
||||
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
}
|
||||
|
||||
|
@ -767,9 +767,9 @@ VOID TEST(ProtocolStackTest, ProtocolRecvAMessage)
|
|||
};
|
||||
bio.in_buffer.append(data, sizeof(data));
|
||||
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_audio());
|
||||
}
|
||||
|
||||
|
@ -813,9 +813,9 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVMessage2Trunk)
|
|||
};
|
||||
bio.in_buffer.append(data, sizeof(data));
|
||||
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
}
|
||||
|
||||
|
@ -904,15 +904,15 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVAMessage)
|
|||
}
|
||||
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_audio());
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
}
|
||||
}
|
||||
|
@ -1022,15 +1022,15 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVAFmt1)
|
|||
}
|
||||
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_audio());
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
}
|
||||
}
|
||||
|
@ -1138,15 +1138,15 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVAFmt2)
|
|||
}
|
||||
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_audio());
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
}
|
||||
}
|
||||
|
@ -1253,15 +1253,15 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVAFmt3)
|
|||
}
|
||||
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_audio());
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
}
|
||||
}
|
||||
|
@ -1396,25 +1396,25 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVAVMessage)
|
|||
}
|
||||
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x10, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_audio());
|
||||
EXPECT_EQ(0x15, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x20, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
|
@ -1564,25 +1564,25 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVAVFmt1)
|
|||
}
|
||||
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x10, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_audio());
|
||||
EXPECT_EQ(0x15, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x22, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
|
@ -1730,25 +1730,25 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVAVFmt2)
|
|||
}
|
||||
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x10, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_audio());
|
||||
EXPECT_EQ(0x15, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x22, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
|
@ -1895,25 +1895,25 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVAVFmt3)
|
|||
}
|
||||
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x10, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_audio());
|
||||
EXPECT_EQ(0x15, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x20, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
|
@ -2095,33 +2095,33 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVAVVMessage)
|
|||
}
|
||||
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x10, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_audio());
|
||||
EXPECT_EQ(0x15, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x20, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x30, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
|
@ -2315,33 +2315,33 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVAVVFmt1)
|
|||
}
|
||||
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x10, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_audio());
|
||||
EXPECT_EQ(0x15, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x20, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x30, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
|
@ -2531,33 +2531,33 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVAVVFmt2)
|
|||
}
|
||||
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x10, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_audio());
|
||||
EXPECT_EQ(0x15, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x20, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x30, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
|
@ -2745,33 +2745,33 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVAVVFmt3)
|
|||
}
|
||||
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x10, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_audio());
|
||||
EXPECT_EQ(0x15, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x20, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x30, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
|
@ -2965,33 +2965,33 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVAVVFmt11)
|
|||
}
|
||||
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x10, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_audio());
|
||||
EXPECT_EQ(0x15, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x20, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x40, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
|
@ -3187,33 +3187,33 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVAVVFmt11Length)
|
|||
}
|
||||
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x10, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_audio());
|
||||
EXPECT_EQ(0x15, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x20, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x40, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
|
@ -3405,33 +3405,33 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVAVVFmt12)
|
|||
}
|
||||
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x10, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_audio());
|
||||
EXPECT_EQ(0x15, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x20, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x40, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
|
@ -3626,35 +3626,35 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVAVVFmt12Length)
|
|||
}
|
||||
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x10, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
EXPECT_EQ(0x110, msg->header.payload_length);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_audio());
|
||||
EXPECT_EQ(0x15, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x20, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
EXPECT_EQ(0x120, msg->header.payload_length);
|
||||
}
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x40, msg->header.timestamp);
|
||||
EXPECT_EQ(0x01, msg->header.stream_id);
|
||||
|
@ -3697,9 +3697,9 @@ VOID TEST(ProtocolStackTest, ProtocolRecvExtTimeMessage)
|
|||
};
|
||||
bio.in_buffer.append(data, sizeof(data));
|
||||
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x10, msg->header.timestamp);
|
||||
}
|
||||
|
@ -3739,9 +3739,9 @@ VOID TEST(ProtocolStackTest, ProtocolRecvExtTimeMessage2)
|
|||
};
|
||||
bio.in_buffer.append(data, sizeof(data));
|
||||
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
EXPECT_EQ(0x7f010203, msg->header.timestamp);
|
||||
}
|
||||
|
@ -3783,9 +3783,9 @@ VOID TEST(ProtocolStackTest, ProtocolRecvExtTimeMessage3)
|
|||
};
|
||||
bio.in_buffer.append(data, sizeof(data));
|
||||
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
// always use 31bits timestamp
|
||||
EXPECT_EQ(0x7f010203, msg->header.timestamp);
|
||||
|
@ -3856,9 +3856,9 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVExtTime2Trunk)
|
|||
};
|
||||
bio.in_buffer.append(data, sizeof(data));
|
||||
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
// 0xCX with extended timestamp.
|
||||
EXPECT_EQ(0x00010203, msg->header.timestamp);
|
||||
|
@ -3911,9 +3911,9 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVExtTime2Trunk2)
|
|||
};
|
||||
bio.in_buffer.append(data, sizeof(data));
|
||||
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
// 0xCX without extended timestamp.
|
||||
EXPECT_EQ(0x00010203, msg->header.timestamp);
|
||||
|
@ -3962,9 +3962,9 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVCid1BMin)
|
|||
};
|
||||
bio.in_buffer.append(data, sizeof(data));
|
||||
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
// 1B cid(6bits), min is 2
|
||||
EXPECT_EQ(0x02, msg->header.perfer_cid);
|
||||
|
@ -4013,9 +4013,9 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVCid1BNormal)
|
|||
};
|
||||
bio.in_buffer.append(data, sizeof(data));
|
||||
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
// 1B cid(6bits), cid in 2-63
|
||||
EXPECT_EQ(0x09, msg->header.perfer_cid);
|
||||
|
@ -4064,9 +4064,9 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVCid1BMax)
|
|||
};
|
||||
bio.in_buffer.append(data, sizeof(data));
|
||||
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
// 1B cid(6bits), max is 63
|
||||
EXPECT_EQ(0x3F, msg->header.perfer_cid);
|
||||
|
@ -4115,9 +4115,9 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVCid2BMin)
|
|||
};
|
||||
bio.in_buffer.append(data, sizeof(data));
|
||||
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
// 2B cid(8bits), min is 64
|
||||
EXPECT_EQ(64, msg->header.perfer_cid);
|
||||
|
@ -4166,9 +4166,9 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVCid2BNormal)
|
|||
};
|
||||
bio.in_buffer.append(data, sizeof(data));
|
||||
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
// 2B cid(8bits), cid in 64-319
|
||||
EXPECT_EQ(0x10+64, msg->header.perfer_cid);
|
||||
|
@ -4217,9 +4217,9 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVCid2BNormal2)
|
|||
};
|
||||
bio.in_buffer.append(data, sizeof(data));
|
||||
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
// 2B cid(8bits), cid in 64-319
|
||||
EXPECT_EQ(0x11+64, msg->header.perfer_cid);
|
||||
|
@ -4268,9 +4268,9 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVCid2BMax)
|
|||
};
|
||||
bio.in_buffer.append(data, sizeof(data));
|
||||
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
// 2B cid(68bits), max is 319
|
||||
EXPECT_EQ(319, msg->header.perfer_cid);
|
||||
|
@ -4319,9 +4319,9 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVCid3BMin)
|
|||
};
|
||||
bio.in_buffer.append(data, sizeof(data));
|
||||
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
// 3B cid(16bits), min is 64
|
||||
EXPECT_EQ(64, msg->header.perfer_cid);
|
||||
|
@ -4370,9 +4370,9 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVCid3BNormal)
|
|||
};
|
||||
bio.in_buffer.append(data, sizeof(data));
|
||||
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
// 3B cid(16bits), cid in 64-65599
|
||||
EXPECT_EQ(0x10*256+64, msg->header.perfer_cid);
|
||||
|
@ -4421,9 +4421,9 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVCid3BNormal2)
|
|||
};
|
||||
bio.in_buffer.append(data, sizeof(data));
|
||||
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
// 3B cid(16bits), cid in 64-65599
|
||||
EXPECT_EQ(0x01 + (0x10*256) + 64, msg->header.perfer_cid);
|
||||
|
@ -4472,9 +4472,9 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVCid3BNormal3)
|
|||
};
|
||||
bio.in_buffer.append(data, sizeof(data));
|
||||
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
// 3B cid(16bits), cid in 64-65599
|
||||
EXPECT_EQ(0xFF + (0x10*256) + 64, msg->header.perfer_cid);
|
||||
|
@ -4523,9 +4523,9 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVCid3BNormal4)
|
|||
};
|
||||
bio.in_buffer.append(data, sizeof(data));
|
||||
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
// 3B cid(16bits), cid in 64-65599
|
||||
EXPECT_EQ(0x02 + (0x10*256) + 64, msg->header.perfer_cid);
|
||||
|
@ -4574,9 +4574,9 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVCid3BMax)
|
|||
};
|
||||
bio.in_buffer.append(data, sizeof(data));
|
||||
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
// 2B cid(16bits), max is 65599
|
||||
EXPECT_EQ(65599, msg->header.perfer_cid);
|
||||
|
@ -4612,9 +4612,9 @@ VOID TEST(ProtocolStackTest, ProtocolRecvV0LenMessage)
|
|||
};
|
||||
bio.in_buffer.append(data, sizeof(data));
|
||||
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_video());
|
||||
// protocol stack will ignore the empty video message.
|
||||
EXPECT_EQ(4, msg->header.payload_length);
|
||||
|
@ -4630,7 +4630,7 @@ VOID TEST(ProtocolStackTest, ProtocolSendVMessage)
|
|||
|
||||
char data[] = {0x01, 0x02, 0x03, 0x04};
|
||||
|
||||
SrsMessage* msg = new SrsCommonMessage();
|
||||
SrsCommonMessage* msg = new SrsCommonMessage();
|
||||
msg->size = sizeof(data);
|
||||
msg->payload = new char[msg->size];
|
||||
memcpy(msg->payload, data, msg->size);
|
||||
|
@ -5320,7 +5320,7 @@ VOID TEST(ProtocolStackTest, ProtocolRecvVMessageFmtInvalid)
|
|||
};
|
||||
bio.in_buffer.append(data, sizeof(data));
|
||||
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
EXPECT_FALSE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
}
|
||||
|
||||
|
@ -5340,7 +5340,7 @@ VOID TEST(ProtocolStackTest, ProtocolAckSizeFlow)
|
|||
}
|
||||
|
||||
if (true) {
|
||||
SrsMessage* msg = new SrsCommonMessage();
|
||||
SrsCommonMessage* msg = new SrsCommonMessage();
|
||||
msg->header.payload_length = msg->size = 4096;
|
||||
msg->payload = new char[msg->size];
|
||||
|
||||
|
@ -5358,16 +5358,16 @@ VOID TEST(ProtocolStackTest, ProtocolAckSizeFlow)
|
|||
|
||||
// recv SrsSetWindowAckSizePacket
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
ASSERT_TRUE(msg->header.is_window_ackledgement_size());
|
||||
}
|
||||
// recv video
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
ASSERT_TRUE(msg->header.is_video());
|
||||
}
|
||||
|
||||
|
@ -5378,15 +5378,15 @@ VOID TEST(ProtocolStackTest, ProtocolAckSizeFlow)
|
|||
}
|
||||
// recv auto send acked size. #1
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
ASSERT_TRUE(msg->header.is_ackledgement());
|
||||
}
|
||||
|
||||
// send again
|
||||
if (true) {
|
||||
SrsMessage* msg = new SrsCommonMessage();
|
||||
SrsCommonMessage* msg = new SrsCommonMessage();
|
||||
msg->header.payload_length = msg->size = 4096;
|
||||
msg->payload = new char[msg->size];
|
||||
|
||||
|
@ -5402,9 +5402,9 @@ VOID TEST(ProtocolStackTest, ProtocolAckSizeFlow)
|
|||
}
|
||||
// recv video
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
ASSERT_TRUE(msg->header.is_video());
|
||||
}
|
||||
|
||||
|
@ -5415,9 +5415,9 @@ VOID TEST(ProtocolStackTest, ProtocolAckSizeFlow)
|
|||
}
|
||||
// recv auto send acked size. #2
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
ASSERT_TRUE(msg->header.is_ackledgement());
|
||||
}
|
||||
}
|
||||
|
@ -5444,9 +5444,9 @@ VOID TEST(ProtocolStackTest, ProtocolPingFlow)
|
|||
}
|
||||
// recv ping
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
EXPECT_TRUE(msg->header.is_user_control_message());
|
||||
}
|
||||
|
||||
|
@ -5458,9 +5458,9 @@ VOID TEST(ProtocolStackTest, ProtocolPingFlow)
|
|||
}
|
||||
// recv ping
|
||||
if (true) {
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.recv_message(&msg));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
ASSERT_TRUE(msg->header.is_user_control_message());
|
||||
|
||||
SrsPacket* pkt = NULL;
|
||||
|
@ -5519,10 +5519,10 @@ VOID TEST(ProtocolStackTest, ProtocolExcpectMessage)
|
|||
};
|
||||
bio.in_buffer.append(data, sizeof(data));
|
||||
|
||||
SrsMessage* msg = NULL;
|
||||
SrsCommonMessage* msg = NULL;
|
||||
SrsConnectAppPacket* pkt = NULL;
|
||||
ASSERT_TRUE(ERROR_SUCCESS == proto.expect_message<SrsConnectAppPacket>(&msg, &pkt));
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCommonMessage, msg);
|
||||
SrsAutoFree(SrsConnectAppPacket, pkt);
|
||||
ASSERT_TRUE(NULL != pkt);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue