| @@ -82,6 +82,8 @@ enum { | |||||
| FLV_CODECID_NELLYMOSER_16KHZ_MONO = 4 << FLV_AUDIO_CODECID_OFFSET, | FLV_CODECID_NELLYMOSER_16KHZ_MONO = 4 << FLV_AUDIO_CODECID_OFFSET, | ||||
| FLV_CODECID_NELLYMOSER_8KHZ_MONO = 5 << FLV_AUDIO_CODECID_OFFSET, | FLV_CODECID_NELLYMOSER_8KHZ_MONO = 5 << FLV_AUDIO_CODECID_OFFSET, | ||||
| FLV_CODECID_NELLYMOSER = 6 << 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_AAC = 10<< FLV_AUDIO_CODECID_OFFSET, | ||||
| FLV_CODECID_SPEEX = 11<< FLV_AUDIO_CODECID_OFFSET, | FLV_CODECID_SPEEX = 11<< FLV_AUDIO_CODECID_OFFSET, | ||||
| }; | }; | ||||
| @@ -108,6 +108,14 @@ static void flv_set_audio_codec(AVFormatContext *s, AVStream *astream, AVCodecCo | |||||
| case FLV_CODECID_NELLYMOSER: | case FLV_CODECID_NELLYMOSER: | ||||
| acodec->codec_id = CODEC_ID_NELLYMOSER; | acodec->codec_id = CODEC_ID_NELLYMOSER; | ||||
| break; | 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: | default: | ||||
| av_log(s, AV_LOG_INFO, "Unsupported audio codec (%x)\n", flv_codecid >> FLV_AUDIO_CODECID_OFFSET); | 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; | acodec->codec_tag = flv_codecid >> FLV_AUDIO_CODECID_OFFSET; | ||||
| @@ -48,6 +48,8 @@ static const AVCodecTag flv_audio_codec_ids[] = { | |||||
| { CODEC_ID_ADPCM_SWF, FLV_CODECID_ADPCM >> FLV_AUDIO_CODECID_OFFSET }, | { CODEC_ID_ADPCM_SWF, FLV_CODECID_ADPCM >> FLV_AUDIO_CODECID_OFFSET }, | ||||
| { CODEC_ID_AAC, FLV_CODECID_AAC >> 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_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_SPEEX, FLV_CODECID_SPEEX >> FLV_AUDIO_CODECID_OFFSET }, | ||||
| { CODEC_ID_NONE, 0 } | { CODEC_ID_NONE, 0 } | ||||
| }; | }; | ||||
| @@ -136,6 +138,12 @@ static int get_audio_flags(AVFormatContext *s, AVCodecContext *enc) | |||||
| else | else | ||||
| flags |= FLV_CODECID_NELLYMOSER | FLV_SAMPLESSIZE_16BIT; | flags |= FLV_CODECID_NELLYMOSER | FLV_SAMPLESSIZE_16BIT; | ||||
| break; | break; | ||||
| 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 0: | case 0: | ||||
| flags |= enc->codec_tag << 4; | flags |= enc->codec_tag << 4; | ||||
| break; | break; | ||||