From ce1d77a5e7cebce11074bf6f9e38ad6da37338ff Mon Sep 17 00:00:00 2001 From: Felix Matouschek Date: Wed, 14 Mar 2018 13:14:07 +0100 Subject: [PATCH] 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 Signed-off-by: Timo Rothenpieler --- 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; }