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-29 22:35:10 +0800
Browse Files
Options
Browse Files
Download
Plain Diff
Commit
922adaf59fddb25eac474ce3880b6a56c3984da7
922adaf5
2 parents
75ca70c6
85afb6ea
Merge branch '2.0release' into develop
隐藏空白字符变更
内嵌
并排对比
正在显示
4 个修改的文件
包含
24 行增加
和
10 行删除
DONATIONS.txt
trunk/src/app/srs_app_hls.cpp
trunk/src/kernel/srs_kernel_ts.cpp
trunk/src/protocol/srs_raw_avc.cpp
DONATIONS.txt
查看文件 @
922adaf
...
...
@@ -13,6 +13,7 @@ RMB 500-999
* [2015-xx-xx xx:xx] xxx
RMB 100-499
* [2015-03-29 11-07] 姚伟斌
* [2015-03-14 20:21] 万伟
* [2015-03-11 09:44] 叶发养
* [2015-02-08 21:10] 韩友洪
...
...
trunk/src/app/srs_app_hls.cpp
查看文件 @
922adaf
...
...
@@ -563,11 +563,11 @@ int SrsHlsMuxer::_refresh_m3u8(string m3u8_file)
// #EXTM3U\n
// #EXT-X-VERSION:3\n
// #EXT-X-ALLOW-CACHE:
NO
\n
// #EXT-X-ALLOW-CACHE:
YES
\n
std
::
stringstream
ss
;
ss
<<
"#EXTM3U"
<<
SRS_CONSTS_LF
<<
"#EXT-X-VERSION:3"
<<
SRS_CONSTS_LF
<<
"#EXT-X-ALLOW-CACHE:
NO
"
<<
SRS_CONSTS_LF
;
<<
"#EXT-X-ALLOW-CACHE:
YES
"
<<
SRS_CONSTS_LF
;
srs_verbose
(
"write m3u8 header success."
);
// #EXT-X-MEDIA-SEQUENCE:4294967295\n
...
...
trunk/src/kernel/srs_kernel_ts.cpp
查看文件 @
922adaf
...
...
@@ -1265,10 +1265,15 @@ int SrsTsPayloadPES::decode(SrsStream* stream, SrsTsMessage** ppmsg)
msg
=
new
SrsTsMessage
(
channel
,
packet
);
channel
->
msg
=
msg
;
}
// we must cache the fresh state of msg,
// for the PES_packet_length is 0, the first payload_unit_start_indicator always 1,
// so should check for the fresh and not completed it.
bool
is_fresh_msg
=
msg
->
fresh
();
// check when fresh, the payload_unit_start_indicator
// should be 1 for the fresh msg.
if
(
msg
->
fresh
()
&&
!
packet
->
payload_unit_start_indicator
)
{
if
(
is_fresh_msg
&&
!
packet
->
payload_unit_start_indicator
)
{
ret
=
ERROR_STREAM_CASTER_TS_PSE
;
srs_error
(
"ts: PES fresh packet length=%d, us=%d, cc=%d. ret=%d"
,
msg
->
PES_packet_length
,
packet
->
payload_unit_start_indicator
,
packet
->
continuity_counter
,
...
...
@@ -1278,7 +1283,7 @@ int SrsTsPayloadPES::decode(SrsStream* stream, SrsTsMessage** ppmsg)
// check when not fresh and PES_packet_length>0,
// the payload_unit_start_indicator should never be 1 when not completed.
if
(
!
msg
->
fresh
()
&&
msg
->
PES_packet_length
>
0
if
(
!
is_fresh_msg
&&
msg
->
PES_packet_length
>
0
&&
!
msg
->
completed
(
packet
->
payload_unit_start_indicator
)
&&
packet
->
payload_unit_start_indicator
)
{
...
...
@@ -1295,7 +1300,7 @@ int SrsTsPayloadPES::decode(SrsStream* stream, SrsTsMessage** ppmsg)
}
// check the continuity counter
if
(
!
msg
->
fresh
()
)
{
if
(
!
is_fresh_msg
)
{
// late-incoming or duplicated continuity, drop message.
// @remark check overflow, the counter plus 1 should greater when invalid.
if
(
msg
->
continuity_counter
>=
packet
->
continuity_counter
...
...
@@ -1322,7 +1327,7 @@ int SrsTsPayloadPES::decode(SrsStream* stream, SrsTsMessage** ppmsg)
msg
->
continuity_counter
=
packet
->
continuity_counter
;
// for the PES_packet_length(0), reap when completed.
if
(
!
msg
->
fresh
()
&&
msg
->
completed
(
packet
->
payload_unit_start_indicator
))
{
if
(
!
is_fresh_msg
&&
msg
->
completed
(
packet
->
payload_unit_start_indicator
))
{
// reap previous PES packet.
*
ppmsg
=
msg
;
channel
->
msg
=
NULL
;
...
...
@@ -1358,7 +1363,7 @@ int SrsTsPayloadPES::decode(SrsStream* stream, SrsTsMessage** ppmsg)
packet_start_code_prefix
&=
0xFFFFFF
;
if
(
packet_start_code_prefix
!=
0x01
)
{
ret
=
ERROR_STREAM_CASTER_TS_PSE
;
srs_error
(
"ts: demux P
SE
start code failed, expect=0x01, actual=%#x. ret=%d"
,
packet_start_code_prefix
,
ret
);
srs_error
(
"ts: demux P
ES
start code failed, expect=0x01, actual=%#x. ret=%d"
,
packet_start_code_prefix
,
ret
);
return
ret
;
}
int
pos_packet
=
stream
->
pos
();
...
...
@@ -1380,7 +1385,7 @@ int SrsTsPayloadPES::decode(SrsStream* stream, SrsTsMessage** ppmsg)
// 3B flags.
if
(
!
stream
->
require
(
3
))
{
ret
=
ERROR_STREAM_CASTER_TS_PSE
;
srs_error
(
"ts: demux P
SE
flags failed. ret=%d"
,
ret
);
srs_error
(
"ts: demux P
ES
flags failed. ret=%d"
,
ret
);
return
ret
;
}
// 1B
...
...
@@ -1419,7 +1424,7 @@ int SrsTsPayloadPES::decode(SrsStream* stream, SrsTsMessage** ppmsg)
nb_required
+=
PES_extension_flag
?
1
:
0
;
if
(
!
stream
->
require
(
nb_required
))
{
ret
=
ERROR_STREAM_CASTER_TS_PSE
;
srs_error
(
"ts: demux P
SE
payload failed. ret=%d"
,
ret
);
srs_error
(
"ts: demux P
ES
payload failed. ret=%d"
,
ret
);
return
ret
;
}
...
...
@@ -1638,6 +1643,13 @@ int SrsTsPayloadPES::decode(SrsStream* stream, SrsTsMessage** ppmsg)
srs_warn
(
"ts: drop the pes packet %dB for stream_id=%#x"
,
nb_drop
,
stream_id
);
}
}
// when fresh and the PES_packet_length is 0,
// the payload_unit_start_indicator always be 1,
// the message should never EOF for the first packet.
if
(
is_fresh_msg
&&
msg
->
PES_packet_length
==
0
)
{
return
ret
;
}
// check msg, reap when completed.
if
(
msg
->
completed
(
packet
->
payload_unit_start_indicator
))
{
...
...
trunk/src/protocol/srs_raw_avc.cpp
查看文件 @
922adaf
...
...
@@ -438,6 +438,7 @@ int SrsRawAacStream::adts_demux(SrsStream* stream, char** pframe, int* pnb_frame
codec
.
frame_length
=
frame_length
;
// @see srs_audio_write_raw_frame().
// TODO: FIXME: maybe need to resample audio.
codec
.
sound_format
=
10
;
// AAC
if
(
sampling_frequency_index
<=
0x0c
&&
sampling_frequency_index
>
0x0a
)
{
codec
.
sound_rate
=
SrsCodecAudioSampleRate5512
;
...
...
@@ -451,7 +452,7 @@ int SrsRawAacStream::adts_demux(SrsStream* stream, char** pframe, int* pnb_frame
codec
.
sound_rate
=
SrsCodecAudioSampleRate44100
;
srs_warn
(
"adts invalid sample rate for flv, rate=%#x"
,
sampling_frequency_index
);
}
codec
.
sound_
siz
e
=
srs_max
(
0
,
srs_min
(
1
,
channel_configuration
-
1
));
codec
.
sound_
typ
e
=
srs_max
(
0
,
srs_min
(
1
,
channel_configuration
-
1
));
// TODO: FIXME: finger it out the sound size by adts.
codec
.
sound_size
=
1
;
// 0(8bits) or 1(16bits).
...
...
请
注册
或
登录
后发表评论