从src/audio_output/common.c里面的函数aout_BitsPerSample可知,rtsp里面的音频类型,大部分都默认规定了样本bit大小的。即是,一个音频编码类型,对应一个固定的样本bit大小。所以rtsp里面,服务器只是告诉客户端,音频编码类型为pcma,而没有告诉客户端pcma编码的样本bit大小,因为这个是固定的。
如下代码里,pcma即是VLC_CODEC_ALAW,对应的返回值为8,即8bit为样本大小。
pcmu则是VLC_CODEC_MULAW,对应的返回值也是8,即8bit样本大小。
/***************************************************************************** * aout_BitsPerSample : get the number of bits per sample *****************************************************************************/ unsigned int aout_BitsPerSample( vlc_fourcc_t i_format ) { switch( vlc_fourcc_GetCodec( AUDIO_ES, i_format ) ) { case VLC_CODEC_U8: case VLC_CODEC_S8: case VLC_CODEC_ALAW: case VLC_CODEC_MULAW: ; case VLC_CODEC_U16L: case VLC_CODEC_S16L: case VLC_CODEC_U16B: case VLC_CODEC_S16B: ; case VLC_CODEC_U24L: case VLC_CODEC_S24L: case VLC_CODEC_U24B: case VLC_CODEC_S24B: ; case VLC_CODEC_S24L32: case VLC_CODEC_S24B32: case VLC_CODEC_U32L: case VLC_CODEC_U32B: case VLC_CODEC_S32L: case VLC_CODEC_S32B: case VLC_CODEC_F32L: case VLC_CODEC_F32B: ; case VLC_CODEC_F64L: case VLC_CODEC_F64B: ; default: /* For these formats the caller has to indicate the parameters * by hand. */ ; } }
上面代码还没有来源感,来张vlc代码截图吧:
完。