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, vlc_url_t * );
29 int RtspCallbackId( httpd_callback_sys_t *, httpd_client_t *,
30 httpd_message_t *, httpd_message_t * );
32 void RtspClientDel( sout_stream_t *, rtsp_client_t * );
34 char *SDPGenerate( const sout_stream_t *p_stream,
35 const char *psz_destination, vlc_bool_t b_rtsp );
37 int rtp_add_sink( sout_stream_id_t *id, sout_access_out_t *access );
38 void rtp_del_sink( sout_stream_id_t *id, sout_access_out_t *access );
40 typedef int (*pf_rtp_packetizer_t)( sout_stream_t *, sout_stream_id_t *,
43 struct sout_stream_id_t
45 sout_stream_t *p_stream;
47 uint8_t i_payload_type;
49 uint32_t i_timestamp_start;
56 char *psz_destination;
61 /* Packetizer specific fields */
62 pf_rtp_packetizer_t pf_packetize;
65 /* for sending the packets */
66 sout_access_out_t *p_access;
68 vlc_mutex_t lock_rtsp;
70 sout_access_out_t **rtsp_access;
73 sout_input_t *p_input;
75 /* RTSP url control */
76 httpd_url_t *p_rtsp_url;
79 struct sout_stream_sys_t
87 char *psz_session_name;
88 char *psz_session_description;
89 char *psz_session_url;
90 char *psz_session_email;
93 vlc_bool_t b_export_sdp_file;
96 vlc_bool_t b_export_sap;
97 session_descriptor_t *p_session;
99 httpd_host_t *p_httpd_host;
100 httpd_file_t *p_httpd_file;
102 httpd_host_t *p_rtsp_host;
103 httpd_url_t *p_rtsp_url;
104 char *psz_rtsp_control;
108 char *psz_destination;
115 /* when need to use a private one or when using muxer */
118 /* in case we do TS/PS over rtp */
120 sout_access_out_t *p_access;
122 sout_access_out_t *p_grab;
124 uint32_t i_timestamp_start;
131 sout_stream_id_t **es;
135 rtsp_client_t **rtsp;