Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qq_25606643
ijkplayer
提交
74590fa5
I
ijkplayer
项目概览
qq_25606643
/
ijkplayer
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
I
ijkplayer
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
74590fa5
编写于
1月 06, 2015
作者:
Z
Zhang Rui
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ff_ffplay: only one stream can trigger buffering
上级
ebec392d
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
19 addition
and
3 deletion
+19
-3
ijkmedia/ijkplayer/ff_ffplay.c
ijkmedia/ijkplayer/ff_ffplay.c
+15
-3
ijkmedia/ijkplayer/ff_ffplay_def.h
ijkmedia/ijkplayer/ff_ffplay_def.h
+4
-0
未找到文件。
ijkmedia/ijkplayer/ff_ffplay.c
浏览文件 @
74590fa5
...
@@ -270,7 +270,7 @@ static int packet_queue_get_or_buffering(FFPlayer *ffp, PacketQueue *q, AVPacket
...
@@ -270,7 +270,7 @@ static int packet_queue_get_or_buffering(FFPlayer *ffp, PacketQueue *q, AVPacket
if
(
new_packet
<
0
)
if
(
new_packet
<
0
)
return
-
1
;
return
-
1
;
else
if
(
new_packet
==
0
)
{
else
if
(
new_packet
==
0
)
{
if
(
!*
finished
)
if
(
q
->
is_buffer_indicator
&&
!*
finished
)
ffp_toggle_buffering
(
ffp
,
1
);
ffp_toggle_buffering
(
ffp
,
1
);
new_packet
=
packet_queue_get
(
q
,
pkt
,
1
,
serial
);
new_packet
=
packet_queue_get
(
q
,
pkt
,
1
,
serial
);
if
(
new_packet
<
0
)
if
(
new_packet
<
0
)
...
@@ -2366,6 +2366,15 @@ static int read_thread(void *arg)
...
@@ -2366,6 +2366,15 @@ static int read_thread(void *arg)
ret
=
-
1
;
ret
=
-
1
;
goto
fail
;
goto
fail
;
}
}
if
(
is
->
audio_stream
>=
0
)
{
is
->
audioq
.
is_buffer_indicator
=
1
;
is
->
buffer_indicator_queue
=
&
is
->
audioq
;
}
else
if
(
is
->
video_stream
>=
0
)
{
is
->
videoq
.
is_buffer_indicator
=
1
;
is
->
buffer_indicator_queue
=
&
is
->
videoq
;
}
else
{
assert
(
"invalid streams"
);
}
if
(
ffp
->
infinite_buffer
<
0
&&
is
->
realtime
)
if
(
ffp
->
infinite_buffer
<
0
&&
is
->
realtime
)
ffp
->
infinite_buffer
=
1
;
ffp
->
infinite_buffer
=
1
;
...
@@ -3349,8 +3358,11 @@ void ffp_check_buffering_l(FFPlayer *ffp)
...
@@ -3349,8 +3358,11 @@ void ffp_check_buffering_l(FFPlayer *ffp)
hwm_in_ms
=
ffp
->
max_high_water_mark_in_ms
;
hwm_in_ms
=
ffp
->
max_high_water_mark_in_ms
;
ffp
->
current_high_water_mark_in_ms
=
hwm_in_ms
;
ffp
->
current_high_water_mark_in_ms
=
hwm_in_ms
;
if
(
is
->
buffer_indicator_queue
&&
is
->
buffer_indicator_queue
->
nb_packets
>
0
)
{
ffp_toggle_buffering
(
ffp
,
0
);
ffp_toggle_buffering
(
ffp
,
0
);
}
}
}
}
}
int
ffp_video_thread
(
FFPlayer
*
ffp
)
int
ffp_video_thread
(
FFPlayer
*
ffp
)
...
...
ijkmedia/ijkplayer/ff_ffplay_def.h
浏览文件 @
74590fa5
...
@@ -104,6 +104,8 @@ typedef struct PacketQueue {
...
@@ -104,6 +104,8 @@ typedef struct PacketQueue {
MyAVPacketList
*
recycle_pkt
;
MyAVPacketList
*
recycle_pkt
;
int
recycle_count
;
int
recycle_count
;
int
alloc_count
;
int
alloc_count
;
int
is_buffer_indicator
;
}
PacketQueue
;
}
PacketQueue
;
// #define VIDEO_PICTURE_QUEUE_SIZE 3
// #define VIDEO_PICTURE_QUEUE_SIZE 3
...
@@ -322,6 +324,8 @@ typedef struct VideoState {
...
@@ -322,6 +324,8 @@ typedef struct VideoState {
int
dropping_frame
;
int
dropping_frame
;
int
is_video_high_fps
;
// above 30fps
int
is_video_high_fps
;
// above 30fps
int
is_video_high_res
;
// above 1080p
int
is_video_high_res
;
// above 1080p
PacketQueue
*
buffer_indicator_queue
;
}
VideoState
;
}
VideoState
;
/* options specified by the user */
/* options specified by the user */
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录