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-01-18 22:56:01 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
7674524c314da4a653b193bf77965e4676d34cf2
7674524c
1 parent
c0233542
for #239, empty the aac encoder
隐藏空白字符变更
内嵌
并排对比
正在显示
5 个修改的文件
包含
7 行增加
和
186 行删除
trunk/src/app/srs_app_http_conn.cpp
trunk/src/kernel/srs_kernel_aac.cpp
trunk/src/kernel/srs_kernel_aac.hpp
trunk/src/kernel/srs_kernel_error.hpp
trunk/src/kernel/srs_kernel_flv.cpp
trunk/src/app/srs_app_http_conn.cpp
查看文件 @
7674524
...
...
@@ -219,9 +219,10 @@ int SrsAacStreamEncoder::write_video(int64_t timestamp, char* data, int size)
return
enc
->
write_video
(
timestamp
,
data
,
size
);
}
int
SrsAacStreamEncoder
::
write_metadata
(
int64_t
timestamp
,
char
*
data
,
int
size
)
int
SrsAacStreamEncoder
::
write_metadata
(
int64_t
/*timestamp*/
,
char
*
/*data*/
,
int
/*size*/
)
{
return
enc
->
write_metadata
(
timestamp
,
data
,
size
);
// aac ignore any flv metadata.
return
ERROR_SUCCESS
;
}
SrsStreamWriter
::
SrsStreamWriter
(
ISrsGoHttpResponseWriter
*
w
)
...
...
trunk/src/kernel/srs_kernel_aac.cpp
查看文件 @
7674524
...
...
@@ -58,8 +58,8 @@ int SrsAacEncoder::initialize(SrsFileWriter* fs)
srs_assert
(
fs
);
if
(
!
fs
->
is_open
())
{
ret
=
ERROR_KERNEL_FLV_STREAM_CLOSED
;
srs_warn
(
"stream is not open for decoder. ret=%d"
,
ret
);
ret
=
ERROR_KERNEL_AAC_STREAM_CLOSED
;
srs_warn
(
"stream is not open for encoder. ret=%d"
,
ret
);
return
ret
;
}
...
...
@@ -68,77 +68,6 @@ int SrsAacEncoder::initialize(SrsFileWriter* fs)
return
ret
;
}
int
SrsAacEncoder
::
write_header
()
{
int
ret
=
ERROR_SUCCESS
;
// 9bytes header and 4bytes first previous-tag-size
static
char
flv_header
[]
=
{
'F'
,
'L'
,
'V'
,
// Signatures "FLV"
(
char
)
0x01
,
// File version (for example, 0x01 for FLV version 1)
(
char
)
0x00
,
// 4, audio; 1, video; 5 audio+video.
(
char
)
0x00
,
(
char
)
0x00
,
(
char
)
0x00
,
(
char
)
0x09
// DataOffset UI32 The length of this header in bytes
};
// flv specification should set the audio and video flag,
// actually in practise, application generally ignore this flag,
// so we generally set the audio/video to 0.
// write 9bytes header.
if
((
ret
=
write_header
(
flv_header
))
!=
ERROR_SUCCESS
)
{
return
ret
;
}
return
ret
;
}
int
SrsAacEncoder
::
write_header
(
char
flv_header
[
9
])
{
int
ret
=
ERROR_SUCCESS
;
// write data.
if
((
ret
=
_fs
->
write
(
flv_header
,
9
,
NULL
))
!=
ERROR_SUCCESS
)
{
srs_error
(
"write flv header failed. ret=%d"
,
ret
);
return
ret
;
}
char
pts
[]
=
{
(
char
)
0x00
,
(
char
)
0x00
,
(
char
)
0x00
,
(
char
)
0x00
};
if
((
ret
=
_fs
->
write
(
pts
,
4
,
NULL
))
!=
ERROR_SUCCESS
)
{
return
ret
;
}
return
ret
;
}
int
SrsAacEncoder
::
write_metadata
(
char
type
,
char
*
data
,
int
size
)
{
int
ret
=
ERROR_SUCCESS
;
srs_assert
(
data
);
// 11 bytes tag header
static
char
tag_header
[]
=
{
(
char
)
type
,
// TagType UB [5], 18 = script data
(
char
)
0x00
,
(
char
)
0x00
,
(
char
)
0x00
,
// DataSize UI24 Length of the message.
(
char
)
0x00
,
(
char
)
0x00
,
(
char
)
0x00
,
// Timestamp UI24 Time in milliseconds at which the data in this tag applies.
(
char
)
0x00
,
// TimestampExtended UI8
(
char
)
0x00
,
(
char
)
0x00
,
(
char
)
0x00
,
// StreamID UI24 Always 0.
};
// write data size.
if
((
ret
=
tag_stream
->
initialize
(
tag_header
+
1
,
3
))
!=
ERROR_SUCCESS
)
{
return
ret
;
}
tag_stream
->
write_3bytes
(
size
);
if
((
ret
=
write_tag
(
tag_header
,
sizeof
(
tag_header
),
data
,
size
))
!=
ERROR_SUCCESS
)
{
srs_error
(
"write flv data tag failed. ret=%d"
,
ret
);
return
ret
;
}
return
ret
;
}
int
SrsAacEncoder
::
write_audio
(
int64_t
timestamp
,
char
*
data
,
int
size
)
{
int
ret
=
ERROR_SUCCESS
;
...
...
@@ -147,29 +76,6 @@ int SrsAacEncoder::write_audio(int64_t timestamp, char* data, int size)
timestamp
&=
0x7fffffff
;
// 11bytes tag header
static
char
tag_header
[]
=
{
(
char
)
8
,
// TagType UB [5], 8 = audio
(
char
)
0x00
,
(
char
)
0x00
,
(
char
)
0x00
,
// DataSize UI24 Length of the message.
(
char
)
0x00
,
(
char
)
0x00
,
(
char
)
0x00
,
// Timestamp UI24 Time in milliseconds at which the data in this tag applies.
(
char
)
0x00
,
// TimestampExtended UI8
(
char
)
0x00
,
(
char
)
0x00
,
(
char
)
0x00
,
// StreamID UI24 Always 0.
};
// write data size.
if
((
ret
=
tag_stream
->
initialize
(
tag_header
+
1
,
7
))
!=
ERROR_SUCCESS
)
{
return
ret
;
}
tag_stream
->
write_3bytes
(
size
);
tag_stream
->
write_3bytes
((
int32_t
)
timestamp
);
// default to little-endian
tag_stream
->
write_1bytes
((
timestamp
>>
24
)
&
0xFF
);
if
((
ret
=
write_tag
(
tag_header
,
sizeof
(
tag_header
),
data
,
size
))
!=
ERROR_SUCCESS
)
{
srs_error
(
"write flv audio tag failed. ret=%d"
,
ret
);
return
ret
;
}
return
ret
;
}
...
...
@@ -181,66 +87,6 @@ int SrsAacEncoder::write_video(int64_t timestamp, char* data, int size)
timestamp
&=
0x7fffffff
;
// 11bytes tag header
static
char
tag_header
[]
=
{
(
char
)
9
,
// TagType UB [5], 9 = video
(
char
)
0x00
,
(
char
)
0x00
,
(
char
)
0x00
,
// DataSize UI24 Length of the message.
(
char
)
0x00
,
(
char
)
0x00
,
(
char
)
0x00
,
// Timestamp UI24 Time in milliseconds at which the data in this tag applies.
(
char
)
0x00
,
// TimestampExtended UI8
(
char
)
0x00
,
(
char
)
0x00
,
(
char
)
0x00
,
// StreamID UI24 Always 0.
};
// write data size.
if
((
ret
=
tag_stream
->
initialize
(
tag_header
+
1
,
7
))
!=
ERROR_SUCCESS
)
{
return
ret
;
}
tag_stream
->
write_3bytes
(
size
);
tag_stream
->
write_3bytes
((
int32_t
)
timestamp
);
// default to little-endian
tag_stream
->
write_1bytes
((
timestamp
>>
24
)
&
0xFF
);
if
((
ret
=
write_tag
(
tag_header
,
sizeof
(
tag_header
),
data
,
size
))
!=
ERROR_SUCCESS
)
{
srs_error
(
"write flv video tag failed. ret=%d"
,
ret
);
return
ret
;
}
return
ret
;
}
int
SrsAacEncoder
::
size_tag
(
int
data_size
)
{
srs_assert
(
data_size
>=
0
);
return
SRS_FLV_TAG_HEADER_SIZE
+
data_size
+
SRS_FLV_PREVIOUS_TAG_SIZE
;
}
int
SrsAacEncoder
::
write_tag
(
char
*
header
,
int
header_size
,
char
*
tag
,
int
tag_size
)
{
int
ret
=
ERROR_SUCCESS
;
// write tag header.
if
((
ret
=
_fs
->
write
(
header
,
header_size
,
NULL
))
!=
ERROR_SUCCESS
)
{
srs_error
(
"write flv tag header failed. ret=%d"
,
ret
);
return
ret
;
}
// write tag data.
if
((
ret
=
_fs
->
write
(
tag
,
tag_size
,
NULL
))
!=
ERROR_SUCCESS
)
{
srs_error
(
"write flv tag failed. ret=%d"
,
ret
);
return
ret
;
}
// PreviousTagSizeN UI32 Size of last tag, including its header, in bytes.
static
char
pre_size
[
SRS_FLV_PREVIOUS_TAG_SIZE
];
if
((
ret
=
tag_stream
->
initialize
(
pre_size
,
SRS_FLV_PREVIOUS_TAG_SIZE
))
!=
ERROR_SUCCESS
)
{
return
ret
;
}
tag_stream
->
write_4bytes
(
tag_size
+
header_size
);
if
((
ret
=
_fs
->
write
(
pre_size
,
sizeof
(
pre_size
),
NULL
))
!=
ERROR_SUCCESS
)
{
srs_error
(
"write flv previous tag size failed. ret=%d"
,
ret
);
return
ret
;
}
return
ret
;
}
...
...
trunk/src/kernel/srs_kernel_aac.hpp
查看文件 @
7674524
...
...
@@ -56,38 +56,11 @@ public:
virtual
int
initialize
(
SrsFileWriter
*
fs
);
public
:
/**
* write flv header.
* write following:
* 1. E.2 The FLV header
* 2. PreviousTagSize0 UI32 Always 0
* that is, 9+4=13bytes.
*/
virtual
int
write_header
();
virtual
int
write_header
(
char
flv_header
[
9
]);
/**
* write flv metadata.
* @param type, the type of data, or other message type.
* @param data, the amf0 metadata which serialize from:
* AMF0 string: onMetaData,
* AMF0 object: the metadata object.
* @remark assert data is not NULL.
*/
virtual
int
write_metadata
(
char
type
,
char
*
data
,
int
size
);
/**
* write audio/video packet.
* @remark assert data is not NULL.
*/
virtual
int
write_audio
(
int64_t
timestamp
,
char
*
data
,
int
size
);
virtual
int
write_video
(
int64_t
timestamp
,
char
*
data
,
int
size
);
public
:
/**
* get the tag size,
* including the tag header, body, and 4bytes previous tag size.
* @remark assert data_size is not negative.
*/
static
int
size_tag
(
int
data_size
);
private
:
virtual
int
write_tag
(
char
*
header
,
int
header_size
,
char
*
tag
,
int
tag_size
);
};
#endif
...
...
trunk/src/kernel/srs_kernel_error.hpp
查看文件 @
7674524
...
...
@@ -203,6 +203,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define ERROR_AAC_ADTS_HEADER 3047
#define ERROR_AAC_DATA_INVALID 3048
#define ERROR_HTTP_STATUS_INVLIAD 3049
#define ERROR_KERNEL_AAC_STREAM_CLOSED 3050
///////////////////////////////////////////////////////
// HTTP protocol error.
...
...
trunk/src/kernel/srs_kernel_flv.cpp
查看文件 @
7674524
...
...
@@ -59,7 +59,7 @@ int SrsFlvEncoder::initialize(SrsFileWriter* fs)
if
(
!
fs
->
is_open
())
{
ret
=
ERROR_KERNEL_FLV_STREAM_CLOSED
;
srs_warn
(
"stream is not open for
de
coder. ret=%d"
,
ret
);
srs_warn
(
"stream is not open for
en
coder. ret=%d"
,
ret
);
return
ret
;
}
...
...
请
注册
或
登录
后发表评论