Tune format scoring so (non)stereo format will get better chance
to be selected.
This commit is contained in:
parent
343c20a85e
commit
4a193ac907
@ -299,14 +299,18 @@ int
|
|||||||
chn_fmtscore(u_int32_t fmt)
|
chn_fmtscore(u_int32_t fmt)
|
||||||
{
|
{
|
||||||
if (fmt & AFMT_32BIT)
|
if (fmt & AFMT_32BIT)
|
||||||
return 32;
|
return 60;
|
||||||
if (fmt & AFMT_24BIT)
|
if (fmt & AFMT_24BIT)
|
||||||
return 24;
|
return 50;
|
||||||
if (fmt & AFMT_16BIT)
|
if (fmt & AFMT_16BIT)
|
||||||
return 16;
|
return 40;
|
||||||
if (fmt & (AFMT_U8|AFMT_S8))
|
if (fmt & (AFMT_U8|AFMT_S8))
|
||||||
return 8;
|
return 30;
|
||||||
return 4;
|
if (fmt & AFMT_MU_LAW)
|
||||||
|
return 20;
|
||||||
|
if (fmt & AFMT_A_LAW)
|
||||||
|
return 10;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
u_int32_t
|
u_int32_t
|
||||||
@ -322,7 +326,8 @@ chn_fmtbestbit(u_int32_t fmt, u_int32_t *fmts)
|
|||||||
score2 = chn_fmtscore(fmts[i]);
|
score2 = chn_fmtscore(fmts[i]);
|
||||||
if (oldscore == 0 || (score2 == score) ||
|
if (oldscore == 0 || (score2 == score) ||
|
||||||
(score2 > oldscore && score2 < score) ||
|
(score2 > oldscore && score2 < score) ||
|
||||||
(score2 < oldscore && score2 > score)) {
|
(score2 < oldscore && score2 > score) ||
|
||||||
|
(oldscore < score && score2 > oldscore)) {
|
||||||
best = fmts[i];
|
best = fmts[i];
|
||||||
oldscore = score2;
|
oldscore = score2;
|
||||||
}
|
}
|
||||||
@ -344,7 +349,8 @@ chn_fmtbeststereo(u_int32_t fmt, u_int32_t *fmts)
|
|||||||
score2 = chn_fmtscore(fmts[i]);
|
score2 = chn_fmtscore(fmts[i]);
|
||||||
if (oldscore == 0 || (score2 == score) ||
|
if (oldscore == 0 || (score2 == score) ||
|
||||||
(score2 > oldscore && score2 < score) ||
|
(score2 > oldscore && score2 < score) ||
|
||||||
(score2 < oldscore && score2 > score)) {
|
(score2 < oldscore && score2 > score) ||
|
||||||
|
(oldscore < score && score2 > oldscore)) {
|
||||||
best = fmts[i];
|
best = fmts[i];
|
||||||
oldscore = score2;
|
oldscore = score2;
|
||||||
}
|
}
|
||||||
@ -369,9 +375,11 @@ chn_fmtbest(u_int32_t fmt, u_int32_t *fmts)
|
|||||||
score = chn_fmtscore(fmt);
|
score = chn_fmtscore(fmt);
|
||||||
score1 = chn_fmtscore(best1);
|
score1 = chn_fmtscore(best1);
|
||||||
score2 = chn_fmtscore(best2);
|
score2 = chn_fmtscore(best2);
|
||||||
if (score2 == score)
|
if (score1 == score2 || score1 == score)
|
||||||
|
return best1;
|
||||||
|
else if (score2 == score)
|
||||||
return best2;
|
return best2;
|
||||||
else if (score1 == score || score1 > score2)
|
else if (score1 > score2)
|
||||||
return best1;
|
return best1;
|
||||||
return best2;
|
return best2;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user