Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
NotesChapter
ijkplayer
提交
844f948c
I
ijkplayer
项目概览
NotesChapter
/
ijkplayer
与 Fork 源项目一致
从无法访问的项目Fork
通知
5
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,体验更适合开发者的 AI 搜索 >>
提交
844f948c
编写于
1月 31, 2018
作者:
R
raymondzheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ijkplayer: add FFP_MSG_AUDIO_SEEK_RENDERING_START && FFP_MSG_AUDIO_SEEK_RENDERING_START
上级
f721a60e
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
41 addition
and
16 deletion
+41
-16
ijkmedia/ijkplayer/android/ijkplayer_android_def.h
ijkmedia/ijkplayer/android/ijkplayer_android_def.h
+2
-0
ijkmedia/ijkplayer/ff_ffmsg.h
ijkmedia/ijkplayer/ff_ffmsg.h
+2
-0
ijkmedia/ijkplayer/ff_ffplay.c
ijkmedia/ijkplayer/ff_ffplay.c
+35
-15
ijkmedia/ijkplayer/ff_ffplay_def.h
ijkmedia/ijkplayer/ff_ffplay_def.h
+2
-1
未找到文件。
ijkmedia/ijkplayer/android/ijkplayer_android_def.h
浏览文件 @
844f948c
...
...
@@ -139,6 +139,8 @@ enum media_info_type {
MEDIA_INFO_OPEN_INPUT
=
10005
,
MEDIA_INFO_FIND_STREAM_INFO
=
10006
,
MEDIA_INFO_COMPONENT_OPEN
=
10007
,
MEDIA_INFO_VIDEO_SEEK_RENDERING_START
=
10008
,
MEDIA_INFO_AUDIO_SEEK_RENDERING_START
=
10009
,
MEDIA_INFO_MEDIA_ACCURATE_SEEK_COMPLETE
=
10100
,
};
...
...
ijkmedia/ijkplayer/ff_ffmsg.h
浏览文件 @
844f948c
...
...
@@ -39,6 +39,8 @@
#define FFP_MSG_OPEN_INPUT 407
#define FFP_MSG_FIND_STREAM_INFO 408
#define FFP_MSG_COMPONENT_OPEN 409
#define FFP_MSG_VIDEO_SEEK_RENDERING_START 410
#define FFP_MSG_AUDIO_SEEK_RENDERING_START 411
#define FFP_MSG_BUFFERING_START 500
#define FFP_MSG_BUFFERING_END 501
...
...
ijkmedia/ijkplayer/ff_ffplay.c
浏览文件 @
844f948c
...
...
@@ -877,10 +877,6 @@ static void video_image_display2(FFPlayer *ffp)
vp
=
frame_queue_peek_last
(
&
is
->
pictq
);
int
latest_seek_load_serial
=
__atomic_exchange_n
(
&
(
is
->
latest_seek_load_serial
),
-
1
,
memory_order_seq_cst
);
if
(
latest_seek_load_serial
==
vp
->
serial
)
ffp
->
stat
.
latest_seek_load_duration
=
(
av_gettime
()
-
is
->
latest_seek_load_start_at
)
/
1000
;
if
(
vp
->
bmp
)
{
if
(
is
->
subtitle_st
)
{
if
(
frame_queue_nb_remaining
(
&
is
->
subpq
)
>
0
)
{
...
...
@@ -918,6 +914,18 @@ static void video_image_display2(FFPlayer *ffp)
ffp
->
first_video_frame_rendered
=
1
;
ffp_notify_msg1
(
ffp
,
FFP_MSG_VIDEO_RENDERING_START
);
}
if
(
is
->
latest_video_seek_load_serial
==
vp
->
serial
)
{
int
latest_video_seek_load_serial
=
__atomic_exchange_n
(
&
(
is
->
latest_video_seek_load_serial
),
-
1
,
memory_order_seq_cst
);
if
(
latest_video_seek_load_serial
==
vp
->
serial
)
{
ffp
->
stat
.
latest_seek_load_duration
=
(
av_gettime
()
-
is
->
latest_seek_load_start_at
)
/
1000
;
if
(
ffp
->
av_sync_type
==
AV_SYNC_VIDEO_MASTER
)
{
ffp_notify_msg2
(
ffp
,
FFP_MSG_VIDEO_SEEK_RENDERING_START
,
1
);
}
else
{
ffp_notify_msg2
(
ffp
,
FFP_MSG_VIDEO_SEEK_RENDERING_START
,
0
);
}
}
}
}
}
...
...
@@ -2616,16 +2624,6 @@ reload:
is
->
auddec
.
first_frame_decoded_time
=
SDL_GetTickHR
();
is
->
auddec
.
first_frame_decoded
=
1
;
}
if
(
!
ffp
->
first_audio_frame_rendered
)
{
ffp
->
first_audio_frame_rendered
=
1
;
ffp_notify_msg1
(
ffp
,
FFP_MSG_AUDIO_RENDERING_START
);
}
if
(
ffp
->
render_wait_start
&&
!
ffp
->
start_on_prepared
&&
is
->
pause_req
)
{
while
(
is
->
pause_req
&&
!
is
->
abort_request
)
{
SDL_Delay
(
20
);
}
}
return
resampled_data_size
;
}
...
...
@@ -2699,6 +2697,27 @@ static void sdl_audio_callback(void *opaque, Uint8 *stream, int len)
set_clock_at
(
&
is
->
audclk
,
is
->
audio_clock
-
(
double
)(
is
->
audio_write_buf_size
)
/
is
->
audio_tgt
.
bytes_per_sec
-
SDL_AoutGetLatencySeconds
(
ffp
->
aout
),
is
->
audio_clock_serial
,
ffp
->
audio_callback_time
/
1000000
.
0
);
sync_clock_to_slave
(
&
is
->
extclk
,
&
is
->
audclk
);
}
if
(
!
ffp
->
first_audio_frame_rendered
)
{
ffp
->
first_audio_frame_rendered
=
1
;
ffp_notify_msg1
(
ffp
,
FFP_MSG_AUDIO_RENDERING_START
);
}
if
(
is
->
latest_audio_seek_load_serial
==
is
->
audio_clock_serial
)
{
int
latest_audio_seek_load_serial
=
__atomic_exchange_n
(
&
(
is
->
latest_audio_seek_load_serial
),
-
1
,
memory_order_seq_cst
);
if
(
latest_audio_seek_load_serial
==
is
->
audio_clock_serial
)
{
if
(
ffp
->
av_sync_type
==
AV_SYNC_AUDIO_MASTER
)
{
ffp_notify_msg2
(
ffp
,
FFP_MSG_AUDIO_SEEK_RENDERING_START
,
1
);
}
else
{
ffp_notify_msg2
(
ffp
,
FFP_MSG_AUDIO_SEEK_RENDERING_START
,
0
);
}
}
}
if
(
ffp
->
render_wait_start
&&
!
ffp
->
start_on_prepared
&&
is
->
pause_req
)
{
while
(
is
->
pause_req
&&
!
is
->
abort_request
)
{
SDL_Delay
(
20
);
}
}
}
static
int
audio_open
(
FFPlayer
*
opaque
,
int64_t
wanted_channel_layout
,
int
wanted_nb_channels
,
int
wanted_sample_rate
,
struct
AudioParams
*
audio_hw_params
)
...
...
@@ -3383,7 +3402,8 @@ static int read_thread(void *arg)
set_clock
(
&
is
->
extclk
,
seek_target
/
(
double
)
AV_TIME_BASE
,
0
);
}
is
->
latest_seek_load_serial
=
is
->
videoq
.
serial
;
is
->
latest_video_seek_load_serial
=
is
->
videoq
.
serial
;
is
->
latest_audio_seek_load_serial
=
is
->
audioq
.
serial
;
is
->
latest_seek_load_start_at
=
av_gettime
();
}
ffp
->
dcc
.
current_high_water_mark_in_ms
=
ffp
->
dcc
.
first_high_water_mark_in_ms
;
...
...
ijkmedia/ijkplayer/ff_ffplay_def.h
浏览文件 @
844f948c
...
...
@@ -402,7 +402,8 @@ typedef struct VideoState {
PacketQueue
*
buffer_indicator_queue
;
volatile
int
latest_seek_load_serial
;
volatile
int
latest_video_seek_load_serial
;
volatile
int
latest_audio_seek_load_serial
;
volatile
int64_t
latest_seek_load_start_at
;
int
drop_aframe_count
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录