正在显示
9 个修改的文件
包含
287 行增加
和
221 行删除
| @@ -178,15 +178,15 @@ int SrsBandwidth::do_bandwidth_check() | @@ -178,15 +178,15 @@ int SrsBandwidth::do_bandwidth_check() | ||
| 178 | 178 | ||
| 179 | // send finished msg | 179 | // send finished msg |
| 180 | SrsBandwidthPacket* pkt = SrsBandwidthPacket::create_finish(); | 180 | SrsBandwidthPacket* pkt = SrsBandwidthPacket::create_finish(); |
| 181 | - pkt->data->set("code", new SrsAmf0Number(ERROR_SUCCESS)); | ||
| 182 | - pkt->data->set("start_time", new SrsAmf0Number(start_time)); | ||
| 183 | - pkt->data->set("end_time", new SrsAmf0Number(end_time)); | ||
| 184 | - pkt->data->set("play_kbps", new SrsAmf0Number(play_kbps)); | ||
| 185 | - pkt->data->set("publish_kbps", new SrsAmf0Number(publish_kbps)); | ||
| 186 | - pkt->data->set("play_bytes", new SrsAmf0Number(play_bytes)); | ||
| 187 | - pkt->data->set("play_time", new SrsAmf0Number(play_actual_duration_ms)); | ||
| 188 | - pkt->data->set("publish_bytes", new SrsAmf0Number(publish_bytes)); | ||
| 189 | - pkt->data->set("publish_time", new SrsAmf0Number(publish_actual_duration_ms)); | 181 | + pkt->data->set("code", SrsAmf0Any::number(ERROR_SUCCESS)); |
| 182 | + pkt->data->set("start_time", SrsAmf0Any::number(start_time)); | ||
| 183 | + pkt->data->set("end_time", SrsAmf0Any::number(end_time)); | ||
| 184 | + pkt->data->set("play_kbps", SrsAmf0Any::number(play_kbps)); | ||
| 185 | + pkt->data->set("publish_kbps", SrsAmf0Any::number(publish_kbps)); | ||
| 186 | + pkt->data->set("play_bytes", SrsAmf0Any::number(play_bytes)); | ||
| 187 | + pkt->data->set("play_time", SrsAmf0Any::number(play_actual_duration_ms)); | ||
| 188 | + pkt->data->set("publish_bytes", SrsAmf0Any::number(publish_bytes)); | ||
| 189 | + pkt->data->set("publish_time", SrsAmf0Any::number(publish_actual_duration_ms)); | ||
| 190 | 190 | ||
| 191 | SrsCommonMessage* msg = (new SrsCommonMessage())->set_packet(pkt, 0); | 191 | SrsCommonMessage* msg = (new SrsCommonMessage())->set_packet(pkt, 0); |
| 192 | if ((ret = rtmp->send_message(msg)) != ERROR_SUCCESS) { | 192 | if ((ret = rtmp->send_message(msg)) != ERROR_SUCCESS) { |
| @@ -229,8 +229,8 @@ int SrsBandwidth::check_play( | @@ -229,8 +229,8 @@ int SrsBandwidth::check_play( | ||
| 229 | // send start play command to client | 229 | // send start play command to client |
| 230 | SrsBandwidthPacket* pkt = SrsBandwidthPacket::create_start_play(); | 230 | SrsBandwidthPacket* pkt = SrsBandwidthPacket::create_start_play(); |
| 231 | 231 | ||
| 232 | - pkt->data->set("duration_ms", new SrsAmf0Number(duration_ms)); | ||
| 233 | - pkt->data->set("interval_ms", new SrsAmf0Number(interval_ms)); | 232 | + pkt->data->set("duration_ms", SrsAmf0Any::number(duration_ms)); |
| 233 | + pkt->data->set("interval_ms", SrsAmf0Any::number(interval_ms)); | ||
| 234 | 234 | ||
| 235 | SrsCommonMessage* msg = (new SrsCommonMessage())->set_packet(pkt, 0); | 235 | SrsCommonMessage* msg = (new SrsCommonMessage())->set_packet(pkt, 0); |
| 236 | if ((ret = rtmp->send_message(msg)) != ERROR_SUCCESS) { | 236 | if ((ret = rtmp->send_message(msg)) != ERROR_SUCCESS) { |
| @@ -308,10 +308,10 @@ int SrsBandwidth::check_play( | @@ -308,10 +308,10 @@ int SrsBandwidth::check_play( | ||
| 308 | if (true) { | 308 | if (true) { |
| 309 | // notify client to stop play | 309 | // notify client to stop play |
| 310 | SrsBandwidthPacket* pkt = SrsBandwidthPacket::create_stop_play(); | 310 | SrsBandwidthPacket* pkt = SrsBandwidthPacket::create_stop_play(); |
| 311 | - pkt->data->set("duration_ms", new SrsAmf0Number(duration_ms)); | ||
| 312 | - pkt->data->set("interval_ms", new SrsAmf0Number(interval_ms)); | ||
| 313 | - pkt->data->set("duration_delta", new SrsAmf0Number(actual_duration_ms)); | ||
| 314 | - pkt->data->set("bytes_delta", new SrsAmf0Number(play_bytes)); | 311 | + pkt->data->set("duration_ms", SrsAmf0Any::number(duration_ms)); |
| 312 | + pkt->data->set("interval_ms", SrsAmf0Any::number(interval_ms)); | ||
| 313 | + pkt->data->set("duration_delta", SrsAmf0Any::number(actual_duration_ms)); | ||
| 314 | + pkt->data->set("bytes_delta", SrsAmf0Any::number(play_bytes)); | ||
| 315 | 315 | ||
| 316 | SrsCommonMessage* msg = (new SrsCommonMessage())->set_packet(pkt, 0); | 316 | SrsCommonMessage* msg = (new SrsCommonMessage())->set_packet(pkt, 0); |
| 317 | if ((ret = rtmp->send_message(msg)) != ERROR_SUCCESS) { | 317 | if ((ret = rtmp->send_message(msg)) != ERROR_SUCCESS) { |
| @@ -353,8 +353,8 @@ int SrsBandwidth::check_publish( | @@ -353,8 +353,8 @@ int SrsBandwidth::check_publish( | ||
| 353 | // notify client to start publish | 353 | // notify client to start publish |
| 354 | SrsBandwidthPacket* pkt = SrsBandwidthPacket::create_start_publish(); | 354 | SrsBandwidthPacket* pkt = SrsBandwidthPacket::create_start_publish(); |
| 355 | 355 | ||
| 356 | - pkt->data->set("duration_ms", new SrsAmf0Number(duration_ms)); | ||
| 357 | - pkt->data->set("interval_ms", new SrsAmf0Number(interval_ms)); | 356 | + pkt->data->set("duration_ms", SrsAmf0Any::number(duration_ms)); |
| 357 | + pkt->data->set("interval_ms", SrsAmf0Any::number(interval_ms)); | ||
| 358 | 358 | ||
| 359 | SrsCommonMessage* msg = (new SrsCommonMessage())->set_packet(pkt, 0); | 359 | SrsCommonMessage* msg = (new SrsCommonMessage())->set_packet(pkt, 0); |
| 360 | if ((ret = rtmp->send_message(msg)) != ERROR_SUCCESS) { | 360 | if ((ret = rtmp->send_message(msg)) != ERROR_SUCCESS) { |
| @@ -414,10 +414,10 @@ int SrsBandwidth::check_publish( | @@ -414,10 +414,10 @@ int SrsBandwidth::check_publish( | ||
| 414 | if (true) { | 414 | if (true) { |
| 415 | // notify client to stop publish | 415 | // notify client to stop publish |
| 416 | SrsBandwidthPacket* pkt = SrsBandwidthPacket::create_stop_publish(); | 416 | SrsBandwidthPacket* pkt = SrsBandwidthPacket::create_stop_publish(); |
| 417 | - pkt->data->set("duration_ms", new SrsAmf0Number(duration_ms)); | ||
| 418 | - pkt->data->set("interval_ms", new SrsAmf0Number(interval_ms)); | ||
| 419 | - pkt->data->set("duration_delta", new SrsAmf0Number(actual_duration_ms)); | ||
| 420 | - pkt->data->set("bytes_delta", new SrsAmf0Number(publish_bytes)); | 417 | + pkt->data->set("duration_ms", SrsAmf0Any::number(duration_ms)); |
| 418 | + pkt->data->set("interval_ms", SrsAmf0Any::number(interval_ms)); | ||
| 419 | + pkt->data->set("duration_delta", SrsAmf0Any::number(actual_duration_ms)); | ||
| 420 | + pkt->data->set("bytes_delta", SrsAmf0Any::number(publish_bytes)); | ||
| 421 | 421 | ||
| 422 | SrsCommonMessage* msg = (new SrsCommonMessage())->set_packet(pkt, 0); | 422 | SrsCommonMessage* msg = (new SrsCommonMessage())->set_packet(pkt, 0); |
| 423 | if ((ret = rtmp->send_message(msg)) != ERROR_SUCCESS) { | 423 | if ((ret = rtmp->send_message(msg)) != ERROR_SUCCESS) { |
| @@ -1221,29 +1221,29 @@ int SrsHls::on_meta_data(SrsAmf0Object* metadata) | @@ -1221,29 +1221,29 @@ int SrsHls::on_meta_data(SrsAmf0Object* metadata) | ||
| 1221 | SrsAmf0Any* prop = NULL; | 1221 | SrsAmf0Any* prop = NULL; |
| 1222 | 1222 | ||
| 1223 | if ((prop = obj->get_property("duration")) != NULL && prop->is_number()) { | 1223 | if ((prop = obj->get_property("duration")) != NULL && prop->is_number()) { |
| 1224 | - codec->duration = (int)srs_amf0_convert<SrsAmf0Number>(prop)->value; | 1224 | + codec->duration = (int)prop->to_number(); |
| 1225 | } | 1225 | } |
| 1226 | if ((prop = obj->get_property("width")) != NULL && prop->is_number()) { | 1226 | if ((prop = obj->get_property("width")) != NULL && prop->is_number()) { |
| 1227 | - codec->width = (int)srs_amf0_convert<SrsAmf0Number>(prop)->value; | 1227 | + codec->width = (int)prop->to_number(); |
| 1228 | } | 1228 | } |
| 1229 | if ((prop = obj->get_property("height")) != NULL && prop->is_number()) { | 1229 | if ((prop = obj->get_property("height")) != NULL && prop->is_number()) { |
| 1230 | - codec->height = (int)srs_amf0_convert<SrsAmf0Number>(prop)->value; | 1230 | + codec->height = (int)prop->to_number(); |
| 1231 | } | 1231 | } |
| 1232 | if ((prop = obj->get_property("framerate")) != NULL && prop->is_number()) { | 1232 | if ((prop = obj->get_property("framerate")) != NULL && prop->is_number()) { |
| 1233 | - codec->frame_rate = (int)srs_amf0_convert<SrsAmf0Number>(prop)->value; | 1233 | + codec->frame_rate = (int)prop->to_number(); |
| 1234 | } | 1234 | } |
| 1235 | if ((prop = obj->get_property("videocodecid")) != NULL && prop->is_number()) { | 1235 | if ((prop = obj->get_property("videocodecid")) != NULL && prop->is_number()) { |
| 1236 | - codec->video_codec_id = (int)srs_amf0_convert<SrsAmf0Number>(prop)->value; | 1236 | + codec->video_codec_id = (int)prop->to_number(); |
| 1237 | } | 1237 | } |
| 1238 | if ((prop = obj->get_property("videodatarate")) != NULL && prop->is_number()) { | 1238 | if ((prop = obj->get_property("videodatarate")) != NULL && prop->is_number()) { |
| 1239 | - codec->video_data_rate = (int)(1000 * srs_amf0_convert<SrsAmf0Number>(prop)->value); | 1239 | + codec->video_data_rate = (int)(1000 * prop->to_number()); |
| 1240 | } | 1240 | } |
| 1241 | 1241 | ||
| 1242 | if ((prop = obj->get_property("audiocodecid")) != NULL && prop->is_number()) { | 1242 | if ((prop = obj->get_property("audiocodecid")) != NULL && prop->is_number()) { |
| 1243 | - codec->audio_codec_id = (int)srs_amf0_convert<SrsAmf0Number>(prop)->value; | 1243 | + codec->audio_codec_id = (int)prop->to_number(); |
| 1244 | } | 1244 | } |
| 1245 | if ((prop = obj->get_property("audiodatarate")) != NULL && prop->is_number()) { | 1245 | if ((prop = obj->get_property("audiodatarate")) != NULL && prop->is_number()) { |
| 1246 | - codec->audio_data_rate = (int)(1000 * srs_amf0_convert<SrsAmf0Number>(prop)->value); | 1246 | + codec->audio_data_rate = (int)(1000 * prop->to_number()); |
| 1247 | } | 1247 | } |
| 1248 | 1248 | ||
| 1249 | // ignore the following, for each flv/rtmp packet contains them: | 1249 | // ignore the following, for each flv/rtmp packet contains them: |
| @@ -645,12 +645,12 @@ int SrsSource::on_meta_data(SrsCommonMessage* msg, SrsOnMetaDataPacket* metadata | @@ -645,12 +645,12 @@ int SrsSource::on_meta_data(SrsCommonMessage* msg, SrsOnMetaDataPacket* metadata | ||
| 645 | SrsAmf0Any* prop = NULL; | 645 | SrsAmf0Any* prop = NULL; |
| 646 | if ((prop = metadata->metadata->get_property("audiosamplerate")) != NULL) { | 646 | if ((prop = metadata->metadata->get_property("audiosamplerate")) != NULL) { |
| 647 | if (prop->is_number()) { | 647 | if (prop->is_number()) { |
| 648 | - sample_rate = (int)(srs_amf0_convert<SrsAmf0Number>(prop)->value); | 648 | + sample_rate = (int)prop->to_number(); |
| 649 | } | 649 | } |
| 650 | } | 650 | } |
| 651 | if ((prop = metadata->metadata->get_property("framerate")) != NULL) { | 651 | if ((prop = metadata->metadata->get_property("framerate")) != NULL) { |
| 652 | if (prop->is_number()) { | 652 | if (prop->is_number()) { |
| 653 | - frame_rate = (int)(srs_amf0_convert<SrsAmf0Number>(prop)->value); | 653 | + frame_rate = (int)prop->to_number(); |
| 654 | } | 654 | } |
| 655 | } | 655 | } |
| 656 | 656 |
| @@ -56,8 +56,8 @@ using namespace std; | @@ -56,8 +56,8 @@ using namespace std; | ||
| 56 | // User defined | 56 | // User defined |
| 57 | #define RTMP_AMF0_Invalid 0x3F | 57 | #define RTMP_AMF0_Invalid 0x3F |
| 58 | 58 | ||
| 59 | -int srs_amf0_read_object_eof(SrsStream* stream, SrsAmf0ObjectEOF*&); | ||
| 60 | -int srs_amf0_write_object_eof(SrsStream* stream, SrsAmf0ObjectEOF*); | 59 | +int srs_amf0_read_object_eof(SrsStream* stream, __SrsAmf0ObjectEOF*&); |
| 60 | +int srs_amf0_write_object_eof(SrsStream* stream, __SrsAmf0ObjectEOF*); | ||
| 61 | int srs_amf0_read_any(SrsStream* stream, SrsAmf0Any*& value); | 61 | int srs_amf0_read_any(SrsStream* stream, SrsAmf0Any*& value); |
| 62 | int srs_amf0_write_any(SrsStream* stream, SrsAmf0Any* value); | 62 | int srs_amf0_write_any(SrsStream* stream, SrsAmf0Any* value); |
| 63 | 63 | ||
| @@ -117,6 +117,12 @@ bool SrsAmf0Any::to_boolean() | @@ -117,6 +117,12 @@ bool SrsAmf0Any::to_boolean() | ||
| 117 | return o->value; | 117 | return o->value; |
| 118 | } | 118 | } |
| 119 | 119 | ||
| 120 | +double SrsAmf0Any::to_number() | ||
| 121 | +{ | ||
| 122 | + __SrsAmf0Number* o = srs_amf0_convert<__SrsAmf0Number>(this); | ||
| 123 | + return o->value; | ||
| 124 | +} | ||
| 125 | + | ||
| 120 | bool SrsAmf0Any::is_object_eof() | 126 | bool SrsAmf0Any::is_object_eof() |
| 121 | { | 127 | { |
| 122 | return marker == RTMP_AMF0_ObjectEnd; | 128 | return marker == RTMP_AMF0_ObjectEnd; |
| @@ -132,69 +138,26 @@ SrsAmf0Any* SrsAmf0Any::boolean(bool value) | @@ -132,69 +138,26 @@ SrsAmf0Any* SrsAmf0Any::boolean(bool value) | ||
| 132 | return new __SrsAmf0Boolean(value); | 138 | return new __SrsAmf0Boolean(value); |
| 133 | } | 139 | } |
| 134 | 140 | ||
| 135 | -SrsAmf0Number::SrsAmf0Number(double _value) | ||
| 136 | -{ | ||
| 137 | - marker = RTMP_AMF0_Number; | ||
| 138 | - value = _value; | ||
| 139 | -} | ||
| 140 | - | ||
| 141 | -SrsAmf0Number::~SrsAmf0Number() | ||
| 142 | -{ | ||
| 143 | -} | ||
| 144 | - | ||
| 145 | -int SrsAmf0Number::size() | ||
| 146 | -{ | ||
| 147 | - return SrsAmf0Size::number(); | ||
| 148 | -} | ||
| 149 | - | ||
| 150 | -SrsAmf0Null::SrsAmf0Null() | ||
| 151 | -{ | ||
| 152 | - marker = RTMP_AMF0_Null; | ||
| 153 | -} | ||
| 154 | - | ||
| 155 | -SrsAmf0Null::~SrsAmf0Null() | ||
| 156 | -{ | ||
| 157 | -} | ||
| 158 | - | ||
| 159 | -int SrsAmf0Null::size() | ||
| 160 | -{ | ||
| 161 | - return SrsAmf0Size::null(); | ||
| 162 | -} | ||
| 163 | - | ||
| 164 | -SrsAmf0Undefined::SrsAmf0Undefined() | ||
| 165 | -{ | ||
| 166 | - marker = RTMP_AMF0_Undefined; | ||
| 167 | -} | ||
| 168 | - | ||
| 169 | -SrsAmf0Undefined::~SrsAmf0Undefined() | ||
| 170 | -{ | ||
| 171 | -} | ||
| 172 | - | ||
| 173 | -int SrsAmf0Undefined::size() | 141 | +SrsAmf0Any* SrsAmf0Any::number(double value) |
| 174 | { | 142 | { |
| 175 | - return SrsAmf0Size::undefined(); | 143 | + return new __SrsAmf0Number(value); |
| 176 | } | 144 | } |
| 177 | 145 | ||
| 178 | -SrsAmf0ObjectEOF::SrsAmf0ObjectEOF() | 146 | +SrsAmf0Any* SrsAmf0Any::null() |
| 179 | { | 147 | { |
| 180 | - marker = RTMP_AMF0_ObjectEnd; | ||
| 181 | - utf8_empty = 0x00; | 148 | + return new __SrsAmf0Null(); |
| 182 | } | 149 | } |
| 183 | 150 | ||
| 184 | -SrsAmf0ObjectEOF::~SrsAmf0ObjectEOF() | 151 | +SrsAmf0Any* SrsAmf0Any::undefined() |
| 185 | { | 152 | { |
| 153 | + return new __SrsAmf0Undefined(); | ||
| 186 | } | 154 | } |
| 187 | 155 | ||
| 188 | -int SrsAmf0ObjectEOF::size() | 156 | +__SrsUnSortedHashtable::__SrsUnSortedHashtable() |
| 189 | { | 157 | { |
| 190 | - return SrsAmf0Size::object_eof(); | ||
| 191 | } | 158 | } |
| 192 | 159 | ||
| 193 | -SrsUnSortedHashtable::SrsUnSortedHashtable() | ||
| 194 | -{ | ||
| 195 | -} | ||
| 196 | - | ||
| 197 | -SrsUnSortedHashtable::~SrsUnSortedHashtable() | 160 | +__SrsUnSortedHashtable::~__SrsUnSortedHashtable() |
| 198 | { | 161 | { |
| 199 | std::vector<SrsObjectPropertyType>::iterator it; | 162 | std::vector<SrsObjectPropertyType>::iterator it; |
| 200 | for (it = properties.begin(); it != properties.end(); ++it) { | 163 | for (it = properties.begin(); it != properties.end(); ++it) { |
| @@ -205,31 +168,31 @@ SrsUnSortedHashtable::~SrsUnSortedHashtable() | @@ -205,31 +168,31 @@ SrsUnSortedHashtable::~SrsUnSortedHashtable() | ||
| 205 | properties.clear(); | 168 | properties.clear(); |
| 206 | } | 169 | } |
| 207 | 170 | ||
| 208 | -int SrsUnSortedHashtable::size() | 171 | +int __SrsUnSortedHashtable::size() |
| 209 | { | 172 | { |
| 210 | return (int)properties.size(); | 173 | return (int)properties.size(); |
| 211 | } | 174 | } |
| 212 | 175 | ||
| 213 | -void SrsUnSortedHashtable::clear() | 176 | +void __SrsUnSortedHashtable::clear() |
| 214 | { | 177 | { |
| 215 | properties.clear(); | 178 | properties.clear(); |
| 216 | } | 179 | } |
| 217 | 180 | ||
| 218 | -std::string SrsUnSortedHashtable::key_at(int index) | 181 | +std::string __SrsUnSortedHashtable::key_at(int index) |
| 219 | { | 182 | { |
| 220 | srs_assert(index < size()); | 183 | srs_assert(index < size()); |
| 221 | SrsObjectPropertyType& elem = properties[index]; | 184 | SrsObjectPropertyType& elem = properties[index]; |
| 222 | return elem.first; | 185 | return elem.first; |
| 223 | } | 186 | } |
| 224 | 187 | ||
| 225 | -SrsAmf0Any* SrsUnSortedHashtable::value_at(int index) | 188 | +SrsAmf0Any* __SrsUnSortedHashtable::value_at(int index) |
| 226 | { | 189 | { |
| 227 | srs_assert(index < size()); | 190 | srs_assert(index < size()); |
| 228 | SrsObjectPropertyType& elem = properties[index]; | 191 | SrsObjectPropertyType& elem = properties[index]; |
| 229 | return elem.second; | 192 | return elem.second; |
| 230 | } | 193 | } |
| 231 | 194 | ||
| 232 | -void SrsUnSortedHashtable::set(std::string key, SrsAmf0Any* value) | 195 | +void __SrsUnSortedHashtable::set(std::string key, SrsAmf0Any* value) |
| 233 | { | 196 | { |
| 234 | std::vector<SrsObjectPropertyType>::iterator it; | 197 | std::vector<SrsObjectPropertyType>::iterator it; |
| 235 | 198 | ||
| @@ -248,7 +211,7 @@ void SrsUnSortedHashtable::set(std::string key, SrsAmf0Any* value) | @@ -248,7 +211,7 @@ void SrsUnSortedHashtable::set(std::string key, SrsAmf0Any* value) | ||
| 248 | properties.push_back(std::make_pair(key, value)); | 211 | properties.push_back(std::make_pair(key, value)); |
| 249 | } | 212 | } |
| 250 | 213 | ||
| 251 | -SrsAmf0Any* SrsUnSortedHashtable::get_property(std::string name) | 214 | +SrsAmf0Any* __SrsUnSortedHashtable::get_property(std::string name) |
| 252 | { | 215 | { |
| 253 | std::vector<SrsObjectPropertyType>::iterator it; | 216 | std::vector<SrsObjectPropertyType>::iterator it; |
| 254 | 217 | ||
| @@ -264,7 +227,7 @@ SrsAmf0Any* SrsUnSortedHashtable::get_property(std::string name) | @@ -264,7 +227,7 @@ SrsAmf0Any* SrsUnSortedHashtable::get_property(std::string name) | ||
| 264 | return NULL; | 227 | return NULL; |
| 265 | } | 228 | } |
| 266 | 229 | ||
| 267 | -SrsAmf0Any* SrsUnSortedHashtable::ensure_property_string(std::string name) | 230 | +SrsAmf0Any* __SrsUnSortedHashtable::ensure_property_string(std::string name) |
| 268 | { | 231 | { |
| 269 | SrsAmf0Any* prop = get_property(name); | 232 | SrsAmf0Any* prop = get_property(name); |
| 270 | 233 | ||
| @@ -279,7 +242,7 @@ SrsAmf0Any* SrsUnSortedHashtable::ensure_property_string(std::string name) | @@ -279,7 +242,7 @@ SrsAmf0Any* SrsUnSortedHashtable::ensure_property_string(std::string name) | ||
| 279 | return prop; | 242 | return prop; |
| 280 | } | 243 | } |
| 281 | 244 | ||
| 282 | -SrsAmf0Any* SrsUnSortedHashtable::ensure_property_number(std::string name) | 245 | +SrsAmf0Any* __SrsUnSortedHashtable::ensure_property_number(std::string name) |
| 283 | { | 246 | { |
| 284 | SrsAmf0Any* prop = get_property(name); | 247 | SrsAmf0Any* prop = get_property(name); |
| 285 | 248 | ||
| @@ -294,6 +257,21 @@ SrsAmf0Any* SrsUnSortedHashtable::ensure_property_number(std::string name) | @@ -294,6 +257,21 @@ SrsAmf0Any* SrsUnSortedHashtable::ensure_property_number(std::string name) | ||
| 294 | return prop; | 257 | return prop; |
| 295 | } | 258 | } |
| 296 | 259 | ||
| 260 | +__SrsAmf0ObjectEOF::__SrsAmf0ObjectEOF() | ||
| 261 | +{ | ||
| 262 | + marker = RTMP_AMF0_ObjectEnd; | ||
| 263 | + utf8_empty = 0x00; | ||
| 264 | +} | ||
| 265 | + | ||
| 266 | +__SrsAmf0ObjectEOF::~__SrsAmf0ObjectEOF() | ||
| 267 | +{ | ||
| 268 | +} | ||
| 269 | + | ||
| 270 | +int __SrsAmf0ObjectEOF::size() | ||
| 271 | +{ | ||
| 272 | + return SrsAmf0Size::object_eof(); | ||
| 273 | +} | ||
| 274 | + | ||
| 297 | SrsAmf0Object::SrsAmf0Object() | 275 | SrsAmf0Object::SrsAmf0Object() |
| 298 | { | 276 | { |
| 299 | marker = RTMP_AMF0_Object; | 277 | marker = RTMP_AMF0_Object; |
| @@ -709,6 +687,49 @@ int __SrsAmf0Boolean::size() | @@ -709,6 +687,49 @@ int __SrsAmf0Boolean::size() | ||
| 709 | return SrsAmf0Size::boolean(); | 687 | return SrsAmf0Size::boolean(); |
| 710 | } | 688 | } |
| 711 | 689 | ||
| 690 | +__SrsAmf0Number::__SrsAmf0Number(double _value) | ||
| 691 | +{ | ||
| 692 | + marker = RTMP_AMF0_Number; | ||
| 693 | + value = _value; | ||
| 694 | +} | ||
| 695 | + | ||
| 696 | +__SrsAmf0Number::~__SrsAmf0Number() | ||
| 697 | +{ | ||
| 698 | +} | ||
| 699 | + | ||
| 700 | +int __SrsAmf0Number::size() | ||
| 701 | +{ | ||
| 702 | + return SrsAmf0Size::number(); | ||
| 703 | +} | ||
| 704 | + | ||
| 705 | +__SrsAmf0Null::__SrsAmf0Null() | ||
| 706 | +{ | ||
| 707 | + marker = RTMP_AMF0_Null; | ||
| 708 | +} | ||
| 709 | + | ||
| 710 | +__SrsAmf0Null::~__SrsAmf0Null() | ||
| 711 | +{ | ||
| 712 | +} | ||
| 713 | + | ||
| 714 | +int __SrsAmf0Null::size() | ||
| 715 | +{ | ||
| 716 | + return SrsAmf0Size::null(); | ||
| 717 | +} | ||
| 718 | + | ||
| 719 | +__SrsAmf0Undefined::__SrsAmf0Undefined() | ||
| 720 | +{ | ||
| 721 | + marker = RTMP_AMF0_Undefined; | ||
| 722 | +} | ||
| 723 | + | ||
| 724 | +__SrsAmf0Undefined::~__SrsAmf0Undefined() | ||
| 725 | +{ | ||
| 726 | +} | ||
| 727 | + | ||
| 728 | +int __SrsAmf0Undefined::size() | ||
| 729 | +{ | ||
| 730 | + return SrsAmf0Size::undefined(); | ||
| 731 | +} | ||
| 732 | + | ||
| 712 | int srs_amf0_read_utf8(SrsStream* stream, std::string& value) | 733 | int srs_amf0_read_utf8(SrsStream* stream, std::string& value) |
| 713 | { | 734 | { |
| 714 | int ret = ERROR_SUCCESS; | 735 | int ret = ERROR_SUCCESS; |
| @@ -1073,22 +1094,21 @@ int srs_amf0_read_any(SrsStream* stream, SrsAmf0Any*& value) | @@ -1073,22 +1094,21 @@ int srs_amf0_read_any(SrsStream* stream, SrsAmf0Any*& value) | ||
| 1073 | if ((ret = srs_amf0_read_number(stream, data)) != ERROR_SUCCESS) { | 1094 | if ((ret = srs_amf0_read_number(stream, data)) != ERROR_SUCCESS) { |
| 1074 | return ret; | 1095 | return ret; |
| 1075 | } | 1096 | } |
| 1076 | - value = new SrsAmf0Number(); | ||
| 1077 | - srs_amf0_convert<SrsAmf0Number>(value)->value = data; | 1097 | + value = SrsAmf0Any::number(data); |
| 1078 | return ret; | 1098 | return ret; |
| 1079 | } | 1099 | } |
| 1080 | case RTMP_AMF0_Null: { | 1100 | case RTMP_AMF0_Null: { |
| 1081 | stream->skip(1); | 1101 | stream->skip(1); |
| 1082 | - value = new SrsAmf0Null(); | 1102 | + value = new __SrsAmf0Null(); |
| 1083 | return ret; | 1103 | return ret; |
| 1084 | } | 1104 | } |
| 1085 | case RTMP_AMF0_Undefined: { | 1105 | case RTMP_AMF0_Undefined: { |
| 1086 | stream->skip(1); | 1106 | stream->skip(1); |
| 1087 | - value = new SrsAmf0Undefined(); | 1107 | + value = new __SrsAmf0Undefined(); |
| 1088 | return ret; | 1108 | return ret; |
| 1089 | } | 1109 | } |
| 1090 | case RTMP_AMF0_ObjectEnd: { | 1110 | case RTMP_AMF0_ObjectEnd: { |
| 1091 | - SrsAmf0ObjectEOF* p = NULL; | 1111 | + __SrsAmf0ObjectEOF* p = NULL; |
| 1092 | if ((ret = srs_amf0_read_object_eof(stream, p)) != ERROR_SUCCESS) { | 1112 | if ((ret = srs_amf0_read_object_eof(stream, p)) != ERROR_SUCCESS) { |
| 1093 | return ret; | 1113 | return ret; |
| 1094 | } | 1114 | } |
| @@ -1137,7 +1157,7 @@ int srs_amf0_write_any(SrsStream* stream, SrsAmf0Any* value) | @@ -1137,7 +1157,7 @@ int srs_amf0_write_any(SrsStream* stream, SrsAmf0Any* value) | ||
| 1137 | return srs_amf0_write_boolean(stream, data); | 1157 | return srs_amf0_write_boolean(stream, data); |
| 1138 | } | 1158 | } |
| 1139 | case RTMP_AMF0_Number: { | 1159 | case RTMP_AMF0_Number: { |
| 1140 | - double data = srs_amf0_convert<SrsAmf0Number>(value)->value; | 1160 | + double data = srs_amf0_convert<__SrsAmf0Number>(value)->value; |
| 1141 | return srs_amf0_write_number(stream, data); | 1161 | return srs_amf0_write_number(stream, data); |
| 1142 | } | 1162 | } |
| 1143 | case RTMP_AMF0_Null: { | 1163 | case RTMP_AMF0_Null: { |
| @@ -1147,7 +1167,7 @@ int srs_amf0_write_any(SrsStream* stream, SrsAmf0Any* value) | @@ -1147,7 +1167,7 @@ int srs_amf0_write_any(SrsStream* stream, SrsAmf0Any* value) | ||
| 1147 | return srs_amf0_write_undefined(stream); | 1167 | return srs_amf0_write_undefined(stream); |
| 1148 | } | 1168 | } |
| 1149 | case RTMP_AMF0_ObjectEnd: { | 1169 | case RTMP_AMF0_ObjectEnd: { |
| 1150 | - SrsAmf0ObjectEOF* p = srs_amf0_convert<SrsAmf0ObjectEOF>(value); | 1170 | + __SrsAmf0ObjectEOF* p = srs_amf0_convert<__SrsAmf0ObjectEOF>(value); |
| 1151 | return srs_amf0_write_object_eof(stream, p); | 1171 | return srs_amf0_write_object_eof(stream, p); |
| 1152 | } | 1172 | } |
| 1153 | case RTMP_AMF0_Object: { | 1173 | case RTMP_AMF0_Object: { |
| @@ -1169,7 +1189,7 @@ int srs_amf0_write_any(SrsStream* stream, SrsAmf0Any* value) | @@ -1169,7 +1189,7 @@ int srs_amf0_write_any(SrsStream* stream, SrsAmf0Any* value) | ||
| 1169 | return ret; | 1189 | return ret; |
| 1170 | } | 1190 | } |
| 1171 | 1191 | ||
| 1172 | -int srs_amf0_read_object_eof(SrsStream* stream, SrsAmf0ObjectEOF*& value) | 1192 | +int srs_amf0_read_object_eof(SrsStream* stream, __SrsAmf0ObjectEOF*& value) |
| 1173 | { | 1193 | { |
| 1174 | int ret = ERROR_SUCCESS; | 1194 | int ret = ERROR_SUCCESS; |
| 1175 | 1195 | ||
| @@ -1207,12 +1227,12 @@ int srs_amf0_read_object_eof(SrsStream* stream, SrsAmf0ObjectEOF*& value) | @@ -1207,12 +1227,12 @@ int srs_amf0_read_object_eof(SrsStream* stream, SrsAmf0ObjectEOF*& value) | ||
| 1207 | } | 1227 | } |
| 1208 | srs_verbose("amf0 read object eof marker success"); | 1228 | srs_verbose("amf0 read object eof marker success"); |
| 1209 | 1229 | ||
| 1210 | - value = new SrsAmf0ObjectEOF(); | 1230 | + value = new __SrsAmf0ObjectEOF(); |
| 1211 | srs_verbose("amf0 read object eof success"); | 1231 | srs_verbose("amf0 read object eof success"); |
| 1212 | 1232 | ||
| 1213 | return ret; | 1233 | return ret; |
| 1214 | } | 1234 | } |
| 1215 | -int srs_amf0_write_object_eof(SrsStream* stream, SrsAmf0ObjectEOF* value) | 1235 | +int srs_amf0_write_object_eof(SrsStream* stream, __SrsAmf0ObjectEOF* value) |
| 1216 | { | 1236 | { |
| 1217 | int ret = ERROR_SUCCESS; | 1237 | int ret = ERROR_SUCCESS; |
| 1218 | 1238 |
| @@ -67,75 +67,22 @@ public: | @@ -67,75 +67,22 @@ public: | ||
| 67 | virtual std::string to_str(); | 67 | virtual std::string to_str(); |
| 68 | /** | 68 | /** |
| 69 | * get the boolean of any when is_boolean() indicates true. | 69 | * get the boolean of any when is_boolean() indicates true. |
| 70 | - * user must ensure the type is a is_boolean, or assert failed. | 70 | + * user must ensure the type is a boolean, or assert failed. |
| 71 | */ | 71 | */ |
| 72 | virtual bool to_boolean(); | 72 | virtual bool to_boolean(); |
| 73 | + /** | ||
| 74 | + * get the number of any when is_number() indicates true. | ||
| 75 | + * user must ensure the type is a number, or assert failed. | ||
| 76 | + */ | ||
| 77 | + virtual double to_number(); | ||
| 73 | public: | 78 | public: |
| 74 | virtual int size() = 0; | 79 | virtual int size() = 0; |
| 75 | public: | 80 | public: |
| 76 | static SrsAmf0Any* str(const char* value = NULL); | 81 | static SrsAmf0Any* str(const char* value = NULL); |
| 77 | - static SrsAmf0Any* boolean(bool value = false); | ||
| 78 | -}; | ||
| 79 | - | ||
| 80 | -/** | ||
| 81 | -* read amf0 number from stream. | ||
| 82 | -* 2.2 Number Type | ||
| 83 | -* number-type = number-marker DOUBLE | ||
| 84 | -* @return default value is 0. | ||
| 85 | -*/ | ||
| 86 | -class SrsAmf0Number : public SrsAmf0Any | ||
| 87 | -{ | ||
| 88 | -public: | ||
| 89 | - double value; | ||
| 90 | - | ||
| 91 | - SrsAmf0Number(double _value = 0.0); | ||
| 92 | - virtual ~SrsAmf0Number(); | ||
| 93 | - | ||
| 94 | - virtual int size(); | ||
| 95 | -}; | ||
| 96 | - | ||
| 97 | -/** | ||
| 98 | -* read amf0 null from stream. | ||
| 99 | -* 2.7 null Type | ||
| 100 | -* null-type = null-marker | ||
| 101 | -*/ | ||
| 102 | -class SrsAmf0Null : public SrsAmf0Any | ||
| 103 | -{ | ||
| 104 | -public: | ||
| 105 | - SrsAmf0Null(); | ||
| 106 | - virtual ~SrsAmf0Null(); | ||
| 107 | - | ||
| 108 | - virtual int size(); | ||
| 109 | -}; | ||
| 110 | - | ||
| 111 | -/** | ||
| 112 | -* read amf0 undefined from stream. | ||
| 113 | -* 2.8 undefined Type | ||
| 114 | -* undefined-type = undefined-marker | ||
| 115 | -*/ | ||
| 116 | -class SrsAmf0Undefined : public SrsAmf0Any | ||
| 117 | -{ | ||
| 118 | -public: | ||
| 119 | - SrsAmf0Undefined(); | ||
| 120 | - virtual ~SrsAmf0Undefined(); | ||
| 121 | - | ||
| 122 | - virtual int size(); | ||
| 123 | -}; | ||
| 124 | - | ||
| 125 | -/** | ||
| 126 | -* 2.11 Object End Type | ||
| 127 | -* object-end-type = UTF-8-empty object-end-marker | ||
| 128 | -* 0x00 0x00 0x09 | ||
| 129 | -*/ | ||
| 130 | -class SrsAmf0ObjectEOF : public SrsAmf0Any | ||
| 131 | -{ | ||
| 132 | -public: | ||
| 133 | - int16_t utf8_empty; | ||
| 134 | - | ||
| 135 | - SrsAmf0ObjectEOF(); | ||
| 136 | - virtual ~SrsAmf0ObjectEOF(); | ||
| 137 | - | ||
| 138 | - virtual int size(); | 82 | + static SrsAmf0Any* boolean(bool value = false); |
| 83 | + static SrsAmf0Any* number(double value = 0.0); | ||
| 84 | + static SrsAmf0Any* null(); | ||
| 85 | + static SrsAmf0Any* undefined(); | ||
| 139 | }; | 86 | }; |
| 140 | 87 | ||
| 141 | /** | 88 | /** |
| @@ -144,14 +91,14 @@ public: | @@ -144,14 +91,14 @@ public: | ||
| 144 | * if ordered in map, the string compare order, the FMLE will creash when | 91 | * if ordered in map, the string compare order, the FMLE will creash when |
| 145 | * get the response of connect app. | 92 | * get the response of connect app. |
| 146 | */ | 93 | */ |
| 147 | -class SrsUnSortedHashtable | 94 | +class __SrsUnSortedHashtable |
| 148 | { | 95 | { |
| 149 | private: | 96 | private: |
| 150 | typedef std::pair<std::string, SrsAmf0Any*> SrsObjectPropertyType; | 97 | typedef std::pair<std::string, SrsAmf0Any*> SrsObjectPropertyType; |
| 151 | std::vector<SrsObjectPropertyType> properties; | 98 | std::vector<SrsObjectPropertyType> properties; |
| 152 | public: | 99 | public: |
| 153 | - SrsUnSortedHashtable(); | ||
| 154 | - virtual ~SrsUnSortedHashtable(); | 100 | + __SrsUnSortedHashtable(); |
| 101 | + virtual ~__SrsUnSortedHashtable(); | ||
| 155 | 102 | ||
| 156 | virtual int size(); | 103 | virtual int size(); |
| 157 | virtual void clear(); | 104 | virtual void clear(); |
| @@ -165,6 +112,22 @@ public: | @@ -165,6 +112,22 @@ public: | ||
| 165 | }; | 112 | }; |
| 166 | 113 | ||
| 167 | /** | 114 | /** |
| 115 | +* 2.11 Object End Type | ||
| 116 | +* object-end-type = UTF-8-empty object-end-marker | ||
| 117 | +* 0x00 0x00 0x09 | ||
| 118 | +*/ | ||
| 119 | +class __SrsAmf0ObjectEOF : public SrsAmf0Any | ||
| 120 | +{ | ||
| 121 | +public: | ||
| 122 | + int16_t utf8_empty; | ||
| 123 | + | ||
| 124 | + __SrsAmf0ObjectEOF(); | ||
| 125 | + virtual ~__SrsAmf0ObjectEOF(); | ||
| 126 | + | ||
| 127 | + virtual int size(); | ||
| 128 | +}; | ||
| 129 | + | ||
| 130 | +/** | ||
| 168 | * 2.5 Object Type | 131 | * 2.5 Object Type |
| 169 | * anonymous-object-type = object-marker *(object-property) | 132 | * anonymous-object-type = object-marker *(object-property) |
| 170 | * object-property = (UTF-8 value-type) | (UTF-8-empty object-end-marker) | 133 | * object-property = (UTF-8 value-type) | (UTF-8-empty object-end-marker) |
| @@ -172,9 +135,9 @@ public: | @@ -172,9 +135,9 @@ public: | ||
| 172 | class SrsAmf0Object : public SrsAmf0Any | 135 | class SrsAmf0Object : public SrsAmf0Any |
| 173 | { | 136 | { |
| 174 | private: | 137 | private: |
| 175 | - SrsUnSortedHashtable properties; | 138 | + __SrsUnSortedHashtable properties; |
| 176 | public: | 139 | public: |
| 177 | - SrsAmf0ObjectEOF eof; | 140 | + __SrsAmf0ObjectEOF eof; |
| 178 | 141 | ||
| 179 | SrsAmf0Object(); | 142 | SrsAmf0Object(); |
| 180 | virtual ~SrsAmf0Object(); | 143 | virtual ~SrsAmf0Object(); |
| @@ -201,10 +164,10 @@ public: | @@ -201,10 +164,10 @@ public: | ||
| 201 | class SrsAmf0EcmaArray : public SrsAmf0Any | 164 | class SrsAmf0EcmaArray : public SrsAmf0Any |
| 202 | { | 165 | { |
| 203 | private: | 166 | private: |
| 204 | - SrsUnSortedHashtable properties; | 167 | + __SrsUnSortedHashtable properties; |
| 205 | public: | 168 | public: |
| 206 | int32_t count; | 169 | int32_t count; |
| 207 | - SrsAmf0ObjectEOF eof; | 170 | + __SrsAmf0ObjectEOF eof; |
| 208 | 171 | ||
| 209 | SrsAmf0EcmaArray(); | 172 | SrsAmf0EcmaArray(); |
| 210 | virtual ~SrsAmf0EcmaArray(); | 173 | virtual ~SrsAmf0EcmaArray(); |
| @@ -277,6 +240,51 @@ public: | @@ -277,6 +240,51 @@ public: | ||
| 277 | }; | 240 | }; |
| 278 | 241 | ||
| 279 | /** | 242 | /** |
| 243 | +* read amf0 number from stream. | ||
| 244 | +* 2.2 Number Type | ||
| 245 | +* number-type = number-marker DOUBLE | ||
| 246 | +* @return default value is 0. | ||
| 247 | +*/ | ||
| 248 | +class __SrsAmf0Number : public SrsAmf0Any | ||
| 249 | +{ | ||
| 250 | +public: | ||
| 251 | + double value; | ||
| 252 | + | ||
| 253 | + __SrsAmf0Number(double _value); | ||
| 254 | + virtual ~__SrsAmf0Number(); | ||
| 255 | + | ||
| 256 | + virtual int size(); | ||
| 257 | +}; | ||
| 258 | + | ||
| 259 | +/** | ||
| 260 | +* read amf0 null from stream. | ||
| 261 | +* 2.7 null Type | ||
| 262 | +* null-type = null-marker | ||
| 263 | +*/ | ||
| 264 | +class __SrsAmf0Null : public SrsAmf0Any | ||
| 265 | +{ | ||
| 266 | +public: | ||
| 267 | + __SrsAmf0Null(); | ||
| 268 | + virtual ~__SrsAmf0Null(); | ||
| 269 | + | ||
| 270 | + virtual int size(); | ||
| 271 | +}; | ||
| 272 | + | ||
| 273 | +/** | ||
| 274 | +* read amf0 undefined from stream. | ||
| 275 | +* 2.8 undefined Type | ||
| 276 | +* undefined-type = undefined-marker | ||
| 277 | +*/ | ||
| 278 | +class __SrsAmf0Undefined : public SrsAmf0Any | ||
| 279 | +{ | ||
| 280 | +public: | ||
| 281 | + __SrsAmf0Undefined(); | ||
| 282 | + virtual ~__SrsAmf0Undefined(); | ||
| 283 | + | ||
| 284 | + virtual int size(); | ||
| 285 | +}; | ||
| 286 | + | ||
| 287 | +/** | ||
| 280 | * read amf0 utf8 string from stream. | 288 | * read amf0 utf8 string from stream. |
| 281 | * 1.3.1 Strings and UTF-8 | 289 | * 1.3.1 Strings and UTF-8 |
| 282 | * UTF-8 = U16 *(UTF8-char) | 290 | * UTF-8 = U16 *(UTF8-char) |
| @@ -284,12 +284,12 @@ int SrsRtmpClient::connect_app(string app, string tc_url) | @@ -284,12 +284,12 @@ int SrsRtmpClient::connect_app(string app, string tc_url) | ||
| 284 | pkt->command_object->set("swfUrl", SrsAmf0Any::str()); | 284 | pkt->command_object->set("swfUrl", SrsAmf0Any::str()); |
| 285 | pkt->command_object->set("tcUrl", SrsAmf0Any::str(tc_url.c_str())); | 285 | pkt->command_object->set("tcUrl", SrsAmf0Any::str(tc_url.c_str())); |
| 286 | pkt->command_object->set("fpad", SrsAmf0Any::boolean(false)); | 286 | pkt->command_object->set("fpad", SrsAmf0Any::boolean(false)); |
| 287 | - pkt->command_object->set("capabilities", new SrsAmf0Number(239)); | ||
| 288 | - pkt->command_object->set("audioCodecs", new SrsAmf0Number(3575)); | ||
| 289 | - pkt->command_object->set("videoCodecs", new SrsAmf0Number(252)); | ||
| 290 | - pkt->command_object->set("videoFunction", new SrsAmf0Number(1)); | 287 | + pkt->command_object->set("capabilities", SrsAmf0Any::number(239)); |
| 288 | + pkt->command_object->set("audioCodecs", SrsAmf0Any::number(3575)); | ||
| 289 | + pkt->command_object->set("videoCodecs", SrsAmf0Any::number(252)); | ||
| 290 | + pkt->command_object->set("videoFunction", SrsAmf0Any::number(1)); | ||
| 291 | pkt->command_object->set("pageUrl", SrsAmf0Any::str()); | 291 | pkt->command_object->set("pageUrl", SrsAmf0Any::str()); |
| 292 | - pkt->command_object->set("objectEncoding", new SrsAmf0Number(0)); | 292 | + pkt->command_object->set("objectEncoding", SrsAmf0Any::number(0)); |
| 293 | 293 | ||
| 294 | if ((ret = protocol->send_message(msg)) != ERROR_SUCCESS) { | 294 | if ((ret = protocol->send_message(msg)) != ERROR_SUCCESS) { |
| 295 | return ret; | 295 | return ret; |
| @@ -643,7 +643,7 @@ int SrsRtmpServer::connect_app(SrsRequest* req) | @@ -643,7 +643,7 @@ int SrsRtmpServer::connect_app(SrsRequest* req) | ||
| 643 | } | 643 | } |
| 644 | 644 | ||
| 645 | if ((prop = pkt->command_object->ensure_property_number("objectEncoding")) != NULL) { | 645 | if ((prop = pkt->command_object->ensure_property_number("objectEncoding")) != NULL) { |
| 646 | - req->objectEncoding = srs_amf0_convert<SrsAmf0Number>(prop)->value; | 646 | + req->objectEncoding = prop->to_number(); |
| 647 | } | 647 | } |
| 648 | 648 | ||
| 649 | srs_info("get connect app message params success."); | 649 | srs_info("get connect app message params success."); |
| @@ -699,13 +699,13 @@ int SrsRtmpServer::response_connect_app(SrsRequest *req, const char* server_ip) | @@ -699,13 +699,13 @@ int SrsRtmpServer::response_connect_app(SrsRequest *req, const char* server_ip) | ||
| 699 | SrsConnectAppResPacket* pkt = new SrsConnectAppResPacket(); | 699 | SrsConnectAppResPacket* pkt = new SrsConnectAppResPacket(); |
| 700 | 700 | ||
| 701 | pkt->props->set("fmsVer", SrsAmf0Any::str("FMS/"RTMP_SIG_FMS_VER)); | 701 | pkt->props->set("fmsVer", SrsAmf0Any::str("FMS/"RTMP_SIG_FMS_VER)); |
| 702 | - pkt->props->set("capabilities", new SrsAmf0Number(127)); | ||
| 703 | - pkt->props->set("mode", new SrsAmf0Number(1)); | 702 | + pkt->props->set("capabilities", SrsAmf0Any::number(127)); |
| 703 | + pkt->props->set("mode", SrsAmf0Any::number(1)); | ||
| 704 | 704 | ||
| 705 | pkt->info->set(StatusLevel, SrsAmf0Any::str(StatusLevelStatus)); | 705 | pkt->info->set(StatusLevel, SrsAmf0Any::str(StatusLevelStatus)); |
| 706 | pkt->info->set(StatusCode, SrsAmf0Any::str(StatusCodeConnectSuccess)); | 706 | pkt->info->set(StatusCode, SrsAmf0Any::str(StatusCodeConnectSuccess)); |
| 707 | pkt->info->set(StatusDescription, SrsAmf0Any::str("Connection succeeded")); | 707 | pkt->info->set(StatusDescription, SrsAmf0Any::str("Connection succeeded")); |
| 708 | - pkt->info->set("objectEncoding", new SrsAmf0Number(req->objectEncoding)); | 708 | + pkt->info->set("objectEncoding", SrsAmf0Any::number(req->objectEncoding)); |
| 709 | SrsAmf0EcmaArray* data = new SrsAmf0EcmaArray(); | 709 | SrsAmf0EcmaArray* data = new SrsAmf0EcmaArray(); |
| 710 | pkt->info->set("data", data); | 710 | pkt->info->set("data", data); |
| 711 | 711 | ||
| @@ -745,7 +745,7 @@ void SrsRtmpServer::response_connect_reject(SrsRequest *req, const char* desc) | @@ -745,7 +745,7 @@ void SrsRtmpServer::response_connect_reject(SrsRequest *req, const char* desc) | ||
| 745 | pkt->props->set(StatusLevel, SrsAmf0Any::str(StatusLevelError)); | 745 | pkt->props->set(StatusLevel, SrsAmf0Any::str(StatusLevelError)); |
| 746 | pkt->props->set(StatusCode, SrsAmf0Any::str(StatusCodeConnectRejected)); | 746 | pkt->props->set(StatusCode, SrsAmf0Any::str(StatusCodeConnectRejected)); |
| 747 | pkt->props->set(StatusDescription, SrsAmf0Any::str(desc)); | 747 | pkt->props->set(StatusDescription, SrsAmf0Any::str(desc)); |
| 748 | - //pkt->props->set("objectEncoding", new SrsAmf0Number(req->objectEncoding)); | 748 | + //pkt->props->set("objectEncoding", SrsAmf0Any::number(req->objectEncoding)); |
| 749 | 749 | ||
| 750 | SrsCommonMessage* msg = (new SrsCommonMessage())->set_packet(pkt, 0); | 750 | SrsCommonMessage* msg = (new SrsCommonMessage())->set_packet(pkt, 0); |
| 751 | if ((ret = protocol->send_message(msg)) != ERROR_SUCCESS) { | 751 | if ((ret = protocol->send_message(msg)) != ERROR_SUCCESS) { |
| @@ -1957,7 +1957,7 @@ SrsCreateStreamPacket::SrsCreateStreamPacket() | @@ -1957,7 +1957,7 @@ SrsCreateStreamPacket::SrsCreateStreamPacket() | ||
| 1957 | { | 1957 | { |
| 1958 | command_name = RTMP_AMF0_COMMAND_CREATE_STREAM; | 1958 | command_name = RTMP_AMF0_COMMAND_CREATE_STREAM; |
| 1959 | transaction_id = 2; | 1959 | transaction_id = 2; |
| 1960 | - command_object = new SrsAmf0Null(); | 1960 | + command_object = SrsAmf0Any::null(); |
| 1961 | } | 1961 | } |
| 1962 | 1962 | ||
| 1963 | SrsCreateStreamPacket::~SrsCreateStreamPacket() | 1963 | SrsCreateStreamPacket::~SrsCreateStreamPacket() |
| @@ -2042,7 +2042,7 @@ SrsCreateStreamResPacket::SrsCreateStreamResPacket(double _transaction_id, doubl | @@ -2042,7 +2042,7 @@ SrsCreateStreamResPacket::SrsCreateStreamResPacket(double _transaction_id, doubl | ||
| 2042 | { | 2042 | { |
| 2043 | command_name = RTMP_AMF0_COMMAND_RESULT; | 2043 | command_name = RTMP_AMF0_COMMAND_RESULT; |
| 2044 | transaction_id = _transaction_id; | 2044 | transaction_id = _transaction_id; |
| 2045 | - command_object = new SrsAmf0Null(); | 2045 | + command_object = SrsAmf0Any::null(); |
| 2046 | stream_id = _stream_id; | 2046 | stream_id = _stream_id; |
| 2047 | } | 2047 | } |
| 2048 | 2048 | ||
| @@ -2140,7 +2140,7 @@ SrsCloseStreamPacket::SrsCloseStreamPacket() | @@ -2140,7 +2140,7 @@ SrsCloseStreamPacket::SrsCloseStreamPacket() | ||
| 2140 | { | 2140 | { |
| 2141 | command_name = RTMP_AMF0_COMMAND_CLOSE_STREAM; | 2141 | command_name = RTMP_AMF0_COMMAND_CLOSE_STREAM; |
| 2142 | transaction_id = 0; | 2142 | transaction_id = 0; |
| 2143 | - command_object = new SrsAmf0Null(); | 2143 | + command_object = SrsAmf0Any::null(); |
| 2144 | } | 2144 | } |
| 2145 | 2145 | ||
| 2146 | SrsCloseStreamPacket::~SrsCloseStreamPacket() | 2146 | SrsCloseStreamPacket::~SrsCloseStreamPacket() |
| @@ -2175,7 +2175,7 @@ SrsFMLEStartPacket::SrsFMLEStartPacket() | @@ -2175,7 +2175,7 @@ SrsFMLEStartPacket::SrsFMLEStartPacket() | ||
| 2175 | { | 2175 | { |
| 2176 | command_name = RTMP_AMF0_COMMAND_RELEASE_STREAM; | 2176 | command_name = RTMP_AMF0_COMMAND_RELEASE_STREAM; |
| 2177 | transaction_id = 0; | 2177 | transaction_id = 0; |
| 2178 | - command_object = new SrsAmf0Null(); | 2178 | + command_object = SrsAmf0Any::null(); |
| 2179 | } | 2179 | } |
| 2180 | 2180 | ||
| 2181 | SrsFMLEStartPacket::~SrsFMLEStartPacket() | 2181 | SrsFMLEStartPacket::~SrsFMLEStartPacket() |
| @@ -2298,8 +2298,8 @@ SrsFMLEStartResPacket::SrsFMLEStartResPacket(double _transaction_id) | @@ -2298,8 +2298,8 @@ SrsFMLEStartResPacket::SrsFMLEStartResPacket(double _transaction_id) | ||
| 2298 | { | 2298 | { |
| 2299 | command_name = RTMP_AMF0_COMMAND_RESULT; | 2299 | command_name = RTMP_AMF0_COMMAND_RESULT; |
| 2300 | transaction_id = _transaction_id; | 2300 | transaction_id = _transaction_id; |
| 2301 | - command_object = new SrsAmf0Null(); | ||
| 2302 | - args = new SrsAmf0Undefined(); | 2301 | + command_object = SrsAmf0Any::null(); |
| 2302 | + args = SrsAmf0Any::undefined(); | ||
| 2303 | } | 2303 | } |
| 2304 | 2304 | ||
| 2305 | SrsFMLEStartResPacket::~SrsFMLEStartResPacket() | 2305 | SrsFMLEStartResPacket::~SrsFMLEStartResPacket() |
| @@ -2397,7 +2397,7 @@ SrsPublishPacket::SrsPublishPacket() | @@ -2397,7 +2397,7 @@ SrsPublishPacket::SrsPublishPacket() | ||
| 2397 | { | 2397 | { |
| 2398 | command_name = RTMP_AMF0_COMMAND_PUBLISH; | 2398 | command_name = RTMP_AMF0_COMMAND_PUBLISH; |
| 2399 | transaction_id = 0; | 2399 | transaction_id = 0; |
| 2400 | - command_object = new SrsAmf0Null(); | 2400 | + command_object = SrsAmf0Any::null(); |
| 2401 | type = "live"; | 2401 | type = "live"; |
| 2402 | } | 2402 | } |
| 2403 | 2403 | ||
| @@ -2506,7 +2506,7 @@ SrsPausePacket::SrsPausePacket() | @@ -2506,7 +2506,7 @@ SrsPausePacket::SrsPausePacket() | ||
| 2506 | { | 2506 | { |
| 2507 | command_name = RTMP_AMF0_COMMAND_PAUSE; | 2507 | command_name = RTMP_AMF0_COMMAND_PAUSE; |
| 2508 | transaction_id = 0; | 2508 | transaction_id = 0; |
| 2509 | - command_object = new SrsAmf0Null(); | 2509 | + command_object = SrsAmf0Any::null(); |
| 2510 | 2510 | ||
| 2511 | time_ms = 0; | 2511 | time_ms = 0; |
| 2512 | is_pause = true; | 2512 | is_pause = true; |
| @@ -2561,7 +2561,7 @@ SrsPlayPacket::SrsPlayPacket() | @@ -2561,7 +2561,7 @@ SrsPlayPacket::SrsPlayPacket() | ||
| 2561 | { | 2561 | { |
| 2562 | command_name = RTMP_AMF0_COMMAND_PLAY; | 2562 | command_name = RTMP_AMF0_COMMAND_PLAY; |
| 2563 | transaction_id = 0; | 2563 | transaction_id = 0; |
| 2564 | - command_object = new SrsAmf0Null(); | 2564 | + command_object = SrsAmf0Any::null(); |
| 2565 | 2565 | ||
| 2566 | start = -2; | 2566 | start = -2; |
| 2567 | duration = -1; | 2567 | duration = -1; |
| @@ -2630,7 +2630,7 @@ int SrsPlayPacket::decode(SrsStream* stream) | @@ -2630,7 +2630,7 @@ int SrsPlayPacket::decode(SrsStream* stream) | ||
| 2630 | if (reset_value->is_boolean()) { | 2630 | if (reset_value->is_boolean()) { |
| 2631 | reset = reset_value->to_boolean(); | 2631 | reset = reset_value->to_boolean(); |
| 2632 | } else if (reset_value->is_number()) { | 2632 | } else if (reset_value->is_number()) { |
| 2633 | - reset = (srs_amf0_convert<SrsAmf0Number>(reset_value)->value == 0 ? false : true); | 2633 | + reset = (reset_value->to_number() == 0 ? false : true); |
| 2634 | } else { | 2634 | } else { |
| 2635 | ret = ERROR_RTMP_AMF0_DECODE; | 2635 | ret = ERROR_RTMP_AMF0_DECODE; |
| 2636 | srs_error("amf0 invalid type=%#x, requires number or bool, ret=%d", reset_value->marker, ret); | 2636 | srs_error("amf0 invalid type=%#x, requires number or bool, ret=%d", reset_value->marker, ret); |
| @@ -2715,7 +2715,7 @@ SrsPlayResPacket::SrsPlayResPacket() | @@ -2715,7 +2715,7 @@ SrsPlayResPacket::SrsPlayResPacket() | ||
| 2715 | { | 2715 | { |
| 2716 | command_name = RTMP_AMF0_COMMAND_RESULT; | 2716 | command_name = RTMP_AMF0_COMMAND_RESULT; |
| 2717 | transaction_id = 0; | 2717 | transaction_id = 0; |
| 2718 | - command_object = new SrsAmf0Null(); | 2718 | + command_object = SrsAmf0Any::null(); |
| 2719 | desc = new SrsAmf0Object(); | 2719 | desc = new SrsAmf0Object(); |
| 2720 | } | 2720 | } |
| 2721 | 2721 | ||
| @@ -2779,7 +2779,7 @@ SrsOnBWDonePacket::SrsOnBWDonePacket() | @@ -2779,7 +2779,7 @@ SrsOnBWDonePacket::SrsOnBWDonePacket() | ||
| 2779 | { | 2779 | { |
| 2780 | command_name = RTMP_AMF0_COMMAND_ON_BW_DONE; | 2780 | command_name = RTMP_AMF0_COMMAND_ON_BW_DONE; |
| 2781 | transaction_id = 0; | 2781 | transaction_id = 0; |
| 2782 | - args = new SrsAmf0Null(); | 2782 | + args = SrsAmf0Any::null(); |
| 2783 | } | 2783 | } |
| 2784 | 2784 | ||
| 2785 | SrsOnBWDonePacket::~SrsOnBWDonePacket() | 2785 | SrsOnBWDonePacket::~SrsOnBWDonePacket() |
| @@ -2834,7 +2834,7 @@ SrsOnStatusCallPacket::SrsOnStatusCallPacket() | @@ -2834,7 +2834,7 @@ SrsOnStatusCallPacket::SrsOnStatusCallPacket() | ||
| 2834 | { | 2834 | { |
| 2835 | command_name = RTMP_AMF0_COMMAND_ON_STATUS; | 2835 | command_name = RTMP_AMF0_COMMAND_ON_STATUS; |
| 2836 | transaction_id = 0; | 2836 | transaction_id = 0; |
| 2837 | - args = new SrsAmf0Null(); | 2837 | + args = SrsAmf0Any::null(); |
| 2838 | data = new SrsAmf0Object(); | 2838 | data = new SrsAmf0Object(); |
| 2839 | } | 2839 | } |
| 2840 | 2840 | ||
| @@ -2897,7 +2897,7 @@ SrsBandwidthPacket::SrsBandwidthPacket() | @@ -2897,7 +2897,7 @@ SrsBandwidthPacket::SrsBandwidthPacket() | ||
| 2897 | { | 2897 | { |
| 2898 | command_name = RTMP_AMF0_COMMAND_ON_STATUS; | 2898 | command_name = RTMP_AMF0_COMMAND_ON_STATUS; |
| 2899 | transaction_id = 0; | 2899 | transaction_id = 0; |
| 2900 | - args = new SrsAmf0Null(); | 2900 | + args = SrsAmf0Any::null(); |
| 2901 | data = new SrsAmf0Object(); | 2901 | data = new SrsAmf0Object(); |
| 2902 | } | 2902 | } |
| 2903 | 2903 |
| @@ -86,8 +86,7 @@ class SrsStream; | @@ -86,8 +86,7 @@ class SrsStream; | ||
| 86 | class SrsCommonMessage; | 86 | class SrsCommonMessage; |
| 87 | class SrsChunkStream; | 87 | class SrsChunkStream; |
| 88 | class SrsAmf0Object; | 88 | class SrsAmf0Object; |
| 89 | -class SrsAmf0Null; | ||
| 90 | -class SrsAmf0Undefined; | 89 | +class SrsAmf0Any; |
| 91 | class ISrsMessage; | 90 | class ISrsMessage; |
| 92 | 91 | ||
| 93 | // convert class name to string. | 92 | // convert class name to string. |
| @@ -600,7 +599,7 @@ protected: | @@ -600,7 +599,7 @@ protected: | ||
| 600 | public: | 599 | public: |
| 601 | std::string command_name; | 600 | std::string command_name; |
| 602 | double transaction_id; | 601 | double transaction_id; |
| 603 | - SrsAmf0Null* command_object; | 602 | + SrsAmf0Any* command_object; // null |
| 604 | public: | 603 | public: |
| 605 | SrsCreateStreamPacket(); | 604 | SrsCreateStreamPacket(); |
| 606 | virtual ~SrsCreateStreamPacket(); | 605 | virtual ~SrsCreateStreamPacket(); |
| @@ -629,7 +628,7 @@ protected: | @@ -629,7 +628,7 @@ protected: | ||
| 629 | public: | 628 | public: |
| 630 | std::string command_name; | 629 | std::string command_name; |
| 631 | double transaction_id; | 630 | double transaction_id; |
| 632 | - SrsAmf0Null* command_object; | 631 | + SrsAmf0Any* command_object; // null |
| 633 | double stream_id; | 632 | double stream_id; |
| 634 | public: | 633 | public: |
| 635 | SrsCreateStreamResPacket(double _transaction_id, double _stream_id); | 634 | SrsCreateStreamResPacket(double _transaction_id, double _stream_id); |
| @@ -659,7 +658,7 @@ protected: | @@ -659,7 +658,7 @@ protected: | ||
| 659 | public: | 658 | public: |
| 660 | std::string command_name; | 659 | std::string command_name; |
| 661 | double transaction_id; | 660 | double transaction_id; |
| 662 | - SrsAmf0Null* command_object; | 661 | + SrsAmf0Any* command_object; // null |
| 663 | public: | 662 | public: |
| 664 | SrsCloseStreamPacket(); | 663 | SrsCloseStreamPacket(); |
| 665 | virtual ~SrsCloseStreamPacket(); | 664 | virtual ~SrsCloseStreamPacket(); |
| @@ -682,7 +681,7 @@ protected: | @@ -682,7 +681,7 @@ protected: | ||
| 682 | public: | 681 | public: |
| 683 | std::string command_name; | 682 | std::string command_name; |
| 684 | double transaction_id; | 683 | double transaction_id; |
| 685 | - SrsAmf0Null* command_object; | 684 | + SrsAmf0Any* command_object; // null |
| 686 | std::string stream_name; | 685 | std::string stream_name; |
| 687 | public: | 686 | public: |
| 688 | SrsFMLEStartPacket(); | 687 | SrsFMLEStartPacket(); |
| @@ -715,8 +714,8 @@ protected: | @@ -715,8 +714,8 @@ protected: | ||
| 715 | public: | 714 | public: |
| 716 | std::string command_name; | 715 | std::string command_name; |
| 717 | double transaction_id; | 716 | double transaction_id; |
| 718 | - SrsAmf0Null* command_object; | ||
| 719 | - SrsAmf0Undefined* args; | 717 | + SrsAmf0Any* command_object; // null |
| 718 | + SrsAmf0Any* args; // undefined | ||
| 720 | public: | 719 | public: |
| 721 | SrsFMLEStartResPacket(double _transaction_id); | 720 | SrsFMLEStartResPacket(double _transaction_id); |
| 722 | virtual ~SrsFMLEStartResPacket(); | 721 | virtual ~SrsFMLEStartResPacket(); |
| @@ -750,7 +749,7 @@ protected: | @@ -750,7 +749,7 @@ protected: | ||
| 750 | public: | 749 | public: |
| 751 | std::string command_name; | 750 | std::string command_name; |
| 752 | double transaction_id; | 751 | double transaction_id; |
| 753 | - SrsAmf0Null* command_object; | 752 | + SrsAmf0Any* command_object; // null |
| 754 | std::string stream_name; | 753 | std::string stream_name; |
| 755 | // optional, default to live. | 754 | // optional, default to live. |
| 756 | std::string type; | 755 | std::string type; |
| @@ -785,7 +784,7 @@ protected: | @@ -785,7 +784,7 @@ protected: | ||
| 785 | public: | 784 | public: |
| 786 | std::string command_name; | 785 | std::string command_name; |
| 787 | double transaction_id; | 786 | double transaction_id; |
| 788 | - SrsAmf0Null* command_object; | 787 | + SrsAmf0Any* command_object; // null |
| 789 | bool is_pause; | 788 | bool is_pause; |
| 790 | double time_ms; | 789 | double time_ms; |
| 791 | public: | 790 | public: |
| @@ -811,7 +810,7 @@ protected: | @@ -811,7 +810,7 @@ protected: | ||
| 811 | public: | 810 | public: |
| 812 | std::string command_name; | 811 | std::string command_name; |
| 813 | double transaction_id; | 812 | double transaction_id; |
| 814 | - SrsAmf0Null* command_object; | 813 | + SrsAmf0Any* command_object; // null |
| 815 | std::string stream_name; | 814 | std::string stream_name; |
| 816 | double start; | 815 | double start; |
| 817 | double duration; | 816 | double duration; |
| @@ -845,7 +844,7 @@ protected: | @@ -845,7 +844,7 @@ protected: | ||
| 845 | public: | 844 | public: |
| 846 | std::string command_name; | 845 | std::string command_name; |
| 847 | double transaction_id; | 846 | double transaction_id; |
| 848 | - SrsAmf0Null* command_object; | 847 | + SrsAmf0Any* command_object; // null |
| 849 | SrsAmf0Object* desc; | 848 | SrsAmf0Object* desc; |
| 850 | public: | 849 | public: |
| 851 | SrsPlayResPacket(); | 850 | SrsPlayResPacket(); |
| @@ -874,7 +873,7 @@ protected: | @@ -874,7 +873,7 @@ protected: | ||
| 874 | public: | 873 | public: |
| 875 | std::string command_name; | 874 | std::string command_name; |
| 876 | double transaction_id; | 875 | double transaction_id; |
| 877 | - SrsAmf0Null* args; | 876 | + SrsAmf0Any* args; // null |
| 878 | public: | 877 | public: |
| 879 | SrsOnBWDonePacket(); | 878 | SrsOnBWDonePacket(); |
| 880 | virtual ~SrsOnBWDonePacket(); | 879 | virtual ~SrsOnBWDonePacket(); |
| @@ -903,7 +902,7 @@ protected: | @@ -903,7 +902,7 @@ protected: | ||
| 903 | public: | 902 | public: |
| 904 | std::string command_name; | 903 | std::string command_name; |
| 905 | double transaction_id; | 904 | double transaction_id; |
| 906 | - SrsAmf0Null* args; | 905 | + SrsAmf0Any* args; // null |
| 907 | SrsAmf0Object* data; | 906 | SrsAmf0Object* data; |
| 908 | public: | 907 | public: |
| 909 | SrsOnStatusCallPacket(); | 908 | SrsOnStatusCallPacket(); |
| @@ -936,7 +935,7 @@ protected: | @@ -936,7 +935,7 @@ protected: | ||
| 936 | public: | 935 | public: |
| 937 | std::string command_name; | 936 | std::string command_name; |
| 938 | double transaction_id; | 937 | double transaction_id; |
| 939 | - SrsAmf0Null* args; | 938 | + SrsAmf0Any* args; // null |
| 940 | SrsAmf0Object* data; | 939 | SrsAmf0Object* data; |
| 941 | public: | 940 | public: |
| 942 | SrsBandwidthPacket(); | 941 | SrsBandwidthPacket(); |
| @@ -63,7 +63,7 @@ VOID TEST(AMF0Test, Size) | @@ -63,7 +63,7 @@ VOID TEST(AMF0Test, Size) | ||
| 63 | SrsAmf0Object o; | 63 | SrsAmf0Object o; |
| 64 | 64 | ||
| 65 | size += SrsAmf0Size::utf8("age")+SrsAmf0Size::number(); | 65 | size += SrsAmf0Size::utf8("age")+SrsAmf0Size::number(); |
| 66 | - o.set("age", new SrsAmf0Number(9)); | 66 | + o.set("age", SrsAmf0Any::number(9)); |
| 67 | 67 | ||
| 68 | EXPECT_EQ(size, SrsAmf0Size::object(&o)); | 68 | EXPECT_EQ(size, SrsAmf0Size::object(&o)); |
| 69 | } | 69 | } |
| @@ -72,7 +72,7 @@ VOID TEST(AMF0Test, Size) | @@ -72,7 +72,7 @@ VOID TEST(AMF0Test, Size) | ||
| 72 | SrsAmf0Object o; | 72 | SrsAmf0Object o; |
| 73 | 73 | ||
| 74 | size += SrsAmf0Size::utf8("email")+SrsAmf0Size::null(); | 74 | size += SrsAmf0Size::utf8("email")+SrsAmf0Size::null(); |
| 75 | - o.set("email", new SrsAmf0Null()); | 75 | + o.set("email", SrsAmf0Any::null()); |
| 76 | 76 | ||
| 77 | EXPECT_EQ(size, SrsAmf0Size::object(&o)); | 77 | EXPECT_EQ(size, SrsAmf0Size::object(&o)); |
| 78 | } | 78 | } |
| @@ -81,7 +81,7 @@ VOID TEST(AMF0Test, Size) | @@ -81,7 +81,7 @@ VOID TEST(AMF0Test, Size) | ||
| 81 | SrsAmf0Object o; | 81 | SrsAmf0Object o; |
| 82 | 82 | ||
| 83 | size += SrsAmf0Size::utf8("email")+SrsAmf0Size::undefined(); | 83 | size += SrsAmf0Size::utf8("email")+SrsAmf0Size::undefined(); |
| 84 | - o.set("email", new SrsAmf0Undefined()); | 84 | + o.set("email", SrsAmf0Any::undefined()); |
| 85 | 85 | ||
| 86 | EXPECT_EQ(size, SrsAmf0Size::object(&o)); | 86 | EXPECT_EQ(size, SrsAmf0Size::object(&o)); |
| 87 | } | 87 | } |
| @@ -117,7 +117,7 @@ VOID TEST(AMF0Test, Size) | @@ -117,7 +117,7 @@ VOID TEST(AMF0Test, Size) | ||
| 117 | SrsAmf0EcmaArray o; | 117 | SrsAmf0EcmaArray o; |
| 118 | 118 | ||
| 119 | size += SrsAmf0Size::utf8("age")+SrsAmf0Size::number(); | 119 | size += SrsAmf0Size::utf8("age")+SrsAmf0Size::number(); |
| 120 | - o.set("age", new SrsAmf0Number(9)); | 120 | + o.set("age", SrsAmf0Any::number(9)); |
| 121 | 121 | ||
| 122 | EXPECT_EQ(size, SrsAmf0Size::array(&o)); | 122 | EXPECT_EQ(size, SrsAmf0Size::array(&o)); |
| 123 | } | 123 | } |
| @@ -126,7 +126,7 @@ VOID TEST(AMF0Test, Size) | @@ -126,7 +126,7 @@ VOID TEST(AMF0Test, Size) | ||
| 126 | SrsAmf0EcmaArray o; | 126 | SrsAmf0EcmaArray o; |
| 127 | 127 | ||
| 128 | size += SrsAmf0Size::utf8("email")+SrsAmf0Size::null(); | 128 | size += SrsAmf0Size::utf8("email")+SrsAmf0Size::null(); |
| 129 | - o.set("email", new SrsAmf0Null()); | 129 | + o.set("email", SrsAmf0Any::null()); |
| 130 | 130 | ||
| 131 | EXPECT_EQ(size, SrsAmf0Size::array(&o)); | 131 | EXPECT_EQ(size, SrsAmf0Size::array(&o)); |
| 132 | } | 132 | } |
| @@ -135,7 +135,7 @@ VOID TEST(AMF0Test, Size) | @@ -135,7 +135,7 @@ VOID TEST(AMF0Test, Size) | ||
| 135 | SrsAmf0EcmaArray o; | 135 | SrsAmf0EcmaArray o; |
| 136 | 136 | ||
| 137 | size += SrsAmf0Size::utf8("email")+SrsAmf0Size::undefined(); | 137 | size += SrsAmf0Size::utf8("email")+SrsAmf0Size::undefined(); |
| 138 | - o.set("email", new SrsAmf0Undefined()); | 138 | + o.set("email", SrsAmf0Any::undefined()); |
| 139 | 139 | ||
| 140 | EXPECT_EQ(size, SrsAmf0Size::array(&o)); | 140 | EXPECT_EQ(size, SrsAmf0Size::array(&o)); |
| 141 | } | 141 | } |
| @@ -177,7 +177,7 @@ VOID TEST(AMF0Test, Size) | @@ -177,7 +177,7 @@ VOID TEST(AMF0Test, Size) | ||
| 177 | o.set("args", args); | 177 | o.set("args", args); |
| 178 | 178 | ||
| 179 | SrsAmf0EcmaArray* params = new SrsAmf0EcmaArray(); | 179 | SrsAmf0EcmaArray* params = new SrsAmf0EcmaArray(); |
| 180 | - params->set("p1", new SrsAmf0Number(10)); | 180 | + params->set("p1", SrsAmf0Any::number(10)); |
| 181 | size += SrsAmf0Size::utf8("params")+SrsAmf0Size::array(params); | 181 | size += SrsAmf0Size::utf8("params")+SrsAmf0Size::array(params); |
| 182 | o.set("params", params); | 182 | o.set("params", params); |
| 183 | 183 | ||
| @@ -212,7 +212,7 @@ VOID TEST(AMF0Test, Size) | @@ -212,7 +212,7 @@ VOID TEST(AMF0Test, Size) | ||
| 212 | o.set("args", args); | 212 | o.set("args", args); |
| 213 | 213 | ||
| 214 | SrsAmf0Object* params = new SrsAmf0Object(); | 214 | SrsAmf0Object* params = new SrsAmf0Object(); |
| 215 | - params->set("p1", new SrsAmf0Number(10)); | 215 | + params->set("p1", SrsAmf0Any::number(10)); |
| 216 | size += SrsAmf0Size::utf8("params")+SrsAmf0Size::object(params); | 216 | size += SrsAmf0Size::utf8("params")+SrsAmf0Size::object(params); |
| 217 | o.set("params", params); | 217 | o.set("params", params); |
| 218 | 218 | ||
| @@ -233,7 +233,7 @@ VOID TEST(AMF0Test, Size) | @@ -233,7 +233,7 @@ VOID TEST(AMF0Test, Size) | ||
| 233 | o.set("args", args); | 233 | o.set("args", args); |
| 234 | 234 | ||
| 235 | SrsAmf0Object* params = new SrsAmf0Object(); | 235 | SrsAmf0Object* params = new SrsAmf0Object(); |
| 236 | - params->set("p1", new SrsAmf0Number(10)); | 236 | + params->set("p1", SrsAmf0Any::number(10)); |
| 237 | size += SrsAmf0Size::utf8("params")+SrsAmf0Size::object(params); | 237 | size += SrsAmf0Size::utf8("params")+SrsAmf0Size::object(params); |
| 238 | o.set("params", params); | 238 | o.set("params", params); |
| 239 | 239 | ||
| @@ -254,7 +254,7 @@ VOID TEST(AMF0Test, Size) | @@ -254,7 +254,7 @@ VOID TEST(AMF0Test, Size) | ||
| 254 | o.set("args", args); | 254 | o.set("args", args); |
| 255 | 255 | ||
| 256 | SrsAmf0EcmaArray* params = new SrsAmf0EcmaArray(); | 256 | SrsAmf0EcmaArray* params = new SrsAmf0EcmaArray(); |
| 257 | - params->set("p1", new SrsAmf0Number(10)); | 257 | + params->set("p1", SrsAmf0Any::number(10)); |
| 258 | size += SrsAmf0Size::utf8("params")+SrsAmf0Size::array(params); | 258 | size += SrsAmf0Size::utf8("params")+SrsAmf0Size::array(params); |
| 259 | o.set("params", params); | 259 | o.set("params", params); |
| 260 | 260 | ||
| @@ -304,4 +304,43 @@ VOID TEST(AMF0Test, AnyElem) | @@ -304,4 +304,43 @@ VOID TEST(AMF0Test, AnyElem) | ||
| 304 | EXPECT_TRUE(o->is_boolean()); | 304 | EXPECT_TRUE(o->is_boolean()); |
| 305 | EXPECT_TRUE(o->to_boolean()); | 305 | EXPECT_TRUE(o->to_boolean()); |
| 306 | } | 306 | } |
| 307 | + | ||
| 308 | + // number | ||
| 309 | + if (true) { | ||
| 310 | + o = SrsAmf0Any::number(); | ||
| 311 | + SrsAutoFree(SrsAmf0Any, o, false); | ||
| 312 | + EXPECT_TRUE(NULL != o); | ||
| 313 | + EXPECT_TRUE(o->is_number()); | ||
| 314 | + EXPECT_DOUBLE_EQ(0, o->to_number()); | ||
| 315 | + } | ||
| 316 | + if (true) { | ||
| 317 | + o = SrsAmf0Any::number(100); | ||
| 318 | + SrsAutoFree(SrsAmf0Any, o, false); | ||
| 319 | + EXPECT_TRUE(NULL != o); | ||
| 320 | + EXPECT_TRUE(o->is_number()); | ||
| 321 | + EXPECT_DOUBLE_EQ(100, o->to_number()); | ||
| 322 | + } | ||
| 323 | + if (true) { | ||
| 324 | + o = SrsAmf0Any::number(-100); | ||
| 325 | + SrsAutoFree(SrsAmf0Any, o, false); | ||
| 326 | + EXPECT_TRUE(NULL != o); | ||
| 327 | + EXPECT_TRUE(o->is_number()); | ||
| 328 | + EXPECT_DOUBLE_EQ(-100, o->to_number()); | ||
| 329 | + } | ||
| 330 | + | ||
| 331 | + // null | ||
| 332 | + if (true) { | ||
| 333 | + o = SrsAmf0Any::null(); | ||
| 334 | + SrsAutoFree(SrsAmf0Any, o, false); | ||
| 335 | + EXPECT_TRUE(NULL != o); | ||
| 336 | + EXPECT_TRUE(o->is_null()); | ||
| 337 | + } | ||
| 338 | + | ||
| 339 | + // undefined | ||
| 340 | + if (true) { | ||
| 341 | + o = SrsAmf0Any::undefined(); | ||
| 342 | + SrsAutoFree(SrsAmf0Any, o, false); | ||
| 343 | + EXPECT_TRUE(NULL != o); | ||
| 344 | + EXPECT_TRUE(o->is_undefined()); | ||
| 345 | + } | ||
| 307 | } | 346 | } |
-
请 注册 或 登录 后发表评论