From c8b27a0ec4b36e20532c98469b7d9ee9dd31a8a9 Mon Sep 17 00:00:00 2001 From: David Goldwich Date: Fri, 2 Dec 2011 05:54:21 +0100 Subject: oma: PCM support Signed-off-by: David Goldwich Signed-off-by: Anton Khirnov --- libavformat/oma.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'libavformat/oma.c') diff --git a/libavformat/oma.c b/libavformat/oma.c index 4f4837d63b..1aa9a25477 100644 --- a/libavformat/oma.c +++ b/libavformat/oma.c @@ -61,9 +61,10 @@ enum { }; static const AVCodecTag codec_oma_tags[] = { - { CODEC_ID_ATRAC3, OMA_CODECID_ATRAC3 }, - { CODEC_ID_ATRAC3P, OMA_CODECID_ATRAC3P }, - { CODEC_ID_MP3, OMA_CODECID_MP3 }, + { CODEC_ID_ATRAC3, OMA_CODECID_ATRAC3 }, + { CODEC_ID_ATRAC3P, OMA_CODECID_ATRAC3P }, + { CODEC_ID_MP3, OMA_CODECID_MP3 }, + { CODEC_ID_PCM_S16BE, OMA_CODECID_LPCM }, }; static const uint64_t leaf_table[] = { @@ -358,6 +359,16 @@ static int oma_read_header(AVFormatContext *s, st->need_parsing = AVSTREAM_PARSE_FULL; framesize = 1024; break; + case OMA_CODECID_LPCM: + /* PCM 44.1 kHz 16 bit stereo big-endian */ + st->codec->channels = 2; + st->codec->sample_rate = 44100; + framesize = 1024; + /* bit rate = sample rate x PCM block align (= 4) x 8 */ + st->codec->bit_rate = st->codec->sample_rate * 32; + st->codec->bits_per_coded_sample = av_get_bits_per_sample(st->codec->codec_id); + avpriv_set_pts_info(st, 64, 1, st->codec->sample_rate); + break; default: av_log(s, AV_LOG_ERROR, "Unsupported codec %d!\n",buf[32]); return -1; -- cgit v1.2.3