mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
amf0 utest: null,undefined,object-eof to any
This commit is contained in:
parent
e40be6e89d
commit
bfe771bbba
9 changed files with 293 additions and 227 deletions
|
@ -56,8 +56,8 @@ using namespace std;
|
|||
// User defined
|
||||
#define RTMP_AMF0_Invalid 0x3F
|
||||
|
||||
int srs_amf0_read_object_eof(SrsStream* stream, SrsAmf0ObjectEOF*&);
|
||||
int srs_amf0_write_object_eof(SrsStream* stream, SrsAmf0ObjectEOF*);
|
||||
int srs_amf0_read_object_eof(SrsStream* stream, __SrsAmf0ObjectEOF*&);
|
||||
int srs_amf0_write_object_eof(SrsStream* stream, __SrsAmf0ObjectEOF*);
|
||||
int srs_amf0_read_any(SrsStream* stream, SrsAmf0Any*& value);
|
||||
int srs_amf0_write_any(SrsStream* stream, SrsAmf0Any* value);
|
||||
|
||||
|
@ -117,6 +117,12 @@ bool SrsAmf0Any::to_boolean()
|
|||
return o->value;
|
||||
}
|
||||
|
||||
double SrsAmf0Any::to_number()
|
||||
{
|
||||
__SrsAmf0Number* o = srs_amf0_convert<__SrsAmf0Number>(this);
|
||||
return o->value;
|
||||
}
|
||||
|
||||
bool SrsAmf0Any::is_object_eof()
|
||||
{
|
||||
return marker == RTMP_AMF0_ObjectEnd;
|
||||
|
@ -132,69 +138,26 @@ SrsAmf0Any* SrsAmf0Any::boolean(bool value)
|
|||
return new __SrsAmf0Boolean(value);
|
||||
}
|
||||
|
||||
SrsAmf0Number::SrsAmf0Number(double _value)
|
||||
SrsAmf0Any* SrsAmf0Any::number(double value)
|
||||
{
|
||||
marker = RTMP_AMF0_Number;
|
||||
value = _value;
|
||||
return new __SrsAmf0Number(value);
|
||||
}
|
||||
|
||||
SrsAmf0Number::~SrsAmf0Number()
|
||||
SrsAmf0Any* SrsAmf0Any::null()
|
||||
{
|
||||
return new __SrsAmf0Null();
|
||||
}
|
||||
|
||||
SrsAmf0Any* SrsAmf0Any::undefined()
|
||||
{
|
||||
return new __SrsAmf0Undefined();
|
||||
}
|
||||
|
||||
__SrsUnSortedHashtable::__SrsUnSortedHashtable()
|
||||
{
|
||||
}
|
||||
|
||||
int SrsAmf0Number::size()
|
||||
{
|
||||
return SrsAmf0Size::number();
|
||||
}
|
||||
|
||||
SrsAmf0Null::SrsAmf0Null()
|
||||
{
|
||||
marker = RTMP_AMF0_Null;
|
||||
}
|
||||
|
||||
SrsAmf0Null::~SrsAmf0Null()
|
||||
{
|
||||
}
|
||||
|
||||
int SrsAmf0Null::size()
|
||||
{
|
||||
return SrsAmf0Size::null();
|
||||
}
|
||||
|
||||
SrsAmf0Undefined::SrsAmf0Undefined()
|
||||
{
|
||||
marker = RTMP_AMF0_Undefined;
|
||||
}
|
||||
|
||||
SrsAmf0Undefined::~SrsAmf0Undefined()
|
||||
{
|
||||
}
|
||||
|
||||
int SrsAmf0Undefined::size()
|
||||
{
|
||||
return SrsAmf0Size::undefined();
|
||||
}
|
||||
|
||||
SrsAmf0ObjectEOF::SrsAmf0ObjectEOF()
|
||||
{
|
||||
marker = RTMP_AMF0_ObjectEnd;
|
||||
utf8_empty = 0x00;
|
||||
}
|
||||
|
||||
SrsAmf0ObjectEOF::~SrsAmf0ObjectEOF()
|
||||
{
|
||||
}
|
||||
|
||||
int SrsAmf0ObjectEOF::size()
|
||||
{
|
||||
return SrsAmf0Size::object_eof();
|
||||
}
|
||||
|
||||
SrsUnSortedHashtable::SrsUnSortedHashtable()
|
||||
{
|
||||
}
|
||||
|
||||
SrsUnSortedHashtable::~SrsUnSortedHashtable()
|
||||
__SrsUnSortedHashtable::~__SrsUnSortedHashtable()
|
||||
{
|
||||
std::vector<SrsObjectPropertyType>::iterator it;
|
||||
for (it = properties.begin(); it != properties.end(); ++it) {
|
||||
|
@ -205,31 +168,31 @@ SrsUnSortedHashtable::~SrsUnSortedHashtable()
|
|||
properties.clear();
|
||||
}
|
||||
|
||||
int SrsUnSortedHashtable::size()
|
||||
int __SrsUnSortedHashtable::size()
|
||||
{
|
||||
return (int)properties.size();
|
||||
}
|
||||
|
||||
void SrsUnSortedHashtable::clear()
|
||||
void __SrsUnSortedHashtable::clear()
|
||||
{
|
||||
properties.clear();
|
||||
}
|
||||
|
||||
std::string SrsUnSortedHashtable::key_at(int index)
|
||||
std::string __SrsUnSortedHashtable::key_at(int index)
|
||||
{
|
||||
srs_assert(index < size());
|
||||
SrsObjectPropertyType& elem = properties[index];
|
||||
return elem.first;
|
||||
}
|
||||
|
||||
SrsAmf0Any* SrsUnSortedHashtable::value_at(int index)
|
||||
SrsAmf0Any* __SrsUnSortedHashtable::value_at(int index)
|
||||
{
|
||||
srs_assert(index < size());
|
||||
SrsObjectPropertyType& elem = properties[index];
|
||||
return elem.second;
|
||||
}
|
||||
|
||||
void SrsUnSortedHashtable::set(std::string key, SrsAmf0Any* value)
|
||||
void __SrsUnSortedHashtable::set(std::string key, SrsAmf0Any* value)
|
||||
{
|
||||
std::vector<SrsObjectPropertyType>::iterator it;
|
||||
|
||||
|
@ -248,7 +211,7 @@ void SrsUnSortedHashtable::set(std::string key, SrsAmf0Any* value)
|
|||
properties.push_back(std::make_pair(key, value));
|
||||
}
|
||||
|
||||
SrsAmf0Any* SrsUnSortedHashtable::get_property(std::string name)
|
||||
SrsAmf0Any* __SrsUnSortedHashtable::get_property(std::string name)
|
||||
{
|
||||
std::vector<SrsObjectPropertyType>::iterator it;
|
||||
|
||||
|
@ -264,7 +227,7 @@ SrsAmf0Any* SrsUnSortedHashtable::get_property(std::string name)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
SrsAmf0Any* SrsUnSortedHashtable::ensure_property_string(std::string name)
|
||||
SrsAmf0Any* __SrsUnSortedHashtable::ensure_property_string(std::string name)
|
||||
{
|
||||
SrsAmf0Any* prop = get_property(name);
|
||||
|
||||
|
@ -279,7 +242,7 @@ SrsAmf0Any* SrsUnSortedHashtable::ensure_property_string(std::string name)
|
|||
return prop;
|
||||
}
|
||||
|
||||
SrsAmf0Any* SrsUnSortedHashtable::ensure_property_number(std::string name)
|
||||
SrsAmf0Any* __SrsUnSortedHashtable::ensure_property_number(std::string name)
|
||||
{
|
||||
SrsAmf0Any* prop = get_property(name);
|
||||
|
||||
|
@ -294,6 +257,21 @@ SrsAmf0Any* SrsUnSortedHashtable::ensure_property_number(std::string name)
|
|||
return prop;
|
||||
}
|
||||
|
||||
__SrsAmf0ObjectEOF::__SrsAmf0ObjectEOF()
|
||||
{
|
||||
marker = RTMP_AMF0_ObjectEnd;
|
||||
utf8_empty = 0x00;
|
||||
}
|
||||
|
||||
__SrsAmf0ObjectEOF::~__SrsAmf0ObjectEOF()
|
||||
{
|
||||
}
|
||||
|
||||
int __SrsAmf0ObjectEOF::size()
|
||||
{
|
||||
return SrsAmf0Size::object_eof();
|
||||
}
|
||||
|
||||
SrsAmf0Object::SrsAmf0Object()
|
||||
{
|
||||
marker = RTMP_AMF0_Object;
|
||||
|
@ -709,6 +687,49 @@ int __SrsAmf0Boolean::size()
|
|||
return SrsAmf0Size::boolean();
|
||||
}
|
||||
|
||||
__SrsAmf0Number::__SrsAmf0Number(double _value)
|
||||
{
|
||||
marker = RTMP_AMF0_Number;
|
||||
value = _value;
|
||||
}
|
||||
|
||||
__SrsAmf0Number::~__SrsAmf0Number()
|
||||
{
|
||||
}
|
||||
|
||||
int __SrsAmf0Number::size()
|
||||
{
|
||||
return SrsAmf0Size::number();
|
||||
}
|
||||
|
||||
__SrsAmf0Null::__SrsAmf0Null()
|
||||
{
|
||||
marker = RTMP_AMF0_Null;
|
||||
}
|
||||
|
||||
__SrsAmf0Null::~__SrsAmf0Null()
|
||||
{
|
||||
}
|
||||
|
||||
int __SrsAmf0Null::size()
|
||||
{
|
||||
return SrsAmf0Size::null();
|
||||
}
|
||||
|
||||
__SrsAmf0Undefined::__SrsAmf0Undefined()
|
||||
{
|
||||
marker = RTMP_AMF0_Undefined;
|
||||
}
|
||||
|
||||
__SrsAmf0Undefined::~__SrsAmf0Undefined()
|
||||
{
|
||||
}
|
||||
|
||||
int __SrsAmf0Undefined::size()
|
||||
{
|
||||
return SrsAmf0Size::undefined();
|
||||
}
|
||||
|
||||
int srs_amf0_read_utf8(SrsStream* stream, std::string& value)
|
||||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
@ -1073,22 +1094,21 @@ int srs_amf0_read_any(SrsStream* stream, SrsAmf0Any*& value)
|
|||
if ((ret = srs_amf0_read_number(stream, data)) != ERROR_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
value = new SrsAmf0Number();
|
||||
srs_amf0_convert<SrsAmf0Number>(value)->value = data;
|
||||
value = SrsAmf0Any::number(data);
|
||||
return ret;
|
||||
}
|
||||
case RTMP_AMF0_Null: {
|
||||
stream->skip(1);
|
||||
value = new SrsAmf0Null();
|
||||
value = new __SrsAmf0Null();
|
||||
return ret;
|
||||
}
|
||||
case RTMP_AMF0_Undefined: {
|
||||
stream->skip(1);
|
||||
value = new SrsAmf0Undefined();
|
||||
value = new __SrsAmf0Undefined();
|
||||
return ret;
|
||||
}
|
||||
case RTMP_AMF0_ObjectEnd: {
|
||||
SrsAmf0ObjectEOF* p = NULL;
|
||||
__SrsAmf0ObjectEOF* p = NULL;
|
||||
if ((ret = srs_amf0_read_object_eof(stream, p)) != ERROR_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
@ -1137,7 +1157,7 @@ int srs_amf0_write_any(SrsStream* stream, SrsAmf0Any* value)
|
|||
return srs_amf0_write_boolean(stream, data);
|
||||
}
|
||||
case RTMP_AMF0_Number: {
|
||||
double data = srs_amf0_convert<SrsAmf0Number>(value)->value;
|
||||
double data = srs_amf0_convert<__SrsAmf0Number>(value)->value;
|
||||
return srs_amf0_write_number(stream, data);
|
||||
}
|
||||
case RTMP_AMF0_Null: {
|
||||
|
@ -1147,7 +1167,7 @@ int srs_amf0_write_any(SrsStream* stream, SrsAmf0Any* value)
|
|||
return srs_amf0_write_undefined(stream);
|
||||
}
|
||||
case RTMP_AMF0_ObjectEnd: {
|
||||
SrsAmf0ObjectEOF* p = srs_amf0_convert<SrsAmf0ObjectEOF>(value);
|
||||
__SrsAmf0ObjectEOF* p = srs_amf0_convert<__SrsAmf0ObjectEOF>(value);
|
||||
return srs_amf0_write_object_eof(stream, p);
|
||||
}
|
||||
case RTMP_AMF0_Object: {
|
||||
|
@ -1169,7 +1189,7 @@ int srs_amf0_write_any(SrsStream* stream, SrsAmf0Any* value)
|
|||
return ret;
|
||||
}
|
||||
|
||||
int srs_amf0_read_object_eof(SrsStream* stream, SrsAmf0ObjectEOF*& value)
|
||||
int srs_amf0_read_object_eof(SrsStream* stream, __SrsAmf0ObjectEOF*& value)
|
||||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
|
@ -1207,12 +1227,12 @@ int srs_amf0_read_object_eof(SrsStream* stream, SrsAmf0ObjectEOF*& value)
|
|||
}
|
||||
srs_verbose("amf0 read object eof marker success");
|
||||
|
||||
value = new SrsAmf0ObjectEOF();
|
||||
value = new __SrsAmf0ObjectEOF();
|
||||
srs_verbose("amf0 read object eof success");
|
||||
|
||||
return ret;
|
||||
}
|
||||
int srs_amf0_write_object_eof(SrsStream* stream, SrsAmf0ObjectEOF* value)
|
||||
int srs_amf0_write_object_eof(SrsStream* stream, __SrsAmf0ObjectEOF* value)
|
||||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
|
|
|
@ -67,75 +67,22 @@ public:
|
|||
virtual std::string to_str();
|
||||
/**
|
||||
* get the boolean of any when is_boolean() indicates true.
|
||||
* user must ensure the type is a is_boolean, or assert failed.
|
||||
* user must ensure the type is a boolean, or assert failed.
|
||||
*/
|
||||
virtual bool to_boolean();
|
||||
/**
|
||||
* get the number of any when is_number() indicates true.
|
||||
* user must ensure the type is a number, or assert failed.
|
||||
*/
|
||||
virtual double to_number();
|
||||
public:
|
||||
virtual int size() = 0;
|
||||
public:
|
||||
static SrsAmf0Any* str(const char* value = NULL);
|
||||
static SrsAmf0Any* boolean(bool value = false);
|
||||
};
|
||||
|
||||
/**
|
||||
* read amf0 number from stream.
|
||||
* 2.2 Number Type
|
||||
* number-type = number-marker DOUBLE
|
||||
* @return default value is 0.
|
||||
*/
|
||||
class SrsAmf0Number : public SrsAmf0Any
|
||||
{
|
||||
public:
|
||||
double value;
|
||||
|
||||
SrsAmf0Number(double _value = 0.0);
|
||||
virtual ~SrsAmf0Number();
|
||||
|
||||
virtual int size();
|
||||
};
|
||||
|
||||
/**
|
||||
* read amf0 null from stream.
|
||||
* 2.7 null Type
|
||||
* null-type = null-marker
|
||||
*/
|
||||
class SrsAmf0Null : public SrsAmf0Any
|
||||
{
|
||||
public:
|
||||
SrsAmf0Null();
|
||||
virtual ~SrsAmf0Null();
|
||||
|
||||
virtual int size();
|
||||
};
|
||||
|
||||
/**
|
||||
* read amf0 undefined from stream.
|
||||
* 2.8 undefined Type
|
||||
* undefined-type = undefined-marker
|
||||
*/
|
||||
class SrsAmf0Undefined : public SrsAmf0Any
|
||||
{
|
||||
public:
|
||||
SrsAmf0Undefined();
|
||||
virtual ~SrsAmf0Undefined();
|
||||
|
||||
virtual int size();
|
||||
};
|
||||
|
||||
/**
|
||||
* 2.11 Object End Type
|
||||
* object-end-type = UTF-8-empty object-end-marker
|
||||
* 0x00 0x00 0x09
|
||||
*/
|
||||
class SrsAmf0ObjectEOF : public SrsAmf0Any
|
||||
{
|
||||
public:
|
||||
int16_t utf8_empty;
|
||||
|
||||
SrsAmf0ObjectEOF();
|
||||
virtual ~SrsAmf0ObjectEOF();
|
||||
|
||||
virtual int size();
|
||||
static SrsAmf0Any* boolean(bool value = false);
|
||||
static SrsAmf0Any* number(double value = 0.0);
|
||||
static SrsAmf0Any* null();
|
||||
static SrsAmf0Any* undefined();
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -144,14 +91,14 @@ public:
|
|||
* if ordered in map, the string compare order, the FMLE will creash when
|
||||
* get the response of connect app.
|
||||
*/
|
||||
class SrsUnSortedHashtable
|
||||
class __SrsUnSortedHashtable
|
||||
{
|
||||
private:
|
||||
typedef std::pair<std::string, SrsAmf0Any*> SrsObjectPropertyType;
|
||||
std::vector<SrsObjectPropertyType> properties;
|
||||
public:
|
||||
SrsUnSortedHashtable();
|
||||
virtual ~SrsUnSortedHashtable();
|
||||
__SrsUnSortedHashtable();
|
||||
virtual ~__SrsUnSortedHashtable();
|
||||
|
||||
virtual int size();
|
||||
virtual void clear();
|
||||
|
@ -164,6 +111,22 @@ public:
|
|||
virtual SrsAmf0Any* ensure_property_number(std::string name);
|
||||
};
|
||||
|
||||
/**
|
||||
* 2.11 Object End Type
|
||||
* object-end-type = UTF-8-empty object-end-marker
|
||||
* 0x00 0x00 0x09
|
||||
*/
|
||||
class __SrsAmf0ObjectEOF : public SrsAmf0Any
|
||||
{
|
||||
public:
|
||||
int16_t utf8_empty;
|
||||
|
||||
__SrsAmf0ObjectEOF();
|
||||
virtual ~__SrsAmf0ObjectEOF();
|
||||
|
||||
virtual int size();
|
||||
};
|
||||
|
||||
/**
|
||||
* 2.5 Object Type
|
||||
* anonymous-object-type = object-marker *(object-property)
|
||||
|
@ -172,9 +135,9 @@ public:
|
|||
class SrsAmf0Object : public SrsAmf0Any
|
||||
{
|
||||
private:
|
||||
SrsUnSortedHashtable properties;
|
||||
__SrsUnSortedHashtable properties;
|
||||
public:
|
||||
SrsAmf0ObjectEOF eof;
|
||||
__SrsAmf0ObjectEOF eof;
|
||||
|
||||
SrsAmf0Object();
|
||||
virtual ~SrsAmf0Object();
|
||||
|
@ -201,10 +164,10 @@ public:
|
|||
class SrsAmf0EcmaArray : public SrsAmf0Any
|
||||
{
|
||||
private:
|
||||
SrsUnSortedHashtable properties;
|
||||
__SrsUnSortedHashtable properties;
|
||||
public:
|
||||
int32_t count;
|
||||
SrsAmf0ObjectEOF eof;
|
||||
__SrsAmf0ObjectEOF eof;
|
||||
|
||||
SrsAmf0EcmaArray();
|
||||
virtual ~SrsAmf0EcmaArray();
|
||||
|
@ -276,6 +239,51 @@ public:
|
|||
virtual int size();
|
||||
};
|
||||
|
||||
/**
|
||||
* read amf0 number from stream.
|
||||
* 2.2 Number Type
|
||||
* number-type = number-marker DOUBLE
|
||||
* @return default value is 0.
|
||||
*/
|
||||
class __SrsAmf0Number : public SrsAmf0Any
|
||||
{
|
||||
public:
|
||||
double value;
|
||||
|
||||
__SrsAmf0Number(double _value);
|
||||
virtual ~__SrsAmf0Number();
|
||||
|
||||
virtual int size();
|
||||
};
|
||||
|
||||
/**
|
||||
* read amf0 null from stream.
|
||||
* 2.7 null Type
|
||||
* null-type = null-marker
|
||||
*/
|
||||
class __SrsAmf0Null : public SrsAmf0Any
|
||||
{
|
||||
public:
|
||||
__SrsAmf0Null();
|
||||
virtual ~__SrsAmf0Null();
|
||||
|
||||
virtual int size();
|
||||
};
|
||||
|
||||
/**
|
||||
* read amf0 undefined from stream.
|
||||
* 2.8 undefined Type
|
||||
* undefined-type = undefined-marker
|
||||
*/
|
||||
class __SrsAmf0Undefined : public SrsAmf0Any
|
||||
{
|
||||
public:
|
||||
__SrsAmf0Undefined();
|
||||
virtual ~__SrsAmf0Undefined();
|
||||
|
||||
virtual int size();
|
||||
};
|
||||
|
||||
/**
|
||||
* read amf0 utf8 string from stream.
|
||||
* 1.3.1 Strings and UTF-8
|
||||
|
|
|
@ -284,12 +284,12 @@ int SrsRtmpClient::connect_app(string app, string tc_url)
|
|||
pkt->command_object->set("swfUrl", SrsAmf0Any::str());
|
||||
pkt->command_object->set("tcUrl", SrsAmf0Any::str(tc_url.c_str()));
|
||||
pkt->command_object->set("fpad", SrsAmf0Any::boolean(false));
|
||||
pkt->command_object->set("capabilities", new SrsAmf0Number(239));
|
||||
pkt->command_object->set("audioCodecs", new SrsAmf0Number(3575));
|
||||
pkt->command_object->set("videoCodecs", new SrsAmf0Number(252));
|
||||
pkt->command_object->set("videoFunction", new SrsAmf0Number(1));
|
||||
pkt->command_object->set("capabilities", SrsAmf0Any::number(239));
|
||||
pkt->command_object->set("audioCodecs", SrsAmf0Any::number(3575));
|
||||
pkt->command_object->set("videoCodecs", SrsAmf0Any::number(252));
|
||||
pkt->command_object->set("videoFunction", SrsAmf0Any::number(1));
|
||||
pkt->command_object->set("pageUrl", SrsAmf0Any::str());
|
||||
pkt->command_object->set("objectEncoding", new SrsAmf0Number(0));
|
||||
pkt->command_object->set("objectEncoding", SrsAmf0Any::number(0));
|
||||
|
||||
if ((ret = protocol->send_message(msg)) != ERROR_SUCCESS) {
|
||||
return ret;
|
||||
|
@ -643,7 +643,7 @@ int SrsRtmpServer::connect_app(SrsRequest* req)
|
|||
}
|
||||
|
||||
if ((prop = pkt->command_object->ensure_property_number("objectEncoding")) != NULL) {
|
||||
req->objectEncoding = srs_amf0_convert<SrsAmf0Number>(prop)->value;
|
||||
req->objectEncoding = prop->to_number();
|
||||
}
|
||||
|
||||
srs_info("get connect app message params success.");
|
||||
|
@ -699,13 +699,13 @@ int SrsRtmpServer::response_connect_app(SrsRequest *req, const char* server_ip)
|
|||
SrsConnectAppResPacket* pkt = new SrsConnectAppResPacket();
|
||||
|
||||
pkt->props->set("fmsVer", SrsAmf0Any::str("FMS/"RTMP_SIG_FMS_VER));
|
||||
pkt->props->set("capabilities", new SrsAmf0Number(127));
|
||||
pkt->props->set("mode", new SrsAmf0Number(1));
|
||||
pkt->props->set("capabilities", SrsAmf0Any::number(127));
|
||||
pkt->props->set("mode", SrsAmf0Any::number(1));
|
||||
|
||||
pkt->info->set(StatusLevel, SrsAmf0Any::str(StatusLevelStatus));
|
||||
pkt->info->set(StatusCode, SrsAmf0Any::str(StatusCodeConnectSuccess));
|
||||
pkt->info->set(StatusDescription, SrsAmf0Any::str("Connection succeeded"));
|
||||
pkt->info->set("objectEncoding", new SrsAmf0Number(req->objectEncoding));
|
||||
pkt->info->set("objectEncoding", SrsAmf0Any::number(req->objectEncoding));
|
||||
SrsAmf0EcmaArray* data = new SrsAmf0EcmaArray();
|
||||
pkt->info->set("data", data);
|
||||
|
||||
|
@ -745,7 +745,7 @@ void SrsRtmpServer::response_connect_reject(SrsRequest *req, const char* desc)
|
|||
pkt->props->set(StatusLevel, SrsAmf0Any::str(StatusLevelError));
|
||||
pkt->props->set(StatusCode, SrsAmf0Any::str(StatusCodeConnectRejected));
|
||||
pkt->props->set(StatusDescription, SrsAmf0Any::str(desc));
|
||||
//pkt->props->set("objectEncoding", new SrsAmf0Number(req->objectEncoding));
|
||||
//pkt->props->set("objectEncoding", SrsAmf0Any::number(req->objectEncoding));
|
||||
|
||||
SrsCommonMessage* msg = (new SrsCommonMessage())->set_packet(pkt, 0);
|
||||
if ((ret = protocol->send_message(msg)) != ERROR_SUCCESS) {
|
||||
|
|
|
@ -1957,7 +1957,7 @@ SrsCreateStreamPacket::SrsCreateStreamPacket()
|
|||
{
|
||||
command_name = RTMP_AMF0_COMMAND_CREATE_STREAM;
|
||||
transaction_id = 2;
|
||||
command_object = new SrsAmf0Null();
|
||||
command_object = SrsAmf0Any::null();
|
||||
}
|
||||
|
||||
SrsCreateStreamPacket::~SrsCreateStreamPacket()
|
||||
|
@ -2042,7 +2042,7 @@ SrsCreateStreamResPacket::SrsCreateStreamResPacket(double _transaction_id, doubl
|
|||
{
|
||||
command_name = RTMP_AMF0_COMMAND_RESULT;
|
||||
transaction_id = _transaction_id;
|
||||
command_object = new SrsAmf0Null();
|
||||
command_object = SrsAmf0Any::null();
|
||||
stream_id = _stream_id;
|
||||
}
|
||||
|
||||
|
@ -2140,7 +2140,7 @@ SrsCloseStreamPacket::SrsCloseStreamPacket()
|
|||
{
|
||||
command_name = RTMP_AMF0_COMMAND_CLOSE_STREAM;
|
||||
transaction_id = 0;
|
||||
command_object = new SrsAmf0Null();
|
||||
command_object = SrsAmf0Any::null();
|
||||
}
|
||||
|
||||
SrsCloseStreamPacket::~SrsCloseStreamPacket()
|
||||
|
@ -2175,7 +2175,7 @@ SrsFMLEStartPacket::SrsFMLEStartPacket()
|
|||
{
|
||||
command_name = RTMP_AMF0_COMMAND_RELEASE_STREAM;
|
||||
transaction_id = 0;
|
||||
command_object = new SrsAmf0Null();
|
||||
command_object = SrsAmf0Any::null();
|
||||
}
|
||||
|
||||
SrsFMLEStartPacket::~SrsFMLEStartPacket()
|
||||
|
@ -2298,8 +2298,8 @@ SrsFMLEStartResPacket::SrsFMLEStartResPacket(double _transaction_id)
|
|||
{
|
||||
command_name = RTMP_AMF0_COMMAND_RESULT;
|
||||
transaction_id = _transaction_id;
|
||||
command_object = new SrsAmf0Null();
|
||||
args = new SrsAmf0Undefined();
|
||||
command_object = SrsAmf0Any::null();
|
||||
args = SrsAmf0Any::undefined();
|
||||
}
|
||||
|
||||
SrsFMLEStartResPacket::~SrsFMLEStartResPacket()
|
||||
|
@ -2397,7 +2397,7 @@ SrsPublishPacket::SrsPublishPacket()
|
|||
{
|
||||
command_name = RTMP_AMF0_COMMAND_PUBLISH;
|
||||
transaction_id = 0;
|
||||
command_object = new SrsAmf0Null();
|
||||
command_object = SrsAmf0Any::null();
|
||||
type = "live";
|
||||
}
|
||||
|
||||
|
@ -2506,7 +2506,7 @@ SrsPausePacket::SrsPausePacket()
|
|||
{
|
||||
command_name = RTMP_AMF0_COMMAND_PAUSE;
|
||||
transaction_id = 0;
|
||||
command_object = new SrsAmf0Null();
|
||||
command_object = SrsAmf0Any::null();
|
||||
|
||||
time_ms = 0;
|
||||
is_pause = true;
|
||||
|
@ -2561,7 +2561,7 @@ SrsPlayPacket::SrsPlayPacket()
|
|||
{
|
||||
command_name = RTMP_AMF0_COMMAND_PLAY;
|
||||
transaction_id = 0;
|
||||
command_object = new SrsAmf0Null();
|
||||
command_object = SrsAmf0Any::null();
|
||||
|
||||
start = -2;
|
||||
duration = -1;
|
||||
|
@ -2630,7 +2630,7 @@ int SrsPlayPacket::decode(SrsStream* stream)
|
|||
if (reset_value->is_boolean()) {
|
||||
reset = reset_value->to_boolean();
|
||||
} else if (reset_value->is_number()) {
|
||||
reset = (srs_amf0_convert<SrsAmf0Number>(reset_value)->value == 0 ? false : true);
|
||||
reset = (reset_value->to_number() == 0 ? false : true);
|
||||
} else {
|
||||
ret = ERROR_RTMP_AMF0_DECODE;
|
||||
srs_error("amf0 invalid type=%#x, requires number or bool, ret=%d", reset_value->marker, ret);
|
||||
|
@ -2715,7 +2715,7 @@ SrsPlayResPacket::SrsPlayResPacket()
|
|||
{
|
||||
command_name = RTMP_AMF0_COMMAND_RESULT;
|
||||
transaction_id = 0;
|
||||
command_object = new SrsAmf0Null();
|
||||
command_object = SrsAmf0Any::null();
|
||||
desc = new SrsAmf0Object();
|
||||
}
|
||||
|
||||
|
@ -2779,7 +2779,7 @@ SrsOnBWDonePacket::SrsOnBWDonePacket()
|
|||
{
|
||||
command_name = RTMP_AMF0_COMMAND_ON_BW_DONE;
|
||||
transaction_id = 0;
|
||||
args = new SrsAmf0Null();
|
||||
args = SrsAmf0Any::null();
|
||||
}
|
||||
|
||||
SrsOnBWDonePacket::~SrsOnBWDonePacket()
|
||||
|
@ -2834,7 +2834,7 @@ SrsOnStatusCallPacket::SrsOnStatusCallPacket()
|
|||
{
|
||||
command_name = RTMP_AMF0_COMMAND_ON_STATUS;
|
||||
transaction_id = 0;
|
||||
args = new SrsAmf0Null();
|
||||
args = SrsAmf0Any::null();
|
||||
data = new SrsAmf0Object();
|
||||
}
|
||||
|
||||
|
@ -2897,7 +2897,7 @@ SrsBandwidthPacket::SrsBandwidthPacket()
|
|||
{
|
||||
command_name = RTMP_AMF0_COMMAND_ON_STATUS;
|
||||
transaction_id = 0;
|
||||
args = new SrsAmf0Null();
|
||||
args = SrsAmf0Any::null();
|
||||
data = new SrsAmf0Object();
|
||||
}
|
||||
|
||||
|
|
|
@ -86,8 +86,7 @@ class SrsStream;
|
|||
class SrsCommonMessage;
|
||||
class SrsChunkStream;
|
||||
class SrsAmf0Object;
|
||||
class SrsAmf0Null;
|
||||
class SrsAmf0Undefined;
|
||||
class SrsAmf0Any;
|
||||
class ISrsMessage;
|
||||
|
||||
// convert class name to string.
|
||||
|
@ -600,7 +599,7 @@ protected:
|
|||
public:
|
||||
std::string command_name;
|
||||
double transaction_id;
|
||||
SrsAmf0Null* command_object;
|
||||
SrsAmf0Any* command_object; // null
|
||||
public:
|
||||
SrsCreateStreamPacket();
|
||||
virtual ~SrsCreateStreamPacket();
|
||||
|
@ -629,7 +628,7 @@ protected:
|
|||
public:
|
||||
std::string command_name;
|
||||
double transaction_id;
|
||||
SrsAmf0Null* command_object;
|
||||
SrsAmf0Any* command_object; // null
|
||||
double stream_id;
|
||||
public:
|
||||
SrsCreateStreamResPacket(double _transaction_id, double _stream_id);
|
||||
|
@ -659,7 +658,7 @@ protected:
|
|||
public:
|
||||
std::string command_name;
|
||||
double transaction_id;
|
||||
SrsAmf0Null* command_object;
|
||||
SrsAmf0Any* command_object; // null
|
||||
public:
|
||||
SrsCloseStreamPacket();
|
||||
virtual ~SrsCloseStreamPacket();
|
||||
|
@ -682,7 +681,7 @@ protected:
|
|||
public:
|
||||
std::string command_name;
|
||||
double transaction_id;
|
||||
SrsAmf0Null* command_object;
|
||||
SrsAmf0Any* command_object; // null
|
||||
std::string stream_name;
|
||||
public:
|
||||
SrsFMLEStartPacket();
|
||||
|
@ -715,8 +714,8 @@ protected:
|
|||
public:
|
||||
std::string command_name;
|
||||
double transaction_id;
|
||||
SrsAmf0Null* command_object;
|
||||
SrsAmf0Undefined* args;
|
||||
SrsAmf0Any* command_object; // null
|
||||
SrsAmf0Any* args; // undefined
|
||||
public:
|
||||
SrsFMLEStartResPacket(double _transaction_id);
|
||||
virtual ~SrsFMLEStartResPacket();
|
||||
|
@ -750,7 +749,7 @@ protected:
|
|||
public:
|
||||
std::string command_name;
|
||||
double transaction_id;
|
||||
SrsAmf0Null* command_object;
|
||||
SrsAmf0Any* command_object; // null
|
||||
std::string stream_name;
|
||||
// optional, default to live.
|
||||
std::string type;
|
||||
|
@ -785,7 +784,7 @@ protected:
|
|||
public:
|
||||
std::string command_name;
|
||||
double transaction_id;
|
||||
SrsAmf0Null* command_object;
|
||||
SrsAmf0Any* command_object; // null
|
||||
bool is_pause;
|
||||
double time_ms;
|
||||
public:
|
||||
|
@ -811,7 +810,7 @@ protected:
|
|||
public:
|
||||
std::string command_name;
|
||||
double transaction_id;
|
||||
SrsAmf0Null* command_object;
|
||||
SrsAmf0Any* command_object; // null
|
||||
std::string stream_name;
|
||||
double start;
|
||||
double duration;
|
||||
|
@ -845,7 +844,7 @@ protected:
|
|||
public:
|
||||
std::string command_name;
|
||||
double transaction_id;
|
||||
SrsAmf0Null* command_object;
|
||||
SrsAmf0Any* command_object; // null
|
||||
SrsAmf0Object* desc;
|
||||
public:
|
||||
SrsPlayResPacket();
|
||||
|
@ -874,7 +873,7 @@ protected:
|
|||
public:
|
||||
std::string command_name;
|
||||
double transaction_id;
|
||||
SrsAmf0Null* args;
|
||||
SrsAmf0Any* args; // null
|
||||
public:
|
||||
SrsOnBWDonePacket();
|
||||
virtual ~SrsOnBWDonePacket();
|
||||
|
@ -903,7 +902,7 @@ protected:
|
|||
public:
|
||||
std::string command_name;
|
||||
double transaction_id;
|
||||
SrsAmf0Null* args;
|
||||
SrsAmf0Any* args; // null
|
||||
SrsAmf0Object* data;
|
||||
public:
|
||||
SrsOnStatusCallPacket();
|
||||
|
@ -936,7 +935,7 @@ protected:
|
|||
public:
|
||||
std::string command_name;
|
||||
double transaction_id;
|
||||
SrsAmf0Null* args;
|
||||
SrsAmf0Any* args; // null
|
||||
SrsAmf0Object* data;
|
||||
public:
|
||||
SrsBandwidthPacket();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue