Commit a9e35095 authored by Diego Biurrun's avatar Diego Biurrun
Browse files

Replace CONFIG_ENCODERS/CONFIG_DECODERS with CONFIG_MUXERS/CONFIG_DEMUXERS

in libavformat to allow building (de)coders and (de)muxers independently at
some point + support for this option in configure.

Originally committed as revision 4611 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 288f1e68
......@@ -78,6 +78,8 @@ echo " --enable-codec=codec enables codec"
echo " --disable-codec=codec disables codec"
echo " --disable-encoders disables all encoders"
echo " --disable-decoders disables all decoders"
echo " --disable-muxers disables all muxers"
echo " --disable-demuxers disables all demuxers"
echo ""
echo "NOTE: The object files are build at the place where configure is launched"
exit 1
......@@ -218,6 +220,8 @@ sunmlib="no"
pthreads="no"
gpl="no"
memalignhack="no"
muxers="yes"
demuxers="yes"
# OS specific
targetos=`uname -s`
......@@ -533,6 +537,10 @@ for opt do
;;
--disable-decoders) CODEC_LIST="`echo $CODEC_LIST | sed 's/[-_a-zA-Z0-9]*decoder//g'`"
;;
--disable-muxers) muxers="no"
;;
--disable-demuxers) demuxers="no"
;;
esac
done
......@@ -1399,6 +1407,18 @@ echo "CONFIG_ENCODERS=yes" >> config.mak
echo "#define CONFIG_DECODERS 1" >> $TMPH
echo "CONFIG_DECODERS=yes" >> config.mak
# muxers
if test "$muxers" = "yes" ; then
echo "#define CONFIG_MUXERS 1" >> $TMPH
echo "CONFIG_MUXERS=yes" >> config.mak
fi
# demuxers
if test "$demuxers" = "yes" ; then
echo "#define CONFIG_DEMUXERS 1" >> $TMPH
echo "CONFIG_DEMUXERS=yes" >> config.mak
fi
# AC3
if test "$a52" = "yes" ; then
echo "#define CONFIG_AC3 1" >> $TMPH
......
......@@ -37,36 +37,36 @@ void av_register_all(void)
mpegps_init();
mpegts_init();
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
crc_init();
img_init();
img2_init();
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
raw_init();
mp3_init();
rm_init();
asf_init();
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
avienc_init();
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
avidec_init();
ff_wav_init();
ff_mmf_init();
swf_init();
au_init();
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
gif_init();
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
mov_init();
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
movenc_init();
jpeg_init();
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
ff_dv_init();
fourxm_init();
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
flvenc_init();
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
flvdec_init();
str_init();
roq_init();
......@@ -111,7 +111,7 @@ void av_register_all(void)
nsvdec_init();
daud_init();
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
/* image formats */
#if 0
av_register_image_format(&pnm_image_format);
......@@ -128,7 +128,7 @@ void av_register_all(void)
#endif
av_register_image_format(&gif_image_format);
// av_register_image_format(&sgi_image_format); heap corruption, dont enable
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
/* file protocols */
register_protocol(&file_protocol);
......
......@@ -23,7 +23,7 @@
#undef NDEBUG
#include <assert.h>
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
#define ASF_INDEXED_INTERVAL 10000000
......@@ -858,4 +858,4 @@ AVOutputFormat asf_stream_oformat = {
asf_write_trailer,
.flags = AVFMT_GLOBALHEADER,
};
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
......@@ -792,17 +792,17 @@ static AVInputFormat asf_iformat = {
asf_read_pts,
};
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
extern AVOutputFormat asf_oformat;
extern AVOutputFormat asf_stream_oformat;
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
int asf_init(void)
{
av_register_input_format(&asf_iformat);
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
av_register_output_format(&asf_oformat);
av_register_output_format(&asf_stream_oformat);
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
return 0;
}
......@@ -39,7 +39,7 @@ static const CodecTag codec_au_tags[] = {
{ 0, 0 },
};
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
/* AUDIO_FILE header */
static int put_au_header(ByteIOContext *pb, AVCodecContext *enc)
{
......@@ -97,7 +97,7 @@ static int au_write_trailer(AVFormatContext *s)
return 0;
}
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
static int au_probe(AVProbeData *p)
{
......@@ -188,7 +188,7 @@ static AVInputFormat au_iformat = {
pcm_read_seek,
};
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
static AVOutputFormat au_oformat = {
"au",
"SUN AU Format",
......@@ -201,13 +201,13 @@ static AVOutputFormat au_oformat = {
au_write_packet,
au_write_trailer,
};
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
int au_init(void)
{
av_register_input_format(&au_iformat);
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
av_register_output_format(&au_oformat);
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
return 0;
}
......@@ -24,7 +24,7 @@
* - fill all fields if non streamed (nb_frames for example)
*/
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
typedef struct AVIIentry {
unsigned int flags, pos, len;
} AVIIentry;
......@@ -71,7 +71,7 @@ void end_tag(ByteIOContext *pb, offset_t start)
put_le32(pb, (uint32_t)(pos - start));
url_fseek(pb, pos, SEEK_SET);
}
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
/* Note: when encoding, the first matching tag is used, so order is
important if multiple tags possible for a given codec. */
......@@ -245,7 +245,7 @@ enum CodecID codec_get_wav_id(unsigned int tag)
return codec_get_id(codec_wav_tags, tag);
}
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
/* BITMAPINFOHEADER header */
void put_bmp_header(ByteIOContext *pb, AVCodecContext *enc, const CodecTag *tags, int for_asf)
{
......@@ -752,4 +752,4 @@ int avienc_init(void)
av_register_output_format(&avi_oformat);
return 0;
}
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
......@@ -100,7 +100,7 @@ int url_read(URLContext *h, unsigned char *buf, int size)
return ret;
}
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
int url_write(URLContext *h, unsigned char *buf, int size)
{
int ret;
......@@ -112,7 +112,7 @@ int url_write(URLContext *h, unsigned char *buf, int size)
ret = h->prot->url_write(h, buf, size);
return ret;
}
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
offset_t url_seek(URLContext *h, offset_t pos, int whence)
{
......
......@@ -54,7 +54,7 @@ int init_put_byte(ByteIOContext *s,
}
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
static void flush_buffer(ByteIOContext *s)
{
if (s->buf_ptr > s->buffer) {
......@@ -104,7 +104,7 @@ void put_flush_packet(ByteIOContext *s)
flush_buffer(s);
s->must_flush = 0;
}
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
offset_t url_fseek(ByteIOContext *s, offset_t offset, int whence)
{
......@@ -113,7 +113,7 @@ offset_t url_fseek(ByteIOContext *s, offset_t offset, int whence)
if (whence != SEEK_CUR && whence != SEEK_SET)
return -EINVAL;
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
if (s->write_flag) {
if (whence == SEEK_CUR) {
offset1 = s->pos + (s->buf_ptr - s->buffer);
......@@ -136,7 +136,7 @@ offset_t url_fseek(ByteIOContext *s, offset_t offset, int whence)
s->pos = offset;
}
} else
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
{
if (whence == SEEK_CUR) {
offset1 = s->pos - (s->buf_end - s->buffer) + (s->buf_ptr - s->buffer);
......@@ -193,7 +193,7 @@ int url_ferror(ByteIOContext *s)
return s->error;
}
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
void put_le32(ByteIOContext *s, unsigned int val)
{
put_byte(s, val);
......@@ -254,7 +254,7 @@ void put_tag(ByteIOContext *s, const char *tag)
put_byte(s, *tag++);
}
}
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
/* Input stream */
......@@ -463,7 +463,7 @@ uint64_t get_be64(ByteIOContext *s)
/* link with avio functions */
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
static int url_write_packet(void *opaque, uint8_t *buf, int buf_size)
{
URLContext *h = opaque;
......@@ -471,7 +471,7 @@ static int url_write_packet(void *opaque, uint8_t *buf, int buf_size)
}
#else
#define url_write_packet NULL
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
static int url_read_packet(void *opaque, uint8_t *buf, int buf_size)
{
......@@ -564,7 +564,7 @@ URLContext *url_fileno(ByteIOContext *s)
return s->opaque;
}
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
/* XXX: currently size is limited */
int url_fprintf(ByteIOContext *s, const char *fmt, ...)
{
......@@ -578,7 +578,7 @@ int url_fprintf(ByteIOContext *s, const char *fmt, ...)
put_buffer(s, buf, strlen(buf));
return ret;
}
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
/* note: unlike fgets, the EOL character is not returned and a whole
line is parsed. return NULL if first char read was EOF */
......@@ -616,7 +616,7 @@ int url_fget_max_packet_size(ByteIOContext *s)
return s->max_packet_size;
}
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
/* buffer handling */
int url_open_buf(ByteIOContext *s, uint8_t *buf, int buf_size, int flags)
{
......@@ -779,4 +779,4 @@ int url_close_dyn_buf(ByteIOContext *s, uint8_t **pbuffer)
av_free(d);
return size;
}
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
......@@ -56,7 +56,7 @@ static int64_t get_pts(AVFormatContext *s, offset_t pos);
/* disable pts hack for testing */
int ffm_nopts = 0;
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
static void flush_packet(AVFormatContext *s)
{
FFMContext *ffm = s->priv_data;
......@@ -294,7 +294,7 @@ static int ffm_write_trailer(AVFormatContext *s)
return 0;
}
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
/* ffm demux */
......@@ -763,7 +763,7 @@ static AVInputFormat ffm_iformat = {
ffm_seek,
};
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
static AVOutputFormat ffm_oformat = {
"ffm",
"ffm format",
......@@ -777,13 +777,13 @@ static AVOutputFormat ffm_oformat = {
ffm_write_packet,
ffm_write_trailer,
};
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
int ffm_init(void)
{
av_register_input_format(&ffm_iformat);
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
av_register_output_format(&ffm_oformat);
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
return 0;
}
......@@ -160,7 +160,7 @@ static int jpeg_read(ByteIOContext *f,
return jctx.ret_code;
}
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
static int jpeg_write(ByteIOContext *pb, AVImageInfo *info)
{
AVCodecContext *c;
......@@ -222,7 +222,7 @@ static int jpeg_write(ByteIOContext *pb, AVImageInfo *info)
av_free(c);
return ret;
}
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
AVImageFormat jpeg_image_format = {
"jpeg",
......@@ -230,9 +230,9 @@ AVImageFormat jpeg_image_format = {
jpeg_probe,
jpeg_read,
(1 << PIX_FMT_YUVJ420P) | (1 << PIX_FMT_YUVJ422P) | (1 << PIX_FMT_YUVJ444P),
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
jpeg_write,
#else
NULL,
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
};
......@@ -24,7 +24,7 @@ typedef struct {
offset_t data_size;
} MMFContext;
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
static int mmf_rates[] = { 4000, 8000, 11025, 22050, 44100 };
static int mmf_rate_code(int rate)
......@@ -160,7 +160,7 @@ static int mmf_write_trailer(AVFormatContext *s)
}
return 0;
}
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
static int mmf_probe(AVProbeData *p)
{
......@@ -308,7 +308,7 @@ static AVInputFormat mmf_iformat = {
mmf_read_seek,
};
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
static AVOutputFormat mmf_oformat = {
"mmf",
"mmf format",
......@@ -321,14 +321,14 @@ static AVOutputFormat mmf_oformat = {
mmf_write_packet,
mmf_write_trailer,
};
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
int ff_mmf_init(void)
{
av_register_input_format(&mmf_iformat);
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
av_register_output_format(&mmf_oformat);
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
return 0;
}
......@@ -314,7 +314,7 @@ static int mp3_read_close(AVFormatContext *s)
return 0;
}
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
/* simple formats */
static int mp3_write_header(struct AVFormatContext *s)
{
......@@ -340,7 +340,7 @@ static int mp3_write_trailer(struct AVFormatContext *s)
}
return 0;
}
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
AVInputFormat mp3_iformat = {
"mp3",
......@@ -353,7 +353,7 @@ AVInputFormat mp3_iformat = {
.extensions = "mp2,mp3,m2a", /* XXX: use probe */
};
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
AVOutputFormat mp2_oformat = {
"mp2",
"MPEG audio layer 2",
......@@ -385,16 +385,16 @@ AVOutputFormat mp3_oformat = {
mp3_write_trailer,
};
#endif
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
int mp3_init(void)
{
av_register_input_format(&mp3_iformat);
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
av_register_output_format(&mp2_oformat);
#ifdef CONFIG_MP3LAME
av_register_output_format(&mp3_oformat);
#endif
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
return 0;
}
......@@ -107,7 +107,7 @@ typedef struct {
static const int lpcm_freq_tab[4] = { 48000, 96000, 44100, 32000 };
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
static AVOutputFormat mpeg1system_mux;
static AVOutputFormat mpeg1vcd_mux;
static AVOutputFormat mpeg2vob_mux;
......@@ -1253,7 +1253,7 @@ static int mpeg_mux_end(AVFormatContext *ctx)
}
return 0;
}
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
/*********************************************/
/* demux code */
......@@ -1707,7 +1707,7 @@ static int64_t mpegps_read_dts(AVFormatContext *s, int stream_index,
return dts;
}
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
static AVOutputFormat mpeg1system_mux = {
"mpeg",
"MPEG1 System format",
......@@ -1775,7 +1775,7 @@ static AVOutputFormat mpeg2dvd_mux = {
mpeg_mux_end,
};
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
AVInputFormat mpegps_demux = {
"mpeg",
......@@ -1792,13 +1792,13 @@ AVInputFormat mpegps_demux = {
int mpegps_init(void)
{
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
av_register_output_format(&mpeg1system_mux);
av_register_output_format(&mpeg1vcd_mux);
av_register_output_format(&mpeg2vob_mux);
av_register_output_format(&mpeg2svcd_mux);
av_register_output_format(&mpeg2dvd_mux);
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
av_register_input_format(&mpegps_demux);
return 0;
}
......@@ -1498,7 +1498,7 @@ AVInputFormat mpegts_demux = {
int mpegts_init(void)
{
av_register_input_format(&mpegts_demux);
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
av_register_output_format(&mpegts_mux);
#endif
return 0;
......
......@@ -22,7 +22,7 @@
#define BOUNDARY_TAG "ffserver"
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
static int mpjpeg_write_header(AVFormatContext *s)
{
uint8_t buf1[256];
......@@ -70,4 +70,4 @@ int jpeg_init(void)
av_register_output_format(&mpjpeg_format);
return 0;
}
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
......@@ -394,7 +394,7 @@ static int64_t find_startcode(ByteIOContext *bc, uint64_t code, int64_t pos){
}
}
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
static void put_v(ByteIOContext *bc, uint64_t val)
{
......@@ -843,7 +843,7 @@ static int nut_write_trailer(AVFormatContext *s)
return 0;
}
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
static int nut_probe(AVProbeData *p)
{
......@@ -1430,7 +1430,7 @@ static AVInputFormat nut_iformat = {
.extensions = "nut",
};
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
static AVOutputFormat nut_oformat = {
"nut",
"nut format",
......@@ -1450,13 +1450,13 @@ static AVOutputFormat nut_oformat = {
nut_write_trailer,
.flags = AVFMT_GLOBALHEADER,
};
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
int nut_init(void)
{
av_register_input_format(&nut_iformat);
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
av_register_output_format(&nut_oformat);
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
return 0;
}
......@@ -29,7 +29,7 @@ typedef struct OggContext {
} OggContext ;
#ifdef CONFIG_ENCODERS
#ifdef CONFIG_MUXERS
static int ogg_write_header(AVFormatContext *avfcontext)
{
OggContext *context = avfcontext->priv_data;
......@@ -149,7 +149,7 @@ static AVOutputFormat ogg_oformat = {
ogg_write_packet,
ogg_write_trailer,
} ;
#endif //CONFIG_ENCODERS
#endif //CONFIG_MUXERS
#if 0
static int next_packet(AVFormatContext *avfcontext, ogg_packet *op) {
......@@ -267,7 +267,7 @@ static AVInputFormat ogg_iformat = {
#endif
int libogg_init(void) {
#ifdef CONFIG_ENCODERS