winlin

refine autofree, only free object, never free arrays

@@ -203,8 +203,8 @@ int SrsBandwidth::do_bandwidth_check() @@ -203,8 +203,8 @@ int SrsBandwidth::do_bandwidth_check()
203 srs_info("expect final message failed. ret=%d", ret); 203 srs_info("expect final message failed. ret=%d", ret);
204 return ERROR_SUCCESS; 204 return ERROR_SUCCESS;
205 } 205 }
206 - SrsAutoFree(SrsMessage, msg, false);  
207 - SrsAutoFree(SrsBandwidthPacket, pkt, false); 206 + SrsAutoFree(SrsMessage, msg);
  207 + SrsAutoFree(SrsBandwidthPacket, pkt);
208 srs_info("get final message success."); 208 srs_info("get final message success.");
209 209
210 if (pkt->is_flash_final()) { 210 if (pkt->is_flash_final()) {
@@ -248,8 +248,8 @@ int SrsBandwidth::check_play( @@ -248,8 +248,8 @@ int SrsBandwidth::check_play(
248 srs_error("expect bandwidth message failed. ret=%d", ret); 248 srs_error("expect bandwidth message failed. ret=%d", ret);
249 return ret; 249 return ret;
250 } 250 }
251 - SrsAutoFree(SrsMessage, msg, false);  
252 - SrsAutoFree(SrsBandwidthPacket, pkt, false); 251 + SrsAutoFree(SrsMessage, msg);
  252 + SrsAutoFree(SrsBandwidthPacket, pkt);
253 srs_info("get bandwidth message succes."); 253 srs_info("get bandwidth message succes.");
254 254
255 if (pkt->is_starting_play()) { 255 if (pkt->is_starting_play()) {
@@ -329,8 +329,8 @@ int SrsBandwidth::check_play( @@ -329,8 +329,8 @@ int SrsBandwidth::check_play(
329 srs_error("expect bandwidth message failed. ret=%d", ret); 329 srs_error("expect bandwidth message failed. ret=%d", ret);
330 return ret; 330 return ret;
331 } 331 }
332 - SrsAutoFree(SrsMessage, msg, false);  
333 - SrsAutoFree(SrsBandwidthPacket, pkt, false); 332 + SrsAutoFree(SrsMessage, msg);
  333 + SrsAutoFree(SrsBandwidthPacket, pkt);
334 srs_info("get bandwidth message succes."); 334 srs_info("get bandwidth message succes.");
335 335
336 if (pkt->is_stopped_play()) { 336 if (pkt->is_stopped_play()) {
@@ -372,8 +372,8 @@ int SrsBandwidth::check_publish( @@ -372,8 +372,8 @@ int SrsBandwidth::check_publish(
372 srs_error("expect bandwidth message failed. ret=%d", ret); 372 srs_error("expect bandwidth message failed. ret=%d", ret);
373 return ret; 373 return ret;
374 } 374 }
375 - SrsAutoFree(SrsMessage, msg, false);  
376 - SrsAutoFree(SrsBandwidthPacket, pkt, false); 375 + SrsAutoFree(SrsMessage, msg);
  376 + SrsAutoFree(SrsBandwidthPacket, pkt);
377 srs_info("get bandwidth message succes."); 377 srs_info("get bandwidth message succes.");
378 378
379 if (pkt->is_starting_publish()) { 379 if (pkt->is_starting_publish()) {
@@ -392,7 +392,7 @@ int SrsBandwidth::check_publish( @@ -392,7 +392,7 @@ int SrsBandwidth::check_publish(
392 srs_error("recv message failed. ret=%d", ret); 392 srs_error("recv message failed. ret=%d", ret);
393 return ret; 393 return ret;
394 } 394 }
395 - SrsAutoFree(SrsMessage, msg, false); 395 + SrsAutoFree(SrsMessage, msg);
396 396
397 publish_bytes = rtmp->get_recv_bytes(); 397 publish_bytes = rtmp->get_recv_bytes();
398 398
@@ -440,8 +440,8 @@ int SrsBandwidth::check_publish( @@ -440,8 +440,8 @@ int SrsBandwidth::check_publish(
440 srs_error("expect bandwidth message failed. ret=%d", ret); 440 srs_error("expect bandwidth message failed. ret=%d", ret);
441 return ret; 441 return ret;
442 } 442 }
443 - SrsAutoFree(SrsMessage, msg, false);  
444 - SrsAutoFree(SrsBandwidthPacket, pkt, false); 443 + SrsAutoFree(SrsMessage, msg);
  444 + SrsAutoFree(SrsBandwidthPacket, pkt);
445 srs_info("get bandwidth message succes."); 445 srs_info("get bandwidth message succes.");
446 446
447 if (pkt->is_stopped_publish()) { 447 if (pkt->is_stopped_publish()) {
@@ -488,7 +488,7 @@ int SrsConfig::reload() @@ -488,7 +488,7 @@ int SrsConfig::reload()
488 srs_info("config reloader parse file success."); 488 srs_info("config reloader parse file success.");
489 489
490 SrsConfDirective* old_root = root; 490 SrsConfDirective* old_root = root;
491 - SrsAutoFree(SrsConfDirective, old_root, false); 491 + SrsAutoFree(SrsConfDirective, old_root);
492 492
493 root = conf.root; 493 root = conf.root;
494 conf.root = NULL; 494 conf.root = NULL;
@@ -446,7 +446,7 @@ int SrsDvrPlan::on_meta_data(SrsOnMetaDataPacket* metadata) @@ -446,7 +446,7 @@ int SrsDvrPlan::on_meta_data(SrsOnMetaDataPacket* metadata)
446 if ((ret = metadata->encode(size, payload)) != ERROR_SUCCESS) { 446 if ((ret = metadata->encode(size, payload)) != ERROR_SUCCESS) {
447 return ret; 447 return ret;
448 } 448 }
449 - SrsAutoFree(char, payload, true); 449 + SrsAutoFree(char, payload);
450 450
451 if ((ret = enc->write_metadata(payload, size)) != ERROR_SUCCESS) { 451 if ((ret = enc->write_metadata(payload, size)) != ERROR_SUCCESS) {
452 return ret; 452 return ret;
@@ -835,7 +835,7 @@ int SrsDvrHssPlan::on_meta_data(SrsOnMetaDataPacket* metadata) @@ -835,7 +835,7 @@ int SrsDvrHssPlan::on_meta_data(SrsOnMetaDataPacket* metadata)
835 if ((ret = metadata->encode(size, payload)) != ERROR_SUCCESS) { 835 if ((ret = metadata->encode(size, payload)) != ERROR_SUCCESS) {
836 return ret; 836 return ret;
837 } 837 }
838 - SrsAutoFree(char, payload, true); 838 + SrsAutoFree(char, payload);
839 839
840 if ((ret = enc.write_metadata(payload, size)) != ERROR_SUCCESS) { 840 if ((ret = enc.write_metadata(payload, size)) != ERROR_SUCCESS) {
841 return ret; 841 return ret;
@@ -1002,7 +1002,7 @@ int SrsDvr::on_audio(SrsSharedPtrMessage* audio) @@ -1002,7 +1002,7 @@ int SrsDvr::on_audio(SrsSharedPtrMessage* audio)
1002 { 1002 {
1003 int ret = ERROR_SUCCESS; 1003 int ret = ERROR_SUCCESS;
1004 1004
1005 - SrsAutoFree(SrsSharedPtrMessage, audio, false); 1005 + SrsAutoFree(SrsSharedPtrMessage, audio);
1006 1006
1007 if ((ret = plan->on_audio(audio)) != ERROR_SUCCESS) { 1007 if ((ret = plan->on_audio(audio)) != ERROR_SUCCESS) {
1008 return ret; 1008 return ret;
@@ -1015,7 +1015,7 @@ int SrsDvr::on_video(SrsSharedPtrMessage* video) @@ -1015,7 +1015,7 @@ int SrsDvr::on_video(SrsSharedPtrMessage* video)
1015 { 1015 {
1016 int ret = ERROR_SUCCESS; 1016 int ret = ERROR_SUCCESS;
1017 1017
1018 - SrsAutoFree(SrsSharedPtrMessage, video, false); 1018 + SrsAutoFree(SrsSharedPtrMessage, video);
1019 1019
1020 if ((ret = plan->on_video(video)) != ERROR_SUCCESS) { 1020 if ((ret = plan->on_video(video)) != ERROR_SUCCESS) {
1021 return ret; 1021 return ret;
@@ -186,7 +186,7 @@ int SrsEdgeIngester::ingest() @@ -186,7 +186,7 @@ int SrsEdgeIngester::ingest()
186 srs_verbose("edge loop recv message. ret=%d", ret); 186 srs_verbose("edge loop recv message. ret=%d", ret);
187 187
188 srs_assert(msg); 188 srs_assert(msg);
189 - SrsAutoFree(SrsMessage, msg, false); 189 + SrsAutoFree(SrsMessage, msg);
190 190
191 if ((ret = process_publish_message(msg)) != ERROR_SUCCESS) { 191 if ((ret = process_publish_message(msg)) != ERROR_SUCCESS) {
192 return ret; 192 return ret;
@@ -234,7 +234,7 @@ int SrsEdgeIngester::process_publish_message(SrsMessage* msg) @@ -234,7 +234,7 @@ int SrsEdgeIngester::process_publish_message(SrsMessage* msg)
234 srs_error("decode onMetaData message failed. ret=%d", ret); 234 srs_error("decode onMetaData message failed. ret=%d", ret);
235 return ret; 235 return ret;
236 } 236 }
237 - SrsAutoFree(SrsPacket, pkt, false); 237 + SrsAutoFree(SrsPacket, pkt);
238 238
239 if (dynamic_cast<SrsOnMetaDataPacket*>(pkt)) { 239 if (dynamic_cast<SrsOnMetaDataPacket*>(pkt)) {
240 SrsOnMetaDataPacket* metadata = dynamic_cast<SrsOnMetaDataPacket*>(pkt); 240 SrsOnMetaDataPacket* metadata = dynamic_cast<SrsOnMetaDataPacket*>(pkt);
@@ -527,7 +527,7 @@ int SrsEdgeForwarder::proxy(SrsMessage* msg) @@ -527,7 +527,7 @@ int SrsEdgeForwarder::proxy(SrsMessage* msg)
527 527
528 // TODO: FIXME: use utility to copy msg to shared ptr msg. 528 // TODO: FIXME: use utility to copy msg to shared ptr msg.
529 SrsSharedPtrMessage* copy = new SrsSharedPtrMessage(); 529 SrsSharedPtrMessage* copy = new SrsSharedPtrMessage();
530 - SrsAutoFree(SrsSharedPtrMessage, copy, false); 530 + SrsAutoFree(SrsSharedPtrMessage, copy);
531 if ((ret = copy->initialize(msg)) != ERROR_SUCCESS) { 531 if ((ret = copy->initialize(msg)) != ERROR_SUCCESS) {
532 srs_error("initialize the msg failed. ret=%d", ret); 532 srs_error("initialize the msg failed. ret=%d", ret);
533 return ret; 533 return ret;
@@ -1388,7 +1388,7 @@ int SrsHls::on_audio(SrsSharedPtrMessage* audio) @@ -1388,7 +1388,7 @@ int SrsHls::on_audio(SrsSharedPtrMessage* audio)
1388 { 1388 {
1389 int ret = ERROR_SUCCESS; 1389 int ret = ERROR_SUCCESS;
1390 1390
1391 - SrsAutoFree(SrsSharedPtrMessage, audio, false); 1391 + SrsAutoFree(SrsSharedPtrMessage, audio);
1392 1392
1393 if (!hls_enabled) { 1393 if (!hls_enabled) {
1394 return ret; 1394 return ret;
@@ -1432,7 +1432,7 @@ int SrsHls::on_video(SrsSharedPtrMessage* video) @@ -1432,7 +1432,7 @@ int SrsHls::on_video(SrsSharedPtrMessage* video)
1432 { 1432 {
1433 int ret = ERROR_SUCCESS; 1433 int ret = ERROR_SUCCESS;
1434 1434
1435 - SrsAutoFree(SrsSharedPtrMessage, video, false); 1435 + SrsAutoFree(SrsSharedPtrMessage, video);
1436 1436
1437 if (!hls_enabled) { 1437 if (!hls_enabled) {
1438 return ret; 1438 return ret;
@@ -532,7 +532,7 @@ int SrsHttpApi::do_cycle() @@ -532,7 +532,7 @@ int SrsHttpApi::do_cycle()
532 srs_assert(req->is_complete()); 532 srs_assert(req->is_complete());
533 533
534 // always free it in this scope. 534 // always free it in this scope.
535 - SrsAutoFree(SrsHttpMessage, req, false); 535 + SrsAutoFree(SrsHttpMessage, req);
536 536
537 // ok, handle http request. 537 // ok, handle http request.
538 if ((ret = process_request(&skt, req)) != ERROR_SUCCESS) { 538 if ((ret = process_request(&skt, req)) != ERROR_SUCCESS) {
@@ -228,7 +228,7 @@ int SrsHttpVhost::do_process_request(SrsSocket* skt, SrsHttpMessage* req) @@ -228,7 +228,7 @@ int SrsHttpVhost::do_process_request(SrsSocket* skt, SrsHttpMessage* req)
228 ::lseek(fd, 0, SEEK_SET); 228 ::lseek(fd, 0, SEEK_SET);
229 229
230 char* buf = new char[length]; 230 char* buf = new char[length];
231 - SrsAutoFree(char, buf, true); 231 + SrsAutoFree(char, buf);
232 232
233 // TODO: FIXME: use st_read. 233 // TODO: FIXME: use st_read.
234 if (::read(fd, buf, length) < 0) { 234 if (::read(fd, buf, length) < 0) {
@@ -352,7 +352,7 @@ int SrsHttpConn::do_cycle() @@ -352,7 +352,7 @@ int SrsHttpConn::do_cycle()
352 srs_assert(req->is_complete()); 352 srs_assert(req->is_complete());
353 353
354 // always free it in this scope. 354 // always free it in this scope.
355 - SrsAutoFree(SrsHttpMessage, req, false); 355 + SrsAutoFree(SrsHttpMessage, req);
356 356
357 // ok, handle http request. 357 // ok, handle http request.
358 if ((ret = process_request(&skt, req)) != ERROR_SUCCESS) { 358 if ((ret = process_request(&skt, req)) != ERROR_SUCCESS) {
@@ -460,7 +460,7 @@ int SrsRtmpConn::playing(SrsSource* source) @@ -460,7 +460,7 @@ int SrsRtmpConn::playing(SrsSource* source)
460 } 460 }
461 461
462 srs_assert(consumer != NULL); 462 srs_assert(consumer != NULL);
463 - SrsAutoFree(SrsConsumer, consumer, false); 463 + SrsAutoFree(SrsConsumer, consumer);
464 srs_verbose("consumer created success."); 464 srs_verbose("consumer created success.");
465 465
466 rtmp->set_recv_timeout(SRS_PULSE_TIMEOUT_US); 466 rtmp->set_recv_timeout(SRS_PULSE_TIMEOUT_US);
@@ -595,7 +595,7 @@ int SrsRtmpConn::fmle_publish(SrsSource* source) @@ -595,7 +595,7 @@ int SrsRtmpConn::fmle_publish(SrsSource* source)
595 return ret; 595 return ret;
596 } 596 }
597 597
598 - SrsAutoFree(SrsMessage, msg, false); 598 + SrsAutoFree(SrsMessage, msg);
599 599
600 pithy_print.elapse(); 600 pithy_print.elapse();
601 601
@@ -614,7 +614,7 @@ int SrsRtmpConn::fmle_publish(SrsSource* source) @@ -614,7 +614,7 @@ int SrsRtmpConn::fmle_publish(SrsSource* source)
614 return ret; 614 return ret;
615 } 615 }
616 616
617 - SrsAutoFree(SrsPacket, pkt, false); 617 + SrsAutoFree(SrsPacket, pkt);
618 618
619 if (dynamic_cast<SrsFMLEStartPacket*>(pkt)) { 619 if (dynamic_cast<SrsFMLEStartPacket*>(pkt)) {
620 SrsFMLEStartPacket* unpublish = dynamic_cast<SrsFMLEStartPacket*>(pkt); 620 SrsFMLEStartPacket* unpublish = dynamic_cast<SrsFMLEStartPacket*>(pkt);
@@ -671,7 +671,7 @@ int SrsRtmpConn::flash_publish(SrsSource* source) @@ -671,7 +671,7 @@ int SrsRtmpConn::flash_publish(SrsSource* source)
671 return ret; 671 return ret;
672 } 672 }
673 673
674 - SrsAutoFree(SrsMessage, msg, false); 674 + SrsAutoFree(SrsMessage, msg);
675 675
676 pithy_print.elapse(); 676 pithy_print.elapse();
677 677
@@ -690,7 +690,7 @@ int SrsRtmpConn::flash_publish(SrsSource* source) @@ -690,7 +690,7 @@ int SrsRtmpConn::flash_publish(SrsSource* source)
690 return ret; 690 return ret;
691 } 691 }
692 692
693 - SrsAutoFree(SrsPacket, pkt, false); 693 + SrsAutoFree(SrsPacket, pkt);
694 694
695 // flash unpublish. 695 // flash unpublish.
696 // TODO: maybe need to support republish. 696 // TODO: maybe need to support republish.
@@ -754,7 +754,7 @@ int SrsRtmpConn::process_publish_message(SrsSource* source, SrsMessage* msg, boo @@ -754,7 +754,7 @@ int SrsRtmpConn::process_publish_message(SrsSource* source, SrsMessage* msg, boo
754 srs_error("decode onMetaData message failed. ret=%d", ret); 754 srs_error("decode onMetaData message failed. ret=%d", ret);
755 return ret; 755 return ret;
756 } 756 }
757 - SrsAutoFree(SrsPacket, pkt, false); 757 + SrsAutoFree(SrsPacket, pkt);
758 758
759 if (dynamic_cast<SrsOnMetaDataPacket*>(pkt)) { 759 if (dynamic_cast<SrsOnMetaDataPacket*>(pkt)) {
760 SrsOnMetaDataPacket* metadata = dynamic_cast<SrsOnMetaDataPacket*>(pkt); 760 SrsOnMetaDataPacket* metadata = dynamic_cast<SrsOnMetaDataPacket*>(pkt);
@@ -781,7 +781,7 @@ int SrsRtmpConn::process_play_control_msg(SrsConsumer* consumer, SrsMessage* msg @@ -781,7 +781,7 @@ int SrsRtmpConn::process_play_control_msg(SrsConsumer* consumer, SrsMessage* msg
781 srs_verbose("ignore all empty message."); 781 srs_verbose("ignore all empty message.");
782 return ret; 782 return ret;
783 } 783 }
784 - SrsAutoFree(SrsMessage, msg, false); 784 + SrsAutoFree(SrsMessage, msg);
785 785
786 if (!msg->header.is_amf0_command() && !msg->header.is_amf3_command()) { 786 if (!msg->header.is_amf0_command() && !msg->header.is_amf3_command()) {
787 srs_info("ignore all message except amf0/amf3 command."); 787 srs_info("ignore all message except amf0/amf3 command.");
@@ -795,7 +795,7 @@ int SrsRtmpConn::process_play_control_msg(SrsConsumer* consumer, SrsMessage* msg @@ -795,7 +795,7 @@ int SrsRtmpConn::process_play_control_msg(SrsConsumer* consumer, SrsMessage* msg
795 } 795 }
796 srs_info("decode the amf0/amf3 command packet success."); 796 srs_info("decode the amf0/amf3 command packet success.");
797 797
798 - SrsAutoFree(SrsPacket, pkt, false); 798 + SrsAutoFree(SrsPacket, pkt);
799 799
800 // for jwplayer/flowplayer, which send close as pause message. 800 // for jwplayer/flowplayer, which send close as pause message.
801 // @see https://github.com/winlinvip/simple-rtmp-server/issues/6 801 // @see https://github.com/winlinvip/simple-rtmp-server/issues/6
@@ -898,7 +898,7 @@ int SrsSource::on_audio(SrsMessage* audio) @@ -898,7 +898,7 @@ int SrsSource::on_audio(SrsMessage* audio)
898 int ret = ERROR_SUCCESS; 898 int ret = ERROR_SUCCESS;
899 899
900 SrsSharedPtrMessage* msg = new SrsSharedPtrMessage(); 900 SrsSharedPtrMessage* msg = new SrsSharedPtrMessage();
901 - SrsAutoFree(SrsSharedPtrMessage, msg, false); 901 + SrsAutoFree(SrsSharedPtrMessage, msg);
902 if ((ret = msg->initialize(audio)) != ERROR_SUCCESS) { 902 if ((ret = msg->initialize(audio)) != ERROR_SUCCESS) {
903 srs_error("initialize the audio failed. ret=%d", ret); 903 srs_error("initialize the audio failed. ret=%d", ret);
904 return ret; 904 return ret;
@@ -988,7 +988,7 @@ int SrsSource::on_video(SrsMessage* video) @@ -988,7 +988,7 @@ int SrsSource::on_video(SrsMessage* video)
988 int ret = ERROR_SUCCESS; 988 int ret = ERROR_SUCCESS;
989 989
990 SrsSharedPtrMessage* msg = new SrsSharedPtrMessage(); 990 SrsSharedPtrMessage* msg = new SrsSharedPtrMessage();
991 - SrsAutoFree(SrsSharedPtrMessage, msg, false); 991 + SrsAutoFree(SrsSharedPtrMessage, msg);
992 if ((ret = msg->initialize(video)) != ERROR_SUCCESS) { 992 if ((ret = msg->initialize(video)) != ERROR_SUCCESS) {
993 srs_error("initialize the video failed. ret=%d", ret); 993 srs_error("initialize the video failed. ret=%d", ret);
994 return ret; 994 return ret;
@@ -33,23 +33,21 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -33,23 +33,21 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
33 /** 33 /**
34 * auto free the instance in the current scope. 34 * auto free the instance in the current scope.
35 */ 35 */
36 -#define SrsAutoFree(className, instance, is_array) \  
37 - __SrsAutoFree<className> _auto_free_##instance((className**)&instance, is_array) 36 +#define SrsAutoFree(className, instance) \
  37 + __SrsAutoFree<className> _auto_free_##instance((className**)&instance)
38 38
39 template<class T> 39 template<class T>
40 class __SrsAutoFree 40 class __SrsAutoFree
41 { 41 {
42 private: 42 private:
43 T** ptr; 43 T** ptr;
44 - bool is_array;  
45 public: 44 public:
46 /** 45 /**
47 * auto delete the ptr. 46 * auto delete the ptr.
48 * @is_array a bool value indicates whether the ptr is a array. 47 * @is_array a bool value indicates whether the ptr is a array.
49 */ 48 */
50 - __SrsAutoFree(T** _ptr, bool _is_array){ 49 + __SrsAutoFree(T** _ptr){
51 ptr = _ptr; 50 ptr = _ptr;
52 - is_array = _is_array;  
53 } 51 }
54 52
55 virtual ~__SrsAutoFree(){ 53 virtual ~__SrsAutoFree(){
@@ -57,15 +55,22 @@ public: @@ -57,15 +55,22 @@ public:
57 return; 55 return;
58 } 56 }
59 57
60 - if (is_array) {  
61 - delete[] *ptr;  
62 - } else {  
63 - delete *ptr;  
64 - } 58 + delete *ptr;
65 59
66 *ptr = NULL; 60 *ptr = NULL;
67 } 61 }
68 }; 62 };
69 63
  64 +/**
  65 +* auto free the array ptrs, for example, MyClass* msgs[10],
  66 +* which stores 10 MyClass* objects, this class will:
  67 +* 1. free each MyClass* in array.
  68 +* 2. free the msgs itself.
  69 +* @remark, MyClass* msgs[] equals to MyClass**, the ptr array equals ptr to ptr.
  70 +*/
  71 +template<class T>
  72 +class SrsObjectPtrArrayAutoFree
  73 +{
  74 +};
70 75
71 #endif 76 #endif
@@ -291,7 +291,7 @@ int srs_read_packet(srs_rtmp_t rtmp, int* type, u_int32_t* timestamp, char** dat @@ -291,7 +291,7 @@ int srs_read_packet(srs_rtmp_t rtmp, int* type, u_int32_t* timestamp, char** dat
291 continue; 291 continue;
292 } 292 }
293 293
294 - SrsAutoFree(SrsMessage, msg, false); 294 + SrsAutoFree(SrsMessage, msg);
295 295
296 if (msg->header.is_audio()) { 296 if (msg->header.is_audio()) {
297 *type = SRS_RTMP_TYPE_AUDIO; 297 *type = SRS_RTMP_TYPE_AUDIO;
@@ -348,8 +348,8 @@ int SrsBandCheckClient::expect_start_play() @@ -348,8 +348,8 @@ int SrsBandCheckClient::expect_start_play()
348 srs_error("expect bandcheck start play message failed. ret=%d", ret); 348 srs_error("expect bandcheck start play message failed. ret=%d", ret);
349 return ret; 349 return ret;
350 } 350 }
351 - SrsAutoFree(SrsMessage, msg, false);  
352 - SrsAutoFree(SrsBandwidthPacket, pkt, false); 351 + SrsAutoFree(SrsMessage, msg);
  352 + SrsAutoFree(SrsBandwidthPacket, pkt);
353 srs_info("get bandcheck start play message"); 353 srs_info("get bandcheck start play message");
354 354
355 if (pkt->command_name != SRS_BW_CHECK_START_PLAY) { 355 if (pkt->command_name != SRS_BW_CHECK_START_PLAY) {
@@ -385,8 +385,8 @@ int SrsBandCheckClient::expect_stop_play() @@ -385,8 +385,8 @@ int SrsBandCheckClient::expect_stop_play()
385 srs_error("expect stop play message failed. ret=%d", ret); 385 srs_error("expect stop play message failed. ret=%d", ret);
386 return ret; 386 return ret;
387 } 387 }
388 - SrsAutoFree(SrsMessage, msg, false);  
389 - SrsAutoFree(SrsBandwidthPacket, pkt, false); 388 + SrsAutoFree(SrsMessage, msg);
  389 + SrsAutoFree(SrsBandwidthPacket, pkt);
390 srs_info("get bandcheck stop play message"); 390 srs_info("get bandcheck stop play message");
391 391
392 if (pkt->command_name == SRS_BW_CHECK_STOP_PLAY) { 392 if (pkt->command_name == SRS_BW_CHECK_STOP_PLAY) {
@@ -422,8 +422,8 @@ int SrsBandCheckClient::expect_start_pub() @@ -422,8 +422,8 @@ int SrsBandCheckClient::expect_start_pub()
422 srs_error("expect start pub message failed. ret=%d", ret); 422 srs_error("expect start pub message failed. ret=%d", ret);
423 return ret; 423 return ret;
424 } 424 }
425 - SrsAutoFree(SrsMessage, msg, false);  
426 - SrsAutoFree(SrsBandwidthPacket, pkt, false); 425 + SrsAutoFree(SrsMessage, msg);
  426 + SrsAutoFree(SrsBandwidthPacket, pkt);
427 srs_info("get bandcheck start pub message"); 427 srs_info("get bandcheck start pub message");
428 428
429 if (pkt->command_name == SRS_BW_CHECK_START_PUBLISH) { 429 if (pkt->command_name == SRS_BW_CHECK_START_PUBLISH) {
@@ -491,8 +491,8 @@ int SrsBandCheckClient::expect_stop_pub() @@ -491,8 +491,8 @@ int SrsBandCheckClient::expect_stop_pub()
491 if ((ret = srs_rtmp_expect_message<SrsBandwidthPacket>(this->protocol, &msg, &pkt)) != ERROR_SUCCESS) { 491 if ((ret = srs_rtmp_expect_message<SrsBandwidthPacket>(this->protocol, &msg, &pkt)) != ERROR_SUCCESS) {
492 return ret; 492 return ret;
493 } 493 }
494 - SrsAutoFree(SrsMessage, msg, false);  
495 - SrsAutoFree(SrsBandwidthPacket, pkt, false); 494 + SrsAutoFree(SrsMessage, msg);
  495 + SrsAutoFree(SrsBandwidthPacket, pkt);
496 if (pkt->command_name == SRS_BW_CHECK_STOP_PUBLISH) { 496 if (pkt->command_name == SRS_BW_CHECK_STOP_PUBLISH) {
497 return ret; 497 return ret;
498 } 498 }
@@ -511,13 +511,13 @@ int SrsBandCheckClient::expect_finished() @@ -511,13 +511,13 @@ int SrsBandCheckClient::expect_finished()
511 srs_error("expect finished message failed. ret=%d", ret); 511 srs_error("expect finished message failed. ret=%d", ret);
512 return ret; 512 return ret;
513 } 513 }
514 - SrsAutoFree(SrsMessage, msg, false);  
515 - SrsAutoFree(SrsBandwidthPacket, pkt, false); 514 + SrsAutoFree(SrsMessage, msg);
  515 + SrsAutoFree(SrsBandwidthPacket, pkt);
516 srs_info("get bandcheck finished message"); 516 srs_info("get bandcheck finished message");
517 517
518 if (pkt->command_name == SRS_BW_CHECK_FINISHED) { 518 if (pkt->command_name == SRS_BW_CHECK_FINISHED) {
519 SrsStream *stream = new SrsStream; 519 SrsStream *stream = new SrsStream;
520 - SrsAutoFree(SrsStream, stream, false); 520 + SrsAutoFree(SrsStream, stream);
521 521
522 if ((ret = stream->initialize((char*)msg->payload, msg->size)) != ERROR_SUCCESS) { 522 if ((ret = stream->initialize((char*)msg->payload, msg->size)) != ERROR_SUCCESS) {
523 srs_error("initialize stream error. ret=%d", ret); 523 srs_error("initialize stream error. ret=%d", ret);
@@ -813,7 +813,7 @@ namespace srs @@ -813,7 +813,7 @@ namespace srs
813 } 813 }
814 814
815 srs_assert(digest != NULL); 815 srs_assert(digest != NULL);
816 - SrsAutoFree(char, digest, true); 816 + SrsAutoFree(char, digest);
817 817
818 if (schema == srs_schema0) { 818 if (schema == srs_schema0) {
819 memcpy(block1.digest.digest, digest, 32); 819 memcpy(block1.digest.digest, digest, 32);
@@ -837,7 +837,7 @@ namespace srs @@ -837,7 +837,7 @@ namespace srs
837 } 837 }
838 838
839 srs_assert(c1_digest != NULL); 839 srs_assert(c1_digest != NULL);
840 - SrsAutoFree(char, c1_digest, true); 840 + SrsAutoFree(char, c1_digest);
841 841
842 if (schema == srs_schema0) { 842 if (schema == srs_schema0) {
843 is_valid = srs_bytes_equals(block1.digest.digest, c1_digest, 32); 843 is_valid = srs_bytes_equals(block1.digest.digest, c1_digest, 32);
@@ -861,7 +861,7 @@ namespace srs @@ -861,7 +861,7 @@ namespace srs
861 } 861 }
862 862
863 srs_assert(s1_digest != NULL); 863 srs_assert(s1_digest != NULL);
864 - SrsAutoFree(char, s1_digest, true); 864 + SrsAutoFree(char, s1_digest);
865 865
866 if (schema == srs_schema0) { 866 if (schema == srs_schema0) {
867 is_valid = srs_bytes_equals(block1.digest.digest, s1_digest, 32); 867 is_valid = srs_bytes_equals(block1.digest.digest, s1_digest, 32);
@@ -917,7 +917,7 @@ namespace srs @@ -917,7 +917,7 @@ namespace srs
917 srs_verbose("calc s1 digest success."); 917 srs_verbose("calc s1 digest success.");
918 918
919 srs_assert(s1_digest != NULL); 919 srs_assert(s1_digest != NULL);
920 - SrsAutoFree(char, s1_digest, true); 920 + SrsAutoFree(char, s1_digest);
921 921
922 if (schema == srs_schema0) { 922 if (schema == srs_schema0) {
923 memcpy(block1.digest.digest, s1_digest, 32); 923 memcpy(block1.digest.digest, s1_digest, 32);
@@ -944,7 +944,7 @@ namespace srs @@ -944,7 +944,7 @@ namespace srs
944 } 944 }
945 945
946 srs_assert(c1s1_joined_bytes != NULL); 946 srs_assert(c1s1_joined_bytes != NULL);
947 - SrsAutoFree(char, c1s1_joined_bytes, true); 947 + SrsAutoFree(char, c1s1_joined_bytes);
948 948
949 digest = new char[OpensslHashSize]; 949 digest = new char[OpensslHashSize];
950 if ((ret = openssl_HMACsha256(c1s1_joined_bytes, 1536 - 32, SrsGenuineFMSKey, 36, digest)) != ERROR_SUCCESS) { 950 if ((ret = openssl_HMACsha256(c1s1_joined_bytes, 1536 - 32, SrsGenuineFMSKey, 36, digest)) != ERROR_SUCCESS) {
@@ -971,7 +971,7 @@ namespace srs @@ -971,7 +971,7 @@ namespace srs
971 } 971 }
972 972
973 srs_assert(c1s1_joined_bytes != NULL); 973 srs_assert(c1s1_joined_bytes != NULL);
974 - SrsAutoFree(char, c1s1_joined_bytes, true); 974 + SrsAutoFree(char, c1s1_joined_bytes);
975 975
976 digest = new char[OpensslHashSize]; 976 digest = new char[OpensslHashSize];
977 if ((ret = openssl_HMACsha256(c1s1_joined_bytes, 1536 - 32, SrsGenuineFPKey, 30, digest)) != ERROR_SUCCESS) { 977 if ((ret = openssl_HMACsha256(c1s1_joined_bytes, 1536 - 32, SrsGenuineFPKey, 30, digest)) != ERROR_SUCCESS) {
@@ -490,8 +490,8 @@ int SrsRtmpClient::connect_app(string app, string tc_url) @@ -490,8 +490,8 @@ int SrsRtmpClient::connect_app(string app, string tc_url)
490 srs_error("expect connect app response message failed. ret=%d", ret); 490 srs_error("expect connect app response message failed. ret=%d", ret);
491 return ret; 491 return ret;
492 } 492 }
493 - SrsAutoFree(SrsMessage, msg, false);  
494 - SrsAutoFree(SrsConnectAppResPacket, pkt, false); 493 + SrsAutoFree(SrsMessage, msg);
  494 + SrsAutoFree(SrsConnectAppResPacket, pkt);
495 srs_info("get connect app response message"); 495 srs_info("get connect app response message");
496 496
497 return ret; 497 return ret;
@@ -517,8 +517,8 @@ int SrsRtmpClient::create_stream(int& stream_id) @@ -517,8 +517,8 @@ int SrsRtmpClient::create_stream(int& stream_id)
517 srs_error("expect create stream response message failed. ret=%d", ret); 517 srs_error("expect create stream response message failed. ret=%d", ret);
518 return ret; 518 return ret;
519 } 519 }
520 - SrsAutoFree(SrsMessage, msg, false);  
521 - SrsAutoFree(SrsCreateStreamResPacket, pkt, false); 520 + SrsAutoFree(SrsMessage, msg);
  521 + SrsAutoFree(SrsCreateStreamResPacket, pkt);
522 srs_info("get create stream response message"); 522 srs_info("get create stream response message");
523 523
524 stream_id = (int)pkt->stream_id; 524 stream_id = (int)pkt->stream_id;
@@ -651,8 +651,8 @@ int SrsRtmpClient::fmle_publish(string stream, int& stream_id) @@ -651,8 +651,8 @@ int SrsRtmpClient::fmle_publish(string stream, int& stream_id)
651 srs_error("expect create stream response message failed. ret=%d", ret); 651 srs_error("expect create stream response message failed. ret=%d", ret);
652 return ret; 652 return ret;
653 } 653 }
654 - SrsAutoFree(SrsMessage, msg, false);  
655 - SrsAutoFree(SrsCreateStreamResPacket, pkt, false); 654 + SrsAutoFree(SrsMessage, msg);
  655 + SrsAutoFree(SrsCreateStreamResPacket, pkt);
656 srs_info("get create stream response message"); 656 srs_info("get create stream response message");
657 657
658 stream_id = (int)pkt->stream_id; 658 stream_id = (int)pkt->stream_id;
@@ -772,8 +772,8 @@ int SrsRtmpServer::connect_app(SrsRequest* req) @@ -772,8 +772,8 @@ int SrsRtmpServer::connect_app(SrsRequest* req)
772 srs_error("expect connect app message failed. ret=%d", ret); 772 srs_error("expect connect app message failed. ret=%d", ret);
773 return ret; 773 return ret;
774 } 774 }
775 - SrsAutoFree(SrsMessage, msg, false);  
776 - SrsAutoFree(SrsConnectAppPacket, pkt, false); 775 + SrsAutoFree(SrsMessage, msg);
  776 + SrsAutoFree(SrsConnectAppPacket, pkt);
777 srs_info("get connect app message"); 777 srs_info("get connect app message");
778 778
779 SrsAmf0Any* prop = NULL; 779 SrsAmf0Any* prop = NULL;
@@ -922,7 +922,7 @@ int SrsRtmpServer::identify_client(int stream_id, SrsRtmpConnType& type, string& @@ -922,7 +922,7 @@ int SrsRtmpServer::identify_client(int stream_id, SrsRtmpConnType& type, string&
922 return ret; 922 return ret;
923 } 923 }
924 924
925 - SrsAutoFree(SrsMessage, msg, false); 925 + SrsAutoFree(SrsMessage, msg);
926 926
927 if (!msg->header.is_amf0_command() && !msg->header.is_amf3_command()) { 927 if (!msg->header.is_amf0_command() && !msg->header.is_amf3_command()) {
928 srs_trace("identify ignore messages except " 928 srs_trace("identify ignore messages except "
@@ -936,7 +936,7 @@ int SrsRtmpServer::identify_client(int stream_id, SrsRtmpConnType& type, string& @@ -936,7 +936,7 @@ int SrsRtmpServer::identify_client(int stream_id, SrsRtmpConnType& type, string&
936 return ret; 936 return ret;
937 } 937 }
938 938
939 - SrsAutoFree(SrsPacket, pkt, false); 939 + SrsAutoFree(SrsPacket, pkt);
940 940
941 if (dynamic_cast<SrsCreateStreamPacket*>(pkt)) { 941 if (dynamic_cast<SrsCreateStreamPacket*>(pkt)) {
942 srs_info("identify client by create stream, play or flash publish."); 942 srs_info("identify client by create stream, play or flash publish.");
@@ -1128,8 +1128,8 @@ int SrsRtmpServer::start_fmle_publish(int stream_id) @@ -1128,8 +1128,8 @@ int SrsRtmpServer::start_fmle_publish(int stream_id)
1128 } 1128 }
1129 srs_info("recv FCPublish request message success."); 1129 srs_info("recv FCPublish request message success.");
1130 1130
1131 - SrsAutoFree(SrsMessage, msg, false);  
1132 - SrsAutoFree(SrsFMLEStartPacket, pkt, false); 1131 + SrsAutoFree(SrsMessage, msg);
  1132 + SrsAutoFree(SrsFMLEStartPacket, pkt);
1133 1133
1134 fc_publish_tid = pkt->transaction_id; 1134 fc_publish_tid = pkt->transaction_id;
1135 } 1135 }
@@ -1154,8 +1154,8 @@ int SrsRtmpServer::start_fmle_publish(int stream_id) @@ -1154,8 +1154,8 @@ int SrsRtmpServer::start_fmle_publish(int stream_id)
1154 } 1154 }
1155 srs_info("recv createStream request message success."); 1155 srs_info("recv createStream request message success.");
1156 1156
1157 - SrsAutoFree(SrsMessage, msg, false);  
1158 - SrsAutoFree(SrsCreateStreamPacket, pkt, false); 1157 + SrsAutoFree(SrsMessage, msg);
  1158 + SrsAutoFree(SrsCreateStreamPacket, pkt);
1159 1159
1160 create_stream_tid = pkt->transaction_id; 1160 create_stream_tid = pkt->transaction_id;
1161 } 1161 }
@@ -1179,8 +1179,8 @@ int SrsRtmpServer::start_fmle_publish(int stream_id) @@ -1179,8 +1179,8 @@ int SrsRtmpServer::start_fmle_publish(int stream_id)
1179 } 1179 }
1180 srs_info("recv publish request message success."); 1180 srs_info("recv publish request message success.");
1181 1181
1182 - SrsAutoFree(SrsMessage, msg, false);  
1183 - SrsAutoFree(SrsPublishPacket, pkt, false); 1182 + SrsAutoFree(SrsMessage, msg);
  1183 + SrsAutoFree(SrsPublishPacket, pkt);
1184 } 1184 }
1185 // publish response onFCPublish(NetStream.Publish.Start) 1185 // publish response onFCPublish(NetStream.Publish.Start)
1186 if (true) { 1186 if (true) {
@@ -1310,7 +1310,7 @@ int SrsRtmpServer::identify_create_stream_client(SrsCreateStreamPacket* req, int @@ -1310,7 +1310,7 @@ int SrsRtmpServer::identify_create_stream_client(SrsCreateStreamPacket* req, int
1310 return ret; 1310 return ret;
1311 } 1311 }
1312 1312
1313 - SrsAutoFree(SrsMessage, msg, false); 1313 + SrsAutoFree(SrsMessage, msg);
1314 1314
1315 if (!msg->header.is_amf0_command() && !msg->header.is_amf3_command()) { 1315 if (!msg->header.is_amf0_command() && !msg->header.is_amf3_command()) {
1316 srs_trace("identify ignore messages except " 1316 srs_trace("identify ignore messages except "
@@ -1324,7 +1324,7 @@ int SrsRtmpServer::identify_create_stream_client(SrsCreateStreamPacket* req, int @@ -1324,7 +1324,7 @@ int SrsRtmpServer::identify_create_stream_client(SrsCreateStreamPacket* req, int
1324 return ret; 1324 return ret;
1325 } 1325 }
1326 1326
1327 - SrsAutoFree(SrsPacket, pkt, false); 1327 + SrsAutoFree(SrsPacket, pkt);
1328 1328
1329 if (dynamic_cast<SrsPlayPacket*>(pkt)) { 1329 if (dynamic_cast<SrsPlayPacket*>(pkt)) {
1330 srs_info("level1 identify client by play."); 1330 srs_info("level1 identify client by play.");
@@ -442,7 +442,7 @@ int SrsProtocol::do_send_and_free_message(SrsMessage* msg, SrsPacket* packet) @@ -442,7 +442,7 @@ int SrsProtocol::do_send_and_free_message(SrsMessage* msg, SrsPacket* packet)
442 442
443 // always free msg. 443 // always free msg.
444 srs_assert(msg); 444 srs_assert(msg);
445 - SrsAutoFree(SrsMessage, msg, false); 445 + SrsAutoFree(SrsMessage, msg);
446 446
447 // we donot use the complex basic header, 447 // we donot use the complex basic header,
448 // ensure the basic header is 1bytes. 448 // ensure the basic header is 1bytes.
@@ -735,7 +735,7 @@ int SrsProtocol::send_and_free_packet(SrsPacket* packet, int stream_id) @@ -735,7 +735,7 @@ int SrsProtocol::send_and_free_packet(SrsPacket* packet, int stream_id)
735 int ret = ERROR_SUCCESS; 735 int ret = ERROR_SUCCESS;
736 736
737 srs_assert(packet); 737 srs_assert(packet);
738 - SrsAutoFree(SrsPacket, packet, false); 738 + SrsAutoFree(SrsPacket, packet);
739 739
740 int size = 0; 740 int size = 0;
741 char* payload = NULL; 741 char* payload = NULL;
@@ -1274,7 +1274,7 @@ int SrsProtocol::on_recv_message(SrsMessage* msg) @@ -1274,7 +1274,7 @@ int SrsProtocol::on_recv_message(SrsMessage* msg)
1274 srs_assert(packet); 1274 srs_assert(packet);
1275 1275
1276 // always free the packet. 1276 // always free the packet.
1277 - SrsAutoFree(SrsPacket, packet, false); 1277 + SrsAutoFree(SrsPacket, packet);
1278 1278
1279 switch (msg->header.message_type) { 1279 switch (msg->header.message_type) {
1280 case RTMP_MSG_WindowAcknowledgementSize: { 1280 case RTMP_MSG_WindowAcknowledgementSize: {
@@ -2584,7 +2584,7 @@ int SrsPlayPacket::decode(SrsStream* stream) @@ -2584,7 +2584,7 @@ int SrsPlayPacket::decode(SrsStream* stream)
2584 srs_error("amf0 read play reset marker failed. ret=%d", ret); 2584 srs_error("amf0 read play reset marker failed. ret=%d", ret);
2585 return ret; 2585 return ret;
2586 } 2586 }
2587 - SrsAutoFree(SrsAmf0Any, reset_value, false); 2587 + SrsAutoFree(SrsAmf0Any, reset_value);
2588 2588
2589 if (reset_value) { 2589 if (reset_value) {
2590 // check if the value is bool or number 2590 // check if the value is bool or number
@@ -3160,7 +3160,7 @@ int SrsOnMetaDataPacket::decode(SrsStream* stream) @@ -3160,7 +3160,7 @@ int SrsOnMetaDataPacket::decode(SrsStream* stream)
3160 return ret; 3160 return ret;
3161 } 3161 }
3162 3162
3163 - SrsAutoFree(SrsAmf0Any, any, false); 3163 + SrsAutoFree(SrsAmf0Any, any);
3164 3164
3165 if (any->is_ecma_array()) { 3165 if (any->is_ecma_array()) {
3166 SrsAmf0EcmaArray* arr = any->to_ecma_array(); 3166 SrsAmf0EcmaArray* arr = any->to_ecma_array();
@@ -52,13 +52,13 @@ VOID TEST(AMF0Test, ScenarioMain) @@ -52,13 +52,13 @@ VOID TEST(AMF0Test, ScenarioMain)
52 // version: string 52 // version: string
53 // srs_sig: string 53 // srs_sig: string
54 SrsAmf0Object* props = SrsAmf0Any::object(); 54 SrsAmf0Object* props = SrsAmf0Any::object();
55 - SrsAutoFree(SrsAmf0Object, props, false); 55 + SrsAutoFree(SrsAmf0Object, props);
56 props->set("fmsVer", SrsAmf0Any::str("FMS/3,5,3,888")); 56 props->set("fmsVer", SrsAmf0Any::str("FMS/3,5,3,888"));
57 props->set("capabilities", SrsAmf0Any::number(253)); 57 props->set("capabilities", SrsAmf0Any::number(253));
58 props->set("mode", SrsAmf0Any::number(123)); 58 props->set("mode", SrsAmf0Any::number(123));
59 59
60 SrsAmf0Object* info = SrsAmf0Any::object(); 60 SrsAmf0Object* info = SrsAmf0Any::object();
61 - SrsAutoFree(SrsAmf0Object, info, false); 61 + SrsAutoFree(SrsAmf0Object, info);
62 info->set("level", SrsAmf0Any::str("info")); 62 info->set("level", SrsAmf0Any::str("info"));
63 info->set("code", SrsAmf0Any::str("NetStream.Connnect.Success")); 63 info->set("code", SrsAmf0Any::str("NetStream.Connnect.Success"));
64 info->set("descrption", SrsAmf0Any::str("connected")); 64 info->set("descrption", SrsAmf0Any::str("connected"));
@@ -85,7 +85,7 @@ VOID TEST(AMF0Test, ScenarioMain) @@ -85,7 +85,7 @@ VOID TEST(AMF0Test, ScenarioMain)
85 EXPECT_EQ(0x03, bytes[0]); 85 EXPECT_EQ(0x03, bytes[0]);
86 EXPECT_EQ(0x09, bytes[nb_bytes - 1]); 86 EXPECT_EQ(0x09, bytes[nb_bytes - 1]);
87 } 87 }
88 - SrsAutoFree(char, bytes, true); 88 + SrsAutoFree(char, bytes);
89 89
90 // decoding amf0 object from bytes 90 // decoding amf0 object from bytes
91 // when user know the schema 91 // when user know the schema
@@ -100,12 +100,12 @@ VOID TEST(AMF0Test, ScenarioMain) @@ -100,12 +100,12 @@ VOID TEST(AMF0Test, ScenarioMain)
100 // if user know the schema, for instance, it's an amf0 object, 100 // if user know the schema, for instance, it's an amf0 object,
101 // user can use specified object to decoding. 101 // user can use specified object to decoding.
102 SrsAmf0Object* props = SrsAmf0Any::object(); 102 SrsAmf0Object* props = SrsAmf0Any::object();
103 - SrsAutoFree(SrsAmf0Object, props, false); 103 + SrsAutoFree(SrsAmf0Object, props);
104 EXPECT_EQ(ERROR_SUCCESS, props->read(&s)); 104 EXPECT_EQ(ERROR_SUCCESS, props->read(&s));
105 105
106 // user can use specified object to decoding. 106 // user can use specified object to decoding.
107 SrsAmf0Object* info = SrsAmf0Any::object(); 107 SrsAmf0Object* info = SrsAmf0Any::object();
108 - SrsAutoFree(SrsAmf0Object, info, false); 108 + SrsAutoFree(SrsAmf0Object, info);
109 EXPECT_EQ(ERROR_SUCCESS, info->read(&s)); 109 EXPECT_EQ(ERROR_SUCCESS, info->read(&s));
110 110
111 // use the decoded data. 111 // use the decoded data.
@@ -150,7 +150,7 @@ VOID TEST(AMF0Test, ScenarioMain) @@ -150,7 +150,7 @@ VOID TEST(AMF0Test, ScenarioMain)
150 // decoding a amf0 any, for user donot know 150 // decoding a amf0 any, for user donot know
151 SrsAmf0Any* any = NULL; 151 SrsAmf0Any* any = NULL;
152 EXPECT_EQ(ERROR_SUCCESS, srs_amf0_read_any(&s, &any)); 152 EXPECT_EQ(ERROR_SUCCESS, srs_amf0_read_any(&s, &any));
153 - SrsAutoFree(SrsAmf0Any, any, false); 153 + SrsAutoFree(SrsAmf0Any, any);
154 154
155 // for amf0 object 155 // for amf0 object
156 if (any->is_object()) { 156 if (any->is_object()) {
@@ -192,7 +192,7 @@ VOID TEST(AMF0Test, ApiSize) @@ -192,7 +192,7 @@ VOID TEST(AMF0Test, ApiSize)
192 if (true) { 192 if (true) {
193 int size = 1+3; 193 int size = 1+3;
194 SrsAmf0Object* o = SrsAmf0Any::object(); 194 SrsAmf0Object* o = SrsAmf0Any::object();
195 - SrsAutoFree(SrsAmf0Object, o, false); 195 + SrsAutoFree(SrsAmf0Object, o);
196 196
197 EXPECT_EQ(size, SrsAmf0Size::object(o)); 197 EXPECT_EQ(size, SrsAmf0Size::object(o));
198 } 198 }
@@ -200,7 +200,7 @@ VOID TEST(AMF0Test, ApiSize) @@ -200,7 +200,7 @@ VOID TEST(AMF0Test, ApiSize)
200 if (true) { 200 if (true) {
201 int size = 1+3; 201 int size = 1+3;
202 SrsAmf0Object* o = SrsAmf0Any::object(); 202 SrsAmf0Object* o = SrsAmf0Any::object();
203 - SrsAutoFree(SrsAmf0Object, o, false); 203 + SrsAutoFree(SrsAmf0Object, o);
204 204
205 size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin"); 205 size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin");
206 o->set("name", SrsAmf0Any::str("winlin")); 206 o->set("name", SrsAmf0Any::str("winlin"));
@@ -210,7 +210,7 @@ VOID TEST(AMF0Test, ApiSize) @@ -210,7 +210,7 @@ VOID TEST(AMF0Test, ApiSize)
210 if (true) { 210 if (true) {
211 int size = 1+3; 211 int size = 1+3;
212 SrsAmf0Object* o = SrsAmf0Any::object(); 212 SrsAmf0Object* o = SrsAmf0Any::object();
213 - SrsAutoFree(SrsAmf0Object, o, false); 213 + SrsAutoFree(SrsAmf0Object, o);
214 214
215 size += SrsAmf0Size::utf8("age")+SrsAmf0Size::number(); 215 size += SrsAmf0Size::utf8("age")+SrsAmf0Size::number();
216 o->set("age", SrsAmf0Any::number(9)); 216 o->set("age", SrsAmf0Any::number(9));
@@ -220,7 +220,7 @@ VOID TEST(AMF0Test, ApiSize) @@ -220,7 +220,7 @@ VOID TEST(AMF0Test, ApiSize)
220 if (true) { 220 if (true) {
221 int size = 1+3; 221 int size = 1+3;
222 SrsAmf0Object* o = SrsAmf0Any::object(); 222 SrsAmf0Object* o = SrsAmf0Any::object();
223 - SrsAutoFree(SrsAmf0Object, o, false); 223 + SrsAutoFree(SrsAmf0Object, o);
224 224
225 size += SrsAmf0Size::utf8("email")+SrsAmf0Size::null(); 225 size += SrsAmf0Size::utf8("email")+SrsAmf0Size::null();
226 o->set("email", SrsAmf0Any::null()); 226 o->set("email", SrsAmf0Any::null());
@@ -230,7 +230,7 @@ VOID TEST(AMF0Test, ApiSize) @@ -230,7 +230,7 @@ VOID TEST(AMF0Test, ApiSize)
230 if (true) { 230 if (true) {
231 int size = 1+3; 231 int size = 1+3;
232 SrsAmf0Object* o = SrsAmf0Any::object(); 232 SrsAmf0Object* o = SrsAmf0Any::object();
233 - SrsAutoFree(SrsAmf0Object, o, false); 233 + SrsAutoFree(SrsAmf0Object, o);
234 234
235 size += SrsAmf0Size::utf8("email")+SrsAmf0Size::undefined(); 235 size += SrsAmf0Size::utf8("email")+SrsAmf0Size::undefined();
236 o->set("email", SrsAmf0Any::undefined()); 236 o->set("email", SrsAmf0Any::undefined());
@@ -240,7 +240,7 @@ VOID TEST(AMF0Test, ApiSize) @@ -240,7 +240,7 @@ VOID TEST(AMF0Test, ApiSize)
240 if (true) { 240 if (true) {
241 int size = 1+3; 241 int size = 1+3;
242 SrsAmf0Object* o = SrsAmf0Any::object(); 242 SrsAmf0Object* o = SrsAmf0Any::object();
243 - SrsAutoFree(SrsAmf0Object, o, false); 243 + SrsAutoFree(SrsAmf0Object, o);
244 244
245 size += SrsAmf0Size::utf8("sex")+SrsAmf0Size::boolean(); 245 size += SrsAmf0Size::utf8("sex")+SrsAmf0Size::boolean();
246 o->set("sex", SrsAmf0Any::boolean(true)); 246 o->set("sex", SrsAmf0Any::boolean(true));
@@ -252,7 +252,7 @@ VOID TEST(AMF0Test, ApiSize) @@ -252,7 +252,7 @@ VOID TEST(AMF0Test, ApiSize)
252 if (true) { 252 if (true) {
253 int size = 1+4+3; 253 int size = 1+4+3;
254 SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array(); 254 SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
255 - SrsAutoFree(SrsAmf0EcmaArray, o, false); 255 + SrsAutoFree(SrsAmf0EcmaArray, o);
256 256
257 EXPECT_EQ(size, SrsAmf0Size::ecma_array(o)); 257 EXPECT_EQ(size, SrsAmf0Size::ecma_array(o));
258 } 258 }
@@ -260,7 +260,7 @@ VOID TEST(AMF0Test, ApiSize) @@ -260,7 +260,7 @@ VOID TEST(AMF0Test, ApiSize)
260 if (true) { 260 if (true) {
261 int size = 1+4+3; 261 int size = 1+4+3;
262 SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array(); 262 SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
263 - SrsAutoFree(SrsAmf0EcmaArray, o, false); 263 + SrsAutoFree(SrsAmf0EcmaArray, o);
264 264
265 size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin"); 265 size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin");
266 o->set("name", SrsAmf0Any::str("winlin")); 266 o->set("name", SrsAmf0Any::str("winlin"));
@@ -270,7 +270,7 @@ VOID TEST(AMF0Test, ApiSize) @@ -270,7 +270,7 @@ VOID TEST(AMF0Test, ApiSize)
270 if (true) { 270 if (true) {
271 int size = 1+4+3; 271 int size = 1+4+3;
272 SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array(); 272 SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
273 - SrsAutoFree(SrsAmf0EcmaArray, o, false); 273 + SrsAutoFree(SrsAmf0EcmaArray, o);
274 274
275 size += SrsAmf0Size::utf8("age")+SrsAmf0Size::number(); 275 size += SrsAmf0Size::utf8("age")+SrsAmf0Size::number();
276 o->set("age", SrsAmf0Any::number(9)); 276 o->set("age", SrsAmf0Any::number(9));
@@ -280,7 +280,7 @@ VOID TEST(AMF0Test, ApiSize) @@ -280,7 +280,7 @@ VOID TEST(AMF0Test, ApiSize)
280 if (true) { 280 if (true) {
281 int size = 1+4+3; 281 int size = 1+4+3;
282 SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array(); 282 SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
283 - SrsAutoFree(SrsAmf0EcmaArray, o, false); 283 + SrsAutoFree(SrsAmf0EcmaArray, o);
284 284
285 size += SrsAmf0Size::utf8("email")+SrsAmf0Size::null(); 285 size += SrsAmf0Size::utf8("email")+SrsAmf0Size::null();
286 o->set("email", SrsAmf0Any::null()); 286 o->set("email", SrsAmf0Any::null());
@@ -290,7 +290,7 @@ VOID TEST(AMF0Test, ApiSize) @@ -290,7 +290,7 @@ VOID TEST(AMF0Test, ApiSize)
290 if (true) { 290 if (true) {
291 int size = 1+4+3; 291 int size = 1+4+3;
292 SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array(); 292 SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
293 - SrsAutoFree(SrsAmf0EcmaArray, o, false); 293 + SrsAutoFree(SrsAmf0EcmaArray, o);
294 294
295 size += SrsAmf0Size::utf8("email")+SrsAmf0Size::undefined(); 295 size += SrsAmf0Size::utf8("email")+SrsAmf0Size::undefined();
296 o->set("email", SrsAmf0Any::undefined()); 296 o->set("email", SrsAmf0Any::undefined());
@@ -300,7 +300,7 @@ VOID TEST(AMF0Test, ApiSize) @@ -300,7 +300,7 @@ VOID TEST(AMF0Test, ApiSize)
300 if (true) { 300 if (true) {
301 int size = 1+4+3; 301 int size = 1+4+3;
302 SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array(); 302 SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
303 - SrsAutoFree(SrsAmf0EcmaArray, o, false); 303 + SrsAutoFree(SrsAmf0EcmaArray, o);
304 304
305 size += SrsAmf0Size::utf8("sex")+SrsAmf0Size::boolean(); 305 size += SrsAmf0Size::utf8("sex")+SrsAmf0Size::boolean();
306 o->set("sex", SrsAmf0Any::boolean(true)); 306 o->set("sex", SrsAmf0Any::boolean(true));
@@ -312,7 +312,7 @@ VOID TEST(AMF0Test, ApiSize) @@ -312,7 +312,7 @@ VOID TEST(AMF0Test, ApiSize)
312 if (true) { 312 if (true) {
313 int size = 1+3; 313 int size = 1+3;
314 SrsAmf0Object* o = SrsAmf0Any::object(); 314 SrsAmf0Object* o = SrsAmf0Any::object();
315 - SrsAutoFree(SrsAmf0Object, o, false); 315 + SrsAutoFree(SrsAmf0Object, o);
316 316
317 size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin"); 317 size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin");
318 o->set("name", SrsAmf0Any::str("winlin")); 318 o->set("name", SrsAmf0Any::str("winlin"));
@@ -327,7 +327,7 @@ VOID TEST(AMF0Test, ApiSize) @@ -327,7 +327,7 @@ VOID TEST(AMF0Test, ApiSize)
327 if (true) { 327 if (true) {
328 int size = 1+3; 328 int size = 1+3;
329 SrsAmf0Object* o = SrsAmf0Any::object(); 329 SrsAmf0Object* o = SrsAmf0Any::object();
330 - SrsAutoFree(SrsAmf0Object, o, false); 330 + SrsAutoFree(SrsAmf0Object, o);
331 331
332 size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin"); 332 size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin");
333 o->set("name", SrsAmf0Any::str("winlin")); 333 o->set("name", SrsAmf0Any::str("winlin"));
@@ -349,7 +349,7 @@ VOID TEST(AMF0Test, ApiSize) @@ -349,7 +349,7 @@ VOID TEST(AMF0Test, ApiSize)
349 if (true) { 349 if (true) {
350 int size = 1+4+3; 350 int size = 1+4+3;
351 SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array(); 351 SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
352 - SrsAutoFree(SrsAmf0EcmaArray, o, false); 352 + SrsAutoFree(SrsAmf0EcmaArray, o);
353 353
354 size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin"); 354 size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin");
355 o->set("name", SrsAmf0Any::str("winlin")); 355 o->set("name", SrsAmf0Any::str("winlin"));
@@ -364,7 +364,7 @@ VOID TEST(AMF0Test, ApiSize) @@ -364,7 +364,7 @@ VOID TEST(AMF0Test, ApiSize)
364 if (true) { 364 if (true) {
365 int size = 1+4+3; 365 int size = 1+4+3;
366 SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array(); 366 SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
367 - SrsAutoFree(SrsAmf0EcmaArray, o, false); 367 + SrsAutoFree(SrsAmf0EcmaArray, o);
368 368
369 size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin"); 369 size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin");
370 o->set("name", SrsAmf0Any::str("winlin")); 370 o->set("name", SrsAmf0Any::str("winlin"));
@@ -386,7 +386,7 @@ VOID TEST(AMF0Test, ApiSize) @@ -386,7 +386,7 @@ VOID TEST(AMF0Test, ApiSize)
386 if (true) { 386 if (true) {
387 int size = 1+3; 387 int size = 1+3;
388 SrsAmf0Object* o = SrsAmf0Any::object(); 388 SrsAmf0Object* o = SrsAmf0Any::object();
389 - SrsAutoFree(SrsAmf0Object, o, false); 389 + SrsAutoFree(SrsAmf0Object, o);
390 390
391 size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin"); 391 size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin");
392 o->set("name", SrsAmf0Any::str("winlin")); 392 o->set("name", SrsAmf0Any::str("winlin"));
@@ -408,7 +408,7 @@ VOID TEST(AMF0Test, ApiSize) @@ -408,7 +408,7 @@ VOID TEST(AMF0Test, ApiSize)
408 if (true) { 408 if (true) {
409 int size = 1+4+3; 409 int size = 1+4+3;
410 SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array(); 410 SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
411 - SrsAutoFree(SrsAmf0EcmaArray, o, false); 411 + SrsAutoFree(SrsAmf0EcmaArray, o);
412 412
413 size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin"); 413 size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin");
414 o->set("name", SrsAmf0Any::str("winlin")); 414 o->set("name", SrsAmf0Any::str("winlin"));
@@ -434,14 +434,14 @@ VOID TEST(AMF0Test, ApiAnyElem) @@ -434,14 +434,14 @@ VOID TEST(AMF0Test, ApiAnyElem)
434 // string 434 // string
435 if (true) { 435 if (true) {
436 o = SrsAmf0Any::str(); 436 o = SrsAmf0Any::str();
437 - SrsAutoFree(SrsAmf0Any, o, false); 437 + SrsAutoFree(SrsAmf0Any, o);
438 ASSERT_TRUE(NULL != o); 438 ASSERT_TRUE(NULL != o);
439 EXPECT_TRUE(o->is_string()); 439 EXPECT_TRUE(o->is_string());
440 EXPECT_STREQ("", o->to_str().c_str()); 440 EXPECT_STREQ("", o->to_str().c_str());
441 } 441 }
442 if (true) { 442 if (true) {
443 o = SrsAmf0Any::str("winlin"); 443 o = SrsAmf0Any::str("winlin");
444 - SrsAutoFree(SrsAmf0Any, o, false); 444 + SrsAutoFree(SrsAmf0Any, o);
445 ASSERT_TRUE(NULL != o); 445 ASSERT_TRUE(NULL != o);
446 EXPECT_TRUE(o->is_string()); 446 EXPECT_TRUE(o->is_string());
447 EXPECT_STREQ("winlin", o->to_str().c_str()); 447 EXPECT_STREQ("winlin", o->to_str().c_str());
@@ -450,21 +450,21 @@ VOID TEST(AMF0Test, ApiAnyElem) @@ -450,21 +450,21 @@ VOID TEST(AMF0Test, ApiAnyElem)
450 // bool 450 // bool
451 if (true) { 451 if (true) {
452 o = SrsAmf0Any::boolean(); 452 o = SrsAmf0Any::boolean();
453 - SrsAutoFree(SrsAmf0Any, o, false); 453 + SrsAutoFree(SrsAmf0Any, o);
454 ASSERT_TRUE(NULL != o); 454 ASSERT_TRUE(NULL != o);
455 EXPECT_TRUE(o->is_boolean()); 455 EXPECT_TRUE(o->is_boolean());
456 EXPECT_FALSE(o->to_boolean()); 456 EXPECT_FALSE(o->to_boolean());
457 } 457 }
458 if (true) { 458 if (true) {
459 o = SrsAmf0Any::boolean(false); 459 o = SrsAmf0Any::boolean(false);
460 - SrsAutoFree(SrsAmf0Any, o, false); 460 + SrsAutoFree(SrsAmf0Any, o);
461 ASSERT_TRUE(NULL != o); 461 ASSERT_TRUE(NULL != o);
462 EXPECT_TRUE(o->is_boolean()); 462 EXPECT_TRUE(o->is_boolean());
463 EXPECT_FALSE(o->to_boolean()); 463 EXPECT_FALSE(o->to_boolean());
464 } 464 }
465 if (true) { 465 if (true) {
466 o = SrsAmf0Any::boolean(true); 466 o = SrsAmf0Any::boolean(true);
467 - SrsAutoFree(SrsAmf0Any, o, false); 467 + SrsAutoFree(SrsAmf0Any, o);
468 ASSERT_TRUE(NULL != o); 468 ASSERT_TRUE(NULL != o);
469 EXPECT_TRUE(o->is_boolean()); 469 EXPECT_TRUE(o->is_boolean());
470 EXPECT_TRUE(o->to_boolean()); 470 EXPECT_TRUE(o->to_boolean());
@@ -473,21 +473,21 @@ VOID TEST(AMF0Test, ApiAnyElem) @@ -473,21 +473,21 @@ VOID TEST(AMF0Test, ApiAnyElem)
473 // number 473 // number
474 if (true) { 474 if (true) {
475 o = SrsAmf0Any::number(); 475 o = SrsAmf0Any::number();
476 - SrsAutoFree(SrsAmf0Any, o, false); 476 + SrsAutoFree(SrsAmf0Any, o);
477 ASSERT_TRUE(NULL != o); 477 ASSERT_TRUE(NULL != o);
478 EXPECT_TRUE(o->is_number()); 478 EXPECT_TRUE(o->is_number());
479 EXPECT_DOUBLE_EQ(0, o->to_number()); 479 EXPECT_DOUBLE_EQ(0, o->to_number());
480 } 480 }
481 if (true) { 481 if (true) {
482 o = SrsAmf0Any::number(100); 482 o = SrsAmf0Any::number(100);
483 - SrsAutoFree(SrsAmf0Any, o, false); 483 + SrsAutoFree(SrsAmf0Any, o);
484 ASSERT_TRUE(NULL != o); 484 ASSERT_TRUE(NULL != o);
485 EXPECT_TRUE(o->is_number()); 485 EXPECT_TRUE(o->is_number());
486 EXPECT_DOUBLE_EQ(100, o->to_number()); 486 EXPECT_DOUBLE_EQ(100, o->to_number());
487 } 487 }
488 if (true) { 488 if (true) {
489 o = SrsAmf0Any::number(-100); 489 o = SrsAmf0Any::number(-100);
490 - SrsAutoFree(SrsAmf0Any, o, false); 490 + SrsAutoFree(SrsAmf0Any, o);
491 ASSERT_TRUE(NULL != o); 491 ASSERT_TRUE(NULL != o);
492 EXPECT_TRUE(o->is_number()); 492 EXPECT_TRUE(o->is_number());
493 EXPECT_DOUBLE_EQ(-100, o->to_number()); 493 EXPECT_DOUBLE_EQ(-100, o->to_number());
@@ -496,7 +496,7 @@ VOID TEST(AMF0Test, ApiAnyElem) @@ -496,7 +496,7 @@ VOID TEST(AMF0Test, ApiAnyElem)
496 // null 496 // null
497 if (true) { 497 if (true) {
498 o = SrsAmf0Any::null(); 498 o = SrsAmf0Any::null();
499 - SrsAutoFree(SrsAmf0Any, o, false); 499 + SrsAutoFree(SrsAmf0Any, o);
500 ASSERT_TRUE(NULL != o); 500 ASSERT_TRUE(NULL != o);
501 EXPECT_TRUE(o->is_null()); 501 EXPECT_TRUE(o->is_null());
502 } 502 }
@@ -504,7 +504,7 @@ VOID TEST(AMF0Test, ApiAnyElem) @@ -504,7 +504,7 @@ VOID TEST(AMF0Test, ApiAnyElem)
504 // undefined 504 // undefined
505 if (true) { 505 if (true) {
506 o = SrsAmf0Any::undefined(); 506 o = SrsAmf0Any::undefined();
507 - SrsAutoFree(SrsAmf0Any, o, false); 507 + SrsAutoFree(SrsAmf0Any, o);
508 ASSERT_TRUE(NULL != o); 508 ASSERT_TRUE(NULL != o);
509 EXPECT_TRUE(o->is_undefined()); 509 EXPECT_TRUE(o->is_undefined());
510 } 510 }
@@ -525,7 +525,7 @@ VOID TEST(AMF0Test, ApiAnyIO) @@ -525,7 +525,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
525 s.current()[2] = 0x09; 525 s.current()[2] = 0x09;
526 526
527 o = SrsAmf0Any::object_eof(); 527 o = SrsAmf0Any::object_eof();
528 - SrsAutoFree(SrsAmf0Any, o, false); 528 + SrsAutoFree(SrsAmf0Any, o);
529 529
530 EXPECT_EQ(ERROR_SUCCESS, o->read(&s)); 530 EXPECT_EQ(ERROR_SUCCESS, o->read(&s));
531 EXPECT_EQ(o->total_size(), s.pos()); 531 EXPECT_EQ(o->total_size(), s.pos());
@@ -539,7 +539,7 @@ VOID TEST(AMF0Test, ApiAnyIO) @@ -539,7 +539,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
539 s.reset(); 539 s.reset();
540 540
541 o = SrsAmf0Any::object_eof(); 541 o = SrsAmf0Any::object_eof();
542 - SrsAutoFree(SrsAmf0Any, o, false); 542 + SrsAutoFree(SrsAmf0Any, o);
543 543
544 EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); 544 EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
545 EXPECT_EQ(o->total_size(), s.pos()); 545 EXPECT_EQ(o->total_size(), s.pos());
@@ -554,7 +554,7 @@ VOID TEST(AMF0Test, ApiAnyIO) @@ -554,7 +554,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
554 s.reset(); 554 s.reset();
555 555
556 o = SrsAmf0Any::str("winlin"); 556 o = SrsAmf0Any::str("winlin");
557 - SrsAutoFree(SrsAmf0Any, o, false); 557 + SrsAutoFree(SrsAmf0Any, o);
558 558
559 EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); 559 EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
560 EXPECT_EQ(o->total_size(), s.pos()); 560 EXPECT_EQ(o->total_size(), s.pos());
@@ -577,7 +577,7 @@ VOID TEST(AMF0Test, ApiAnyIO) @@ -577,7 +577,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
577 s.reset(); 577 s.reset();
578 578
579 o = SrsAmf0Any::number(10); 579 o = SrsAmf0Any::number(10);
580 - SrsAutoFree(SrsAmf0Any, o, false); 580 + SrsAutoFree(SrsAmf0Any, o);
581 581
582 EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); 582 EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
583 EXPECT_EQ(o->total_size(), s.pos()); 583 EXPECT_EQ(o->total_size(), s.pos());
@@ -596,7 +596,7 @@ VOID TEST(AMF0Test, ApiAnyIO) @@ -596,7 +596,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
596 s.reset(); 596 s.reset();
597 597
598 o = SrsAmf0Any::boolean(true); 598 o = SrsAmf0Any::boolean(true);
599 - SrsAutoFree(SrsAmf0Any, o, false); 599 + SrsAutoFree(SrsAmf0Any, o);
600 600
601 EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); 601 EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
602 EXPECT_EQ(o->total_size(), s.pos()); 602 EXPECT_EQ(o->total_size(), s.pos());
@@ -613,7 +613,7 @@ VOID TEST(AMF0Test, ApiAnyIO) @@ -613,7 +613,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
613 s.reset(); 613 s.reset();
614 614
615 o = SrsAmf0Any::boolean(false); 615 o = SrsAmf0Any::boolean(false);
616 - SrsAutoFree(SrsAmf0Any, o, false); 616 + SrsAutoFree(SrsAmf0Any, o);
617 617
618 EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); 618 EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
619 EXPECT_EQ(o->total_size(), s.pos()); 619 EXPECT_EQ(o->total_size(), s.pos());
@@ -632,7 +632,7 @@ VOID TEST(AMF0Test, ApiAnyIO) @@ -632,7 +632,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
632 s.reset(); 632 s.reset();
633 633
634 o = SrsAmf0Any::null(); 634 o = SrsAmf0Any::null();
635 - SrsAutoFree(SrsAmf0Any, o, false); 635 + SrsAutoFree(SrsAmf0Any, o);
636 636
637 EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); 637 EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
638 EXPECT_EQ(o->total_size(), s.pos()); 638 EXPECT_EQ(o->total_size(), s.pos());
@@ -651,7 +651,7 @@ VOID TEST(AMF0Test, ApiAnyIO) @@ -651,7 +651,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
651 s.reset(); 651 s.reset();
652 652
653 o = SrsAmf0Any::undefined(); 653 o = SrsAmf0Any::undefined();
654 - SrsAutoFree(SrsAmf0Any, o, false); 654 + SrsAutoFree(SrsAmf0Any, o);
655 655
656 EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); 656 EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
657 EXPECT_EQ(o->total_size(), s.pos()); 657 EXPECT_EQ(o->total_size(), s.pos());
@@ -670,7 +670,7 @@ VOID TEST(AMF0Test, ApiAnyIO) @@ -670,7 +670,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
670 s.reset(); 670 s.reset();
671 671
672 o = SrsAmf0Any::str("winlin"); 672 o = SrsAmf0Any::str("winlin");
673 - SrsAutoFree(SrsAmf0Any, o, false); 673 + SrsAutoFree(SrsAmf0Any, o);
674 674
675 EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); 675 EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
676 EXPECT_EQ(o->total_size(), s.pos()); 676 EXPECT_EQ(o->total_size(), s.pos());
@@ -680,7 +680,7 @@ VOID TEST(AMF0Test, ApiAnyIO) @@ -680,7 +680,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
680 SrsAmf0Any* po = NULL; 680 SrsAmf0Any* po = NULL;
681 EXPECT_EQ(ERROR_SUCCESS, srs_amf0_read_any(&s, &po)); 681 EXPECT_EQ(ERROR_SUCCESS, srs_amf0_read_any(&s, &po));
682 ASSERT_TRUE(NULL != po); 682 ASSERT_TRUE(NULL != po);
683 - SrsAutoFree(SrsAmf0Any, po, false); 683 + SrsAutoFree(SrsAmf0Any, po);
684 ASSERT_TRUE(po->is_string()); 684 ASSERT_TRUE(po->is_string());
685 EXPECT_STREQ("winlin", po->to_str().c_str()); 685 EXPECT_STREQ("winlin", po->to_str().c_str());
686 } 686 }
@@ -690,7 +690,7 @@ VOID TEST(AMF0Test, ApiAnyIO) @@ -690,7 +690,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
690 s.reset(); 690 s.reset();
691 691
692 o = SrsAmf0Any::number(10); 692 o = SrsAmf0Any::number(10);
693 - SrsAutoFree(SrsAmf0Any, o, false); 693 + SrsAutoFree(SrsAmf0Any, o);
694 694
695 EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); 695 EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
696 EXPECT_EQ(o->total_size(), s.pos()); 696 EXPECT_EQ(o->total_size(), s.pos());
@@ -700,7 +700,7 @@ VOID TEST(AMF0Test, ApiAnyIO) @@ -700,7 +700,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
700 SrsAmf0Any* po = NULL; 700 SrsAmf0Any* po = NULL;
701 EXPECT_EQ(ERROR_SUCCESS, srs_amf0_read_any(&s, &po)); 701 EXPECT_EQ(ERROR_SUCCESS, srs_amf0_read_any(&s, &po));
702 ASSERT_TRUE(NULL != po); 702 ASSERT_TRUE(NULL != po);
703 - SrsAutoFree(SrsAmf0Any, po, false); 703 + SrsAutoFree(SrsAmf0Any, po);
704 ASSERT_TRUE(po->is_number()); 704 ASSERT_TRUE(po->is_number());
705 EXPECT_DOUBLE_EQ(10, po->to_number()); 705 EXPECT_DOUBLE_EQ(10, po->to_number());
706 } 706 }
@@ -710,7 +710,7 @@ VOID TEST(AMF0Test, ApiAnyIO) @@ -710,7 +710,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
710 s.reset(); 710 s.reset();
711 711
712 o = SrsAmf0Any::boolean(true); 712 o = SrsAmf0Any::boolean(true);
713 - SrsAutoFree(SrsAmf0Any, o, false); 713 + SrsAutoFree(SrsAmf0Any, o);
714 714
715 EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); 715 EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
716 EXPECT_EQ(o->total_size(), s.pos()); 716 EXPECT_EQ(o->total_size(), s.pos());
@@ -720,7 +720,7 @@ VOID TEST(AMF0Test, ApiAnyIO) @@ -720,7 +720,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
720 SrsAmf0Any* po = NULL; 720 SrsAmf0Any* po = NULL;
721 EXPECT_EQ(ERROR_SUCCESS, srs_amf0_read_any(&s, &po)); 721 EXPECT_EQ(ERROR_SUCCESS, srs_amf0_read_any(&s, &po));
722 ASSERT_TRUE(NULL != po); 722 ASSERT_TRUE(NULL != po);
723 - SrsAutoFree(SrsAmf0Any, po, false); 723 + SrsAutoFree(SrsAmf0Any, po);
724 ASSERT_TRUE(po->is_boolean()); 724 ASSERT_TRUE(po->is_boolean());
725 EXPECT_TRUE(po->to_boolean()); 725 EXPECT_TRUE(po->to_boolean());
726 } 726 }
@@ -730,7 +730,7 @@ VOID TEST(AMF0Test, ApiAnyIO) @@ -730,7 +730,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
730 s.reset(); 730 s.reset();
731 731
732 o = SrsAmf0Any::null(); 732 o = SrsAmf0Any::null();
733 - SrsAutoFree(SrsAmf0Any, o, false); 733 + SrsAutoFree(SrsAmf0Any, o);
734 734
735 EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); 735 EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
736 EXPECT_EQ(o->total_size(), s.pos()); 736 EXPECT_EQ(o->total_size(), s.pos());
@@ -740,7 +740,7 @@ VOID TEST(AMF0Test, ApiAnyIO) @@ -740,7 +740,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
740 SrsAmf0Any* po = NULL; 740 SrsAmf0Any* po = NULL;
741 EXPECT_EQ(ERROR_SUCCESS, srs_amf0_read_any(&s, &po)); 741 EXPECT_EQ(ERROR_SUCCESS, srs_amf0_read_any(&s, &po));
742 ASSERT_TRUE(NULL != po); 742 ASSERT_TRUE(NULL != po);
743 - SrsAutoFree(SrsAmf0Any, po, false); 743 + SrsAutoFree(SrsAmf0Any, po);
744 ASSERT_TRUE(po->is_null()); 744 ASSERT_TRUE(po->is_null());
745 } 745 }
746 746
@@ -749,7 +749,7 @@ VOID TEST(AMF0Test, ApiAnyIO) @@ -749,7 +749,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
749 s.reset(); 749 s.reset();
750 750
751 o = SrsAmf0Any::undefined(); 751 o = SrsAmf0Any::undefined();
752 - SrsAutoFree(SrsAmf0Any, o, false); 752 + SrsAutoFree(SrsAmf0Any, o);
753 753
754 EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); 754 EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
755 EXPECT_EQ(o->total_size(), s.pos()); 755 EXPECT_EQ(o->total_size(), s.pos());
@@ -759,7 +759,7 @@ VOID TEST(AMF0Test, ApiAnyIO) @@ -759,7 +759,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
759 SrsAmf0Any* po = NULL; 759 SrsAmf0Any* po = NULL;
760 EXPECT_EQ(ERROR_SUCCESS, srs_amf0_read_any(&s, &po)); 760 EXPECT_EQ(ERROR_SUCCESS, srs_amf0_read_any(&s, &po));
761 ASSERT_TRUE(NULL != po); 761 ASSERT_TRUE(NULL != po);
762 - SrsAutoFree(SrsAmf0Any, po, false); 762 + SrsAutoFree(SrsAmf0Any, po);
763 ASSERT_TRUE(po->is_undefined()); 763 ASSERT_TRUE(po->is_undefined());
764 } 764 }
765 765
@@ -841,44 +841,44 @@ VOID TEST(AMF0Test, ApiAnyAssert) @@ -841,44 +841,44 @@ VOID TEST(AMF0Test, ApiAnyAssert)
841 // any convert 841 // any convert
842 if (true) { 842 if (true) {
843 o = SrsAmf0Any::str(); 843 o = SrsAmf0Any::str();
844 - SrsAutoFree(SrsAmf0Any, o, false); 844 + SrsAutoFree(SrsAmf0Any, o);
845 EXPECT_TRUE(o->is_string()); 845 EXPECT_TRUE(o->is_string());
846 } 846 }
847 if (true) { 847 if (true) {
848 o = SrsAmf0Any::number(); 848 o = SrsAmf0Any::number();
849 - SrsAutoFree(SrsAmf0Any, o, false); 849 + SrsAutoFree(SrsAmf0Any, o);
850 EXPECT_TRUE(o->is_number()); 850 EXPECT_TRUE(o->is_number());
851 } 851 }
852 if (true) { 852 if (true) {
853 o = SrsAmf0Any::boolean(); 853 o = SrsAmf0Any::boolean();
854 - SrsAutoFree(SrsAmf0Any, o, false); 854 + SrsAutoFree(SrsAmf0Any, o);
855 EXPECT_TRUE(o->is_boolean()); 855 EXPECT_TRUE(o->is_boolean());
856 } 856 }
857 if (true) { 857 if (true) {
858 o = SrsAmf0Any::null(); 858 o = SrsAmf0Any::null();
859 - SrsAutoFree(SrsAmf0Any, o, false); 859 + SrsAutoFree(SrsAmf0Any, o);
860 EXPECT_TRUE(o->is_null()); 860 EXPECT_TRUE(o->is_null());
861 } 861 }
862 if (true) { 862 if (true) {
863 o = SrsAmf0Any::undefined(); 863 o = SrsAmf0Any::undefined();
864 - SrsAutoFree(SrsAmf0Any, o, false); 864 + SrsAutoFree(SrsAmf0Any, o);
865 EXPECT_TRUE(o->is_undefined()); 865 EXPECT_TRUE(o->is_undefined());
866 } 866 }
867 if (true) { 867 if (true) {
868 o = SrsAmf0Any::object(); 868 o = SrsAmf0Any::object();
869 - SrsAutoFree(SrsAmf0Any, o, false); 869 + SrsAutoFree(SrsAmf0Any, o);
870 EXPECT_TRUE(o->is_object()); 870 EXPECT_TRUE(o->is_object());
871 } 871 }
872 if (true) { 872 if (true) {
873 o = SrsAmf0Any::ecma_array(); 873 o = SrsAmf0Any::ecma_array();
874 - SrsAutoFree(SrsAmf0Any, o, false); 874 + SrsAutoFree(SrsAmf0Any, o);
875 EXPECT_TRUE(o->is_ecma_array()); 875 EXPECT_TRUE(o->is_ecma_array());
876 } 876 }
877 877
878 // empty object 878 // empty object
879 if (true) { 879 if (true) {
880 o = SrsAmf0Any::object(); 880 o = SrsAmf0Any::object();
881 - SrsAutoFree(SrsAmf0Any, o, false); 881 + SrsAutoFree(SrsAmf0Any, o);
882 s.reset(); 882 s.reset();
883 EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); 883 EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
884 EXPECT_EQ(1+3, s.pos()); 884 EXPECT_EQ(1+3, s.pos());
@@ -887,7 +887,7 @@ VOID TEST(AMF0Test, ApiAnyAssert) @@ -887,7 +887,7 @@ VOID TEST(AMF0Test, ApiAnyAssert)
887 // empty ecma array 887 // empty ecma array
888 if (true) { 888 if (true) {
889 o = SrsAmf0Any::ecma_array(); 889 o = SrsAmf0Any::ecma_array();
890 - SrsAutoFree(SrsAmf0Any, o, false); 890 + SrsAutoFree(SrsAmf0Any, o);
891 s.reset(); 891 s.reset();
892 EXPECT_EQ(ERROR_SUCCESS, o->write(&s)); 892 EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
893 EXPECT_EQ(1+4+3, s.pos()); 893 EXPECT_EQ(1+4+3, s.pos());
@@ -901,7 +901,7 @@ VOID TEST(AMF0Test, ApiObjectProps) @@ -901,7 +901,7 @@ VOID TEST(AMF0Test, ApiObjectProps)
901 // get/set property 901 // get/set property
902 if (true) { 902 if (true) {
903 o = SrsAmf0Any::object(); 903 o = SrsAmf0Any::object();
904 - SrsAutoFree(SrsAmf0Object, o, false); 904 + SrsAutoFree(SrsAmf0Object, o);
905 905
906 EXPECT_TRUE(NULL == o->get_property("name")); 906 EXPECT_TRUE(NULL == o->get_property("name"));
907 907
@@ -917,7 +917,7 @@ VOID TEST(AMF0Test, ApiObjectProps) @@ -917,7 +917,7 @@ VOID TEST(AMF0Test, ApiObjectProps)
917 // index property 917 // index property
918 if (true) { 918 if (true) {
919 o = SrsAmf0Any::object(); 919 o = SrsAmf0Any::object();
920 - SrsAutoFree(SrsAmf0Object, o, false); 920 + SrsAutoFree(SrsAmf0Object, o);
921 921
922 o->set("name", SrsAmf0Any::str("winlin")); 922 o->set("name", SrsAmf0Any::str("winlin"));
923 EXPECT_STREQ("name", o->key_at(0).c_str()); 923 EXPECT_STREQ("name", o->key_at(0).c_str());
@@ -937,7 +937,7 @@ VOID TEST(AMF0Test, ApiObjectProps) @@ -937,7 +937,7 @@ VOID TEST(AMF0Test, ApiObjectProps)
937 // ensure property 937 // ensure property
938 if (true) { 938 if (true) {
939 o = SrsAmf0Any::object(); 939 o = SrsAmf0Any::object();
940 - SrsAutoFree(SrsAmf0Object, o, false); 940 + SrsAutoFree(SrsAmf0Object, o);
941 941
942 EXPECT_TRUE(NULL == o->ensure_property_string("name")); 942 EXPECT_TRUE(NULL == o->ensure_property_string("name"));
943 EXPECT_TRUE(NULL == o->ensure_property_number("age")); 943 EXPECT_TRUE(NULL == o->ensure_property_number("age"));
@@ -957,7 +957,7 @@ VOID TEST(AMF0Test, ApiObjectProps) @@ -957,7 +957,7 @@ VOID TEST(AMF0Test, ApiObjectProps)
957 // count 957 // count
958 if (true) { 958 if (true) {
959 o = SrsAmf0Any::object(); 959 o = SrsAmf0Any::object();
960 - SrsAutoFree(SrsAmf0Object, o, false); 960 + SrsAutoFree(SrsAmf0Object, o);
961 961
962 EXPECT_EQ(0, o->count()); 962 EXPECT_EQ(0, o->count());
963 963
@@ -979,7 +979,7 @@ VOID TEST(AMF0Test, ApiEcmaArrayProps) @@ -979,7 +979,7 @@ VOID TEST(AMF0Test, ApiEcmaArrayProps)
979 // get/set property 979 // get/set property
980 if (true) { 980 if (true) {
981 o = SrsAmf0Any::ecma_array(); 981 o = SrsAmf0Any::ecma_array();
982 - SrsAutoFree(SrsAmf0EcmaArray, o, false); 982 + SrsAutoFree(SrsAmf0EcmaArray, o);
983 983
984 EXPECT_TRUE(NULL == o->get_property("name")); 984 EXPECT_TRUE(NULL == o->get_property("name"));
985 985
@@ -995,7 +995,7 @@ VOID TEST(AMF0Test, ApiEcmaArrayProps) @@ -995,7 +995,7 @@ VOID TEST(AMF0Test, ApiEcmaArrayProps)
995 // index property 995 // index property
996 if (true) { 996 if (true) {
997 o = SrsAmf0Any::ecma_array(); 997 o = SrsAmf0Any::ecma_array();
998 - SrsAutoFree(SrsAmf0EcmaArray, o, false); 998 + SrsAutoFree(SrsAmf0EcmaArray, o);
999 999
1000 o->set("name", SrsAmf0Any::str("winlin")); 1000 o->set("name", SrsAmf0Any::str("winlin"));
1001 EXPECT_STREQ("name", o->key_at(0).c_str()); 1001 EXPECT_STREQ("name", o->key_at(0).c_str());
@@ -1015,7 +1015,7 @@ VOID TEST(AMF0Test, ApiEcmaArrayProps) @@ -1015,7 +1015,7 @@ VOID TEST(AMF0Test, ApiEcmaArrayProps)
1015 // ensure property 1015 // ensure property
1016 if (true) { 1016 if (true) {
1017 o = SrsAmf0Any::ecma_array(); 1017 o = SrsAmf0Any::ecma_array();
1018 - SrsAutoFree(SrsAmf0EcmaArray, o, false); 1018 + SrsAutoFree(SrsAmf0EcmaArray, o);
1019 1019
1020 EXPECT_TRUE(NULL == o->ensure_property_string("name")); 1020 EXPECT_TRUE(NULL == o->ensure_property_string("name"));
1021 EXPECT_TRUE(NULL == o->ensure_property_number("age")); 1021 EXPECT_TRUE(NULL == o->ensure_property_number("age"));
@@ -1035,7 +1035,7 @@ VOID TEST(AMF0Test, ApiEcmaArrayProps) @@ -1035,7 +1035,7 @@ VOID TEST(AMF0Test, ApiEcmaArrayProps)
1035 // count 1035 // count
1036 if (true) { 1036 if (true) {
1037 o = SrsAmf0Any::ecma_array(); 1037 o = SrsAmf0Any::ecma_array();
1038 - SrsAutoFree(SrsAmf0EcmaArray, o, false); 1038 + SrsAutoFree(SrsAmf0EcmaArray, o);
1039 1039
1040 EXPECT_EQ(0, o->count()); 1040 EXPECT_EQ(0, o->count());
1041 1041
@@ -115,7 +115,7 @@ VOID TEST(HandshakeTest, VerifyFPC0C1) @@ -115,7 +115,7 @@ VOID TEST(HandshakeTest, VerifyFPC0C1)
115 // manually validate the c1 115 // manually validate the c1
116 // @see: calc_c1_digest 116 // @see: calc_c1_digest
117 char* c1s1_joined_bytes = srs_bytes_join_schema0(c1.time, c1.version, &c1.block0.key, &c1.block1.digest); 117 char* c1s1_joined_bytes = srs_bytes_join_schema0(c1.time, c1.version, &c1.block0.key, &c1.block1.digest);
118 - SrsAutoFree(char, c1s1_joined_bytes, true); 118 + SrsAutoFree(char, c1s1_joined_bytes);
119 119
120 bool is_valid; 120 bool is_valid;
121 ASSERT_EQ(ERROR_SUCCESS, c1.c1_validate_digest(is_valid)); 121 ASSERT_EQ(ERROR_SUCCESS, c1.c1_validate_digest(is_valid));