155 lines · 5.7 KB · C
RawDownload
/* * Copyright (c) 2000, 2001, 2002 Fabrice Bellard * * This file is part of FFmpeg. * * FFmpeg is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * FFmpeg is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with FFmpeg; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef FFSERVER_CONFIG_H#define FFSERVER_CONFIG_H #define FFM_PACKET_SIZE 4096 #include "libavutil/dict.h"#include "libavformat/avformat.h"#include "libavformat/network.h" #define FFSERVER_MAX_STREAMS 20 /* each generated stream is described here */enum FFServerStreamType {    STREAM_TYPE_LIVE,    STREAM_TYPE_STATUS,    STREAM_TYPE_REDIRECT,}; enum FFServerIPAddressAction {    IP_ALLOW = 1,    IP_DENY,}; typedef struct FFServerIPAddressACL {    struct FFServerIPAddressACL *next;    enum FFServerIPAddressAction action;    /* These are in host order */    struct in_addr first;    struct in_addr last;} FFServerIPAddressACL; /** * This holds the stream parameters for an AVStream, it cannot be a AVStream * because AVStreams cannot be instanciated without a AVFormatContext, especially * not outside libavformat. * * The fields of this struct have the same semantics as the fields of an AVStream. */typedef struct LayeredAVStream {    int index;    int id;    AVCodecParameters *codecpar;    AVCodecContext *codec;    AVRational time_base;    int pts_wrap_bits;    AVRational sample_aspect_ratio;    char *recommended_encoder_configuration;} LayeredAVStream; /* description of each stream of the ffserver.conf file */typedef struct FFServerStream {    enum FFServerStreamType stream_type;    char filename[1024];          /* stream filename */    struct FFServerStream *feed;  /* feed we are using (can be null if coming from file) */    AVDictionary *in_opts;        /* input parameters */    AVDictionary *metadata;       /* metadata to set on the stream */    AVInputFormat *ifmt;          /* if non NULL, force input format */    AVOutputFormat *fmt;    FFServerIPAddressACL *acl;    char dynamic_acl[1024];    int nb_streams;    int prebuffer;                /* Number of milliseconds early to start */    int64_t max_time;             /* Number of milliseconds to run */    int send_on_key;    LayeredAVStream *streams[FFSERVER_MAX_STREAMS];    int feed_streams[FFSERVER_MAX_STREAMS]; /* index of streams in the feed */    char feed_filename[1024];     /* file name of the feed storage, or                                     input file name for a stream */    pid_t pid;                    /* Of ffmpeg process */    time_t pid_start;             /* Of ffmpeg process */    char **child_argv;    struct FFServerStream *next;    unsigned bandwidth;           /* bandwidth, in kbits/s */    /* RTSP options */    char *rtsp_option;    /* multicast specific */    int is_multicast;    struct in_addr multicast_ip;    int multicast_port;           /* first port used for multicast */    int multicast_ttl;    int loop;                     /* if true, send the stream in loops (only meaningful if file) */    char single_frame;            /* only single frame */     /* feed specific */    int feed_opened;              /* true if someone is writing to the feed */    int is_feed;                  /* true if it is a feed */    int readonly;                 /* True if writing is prohibited to the file */    int truncate;                 /* True if feeder connection truncate the feed file */    int conns_served;    int64_t bytes_served;    int64_t feed_max_size;        /* maximum storage size, zero means unlimited */    int64_t feed_write_index;     /* current write position in feed (it wraps around) */    int64_t feed_size;            /* current size of feed */    struct FFServerStream *next_feed;} FFServerStream; typedef struct FFServerConfig {    char *filename;    FFServerStream *first_feed;   /* contains only feeds */    FFServerStream *first_stream; /* contains all streams, including feeds */    unsigned int nb_max_http_connections;    unsigned int nb_max_connections;    uint64_t max_bandwidth;    int debug;    int bitexact;    char logfilename[1024];    struct sockaddr_in http_addr;    struct sockaddr_in rtsp_addr;    int errors;    int warnings;    int use_defaults;    // Following variables MUST NOT be used outside configuration parsing code.    enum AVCodecID guessed_audio_codec_id;    enum AVCodecID guessed_video_codec_id;    AVDictionary *video_opts;     /* AVOptions for video encoder */    AVDictionary *audio_opts;     /* AVOptions for audio encoder */    AVCodecContext *dummy_actx;   /* Used internally to test audio AVOptions. */    AVCodecContext *dummy_vctx;   /* Used internally to test video AVOptions. */    int no_audio;    int no_video;    int line_num;    int stream_use_defaults;} FFServerConfig; void ffserver_get_arg(char *buf, int buf_size, const char **pp); void ffserver_parse_acl_row(FFServerStream *stream, FFServerStream* feed,                            FFServerIPAddressACL *ext_acl,                            const char *p, const char *filename, int line_num); int ffserver_parse_ffconfig(const char *filename, FFServerConfig *config); void ffserver_free_child_args(void *argsp); #endif /* FFSERVER_CONFIG_H */

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t