Browse Source

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@matouschek.org>
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
tags/n4.0
Felix Matouschek Timo Rothenpieler 7 years ago
parent
commit
ce1d77a5e7
1 changed files with 2 additions and 5 deletions
  1. +2
    -5
      libavdevice/alldevices.c

+ 2
- 5
libavdevice/alldevices.c View File

@@ -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;
}


Loading…
Cancel
Save