Commit 3dc18b87 authored by Laurent Aimar's avatar Laurent Aimar

Reworked the way the vout select the pictures to be displayed.

It allows to:
 - properly support filters that do not have 1:1 input/output relation
 (yadif2x, bob, ... are back).
 - filter only once each picture (for the 'static' filter chain). It
 fixes filters with state behavior.
 - display as soon as possible the first frame after a flush.

There are still a few issues:
 - when paused, on filter changes, the picture displayed step forward the
 first time.
 - preventive frame dropping is not enough agressive.
parent 0441cf8f
This diff is collapsed.
...@@ -48,12 +48,6 @@ ...@@ -48,12 +48,6 @@
*/ */
#define VOUT_MAX_PICTURES (20) #define VOUT_MAX_PICTURES (20)
/**
* Number of frames used to estimate the maximum filter chain latency.
* For performance, it is best to use a power of 2
*/
#define VOUT_FILTER_DELAYS (8)
/* */ /* */
struct vout_thread_sys_t struct vout_thread_sys_t
{ {
...@@ -107,6 +101,8 @@ struct vout_thread_sys_t ...@@ -107,6 +101,8 @@ struct vout_thread_sys_t
int qtype; int qtype;
bool is_interlaced; bool is_interlaced;
picture_t *decoded; picture_t *decoded;
picture_t *current;
picture_t *next;
} displayed; } displayed;
struct { struct {
...@@ -134,8 +130,6 @@ struct vout_thread_sys_t ...@@ -134,8 +130,6 @@ struct vout_thread_sys_t
vlc_mutex_t lock; vlc_mutex_t lock;
filter_chain_t *chain_static; filter_chain_t *chain_static;
filter_chain_t *chain_interactive; filter_chain_t *chain_interactive;
unsigned delay_index;
mtime_t delay[VOUT_FILTER_DELAYS];
} filter; } filter;
/* */ /* */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment