bwmod.c

来自「视频601芯片的驱动源码,你可以完全掌控该芯片了,对于其它多媒体芯片的设计具有参」· C语言 代码 · 共 104 行

C
104
字号
#include "bwmod.h"

#define BLOCK_LEVEL(B) (((B)+6)/9)

static float bw_scale [42] = {
  1.1f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
  1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
  1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
  1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
  1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
  1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
};

DLLEXPORT void bwm_modify (USHORT bw[], USHORT rbw[])
{
  int bn;
  for (bn=0; bn<NBLOCKS; bn++) 
    rbw[bn] = (USHORT)(((float) rbw[bn]) * bw_scale[bn] + 0.5f);
}

DLLEXPORT void bwm_init(void)
{
  int bn;
  for (bn=0; bn<NBLOCKS; bn++) {
    bw_scale[bn]     = 1.0f;
  }
}

DLLEXPORT void bwm_soft(int level)
{
  int bn;
  if (level > 0) {
    for (bn=0; bn<NBLOCKS; bn++) 
      if (BLOCK_LEVEL(bn) < level) {
	bw_scale[bn]     = 0.0f;
      }
  }
}

DLLEXPORT void bwm_edge (int level) 
{
  int bn;
  if (level > 0) {
    for (bn=0; bn<NBLOCKS; bn++) 
      if (BLOCK_LEVEL(bn) >= level) {
	bw_scale[bn]     = 0.0f;
      }
  }
}

DLLEXPORT void bwm_sharp (int level)
{
  int bn;
  if (level > 0) {
    for (bn=0; bn<NBLOCKS; bn++) 
      if (BLOCK_LEVEL(bn) < level) {
	bw_scale[bn]     *= 2.0f;
      }
  }
}

/* Just zero all colors */

DLLEXPORT void bwm_gray (void)
{
  int bn;
  for (bn=0; bn<NBLOCKS; bn++) {
    if (bn % 3 != 0) {
      bw_scale[bn] = 0.0f;
    }
  }
}

DLLEXPORT void bwm_blue (float scale)
{
  int bn;
  for (bn=1; bn<NBLOCKS; bn+=3)  {
    bw_scale[bn] *= scale;
  }
}

DLLEXPORT void bwm_red (float scale)
{
  int bn;
  for (bn=2; bn<NBLOCKS; bn+=3)
    bw_scale[bn] *= scale;
}

/* Scale 3 low frequences by 0.5, leave 2 leveles of sharpened edges
   and zero the rest */

DLLEXPORT void bwm_water_color (void)
{
  int bn;
  
  for (bn=0; bn<NBLOCKS; bn++) {
    bw_scale[bn]     = 0.0f;
  }
  for (bn=39; bn<42; bn++)
    bw_scale[bn]     = 0.5f;
  for (bn=0; bn<12; bn++)
    bw_scale[bn]     = 2.0f;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?