ffmpeg: Clear fifo pointer on deallocation
[ffmpeg.git] / ffserver_config.h
index 4e1e0e0..48d38dc 100644 (file)
@@ -21,6 +21,8 @@
 #ifndef FFSERVER_CONFIG_H
 #define FFSERVER_CONFIG_H
 
 #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"
 #include "libavutil/dict.h"
 #include "libavformat/avformat.h"
 #include "libavformat/network.h"
@@ -47,6 +49,24 @@ typedef struct FFServerIPAddressACL {
     struct in_addr last;
 } FFServerIPAddressACL;
 
     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;
 /* description of each stream of the ffserver.conf file */
 typedef struct FFServerStream {
     enum FFServerStreamType stream_type;
@@ -62,7 +82,7 @@ typedef struct FFServerStream {
     int prebuffer;                /* Number of milliseconds early to start */
     int64_t max_time;             /* Number of milliseconds to run */
     int send_on_key;
     int prebuffer;                /* Number of milliseconds early to start */
     int64_t max_time;             /* Number of milliseconds to run */
     int send_on_key;
-    AVStream *streams[FFSERVER_MAX_STREAMS];
+    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 */
     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 */
@@ -79,6 +99,7 @@ typedef struct FFServerStream {
     int multicast_port;           /* first port used for multicast */
     int multicast_ttl;
     int loop;                     /* if true, send the stream in loops (only meaningful if file) */
     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 */
 
     /* feed specific */
     int feed_opened;              /* true if someone is writing to the feed */
@@ -101,6 +122,7 @@ typedef struct FFServerConfig {
     unsigned int nb_max_connections;
     uint64_t max_bandwidth;
     int debug;
     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;
     char logfilename[1024];
     struct sockaddr_in http_addr;
     struct sockaddr_in rtsp_addr;
@@ -128,4 +150,6 @@ void ffserver_parse_acl_row(FFServerStream *stream, FFServerStream* feed,
 
 int ffserver_parse_ffconfig(const char *filename, FFServerConfig *config);
 
 
 int ffserver_parse_ffconfig(const char *filename, FFServerConfig *config);
 
+void ffserver_free_child_args(void *argsp);
+
 #endif /* FFSERVER_CONFIG_H */
 #endif /* FFSERVER_CONFIG_H */