FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
ffserver_config.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2000, 2001, 2002 Fabrice Bellard
3  *
4  * This file is part of FFmpeg.
5  *
6  * FFmpeg is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * FFmpeg is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with FFmpeg; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19  */
20 
21 #ifndef FFSERVER_CONFIG_H
22 #define FFSERVER_CONFIG_H
23 
24 #include "libavutil/dict.h"
25 #include "libavformat/avformat.h"
26 #include "libavformat/network.h"
27 
28 #define FFSERVER_MAX_STREAMS 20
29 
30 /* each generated stream is described here */
35 };
36 
38  IP_ALLOW = 1,
40 };
41 
42 typedef struct FFServerIPAddressACL {
45  /* These are in host order */
46  struct in_addr first;
47  struct in_addr last;
49 
50 /* description of each stream of the ffserver.conf file */
51 typedef struct FFServerStream {
53  char filename[1024]; /* stream filename */
54  struct FFServerStream *feed; /* feed we are using (can be null if coming from file) */
55  AVDictionary *in_opts; /* input parameters */
56  AVDictionary *metadata; /* metadata to set on the stream */
57  AVInputFormat *ifmt; /* if non NULL, force input format */
60  char dynamic_acl[1024];
62  int prebuffer; /* Number of milliseconds early to start */
63  int64_t max_time; /* Number of milliseconds to run */
66  int feed_streams[FFSERVER_MAX_STREAMS]; /* index of streams in the feed */
67  char feed_filename[1024]; /* file name of the feed storage, or
68  input file name for a stream */
69  pid_t pid; /* Of ffmpeg process */
70  time_t pid_start; /* Of ffmpeg process */
71  char **child_argv;
73  unsigned bandwidth; /* bandwidth, in kbits/s */
74  /* RTSP options */
75  char *rtsp_option;
76  /* multicast specific */
78  struct in_addr multicast_ip;
79  int multicast_port; /* first port used for multicast */
81  int loop; /* if true, send the stream in loops (only meaningful if file) */
82 
83  /* feed specific */
84  int feed_opened; /* true if someone is writing to the feed */
85  int is_feed; /* true if it is a feed */
86  int readonly; /* True if writing is prohibited to the file */
87  int truncate; /* True if feeder connection truncate the feed file */
89  int64_t bytes_served;
90  int64_t feed_max_size; /* maximum storage size, zero means unlimited */
91  int64_t feed_write_index; /* current write position in feed (it wraps around) */
92  int64_t feed_size; /* current size of feed */
95 
96 typedef struct FFServerConfig {
97  char *filename;
98  FFServerStream *first_feed; /* contains only feeds */
99  FFServerStream *first_stream; /* contains all streams, including feeds */
101  unsigned int nb_max_connections;
102  uint64_t max_bandwidth;
103  int debug;
104  char logfilename[1024];
105  struct sockaddr_in http_addr;
106  struct sockaddr_in rtsp_addr;
107  int errors;
108  int warnings;
110  // Following variables MUST NOT be used outside configuration parsing code.
113  AVDictionary *video_opts; /* AVOptions for video encoder */
114  AVDictionary *audio_opts; /* AVOptions for audio encoder */
115  AVCodecContext *dummy_actx; /* Used internally to test audio AVOptions. */
116  AVCodecContext *dummy_vctx; /* Used internally to test video AVOptions. */
117  int no_audio;
118  int no_video;
119  int line_num;
122 
123 void ffserver_get_arg(char *buf, int buf_size, const char **pp);
124 
126  FFServerIPAddressACL *ext_acl,
127  const char *p, const char *filename, int line_num);
128 
129 int ffserver_parse_ffconfig(const char *filename, FFServerConfig *config);
130 
131 void ffserver_free_child_args(void *argsp);
132 
133 #endif /* FFSERVER_CONFIG_H */