From 7ba07c6f499d5c611ee7ad46463d797c4b478f20 Mon Sep 17 00:00:00 2001 From: winlin Date: Sat, 8 Nov 2014 13:16:56 +0800 Subject: [PATCH 1/2] refine librtmp, add example to api. --- trunk/src/libs/srs_librtmp.hpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/trunk/src/libs/srs_librtmp.hpp b/trunk/src/libs/srs_librtmp.hpp index bf3c11601..22061e514 100644 --- a/trunk/src/libs/srs_librtmp.hpp +++ b/trunk/src/libs/srs_librtmp.hpp @@ -209,6 +209,8 @@ extern const char* srs_type2string(int type); * * @remark: for read, user must free the data. * @remark: for write, user should never free the data, even if error. +* @example /trunk/research/librtmp/srs_play.c +* @example /trunk/research/librtmp/srs_publish.c * * @return 0, success; otherswise, failed. */ @@ -237,6 +239,10 @@ extern int64_t srs_get_nrecv_bytes(srs_rtmp_t rtmp); /************************************************************* ************************************************************** * flv codec +* @example /trunk/research/librtmp/srs_flv_injecter.c +* @example /trunk/research/librtmp/srs_flv_parser.c +* @example /trunk/research/librtmp/srs_ingest_flv.c +* @example /trunk/research/librtmp/srs_ingest_rtmp.c ************************************************************** *************************************************************/ typedef void* srs_flv_t; @@ -276,6 +282,8 @@ extern flv_bool srs_flv_is_keyframe(char* data, int32_t size); /************************************************************* ************************************************************** * amf0 codec +* @example /trunk/research/librtmp/srs_ingest_flv.c +* @example /trunk/research/librtmp/srs_ingest_rtmp.c ************************************************************** *************************************************************/ /* the output handler. */ @@ -351,6 +359,8 @@ extern char* srs_amf0_human_print(srs_amf0_t amf0, char** pdata, int* psize); * @remark, user should free the frames. * @remark, the tbn of dts/pts is 1/1000 for RTMP, that is, in ms. * @remark, cts = pts - dts +* @remark, use srs_h264_startswith_annexb to check whether frame is annexb format. +* @example /trunk/research/librtmp/srs_h264_raw_publish.c * * @return 0, success; otherswise, failed. */ @@ -394,6 +404,9 @@ extern int srs_write_h264_raw_frames(srs_rtmp_t rtmp, * @param pnb_start_code output the size of start code, must >=3. * NULL to ignore. * +* @reamrk used to check whether current frame is in annexb format. +* @example /trunk/research/librtmp/srs_h264_raw_publish.c +* * @return 0 false; otherwise, true. */ extern int srs_h264_startswith_annexb( From f92303c7645b86d32bd8e6c2609133c05dbdc72a Mon Sep 17 00:00:00 2001 From: winlin Date: Sat, 8 Nov 2014 13:35:38 +0800 Subject: [PATCH 2/2] refine all research tools, remove the public header, add log to srs_librtmp.h --- trunk/research/librtmp/Makefile | 4 +- trunk/research/librtmp/srs_flv_injecter.c | 43 ++++++------ trunk/research/librtmp/srs_flv_parser.c | 28 ++++---- trunk/research/librtmp/srs_h264_raw_publish.c | 22 +++--- trunk/research/librtmp/srs_ingest_flv.c | 47 +++++++------ trunk/research/librtmp/srs_ingest_rtmp.c | 47 +++++++------ trunk/research/librtmp/srs_research_public.h | 67 ------------------- trunk/src/libs/srs_librtmp.cpp | 29 +++++++- trunk/src/libs/srs_librtmp.hpp | 9 ++- trunk/src/srs/srs.upp | 1 - 10 files changed, 129 insertions(+), 168 deletions(-) delete mode 100644 trunk/research/librtmp/srs_research_public.h diff --git a/trunk/research/librtmp/Makefile b/trunk/research/librtmp/Makefile index 8b285f559..acc2cb3d1 100755 --- a/trunk/research/librtmp/Makefile +++ b/trunk/research/librtmp/Makefile @@ -46,8 +46,8 @@ SRS_LIBRTMP_I = $(SRS_OBJS)/include/srs_librtmp.h SRS_LIBRTMP_L = $(SRS_OBJS)/lib/srs_librtmp.a # openssl for complex handshake, built by srs. SRS_LIBSSL_L = -# the research public headers -SRS_RESEARCH_DEPS = Makefile srs_research_public.h +# public depends, the Makefile or public headers. +SRS_RESEARCH_DEPS = Makefile # for x86/x64 platform ifeq ($(GCC), gcc) diff --git a/trunk/research/librtmp/srs_flv_injecter.c b/trunk/research/librtmp/srs_flv_injecter.c index 85a813647..c9912ed06 100644 --- a/trunk/research/librtmp/srs_flv_injecter.c +++ b/trunk/research/librtmp/srs_flv_injecter.c @@ -33,7 +33,6 @@ gcc srs_flv_injecter.c ../../objs/lib/srs_librtmp.a -g -O0 -lstdc++ -o srs_flv_i #include #include "../../objs/include/srs_librtmp.h" -#include "srs_research_public.h" #define ERROR_INJECTED 10000 @@ -73,12 +72,12 @@ int main(int argc, char** argv) tmp_file = (char*)malloc(tmp_file_size); snprintf(tmp_file, tmp_file_size, "%s.tmp", out_flv_file); - trace("inject flv file keyframes to metadata."); - trace("srs(simple-rtmp-server) client librtmp library."); - trace("version: %d.%d.%d", srs_version_major(), srs_version_minor(), srs_version_revision()); - trace("input: %s", in_flv_file); - trace("output: %s", out_flv_file); - trace("tmp_file: %s", tmp_file); + srs_trace("inject flv file keyframes to metadata."); + srs_trace("srs(simple-rtmp-server) client librtmp library."); + srs_trace("version: %d.%d.%d", srs_version_major(), srs_version_minor(), srs_version_revision()); + srs_trace("input: %s", in_flv_file); + srs_trace("output: %s", out_flv_file); + srs_trace("tmp_file: %s", tmp_file); ret = process(in_flv_file, tmp_file, &ic, &oc); @@ -89,13 +88,13 @@ int main(int argc, char** argv) unlink(tmp_file); if (ret == ERROR_INJECTED) { ret = 0; - trace("file already injected."); + srs_trace("file already injected."); } else { - trace("error, remove tmp file."); + srs_trace("error, remove tmp file."); } } else { rename(tmp_file, out_flv_file); - trace("completed, rename to %s", out_flv_file); + srs_trace("completed, rename to %s", out_flv_file); } free(tmp_file); @@ -123,14 +122,14 @@ int process(const char* in_flv_file, const char* out_flv_file, srs_flv_t* pic, s if ((ic = srs_flv_open_read(in_flv_file)) == NULL) { ret = 2; - trace("open input flv file failed. ret=%d", ret); + srs_trace("open input flv file failed. ret=%d", ret); return ret; } *pic = ic; if ((oc = srs_flv_open_write(out_flv_file)) == NULL) { ret = 2; - trace("open output flv file failed. ret=%d", ret); + srs_trace("open output flv file failed. ret=%d", ret); return ret; } *poc = oc; @@ -164,13 +163,13 @@ int parse_metadata(char* data, int size, srs_amf0_t* pname, srs_amf0_t* pdata) *pname = srs_amf0_parse(data, size, &nparsed); if (*pname == NULL || nparsed >= size) { - trace("invalid amf0 name data."); + srs_trace("invalid amf0 name data."); return -1; } *pdata = srs_amf0_parse(data + nparsed, size - nparsed, &nparsed); if (*pdata == NULL || nparsed > size) { - trace("invalid amf0 value data"); + srs_trace("invalid amf0 value data"); return -1; } @@ -206,22 +205,22 @@ int build_keyframes(srs_flv_t ic, srs_amf0_t *pname, srs_amf0_t* pdata, srs_amf0 return ret; } - trace("build keyframe infos from flv"); + srs_trace("build keyframe infos from flv"); for (;;) { offset = srs_flv_tellg(ic); // tag header if ((ret = srs_flv_read_tag_header(ic, &type, &size, ×tamp)) != 0) { if (srs_flv_is_eof(ret)) { - trace("parse completed."); + srs_trace("parse completed."); return 0; } - trace("flv get packet failed. ret=%d", ret); + srs_trace("flv get packet failed. ret=%d", ret); return ret; } if (size <= 0) { - trace("invalid size=%d", size); + srs_trace("invalid size=%d", size); return ret; } @@ -343,20 +342,20 @@ int do_inject_flv(srs_flv_t ic, srs_flv_t oc, srs_amf0_t amf0_name, srs_amf0_t a free(data); } - trace("build keyframe infos from flv"); + srs_trace("build keyframe infos from flv"); for (;;) { // tag header if ((ret = srs_flv_read_tag_header(ic, &type, &size, ×tamp)) != 0) { if (srs_flv_is_eof(ret)) { - trace("parse completed."); + srs_trace("parse completed."); return 0; } - trace("flv get packet failed. ret=%d", ret); + srs_trace("flv get packet failed. ret=%d", ret); return ret; } if (size <= 0) { - trace("invalid size=%d", size); + srs_trace("invalid size=%d", size); break; } diff --git a/trunk/research/librtmp/srs_flv_parser.c b/trunk/research/librtmp/srs_flv_parser.c index 638257eb6..ce78e948a 100644 --- a/trunk/research/librtmp/srs_flv_parser.c +++ b/trunk/research/librtmp/srs_flv_parser.c @@ -25,6 +25,7 @@ gcc srs_ingest_flv.c ../../objs/lib/srs_librtmp.a -g -O0 -lstdc++ -o srs_ingest_ */ #include +#include #include #include @@ -33,7 +34,6 @@ gcc srs_ingest_flv.c ../../objs/lib/srs_librtmp.a -g -O0 -lstdc++ -o srs_ingest_ #include #include "../../objs/include/srs_librtmp.h" -#include "srs_research_public.h" int parse_flv(srs_flv_t flv); int main(int argc, char** argv) @@ -59,14 +59,14 @@ int main(int argc, char** argv) in_flv_file = argv[1]; - trace("parse and show flv file detail."); - trace("srs(simple-rtmp-server) client librtmp library."); - trace("version: %d.%d.%d", srs_version_major(), srs_version_minor(), srs_version_revision()); - trace("input: %s", in_flv_file); + srs_trace("parse and show flv file detail."); + srs_trace("srs(simple-rtmp-server) client librtmp library."); + srs_trace("version: %d.%d.%d", srs_version_major(), srs_version_minor(), srs_version_revision()); + srs_trace("input: %s", in_flv_file); if ((flv = srs_flv_open_read(in_flv_file)) == NULL) { ret = 2; - trace("open flv file failed. ret=%d", ret); + srs_trace("open flv file failed. ret=%d", ret); return ret; } @@ -148,12 +148,12 @@ int parse_script_data(u_int32_t timestamp, char* data, int size, int64_t offset) // amf0 amf0_name = srs_amf0_parse(data, size, &nparsed); if (amf0_name == NULL || nparsed >= size) { - trace("invalid amf0 name data."); + srs_trace("invalid amf0 name data."); return -1; } amf0_data = srs_amf0_parse(data + nparsed, size - nparsed, &nparsed); - trace("packet type=%s, time=%d, size=%d, data-size=%d, \n" + srs_trace("packet type=%s, time=%d, size=%d, data-size=%d, \n" "offset=%d\n[+00, +15] %s\n[-15, EOF] %s\n%s%s", srs_type2string(SRS_RTMP_TYPE_SCRIPT), timestamp, size + FLV_HEADER_SIZE, size, (int)offset, hbuf, tbuf, @@ -179,7 +179,7 @@ int parse_audio_data(u_int32_t timestamp, char* data, int size, int64_t offset) // bytes parse_bytes(data, size, hbuf, sizeof(hbuf), tbuf, sizeof(tbuf), 16); - trace("packet type=%s, time=%d, size=%d, data-size=%d, \n" + srs_trace("packet type=%s, time=%d, size=%d, data-size=%d, \n" "offset=%d\n[+00, +15] %s\n[-15, EOF] %s\n", srs_type2string(SRS_RTMP_TYPE_AUDIO), timestamp, size + FLV_HEADER_SIZE, size, (int)offset, hbuf, tbuf); @@ -197,7 +197,7 @@ int parse_video_data(u_int32_t timestamp, char* data, int size, int64_t offset) // bytes parse_bytes(data, size, hbuf, sizeof(hbuf), tbuf, sizeof(tbuf), 16); - trace("packet type=%s, time=%d, size=%d, data-size=%d, \n" + srs_trace("packet type=%s, time=%d, size=%d, data-size=%d, \n" "offset=%d\n[+00, +15] %s\n[-15, EOF] %s\n", srs_type2string(SRS_RTMP_TYPE_VIDEO), timestamp, size + FLV_HEADER_SIZE, size, (int)offset, hbuf, tbuf); @@ -222,22 +222,22 @@ int parse_flv(srs_flv_t flv) return ret; } - trace("start parse flv"); + srs_trace("start parse flv"); for (;;) { offset = srs_flv_tellg(flv); // tag header if ((ret = srs_flv_read_tag_header(flv, &type, &size, ×tamp)) != 0) { if (srs_flv_is_eof(ret)) { - trace("parse completed."); + srs_trace("parse completed."); return 0; } - trace("flv get packet failed. ret=%d", ret); + srs_trace("flv get packet failed. ret=%d", ret); return ret; } if (size <= 0) { - trace("invalid size=%d", size); + srs_trace("invalid size=%d", size); break; } diff --git a/trunk/research/librtmp/srs_h264_raw_publish.c b/trunk/research/librtmp/srs_h264_raw_publish.c index f36c33207..a2b71829e 100644 --- a/trunk/research/librtmp/srs_h264_raw_publish.c +++ b/trunk/research/librtmp/srs_h264_raw_publish.c @@ -35,8 +35,6 @@ gcc srs_h264_raw_publish.c ../../objs/lib/srs_librtmp.a -g -O0 -lstdc++ -o srs_h #include "../../objs/include/srs_librtmp.h" -#define srs_trace(msg, ...) printf(msg, ##__VA_ARGS__);printf("\n") - int read_h264_frame(char* data, int size, char** pp, int* pnb_start_code, int fps, char** frame, int* frame_size, int* dts, int* pts) { @@ -80,18 +78,18 @@ int read_h264_frame(char* data, int size, char** pp, int* pnb_start_code, int fp int main(int argc, char** argv) { - srs_trace("publish raw h.264 as rtmp stream to server like FMLE/FFMPEG/Encoder"); - srs_trace("srs(simple-rtmp-server) client librtmp library."); - srs_trace("version: %d.%d.%d", srs_version_major(), srs_version_minor(), srs_version_revision()); + printf("publish raw h.264 as rtmp stream to server like FMLE/FFMPEG/Encoder\n"); + printf("SRS(simple-rtmp-server) client librtmp library.\n"); + printf("version: %d.%d.%d\n", srs_version_major(), srs_version_minor(), srs_version_revision()); if (argc <= 2) { - srs_trace("Usage: %s ", argv[0]); - srs_trace(" h264_raw_file: the h264 raw steam file."); - srs_trace(" rtmp_publish_url: the rtmp publish url."); - srs_trace("For example:"); - srs_trace(" %s ./720p.h264.raw rtmp://127.0.0.1:1935/live/livestream", argv[0]); - srs_trace("Where the file: http://winlinvip.github.io/srs.release/3rdparty/720p.h264.raw"); - srs_trace("See: https://github.com/winlinvip/simple-rtmp-server/issues/66"); + printf("Usage: %s \n", argv[0]); + printf(" h264_raw_file: the h264 raw steam file.\n"); + printf(" rtmp_publish_url: the rtmp publish url.\n"); + printf("For example:\n"); + printf(" %s ./720p.h264.raw rtmp://127.0.0.1:1935/live/livestream\n", argv[0]); + printf("Where the file: http://winlinvip.github.io/srs.release/3rdparty/720p.h264.raw\n"); + printf("See: https://github.com/winlinvip/simple-rtmp-server/issues/66\n"); exit(-1); } diff --git a/trunk/research/librtmp/srs_ingest_flv.c b/trunk/research/librtmp/srs_ingest_flv.c index 04f588b34..6eca2bd05 100644 --- a/trunk/research/librtmp/srs_ingest_flv.c +++ b/trunk/research/librtmp/srs_ingest_flv.c @@ -33,7 +33,6 @@ gcc srs_ingest_flv.c ../../objs/lib/srs_librtmp.a -g -O0 -lstdc++ -o srs_ingest_ #include #include "../../objs/include/srs_librtmp.h" -#include "srs_research_public.h" int proxy(srs_flv_t flv, srs_rtmp_t ortmp); int connect_oc(srs_rtmp_t ortmp); @@ -87,22 +86,22 @@ int main(int argc, char** argv) } } - trace("ingest flv file and publish to RTMP server like FFMPEG."); - trace("srs(simple-rtmp-server) client librtmp library."); - trace("version: %d.%d.%d", srs_version_major(), srs_version_minor(), srs_version_revision()); - trace("input: %s", in_flv_file); - trace("output: %s", out_rtmp_url); + srs_trace("ingest flv file and publish to RTMP server like FFMPEG."); + srs_trace("srs(simple-rtmp-server) client librtmp library."); + srs_trace("version: %d.%d.%d", srs_version_major(), srs_version_minor(), srs_version_revision()); + srs_trace("input: %s", in_flv_file); + srs_trace("output: %s", out_rtmp_url); if ((flv = srs_flv_open_read(in_flv_file)) == NULL) { ret = 2; - trace("open flv file failed. ret=%d", ret); + srs_trace("open flv file failed. ret=%d", ret); return ret; } ortmp = srs_rtmp_create(out_rtmp_url); ret = proxy(flv, ortmp); - trace("ingest flv to RTMP completed"); + srs_trace("ingest flv to RTMP completed"); srs_rtmp_destroy(ortmp); srs_flv_close(flv); @@ -119,20 +118,20 @@ int do_proxy(srs_flv_t flv, srs_rtmp_t ortmp, int64_t re, u_int32_t* ptimestamp) int size; char* data = NULL; - trace("start ingest flv to RTMP stream"); + srs_trace("start ingest flv to RTMP stream"); for (;;) { // tag header if ((ret = srs_flv_read_tag_header(flv, &type, &size, ptimestamp)) != 0) { if (srs_flv_is_eof(ret)) { - trace("parse completed."); + srs_trace("parse completed."); return 0; } - trace("flv get packet failed. ret=%d", ret); + srs_trace("flv get packet failed. ret=%d", ret); return ret; } if (size <= 0) { - trace("invalid size=%d", size); + srs_trace("invalid size=%d", size); break; } @@ -143,10 +142,10 @@ int do_proxy(srs_flv_t flv, srs_rtmp_t ortmp, int64_t re, u_int32_t* ptimestamp) } if ((ret = srs_write_packet(ortmp, type, *ptimestamp, data, size)) != 0) { - trace("irtmp get packet failed. ret=%d", ret); + srs_trace("irtmp get packet failed. ret=%d", ret); return ret; } - verbose("ortmp sent packet: type=%s, time=%d, size=%d", + srs_verbose("ortmp sent packet: type=%s, time=%d, size=%d", srs_type2string(type), *ptimestamp, size); re_update(re, *ptimestamp); @@ -183,22 +182,22 @@ int connect_oc(srs_rtmp_t ortmp) int ret = 0; if ((ret = srs_simple_handshake(ortmp)) != 0) { - trace("ortmp simple handshake failed. ret=%d", ret); + srs_trace("ortmp simple handshake failed. ret=%d", ret); return ret; } - trace("ortmp simple handshake success"); + srs_trace("ortmp simple handshake success"); if ((ret = srs_connect_app(ortmp)) != 0) { - trace("ortmp connect vhost/app failed. ret=%d", ret); + srs_trace("ortmp connect vhost/app failed. ret=%d", ret); return ret; } - trace("ortmp connect vhost/app success"); + srs_trace("ortmp connect vhost/app success"); if ((ret = srs_publish_stream(ortmp)) != 0) { - trace("ortmp publish stream failed. ret=%d", ret); + srs_trace("ortmp publish stream failed. ret=%d", ret); return ret; } - trace("ortmp publish stream success"); + srs_trace("ortmp publish stream success"); return ret; } @@ -210,16 +209,16 @@ int64_t re_create() // use the starttime to get the deviation int64_t deviation = re - tools_main_entrance_startup_time; - trace("deviation is %d ms, pulse is %d ms", (int)(deviation), (int)(RE_PULSE_MS)); + srs_trace("deviation is %d ms, pulse is %d ms", (int)(deviation), (int)(RE_PULSE_MS)); // so, we adjust time to max(0, deviation) // because the last pulse, we already sleeped int adjust = (int)(deviation); if (adjust > 0) { - trace("adjust re time for %d ms", adjust); + srs_trace("adjust re time for %d ms", adjust); re -= adjust; } else { - trace("no need to adjust re time"); + srs_trace("no need to adjust re time"); } return re; @@ -240,7 +239,7 @@ void re_cleanup(int64_t re, u_int32_t time) int64_t now = srs_get_time_ms(); int64_t diff = time - (now -re); if (diff > 0) { - trace("re_cleanup sleep for the last pulse for %d ms", (int)diff); + srs_trace("re_cleanup sleep for the last pulse for %d ms", (int)diff); usleep(diff * 1000); } } diff --git a/trunk/research/librtmp/srs_ingest_rtmp.c b/trunk/research/librtmp/srs_ingest_rtmp.c index 28cbb4d33..9b2ccee93 100644 --- a/trunk/research/librtmp/srs_ingest_rtmp.c +++ b/trunk/research/librtmp/srs_ingest_rtmp.c @@ -29,7 +29,6 @@ gcc srs_ingest_rtmp.c ../../objs/lib/srs_librtmp.a -g -O0 -lstdc++ -o srs_ingest #include #include "../../objs/include/srs_librtmp.h" -#include "srs_research_public.h" int connect_ic(srs_rtmp_t irtmp); int connect_oc(srs_rtmp_t ortmp); @@ -73,17 +72,17 @@ int main(int argc, char** argv) } } - trace("ingest RTMP and publish to RTMP server like edge."); - trace("srs(simple-rtmp-server) client librtmp library."); - trace("version: %d.%d.%d", srs_version_major(), srs_version_minor(), srs_version_revision()); - trace("input: %s", in_rtmp_url); - trace("output: %s", out_rtmp_url); + srs_trace("ingest RTMP and publish to RTMP server like edge."); + srs_trace("srs(simple-rtmp-server) client librtmp library."); + srs_trace("version: %d.%d.%d", srs_version_major(), srs_version_minor(), srs_version_revision()); + srs_trace("input: %s", in_rtmp_url); + srs_trace("output: %s", out_rtmp_url); irtmp = srs_rtmp_create(in_rtmp_url); ortmp = srs_rtmp_create(out_rtmp_url); ret = proxy(irtmp, ortmp); - trace("proxy completed"); + srs_trace("proxy completed"); srs_rtmp_destroy(irtmp); srs_rtmp_destroy(ortmp); @@ -107,20 +106,20 @@ int proxy(srs_rtmp_t irtmp, srs_rtmp_t ortmp) return ret; } - trace("start proxy RTMP stream"); + srs_trace("start proxy RTMP stream"); for (;;) { if ((ret = srs_read_packet(irtmp, &type, ×tamp, &data, &size)) != 0) { - trace("irtmp get packet failed. ret=%d", ret); + srs_trace("irtmp get packet failed. ret=%d", ret); return ret; } - verbose("irtmp got packet: type=%s, time=%d, size=%d", + srs_verbose("irtmp got packet: type=%s, time=%d, size=%d", srs_type2string(type), timestamp, size); if ((ret = srs_write_packet(ortmp, type, timestamp, data, size)) != 0) { - trace("irtmp get packet failed. ret=%d", ret); + srs_trace("irtmp get packet failed. ret=%d", ret); return ret; } - verbose("ortmp sent packet: type=%s, time=%d, size=%d", + srs_verbose("ortmp sent packet: type=%s, time=%d, size=%d", srs_type2string(type), timestamp, size); } @@ -132,22 +131,22 @@ int connect_ic(srs_rtmp_t irtmp) int ret = 0; if ((ret = srs_simple_handshake(irtmp)) != 0) { - trace("irtmp simple handshake failed. ret=%d", ret); + srs_trace("irtmp simple handshake failed. ret=%d", ret); return ret; } - trace("irtmp simple handshake success"); + srs_trace("irtmp simple handshake success"); if ((ret = srs_connect_app(irtmp)) != 0) { - trace("irtmp connect vhost/app failed. ret=%d", ret); + srs_trace("irtmp connect vhost/app failed. ret=%d", ret); return ret; } - trace("irtmp connect vhost/app success"); + srs_trace("irtmp connect vhost/app success"); if ((ret = srs_play_stream(irtmp)) != 0) { - trace("irtmp play stream failed. ret=%d", ret); + srs_trace("irtmp play stream failed. ret=%d", ret); return ret; } - trace("irtmp play stream success"); + srs_trace("irtmp play stream success"); return ret; } @@ -157,22 +156,22 @@ int connect_oc(srs_rtmp_t ortmp) int ret = 0; if ((ret = srs_simple_handshake(ortmp)) != 0) { - trace("ortmp simple handshake failed. ret=%d", ret); + srs_trace("ortmp simple handshake failed. ret=%d", ret); return ret; } - trace("ortmp simple handshake success"); + srs_trace("ortmp simple handshake success"); if ((ret = srs_connect_app(ortmp)) != 0) { - trace("ortmp connect vhost/app failed. ret=%d", ret); + srs_trace("ortmp connect vhost/app failed. ret=%d", ret); return ret; } - trace("ortmp connect vhost/app success"); + srs_trace("ortmp connect vhost/app success"); if ((ret = srs_publish_stream(ortmp)) != 0) { - trace("ortmp publish stream failed. ret=%d", ret); + srs_trace("ortmp publish stream failed. ret=%d", ret); return ret; } - trace("ortmp publish stream success"); + srs_trace("ortmp publish stream success"); return ret; } diff --git a/trunk/research/librtmp/srs_research_public.h b/trunk/research/librtmp/srs_research_public.h deleted file mode 100644 index 63d13190b..000000000 --- a/trunk/research/librtmp/srs_research_public.h +++ /dev/null @@ -1,67 +0,0 @@ -/* -The MIT License (MIT) - -Copyright (c) 2013-2014 winlin - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ - -#ifndef SRS_RESEARH_PUBLIC_HPP -#define SRS_RESEARH_PUBLIC_HPP - -/* -#include "srs_research_public.h" -*/ - -#include -#include - -char* format_time() -{ - struct timeval tv; - static char buf[23]; - - memset(buf, 0, sizeof(buf)); - - // clock time - if (gettimeofday(&tv, NULL) == -1) { - return buf; - } - - // to calendar time - struct tm* tm; - if ((tm = localtime(&tv.tv_sec)) == NULL) { - return buf; - } - - snprintf(buf, sizeof(buf), - "%d-%02d-%02d %02d:%02d:%02d.%03d", - 1900 + tm->tm_year, 1 + tm->tm_mon, tm->tm_mday, - tm->tm_hour, tm->tm_min, tm->tm_sec, - (int)(tv.tv_usec / 1000)); - - return buf; -} -#define trace(msg, ...) printf("[%s]", format_time());printf(msg, ##__VA_ARGS__);printf("\n") -#define verbose(msg, ...) printf("[%s]", format_time());printf(msg, ##__VA_ARGS__);printf("\n") -#if 1 -#undef verbose -#define verbose(msg, ...) (void)0 -#endif - -#endif diff --git a/trunk/src/libs/srs_librtmp.cpp b/trunk/src/libs/srs_librtmp.cpp index e52276a9c..f0f4da313 100644 --- a/trunk/src/libs/srs_librtmp.cpp +++ b/trunk/src/libs/srs_librtmp.cpp @@ -24,6 +24,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include #include +#include #include #include @@ -32,7 +33,6 @@ using namespace std; #include #include #include -#include #include #include #include @@ -531,6 +531,33 @@ int64_t srs_get_nrecv_bytes(srs_rtmp_t rtmp) return context->rtmp->get_recv_bytes(); } +const char* srs_format_time() +{ + struct timeval tv; + static char buf[23]; + + memset(buf, 0, sizeof(buf)); + + // clock time + if (gettimeofday(&tv, NULL) == -1) { + return buf; + } + + // to calendar time + struct tm* tm; + if ((tm = localtime(&tv.tv_sec)) == NULL) { + return buf; + } + + snprintf(buf, sizeof(buf), + "%d-%02d-%02d %02d:%02d:%02d.%03d", + 1900 + tm->tm_year, 1 + tm->tm_mon, tm->tm_mday, + tm->tm_hour, tm->tm_min, tm->tm_sec, + (int)(tv.tv_usec / 1000)); + + return buf; +} + struct FlvContext { SrsFileReader reader; diff --git a/trunk/src/libs/srs_librtmp.hpp b/trunk/src/libs/srs_librtmp.hpp index 22061e514..e4f4669b6 100644 --- a/trunk/src/libs/srs_librtmp.hpp +++ b/trunk/src/libs/srs_librtmp.hpp @@ -234,7 +234,14 @@ extern int srs_version_revision(); extern int64_t srs_get_time_ms(); extern int64_t srs_get_nsend_bytes(srs_rtmp_t rtmp); extern int64_t srs_get_nrecv_bytes(srs_rtmp_t rtmp); - +// log to console. +extern const char* srs_format_time(); +#ifndef srs_trace + #define srs_trace(msg, ...) printf("[%s]", srs_format_time());printf(msg, ##__VA_ARGS__);printf("\n") +#endif +#ifndef srs_verbose + #define srs_verbose(msg, ...) printf("[%s]", srs_format_time());printf(msg, ##__VA_ARGS__);printf("\n") +#endif /************************************************************* ************************************************************** diff --git a/trunk/src/srs/srs.upp b/trunk/src/srs/srs.upp index 290caa48c..5fa0bfbf9 100755 --- a/trunk/src/srs/srs.upp +++ b/trunk/src/srs/srs.upp @@ -137,7 +137,6 @@ file ..\..\research\librtmp\srs_ingest_rtmp.c, ..\..\research\librtmp\srs_play.c, ..\..\research\librtmp\srs_publish.c, - ..\..\research\librtmp\srs_research_public.h, ..\..\research\hls\ts_info.cc; mainconfig