winlin

for #155, fix all warnings for mac.

... ... @@ -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;
... ...
... ... @@ -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)
... ...
... ... @@ -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;
}
... ...
... ... @@ -262,7 +262,6 @@ private:
SrsHds::SrsHds(SrsSource *s)
: currentSegment(NULL)
, source(s)
, fragment_index(1)
, video_sh(NULL)
, audio_sh(NULL)
... ...
... ... @@ -55,7 +55,6 @@ private:
private:
std::list<SrsHdsFragment *> fragments;
SrsHdsFragment *currentSegment;
SrsSource *source;
int fragment_index;
SrsSharedPtrMessage *video_sh;
SrsSharedPtrMessage *audio_sh;
... ...
... ... @@ -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);
... ...
... ... @@ -33,7 +33,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <srs_app_st.hpp>
#include <srs_app_thread.hpp>
class sockaddr_in;
struct sockaddr_in;
/**
* the udp packet handler.
... ...
... ... @@ -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 <string>
#include <map>
... ... @@ -46,7 +46,7 @@ class SrsRequest;
class SrsRawH264Stream;
class SrsSharedPtrMessage;
class SrsRawAacStream;
class SrsRawAacStreamCodec;
struct SrsRawAacStreamCodec;
class SrsPithyPrint;
#include <srs_app_st.hpp>
... ...
... ... @@ -51,7 +51,7 @@ class SrsStSocket;
class SrsRtmpClient;
class SrsRawH264Stream;
class SrsRawAacStream;
class SrsRawAacStreamCodec;
struct SrsRawAacStreamCodec;
class SrsSharedPtrMessage;
class SrsCodecSample;
class SrsSimpleBuffer;
... ...
... ... @@ -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;
}
... ...
... ... @@ -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;
... ...
... ... @@ -318,6 +318,60 @@ public:
};
/**
* 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,
* and to send out RTMP message over RTMP chunk stream.
... ... @@ -663,60 +717,6 @@ public:
};
/**
* 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
* connection to a server application instance.
... ...