FFmpeg
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
Examples
File List
Globals
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 */
31
enum
FFServerStreamType
{
32
STREAM_TYPE_LIVE
,
33
STREAM_TYPE_STATUS
,
34
STREAM_TYPE_REDIRECT
,
35
};
36
37
enum
FFServerIPAddressAction
{
38
IP_ALLOW
= 1,
39
IP_DENY
,
40
};
41
42
typedef
struct
FFServerIPAddressACL
{
43
struct
FFServerIPAddressACL
*
next
;
44
enum
FFServerIPAddressAction
action
;
45
/* These are in host order */
46
struct
in_addr
first
;
47
struct
in_addr
last
;
48
}
FFServerIPAddressACL
;
49
50
/* description of each stream of the ffserver.conf file */
51
typedef
struct
FFServerStream
{
52
enum
FFServerStreamType
stream_type
;
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 */
58
AVOutputFormat
*
fmt
;
59
FFServerIPAddressACL
*
acl
;
60
char
dynamic_acl
[1024];
61
int
nb_streams
;
62
int
prebuffer
;
/* Number of milliseconds early to start */
63
int64_t
max_time
;
/* Number of milliseconds to run */
64
int
send_on_key
;
65
AVStream
*
streams
[
FFSERVER_MAX_STREAMS
];
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
;
72
struct
FFServerStream
*
next
;
73
unsigned
bandwidth
;
/* bandwidth, in kbits/s */
74
/* RTSP options */
75
char
*
rtsp_option
;
76
/* multicast specific */
77
int
is_multicast
;
78
struct
in_addr
multicast_ip
;
79
int
multicast_port
;
/* first port used for multicast */
80
int
multicast_ttl
;
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 */
88
int
conns_served
;
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 */
93
struct
FFServerStream
*
next_feed
;
94
}
FFServerStream
;
95
96
typedef
struct
FFServerConfig
{
97
char
*
filename
;
98
FFServerStream
*
first_feed
;
/* contains only feeds */
99
FFServerStream
*
first_stream
;
/* contains all streams, including feeds */
100
unsigned
int
nb_max_http_connections
;
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
;
109
int
use_defaults
;
110
// Following variables MUST NOT be used outside configuration parsing code.
111
enum
AVCodecID
guessed_audio_codec_id
;
112
enum
AVCodecID
guessed_video_codec_id
;
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
;
120
int
stream_use_defaults
;
121
}
FFServerConfig
;
122
123
void
ffserver_get_arg
(
char
*
buf
,
int
buf_size,
const
char
**pp);
124
125
void
ffserver_parse_acl_row
(
FFServerStream
*stream,
FFServerStream
* feed,
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 */
Generated on Sun Mar 8 2015 02:34:46 for FFmpeg by
1.8.2