Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
b5e716ae
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,发现更多精彩内容 >>
提交
b5e716ae
编写于
7月 18, 2015
作者:
M
Michael Niedermayer
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
avformat/mpegtsenc: Add sdt_period, similar to pat_period
Signed-off-by:
N
Michael Niedermayer
<
michael@niedermayer.cc
>
上级
34da54fd
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
17 addition
and
1 deletion
+17
-1
doc/muxers.texi
doc/muxers.texi
+2
-0
libavformat/mpegtsenc.c
libavformat/mpegtsenc.c
+15
-1
未找到文件。
doc/muxers.texi
浏览文件 @
b5e716ae
...
...
@@ -761,6 +761,8 @@ Override the default PCR retransmission time (default 20ms), ignored
if variable muxrate is selected.
@item pat_period @var{number}
Maximal time in seconds between PAT/PMT tables.
@item sdt_period @var{number}
Maximal time in seconds between SDT tables.
@item -pes_payload_size @var{number}
Set minimum PES packet payload in bytes.
@item -mpegts_flags @var{flags}
...
...
libavformat/mpegtsenc.c
浏览文件 @
b5e716ae
...
...
@@ -103,7 +103,9 @@ typedef struct MpegTSWrite {
int
copyts
;
int
tables_version
;
float
pat_period
;
float
sdt_period
;
int64_t
last_pat_ts
;
int64_t
last_sdt_ts
;
int
omit_video_pes_length
;
}
MpegTSWrite
;
...
...
@@ -787,10 +789,14 @@ static int mpegts_write_header(AVFormatContext *s)
}
ts
->
last_pat_ts
=
AV_NOPTS_VALUE
;
ts
->
last_sdt_ts
=
AV_NOPTS_VALUE
;
// The user specified a period, use only it
if
(
ts
->
pat_period
<
INT_MAX
/
2
)
{
ts
->
pat_packet_period
=
INT_MAX
;
}
if
(
ts
->
sdt_period
<
INT_MAX
/
2
)
{
ts
->
sdt_packet_period
=
INT_MAX
;
}
// output a PCR as soon as possible
service
->
pcr_packet_count
=
service
->
pcr_packet_period
;
...
...
@@ -847,8 +853,13 @@ static void retransmit_si_info(AVFormatContext *s, int force_pat, int64_t dts)
MpegTSWrite
*
ts
=
s
->
priv_data
;
int
i
;
if
(
++
ts
->
sdt_packet_count
==
ts
->
sdt_packet_period
)
{
if
(
++
ts
->
sdt_packet_count
==
ts
->
sdt_packet_period
||
(
dts
!=
AV_NOPTS_VALUE
&&
ts
->
last_sdt_ts
==
AV_NOPTS_VALUE
)
||
(
dts
!=
AV_NOPTS_VALUE
&&
dts
-
ts
->
last_sdt_ts
>=
ts
->
sdt_period
*
90000
.
0
)
)
{
ts
->
sdt_packet_count
=
0
;
if
(
dts
!=
AV_NOPTS_VALUE
)
ts
->
last_sdt_ts
=
FFMAX
(
dts
,
ts
->
last_sdt_ts
);
mpegts_write_sdt
(
s
);
}
if
(
++
ts
->
pat_packet_count
==
ts
->
pat_packet_period
||
...
...
@@ -1546,6 +1557,9 @@ static const AVOption options[] = {
{
"pat_period"
,
"PAT/PMT retransmission time limit in seconds"
,
offsetof
(
MpegTSWrite
,
pat_period
),
AV_OPT_TYPE_FLOAT
,
{
.
dbl
=
INT_MAX
},
0
,
INT_MAX
,
AV_OPT_FLAG_ENCODING_PARAM
},
{
"sdt_period"
,
"SDT retransmission time limit in seconds"
,
offsetof
(
MpegTSWrite
,
sdt_period
),
AV_OPT_TYPE_FLOAT
,
{
.
dbl
=
INT_MAX
},
0
,
INT_MAX
,
AV_OPT_FLAG_ENCODING_PARAM
},
{
NULL
},
};
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录