Hi all,
I'll send you a patch for G711 audio codec support in flv format.
As sepcified in macromedia video_file_format_spec page 71
(http://download.macromedia.com/f4v/video_file_format_spec_v10_1.pdf),
G711 ulaw and Alaw are suppported by FLV format with :
codecid=7 for g711 alaw
and codecid=8 for g711 ulaw
This patch has been test with FFMPEG in our telephonie platform.
Tanks.
-----
diff --git a/libavformat/flv.h b/libavformat/flv.h
index 6418b27..fe0fc90 100644
--- a/libavformat/flv.h
+++ b/libavformat/flv.h
@@ -82,6 +82,8 @@ enum {
FLV_CODECID_NELLYMOSER_16KHZ_MONO = 4 << FLV_AUDIO_CODECID_OFFSET,
FLV_CODECID_NELLYMOSER_8KHZ_MONO = 5 << FLV_AUDIO_CODECID_OFFSET,
FLV_CODECID_NELLYMOSER = 6 << FLV_AUDIO_CODECID_OFFSET,
+ FLV_CODECID_PCM_ALAW = 7 << FLV_AUDIO_CODECID_OFFSET,
+ FLV_CODECID_PCM_MULAW = 8 << FLV_AUDIO_CODECID_OFFSET,
FLV_CODECID_AAC = 10<< FLV_AUDIO_CODECID_OFFSET,
FLV_CODECID_SPEEX = 11<< FLV_AUDIO_CODECID_OFFSET,
};
diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c
index 8e9759b..078c2a2 100644
--- a/libavformat/flvdec.c
+++ b/libavformat/flvdec.c
@@ -108,6 +108,14 @@ static void flv_set_audio_codec(AVFormatContext *s,
AVStream *astream, AVCodecCo
case FLV_CODECID_NELLYMOSER:
acodec->codec_id = CODEC_ID_NELLYMOSER;
break;
+ case FLV_CODECID_PCM_MULAW:
+ acodec->sample_rate = 8000;
+ acodec->codec_id = CODEC_ID_PCM_MULAW;
+ break;
+ case FLV_CODECID_PCM_ALAW:
+ acodec->sample_rate = 8000;
+ acodec->codec_id = CODEC_ID_PCM_ALAW;
+ break;
default:
av_log(s, AV_LOG_INFO, "Unsupported audio codec (%x)\n",
flv_codecid >> FLV_AUDIO_CODECID_OFFSET);
acodec->codec_tag = flv_codecid >> FLV_AUDIO_CODECID_OFFSET;
diff --git a/libavformat/flvenc.c b/libavformat/flvenc.c
index 62756a1..acd6f27 100644
--- a/libavformat/flvenc.c
+++ b/libavformat/flvenc.c
@@ -48,6 +48,8 @@ static const AVCodecTag flv_audio_codec_ids[] = {
{CODEC_ID_ADPCM_SWF, FLV_CODECID_ADPCM >> FLV_AUDIO_CODECID_OFFSET},
{CODEC_ID_AAC, FLV_CODECID_AAC >> FLV_AUDIO_CODECID_OFFSET},
{CODEC_ID_NELLYMOSER, FLV_CODECID_NELLYMOSER >>
FLV_AUDIO_CODECID_OFFSET},
+ {CODEC_ID_PCM_MULAW, FLV_CODECID_PCM_MULAW >>
FLV_AUDIO_CODECID_OFFSET},
+ {CODEC_ID_PCM_ALAW, FLV_CODECID_PCM_ALAW >> FLV_AUDIO_CODECID_OFFSET},
{CODEC_ID_SPEEX, FLV_CODECID_SPEEX >> FLV_AUDIO_CODECID_OFFSET},
{CODEC_ID_NONE, 0}
};
@@ -109,6 +111,12 @@ static int get_audio_flags(AVFormatContext *s,
AVCodecContext *enc)
}
switch(enc->codec_id){
+ case CODEC_ID_PCM_MULAW:
+ flags = FLV_CODECID_PCM_MULAW | FLV_SAMPLERATE_SPECIAL |
FLV_SAMPLESSIZE_16BIT ;
+ break;
+ case CODEC_ID_PCM_ALAW:
+ flags = FLV_CODECID_PCM_ALAW | FLV_SAMPLERATE_SPECIAL |
FLV_SAMPLESSIZE_16BIT;
+ break;
case CODEC_ID_MP3:
flags |= FLV_CODECID_MP3 | FLV_SAMPLESSIZE_16BIT;
break;
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel