From a15ce1147f9c359c411a3e31ac5b217c5c84b350 Mon Sep 17 00:00:00 2001 From: winlin Date: Fri, 13 Mar 2015 12:53:01 +0800 Subject: [PATCH] for #155, fix all warnings for mac. --- trunk/research/librtmp/srs_flv_injecter.c | 3 + trunk/research/librtmp/srs_flv_parser.c | 2 + trunk/research/librtmp/srs_h264_raw_publish.c | 10 +- trunk/src/app/srs_app_hds.cpp | 1 - trunk/src/app/srs_app_hds.hpp | 1 - trunk/src/app/srs_app_http.cpp | 4 +- trunk/src/app/srs_app_listener.hpp | 2 +- trunk/src/app/srs_app_mpegts_udp.hpp | 4 +- trunk/src/app/srs_app_rtsp.hpp | 2 +- trunk/src/libs/srs_librtmp.cpp | 1 - trunk/src/protocol/srs_rtmp_stack.cpp | 158 +++++++++--------- trunk/src/protocol/srs_rtmp_stack.hpp | 108 ++++++------ 12 files changed, 148 insertions(+), 148 deletions(-) diff --git a/trunk/research/librtmp/srs_flv_injecter.c b/trunk/research/librtmp/srs_flv_injecter.c index 094d8ce8f..66c122b72 100644 --- a/trunk/research/librtmp/srs_flv_injecter.c +++ b/trunk/research/librtmp/srs_flv_injecter.c @@ -38,6 +38,9 @@ gcc srs_flv_injecter.c ../../objs/lib/srs_librtmp.a -g -O0 -lstdc++ -o srs_flv_i #define ERROR_INJECTED 10000 int process(const char* in_flv_file, const char* out_flv_file, srs_flv_t* pic, srs_flv_t* poc); +int build_keyframes(srs_flv_t ic, srs_amf0_t *pname, srs_amf0_t* pdata, srs_amf0_t* pfilepositions, int64_t* pmetadata_end_offset); +int do_inject_flv(srs_flv_t ic, srs_flv_t oc, srs_amf0_t amf0_name, srs_amf0_t amf0_data, srs_amf0_t filepositions, int64_t metadata_end_offset); + int main(int argc, char** argv) { int ret = 0; diff --git a/trunk/research/librtmp/srs_flv_parser.c b/trunk/research/librtmp/srs_flv_parser.c index f5cc1124b..299d723ee 100644 --- a/trunk/research/librtmp/srs_flv_parser.c +++ b/trunk/research/librtmp/srs_flv_parser.c @@ -122,6 +122,8 @@ int parse_bytes(char* data, int size, char* hbuf, int hsize, char* tbuf, int tsi if (size > print_size * 2) { digit_to_char(data + size - print_size, size, tbuf, tsize - 1); } + + return 0; } int parse_flv(srs_flv_t flv) diff --git a/trunk/research/librtmp/srs_h264_raw_publish.c b/trunk/research/librtmp/srs_h264_raw_publish.c index be032a8e9..44530ad57 100644 --- a/trunk/research/librtmp/srs_h264_raw_publish.c +++ b/trunk/research/librtmp/srs_h264_raw_publish.c @@ -146,11 +146,11 @@ int main(int argc, char** argv) } srs_human_trace("publish stream success"); - u_int32_t dts = 0; - u_int32_t pts = 0; + int dts = 0; + int pts = 0; // @remark, the dts and pts if read from device, for instance, the encode lib, // so we assume the fps is 25, and each h264 frame is 1000ms/25fps=40ms/f. - u_int32_t fps = 25; + int fps = 25; // @remark, to decode the file. char* p = h264_raw; for (;p < h264_raw + file_size;) { @@ -158,9 +158,7 @@ int main(int argc, char** argv) char* data = NULL; int size = 0; int nb_start_code = 0; - if (read_h264_frame(h264_raw, file_size, &p, &nb_start_code, fps, - &data, &size, &dts, &pts) < 0 - ) { + if (read_h264_frame(h264_raw, (int)file_size, &p, &nb_start_code, fps, &data, &size, &dts, &pts) < 0) { srs_human_trace("read a frame from file buffer failed."); goto rtmp_destroy; } diff --git a/trunk/src/app/srs_app_hds.cpp b/trunk/src/app/srs_app_hds.cpp index 1b0e3e33f..a2a0deb2d 100644 --- a/trunk/src/app/srs_app_hds.cpp +++ b/trunk/src/app/srs_app_hds.cpp @@ -262,7 +262,6 @@ private: SrsHds::SrsHds(SrsSource *s) : currentSegment(NULL) - , source(s) , fragment_index(1) , video_sh(NULL) , audio_sh(NULL) diff --git a/trunk/src/app/srs_app_hds.hpp b/trunk/src/app/srs_app_hds.hpp index b6a44cac9..2301aeb84 100644 --- a/trunk/src/app/srs_app_hds.hpp +++ b/trunk/src/app/srs_app_hds.hpp @@ -55,7 +55,6 @@ private: private: std::list fragments; SrsHdsFragment *currentSegment; - SrsSource *source; int fragment_index; SrsSharedPtrMessage *video_sh; SrsSharedPtrMessage *audio_sh; diff --git a/trunk/src/app/srs_app_http.cpp b/trunk/src/app/srs_app_http.cpp index ae4e09bd5..f178a702d 100644 --- a/trunk/src/app/srs_app_http.cpp +++ b/trunk/src/app/srs_app_http.cpp @@ -932,8 +932,8 @@ int SrsHttpResponseReader::read_chunked(std::string& data) srs_assert(length >= 3); // it's ok to set the pos and pos+1 to NULL. - at[length - 1] = NULL; - at[length - 2] = NULL; + at[length - 1] = 0; + at[length - 2] = 0; // size is the bytes size, excludes the chunk header and end CRLF. int ilength = ::strtol(at, NULL, 16); diff --git a/trunk/src/app/srs_app_listener.hpp b/trunk/src/app/srs_app_listener.hpp index f55f28672..5cf240043 100644 --- a/trunk/src/app/srs_app_listener.hpp +++ b/trunk/src/app/srs_app_listener.hpp @@ -33,7 +33,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include #include -class sockaddr_in; +struct sockaddr_in; /** * the udp packet handler. diff --git a/trunk/src/app/srs_app_mpegts_udp.hpp b/trunk/src/app/srs_app_mpegts_udp.hpp index 39f2cb12b..4389614e7 100644 --- a/trunk/src/app/srs_app_mpegts_udp.hpp +++ b/trunk/src/app/srs_app_mpegts_udp.hpp @@ -32,7 +32,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifdef SRS_AUTO_STREAM_CASTER -class sockaddr_in; +struct sockaddr_in; #include #include @@ -46,7 +46,7 @@ class SrsRequest; class SrsRawH264Stream; class SrsSharedPtrMessage; class SrsRawAacStream; -class SrsRawAacStreamCodec; +struct SrsRawAacStreamCodec; class SrsPithyPrint; #include diff --git a/trunk/src/app/srs_app_rtsp.hpp b/trunk/src/app/srs_app_rtsp.hpp index fb3686680..1b7f69865 100644 --- a/trunk/src/app/srs_app_rtsp.hpp +++ b/trunk/src/app/srs_app_rtsp.hpp @@ -51,7 +51,7 @@ class SrsStSocket; class SrsRtmpClient; class SrsRawH264Stream; class SrsRawAacStream; -class SrsRawAacStreamCodec; +struct SrsRawAacStreamCodec; class SrsSharedPtrMessage; class SrsCodecSample; class SrsSimpleBuffer; diff --git a/trunk/src/libs/srs_librtmp.cpp b/trunk/src/libs/srs_librtmp.cpp index 1a1705f25..1b9165498 100644 --- a/trunk/src/libs/srs_librtmp.cpp +++ b/trunk/src/libs/srs_librtmp.cpp @@ -2086,7 +2086,6 @@ char srs_utils_flv_audio_aac_packet_type(char* data, int size) } u_int8_t aac_packet_type = data[1]; - aac_packet_type = aac_packet_type; if (aac_packet_type > 1) { return -1; } diff --git a/trunk/src/protocol/srs_rtmp_stack.cpp b/trunk/src/protocol/srs_rtmp_stack.cpp index 863866359..2f15dd93c 100644 --- a/trunk/src/protocol/srs_rtmp_stack.cpp +++ b/trunk/src/protocol/srs_rtmp_stack.cpp @@ -534,6 +534,85 @@ SrsSharedPtrMessage* SrsSharedPtrMessage::copy() return copy; } +SrsPacket::SrsPacket() +{ +} + +SrsPacket::~SrsPacket() +{ +} + +int SrsPacket::encode(int& psize, char*& ppayload) +{ + int ret = ERROR_SUCCESS; + + int size = get_size(); + char* payload = NULL; + + SrsStream stream; + + if (size > 0) { + payload = new char[size]; + + if ((ret = stream.initialize(payload, size)) != ERROR_SUCCESS) { + srs_error("initialize the stream failed. ret=%d", ret); + srs_freep(payload); + return ret; + } + } + + if ((ret = encode_packet(&stream)) != ERROR_SUCCESS) { + srs_error("encode the packet failed. ret=%d", ret); + srs_freep(payload); + return ret; + } + + psize = size; + ppayload = payload; + srs_verbose("encode the packet success. size=%d", size); + + return ret; +} + +int SrsPacket::decode(SrsStream* stream) +{ + int ret = ERROR_SUCCESS; + + srs_assert(stream != NULL); + + ret = ERROR_SYSTEM_PACKET_INVALID; + srs_error("current packet is not support to decode. ret=%d", ret); + + return ret; +} + +int SrsPacket::get_prefer_cid() +{ + return 0; +} + +int SrsPacket::get_message_type() +{ + return 0; +} + +int SrsPacket::get_size() +{ + return 0; +} + +int SrsPacket::encode_packet(SrsStream* stream) +{ + int ret = ERROR_SUCCESS; + + srs_assert(stream != NULL); + + ret = ERROR_SYSTEM_PACKET_INVALID; + srs_error("current packet is not support to encode. ret=%d", ret); + + return ret; +} + SrsProtocol::AckWindowSize::AckWindowSize() { ack_window_size = 0; @@ -2020,85 +2099,6 @@ SrsChunkStream::~SrsChunkStream() srs_freep(msg); } -SrsPacket::SrsPacket() -{ -} - -SrsPacket::~SrsPacket() -{ -} - -int SrsPacket::encode(int& psize, char*& ppayload) -{ - int ret = ERROR_SUCCESS; - - int size = get_size(); - char* payload = NULL; - - SrsStream stream; - - if (size > 0) { - payload = new char[size]; - - if ((ret = stream.initialize(payload, size)) != ERROR_SUCCESS) { - srs_error("initialize the stream failed. ret=%d", ret); - srs_freep(payload); - return ret; - } - } - - if ((ret = encode_packet(&stream)) != ERROR_SUCCESS) { - srs_error("encode the packet failed. ret=%d", ret); - srs_freep(payload); - return ret; - } - - psize = size; - ppayload = payload; - srs_verbose("encode the packet success. size=%d", size); - - return ret; -} - -int SrsPacket::decode(SrsStream* stream) -{ - int ret = ERROR_SUCCESS; - - srs_assert(stream != NULL); - - ret = ERROR_SYSTEM_PACKET_INVALID; - srs_error("current packet is not support to decode. ret=%d", ret); - - return ret; -} - -int SrsPacket::get_prefer_cid() -{ - return 0; -} - -int SrsPacket::get_message_type() -{ - return 0; -} - -int SrsPacket::get_size() -{ - return 0; -} - -int SrsPacket::encode_packet(SrsStream* stream) -{ - int ret = ERROR_SUCCESS; - - srs_assert(stream != NULL); - - ret = ERROR_SYSTEM_PACKET_INVALID; - srs_error("current packet is not support to encode. ret=%d", ret); - - return ret; -} - SrsConnectAppPacket::SrsConnectAppPacket() { command_name = RTMP_AMF0_COMMAND_CONNECT; diff --git a/trunk/src/protocol/srs_rtmp_stack.hpp b/trunk/src/protocol/srs_rtmp_stack.hpp index be96b51c7..851307303 100644 --- a/trunk/src/protocol/srs_rtmp_stack.hpp +++ b/trunk/src/protocol/srs_rtmp_stack.hpp @@ -317,6 +317,60 @@ public: virtual SrsSharedPtrMessage* copy(); }; +/** + * the decoded message payload. + * @remark we seperate the packet from message, + * for the packet focus on logic and domain data, + * the message bind to the protocol and focus on protocol, such as header. + * we can merge the message and packet, using OOAD hierachy, packet extends from message, + * it's better for me to use components -- the message use the packet as payload. + */ +class SrsPacket +{ +public: + SrsPacket(); + virtual ~SrsPacket(); +public: + /** + * the subpacket can override this encode, + * for example, video and audio will directly set the payload withou memory copy, + * other packet which need to serialize/encode to bytes by override the + * get_size and encode_packet. + */ + virtual int encode(int& size, char*& payload); + // decode functions for concrete packet to override. +public: + /** + * subpacket must override to decode packet from stream. + * @remark never invoke the super.decode, it always failed. + */ + virtual int decode(SrsStream* stream); + // encode functions for concrete packet to override. +public: + /** + * the cid(chunk id) specifies the chunk to send data over. + * generally, each message perfer some cid, for example, + * all protocol control messages perfer RTMP_CID_ProtocolControl, + * SrsSetWindowAckSizePacket is protocol control message. + */ + virtual int get_prefer_cid(); + /** + * subpacket must override to provide the right message type. + * the message type set the RTMP message type in header. + */ + virtual int get_message_type(); +protected: + /** + * subpacket can override to calc the packet size. + */ + virtual int get_size(); + /** + * subpacket can override to encode the payload to stream. + * @remark never invoke the super.encode_packet, it always failed. + */ + virtual int encode_packet(SrsStream* stream); +}; + /** * the protocol provides the rtmp-message-protocol services, * to recv RTMP message from RTMP chunk stream, @@ -662,60 +716,6 @@ public: virtual ~SrsChunkStream(); }; -/** -* the decoded message payload. -* @remark we seperate the packet from message, -* for the packet focus on logic and domain data, -* the message bind to the protocol and focus on protocol, such as header. -* we can merge the message and packet, using OOAD hierachy, packet extends from message, -* it's better for me to use components -- the message use the packet as payload. -*/ -class SrsPacket -{ -public: - SrsPacket(); - virtual ~SrsPacket(); -public: - /** - * the subpacket can override this encode, - * for example, video and audio will directly set the payload withou memory copy, - * other packet which need to serialize/encode to bytes by override the - * get_size and encode_packet. - */ - virtual int encode(int& size, char*& payload); -// decode functions for concrete packet to override. -public: - /** - * subpacket must override to decode packet from stream. - * @remark never invoke the super.decode, it always failed. - */ - virtual int decode(SrsStream* stream); -// encode functions for concrete packet to override. -public: - /** - * the cid(chunk id) specifies the chunk to send data over. - * generally, each message perfer some cid, for example, - * all protocol control messages perfer RTMP_CID_ProtocolControl, - * SrsSetWindowAckSizePacket is protocol control message. - */ - virtual int get_prefer_cid(); - /** - * subpacket must override to provide the right message type. - * the message type set the RTMP message type in header. - */ - virtual int get_message_type(); -protected: - /** - * subpacket can override to calc the packet size. - */ - virtual int get_size(); - /** - * subpacket can override to encode the payload to stream. - * @remark never invoke the super.encode_packet, it always failed. - */ - virtual int encode_packet(SrsStream* stream); -}; - /** * 4.1.1. connect * The client sends the connect command to the server to request