[FFmpeg-devel] [PATCH] Obey configure updates for OGG, Matroska, and MOV parsers.

dalecurtis at chromium.org dalecurtis at chromium.org
Tue Apr 10 20:09:18 CEST 2012


From: Dale Curtis <dalecurtis at chromium.org>

Uses #if checks to remove code paths which are invalid or unused
depending on configure options.

Signed-off-by: Dale Curtis <dalecurtis at chromium.org>
---
 libavformat/matroskadec.c |   38 +++++++++++++++++++++++++++-----------
 libavformat/mov.c         |    4 ++++
 libavformat/oggdec.c      |   10 ++++++++++
 3 files changed, 41 insertions(+), 11 deletions(-)

diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
index 6d7401b..a6fec8a 100644
--- a/libavformat/matroskadec.c
+++ b/libavformat/matroskadec.c
@@ -35,13 +35,17 @@
 /* For ff_codec_get_id(). */
 #include "riff.h"
 #include "isom.h"
+#if CONFIG_SIPR_DECODER
 #include "rm.h"
+#endif
 #include "matroska.h"
 #include "libavcodec/mpeg4audio.h"
 #include "libavutil/intfloat.h"
 #include "libavutil/intreadwrite.h"
 #include "libavutil/avstring.h"
+#if HAVE_LZO1X_999_COMPRESS
 #include "libavutil/lzo.h"
+#endif
 #include "libavutil/dict.h"
 #if CONFIG_ZLIB
 #include <zlib.h>
@@ -1012,6 +1016,7 @@ static int matroska_decode_buffer(uint8_t** buf, int* buf_size,
     switch (encodings[0].compression.algo) {
     case MATROSKA_TRACK_ENCODING_COMP_HEADERSTRIP:
         return encodings[0].compression.settings.size;
+#if HAVE_LZO1X_999_COMPRESS
     case MATROSKA_TRACK_ENCODING_COMP_LZO:
         do {
             olen = pkt_size *= 3;
@@ -1022,6 +1027,7 @@ static int matroska_decode_buffer(uint8_t** buf, int* buf_size,
             goto failed;
         pkt_size -= olen;
         break;
+#endif
 #if CONFIG_ZLIB
     case MATROSKA_TRACK_ENCODING_COMP_ZLIB: {
         z_stream zstream = {0};
@@ -1463,14 +1469,17 @@ static int matroska_read_header(AVFormatContext *s)
                    "Multiple combined encodings not supported");
         } else if (encodings_list->nb_elem == 1) {
             if (encodings[0].type ||
-                (encodings[0].compression.algo != MATROSKA_TRACK_ENCODING_COMP_HEADERSTRIP &&
+                (encodings[0].compression.algo != MATROSKA_TRACK_ENCODING_COMP_HEADERSTRIP
 #if CONFIG_ZLIB
-                 encodings[0].compression.algo != MATROSKA_TRACK_ENCODING_COMP_ZLIB &&
+                 && encodings[0].compression.algo != MATROSKA_TRACK_ENCODING_COMP_ZLIB
 #endif
 #if CONFIG_BZLIB
-                 encodings[0].compression.algo != MATROSKA_TRACK_ENCODING_COMP_BZLIB &&
+                 && encodings[0].compression.algo != MATROSKA_TRACK_ENCODING_COMP_BZLIB
+#endif
+#if HAVE_LZO1X_999_COMPRESS
+                 && encodings[0].compression.algo != MATROSKA_TRACK_ENCODING_COMP_LZO
 #endif
-                 encodings[0].compression.algo != MATROSKA_TRACK_ENCODING_COMP_LZO)) {
+                )) {
                 encodings[0].scope = 0;
                 av_log(matroska->ctx, AV_LOG_ERROR,
                        "Unsupported encoding type");
@@ -1581,8 +1590,10 @@ static int matroska_read_header(AVFormatContext *s)
         } else if (codec_id == CODEC_ID_RA_144) {
             track->audio.out_samplerate = 8000;
             track->audio.channels = 1;
-        } else if (codec_id == CODEC_ID_RA_288 || codec_id == CODEC_ID_COOK ||
-                   codec_id == CODEC_ID_ATRAC3 || codec_id == CODEC_ID_SIPR) {
+        } else if ((CONFIG_RA_288_DECODER && codec_id == CODEC_ID_RA_288) ||
+                   (CONFIG_COOK_DECODER && codec_id == CODEC_ID_COOK) ||
+                   (CONFIG_ATRAC3_DECODER && codec_id == CODEC_ID_ATRAC3) ||
+                   (CONFIG_SIPR_DECODER && codec_id == CODEC_ID_SIPR)) {
             int flavor;
             ffio_init_context(&b, track->codec_priv.data,track->codec_priv.size,
                           0, NULL, NULL, NULL, NULL);
@@ -1598,11 +1609,13 @@ static int matroska_read_header(AVFormatContext *s)
                 st->codec->block_align = track->audio.coded_framesize;
                 track->codec_priv.size = 0;
             } else {
+#if CONFIG_SIPR_DECODER
                 if (codec_id == CODEC_ID_SIPR && flavor < 4) {
                     const int sipr_bit_rate[4] = { 6504, 8496, 5000, 16000 };
                     track->audio.sub_packet_size = ff_sipr_subpk_size[flavor];
                     st->codec->bit_rate = sipr_bit_rate[flavor];
                 }
+#endif
                 st->codec->block_align = track->audio.sub_packet_size;
                 extradata_offset = 78;
             }
@@ -1920,11 +1933,12 @@ static int matroska_parse_block(MatroskaDemuxContext *matroska, uint8_t *data,
 
     if (res == 0) {
         for (n = 0; n < laces; n++) {
-            if ((st->codec->codec_id == CODEC_ID_RA_288 ||
-                 st->codec->codec_id == CODEC_ID_COOK ||
-                 st->codec->codec_id == CODEC_ID_SIPR ||
-                 st->codec->codec_id == CODEC_ID_ATRAC3) &&
-                 st->codec->block_align && track->audio.sub_packet_size) {
+            if (((CONFIG_RA_288_DECODER && st->codec->codec_id == CODEC_ID_RA_288) ||
+                 (CONFIG_COOK_DECODER && st->codec->codec_id == CODEC_ID_COOK) ||
+                 (CONFIG_ATRAC3_DECODER && st->codec->codec_id == CODEC_ID_ATRAC3) ||
+                 (CONFIG_SIPR_DECODER && st->codec->codec_id == CODEC_ID_SIPR)) &&
+                st->codec->block_align && track->audio.sub_packet_size) {
+
                 int a = st->codec->block_align;
                 int sps = track->audio.sub_packet_size;
                 int cfs = track->audio.coded_framesize;
@@ -1963,8 +1977,10 @@ static int matroska_parse_block(MatroskaDemuxContext *matroska, uint8_t *data,
                     }
 
                     if (++track->audio.sub_packet_cnt >= h) {
+#if CONFIG_SIPR_DECODER
                         if (st->codec->codec_id == CODEC_ID_SIPR)
                             ff_rm_reorder_sipr_data(track->audio.buf, h, w);
+#endif
                         track->audio.sub_packet_cnt = 0;
                         track->audio.pkt_cnt = h*w / a;
                     }
diff --git a/libavformat/mov.c b/libavformat/mov.c
index b4ff1df..81ce03f 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -570,6 +570,7 @@ static int mov_read_esds(MOVContext *c, AVIOContext *pb, MOVAtom atom)
     return ff_mov_read_esds(c->fc, pb, atom);
 }
 
+#if CONFIG_AC3_DEMUXER
 static int mov_read_dac3(MOVContext *c, AVIOContext *pb, MOVAtom atom)
 {
     AVStream *st;
@@ -593,6 +594,7 @@ static int mov_read_dac3(MOVContext *c, AVIOContext *pb, MOVAtom atom)
 
     return 0;
 }
+#endif
 
 static int mov_read_chan(MOVContext *c, AVIOContext *pb, MOVAtom atom)
 {
@@ -2594,7 +2596,9 @@ static const MOVParseTableEntry mov_default_parse_table[] = {
 { MKTAG('u','d','t','a'), mov_read_default },
 { MKTAG('w','a','v','e'), mov_read_wave },
 { MKTAG('e','s','d','s'), mov_read_esds },
+#if CONFIG_AC3_DEMUXER
 { MKTAG('d','a','c','3'), mov_read_dac3 }, /* AC-3 info */
+#endif
 { MKTAG('w','i','d','e'), mov_read_wide }, /* place holder */
 { MKTAG('w','f','e','x'), mov_read_wfex },
 { MKTAG('c','m','o','v'), mov_read_cmov },
diff --git a/libavformat/oggdec.c b/libavformat/oggdec.c
index bdd2c5b..731d7f2 100644
--- a/libavformat/oggdec.c
+++ b/libavformat/oggdec.c
@@ -39,14 +39,24 @@
 
 static const struct ogg_codec * const ogg_codecs[] = {
     &ff_skeleton_codec,
+#if CONFIG_DIRAC_DEMUXER
     &ff_dirac_codec,
+#endif
+#if CONFIG_LIBSPEEX
     &ff_speex_codec,
+#endif
     &ff_vorbis_codec,
     &ff_theora_codec,
+#if CONFIG_FLAC_DEMUXER
     &ff_flac_codec,
+#endif
     &ff_celt_codec,
+#if CONFIG_DIRAC_DEMUXER
     &ff_old_dirac_codec,
+#endif
+#if CONFIG_FLAC_DEMUXER
     &ff_old_flac_codec,
+#endif
     &ff_ogm_video_codec,
     &ff_ogm_audio_codec,
     &ff_ogm_text_codec,
-- 
1.7.7.3



More information about the ffmpeg-devel mailing list