mirror of
https://github.com/openmv/openmv.git
synced 2025-11-04 14:49:50 +08:00
ports: Move copy_transposed_line to sensor.h.
This commit is contained in:
parent
bd6bfa3e72
commit
018f2eaed1
@ -14,6 +14,18 @@
|
|||||||
#include "omv_i2c.h"
|
#include "omv_i2c.h"
|
||||||
#include "imlib.h"
|
#include "imlib.h"
|
||||||
|
|
||||||
|
#define copy_transposed_line(dstp, srcp) \
|
||||||
|
for (int i = MAIN_FB()->u, h = MAIN_FB()->v; i; i--) { \
|
||||||
|
*dstp = *srcp++; \
|
||||||
|
dstp += h; \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define copy_transposed_line_rev16(dstp, srcp) \
|
||||||
|
for (int i = MAIN_FB()->u, h = MAIN_FB()->v; i; i--) { \
|
||||||
|
*dstp = __REV16(*srcp++); \
|
||||||
|
dstp += h; \
|
||||||
|
}
|
||||||
|
|
||||||
#define OV2640_SLV_ADDR (0x60)
|
#define OV2640_SLV_ADDR (0x60)
|
||||||
#define OV5640_SLV_ADDR (0x78)
|
#define OV5640_SLV_ADDR (0x78)
|
||||||
#define OV7725_SLV_ADDR (0x42)
|
#define OV7725_SLV_ADDR (0x42)
|
||||||
|
|||||||
@ -36,18 +36,6 @@ static bool drop_frame = false;
|
|||||||
| CSI_CR1_FB1_DMA_DONE_INTEN_MASK)
|
| CSI_CR1_FB1_DMA_DONE_INTEN_MASK)
|
||||||
//CSI_CR1_RF_OR_INTEN_MASK
|
//CSI_CR1_RF_OR_INTEN_MASK
|
||||||
|
|
||||||
#define copy_line(dstp, srcp) \
|
|
||||||
for (int i = MAIN_FB()->u, h = MAIN_FB()->v; i; i--) { \
|
|
||||||
*dstp = *srcp++; \
|
|
||||||
dstp += h; \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define copy_line_rev(dstp, srcp) \
|
|
||||||
for (int i = MAIN_FB()->u, h = MAIN_FB()->v; i; i--) { \
|
|
||||||
*dstp = __REV16(*srcp++); \
|
|
||||||
dstp += h; \
|
|
||||||
}
|
|
||||||
|
|
||||||
void sensor_init0() {
|
void sensor_init0() {
|
||||||
sensor_abort(true, false);
|
sensor_abort(true, false);
|
||||||
|
|
||||||
@ -315,7 +303,7 @@ void sensor_line_callback(uint32_t addr) {
|
|||||||
if (!sensor.transpose) {
|
if (!sensor.transpose) {
|
||||||
unaligned_memcpy(dst, src, MAIN_FB()->u);
|
unaligned_memcpy(dst, src, MAIN_FB()->u);
|
||||||
} else {
|
} else {
|
||||||
copy_line(dst, src);
|
copy_transposed_line(dst, src);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
@ -328,14 +316,14 @@ void sensor_line_callback(uint32_t addr) {
|
|||||||
if (!sensor.transpose) {
|
if (!sensor.transpose) {
|
||||||
unaligned_memcpy(dst, src, MAIN_FB()->u);
|
unaligned_memcpy(dst, src, MAIN_FB()->u);
|
||||||
} else {
|
} else {
|
||||||
copy_line(dst, src);
|
copy_transposed_line(dst, src);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Extract Y channel from YUV.
|
// Extract Y channel from YUV.
|
||||||
if (!sensor.transpose) {
|
if (!sensor.transpose) {
|
||||||
unaligned_2_to_1_memcpy(dst, src16, MAIN_FB()->u);
|
unaligned_2_to_1_memcpy(dst, src16, MAIN_FB()->u);
|
||||||
} else {
|
} else {
|
||||||
copy_line(dst, src16);
|
copy_transposed_line(dst, src16);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -350,13 +338,13 @@ void sensor_line_callback(uint32_t addr) {
|
|||||||
if (!sensor.transpose) {
|
if (!sensor.transpose) {
|
||||||
unaligned_memcpy_rev16(dst16, src16, MAIN_FB()->u);
|
unaligned_memcpy_rev16(dst16, src16, MAIN_FB()->u);
|
||||||
} else {
|
} else {
|
||||||
copy_line_rev(dst16, src16);
|
copy_transposed_line_rev16(dst16, src16);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!sensor.transpose) {
|
if (!sensor.transpose) {
|
||||||
unaligned_memcpy(dst16, src16, MAIN_FB()->u * sizeof(uint16_t));
|
unaligned_memcpy(dst16, src16, MAIN_FB()->u * sizeof(uint16_t));
|
||||||
} else {
|
} else {
|
||||||
copy_line(dst16, src16);
|
copy_transposed_line(dst16, src16);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -596,10 +596,7 @@ void DCMI_DMAConvCpltUser(uint32_t addr) {
|
|||||||
if (!sensor.transpose) {
|
if (!sensor.transpose) {
|
||||||
unaligned_memcpy(dst, src, MAIN_FB()->u);
|
unaligned_memcpy(dst, src, MAIN_FB()->u);
|
||||||
} else {
|
} else {
|
||||||
for (int i = MAIN_FB()->u, h = MAIN_FB()->v; i; i--) {
|
copy_transposed_line(dst, src);
|
||||||
*dst = *src++;
|
|
||||||
dst += h;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
@ -612,20 +609,14 @@ void DCMI_DMAConvCpltUser(uint32_t addr) {
|
|||||||
if (!sensor.transpose) {
|
if (!sensor.transpose) {
|
||||||
unaligned_memcpy(dst, src, MAIN_FB()->u);
|
unaligned_memcpy(dst, src, MAIN_FB()->u);
|
||||||
} else {
|
} else {
|
||||||
for (int i = MAIN_FB()->u, h = MAIN_FB()->v; i; i--) {
|
copy_transposed_line(dst, src);
|
||||||
*dst = *src++;
|
|
||||||
dst += h;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Extract Y channel from YUV.
|
// Extract Y channel from YUV.
|
||||||
if (!sensor.transpose) {
|
if (!sensor.transpose) {
|
||||||
unaligned_2_to_1_memcpy(dst, src16, MAIN_FB()->u);
|
unaligned_2_to_1_memcpy(dst, src16, MAIN_FB()->u);
|
||||||
} else {
|
} else {
|
||||||
for (int i = MAIN_FB()->u, h = MAIN_FB()->v; i; i--) {
|
copy_transposed_line(dst, src16);
|
||||||
*dst = *src16++;
|
|
||||||
dst += h;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -640,19 +631,13 @@ void DCMI_DMAConvCpltUser(uint32_t addr) {
|
|||||||
if (!sensor.transpose) {
|
if (!sensor.transpose) {
|
||||||
unaligned_memcpy_rev16(dst16, src16, MAIN_FB()->u);
|
unaligned_memcpy_rev16(dst16, src16, MAIN_FB()->u);
|
||||||
} else {
|
} else {
|
||||||
for (int i = MAIN_FB()->u, h = MAIN_FB()->v; i; i--) {
|
copy_transposed_line_rev16(dst16, src16);
|
||||||
*dst16 = __REV16(*src16++);
|
|
||||||
dst16 += h;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!sensor.transpose) {
|
if (!sensor.transpose) {
|
||||||
unaligned_memcpy(dst16, src16, MAIN_FB()->u * sizeof(uint16_t));
|
unaligned_memcpy(dst16, src16, MAIN_FB()->u * sizeof(uint16_t));
|
||||||
} else {
|
} else {
|
||||||
for (int i = MAIN_FB()->u, h = MAIN_FB()->v; i; i--) {
|
copy_transposed_line(dst16, src16);
|
||||||
*dst16 = *src16++;
|
|
||||||
dst16 += h;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user