winlin

fix configure bug, refine code for stream caster.

@@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
7 SRS_WORKDIR="." 7 SRS_WORKDIR="."
8 SRS_OBJS_DIR="objs" 8 SRS_OBJS_DIR="objs"
9 SRS_OBJS="${SRS_WORKDIR}/${SRS_OBJS_DIR}" 9 SRS_OBJS="${SRS_WORKDIR}/${SRS_OBJS_DIR}"
10 -mkdir -p ${SRS_OBJS} 10 +SRS_MAKEFILE="Makefile"
11 11
12 # linux shell color support. 12 # linux shell color support.
13 RED="\\033[31m" 13 RED="\\033[31m"
@@ -23,6 +23,9 @@ fi @@ -23,6 +23,9 @@ fi
23 # remove makefile 23 # remove makefile
24 rm -f ${SRS_WORKDIR}/${SRS_MAKEFILE} 24 rm -f ${SRS_WORKDIR}/${SRS_MAKEFILE}
25 25
  26 +# create objs
  27 +mkdir -p ${SRS_OBJS}
  28 +
26 ##################################################################################### 29 #####################################################################################
27 # parse user options, set the variables like: 30 # parse user options, set the variables like:
28 # srs features: SRS_SSL/SRS_HLS/SRS_NGINX/SRS_FFMPEG_TOOL/SRS_HTTP_CALLBACK/...... 31 # srs features: SRS_SSL/SRS_HLS/SRS_NGINX/SRS_FFMPEG_TOOL/SRS_HTTP_CALLBACK/......
@@ -43,11 +46,9 @@ rm -f ${SRS_WORKDIR}/${SRS_MAKEFILE} @@ -43,11 +46,9 @@ rm -f ${SRS_WORKDIR}/${SRS_MAKEFILE}
43 ##################################################################################### 46 #####################################################################################
44 # generate Makefile. 47 # generate Makefile.
45 ##################################################################################### 48 #####################################################################################
46 -SRS_MAKEFILE="Makefile"  
47 # ubuntu echo in Makefile cannot display color, use bash instead 49 # ubuntu echo in Makefile cannot display color, use bash instead
48 SRS_BUILD_SUMMARY="_srs_build_summary.sh" 50 SRS_BUILD_SUMMARY="_srs_build_summary.sh"
49 51
50 -#####################################################################################  
51 # srs-librtmp sample entry 52 # srs-librtmp sample entry
52 SrsLibrtmpSampleEntry="nossl" 53 SrsLibrtmpSampleEntry="nossl"
53 if [ $SRS_SSL = YES ]; then SrsLibrtmpSampleEntry="ssl";fi 54 if [ $SRS_SSL = YES ]; then SrsLibrtmpSampleEntry="ssl";fi
@@ -1101,3 +1101,4 @@ bool srs_directive_equals(SrsConfDirective* a, SrsConfDirective* b); @@ -1101,3 +1101,4 @@ bool srs_directive_equals(SrsConfDirective* a, SrsConfDirective* b);
1101 extern SrsConfig* _srs_config; 1101 extern SrsConfig* _srs_config;
1102 1102
1103 #endif 1103 #endif
  1104 +
@@ -953,7 +953,7 @@ int SrsHttpResponseReader::read_chunked(std::string& data) @@ -953,7 +953,7 @@ int SrsHttpResponseReader::read_chunked(std::string& data)
953 } 953 }
954 return ret; 954 return ret;
955 } 955 }
956 - srs_trace("http: read %d chunk", ilength); 956 + srs_info("http: read %d chunk", ilength);
957 957
958 // read payload when length specifies some payload. 958 // read payload when length specifies some payload.
959 if (ilength <= 0) { 959 if (ilength <= 0) {
@@ -130,11 +130,13 @@ SrsMpegtsOverUdp::SrsMpegtsOverUdp(SrsConfDirective* c) @@ -130,11 +130,13 @@ SrsMpegtsOverUdp::SrsMpegtsOverUdp(SrsConfDirective* c)
130 context = new SrsTsContext(); 130 context = new SrsTsContext();
131 buffer = new SrsSimpleBuffer(); 131 buffer = new SrsSimpleBuffer();
132 output = _srs_config->get_stream_caster_output(c); 132 output = _srs_config->get_stream_caster_output(c);
  133 +
133 req = NULL; 134 req = NULL;
134 io = NULL; 135 io = NULL;
135 client = NULL; 136 client = NULL;
136 stfd = NULL; 137 stfd = NULL;
137 stream_id = 0; 138 stream_id = 0;
  139 +
138 avc = new SrsRawH264Stream(); 140 avc = new SrsRawH264Stream();
139 aac = new SrsRawAacStream(); 141 aac = new SrsRawAacStream();
140 h264_sps_changed = false; 142 h264_sps_changed = false;
@@ -159,8 +161,6 @@ SrsMpegtsOverUdp::~SrsMpegtsOverUdp() @@ -159,8 +161,6 @@ SrsMpegtsOverUdp::~SrsMpegtsOverUdp()
159 161
160 int SrsMpegtsOverUdp::on_udp_packet(sockaddr_in* from, char* buf, int nb_buf) 162 int SrsMpegtsOverUdp::on_udp_packet(sockaddr_in* from, char* buf, int nb_buf)
161 { 163 {
162 - int ret = ERROR_SUCCESS;  
163 -  
164 std::string peer_ip = inet_ntoa(from->sin_addr); 164 std::string peer_ip = inet_ntoa(from->sin_addr);
165 int peer_port = ntohs(from->sin_port); 165 int peer_port = ntohs(from->sin_port);
166 166
@@ -169,6 +169,13 @@ int SrsMpegtsOverUdp::on_udp_packet(sockaddr_in* from, char* buf, int nb_buf) @@ -169,6 +169,13 @@ int SrsMpegtsOverUdp::on_udp_packet(sockaddr_in* from, char* buf, int nb_buf)
169 169
170 srs_info("udp: got %s:%d packet %d/%d bytes", 170 srs_info("udp: got %s:%d packet %d/%d bytes",
171 peer_ip.c_str(), peer_port, nb_buf, buffer->length()); 171 peer_ip.c_str(), peer_port, nb_buf, buffer->length());
  172 +
  173 + return on_udp_bytes(peer_ip, peer_port, buf, nb_buf);
  174 +}
  175 +
  176 +int SrsMpegtsOverUdp::on_udp_bytes(string host, int port, char* buf, int nb_buf)
  177 +{
  178 + int ret = ERROR_SUCCESS;
172 179
173 // collect nMB data to parse in a time. 180 // collect nMB data to parse in a time.
174 // TODO: FIXME: comment the following for release. 181 // TODO: FIXME: comment the following for release.
@@ -215,8 +222,7 @@ int SrsMpegtsOverUdp::on_udp_packet(sockaddr_in* from, char* buf, int nb_buf) @@ -215,8 +222,7 @@ int SrsMpegtsOverUdp::on_udp_packet(sockaddr_in* from, char* buf, int nb_buf)
215 222
216 // drop ts packet when size not modulus by 188 223 // drop ts packet when size not modulus by 188
217 if (buffer->length() < SRS_TS_PACKET_SIZE) { 224 if (buffer->length() < SRS_TS_PACKET_SIZE) {
218 - srs_warn("udp: wait %s:%d packet %d/%d bytes",  
219 - peer_ip.c_str(), peer_port, nb_buf, buffer->length()); 225 + srs_warn("udp: wait %s:%d packet %d/%d bytes", host.c_str(), port, nb_buf, buffer->length());
220 return ret; 226 return ret;
221 } 227 }
222 228
@@ -582,6 +588,7 @@ int SrsMpegtsOverUdp::connect() @@ -582,6 +588,7 @@ int SrsMpegtsOverUdp::connect()
582 int ret = ERROR_SUCCESS; 588 int ret = ERROR_SUCCESS;
583 589
584 // when ok, ignore. 590 // when ok, ignore.
  591 + // TODO: FIXME: should reconnect when disconnected.
585 if (io || client) { 592 if (io || client) {
586 return ret; 593 return ret;
587 } 594 }
@@ -109,6 +109,8 @@ public: @@ -109,6 +109,8 @@ public:
109 // interface ISrsUdpHandler 109 // interface ISrsUdpHandler
110 public: 110 public:
111 virtual int on_udp_packet(sockaddr_in* from, char* buf, int nb_buf); 111 virtual int on_udp_packet(sockaddr_in* from, char* buf, int nb_buf);
  112 +private:
  113 + virtual int on_udp_bytes(std::string host, int port, char* buf, int nb_buf);
112 // interface ISrsTsHandler 114 // interface ISrsTsHandler
113 public: 115 public:
114 virtual int on_ts_message(SrsTsMessage* msg); 116 virtual int on_ts_message(SrsTsMessage* msg);
@@ -310,3 +310,4 @@ public: @@ -310,3 +310,4 @@ public:
310 }; 310 };
311 311
312 #endif 312 #endif
  313 +
@@ -247,6 +247,12 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -247,6 +247,12 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
247 #define ERROR_HTTP_RESPONSE_EOF 4025 247 #define ERROR_HTTP_RESPONSE_EOF 4025
248 #define ERROR_HTTP_INVALID_CHUNK_HEADER 4026 248 #define ERROR_HTTP_INVALID_CHUNK_HEADER 4026
249 249
  250 +///////////////////////////////////////////////////////
  251 +// user-define error.
  252 +///////////////////////////////////////////////////////
  253 +#define ERROR_USER_START 9000
  254 +#define ERROR_USER_END 9999
  255 +
250 /** 256 /**
251 * whether the error code is an system control error. 257 * whether the error code is an system control error.
252 */ 258 */
@@ -82,6 +82,7 @@ public: @@ -82,6 +82,7 @@ public:
82 virtual int open(std::string file); 82 virtual int open(std::string file);
83 virtual void close(); 83 virtual void close();
84 public: 84 public:
  85 + // TODO: FIXME: extract interface.
85 virtual bool is_open(); 86 virtual bool is_open();
86 virtual int64_t tellg(); 87 virtual int64_t tellg();
87 virtual void skip(int64_t size); 88 virtual void skip(int64_t size);
@@ -206,6 +206,11 @@ void check_macro_features() @@ -206,6 +206,11 @@ void check_macro_features()
206 srs_warn("SRS %s is develop branch, please use %s instead", RTMP_SIG_SRS_VERSION, RTMP_SIG_SRS_RELEASE); 206 srs_warn("SRS %s is develop branch, please use %s instead", RTMP_SIG_SRS_VERSION, RTMP_SIG_SRS_RELEASE);
207 #endif 207 #endif
208 208
  209 +#if defined(SRS_AUTO_STREAM_CASTER)
  210 + #warning "stream caster is experiment feature."
  211 + srs_warn("stream caster is experiment feature.");
  212 +#endif
  213 +
209 #if defined(SRS_PERF_SO_SNDBUF_SIZE) && !defined(SRS_PERF_MW_SO_SNDBUF) 214 #if defined(SRS_PERF_SO_SNDBUF_SIZE) && !defined(SRS_PERF_MW_SO_SNDBUF)
210 #error "SRS_PERF_SO_SNDBUF_SIZE depends on SRS_PERF_MW_SO_SNDBUF" 215 #error "SRS_PERF_SO_SNDBUF_SIZE depends on SRS_PERF_MW_SO_SNDBUF"
211 #endif 216 #endif