Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
胡斌
/
srs
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
winlin
2015-03-13 12:53:01 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
a15ce1147f9c359c411a3e31ac5b217c5c84b350
a15ce114
1 parent
51967afb
for #155, fix all warnings for mac.
隐藏空白字符变更
内嵌
并排对比
正在显示
12 个修改的文件
包含
148 行增加
和
148 行删除
trunk/research/librtmp/srs_flv_injecter.c
trunk/research/librtmp/srs_flv_parser.c
trunk/research/librtmp/srs_h264_raw_publish.c
trunk/src/app/srs_app_hds.cpp
trunk/src/app/srs_app_hds.hpp
trunk/src/app/srs_app_http.cpp
trunk/src/app/srs_app_listener.hpp
trunk/src/app/srs_app_mpegts_udp.hpp
trunk/src/app/srs_app_rtsp.hpp
trunk/src/libs/srs_librtmp.cpp
trunk/src/protocol/srs_rtmp_stack.cpp
trunk/src/protocol/srs_rtmp_stack.hpp
trunk/research/librtmp/srs_flv_injecter.c
查看文件 @
a15ce11
...
...
@@ -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
;
...
...
trunk/research/librtmp/srs_flv_parser.c
查看文件 @
a15ce11
...
...
@@ -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
)
...
...
trunk/research/librtmp/srs_h264_raw_publish.c
查看文件 @
a15ce11
...
...
@@ -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
;
in
t
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
;
}
...
...
trunk/src/app/srs_app_hds.cpp
查看文件 @
a15ce11
...
...
@@ -262,7 +262,6 @@ private:
SrsHds
::
SrsHds
(
SrsSource
*
s
)
:
currentSegment
(
NULL
)
,
source
(
s
)
,
fragment_index
(
1
)
,
video_sh
(
NULL
)
,
audio_sh
(
NULL
)
...
...
trunk/src/app/srs_app_hds.hpp
查看文件 @
a15ce11
...
...
@@ -55,7 +55,6 @@ private:
private
:
std
::
list
<
SrsHdsFragment
*>
fragments
;
SrsHdsFragment
*
currentSegment
;
SrsSource
*
source
;
int
fragment_index
;
SrsSharedPtrMessage
*
video_sh
;
SrsSharedPtrMessage
*
audio_sh
;
...
...
trunk/src/app/srs_app_http.cpp
查看文件 @
a15ce11
...
...
@@ -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
);
...
...
trunk/src/app/srs_app_listener.hpp
查看文件 @
a15ce11
...
...
@@ -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.
...
...
trunk/src/app/srs_app_mpegts_udp.hpp
查看文件 @
a15ce11
...
...
@@ -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>
...
...
trunk/src/app/srs_app_rtsp.hpp
查看文件 @
a15ce11
...
...
@@ -51,7 +51,7 @@ class SrsStSocket;
class
SrsRtmpClient
;
class
SrsRawH264Stream
;
class
SrsRawAacStream
;
class
SrsRawAacStreamCodec
;
struct
SrsRawAacStreamCodec
;
class
SrsSharedPtrMessage
;
class
SrsCodecSample
;
class
SrsSimpleBuffer
;
...
...
trunk/src/libs/srs_librtmp.cpp
查看文件 @
a15ce11
...
...
@@ -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
;
}
...
...
trunk/src/protocol/srs_rtmp_stack.cpp
查看文件 @
a15ce11
...
...
@@ -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
;
...
...
trunk/src/protocol/srs_rtmp_stack.hpp
查看文件 @
a15ce11
...
...
@@ -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.
...
...
请
注册
或
登录
后发表评论