[FFmpeg-cvslog] avformat/segafilm: remove deplanarization hack

Paul B Mahol git at videolan.org
Mon Sep 16 16:39:59 CEST 2013


ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Mon Sep 16 13:30:20 2013 +0000| [42b8f5fba1f067c55231791039283e41b5167247] | committer: Paul B Mahol

avformat/segafilm: remove deplanarization hack

Signed-off-by: Paul B Mahol <onemda at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=42b8f5fba1f067c55231791039283e41b5167247
---

 libavformat/segafilm.c |   52 ++----------------------------------------------
 libavformat/version.h  |    2 +-
 2 files changed, 3 insertions(+), 51 deletions(-)

diff --git a/libavformat/segafilm.c b/libavformat/segafilm.c
index b685d49..a56568c 100644
--- a/libavformat/segafilm.c
+++ b/libavformat/segafilm.c
@@ -62,10 +62,6 @@ typedef struct FilmDemuxContext {
 
     unsigned int base_clock;
     unsigned int version;
-
-    /* buffer used for interleaving stereo PCM data */
-    unsigned char *stereo_buffer;
-    int stereo_buffer_size;
 } FilmDemuxContext;
 
 static int film_probe(AVProbeData *p)
@@ -87,8 +83,6 @@ static int film_read_header(AVFormatContext *s)
     unsigned int audio_frame_counter;
 
     film->sample_table = NULL;
-    film->stereo_buffer = NULL;
-    film->stereo_buffer_size = 0;
 
     /* load the main FILM header */
     if (avio_read(pb, scratch, 16) != 16)
@@ -117,9 +111,9 @@ static int film_read_header(AVFormatContext *s)
             film->audio_type = AV_CODEC_ID_ADPCM_ADX;
         else if (film->audio_channels > 0) {
             if (film->audio_bits == 8)
-                film->audio_type = AV_CODEC_ID_PCM_S8;
+                film->audio_type = AV_CODEC_ID_PCM_S8_PLANAR;
             else if (film->audio_bits == 16)
-                film->audio_type = AV_CODEC_ID_PCM_S16BE;
+                film->audio_type = AV_CODEC_ID_PCM_S16BE_PLANAR;
             else
                 film->audio_type = AV_CODEC_ID_NONE;
         } else
@@ -246,8 +240,6 @@ static int film_read_packet(AVFormatContext *s,
     AVIOContext *pb = s->pb;
     film_sample *sample;
     int ret = 0;
-    int i;
-    int left, right;
 
     if (film->current_sample >= film->sample_count)
         return AVERROR_EOF;
@@ -264,45 +256,6 @@ static int film_read_packet(AVFormatContext *s,
         if (av_new_packet(pkt, sample->sample_size))
             return AVERROR(ENOMEM);
         avio_read(pb, pkt->data, sample->sample_size);
-    } else if ((sample->stream == film->audio_stream_index) &&
-        (film->audio_channels == 2) &&
-        (film->audio_type != AV_CODEC_ID_ADPCM_ADX)) {
-        /* stereo PCM needs to be interleaved */
-
-        if (ffio_limit(pb, sample->sample_size) != sample->sample_size)
-            return AVERROR(EIO);
-        if (av_new_packet(pkt, sample->sample_size))
-            return AVERROR(ENOMEM);
-
-        /* make sure the interleave buffer is large enough */
-        if (sample->sample_size > film->stereo_buffer_size) {
-            av_free(film->stereo_buffer);
-            film->stereo_buffer_size = sample->sample_size;
-            film->stereo_buffer = av_malloc(film->stereo_buffer_size);
-            if (!film->stereo_buffer) {
-                film->stereo_buffer_size = 0;
-                return AVERROR(ENOMEM);
-            }
-        }
-
-        pkt->pos= avio_tell(pb);
-        ret = avio_read(pb, film->stereo_buffer, sample->sample_size);
-        if (ret != sample->sample_size)
-            ret = AVERROR(EIO);
-
-        left = 0;
-        right = sample->sample_size / 2;
-        for (i = 0; i + 1 + 2*(film->audio_bits != 8) < sample->sample_size; ) {
-            if (film->audio_bits == 8) {
-                pkt->data[i++] = film->stereo_buffer[left++];
-                pkt->data[i++] = film->stereo_buffer[right++];
-            } else {
-                pkt->data[i++] = film->stereo_buffer[left++];
-                pkt->data[i++] = film->stereo_buffer[left++];
-                pkt->data[i++] = film->stereo_buffer[right++];
-                pkt->data[i++] = film->stereo_buffer[right++];
-            }
-        }
     } else {
         ret= av_get_packet(pb, pkt, sample->sample_size);
         if (ret != sample->sample_size)
@@ -322,7 +275,6 @@ static int film_read_close(AVFormatContext *s)
     FilmDemuxContext *film = s->priv_data;
 
     av_freep(&film->sample_table);
-    av_freep(&film->stereo_buffer);
 
     return 0;
 }
diff --git a/libavformat/version.h b/libavformat/version.h
index 4f59ff3..667afa4 100644
--- a/libavformat/version.h
+++ b/libavformat/version.h
@@ -31,7 +31,7 @@
 
 #define LIBAVFORMAT_VERSION_MAJOR 55
 #define LIBAVFORMAT_VERSION_MINOR 16
-#define LIBAVFORMAT_VERSION_MICRO 102
+#define LIBAVFORMAT_VERSION_MICRO 103
 
 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
                                                LIBAVFORMAT_VERSION_MINOR, \



More information about the ffmpeg-cvslog mailing list