mirror of
https://anongit.gentoo.org/git/repo/gentoo.git
synced 2025-06-14 00:52:35 +02:00
Closes: https://bugs.gentoo.org/913229 Closes: https://bugs.gentoo.org/919717 Closes: https://bugs.gentoo.org/926819 Closes: https://bugs.gentoo.org/934641 Closes: https://bugs.gentoo.org/940227 Closes: https://bugs.gentoo.org/951221 Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
71 lines
2 KiB
Diff
71 lines
2 KiB
Diff
https://bugs.gentoo.org/951221
|
|
https://github.com/gpac/gpac/commit/18863aa2176e423dae2a6d7e39ff6ed6a37b2b78
|
|
--- a/src/filters/ff_dmx.c
|
|
+++ b/src/filters/ff_dmx.c
|
|
@@ -2202,5 +2202,4 @@
|
|
{
|
|
const AVInputFormat *fmt;
|
|
- AVFormatContext *ctx;
|
|
|
|
if (!dev_name) return;
|
|
@@ -2211,33 +2210,13 @@
|
|
return;
|
|
}
|
|
- ctx = avformat_alloc_context();
|
|
- if (!ctx) return;
|
|
- ctx->iformat = (AVInputFormat *)fmt;
|
|
- if (ctx->iformat->priv_data_size > 0) {
|
|
- ctx->priv_data = av_mallocz(ctx->iformat->priv_data_size);
|
|
- if (!ctx->priv_data) {
|
|
- avformat_free_context(ctx);
|
|
- return;
|
|
- }
|
|
- if (ctx->iformat->priv_class) {
|
|
- *(const AVClass**)ctx->priv_data = ctx->iformat->priv_class;
|
|
- av_opt_set_defaults(ctx->priv_data);
|
|
- }
|
|
- } else {
|
|
- ctx->priv_data = NULL;
|
|
- }
|
|
|
|
AVDeviceInfoList *dev_list = NULL;
|
|
-
|
|
- AVDictionary *tmp = NULL;
|
|
- av_dict_set(&tmp, "list_devices", "1", 0);
|
|
- av_opt_set_dict2(ctx, &tmp, AV_OPT_SEARCH_CHILDREN);
|
|
- if (tmp)
|
|
- av_dict_free(&tmp);
|
|
-
|
|
- int res = avdevice_list_devices(ctx, &dev_list);
|
|
+ int res = avdevice_list_input_sources(fmt, dev_name, NULL, &dev_list);
|
|
if (res<0) {
|
|
//device doesn't implement avdevice_list_devices, try loading the context using "list_devices=1" option
|
|
if (-res == ENOSYS) {
|
|
+ AVFormatContext *ctx = avformat_alloc_context();
|
|
+ if (!ctx) return;
|
|
+
|
|
AVDictionary *opts = NULL;
|
|
av_dict_set(&opts, "list_devices", "1", 0);
|
|
@@ -2245,6 +2224,15 @@
|
|
if (opts)
|
|
av_dict_free(&opts);
|
|
+
|
|
+#if !defined(__DARWIN__) && !defined(__APPLE__)
|
|
+ // FIXME: no-op, permission issues on macOS Sonoma+
|
|
+ if (res>=0) avdevice_list_devices(ctx, &dev_list);
|
|
+#endif
|
|
+
|
|
+ if (res>=0) avformat_close_input(&ctx);
|
|
+ avformat_free_context(ctx);
|
|
}
|
|
- } else if (!res && dev_list->nb_devices) {
|
|
+ }
|
|
+ if (!res && dev_list && dev_list->nb_devices) {
|
|
if (!dev_desc) {
|
|
gf_dynstrcat(&dev_desc, "# Detected devices\n", NULL);
|
|
@@ -2263,5 +2251,4 @@
|
|
|
|
if (dev_list) avdevice_free_list_devices(&dev_list);
|
|
- avformat_free_context(ctx);
|
|
}
|
|
|