lavf: move nuv fourcc audio tags from riff to nuv
authorJustin Ruggles <justin.ruggles@gmail.com>
Tue, 27 Nov 2012 04:36:13 +0000 (23:36 -0500)
committerJustin Ruggles <justin.ruggles@gmail.com>
Wed, 28 Nov 2012 16:18:50 +0000 (11:18 -0500)
libavformat/nuv.c
libavformat/riff.c

index 2cbf348971d608a41030a1cca4089c126c209dad..210205ea7c7ed149238fd3e022c5e45cdd06e259 100644 (file)
 #include "internal.h"
 #include "riff.h"
 
+static const AVCodecTag nuv_audio_tags[] = {
+    { AV_CODEC_ID_PCM_S16LE, MKTAG('R', 'A', 'W', 'A') },
+    { AV_CODEC_ID_MP3,       MKTAG('L', 'A', 'M', 'E') },
+    { AV_CODEC_ID_NONE,      0 },
+};
+
 typedef struct {
     int v_id;
     int a_id;
@@ -96,14 +102,25 @@ static int get_codec_data(AVIOContext *pb, AVStream *vst,
                     avio_skip(pb, 4);
 
                 if (ast) {
+                    int id;
+
                     ast->codec->codec_tag = avio_rl32(pb);
                     ast->codec->sample_rate = avio_rl32(pb);
                     ast->codec->bits_per_coded_sample = avio_rl32(pb);
                     ast->codec->channels = avio_rl32(pb);
                     ast->codec->channel_layout = 0;
-                    ast->codec->codec_id =
-                        ff_wav_codec_get_id(ast->codec->codec_tag,
-                                         ast->codec->bits_per_coded_sample);
+
+                    id = ff_wav_codec_get_id(ast->codec->codec_tag,
+                                             ast->codec->bits_per_coded_sample);
+                    if (id == AV_CODEC_ID_NONE) {
+                        id = ff_codec_get_id(nuv_audio_tags,
+                                             ast->codec->codec_tag);
+                        if (id == AV_CODEC_ID_PCM_S16LE)
+                            id = ff_get_pcm_codec_id(ast->codec->bits_per_coded_sample,
+                                                     0, 0, ~1);
+                    }
+                    ast->codec->codec_id = id;
+
                     ast->need_parsing = AVSTREAM_PARSE_FULL;
                 } else
                     avio_skip(pb, 4 * 4);
index 475486da82f6240c2e2eb8107191d7d91abc1f89..79b267048127f2ec4d2372fec447a2e89e8727f8 100644 (file)
@@ -343,11 +343,6 @@ const AVCodecTag ff_codec_wav_tags[] = {
     { AV_CODEC_ID_FLAC,            0xF1AC },
     { AV_CODEC_ID_ADPCM_SWF,       ('S'<<8)+'F' },
     { AV_CODEC_ID_VORBIS,          ('V'<<8)+'o' }, //HACK/FIXME, does vorbis in WAV/AVI have an (in)official id?
-
-    /* FIXME: All of the IDs below are not 16 bit and thus illegal. */
-    // for NuppelVideo (nuv.c)
-    { AV_CODEC_ID_PCM_S16LE, MKTAG('R', 'A', 'W', 'A') },
-    { AV_CODEC_ID_MP3,       MKTAG('L', 'A', 'M', 'E') },
     { AV_CODEC_ID_NONE,      0 },
 };