RGB色空間で飽和
拡張編集0.92では以下のような計算を拡張編集で一番最後の処理として行う(マルチスレッド&SSE2併用で全画素に行う)
code:c++
r = min((y * 16384 + cr * 22970) / 4096, 8192);
g = min((y * 16384 + cb * -5636 + cr * -11698) / 4096, 8192);
b = min((y * 16384 + cb * 29032 ) / 4096, 8192);
y = (r * 4898 + g * 9617 + b * 1867) / 4096;
cb = (r * -2768 + g * -5423 + b * 8192) / 4096;
cr = (r * 8192 + g * -6864 + b * -1327) / 4096;
拡張編集0.93rc1では計算式が少し変更された。
RGB色空間で飽和する処理を微調整した。(0.93rc1同梱のexedit.txtより)
code:c++
r = min((y * 16384 + cr * 22970) / 4096, 8192);
g = min((y * 16384 + cb * -5636 + cr * -11698) / 4096, 8192);
b = min((y * 16384 + cb * 29032 ) / 4096, 8192);
y = (r * 4900 + g * 9618 + b * 1869) / 4096;
cb = (r * -2768 + g * -5422 + b * 8193) / 4096;
cr = (r * 8193 + g * -6864 + b * -1326) / 4096;
RGBからYCbCrへの変換での係数が少し変わっています。
誤差レベルと考えられますがとりあえずpatch.aul(r43_ss_32)にて0.93rc1と同じ式になるように変更しておきましょう