---
configure| 27 ++--
libavdevice/alldevices.c | 172 +++
libavdevice/avdevice.c | 46 -
libavdevice/avdevice.h | 28
libavdevice/version.h| 4 ++
5 files changed, 184 insertions(+), 93 deletions(-)
diff --git a/configure b/configure
index 7b46e5c..79eb95a 100755
--- a/configure
+++ b/configure
@@ -569,6 +569,12 @@ add_suffix(){
for v; do echo ${v}${suffix}; done
}
+remove_suffix(){
+suffix=$1
+shift
+for v; do echo ${v%$suffix}; done
+}
+
set_all(){
value=$1
shift
@@ -3525,17 +3531,18 @@ find_things(){
sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p"
"$file"
}
-OUTDEV_LIST=$(find_things outdev OUTDEV libavdevice/alldevices.c)
-INDEV_LIST=$(find_thingsindev_IN libavdevice/alldevices.c)
FILTER_LIST=$(find_things filter FILTER libavfilter/allfilters.c)
find_things_extern(){
thing=$1
pattern=$2
file=$source_path/$3
-sed -n "s/^[^#]*extern.*$pattern *ff_\([^ ]*\)_$thing;/\1_$thing/p" "$file"
+out=${4:-$thing}
+sed -n "s/^[^#]*extern.*$pattern *ff_\([^ ]*\)_$thing;/\1_$out/p" "$file"
}
+OUTDEV_LIST=$(find_things_extern muxer AVOutputFormat libavdevice/alldevices.c
outdev)
+INDEV_LIST=$(find_things_extern demuxer AVInputFormat libavdevice/alldevices.c
indev)
MUXER_LIST=$(find_things_extern muxer AVOutputFormat libavformat/allformats.c)
DEMUXER_LIST=$(find_things_extern demuxer AVInputFormat
libavformat/allformats.c)
ENCODER_LIST=$(find_things_extern encoder AVCodec libavcodec/allcodecs.c)
@@ -7032,7 +7039,17 @@ print_enabled_components(){
shift 3
echo "static const $struct_name * const $name[] = {" > $TMPH
for c in $*; do
-enabled $c && printf "_%s,\n" $c >> $TMPH
+if enabled $c; then
+case $name in
+indev_list)
+c=$(add_suffix _demuxer $(remove_suffix _indev $c))
+;;
+outdev_list)
+c=$(add_suffix _muxer $(remove_suffix _outdev $c))
+;;
+esac
+printf "_%s,\n" $c >> $TMPH
+fi
done
echo "NULL };" >> $TMPH
cp_if_changed $TMPH $file
@@ -7041,6 +7058,8 @@ print_enabled_components(){
print_enabled_components libavcodec/codec_list.c AVCodec codec_list $CODEC_LIST
print_enabled_components libavcodec/parser_list.c AVCodecParser parser_list
$PARSER_LIST
print_enabled_components libavcodec/bsf_list.c AVBitStreamFilter
bitstream_filters $BSF_LIST
+print_enabled_components libavdevice/indev_list.c AVInputFormat indev_list
$INDEV_LIST
+print_enabled_components libavdevice/outdev_list.c AVOutputFormat outdev_list
$OUTDEV_LIST
print_enabled_components libavformat/demuxer_list.c AVInputFormat demuxer_list
$DEMUXER_LIST
print_enabled_components libavformat/muxer_list.c AVOutputFormat muxer_list
$MUXER_LIST
print_enabled_components libavformat/protocol_list.c URLProtocol url_protocols
$PROTOCOL_LIST
diff --git a/libavdevice/alldevices.c b/libavdevice/alldevices.c
index b767b6a..6b2a512 100644
--- a/libavdevice/alldevices.c
+++ b/libavdevice/alldevices.c
@@ -22,57 +22,143 @@
#include "libavutil/thread.h"
#include "avdevice.h"
-#define REGISTER_OUTDEV(X, x) \
-{ \
-extern AVOutputFormat ff_##x##_muxer; \
-if (CONFIG_##X##_OUTDEV)\
-av_register_output_format(_##x##_muxer); \
+/* devices */
+extern AVInputFormat ff_alsa_demuxer;
+extern AVOutputFormat ff_alsa_muxer;
+extern AVInputFormat ff_avfoundation_demuxer;
+extern AVInputFormat ff_bktr_demuxer;
+extern AVOutputFormat ff_caca_muxer;
+extern AVInputFormat ff_decklink_demuxer;
+extern AVOutputFormat ff_decklink_muxer;
+extern AVInputFormat ff_libndi_newtek_demuxer;
+extern AVOutputFormat ff_libndi_newtek_muxer;
+extern AVInputFormat ff_dshow_demuxer;
+extern AVInputFormat ff_fbdev_demuxer;
+extern AVOutputFormat ff_fbdev_muxer;
+extern AVInputFormat ff_gdigrab_demuxer;
+extern AVInputFormat ff_iec61883_demuxer;
+extern AVInputFormat ff_jack_demuxer;
+extern AVInputFormat ff_kmsgrab_demuxer;
+extern AVInputFormat ff_lavfi_demuxer;
+extern AVInputFormat ff_openal_demuxer;
+extern AVOutputFormat ff_opengl_muxer;
+extern AVInputFormat ff_oss_demuxer;
+extern AVOutputFormat ff_oss_muxer;
+extern AVInputFormat ff_pulse_demuxer;
+extern AVOutputFormat ff_pulse_muxer;
+extern AVOutputFormat ff_sdl2_muxer;
+extern AVInputFormat ff_sndio_demuxer;
+extern AVOutputFormat ff_sndio_muxer;
+extern AVInputFormat ff_v4l2_demuxer;
+extern AVOutputFormat ff_v4l2_muxer;
+extern AVInputFormat ff_vfwcap_demuxer;
+extern AVInputFormat ff_xcbgrab_demuxer;
+extern AVOutputFormat ff_xv_muxer;
+
+/* external libraries */
+extern