@Kurtnoise
If you want improve the aften encoder I have two suggestions
1) To make a correct channel remapping we can replace the Int to Float routine at aften.c (line 125):
Code:
for(i=0; i<A52_FRAME_SIZE*wf.channels; i++) {
if(i < nr*wf.channels)
fwav[i] = wav[i] / 32768.0;
else
fwav[i] = 0.0;
}
With this new one:
Code:
if(wf.channels == 6) {
for(i=0; i<A52_FRAME_SIZE*6; i+=6) {
if(i < nr*6) {
fwav[i] = wav[i] / 32768.0; // FL
fwav[i+1] = wav[i+2] / 32768.0; // C
fwav[i+2] = wav[i+1] / 32768.0; // FR
fwav[i+3] = wav[i+4] / 32768.0; // SL
fwav[i+4] = wav[i+5] / 32768.0; // SR
fwav[i+5] = wav[i+3] / 32768.0; // LFE
}
else
for(j=0; j<6; j++) fwav[i+j] = 0.0;
}
}
else {
for(i=0; i<A52_FRAME_SIZE*wf.channels; i++) {
if(i < nr*wf.channels)
fwav[i] = wav[i] / 32768.0;
else
fwav[i] = 0.0;
}
}
2) New parameters, valid values and default, to be passed to output_frame_header (a52enc.c):
-c 0,1,2 Default: 0 (-3,-4.5,-6 dB) Center Mix Level
-s 0,1,2 Default: 0 (-3,-6,0 dB) Surround Mix Level
-d 0,1,2 Default: 0 (Ignored,Not,Yes) Dolby Surround Mode
-n 0..31 Default: 31 (-0..-31 dB) Dialogue normalization