winlin

refine code, print protocol level info.

@@ -229,6 +229,8 @@ SrsProtocol::SrsProtocol(ISrsProtocolReaderWriter* io) @@ -229,6 +229,8 @@ SrsProtocol::SrsProtocol(ISrsProtocolReaderWriter* io)
229 229
230 warned_c0c3_cache_dry = false; 230 warned_c0c3_cache_dry = false;
231 auto_response_when_recv = true; 231 auto_response_when_recv = true;
  232 + show_debug_info = true;
  233 + in_buffer_length = 0;
232 234
233 cs_cache = NULL; 235 cs_cache = NULL;
234 if (SRS_PERF_CHUNK_STREAM_CACHE > 0) { 236 if (SRS_PERF_CHUNK_STREAM_CACHE > 0) {
@@ -896,6 +898,8 @@ int SrsProtocol::send_and_free_messages(SrsSharedPtrMessage** msgs, int nb_msgs, @@ -896,6 +898,8 @@ int SrsProtocol::send_and_free_messages(SrsSharedPtrMessage** msgs, int nb_msgs,
896 return ret; 898 return ret;
897 } 899 }
898 900
  901 + print_debug_info();
  902 +
899 return ret; 903 return ret;
900 } 904 }
901 905
@@ -1473,6 +1477,9 @@ int SrsProtocol::on_recv_message(SrsCommonMessage* msg) @@ -1473,6 +1477,9 @@ int SrsProtocol::on_recv_message(SrsCommonMessage* msg)
1473 } 1477 }
1474 srs_verbose("decode packet from message payload success."); 1478 srs_verbose("decode packet from message payload success.");
1475 break; 1479 break;
  1480 + case RTMP_MSG_VideoMessage:
  1481 + case RTMP_MSG_AudioMessage:
  1482 + print_debug_info();
1476 default: 1483 default:
1477 return ret; 1484 return ret;
1478 } 1485 }
@@ -1508,8 +1515,7 @@ int SrsProtocol::on_recv_message(SrsCommonMessage* msg) @@ -1508,8 +1515,7 @@ int SrsProtocol::on_recv_message(SrsCommonMessage* msg)
1508 if (pkt->chunk_size < SRS_CONSTS_RTMP_MIN_CHUNK_SIZE 1515 if (pkt->chunk_size < SRS_CONSTS_RTMP_MIN_CHUNK_SIZE
1509 || pkt->chunk_size > SRS_CONSTS_RTMP_MAX_CHUNK_SIZE) 1516 || pkt->chunk_size > SRS_CONSTS_RTMP_MAX_CHUNK_SIZE)
1510 { 1517 {
1511 - srs_warn("accept chunk size %d, but should in [%d, %d], "  
1512 - "@see: https://github.com/ossrs/srs/issues/160", 1518 + srs_warn("accept chunk=%d, should in [%d, %d], please see #160",
1513 pkt->chunk_size, SRS_CONSTS_RTMP_MIN_CHUNK_SIZE, SRS_CONSTS_RTMP_MAX_CHUNK_SIZE); 1519 pkt->chunk_size, SRS_CONSTS_RTMP_MIN_CHUNK_SIZE, SRS_CONSTS_RTMP_MAX_CHUNK_SIZE);
1514 } 1520 }
1515 1521
@@ -1531,7 +1537,8 @@ int SrsProtocol::on_recv_message(SrsCommonMessage* msg) @@ -1531,7 +1537,8 @@ int SrsProtocol::on_recv_message(SrsCommonMessage* msg)
1531 srs_assert(pkt != NULL); 1537 srs_assert(pkt != NULL);
1532 1538
1533 if (pkt->event_type == SrcPCUCSetBufferLength) { 1539 if (pkt->event_type == SrcPCUCSetBufferLength) {
1534 - srs_trace("buffer=%d, in.ack=%d, out.ack=%d, in.chunk=%d, out.chunk=%d", pkt->extra_data, 1540 + in_buffer_length = pkt->extra_data;
  1541 + srs_info("buffer=%d, in.ack=%d, out.ack=%d, in.chunk=%d, out.chunk=%d", pkt->extra_data,
1535 in_ack_size.window, out_ack_size.window, in_chunk_size, out_chunk_size); 1542 in_ack_size.window, out_ack_size.window, in_chunk_size, out_chunk_size);
1536 } 1543 }
1537 if (pkt->event_type == SrcPCUCPingRequest) { 1544 if (pkt->event_type == SrcPCUCPingRequest) {
@@ -1594,6 +1601,9 @@ int SrsProtocol::on_send_packet(SrsMessageHeader* mh, SrsPacket* packet) @@ -1594,6 +1601,9 @@ int SrsProtocol::on_send_packet(SrsMessageHeader* mh, SrsPacket* packet)
1594 } 1601 }
1595 break; 1602 break;
1596 } 1603 }
  1604 + case RTMP_MSG_VideoMessage:
  1605 + case RTMP_MSG_AudioMessage:
  1606 + print_debug_info();
1597 default: 1607 default:
1598 break; 1608 break;
1599 } 1609 }
@@ -1670,6 +1680,15 @@ int SrsProtocol::response_ping_message(int32_t timestamp) @@ -1670,6 +1680,15 @@ int SrsProtocol::response_ping_message(int32_t timestamp)
1670 return ret; 1680 return ret;
1671 } 1681 }
1672 1682
  1683 +void SrsProtocol::print_debug_info()
  1684 +{
  1685 + if (show_debug_info) {
  1686 + show_debug_info = false;
  1687 + srs_trace("protocol in.buffer=%d, in.ack=%d, out.ack=%d, in.chunk=%d, out.chunk=%d", in_buffer_length,
  1688 + in_ack_size.window, out_ack_size.window, in_chunk_size, out_chunk_size);
  1689 + }
  1690 +}
  1691 +
1673 SrsChunkStream::SrsChunkStream(int _cid) 1692 SrsChunkStream::SrsChunkStream(int _cid)
1674 { 1693 {
1675 fmt = 0; 1694 fmt = 0;
@@ -235,6 +235,11 @@ private: @@ -235,6 +235,11 @@ private:
235 AckWindowSize in_ack_size; 235 AckWindowSize in_ack_size;
236 // The output ack window, to require peer to response the ack. 236 // The output ack window, to require peer to response the ack.
237 AckWindowSize out_ack_size; 237 AckWindowSize out_ack_size;
  238 + // The buffer length set by peer.
  239 + int32_t in_buffer_length;
  240 + // Whether print the protocol level debug info.
  241 + // Generally we print the debug info when got or send first A/V packet.
  242 + bool show_debug_info;
238 /** 243 /**
239 * whether auto response when recv messages. 244 * whether auto response when recv messages.
240 * default to true for it's very easy to use the protocol stack. 245 * default to true for it's very easy to use the protocol stack.
@@ -490,6 +495,8 @@ private: @@ -490,6 +495,8 @@ private:
490 * auto response the ping message. 495 * auto response the ping message.
491 */ 496 */
492 virtual int response_ping_message(int32_t timestamp); 497 virtual int response_ping_message(int32_t timestamp);
  498 +private:
  499 + virtual void print_debug_info();
493 }; 500 };
494 501
495 /** 502 /**