ffmpeg
avplay
avprobe
-ffserver
+avserver
libavcodec/*_tablegen
libavcodec/*_tables.c
libavcodec/*_tables.h
version <next>:
- BWF muxer
- Flash Screen Video 2 decoder
-- ffplay/ffprobe renamed to avplay/avprobe
+- ffplay/ffprobe/ffserver renamed to avplay/avprobe/avserver
version 0.7:
PROGS-$(CONFIG_FFMPEG) += ffmpeg
PROGS-$(CONFIG_AVPLAY) += avplay
PROGS-$(CONFIG_AVPROBE) += avprobe
-PROGS-$(CONFIG_FFSERVER) += ffserver
+PROGS-$(CONFIG_AVSERVER) += avserver
PROGS := $(PROGS-yes:%=%$(EXESUF))
OBJS = $(PROGS-yes:%=%.o) cmdutils.o
TOOLS = qt-faststart trasher
TOOLS-$(CONFIG_ZLIB) += cws2fws
-BASENAMES = ffmpeg avplay avprobe ffserver
+BASENAMES = ffmpeg avplay avprobe avserver
ALLPROGS = $(BASENAMES:%=%$(EXESUF))
ALLMANPAGES = $(BASENAMES:%=%.1)
avplay.o: CFLAGS += $(SDL_CFLAGS)
avplay$(EXESUF): FF_EXTRALIBS += $(SDL_LIBS)
-ffserver$(EXESUF): LDFLAGS += $(FFSERVERLDFLAGS)
+avserver$(EXESUF): LDFLAGS += $(AVSERVERLDFLAGS)
$(PROGS): %$(EXESUF): %.o cmdutils.o $(FF_DEP_LIBS)
$(LD) $(LDFLAGS) -o $@ $< cmdutils.o $(FF_EXTRALIBS)
#include "cmdutils.h"
-const char program_name[] = "ffserver";
+const char program_name[] = "avserver";
const int program_birth_year = 2000;
static const OptionDef options[];
struct in_addr last;
} IPAddressACL;
-/* description of each stream of the ffserver.conf file */
+/* description of each stream of the avserver.conf file */
typedef struct FFStream {
enum StreamType stream_type;
char filename[1024]; /* stream filename */
static const char *my_program_name;
static const char *my_program_dir;
-static const char *config_filename = "/etc/ffserver.conf";
+static const char *config_filename = "/etc/avserver.conf";
-static int ffserver_debug;
-static int ffserver_daemon;
+static int avserver_debug;
+static int avserver_daemon;
static int no_launch;
static int need_to_start_children;
static FILE *logfile = NULL;
-/* FIXME: make ffserver work with IPv6 */
+/* FIXME: make avserver work with IPv6 */
/* resolve host with also IP address parsing */
static int resolve_host(struct in_addr *sin_addr, const char *hostname)
{
for (i = 3; i < 256; i++)
close(i);
- if (!ffserver_debug) {
+ if (!avserver_debug) {
i = open("/dev/null", O_RDWR);
if (i != -1) {
dup2(i, 0);
return -1;
}
- http_log("FFserver started.\n");
+ http_log("AVserver started.\n");
start_children(first_feed);
poll_entry->events = POLLOUT;
poll_entry++;
} else {
- /* when ffserver is doing the timing, we work by
+ /* when avserver is doing the timing, we work by
looking at which packet need to be sent every
10 ms */
delay1 = 10; /* one tick wait XXX: 10 ms assumed */
av_strlcpy(c->protocol, protocol, sizeof(c->protocol));
- if (ffserver_debug)
+ if (avserver_debug)
http_log("%s - - New connection: %s %s\n", inet_ntoa(c->from_addr.sin_addr), cmd, url);
/* find the filename and the optional info string in the request */
"Content-type: video/x-ms-asf\r\n"
"\r\n"
"<ASX Version=\"3\">\r\n"
- //"<!-- Autogenerated by ffserver -->\r\n"
+ //"<!-- Autogenerated by avserver -->\r\n"
"<ENTRY><REF HREF=\"http://%s/%s%s\"/></ENTRY>\r\n"
"</ASX>\r\n", hostbuf, filename, info);
break;
"HTTP/1.0 200 RAM Follows\r\n"
"Content-type: audio/x-pn-realaudio\r\n"
"\r\n"
- "# Autogenerated by ffserver\r\n"
+ "# Autogenerated by avserver\r\n"
"http://%s/%s%s\r\n", hostbuf, filename, info);
break;
case REDIR_ASF:
}
/********************************************************************/
-/* ffserver initialization */
+/* avserver initialization */
static AVStream *add_av_stream1(FFStream *stream, AVCodecContext *codec, int copy)
{
return;
}
- init_func = dlsym(dll, "ffserver_module_init");
+ init_func = dlsym(dll, "avserver_module_init");
if (!init_func) {
fprintf(stderr,
- "%s: init function 'ffserver_module_init()' not found\n",
+ "%s: init function 'avserver_module_init()' not found\n",
filename);
dlclose(dll);
}
}
#endif
-static int ffserver_opt_default(const char *opt, const char *arg,
+static int avserver_opt_default(const char *opt, const char *arg,
AVCodecContext *avctx, int type)
{
int ret = 0;
return ret;
}
-static int ffserver_opt_preset(const char *arg,
+static int avserver_opt_preset(const char *arg,
AVCodecContext *avctx, int type,
enum CodecID *audio_id, enum CodecID *video_id)
{
*video_id = opt_video_codec(tmp2);
}else if(!strcmp(tmp, "scodec")){
/* opt_subtitle_codec(tmp2); */
- }else if(ffserver_opt_default(tmp, tmp2, avctx, type) < 0){
+ }else if(avserver_opt_default(tmp, tmp2, avctx, type) < 0){
fprintf(stderr, "%s: Invalid option or argument: '%s', parsed as '%s' = '%s'\n", filename, line, tmp, tmp2);
ret = 1;
break;
return ret;
}
-static AVOutputFormat *ffserver_guess_format(const char *short_name, const char *filename,
+static AVOutputFormat *avserver_guess_format(const char *short_name, const char *filename,
const char *mime_type)
{
AVOutputFormat *fmt = av_guess_format(short_name, filename, mime_type);
ERROR("%s:%d: Invalid host/IP address: %s\n", arg);
}
} else if (!strcasecmp(cmd, "NoDaemon")) {
- ffserver_daemon = 0;
+ avserver_daemon = 0;
} else if (!strcasecmp(cmd, "RTSPPort")) {
get_arg(arg, sizeof(arg), &p);
val = atoi(arg);
} else
max_bandwidth = llval;
} else if (!strcasecmp(cmd, "CustomLog")) {
- if (!ffserver_debug)
+ if (!avserver_debug)
get_arg(logfilename, sizeof(logfilename), &p);
} else if (!strcasecmp(cmd, "<Feed")) {
/*********************************************/
}
}
- stream->fmt = ffserver_guess_format(NULL, stream->filename, NULL);
+ stream->fmt = avserver_guess_format(NULL, stream->filename, NULL);
avcodec_get_context_defaults2(&video_enc, AVMEDIA_TYPE_VIDEO);
avcodec_get_context_defaults2(&audio_enc, AVMEDIA_TYPE_AUDIO);
audio_id = CODEC_ID_NONE;
/* jpeg cannot be used here, so use single frame jpeg */
if (!strcmp(arg, "jpeg"))
strcpy(arg, "mjpeg");
- stream->fmt = ffserver_guess_format(arg, NULL, NULL);
+ stream->fmt = avserver_guess_format(arg, NULL, NULL);
if (!stream->fmt) {
ERROR("Unknown Format: %s\n", arg);
}
avctx = &audio_enc;
type = AV_OPT_FLAG_AUDIO_PARAM;
}
- if (ffserver_opt_default(arg, arg2, avctx, type|AV_OPT_FLAG_ENCODING_PARAM)) {
+ if (avserver_opt_default(arg, arg2, avctx, type|AV_OPT_FLAG_ENCODING_PARAM)) {
ERROR("AVOption error: %s %s\n", arg, arg2);
}
} else if (!strcasecmp(cmd, "AVPresetVideo") ||
audio_enc.codec_id = audio_id;
type = AV_OPT_FLAG_AUDIO_PARAM;
}
- if (ffserver_opt_preset(arg, avctx, type|AV_OPT_FLAG_ENCODING_PARAM, &audio_id, &video_id)) {
+ if (avserver_opt_preset(arg, avctx, type|AV_OPT_FLAG_ENCODING_PARAM, &audio_id, &video_id)) {
ERROR("AVPreset error: %s\n", arg);
}
} else if (!strcasecmp(cmd, "VideoTag")) {
static void opt_debug(void)
{
- ffserver_debug = 1;
- ffserver_daemon = 0;
+ avserver_debug = 1;
+ avserver_daemon = 0;
logfilename[0] = '-';
}
static void show_help(void)
{
- printf("usage: ffserver [options]\n"
+ printf("usage: avserver [options]\n"
"Hyper fast multi format Audio/Video streaming server\n");
printf("\n");
show_help_options(options, "Main options:\n", 0, 0);
#include "cmdutils_common_opts.h"
{ "n", OPT_BOOL, {(void *)&no_launch }, "enable no-launch mode" },
{ "d", 0, {(void*)opt_debug}, "enable debug mode" },
- { "f", HAS_ARG | OPT_STRING, {(void*)&config_filename }, "use configfile instead of /etc/ffserver.conf", "configfile" },
+ { "f", HAS_ARG | OPT_STRING, {(void*)&config_filename }, "use configfile instead of /etc/avserver.conf", "configfile" },
{ NULL },
};
my_program_name = argv[0];
my_program_dir = getcwd(0, 0);
- ffserver_daemon = 1;
+ avserver_daemon = 1;
parse_options(argc, argv, options, NULL);
compute_bandwidth();
/* put the process in background and detach it from its TTY */
- if (ffserver_daemon) {
+ if (avserver_daemon) {
int pid;
pid = fork();
/* signal init */
signal(SIGPIPE, SIG_IGN);
- if (ffserver_daemon)
+ if (avserver_daemon)
chdir("/");
if (http_server() < 0) {
--disable-ffmpeg disable ffmpeg build
--disable-avplay disable avplay build
--disable-avprobe disable avprobe build
- --disable-ffserver disable ffserver build
+ --disable-avserver disable avserver build
--disable-avdevice disable libavdevice build
--disable-avcodec disable libavcodec build
--disable-avformat disable libavformat build
ffmpeg
avplay
avprobe
- ffserver
+ avserver
fft
frei0r
golomb
avplay_deps="avcodec avformat swscale sdl"
avplay_select="rdft"
avprobe_deps="avcodec avformat"
-ffserver_deps="avformat ffm_muxer fork rtp_protocol rtsp_demuxer"
-ffserver_extralibs='$ldl'
+avserver_deps="avformat ffm_muxer fork rtp_protocol rtsp_demuxer"
+avserver_extralibs='$ldl'
doc_deps="texi2html"
enable ffmpeg
enable avplay
enable avprobe
-enable ffserver
+enable avserver
enable network
enable optimizations
enable postproc
# build settings
SHFLAGS='-shared -Wl,-soname,$$(@F)'
-FFSERVERLDFLAGS=-Wl,-E
+AVSERVERLDFLAGS=-Wl,-E
LIBPREF="lib"
LIBSUF=".a"
FULLNAME='$(NAME)$(BUILDSUF)'
host_libs=
;;
sunos)
- FFSERVERLDFLAGS=""
+ AVSERVERLDFLAGS=""
SHFLAGS='-shared -Wl,-h,$$(@F)'
enabled x86 && SHFLAGS="-mimpure-text $SHFLAGS"
network_extralibs="-lsocket -lnsl"
SLIBSUF=".dylib"
SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)'
- FFSERVERLDFLAGS=-Wl,-bind_at_load
+ AVSERVERLDFLAGS=-Wl,-bind_at_load
objformat="macho"
enabled x86_64 && objformat="macho64"
enabled_any pic shared ||
add_cppflags -D_GNU_SOURCE
add_ldflags -Zomf -Zbin-files -Zargs-wild -Zmap
SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
- FFSERVERLDFLAGS=""
+ AVSERVERLDFLAGS=""
LIBSUF="_s.a"
SLIBPREF=""
SLIBSUF=".dll"
CC_O=$CC_O
DLLTOOL=$dlltool
LDFLAGS=$LDFLAGS
-FFSERVERLDFLAGS=$FFSERVERLDFLAGS
+AVSERVERLDFLAGS=$AVSERVERLDFLAGS
SHFLAGS=$SHFLAGS
YASMFLAGS=$YASMFLAGS
BUILDSUF=$build_suffix
@settitle AVplay media player
@c man begin SEEALSO
-ffmpeg(1), avprobe(1), ffserver(1) and the Libav HTML documentation
+ffmpeg(1), avprobe(1), avserver(1) and the Libav HTML documentation
@c man end
@c man begin AUTHORS
@settitle avprobe media prober
@c man begin SEEALSO
-ffmpeg(1), avplay(1), ffserver(1) and the Libav HTML documentation
+ffmpeg(1), avplay(1), avserver(1) and the Libav HTML documentation
@c man end
@c man begin AUTHORS
# MaxClients maximum limit.
MaxHTTPConnections 2000
-# Number of simultaneous requests that can be handled. Since FFServer
+# Number of simultaneous requests that can be handled. Since AVServer
# is very fast, it is more likely that you will want to leave this high
# and use MaxBandwidth, below.
MaxClients 1000
# '-' is the standard output.
CustomLog -
-# Suppress that if you want to launch ffserver as a daemon.
+# Suppress that if you want to launch avserver as a daemon.
NoDaemon
##################################################################
# Definition of the live feeds. Each live feed contains one video
# and/or audio sequence coming from an ffmpeg encoder or another
-# ffserver. This sequence may be encoded simultaneously with several
+# avserver. This sequence may be encoded simultaneously with several
# codecs at several resolutions.
<Feed feed1.ffm>
-# You must use 'ffmpeg' to send a live feed to ffserver. In this
+# You must use 'ffmpeg' to send a live feed to avserver. In this
# example, you can type:
#
# ffmpeg http://localhost:8090/feed1.ffm
-# ffserver can also do time shifting. It means that it can stream any
+# avserver can also do time shifting. It means that it can stream any
# previously recorded live stream. The request should contain:
# "http://xxxx?date=[YYYY-MM-DDT][[HH:]MM:]SS[.m...]".You must specify
# a path where the feed is stored on disk. You also specify the
##################################################################
# Now you can define each stream which will be generated from the
# original audio and video stream. Each format has a filename (here
-# 'test1.mpg'). FFServer will send this stream when answering a
+# 'test1.mpg'). AVServer will send this stream when answering a
# request containing this filename.
<Stream test1.mpg>
# multicast address with MulticastAddress. The port and the TTL can
# also be set.
#
-# An SDP file is automatically generated by ffserver by adding the
+# An SDP file is automatically generated by avserver by adding the
# 'sdp' extension to the stream name (here
# http://localhost:8090/test1-sdp.sdp). You should usually give this
# file to your player to play the stream.
\input texinfo @c -*- texinfo -*-
-@settitle ffserver Documentation
+@settitle avserver Documentation
@titlepage
-@center @titlefont{ffserver Documentation}
+@center @titlefont{avserver Documentation}
@end titlepage
@top
@example
@c man begin SYNOPSIS
-ffserver [options]
+avserver [options]
@c man end
@end example
@chapter Description
@c man begin DESCRIPTION
-ffserver is a streaming server for both audio and video. It supports
+avserver is a streaming server for both audio and video. It supports
several live feeds, streaming from files and time shifting on live feeds
(you can seek to positions in the past on each live feed, provided you
-specify a big enough feed storage in ffserver.conf).
+specify a big enough feed storage in avserver.conf).
-ffserver runs in daemon mode by default; that is, it puts itself in
+avserver runs in daemon mode by default; that is, it puts itself in
the background and detaches from its TTY, unless it is launched in
debug mode or a NoDaemon option is specified in the configuration
file.
-This documentation covers only the streaming aspects of ffserver /
+This documentation covers only the streaming aspects of avserver /
ffmpeg. All questions about parameters for ffmpeg, codec questions,
etc. are not covered here. Read @file{ffmpeg-doc.html} for more
information.
@section How does it work?
-ffserver receives prerecorded files or FFM streams from some ffmpeg
+avserver receives prerecorded files or FFM streams from some ffmpeg
instance as input, then streams them over RTP/RTSP/HTTP.
-An ffserver instance will listen on some port as specified in the
+An avserver instance will listen on some port as specified in the
configuration file. You can launch one or more instances of ffmpeg and
-send one or more FFM streams to the port where ffserver is expecting
-to receive them. Alternately, you can make ffserver launch such ffmpeg
+send one or more FFM streams to the port where avserver is expecting
+to receive them. Alternately, you can make avserver launch such ffmpeg
instances at startup.
Input streams are called feeds, and each one is specified by a <Feed>
@section Status stream
-ffserver supports an HTTP interface which exposes the current status
+avserver supports an HTTP interface which exposes the current status
of the server.
Simply point your browser to the address of the special status stream
@section How do I make it work?
First, build the kit. It *really* helps to have installed LAME first. Then when
-you run the ffserver ./configure, make sure that you have the
+you run the avserver ./configure, make sure that you have the
@code{--enable-libmp3lame} flag turned on.
LAME is important as it allows for streaming audio to Windows Media Player.
is some file which you can decode with ffmpeg:
@example
-./ffserver -f doc/ffserver.conf &
+./avserver -f doc/avserver.conf &
./ffmpeg -i INPUTFILE http://localhost:8090/feed1.ffm
@end example
@section What happens next?
-You should edit the ffserver.conf file to suit your needs (in terms of
-frame rates etc). Then install ffserver and ffmpeg, write a script to start
+You should edit the avserver.conf file to suit your needs (in terms of
+frame rates etc). Then install avserver and ffmpeg, write a script to start
them up, and off you go.
@section Troubleshooting
You can replay video from .ffm files that was recorded earlier.
However, there are a number of caveats, including the fact that the
-ffserver parameters must match the original parameters used to record the
-file. If they do not, then ffserver deletes the file before recording into it.
+avserver parameters must match the original parameters used to record the
+file. If they do not, then avserver deletes the file before recording into it.
(Now that I write this, it seems broken).
You can fiddle with many of the codec choices and encoding parameters, and
there are a bunch more parameters that you cannot control. Post a message
to the mailing list if there are some 'must have' parameters. Look in
-ffserver.conf for a list of the currently available controls.
+avserver.conf for a list of the currently available controls.
It will automatically generate the ASX or RAM files that are often used
in browsers. These files are actually redirections to the underlying ASF
* When you connect to a live stream, most players (WMP, RA, etc) want to
buffer a certain number of seconds of material so that they can display the
-signal continuously. However, ffserver (by default) starts sending data
+signal continuously. However, avserver (by default) starts sending data
in realtime. This means that there is a pause of a few seconds while the
buffering is being done by the player. The good news is that this can be
cured by adding a '?buffer=5' to the end of the URL. This means that the
of the stream are sent as fast as the network will allow. It will then
slow down to real time. This noticeably improves the startup experience.
-You can also add a 'Preroll 15' statement into the ffserver.conf that will
+You can also add a 'Preroll 15' statement into the avserver.conf that will
add the 15 second prebuffering on all requests that do not otherwise
-specify a time. In addition, ffserver will skip frames until a key_frame
+specify a time. In addition, avserver will skip frames until a key_frame
is found. This further reduces the startup delay by not transferring data
that will be discarded.
-* You may want to adjust the MaxBandwidth in the ffserver.conf to limit
+* You may want to adjust the MaxBandwidth in the avserver.conf to limit
the amount of bandwidth consumed by live streams.
@section Why does the ?buffer / Preroll stop working after a time?
@section Does the @code{?date=} stuff work.
Yes (subject to the limitation outlined above). Also note that whenever you
-start ffserver, it deletes the ffm file (if any parameters have changed),
+start avserver, it deletes the ffm file (if any parameters have changed),
thus wiping out what you had recorded before.
The format of the @code{?date=xxxxxx} is fairly flexible. You should use one
@table @option
@item -f @var{configfile}
-Use @file{configfile} instead of @file{/etc/ffserver.conf}.
+Use @file{configfile} instead of @file{/etc/avserver.conf}.
@item -n
Enable no-launch mode. This option disables all the Launch directives
-within the various <Stream> sections. Since ffserver will not launch
+within the various <Stream> sections. Since avserver will not launch
any ffmpeg instances, you will have to launch them manually.
@item -d
Enable debug mode. This option increases log verbosity, directs log
-messages to stdout and causes ffserver to run in the foreground
+messages to stdout and causes avserver to run in the foreground
rather than as a daemon.
@end table
@c man end
@ignore
-@setfilename ffserver
-@settitle ffserver video server
+@setfilename avserver
+@settitle avserver video server
@c man begin SEEALSO
-ffmpeg(1), avplay(1), avprobe(1), the @file{ffmpeg/doc/ffserver.conf}
+ffmpeg(1), avplay(1), avprobe(1), the @file{ffmpeg/doc/avserver.conf}
example and the Libav HTML documentation
@c man end
@item -r @var{fps}
Set frame rate (Hz value, fraction or abbreviation), (default = 25).
@item -s @var{size}
-Set frame size. The format is @samp{wxh} (ffserver default = 160x128, ffmpeg default = same as source).
+Set frame size. The format is @samp{wxh} (avserver default = 160x128, ffmpeg default = same as source).
The following abbreviations are recognized:
@table @samp
@item sqcif
Read input at native frame rate. Mainly used to simulate a grab device.
@item -loop_input
Loop over the input stream. Currently it works only for image
-streams. This option is used for automatic FFserver testing.
+streams. This option is used for automatic AVserver testing.
This option is deprecated, use -loop.
@item -loop_output @var{number_of_times}
Repeatedly loop output for formats that support looping such as animated GIF
@settitle ffmpeg video converter
@c man begin SEEALSO
-avplay(1), avprobe(1), ffserver(1) and the Libav HTML documentation
+avplay(1), avprobe(1), avserver(1) and the Libav HTML documentation
@c man end
@c man begin AUTHORS
@item Electronic Arts cdata @tab @tab X
@item Electronic Arts Multimedia @tab @tab X
@tab Used in various EA games; files have extensions like WVE and UV2.
-@item FFM (FFserver live feed) @tab X @tab X
+@item FFM (AVserver live feed) @tab X @tab X
@item Flash (SWF) @tab X @tab X
@item Flash 9 (AVM2) @tab X @tab X
@tab Only embedded audio is decoded.
return ost;
}
-static int read_ffserver_streams(AVFormatContext *s, const char *filename)
+static int read_avserver_streams(AVFormatContext *s, const char *filename)
{
int i, err;
AVFormatContext *ic = NULL;
if (!strcmp(file_oformat->name, "ffm") &&
av_strstart(filename, "http:", NULL)) {
- /* special case for files sent to ffserver: we get the stream
- parameters from ffserver */
- int err = read_ffserver_streams(oc, filename);
+ /* special case for files sent to avserver: we get the stream
+ parameters from avserver */
+ int err = read_avserver_streams(oc, filename);
if (err < 0) {
print_error(filename, err);
ffmpeg_exit(1);
/*
- * FFM (ffserver live feed) common header
+ * FFM (avserver live feed) common header
* Copyright (c) 2001 Fabrice Bellard
*
* This file is part of Libav.
/*
- * FFM (ffserver live feed) demuxer
+ * FFM (avserver live feed) demuxer
* Copyright (c) 2001 Fabrice Bellard
*
* This file is part of Libav.
#include "libavutil/intfloat_readwrite.h"
#include "avformat.h"
#include "ffm.h"
-#if CONFIG_FFSERVER
+#if CONFIG_AVSERVER
#include <unistd.h>
int64_t ffm_read_write_index(int fd)
ffm->write_index = pos;
ffm->file_size = file_size;
}
-#endif // CONFIG_FFSERVER
+#endif // CONFIG_AVSERVER
static int ffm_is_avail_data(AVFormatContext *s, int size)
{
AVInputFormat ff_ffm_demuxer = {
.name = "ffm",
- .long_name = NULL_IF_CONFIG_SMALL("FFM (FFserver live feed) format"),
+ .long_name = NULL_IF_CONFIG_SMALL("FFM (AVserver live feed) format"),
.priv_data_size = sizeof(FFMContext),
.read_probe = ffm_probe,
.read_header = ffm_read_header,
/*
- * FFM (ffserver live feed) muxer
+ * FFM (avserver live feed) muxer
* Copyright (c) 2001 Fabrice Bellard
*
* This file is part of Libav.
AVOutputFormat ff_ffm_muxer = {
.name = "ffm",
- .long_name = NULL_IF_CONFIG_SMALL("FFM (FFserver live feed) format"),
+ .long_name = NULL_IF_CONFIG_SMALL("FFM (AVserver live feed) format"),
.mime_type = "",
.extensions = "ffm",
.priv_data_size = sizeof(FFMContext),
/* Multipart JPEG */
-#define BOUNDARY_TAG "ffserver"
+#define BOUNDARY_TAG "avserver"
static int mpjpeg_write_header(AVFormatContext *s)
{