5 #include <vlc_common.h>
8 #include <vlc_filter.h>
10 #include <vlc_codec.h>
13 #define PICTURE_RING_SIZE 64
14 #define SUBPICTURE_RING_SIZE 20
16 #define MASTER_SYNC_MAX_DRIFT 100000
18 struct sout_stream_sys_t
22 sout_stream_id_t *id_video;
26 picture_t * pp_pics[PICTURE_RING_SIZE];
27 int i_first_pic, i_last_pic;
30 vlc_fourcc_t i_acodec; /* codec audio (0 if not transcode) */
33 config_chain_t *p_audio_cfg;
34 uint32_t i_sample_rate;
41 vlc_fourcc_t i_vcodec; /* codec video (0 if not transcode) */
43 config_chain_t *p_video_cfg;
47 unsigned int i_width, i_maxwidth;
48 unsigned int i_height, i_maxheight;
50 char *psz_deinterlace;
51 config_chain_t *p_deinterlace_cfg;
59 vlc_fourcc_t i_scodec; /* codec spu (0 if not transcode) */
62 config_chain_t *p_spu_cfg;
66 vlc_fourcc_t i_osdcodec; /* codec osd menu (0 if not transcode) */
68 config_chain_t *p_osd_cfg;
69 bool b_osd; /* true when osd es is registered */
73 mtime_t i_master_drift;
76 struct sout_stream_id_t
80 /* id of the out stream */
87 filter_chain_t *p_f_chain;
88 /* User specified filters */
89 filter_chain_t *p_uf_chain;
95 date_t interpolated_pts;
100 int transcode_osd_new( sout_stream_t *p_stream, sout_stream_id_t *id );
101 void transcode_osd_close( sout_stream_t *p_stream, sout_stream_id_t *id);
102 int transcode_osd_process( sout_stream_t *p_stream, sout_stream_id_t *id,
103 block_t *in, block_t **out );
104 bool transcode_osd_add ( sout_stream_t *, es_format_t *, sout_stream_id_t *);
108 int transcode_spu_new ( sout_stream_t *, sout_stream_id_t * );
109 void transcode_spu_close ( sout_stream_id_t * );
110 int transcode_spu_process( sout_stream_t *, sout_stream_id_t *,
111 block_t *, block_t ** );
112 bool transcode_spu_add ( sout_stream_t *, es_format_t *, sout_stream_id_t *);
116 int transcode_audio_new ( sout_stream_t *, sout_stream_id_t * );
117 void transcode_audio_close ( sout_stream_id_t * );
118 int transcode_audio_process( sout_stream_t *, sout_stream_id_t *,
119 block_t *, block_t ** );
120 bool transcode_audio_add ( sout_stream_t *, es_format_t *,
125 int transcode_video_new ( sout_stream_t *, sout_stream_id_t * );
126 void transcode_video_close ( sout_stream_t *, sout_stream_id_t * );
127 int transcode_video_process( sout_stream_t *, sout_stream_id_t *,
128 block_t *, block_t ** );
129 bool transcode_video_add ( sout_stream_t *, es_format_t *,