[FFmpeg-cvslog] lavd: fix iterating of input and output devices

Felix Matouschek git at videolan.org
Sun Mar 18 19:21:20 EET 2018


ffmpeg | branch: master | Felix Matouschek <felix at matouschek.org> | Wed Mar 14 13:14:07 2018 +0100| [ce1d77a5e7cebce11074bf6f9e38ad6da37338ff] | committer: Timo Rothenpieler

lavd: fix iterating of input and output devices

In the previous implementation the first input or output device
was skipped when device_next was called with prev = NULL

Signed-off-by: Felix Matouschek <felix at matouschek.org>
Signed-off-by: Timo Rothenpieler <timo at rothenpieler.org>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=ce1d77a5e7cebce11074bf6f9e38ad6da37338ff
---

 libavdevice/alldevices.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/libavdevice/alldevices.c b/libavdevice/alldevices.c
index 4c89649b97..39993354bc 100644
--- a/libavdevice/alldevices.c
+++ b/libavdevice/alldevices.c
@@ -126,16 +126,13 @@ static void *device_next(void *prev, int output,
 
     ff_thread_once(&av_device_next_init, av_device_init_next);
 
-    if (!prev && !(prev = (output ? (void*)outdev_list[0] : (void*)indev_list[0])))
-        return NULL;
-
     do {
         if (output) {
-            if (!(prev = ((AVOutputFormat *)prev)->next))
+            if (!(prev = prev ? ((AVOutputFormat *)prev)->next : (void*)outdev_list[0]))
                 break;
             pc = ((AVOutputFormat *)prev)->priv_class;
         } else {
-            if (!(prev = ((AVInputFormat *)prev)->next))
+            if (!(prev = prev ? ((AVInputFormat *)prev)->next : (void*)indev_list[0]))
                 break;
             pc = ((AVInputFormat *)prev)->priv_class;
         }



More information about the ffmpeg-cvslog mailing list