]> git.sesse.net Git - vlc/blob - modules/stream_out/rtp.h
Split RTP sout into multiple pieces.
[vlc] / modules / stream_out / rtp.h
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 $
6  *
7  * Authors: Laurent Aimar <fenrir@via.ecp.fr>
8  *          RĂ©mi Denis-Courmont
9  *
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.
14  *
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.
19  *
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  *****************************************************************************/
24
25 typedef struct rtsp_client_t rtsp_client_t;
26
27 int RtspSetup( sout_stream_t *p_stream, vlc_url_t * );
28
29 int RtspCallbackId( httpd_callback_sys_t *, httpd_client_t *,
30                     httpd_message_t *, httpd_message_t * );
31
32 void RtspClientDel( sout_stream_t *, rtsp_client_t * );
33
34 char *SDPGenerate( const sout_stream_t *p_stream,
35                    const char *psz_destination, vlc_bool_t b_rtsp );
36
37 typedef int (*pf_rtp_packetizer_t)( sout_stream_t *, sout_stream_id_t *,
38                                     block_t * );
39
40 struct sout_stream_id_t
41 {
42     sout_stream_t *p_stream;
43     /* rtp field */
44     uint8_t     i_payload_type;
45     uint16_t    i_sequence;
46     uint32_t    i_timestamp_start;
47     uint8_t     ssrc[4];
48
49     /* for sdp */
50     int         i_clock_rate;
51     char        *psz_rtpmap;
52     char        *psz_fmtp;
53     char        *psz_destination;
54     int         i_port;
55     int         i_cat;
56     int         i_bitrate;
57
58     /* Packetizer specific fields */
59     pf_rtp_packetizer_t pf_packetize;
60     int           i_mtu;
61
62     /* for sending the packets */
63     sout_access_out_t *p_access;
64
65     vlc_mutex_t       lock_rtsp;
66     int               i_rtsp_access;
67     sout_access_out_t **rtsp_access;
68
69     /* */
70     sout_input_t      *p_input;
71
72     /* RTSP url control */
73     httpd_url_t  *p_rtsp_url;
74 };