从目前手机的资料来看,大部分都是讲ADTS转换为LATM,却很少有资料将LATM的header转换为ADTS的header,虽然他们的原理是相同的,但是实际操作还是有些不一样
现在基于FFmpeg来做一套转码的程序如下:
static int read_stream_mux_config(LATMContext *latmContext, GetBitContext *s){
int ret, length;
int prog, lay;
int esc, tmp;
latmContext->audio_mux_version = get_bits(s, 1);
latmContext->audio_mux_version_A = 0;
if(latmContext->audio_mux_version){
latmContext->audio_mux_version_A = get_bits(s, 1);
}
if(!latmContext->audio_mux_version_A){
if(latmContext->audio_mux_version){
latmContext->tara_buffer_fullness = latm_get_value(s); // tara_fullness
}
latmContext->same_time_framing = get_bits(s, 1); // streamsametimeframing
latmContext->numSubFrames = get_bits(s, 6); // numSubFrames
latmContext->numProgram = get_bits(s, 4);
for(prog = 0; prog <= latmContext->numProgram; prog++){
int numLayer = get_bits(s, 3);
int objTypes[8];
latmContext->numlayer[prog] = numLayer;