[FFmpeg-cvslog] avformat/rsd: GADP files are adpcm_thp_le

James Almer git at videolan.org
Thu Nov 19 20:08:53 CET 2015


ffmpeg | branch: master | James Almer <jamrial at gmail.com> | Thu Nov 19 16:00:16 2015 -0300| [01c63e69f174eae394cf8541e7b19e8c8886fbb9] | committer: James Almer

avformat/rsd: GADP files are adpcm_thp_le

Signed-off-by: James Almer <jamrial at gmail.com>

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

 libavformat/rsd.c |   15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)

diff --git a/libavformat/rsd.c b/libavformat/rsd.c
index 01a27f9..8cef7f5 100644
--- a/libavformat/rsd.c
+++ b/libavformat/rsd.c
@@ -27,7 +27,7 @@
 
 static const AVCodecTag rsd_tags[] = {
     { AV_CODEC_ID_ADPCM_PSX,       MKTAG('V','A','G',' ') },
-    { AV_CODEC_ID_ADPCM_THP,       MKTAG('G','A','D','P') },
+    { AV_CODEC_ID_ADPCM_THP_LE,    MKTAG('G','A','D','P') },
     { AV_CODEC_ID_ADPCM_THP,       MKTAG('W','A','D','P') },
     { AV_CODEC_ID_ADPCM_IMA_RAD,   MKTAG('R','A','D','P') },
     { AV_CODEC_ID_ADPCM_IMA_WAV,   MKTAG('X','A','D','P') },
@@ -121,8 +121,7 @@ static int rsd_read_header(AVFormatContext *s)
         if (pb->seekable)
             st->duration = av_get_audio_frame_duration(codec, avio_size(pb) - start);
         break;
-    case AV_CODEC_ID_ADPCM_THP:
-        if (st->codec->codec_tag == MKTAG('G','A','D','P')) {
+    case AV_CODEC_ID_ADPCM_THP_LE:
             /* RSD3GADP is mono, so only alloc enough memory
                to store the coeff table for a single channel. */
 
@@ -130,11 +129,10 @@ static int rsd_read_header(AVFormatContext *s)
 
             if ((ret = ff_get_extradata(codec, s->pb, 32)) < 0)
                 return ret;
-
-            for (i = 0; i < 16; i++)
-                AV_WB16(codec->extradata + i * 2, AV_RL16(codec->extradata + i * 2));
-
-        } else {
+        if (pb->seekable)
+            st->duration = av_get_audio_frame_duration(codec, avio_size(pb) - start);
+        break;
+    case AV_CODEC_ID_ADPCM_THP:
             codec->block_align = 8 * codec->channels;
             avio_skip(s->pb, 0x1A4 - avio_tell(s->pb));
 
@@ -145,7 +143,6 @@ static int rsd_read_header(AVFormatContext *s)
                 avio_read(s->pb, st->codec->extradata + 32 * i, 32);
                 avio_skip(s->pb, 8);
             }
-        }
         if (pb->seekable)
             st->duration = (avio_size(pb) - start) / (8 * st->codec->channels) * 14;
         break;



More information about the ffmpeg-cvslog mailing list