summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Ruggles <justin.ruggles@gmail.com>2012-11-26 23:36:13 -0500
committerJustin Ruggles <justin.ruggles@gmail.com>2012-11-28 11:18:50 -0500
commit5c7bf2dddee5bdfa247ff0d57cb8a37d19077f66 (patch)
treebeee7b3addff5767ca9caec57d1e27c46ebc6855
parent261e9348ef377efc8672c6f8ade974cee7db8e49 (diff)
lavf: move nuv fourcc audio tags from riff to nuv
-rw-r--r--libavformat/nuv.c23
-rw-r--r--libavformat/riff.c5
2 files changed, 20 insertions, 8 deletions
diff --git a/libavformat/nuv.c b/libavformat/nuv.c
index 2cbf348971..210205ea7c 100644
--- a/libavformat/nuv.c
+++ b/libavformat/nuv.c
@@ -26,6 +26,12 @@
#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);
diff --git a/libavformat/riff.c b/libavformat/riff.c
index 475486da82..79b2670481 100644
--- a/libavformat/riff.c
+++ b/libavformat/riff.c
@@ -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 },
};