📄 pixelproc.c
字号:
#include "PixelProc.h"
#include "defines.h"
#include "menu.h"
#include <csl.h>
#include <csl_emifa.h>
#include <csl_gpio.h>
#include <csl_irq.h>
#include <csl_chip.h>
#include <csl_dat.h>
extern UserSettings us;
void savePic(Uint32 srcY, Uint32 destY, Uint32 srcCr, Uint32 destCr,
Uint32 srcCb, Uint32 destCb)
{
int i;
// Y buffer
for(i=0;i<NUMLINES;i++){
DAT_copy((void *)(srcY + i * 720),
(void *)(destY + i * 720),
720);
}
// Cr buffer
for(i=0;i<NUMLINES;i++){
DAT_copy((void *)(srcCr + i * 360),
(void *)(destCr + i * 360),
360);
}
// Cb buffer
for(i=0;i<NUMLINES;i++){
DAT_copy((void *)(srcCb + i * 360),
(void *)(destCb + i * 360),
360);
}
}
void savePic_down(Uint32 srcY, Uint32 destY, Uint32 srcCr, Uint32 destCr,
Uint32 srcCb, Uint32 destCb)
{
int i;
// Y buffer
for(i=0;i<NUMLINES;i++){
DAT_copy((void *)(srcY + i * 720),
(void *)(destY + (i+2) * 720),
720);
}
// Cr buffer
for(i=0;i<NUMLINES;i++){
DAT_copy((void *)(srcCr + i * 360),
(void *)(destCr + (i+2) * 360),
360);
}
// Cb buffer
for(i=0;i<NUMLINES;i++){
DAT_copy((void *)(srcCb + i * 360),
(void *)(destCb + (i+2) * 360),
360);
}
}
void MirrorPic(Uint32 srcY, Uint32 destY, Uint32 srcCr, Uint32 destCr,
Uint32 srcCb, Uint32 destCb)
{ int i,j;
for (i=0;i<NUMLINES;i++){
for(j=0;j<NUMPIXELS;j++){
*(Uint8*)(destY + i*NUMPIXELS +(NUMPIXELS-j-1)) = *(Uint8*)(srcY + i*NUMPIXELS +j);
}
for(j=0;j<NUMPIXELS/2;j++){
*(Uint8*)(destCr + i*NUMPIXELS/2 +(NUMPIXELS/2-j-1)) = *(Uint8*)(srcCr + i*NUMPIXELS/2 +j);
}
for(j=0;j<NUMPIXELS/2;j++){
*(Uint8*)(destCb + i*NUMPIXELS/2 +(NUMPIXELS/2-j-1)) = *(Uint8*)(srcCb + i*NUMPIXELS/2 +j);
}
}
}
void FlipPic(Uint32 srcY, Uint32 destY, Uint32 srcCr, Uint32 destCr,
Uint32 srcCb, Uint32 destCb)
{ int i;
for (i=0;i<NUMLINES;i++){
DAT_copy((void *)(srcY + i * 720),
(void *)(destY + (NUMLINES-i-1) * 720),
720);
}
for(i=0;i<NUMLINES;i++){
DAT_copy((void *)(srcCr + i * 360),
(void *)(destCr + (NUMLINES-i-1) * 360),
360);
}
for(i=0;i<NUMLINES;i++){
DAT_copy((void *)(srcCb + i * 360),
(void *)(destCb + (NUMLINES-i-1) * 360),
360);
}
}
void InvertPic(Uint32 srcY, Uint32 destY, Uint32 srcCr, Uint32 destCr,
Uint32 srcCb, Uint32 destCb)
{
int i;
int j;
for(i=0;i<NUMLINES;i++){
for(j=0;j<NUMPIXELS;j++){
*(Uint8*)(destY + i*NUMPIXELS +j) = 255 - *(Uint8*)(srcY + i*NUMPIXELS +j);
}
for(j=0;j<NUMPIXELS/2;j++){
*(Uint8*)(destCr + i*NUMPIXELS/2 +j) = *(Uint8*)(srcCr + i*NUMPIXELS/2 +j);
}
for(j=0;j<NUMPIXELS/2;j++){
*(Uint8*)(destCb + i*NUMPIXELS/2 +j) = *(Uint8*)(srcCb + i*NUMPIXELS/2 +j);
}
}
}
void MultiPic4(Uint32 srcY, Uint32 destY, Uint32 srcCr, Uint32 destCr,
Uint32 srcCb, Uint32 destCb)
{
int i = 0;
int j = 0;
if(us.MP_index<3){
for(i=0;i<NUMLINES;i++){
DAT_copy((void *)(srcY + i* 720),
(void *)(multiYbuffer + (2 * i + us.MP_index - 1) * 720),
720);
}
for(i=0;i<NUMLINES;i++){
DAT_copy((void *)(srcCr + i * 360),
(void *)(multiCrbuffer + (2 * i + us.MP_index - 1) * 360),
360);
}
for(i=0;i<NUMLINES;i++){
DAT_copy((void *)(srcCb + i * 360),
(void *)(multiCbbuffer + (2 * i + us.MP_index - 1) * 360),
360);
}
}
else{
for(i=0;i<NUMLINES;i++){
// Y buffer
DAT_copy((void *)(srcY + i* 720),
(void *)(multiYbuffer + (2 * i + us.MP_index - 3 + 974) * 720),
720);
}
for(i=0;i<NUMLINES;i++){
// Cr buffer
DAT_copy((void *)(srcCr + i * 360),
(void *)(multiCrbuffer + (2 * i + us.MP_index - 3 + 974) * 360),
360);
}
for(i=0;i<NUMLINES;i++){
// Cb buffer
DAT_copy((void *)(srcCb + i * 360),
(void *)(multiCbbuffer + (2 * i + us.MP_index - 3 + 974) * 360),
360);
}
}
// process zoom out on the temporary memory space, count for 4 times.
for (i=0;i<122;i++){
//zoom out Y
for(j=0;j<NUMPIXELS;j++){
*(Uint8*)(destY + i * NUMPIXELS + j)
= *(Uint8*)(multiYbuffer + 2 * i * 2 * NUMPIXELS + 2 * j);
}
//zoom out Cr
for(j=0;j<NUMPIXELS/2;j++){
*(Uint8*)(destCr + i * NUMPIXELS/2 + j)
= *(Uint8*)(multiCrbuffer + 2 * i * 2 * NUMPIXELS/2 + 2 * j);
}
//zoom out Cb
for(j=0;j<NUMPIXELS/2;j++){
*(Uint8*)(destCb + i * NUMPIXELS/2 + j)
= *(Uint8*)(multiCbbuffer + 2 * i * 2 * NUMPIXELS/2 + 2 * j);
}
}
for (i=122;i<244;i++){
//zoom out Y
for(j=0;j<NUMPIXELS;j++){
*(Uint8*)(destY + i * NUMPIXELS + j)
= *(Uint8*)(multiYbuffer + (2 * i + 243) * 2 * NUMPIXELS + 2 * j);
}
//zoom out Cr
for(j=0;j<NUMPIXELS/2;j++){
*(Uint8*)(destCr + i * NUMPIXELS/2 + j)
= *(Uint8*)(multiCrbuffer + (2 * i + 243) * 2 * NUMPIXELS/2 + 2 * j);
}
//zoom out Cb
for(j=0;j<NUMPIXELS/2;j++){
*(Uint8*)(destCb + i * NUMPIXELS/2 + j)
= *(Uint8*)(multiCbbuffer + (2 * i + 243) * 2 * NUMPIXELS/2 + 2 * j);
}
}
for (i=244;i<365;i++){
//zoom out Y
for(j=0;j<NUMPIXELS;j++){
*(Uint8*)(destY + i * NUMPIXELS + j)
= *(Uint8*)(multiYbuffer + 2 * (i - 122) * 2 * NUMPIXELS + 2 * j);
}
//zoom out Cr
for(j=0;j<NUMPIXELS/2;j++){
*(Uint8*)(destCr + i * NUMPIXELS/2 + j)
= *(Uint8*)(multiCrbuffer + 2 * (i - 122) * 2 * NUMPIXELS/2 + 2 * j);
}
//zoom out Cb
for(j=0;j<NUMPIXELS/2;j++){
*(Uint8*)(destCb + i * NUMPIXELS/2 + j)
= *(Uint8*)(multiCbbuffer + 2 * (i - 122) * 2 * NUMPIXELS/2 + 2 * j);
}
}
for (i=365;i<NUMLINES;i++){//i = 365
//zoom out Y
for(j=0;j<NUMPIXELS;j++){
*(Uint8*)(destY + (i+1) * NUMPIXELS + j)
= *(Uint8*)(multiYbuffer + 2 * i * 2 * NUMPIXELS + 2 * j);
}
//zoom out Cr
for(j=0;j<NUMPIXELS/2;j++){
*(Uint8*)(destCr + (i+1) * NUMPIXELS/2 + j)
= *(Uint8*)(multiCrbuffer + 2 * i * 2 * NUMPIXELS/2 + 2 * j);
}
//zoom out Cb
for(j=0;j<NUMPIXELS/2;j++){
*(Uint8*)(destCb + (i+1) * NUMPIXELS/2 + j)
= *(Uint8*)(multiCbbuffer + 2 * i * 2 * NUMPIXELS/2 + 2 * j);
}
}
}
void MultiPic2(Uint32 srcY, Uint32 destY, Uint32 srcCr, Uint32 destCr,
Uint32 srcCb, Uint32 destCb)
{
int i = 0;
int j = 0;
if(us.MP_index<3){
for(i=0;i<NUMLINES;i++){
// Y buffer
DAT_copy((void *)(srcY + i* 720),
(void *)(multiYbuffer + (2 * i + us.MP_index - 1) * 720),
720);
}
for(i=0;i<NUMLINES;i++){
// Cr buffer
DAT_copy((void *)(srcCr + i * 360),
(void *)(multiCrbuffer + (2 * i + us.MP_index - 1) * 360),
360);
}
for(i=0;i<NUMLINES;i++){
// Cb buffer
DAT_copy((void *)(srcCb + i * 360),
(void *)(multiCbbuffer + (2 * i + us.MP_index - 1) * 360),
360);
}
}
else{
for(i=0;i<NUMLINES;i++){
// Y buffer
DAT_copy((void *)(srcY + i* 720),
(void *)(multiYbuffer + (2 * i + us.MP_index - 3 + 974) * 720),
720);
}
for(i=0;i<NUMLINES;i++){
// Cr buffer
DAT_copy((void *)(srcCr + i * 360),
(void *)(multiCrbuffer + (2 * i + us.MP_index - 3 + 974) * 360),
360);
}
for(i=0;i<NUMLINES;i++){
// Cb buffer
DAT_copy((void *)(srcCb + i * 360),
(void *)(multiCbbuffer + (2 * i + us.MP_index - 3 + 974) * 360),
360);
}
}
// zoomout X only
for (i=0;i<NUMLINES;i++){
//zoom out Y
for(j=0;j<NUMPIXELS;j++){
*(Uint8*)(destY + i*NUMPIXELS + j) = *(Uint8*)(srcY + 2 * i * NUMPIXELS + 2 * j);
}
//zoom out Cr
for(j=0;j<NUMPIXELS/2;j++){
*(Uint8*)(destCr + i*NUMPIXELS/2 + j) = *(Uint8*)(srcCr + 2 * i * NUMPIXELS/2 + 2 * j);
}
//zoom out Cb
for(j=0;j<NUMPIXELS/2;j++){
*(Uint8*)(destCb + i*NUMPIXELS/2 + j) = *(Uint8*)(srcCb + 2 * i * NUMPIXELS/2 + 2 * j);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -