Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
acca2aec
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,发现更多精彩内容 >>
提交
acca2aec
编写于
6月 24, 2020
作者:
L
Limin Wang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
avcodec/h264_slice: use av_timecode_get_smpte()
Signed-off-by:
N
Limin Wang
<
lance.lmwang@gmail.com
>
上级
79723c2a
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
6 addition
and
27 deletion
+6
-27
libavcodec/h264_slice.c
libavcodec/h264_slice.c
+6
-27
未找到文件。
libavcodec/h264_slice.c
浏览文件 @
acca2aec
...
...
@@ -1304,7 +1304,6 @@ static int h264_export_frame_props(H264Context *h)
h
->
sei
.
unregistered
.
nb_buf_ref
=
0
;
if
(
h
->
sei
.
picture_timing
.
timecode_cnt
>
0
)
{
uint32_t
tc
=
0
;
uint32_t
*
tc_sd
;
AVFrameSideData
*
tcside
=
av_frame_new_side_data
(
cur
->
f
,
...
...
@@ -1317,33 +1316,13 @@ static int h264_export_frame_props(H264Context *h)
tc_sd
[
0
]
=
h
->
sei
.
picture_timing
.
timecode_cnt
;
for
(
int
i
=
0
;
i
<
tc_sd
[
0
];
i
++
)
{
uint32_t
frames
;
/* For SMPTE 12-M timecodes, frame count is a special case if > 30 FPS.
See SMPTE ST 12-1:2014 Sec 12.1 for more info. */
if
(
av_cmp_q
(
h
->
avctx
->
framerate
,
(
AVRational
)
{
30
,
1
})
==
1
)
{
frames
=
h
->
sei
.
picture_timing
.
timecode
[
i
].
frame
/
2
;
if
(
h
->
sei
.
picture_timing
.
timecode
[
i
].
frame
%
2
==
1
)
{
if
(
av_cmp_q
(
h
->
avctx
->
framerate
,
(
AVRational
)
{
50
,
1
})
==
0
)
tc
|=
(
1
<<
7
);
else
tc
|=
(
1
<<
23
);
}
}
else
{
frames
=
h
->
sei
.
picture_timing
.
timecode
[
i
].
frame
;
}
int
drop
=
h
->
sei
.
picture_timing
.
timecode
[
i
].
dropframe
;
int
hh
=
h
->
sei
.
picture_timing
.
timecode
[
i
].
hours
;
int
mm
=
h
->
sei
.
picture_timing
.
timecode
[
i
].
minutes
;
int
ss
=
h
->
sei
.
picture_timing
.
timecode
[
i
].
seconds
;
int
ff
=
h
->
sei
.
picture_timing
.
timecode
[
i
].
frame
;
tc
|=
h
->
sei
.
picture_timing
.
timecode
[
i
].
dropframe
<<
30
;
tc
|=
(
frames
/
10
)
<<
28
;
tc
|=
(
frames
%
10
)
<<
24
;
tc
|=
(
h
->
sei
.
picture_timing
.
timecode
[
i
].
seconds
/
10
)
<<
20
;
tc
|=
(
h
->
sei
.
picture_timing
.
timecode
[
i
].
seconds
%
10
)
<<
16
;
tc
|=
(
h
->
sei
.
picture_timing
.
timecode
[
i
].
minutes
/
10
)
<<
12
;
tc
|=
(
h
->
sei
.
picture_timing
.
timecode
[
i
].
minutes
%
10
)
<<
8
;
tc
|=
(
h
->
sei
.
picture_timing
.
timecode
[
i
].
hours
/
10
)
<<
4
;
tc
|=
(
h
->
sei
.
picture_timing
.
timecode
[
i
].
hours
%
10
);
tc_sd
[
i
+
1
]
=
tc
;
tc_sd
[
i
+
1
]
=
av_timecode_get_smpte
(
h
->
avctx
->
framerate
,
drop
,
hh
,
mm
,
ss
,
ff
);
}
h
->
sei
.
picture_timing
.
timecode_cnt
=
0
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录