|
|
|
@ -343,15 +343,19 @@ int ff_add_channel_layout(AVFilterChannelLayouts **l, uint64_t channel_layout) |
|
|
|
|
AVFilterFormats *ff_all_formats(enum AVMediaType type) |
|
|
|
|
{ |
|
|
|
|
AVFilterFormats *ret = NULL; |
|
|
|
|
int fmt; |
|
|
|
|
int num_formats = type == AVMEDIA_TYPE_VIDEO ? AV_PIX_FMT_NB : |
|
|
|
|
type == AVMEDIA_TYPE_AUDIO ? AV_SAMPLE_FMT_NB : 0; |
|
|
|
|
|
|
|
|
|
for (fmt = 0; fmt < num_formats; fmt++) { |
|
|
|
|
const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(fmt); |
|
|
|
|
if ((type != AVMEDIA_TYPE_VIDEO) || |
|
|
|
|
(type == AVMEDIA_TYPE_VIDEO && !(desc->flags & AV_PIX_FMT_FLAG_HWACCEL))) |
|
|
|
|
if (type == AVMEDIA_TYPE_VIDEO) { |
|
|
|
|
const AVPixFmtDescriptor *desc = NULL; |
|
|
|
|
while ((desc = av_pix_fmt_desc_next(desc))) { |
|
|
|
|
if (!(desc->flags & AV_PIX_FMT_FLAG_HWACCEL)) |
|
|
|
|
ff_add_format(&ret, av_pix_fmt_desc_get_id(desc)); |
|
|
|
|
} |
|
|
|
|
} else if (type == AVMEDIA_TYPE_AUDIO) { |
|
|
|
|
enum AVSampleFormat fmt = 0; |
|
|
|
|
while (av_get_sample_fmt_name(fmt)) { |
|
|
|
|
ff_add_format(&ret, fmt); |
|
|
|
|
fmt++; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return ret; |
|
|
|
|