1 /*****************************************************************************
2 * rtp.h: rtp stream output module header
3 *****************************************************************************
4 * Copyright (C) 2003-2007 the VideoLAN team
5 * $Id: rtp.c 21407 2007-08-22 20:10:41Z courmisch $
7 * Authors: Laurent Aimar <fenrir@via.ecp.fr>
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
20 * You should have received a copy of the GNU General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
23 *****************************************************************************/
25 typedef struct rtsp_client_t rtsp_client_t;
27 int RtspSetup( sout_stream_t *p_stream, const vlc_url_t *url );
28 int RtspSetupId( sout_stream_t *p_stream, sout_stream_id_t *id );
29 void RtspUnsetup( sout_stream_t *p_stream );
31 char *SDPGenerate( const sout_stream_t *p_stream,
32 const char *psz_destination, vlc_bool_t b_rtsp );
34 int rtp_add_sink( sout_stream_id_t *id, sout_access_out_t *access );
35 void rtp_del_sink( sout_stream_id_t *id, sout_access_out_t *access );
37 typedef int (*pf_rtp_packetizer_t)( sout_stream_t *, sout_stream_id_t *,
40 struct sout_stream_id_t
42 sout_stream_t *p_stream;
44 uint8_t i_payload_type;
46 uint32_t i_timestamp_start;
53 char *psz_destination;
58 /* Packetizer specific fields */
59 pf_rtp_packetizer_t pf_packetize;
62 /* for sending the packets */
63 sout_access_out_t *p_access;
65 vlc_mutex_t lock_rtsp;
67 sout_access_out_t **rtsp_access;
70 sout_input_t *p_input;
72 /* RTSP url control */
73 httpd_url_t *p_rtsp_url;
76 struct sout_stream_sys_t
84 char *psz_session_name;
85 char *psz_session_description;
86 char *psz_session_url;
87 char *psz_session_email;
90 vlc_bool_t b_export_sdp_file;
93 vlc_bool_t b_export_sap;
94 session_descriptor_t *p_session;
96 httpd_host_t *p_httpd_host;
97 httpd_file_t *p_httpd_file;
99 httpd_host_t *p_rtsp_host;
100 httpd_url_t *p_rtsp_url;
101 char *psz_rtsp_control;
105 char *psz_destination;
112 /* when need to use a private one or when using muxer */
115 /* in case we do TS/PS over rtp */
117 sout_access_out_t *p_access;
119 sout_access_out_t *p_grab;
121 uint32_t i_timestamp_start;
128 sout_stream_id_t **es;
132 rtsp_client_t **rtsp;