1
mirror of https://code.videolan.org/videolan/vlc synced 2024-10-03 01:31:53 +02:00
vlc/modules
Martin Storsjö bbf8c217d9 omxil: Use vlc_cond_timedwait when waiting for free input buffers
The structure of the decode functions are like this:

Decode() {
    if (got output buffer) {
        consume output buffer;
    }
    wait for input buffer;
    if (got input buffer) {
        fill input buffer and send to the codec;
    }
}

This makes the functions prone to deadlock, if all input buffers
have been consumed and won't be returned by the codec until we
consume some of the output buffers (and we don't get the output
buffers until we already are waiting for an input buffer).

By using a timeout in the wait for input buffers, we get out of the
deadlock and can consume an output buffer, allowing the codec to
proceed. By making the timeout relatively large, it won't trigger
during normal decoding, but gets us out of possible deadlocks
(noticed at startup with qualcomm audio decoders).

The alternative to timeouts would be to push dummy/sentinel buffers
into the fifo (as we already do at reconfiguration) each time we
receive an output buffer. This would add quite a bit of overhead
though, having to process (and skip) one item in the input buffer
fifo for each received output buffer.

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-02-12 11:53:34 +02:00
..
access fix regression from 3118035 2013-02-07 12:15:28 +01:00
access_output livehttp: follow draf on segment duration 2013-01-24 20:18:37 +02:00
altivec Remove empty *_DEPENDENCIES in makefiles 2012-09-06 16:55:32 +03:00
arm_neon Revert "arm_neon i420 -> rgb: Output pitch can be 64 bit aligned" 2013-01-03 17:46:17 +01:00
audio_filter Relicense Equalizer and Compressor audio filters to LGPL 2013-01-10 13:46:54 +01:00
audio_mixer volume: add direct support for S32N, FL64 and U8 2012-12-21 22:29:30 +02:00
audio_output audioqueue: fix buffer leak (close #8140) 2013-02-08 10:40:51 +01:00
codec omxil: Use vlc_cond_timedwait when waiting for free input buffers 2013-02-12 11:53:34 +02:00
control Gestures: use left button, by default 2013-02-07 19:55:12 +01:00
demux Remove trailing space line 2013-02-12 09:47:30 +01:00
gui skins2: don't default the first visible item to selected 2013-02-11 23:48:07 +01:00
lua Useless #includes 2013-01-31 19:32:56 +02:00
media_library Use "activity" instead of "item-current" variable 2012-11-26 21:26:56 +02:00
meta_engine taglib: ID3v2: save TrackTotal 2012-12-18 22:56:15 +01:00
misc gnutls: retry handshake if it returns a non-fatal error 2013-02-08 13:26:04 +01:00
mmx i420_rgb: separate mmx and sse2 asm code 2012-11-07 13:16:42 +02:00
mux TS: insert/flag PAT/PMT before keyframes if use-keyframes is set 2013-01-22 20:46:22 +02:00
notify Use "activity" instead of "item-current" variable 2012-11-26 21:26:56 +02:00
packetizer MpegVideo packetizer: fix frame rates 2013-01-31 23:00:14 +01:00
services_discovery modules/services_discovery/sap.c: avoid out-of-bounds write 2013-01-17 18:52:03 +02:00
sse2 LGPL 2012-11-13 16:25:56 +01:00
stream_filter Fix potential usage of an uninitialized pointer 2013-01-06 17:07:40 +01:00
stream_out transcode: use 1001 as framerate base 2013-02-08 15:22:30 +02:00
text_renderer quartztext: compilation fix 2013-01-31 18:59:54 +01:00
video_chroma YUVA 4:2:0:4 is not YUVA :) 2013-01-07 14:58:52 +01:00
video_filter osd_parser/osdmenu: remove dead plugins 2013-01-31 19:33:04 +02:00
video_output opengl: on manual unpacking use picture visible width for calculations, fixes some mov-samples 2013-02-12 11:18:13 +02:00
visualization visualization: fix output formats 2012-12-19 21:09:46 +02:00
.gitignore
common.am Move libvlccore and libcompat to LDFLAGS from LIBADD 2012-09-09 16:27:10 +03:00
genmf Remove empty *_DEPENDENCIES in makefiles 2012-09-06 16:55:32 +03:00
LIST osd_parser/osdmenu: remove dead plugins 2013-01-31 19:33:04 +02:00
list.sh
Makefile.am Remove vlc_memcpy 2012-07-03 18:06:46 +03:00