vout_internal.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #if defined(__PLUGIN__) || defined(__BUILTIN__) || !defined(__LIBVLC__)
00027 # error This header file can only be included from LibVLC.
00028 #endif
00029
00030 #ifndef _VOUT_INTERNAL_H
00031 #define _VOUT_INTERNAL_H 1
00032
00033 #include <vlc_picture_fifo.h>
00034 #include <vlc_picture_pool.h>
00035 #include <vlc_vout_display.h>
00036 #include <vlc_vout_wrapper.h>
00037 #include "vout_control.h"
00038 #include "control.h"
00039 #include "snapshot.h"
00040 #include "statistic.h"
00041 #include "chrono.h"
00042
00043
00044
00045
00046
00047
00048
00049 #define VOUT_MAX_PICTURES (20)
00050
00051
00052
00053
00054
00055 #define VOUT_FILTER_DELAYS (8)
00056
00057
00058 struct vout_thread_sys_t
00059 {
00060
00061 char *splitter_name;
00062
00063
00064 vlc_object_t *input;
00065
00066
00067 video_format_t original;
00068 unsigned dpb_size;
00069
00070
00071 vout_snapshot_t snapshot;
00072
00073
00074 vout_statistic_t statistic;
00075
00076
00077 vlc_mutex_t spu_lock;
00078 spu_t *p_spu;
00079
00080
00081 unsigned int i_par_num;
00082 unsigned int i_par_den;
00083
00084
00085 struct {
00086 bool is_unused;
00087 vout_window_cfg_t cfg;
00088 vout_window_t *object;
00089 } window;
00090
00091
00092 vlc_thread_t thread;
00093 bool dead;
00094 vout_control_t control;
00095
00096
00097 struct {
00098 char *title;
00099 vout_display_t *vd;
00100 bool use_dr;
00101 picture_t *filtered;
00102 } display;
00103
00104 struct {
00105 mtime_t date;
00106 mtime_t timestamp;
00107 int qtype;
00108 bool is_interlaced;
00109 picture_t *decoded;
00110 } displayed;
00111
00112 struct {
00113 mtime_t last;
00114 mtime_t timestamp;
00115 } step;
00116
00117 struct {
00118 bool is_on;
00119 mtime_t date;
00120 } pause;
00121
00122
00123 struct {
00124 bool show;
00125 mtime_t timeout;
00126 int position;
00127 } title;
00128
00129
00130 bool is_late_dropped;
00131
00132
00133 struct {
00134 vlc_mutex_t lock;
00135 filter_chain_t *chain;
00136 unsigned delay_index;
00137 mtime_t delay[VOUT_FILTER_DELAYS];
00138 } filter;
00139
00140
00141 vlc_mouse_t mouse;
00142
00143
00144 vlc_mutex_t picture_lock;
00145 picture_pool_t *private_pool;
00146 picture_pool_t *display_pool;
00147 picture_pool_t *decoder_pool;
00148 picture_fifo_t *decoder_fifo;
00149 bool is_decoder_pool_slow;
00150 vout_chrono_t render;
00151 };
00152
00153
00154 void vout_ControlChangeFullscreen(vout_thread_t *, bool fullscreen);
00155 void vout_ControlChangeOnTop(vout_thread_t *, bool is_on_top);
00156 void vout_ControlChangeDisplayFilled(vout_thread_t *, bool is_filled);
00157 void vout_ControlChangeZoom(vout_thread_t *, int num, int den);
00158 void vout_ControlChangeSampleAspectRatio(vout_thread_t *, unsigned num, unsigned den);
00159 void vout_ControlChangeCropRatio(vout_thread_t *, unsigned num, unsigned den);
00160 void vout_ControlChangeCropWindow(vout_thread_t *, int x, int y, int width, int height);
00161 void vout_ControlChangeCropBorder(vout_thread_t *, int left, int top, int right, int bottom);
00162 void vout_ControlChangeFilters(vout_thread_t *, const char *);
00163 void vout_ControlChangeSubFilters(vout_thread_t *, const char *);
00164 void vout_ControlChangeSubMargin(vout_thread_t *, int);
00165
00166
00167 void vout_IntfInit( vout_thread_t * );
00168
00169
00170 int vout_OpenWrapper (vout_thread_t *, const char *, const vout_display_state_t *);
00171 void vout_CloseWrapper(vout_thread_t *, vout_display_state_t *);
00172 int vout_InitWrapper(vout_thread_t *);
00173 void vout_EndWrapper(vout_thread_t *);
00174 void vout_ManageWrapper(vout_thread_t *);
00175 void vout_RenderWrapper(vout_thread_t *, picture_t *);
00176 void vout_DisplayWrapper(vout_thread_t *, picture_t *);
00177
00178
00179 int spu_ProcessMouse(spu_t *, const vlc_mouse_t *, const video_format_t *);
00180 void spu_Attach( spu_t *, vlc_object_t *input, bool );
00181 void spu_ChangeMargin(spu_t *, int);
00182
00183 #endif
00184