⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xil_ycrcb2rgb_action.m

📁 VHDL代码
💻 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 + -