Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
尘离序散
obs-studio
提交
17f8e3c5
O
obs-studio
项目概览
尘离序散
/
obs-studio
与 Fork 源项目一致
从无法访问的项目Fork
通知
30
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
obs-studio
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
17f8e3c5
编写于
3月 12, 2015
作者:
J
John Bradley
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
obs-ffmpeg: Add frame drop controls to the ffmpeg source UI
上级
3628d340
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
41 addition
and
0 deletion
+41
-0
plugins/obs-ffmpeg/data/locale/en-US.ini
plugins/obs-ffmpeg/data/locale/en-US.ini
+8
-0
plugins/obs-ffmpeg/obs-ffmpeg-source.c
plugins/obs-ffmpeg/obs-ffmpeg-source.c
+33
-0
未找到文件。
plugins/obs-ffmpeg/data/locale/en-US.ini
浏览文件 @
17f8e3c5
...
...
@@ -12,3 +12,11 @@ HardwareDecode="Use hardware decoding when available"
Advanced
=
"Advanced"
AudioBufferSize
=
"Audio Buffer Size (frames)"
VideoBufferSize
=
"Video Buffer Size (frames)"
FrameDropping
=
"Frame Dropping Level"
DiscardNone
=
"None"
DiscardDefault
=
"Default (Invalid Packets)"
DiscardNonRef
=
"Non-Reference Frames"
DiscardBiDir
=
"Bi-Directional Frames"
DiscardNonIntra
=
"Non-Intra Frames"
DiscardNonKey
=
"Non-Key Frames"
DiscardAll
=
"All Frames (Careful!)"
plugins/obs-ffmpeg/obs-ffmpeg-source.c
浏览文件 @
17f8e3c5
...
...
@@ -266,8 +266,10 @@ static bool is_advanced_modified(obs_properties_t *props,
bool
enabled
=
obs_data_get_bool
(
settings
,
"advanced"
);
obs_property_t
*
abuf
=
obs_properties_get
(
props
,
"audio_buffer_size"
);
obs_property_t
*
vbuf
=
obs_properties_get
(
props
,
"video_buffer_size"
);
obs_property_t
*
frame_drop
=
obs_properties_get
(
props
,
"frame_drop"
);
obs_property_set_visible
(
abuf
,
enabled
);
obs_property_set_visible
(
vbuf
,
enabled
);
obs_property_set_visible
(
frame_drop
,
enabled
);
return
true
;
}
...
...
@@ -317,6 +319,27 @@ static obs_properties_t *ffmpeg_source_getproperties(void *data)
obs_property_set_visible
(
prop
,
false
);
prop
=
obs_properties_add_list
(
props
,
"frame_drop"
,
obs_module_text
(
"FrameDropping"
),
OBS_COMBO_TYPE_LIST
,
OBS_COMBO_FORMAT_INT
);
obs_property_list_add_int
(
prop
,
obs_module_text
(
"DiscardNone"
),
AVDISCARD_NONE
);
obs_property_list_add_int
(
prop
,
obs_module_text
(
"DiscardDefault"
),
AVDISCARD_DEFAULT
);
obs_property_list_add_int
(
prop
,
obs_module_text
(
"DiscardNonRef"
),
AVDISCARD_NONREF
);
obs_property_list_add_int
(
prop
,
obs_module_text
(
"DiscardBiDir"
),
AVDISCARD_BIDIR
);
obs_property_list_add_int
(
prop
,
obs_module_text
(
"DiscardNonIntra"
),
AVDISCARD_NONINTRA
);
obs_property_list_add_int
(
prop
,
obs_module_text
(
"DiscardNonKey"
),
AVDISCARD_NONKEY
);
obs_property_list_add_int
(
prop
,
obs_module_text
(
"DiscardAll"
),
AVDISCARD_ALL
);
obs_property_set_visible
(
prop
,
false
);
return
props
;
}
...
...
@@ -357,6 +380,10 @@ static void ffmpeg_source_update(void *data, obs_data_t *settings)
"audio_buffer_size"
);
int
video_buffer_size
=
(
int
)
obs_data_get_int
(
settings
,
"video_buffer_size"
);
enum
AVDiscard
frame_drop
=
(
enum
AVDiscard
)
obs_data_get_int
(
settings
,
"frame_drop"
);
if
(
audio_buffer_size
<
1
)
{
audio_buffer_size
=
1
;
blog
(
LOG_WARNING
,
"invalid audio_buffer_size %d"
,
...
...
@@ -369,6 +396,12 @@ static void ffmpeg_source_update(void *data, obs_data_t *settings)
}
s
->
demuxer
->
options
.
audio_frame_queue_size
=
audio_buffer_size
;
s
->
demuxer
->
options
.
video_frame_queue_size
=
video_buffer_size
;
if
(
frame_drop
<
AVDISCARD_NONE
||
frame_drop
>
AVDISCARD_ALL
)
{
frame_drop
=
AVDISCARD_NONE
;
blog
(
LOG_WARNING
,
"invalid frame_drop %d"
,
frame_drop
);
}
s
->
demuxer
->
options
.
frame_drop
=
frame_drop
;
}
ff_demuxer_set_callbacks
(
&
s
->
demuxer
->
video_callbacks
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录