From 8e9efe439216d0bc7dbd9e9f4d2baa4b2aeaff30 Mon Sep 17 00:00:00 2001 From: Daniel Verkamp Date: Mon, 14 Dec 2009 03:30:25 +0000 Subject: [PATCH] FLV 8-bit PCM is unsigned, not signed Fixes issue #1569 Originally committed as revision 20853 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/flvdec.c | 4 ++-- libavformat/flvenc.c | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c index c6428b4bbc..29c63dbc39 100644 --- a/libavformat/flvdec.c +++ b/libavformat/flvdec.c @@ -50,7 +50,7 @@ static void flv_set_audio_codec(AVFormatContext *s, AVStream *astream, int flv_c switch(flv_codecid) { //no distinction between S16 and S8 PCM codec flags case FLV_CODECID_PCM: - acodec->codec_id = acodec->bits_per_coded_sample == 8 ? CODEC_ID_PCM_S8 : + acodec->codec_id = acodec->bits_per_coded_sample == 8 ? CODEC_ID_PCM_U8 : #if HAVE_BIGENDIAN CODEC_ID_PCM_S16BE; #else @@ -58,7 +58,7 @@ static void flv_set_audio_codec(AVFormatContext *s, AVStream *astream, int flv_c #endif break; case FLV_CODECID_PCM_LE: - acodec->codec_id = acodec->bits_per_coded_sample == 8 ? CODEC_ID_PCM_S8 : CODEC_ID_PCM_S16LE; break; + acodec->codec_id = acodec->bits_per_coded_sample == 8 ? CODEC_ID_PCM_U8 : CODEC_ID_PCM_S16LE; break; case FLV_CODECID_AAC : acodec->codec_id = CODEC_ID_AAC; break; case FLV_CODECID_ADPCM: acodec->codec_id = CODEC_ID_ADPCM_SWF; break; case FLV_CODECID_SPEEX: diff --git a/libavformat/flvenc.c b/libavformat/flvenc.c index ce8f56591b..c255ff0512 100644 --- a/libavformat/flvenc.c +++ b/libavformat/flvenc.c @@ -38,7 +38,7 @@ static const AVCodecTag flv_video_codec_ids[] = { static const AVCodecTag flv_audio_codec_ids[] = { {CODEC_ID_MP3, FLV_CODECID_MP3 >> FLV_AUDIO_CODECID_OFFSET}, - {CODEC_ID_PCM_S8, FLV_CODECID_PCM >> FLV_AUDIO_CODECID_OFFSET}, + {CODEC_ID_PCM_U8, FLV_CODECID_PCM >> FLV_AUDIO_CODECID_OFFSET}, {CODEC_ID_PCM_S16BE, FLV_CODECID_PCM >> FLV_AUDIO_CODECID_OFFSET}, {CODEC_ID_PCM_S16LE, FLV_CODECID_PCM_LE >> FLV_AUDIO_CODECID_OFFSET}, {CODEC_ID_ADPCM_SWF, FLV_CODECID_ADPCM >> FLV_AUDIO_CODECID_OFFSET}, @@ -107,7 +107,7 @@ static int get_audio_flags(AVCodecContext *enc){ case CODEC_ID_MP3: flags |= FLV_CODECID_MP3 | FLV_SAMPLESSIZE_16BIT; break; - case CODEC_ID_PCM_S8: + case CODEC_ID_PCM_U8: flags |= FLV_CODECID_PCM | FLV_SAMPLESSIZE_8BIT; break; case CODEC_ID_PCM_S16BE: @@ -248,7 +248,7 @@ static int flv_write_header(AVFormatContext *s) put_amf_double(pb, audio_enc->sample_rate); put_amf_string(pb, "audiosamplesize"); - put_amf_double(pb, audio_enc->codec_id == CODEC_ID_PCM_S8 ? 8 : 16); + put_amf_double(pb, audio_enc->codec_id == CODEC_ID_PCM_U8 ? 8 : 16); put_amf_string(pb, "stereo"); put_amf_bool(pb, audio_enc->channels == 2);