📄 xil_ycrcb2rgb_action.m
字号:
function Xil_YCrCb2RGB_action(blockHandle, controlName,actionType, keysValuesStruct,actionData)%sprintf('rgb2ycrcb_action: block handle:%d, activated control:"%s"',%blockHandle, controlName) value_i = str2num(keysValuesStruct.('in_bits')); value_o = str2num(keysValuesStruct.('out_bits')); value_m = str2num(keysValuesStruct.('m_bits')); value_c = str2num(keysValuesStruct.('c_bits')); scale_i = pow2(value_i); scale_o = pow2(value_o); if ((strcmp(controlName,'standard')) || ... (strcmp(controlName,'in_bits')) || ... (strcmp(controlName,'out_bits')) || ... (strcmp(controlName,'range_sel'))) if (~(strcmp(keysValuesStruct.('standard'),'custom'))) % Leaving 'custom' if ((strcmp(keysValuesStruct.('prev_standard'),'custom'))) xlUpdateGuiControl(gcbh, 'custom_coefa', keysValuesStruct.('coefA')); xlUpdateGuiControl(gcbh, 'custom_coefb', keysValuesStruct.('coefB')); xlUpdateGuiControl(gcbh, 'custom_coefc', keysValuesStruct.('coefC')); xlUpdateGuiControl(gcbh, 'custom_coefd', keysValuesStruct.('coefD')); xlUpdateGuiControl(gcbh, 'custom_ofs_y', keysValuesStruct.('yoffset')); xlUpdateGuiControl(gcbh, 'custom_ofs_c', keysValuesStruct.('coffset')); xlUpdateGuiControl(gcbh, 'custom_has_max',keysValuesStruct.('has_clip')); xlUpdateGuiControl(gcbh, 'custom_has_min',keysValuesStruct.('has_clamp')); xlUpdateGuiControl(gcbh, 'custom_max_rgb',keysValuesStruct.('rgbmax')); xlUpdateGuiControl(gcbh, 'custom_min_rgb',keysValuesStruct.('rgbmin')); end else if (~(strcmp(keysValuesStruct.('prev_standard'),'custom'))) % just switched into custom mode xlUpdateGuiControl(gcbh, 'coefA', keysValuesStruct.('custom_coefa')); xlUpdateGuiControl(gcbh, 'coefB', keysValuesStruct.('custom_coefb')); xlUpdateGuiControl(gcbh, 'coefC', keysValuesStruct.('custom_coefc')); xlUpdateGuiControl(gcbh, 'coefD', keysValuesStruct.('custom_coefd')); xlUpdateGuiControl(gcbh, 'yoffset', keysValuesStruct.('custom_ofs_y')); xlUpdateGuiControl(gcbh, 'coffset', keysValuesStruct.('custom_ofs_c')); xlUpdateGuiControl(gcbh, 'has_clip', keysValuesStruct.('custom_has_max')); xlUpdateGuiControl(gcbh, 'has_clamp', keysValuesStruct.('custom_has_min')); xlUpdateGuiControl(gcbh, 'rgbmax', keysValuesStruct.('custom_max_rgb')); xlUpdateGuiControl(gcbh, 'rgbmin', keysValuesStruct.('custom_min_rgb')); end end if ((strcmp(keysValuesStruct.('standard'),'YCrCb ITU 601 (SD)')) || ... % Entering '601' or '709' PAL (strcmp(keysValuesStruct.('standard'),'YCrCb ITU 709 (HD), 1125/60 (PAL)'))) if ((strcmp(keysValuesStruct.('range_sel'),'16 - 240 : TV'))) xlUpdateGuiControl(gcbh, 'coefA', '0.299' ); xlUpdateGuiControl(gcbh, 'coefB', '0.114' ); xlUpdateGuiControl(gcbh, 'coefC', '0.564' ); xlUpdateGuiControl(gcbh, 'coefD', '0.713' ); xlUpdateGuiControl(gcbh, 'yoffset', num2str(round(16/256*scale_i))); xlUpdateGuiControl(gcbh, 'coffset', num2str(round(128/256*scale_i))); xlUpdateGuiControl(gcbh, 'has_clip', 'on'); xlUpdateGuiControl(gcbh, 'has_clamp', 'on'); xlUpdateGuiControl(gcbh, 'rgbmax', num2str(round(240/256*scale_o))); xlUpdateGuiControl(gcbh, 'rgbmin', num2str(round(16/256*scale_o))); end if ((strcmp(keysValuesStruct.('range_sel'),'16 - 235 : Studio equipment'))) xlUpdateGuiControl(gcbh, 'coefA', '0.299' ); xlUpdateGuiControl(gcbh, 'coefB', '0.114' ); xlUpdateGuiControl(gcbh, 'coefC', '0.5772' ); xlUpdateGuiControl(gcbh, 'coefD', '0.7295' ); xlUpdateGuiControl(gcbh, 'yoffset', num2str(round(16/256*scale_i))); xlUpdateGuiControl(gcbh, 'coffset', num2str(round(128/256*scale_i))); xlUpdateGuiControl(gcbh, 'has_clip', 'on'); xlUpdateGuiControl(gcbh, 'has_clamp', 'on'); xlUpdateGuiControl(gcbh, 'rgbmax', num2str(round(235/256*scale_o))); xlUpdateGuiControl(gcbh, 'rgbmin', num2str(round(16/256*scale_o))); end if ((strcmp(keysValuesStruct.('range_sel'),'0 - 255 : Computer systems'))) xlUpdateGuiControl(gcbh, 'coefA', '0.2568' ); xlUpdateGuiControl(gcbh, 'coefB', '0.0979' ); xlUpdateGuiControl(gcbh, 'coefC', '0.5772' ); xlUpdateGuiControl(gcbh, 'coefD', '0.5910' ); xlUpdateGuiControl(gcbh, 'yoffset', num2str(round(16/256*scale_i))); xlUpdateGuiControl(gcbh, 'coffset', num2str(round(128/256*scale_i))); xlUpdateGuiControl(gcbh, 'has_clip', 'on'); xlUpdateGuiControl(gcbh, 'has_clamp', 'on'); xlUpdateGuiControl(gcbh, 'rgbmax', num2str(round(255/256*scale_o))); xlUpdateGuiControl(gcbh, 'rgbmin', num2str(round(0/256*scale_o))); end end if (strcmp(keysValuesStruct.('standard'),'YCrCb ITU 709 (HD), 1250/50 (NTSC)')) % Entering '709 NTSC' if ((strcmp(keysValuesStruct.('range_sel'),'16 - 240 : TV'))) xlUpdateGuiControl(gcbh, 'coefA', '0.2126' ); xlUpdateGuiControl(gcbh, 'coefB', '0.0722' ); xlUpdateGuiControl(gcbh, 'coefC', '0.5389' ); xlUpdateGuiControl(gcbh, 'coefD', '0.6350' ); xlUpdateGuiControl(gcbh, 'yoffset', num2str(round(16/256*scale_i))); xlUpdateGuiControl(gcbh, 'coffset', num2str(round(128/256*scale_i))); xlUpdateGuiControl(gcbh, 'has_clip', 'on'); xlUpdateGuiControl(gcbh, 'has_clamp', 'on'); xlUpdateGuiControl(gcbh, 'rgbmax', num2str(round(240/256*scale_o))); xlUpdateGuiControl(gcbh, 'rgbmin', num2str(round(16/256*scale_o))); end if ((strcmp(keysValuesStruct.('range_sel'),'16 - 235 : Studio equipment'))) xlUpdateGuiControl(gcbh, 'coefA', '0.2126' ); xlUpdateGuiControl(gcbh, 'coefB', '0.0722' ); xlUpdateGuiControl(gcbh, 'coefC', '0.5512' ); xlUpdateGuiControl(gcbh, 'coefD', '0.6495' ); xlUpdateGuiControl(gcbh, 'yoffset', num2str(round(16/256*scale_i))); xlUpdateGuiControl(gcbh, 'coffset', num2str(round(128/256*scale_i))); xlUpdateGuiControl(gcbh, 'has_clip', 'on'); xlUpdateGuiControl(gcbh, 'has_clamp', 'on'); xlUpdateGuiControl(gcbh, 'rgbmax', num2str(round(235/256*scale_o))); xlUpdateGuiControl(gcbh, 'rgbmin', num2str(round(16/256*scale_o))); end if ((strcmp(keysValuesStruct.('range_sel'),'0 - 255 : Computer systems'))) xlUpdateGuiControl(gcbh, 'coefA', '0.1819' ); xlUpdateGuiControl(gcbh, 'coefB', '0.0618' ); xlUpdateGuiControl(gcbh, 'coefC', '0.5512' ); xlUpdateGuiControl(gcbh, 'coefD', '0.6495' ); xlUpdateGuiControl(gcbh, 'yoffset', num2str(round(16/256*scale_i))); xlUpdateGuiControl(gcbh, 'coffset', num2str(round(128/256*scale_i))); xlUpdateGuiControl(gcbh, 'has_clip', 'on'); xlUpdateGuiControl(gcbh, 'has_clamp', 'on'); xlUpdateGuiControl(gcbh, 'rgbmax', num2str(round(255/256*scale_o))); xlUpdateGuiControl(gcbh, 'rgbmin', num2str(round(0/256*scale_o))); end end if (strcmp(keysValuesStruct.('standard'),'YUV')) % Entering 'YUV' xlUpdateGuiControl(gcbh, 'coefA', '0.299' ); xlUpdateGuiControl(gcbh, 'coefB', '0.114' ); xlUpdateGuiControl(gcbh, 'coefC', '0.492111' ); xlUpdateGuiControl(gcbh, 'coefD', '0.877283' ); xlUpdateGuiControl(gcbh, 'yoffset', num2str(round(16/256*scale_i))); xlUpdateGuiControl(gcbh, 'coffset', num2str(round(128/256*scale_i))); xlUpdateGuiControl(gcbh, 'has_clip', 'on'); xlUpdateGuiControl(gcbh, 'has_clamp', 'on'); xlUpdateGuiControl(gcbh, 'rgbmax', num2str(round(240/256*scale_o))); xlUpdateGuiControl(gcbh, 'rgbmin', num2str(round(16/256*scale_o))); end end % Range checking of m_bits: if (((strcmp(controlName,'m_bits')) && (strcmp(actionType,'lostFocus'))) || ... ((strcmp(controlName,'c_bits')) && (strcmp(actionType,'lostFocus'))) || ... (strcmp(controlName,'fabric_adds')) ) if (strcmp(keysValuesStruct.('fabric_adds'), 'off')) xlUpdateGuiControl(gcbh, 'm_bits', num2str(value_i+value_c) ); else if (value_m < value_o) xlUpdateGuiControl(gcbh, 'm_bits', num2str(value_o) ); end; if (value_m > value_i+value_c) xlUpdateGuiControl(gcbh, 'm_bits', num2str(value_i+value_c) ); end; end end xlUpdateGuiControl(gcbh, 'coefvoid', num2str(1-str2num(keysValuesStruct.('coefA'))-str2num(keysValuesStruct.('coefB')))); xlUpdateGuiControl(gcbh, 'prev_standard', keysValuesStruct.('standard')); end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -