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
8 years ago
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
01d401c270ebd4a94d1703d13a21b2d5a6257285
01d401c2
1 parent
d3bb8b6a
for #738, refine flv codec to use io interface.
隐藏空白字符变更
内嵌
并排对比
正在显示
3 个修改的文件
包含
29 行增加
和
43 行删除
trunk/src/kernel/srs_kernel_error.hpp
trunk/src/kernel/srs_kernel_flv.cpp
trunk/src/kernel/srs_kernel_flv.hpp
trunk/src/kernel/srs_kernel_error.hpp
查看文件 @
01d401c
...
...
@@ -241,6 +241,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define ERROR_RESPONSE_DATA 3065
#define ERROR_REQUEST_DATA 3066
#define ERROR_EDGE_PORT_INVALID 3067
#define ERROR_EXPECT_FILE_IO 3068
///////////////////////////////////////////////////////
// HTTP/StreamCaster/KAFKA protocol error.
...
...
trunk/src/kernel/srs_kernel_flv.cpp
查看文件 @
01d401c
...
...
@@ -346,7 +346,7 @@ SrsSharedPtrMessage* SrsSharedPtrMessage::copy()
SrsFlvEncoder
::
SrsFlvEncoder
()
{
read
er
=
NULL
;
writ
er
=
NULL
;
tag_stream
=
new
SrsBuffer
();
#ifdef SRS_PERF_FAST_FLV_ENCODER
...
...
@@ -370,21 +370,11 @@ SrsFlvEncoder::~SrsFlvEncoder()
#endif
}
int
SrsFlvEncoder
::
initialize
(
SrsFileWriter
*
fr
)
int
SrsFlvEncoder
::
initialize
(
ISrsWriter
*
fw
)
{
int
ret
=
ERROR_SUCCESS
;
srs_assert
(
fr
);
if
(
!
fr
->
is_open
())
{
ret
=
ERROR_KERNEL_FLV_STREAM_CLOSED
;
srs_warn
(
"stream is not open for encoder. ret=%d"
,
ret
);
return
ret
;
}
reader
=
fr
;
return
ret
;
srs_assert
(
fw
);
writer
=
fw
;
return
ERROR_SUCCESS
;
}
int
SrsFlvEncoder
::
write_header
()
...
...
@@ -416,14 +406,14 @@ int SrsFlvEncoder::write_header(char flv_header[9])
int
ret
=
ERROR_SUCCESS
;
// write data.
if
((
ret
=
read
er
->
write
(
flv_header
,
9
,
NULL
))
!=
ERROR_SUCCESS
)
{
if
((
ret
=
writ
er
->
write
(
flv_header
,
9
,
NULL
))
!=
ERROR_SUCCESS
)
{
srs_error
(
"write flv header failed. ret=%d"
,
ret
);
return
ret
;
}
// previous tag size.
char
pts
[]
=
{
(
char
)
0x00
,
(
char
)
0x00
,
(
char
)
0x00
,
(
char
)
0x00
};
if
((
ret
=
read
er
->
write
(
pts
,
4
,
NULL
))
!=
ERROR_SUCCESS
)
{
if
((
ret
=
writ
er
->
write
(
pts
,
4
,
NULL
))
!=
ERROR_SUCCESS
)
{
return
ret
;
}
...
...
@@ -566,7 +556,7 @@ int SrsFlvEncoder::write_tags(SrsSharedPtrMessage** msgs, int count)
iovs
+=
3
;
}
if
((
ret
=
read
er
->
writev
(
iovss
,
nb_iovss
,
NULL
))
!=
ERROR_SUCCESS
)
{
if
((
ret
=
writ
er
->
writev
(
iovss
,
nb_iovss
,
NULL
))
!=
ERROR_SUCCESS
)
{
if
(
!
srs_is_client_gracefully_close
(
ret
))
{
srs_error
(
"write flv tags failed. ret=%d"
,
ret
);
}
...
...
@@ -697,7 +687,7 @@ int SrsFlvEncoder::write_tag(char* header, int header_size, char* tag, int tag_s
iovs
[
2
].
iov_base
=
pre_size
;
iovs
[
2
].
iov_len
=
SRS_FLV_PREVIOUS_TAG_SIZE
;
if
((
ret
=
read
er
->
writev
(
iovs
,
3
,
NULL
))
!=
ERROR_SUCCESS
)
{
if
((
ret
=
writ
er
->
writev
(
iovs
,
3
,
NULL
))
!=
ERROR_SUCCESS
)
{
if
(
!
srs_is_client_gracefully_close
(
ret
))
{
srs_error
(
"write flv tag failed. ret=%d"
,
ret
);
}
...
...
@@ -718,21 +708,11 @@ SrsFlvDecoder::~SrsFlvDecoder()
srs_freep
(
tag_stream
);
}
int
SrsFlvDecoder
::
initialize
(
SrsFile
Reader
*
fr
)
int
SrsFlvDecoder
::
initialize
(
ISrs
Reader
*
fr
)
{
int
ret
=
ERROR_SUCCESS
;
srs_assert
(
fr
);
if
(
!
fr
->
is_open
())
{
ret
=
ERROR_KERNEL_FLV_STREAM_CLOSED
;
srs_warn
(
"stream is not open for decoder. ret=%d"
,
ret
);
return
ret
;
}
reader
=
fr
;
return
ret
;
return
ERROR_SUCCESS
;
}
int
SrsFlvDecoder
::
read_header
(
char
header
[
9
])
...
...
@@ -842,20 +822,24 @@ SrsFlvVodStreamDecoder::~SrsFlvVodStreamDecoder()
srs_freep
(
tag_stream
);
}
int
SrsFlvVodStreamDecoder
::
initialize
(
SrsFile
Reader
*
fr
)
int
SrsFlvVodStreamDecoder
::
initialize
(
ISrs
Reader
*
fr
)
{
int
ret
=
ERROR_SUCCESS
;
srs_assert
(
fr
);
reader
=
dynamic_cast
<
SrsFileReader
*>
(
fr
);
if
(
!
reader
)
{
ret
=
ERROR_EXPECT_FILE_IO
;
srs_error
(
"stream is not file io. ret=%d"
,
ret
);
return
ret
;
}
if
(
!
f
r
->
is_open
())
{
if
(
!
reade
r
->
is_open
())
{
ret
=
ERROR_KERNEL_FLV_STREAM_CLOSED
;
srs_warn
(
"stream is not open for decoder. ret=%d"
,
ret
);
return
ret
;
}
reader
=
fr
;
return
ret
;
}
...
...
trunk/src/kernel/srs_kernel_flv.hpp
查看文件 @
01d401c
...
...
@@ -37,7 +37,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#endif
class
SrsBuffer
;
class
SrsFileWriter
;
class
ISrsWriter
;
class
ISrsReader
;
class
SrsFileReader
;
#define SRS_FLV_TAG_HEADER_SIZE 11
...
...
@@ -442,7 +443,7 @@ public:
class
SrsFlvEncoder
{
private
:
SrsFileWriter
*
read
er
;
ISrsWriter
*
writ
er
;
private
:
SrsBuffer
*
tag_stream
;
char
tag_header
[
SRS_FLV_TAG_HEADER_SIZE
];
...
...
@@ -453,9 +454,9 @@ public:
/**
* initialize the underlayer file stream.
* @remark user can initialize multiple times to encode multiple flv files.
* @remark, user must free the @param f
r
, flv encoder never close/free it.
* @remark, user must free the @param f
w
, flv encoder never close/free it.
*/
virtual
int
initialize
(
SrsFileWriter
*
fr
);
virtual
int
initialize
(
ISrsWriter
*
fw
);
public
:
/**
* write flv header.
...
...
@@ -520,7 +521,7 @@ private:
class
SrsFlvDecoder
{
private
:
SrsFile
Reader
*
reader
;
ISrs
Reader
*
reader
;
private
:
SrsBuffer
*
tag_stream
;
public
:
...
...
@@ -530,9 +531,9 @@ public:
/**
* initialize the underlayer file stream
* @remark user can initialize multiple times to decode multiple flv files.
* @remark user must free the @param fr, flv decoder never close/free it
.
* @remark user must free the @param fr, flv decoder never close/free it
*/
virtual
int
initialize
(
SrsFile
Reader
*
fr
);
virtual
int
initialize
(
ISrs
Reader
*
fr
);
public
:
/**
* read the flv header, donot including the 4bytes previous tag size.
...
...
@@ -576,7 +577,7 @@ public:
* @remark user can initialize multiple times to decode multiple flv files.
* @remark user must free the @param fr, flv decoder never close/free it.
*/
virtual
int
initialize
(
SrsFile
Reader
*
fr
);
virtual
int
initialize
(
ISrs
Reader
*
fr
);
public
:
/**
* read the flv header and its size.
...
...
请
注册
或
登录
后发表评论