📄 videograph.c
字号:
//--------------------------------------------------------------------------//
// //
// Name: Videiograph for the ADSP-BF533 EZ-KIT Lite //
// //
//--------------------------------------------------------------------------//
// //
// (C) Copyright 2003 - Carsten Knop. All rights reserved. //
// //
// Project Name: BF533 C AVideiograph //
// //
// Date Modified: 09/30/03 CK Rev 1.0 //
// //
// Software: VisualDSP++3.1 //
// //
// Hardware: ADSP-BF533 EZ-KIT Board //
// //
// Connections: none //
// //
// Purpose: This Videograph.c file generates an NTSC color bar //
// pattern and places the data in SDRAM memory. //
// //
//--------------------------------------------------------------------------//
#include "main.h"
//------------------------------------------------------------------------------
// Function Declarations
//------------------------------------------------------------------------------
unsigned int OutputLine(volatile unsigned int *p, unsigned int line);
//------------------------------------------------------------------------------
// Procedure: Init_VideoOutFrameBuff
// Inputs: none
// Outputs: none
// Description:
//------------------------------------------------------------------------------
void Init_VideoOutFrameBuff(void)
{
unsigned int l1, l2;
volatile unsigned int *p;
p = (volatile unsigned int *)SDRAM_START_ADDR;
//printf("SRAM Pointer (Video Start): %u (0x%X)\n", p, p);
for (l1 = 0; l1 < NUM_OF_VOUT_FRAMES; l1++) //num_of_vout_frames = 1
{
for (l2 = 0; l2 < VIDEO_Y_COUNT; l2++) //num_of_vout_frames = 625
{
p = (volatile unsigned int *)OutputLine(p, l2 + 1);
}
}
//printf("SRAM Pointer (Video End): %u (0x%X)\n", p, p);
}
//------------------------------------------------------------------------------
// Procedure: OutputLine
// Inputs: *p, line
// Outputs: none
// Description:
//------------------------------------------------------------------------------
unsigned int OutputLine(volatile unsigned int *p, unsigned int line)
{
int i;
static bool V = 1, F = 1;
unsigned int code;
// V-digital field blanking (PAL).
if (line == 624) V = 1; // Start / Field 1
if (line == 23) V = 0; // Finish / Field 1
if (line == 311) V = 1; // Start / Field 2
if (line == 336) V = 0; // Finish / Field 2
// F-digital field identification (PAL).
if (line == 1)
F = 0; // Field 1
if (line == 313)
F = 1; // Field 2
// End Active Video (EAV)
if (V & F)
*p++ = 0xF10000FF;
if (!V & F)
*p++ = 0xDA0000FF;
if (V & !F)
*p++ = 0xB60000FF;
if (!V & !F)
*p++ = 0x9D0000FF;
// BLANK
for (i = 0; i < (280/4); i++)
*p++ = 0x10801080;
// Start Active Video (SAV)
if (V & F)
*p++ = 0xEC0000FF;
if (!V & F)
*p++ = 0xC70000FF;
if (V & !F)
*p++ = 0xAB0000FF;
if (!V & !F)
*p++ = 0x800000FF;
// Active Video
if (V)
{
for (i = 0; i < (1440/4); i++)
*p++ = 0x10801080;
}
else
if (line<180)
{ // Y = 16 to 235 Cb and Cr = 128 +- 112
for (i = 0; i < (1440/4)/8; i++) // White
*p++ = 0xEB80EB80;
for (i = 0; i < (1440/4)/8; i++) // Yellow
*p++ = 0xD292D210;
for (i = 0; i < (1440/4)/8; i++) // Cyan
*p++ = 0xAA10AAA6;
for (i = 0; i < (1440/4)/8; i++) // Green
*p++ = 0x91229136;
for (i = 0; i < (1440/4)/8; i++) // Magenta
*p++ = 0x6ADE6ACA;
for (i = 0; i < (1440/4)/8; i++) // Red
*p++ = 0x51F0515A;
for (i = 0; i < (1440/4)/8; i++) // Blue
*p++ = 0x296E29F0;
for (i = 0; i < (1440/4)/8; i++) // Black
*p++ = 0x10801080;
}
else
{ // Y = 0 to 256 Cb and Cr = 128 +- 128
for (i = 0; i < (1440/4)/8; i++) // White
*p++ = 0xFF80FF80;
for (i = 0; i < (1440/4)/8; i++) // Yellow
*p++ = 0xE28EE20F;
for (i = 0; i < (1440/4)/8; i++) // Cyan
*p++ = 0xB426B4A6;
for (i = 0; i < (1440/4)/8; i++) // Green
*p++ = 0x96359635;
for (i = 0; i < (1440/4)/8; i++) // Magenta
*p++ = 0x6ACB6ACB;
for (i = 0; i < (1440/4)/8; i++) // Red
*p++ = 0x4CDA4C5A;
for (i = 0; i < (1440/4)/8; i++) // Blue
*p++ = 0x1D711DF1;
for (i = 0; i < (1440/4)/8; i++) // Black
*p++ = 0x00800080;
}
return (unsigned int)p;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -