Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
daa7a1d4
F
Ffmpeg
项目概览
小白菜888
/
Ffmpeg
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
Ffmpeg
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
daa7a1d4
编写于
10月 27, 2013
作者:
A
Anton Khirnov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
pthread_slice: rename ThreadContext -> SliceThreadContext
This should prevent confusion with frame threading.
上级
cc14ee03
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
9 addition
and
9 deletion
+9
-9
libavcodec/pthread_slice.c
libavcodec/pthread_slice.c
+9
-9
未找到文件。
libavcodec/pthread_slice.c
浏览文件 @
daa7a1d4
...
...
@@ -42,7 +42,7 @@
typedef
int
(
action_func
)(
AVCodecContext
*
c
,
void
*
arg
);
typedef
int
(
action_func2
)(
AVCodecContext
*
c
,
void
*
arg
,
int
jobnr
,
int
threadnr
);
typedef
struct
ThreadContext
{
typedef
struct
Slice
ThreadContext
{
pthread_t
*
workers
;
action_func
*
func
;
action_func2
*
func2
;
...
...
@@ -58,12 +58,12 @@ typedef struct ThreadContext {
unsigned
current_execute
;
int
current_job
;
int
done
;
}
ThreadContext
;
}
Slice
ThreadContext
;
static
void
*
attribute_align_arg
worker
(
void
*
v
)
{
AVCodecContext
*
avctx
=
v
;
ThreadContext
*
c
=
avctx
->
thread_opaque
;
Slice
ThreadContext
*
c
=
avctx
->
thread_opaque
;
unsigned
last_execute
=
0
;
int
our_job
=
c
->
job_count
;
int
thread_count
=
avctx
->
thread_count
;
...
...
@@ -98,7 +98,7 @@ static void* attribute_align_arg worker(void *v)
void
ff_slice_thread_free
(
AVCodecContext
*
avctx
)
{
ThreadContext
*
c
=
avctx
->
thread_opaque
;
Slice
ThreadContext
*
c
=
avctx
->
thread_opaque
;
int
i
;
pthread_mutex_lock
(
&
c
->
current_job_lock
);
...
...
@@ -116,7 +116,7 @@ void ff_slice_thread_free(AVCodecContext *avctx)
av_freep
(
&
avctx
->
thread_opaque
);
}
static
av_always_inline
void
thread_park_workers
(
ThreadContext
*
c
,
int
thread_count
)
static
av_always_inline
void
thread_park_workers
(
Slice
ThreadContext
*
c
,
int
thread_count
)
{
while
(
c
->
current_job
!=
thread_count
+
c
->
job_count
)
pthread_cond_wait
(
&
c
->
last_job_cond
,
&
c
->
current_job_lock
);
...
...
@@ -125,7 +125,7 @@ static av_always_inline void thread_park_workers(ThreadContext *c, int thread_co
static
int
thread_execute
(
AVCodecContext
*
avctx
,
action_func
*
func
,
void
*
arg
,
int
*
ret
,
int
job_count
,
int
job_size
)
{
ThreadContext
*
c
=
avctx
->
thread_opaque
;
SliceThreadContext
*
c
=
avctx
->
thread_opaque
;
int
dummy_ret
;
if
(
!
(
avctx
->
active_thread_type
&
FF_THREAD_SLICE
)
||
avctx
->
thread_count
<=
1
)
...
...
@@ -158,7 +158,7 @@ static int thread_execute(AVCodecContext *avctx, action_func* func, void *arg, i
static
int
thread_execute2
(
AVCodecContext
*
avctx
,
action_func2
*
func2
,
void
*
arg
,
int
*
ret
,
int
job_count
)
{
ThreadContext
*
c
=
avctx
->
thread_opaque
;
SliceThreadContext
*
c
=
avctx
->
thread_opaque
;
c
->
func2
=
func2
;
return
thread_execute
(
avctx
,
NULL
,
arg
,
ret
,
job_count
,
0
);
}
...
...
@@ -166,7 +166,7 @@ static int thread_execute2(AVCodecContext *avctx, action_func2* func2, void *arg
int
ff_slice_thread_init
(
AVCodecContext
*
avctx
)
{
int
i
;
ThreadContext
*
c
;
Slice
ThreadContext
*
c
;
int
thread_count
=
avctx
->
thread_count
;
#if HAVE_W32THREADS
...
...
@@ -188,7 +188,7 @@ int ff_slice_thread_init(AVCodecContext *avctx)
return
0
;
}
c
=
av_mallocz
(
sizeof
(
ThreadContext
));
c
=
av_mallocz
(
sizeof
(
Slice
ThreadContext
));
if
(
!
c
)
return
-
1
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录