On Tue, 14 Dec 1999, Robert Hegemann wrote:
> -X4 this is a bit complicated, I think Greg Maxwell should
> explain this ;)
-X4 resulted from testing, overthinking and sleep deperivation. :)
It's better if:
The worst subband is less or equal to the masking while the previous
best's worst subband is 2db greating then mask
or
The worst subband and the prior best worst beat the masking threshold
and the current worst comes within 2db the prior best worst and
the current has less total noise-masking
or
The current worst subband is equal or less then masking, while the prior
best worst is greater then masking and the current worst comes within
2db of the best worst and the current noise-masking is less
then the best noise-masking + over noise (i.e. over noise is counting
twice).
or
The current worst is less then masking and the best worst is greater
then masking -0.5 and the best worst+1 is greater then the current worst
and the current noise-masking + overnoise is less then the best
noise-masking + overnoise
or
argh. You get the point. It's too complicated.
It seemed to make a real advantage here, but it could have been more of a
result of too small a test group..
I was trying to accomplish some sort of balence between the worst noise
and the total noise. I later went completely nuts and made a completely
crazy version that all the subbands and not just worst and total. But I
never had a way to tune it, so I gave up. :)
Is it better to have less overall noise even when there is more clustered
in a single/few subbands, or have the subbands getting about equal noise,
and the expense of a bit higher overall?
No one knows.
The current code lets us only easily look at the worst and
the total. All of the other -Xes ignore the worst case subband unless the
overall noise is less (except for 6 now, which only considers it when
there is no over noise (or no difference in over noise), which I think
puts too much faith in the psyco model).
I don't think this is good, because I think that
the 'more focused' noise will be more noticable even though the overall
noise is less.
However, I dont really have any good tests to back that up, and my current
implimentation is too damn messy.
Perhaps it should be replaced with:
if (experimentalX==4) {
better = ( ((max_noise < best_max_noise)
&&(tot_noise < best_tot_noise)) ||
((max_noise+1 < best_max_noise)
&&(tot_noise < best_tot_noise+2) ||
((max_noise < best_max_noise+1) ||
&&(tot_noise+2 < best_tot_noise)) ) ;
I.e. If it's better it's better
If the max noise is >1db better then it's still better
if the total is upto 2db worse
If the max noise is upto 1db worse then it's still better if
the total is at least 2db better.
I'd do it with ratios (i.e. each db of better worst allows 1.5db of worse
total) but I'm trying to not be incomprehensiable again. :)
--
MP3 ENCODER mailing list ( http://geek.rcc.se/mp3encoder/ )