Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
563e1df5
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,体验更适合开发者的 AI 搜索 >>
提交
563e1df5
编写于
4月 16, 2020
作者:
N
Nicolas George
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
lavfi/formats: add ff_formats_pixdesc_filter().
上级
aef670cf
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
51 addition
and
0 deletion
+51
-0
libavfilter/formats.c
libavfilter/formats.c
+41
-0
libavfilter/formats.h
libavfilter/formats.h
+10
-0
未找到文件。
libavfilter/formats.c
浏览文件 @
563e1df5
...
...
@@ -373,6 +373,47 @@ const int64_t avfilter_all_channel_layouts[] = {
-
1
};
int
ff_formats_pixdesc_filter
(
AVFilterFormats
**
rfmts
,
unsigned
want
,
unsigned
rej
)
{
unsigned
nb_formats
,
fmt
,
flags
;
AVFilterFormats
*
formats
=
NULL
;
while
(
1
)
{
nb_formats
=
0
;
for
(
fmt
=
0
;;
fmt
++
)
{
const
AVPixFmtDescriptor
*
desc
=
av_pix_fmt_desc_get
(
fmt
);
if
(
!
desc
)
break
;
flags
=
desc
->
flags
;
if
(
!
(
desc
->
flags
&
AV_PIX_FMT_FLAG_HWACCEL
)
&&
!
(
desc
->
flags
&
AV_PIX_FMT_FLAG_PLANAR
)
&&
(
desc
->
log2_chroma_w
||
desc
->
log2_chroma_h
))
flags
|=
FF_PIX_FMT_FLAG_SW_FLAT_SUB
;
if
((
flags
&
(
want
|
rej
))
!=
want
)
continue
;
if
(
formats
)
formats
->
formats
[
nb_formats
]
=
fmt
;
nb_formats
++
;
}
if
(
formats
)
{
av_assert0
(
formats
->
nb_formats
==
nb_formats
);
*
rfmts
=
formats
;
return
0
;
}
formats
=
av_mallocz
(
sizeof
(
*
formats
));
if
(
!
formats
)
return
AVERROR
(
ENOMEM
);
formats
->
nb_formats
=
nb_formats
;
if
(
nb_formats
)
{
formats
->
formats
=
av_malloc_array
(
nb_formats
,
sizeof
(
*
formats
->
formats
));
if
(
!
formats
->
formats
)
{
av_freep
(
&
formats
);
return
AVERROR
(
ENOMEM
);
}
}
}
}
// AVFilterFormats *avfilter_make_all_channel_layouts(void)
// {
// return avfilter_make_format64_list(avfilter_all_channel_layouts);
...
...
libavfilter/formats.h
浏览文件 @
563e1df5
...
...
@@ -221,6 +221,16 @@ int ff_add_format(AVFilterFormats **avff, int64_t fmt);
av_warn_unused_result
AVFilterFormats
*
ff_all_formats
(
enum
AVMediaType
type
);
/**
* Construct a formats list containing all pixel formats with certain
* properties
*/
av_warn_unused_result
int
ff_formats_pixdesc_filter
(
AVFilterFormats
**
rfmts
,
unsigned
want
,
unsigned
rej
);
//* format is software, non-planar with sub-sampling
#define FF_PIX_FMT_FLAG_SW_FLAT_SUB (1 << 24)
/**
* Construct a formats list containing all planar sample formats.
*/
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录