[SCM] libav/experimental: correctly set audio codec when demuxing sofdec files samples: http://samples.mplayerhq.hu/game-formats/sfd/

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 16:09:10 UTC 2013


The following commit has been merged in the experimental branch:
commit 8cd4ac3d63abff11201810aff9f3521876c2fb70
Author: Aurelien Jacobs <aurel at gnuage.org>
Date:   Wed Nov 7 23:56:00 2007 +0000

    correctly set audio codec when demuxing sofdec files
    samples: http://samples.mplayerhq.hu/game-formats/sfd/
    
    Originally committed as revision 10953 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavformat/mpeg.c b/libavformat/mpeg.c
index 93b5f40..3a009b6 100644
--- a/libavformat/mpeg.c
+++ b/libavformat/mpeg.c
@@ -107,15 +107,25 @@ static int mpegps_probe(AVProbeData *p)
 typedef struct MpegDemuxContext {
     int32_t header_state;
     unsigned char psm_es_type[256];
+    int sofdec;
 } MpegDemuxContext;
 
 static int mpegps_read_header(AVFormatContext *s,
                               AVFormatParameters *ap)
 {
     MpegDemuxContext *m = s->priv_data;
+    uint8_t buffer[8192];
+    char *p;
+
     m->header_state = 0xff;
     s->ctx_flags |= AVFMTCTX_NOHEADER;
 
+    get_buffer(&s->pb, buffer, sizeof(buffer));
+    if ((p=memchr(buffer, 'S', sizeof(buffer))))
+        if (!memcmp(p, "Sofdec", 6))
+            m->sofdec = 1;
+    url_fseek(&s->pb, -sizeof(buffer), SEEK_CUR);
+
     /* no need to do more */
     return 0;
 }
@@ -449,7 +459,7 @@ static int mpegps_read_packet(AVFormatContext *s,
         type = CODEC_TYPE_VIDEO;
     } else if (startcode >= 0x1c0 && startcode <= 0x1df) {
         type = CODEC_TYPE_AUDIO;
-        codec_id = CODEC_ID_MP2;
+        codec_id = m->sofdec ? CODEC_ID_ADPCM_ADX : CODEC_ID_MP2;
     } else if (startcode >= 0x80 && startcode <= 0x87) {
         type = CODEC_TYPE_AUDIO;
         codec_id = CODEC_ID_AC3;

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list