code review

addressing comments in pull request #390
This commit is contained in:
Diogo Gomes
2017-05-23 18:58:50 +01:00
parent 14a1998a0c
commit 949eec3f97
3 changed files with 58 additions and 54 deletions

6
conf.c
View File

@@ -305,10 +305,10 @@ config_param config_params[] = {
copy_int,
print_int
},
{
{
"flip_axis",
"# Flip the image horizontaly (h) or verticaly (v). The filp affects all saved images as\n"
"# well as movies. Valid values: none (default = no flip), h and v.",
"#Flip image over a given axis (vertical or horizontal), vertical means from left to right,\n"
"# horizontal means top to bottom. Valid values: none, v and h.",
0,
CONF_OFFSET(flip_axis),
copy_string,

View File

@@ -71,6 +71,10 @@ power_line_frequency -1
# well as movies. Valid values: 0 (default = no rotation), 90, 180 and 270.
rotate 0
# Flip image over a given axis (vertical or horizontal), vertical means from left to right
# horizontal means top to bottom. Valid values: none, v and h.
flip_axis none
# Image width (pixels). Valid range: Camera dependent, default: 352
width 320

102
rotate.c
View File

@@ -74,39 +74,39 @@ static void reverse_inplace_quad(unsigned char *src, int size)
}
static void flip_inplace_horizontal(unsigned char *src, int width, int height) {
uint8_t *nsrc = (uint8_t *)src;
uint8_t *nsrc = (uint8_t *)src;
uint8_t *ndst = (uint8_t *)(src + width*(height-1));
register uint8_t tmp;
unsigned int l,w;
register uint8_t tmp;
unsigned int l,w;
for(l=0; l < height/2; l++) {
for(w=0; w < width; w++) {
tmp =*ndst;
*ndst++ = *nsrc;
*nsrc++ = tmp;
}
nsrc = (uint8_t *)(src + l*width);
ndst = (uint8_t *)(src + (width*(height - l-1)));
}
for(l=0; l < height/2; l++) {
for(w=0; w < width; w++) {
tmp =*ndst;
*ndst++ = *nsrc;
*nsrc++ = tmp;
}
nsrc = (uint8_t *)(src + l*width);
ndst = (uint8_t *)(src + (width*(height - l-1)));
}
}
static void flip_inplace_vertical(unsigned char *src, int width, int height)
{
uint8_t *nsrc = (uint8_t *)src;
uint8_t *nsrc = (uint8_t *)src;
uint8_t *ndst = (uint8_t *)(src + width - 1);
register uint8_t tmp;
unsigned int l;
register uint8_t tmp;
unsigned int l;
for(l=0; l < height; l++) {
while (nsrc < ndst) {
tmp =*ndst;
*ndst-- = *nsrc;
*nsrc++ = tmp;
}
nsrc = (uint8_t *)src + l*width;
ndst = nsrc + width - 1;
}
for(l=0; l < height; l++) {
while (nsrc < ndst) {
tmp = *ndst;
*ndst-- = *nsrc;
*nsrc++ = tmp;
}
nsrc = (uint8_t *)src + l*width;
ndst = nsrc + width - 1;
}
}
/**
@@ -208,13 +208,13 @@ void rotate_init(struct context *cnt)
cnt->rotate_data.degrees = cnt->conf.rotate_deg % 360; /* Range: 0..359 */
}
if ( strncmp(cnt->conf.flip_axis, "h", 1) == 0 ) {
cnt->rotate_data.axis = FLIP_TYPE_HORIZONTAL;
} else if ( strncmp(cnt->conf.flip_axis, "v", 1) == 0 ) {
cnt->rotate_data.axis = FLIP_TYPE_VERTICAL;
} else {
cnt->rotate_data.axis = FLIP_TYPE_NONE;
}
if ( strncmp(cnt->conf.flip_axis, "h", 1) == 0 ) {
cnt->rotate_data.axis = FLIP_TYPE_HORIZONTAL;
} else if ( strncmp(cnt->conf.flip_axis, "v", 1) == 0 ) {
cnt->rotate_data.axis = FLIP_TYPE_VERTICAL;
} else {
cnt->rotate_data.axis = FLIP_TYPE_NONE;
}
/*
* Upon entrance to this function, imgs.width and imgs.height contain the
@@ -320,11 +320,11 @@ int rotate_map(struct context *cnt, unsigned char *map)
*/
int wh, wh4 = 0, w2 = 0, h2 = 0; /* width * height, width * height / 4 etc. */
int size, deg;
enum FLIP_TYPE axis;
enum FLIP_TYPE axis;
int width, height;
deg = cnt->rotate_data.degrees;
axis = cnt->rotate_data.axis;
axis = cnt->rotate_data.axis;
width = cnt->rotate_data.cap_width;
height = cnt->rotate_data.cap_height;
@@ -346,24 +346,24 @@ int rotate_map(struct context *cnt, unsigned char *map)
size = wh;
}
switch (axis) {
case FLIP_TYPE_HORIZONTAL:
flip_inplace_horizontal(map,width, height);
if (cnt->imgs.type == VIDEO_PALETTE_YUV420P) {
flip_inplace_horizontal(map + wh, w2, h2);
flip_inplace_horizontal(map + wh + wh4, w2, h2);
}
break;
case FLIP_TYPE_VERTICAL:
flip_inplace_vertical(map,width, height);
if (cnt->imgs.type == VIDEO_PALETTE_YUV420P) {
flip_inplace_vertical(map + wh, w2, h2);
flip_inplace_vertical(map + wh + wh4, w2, h2);
}
break;
default:
break;
}
switch (axis) {
case FLIP_TYPE_HORIZONTAL:
flip_inplace_horizontal(map,width, height);
if (cnt->imgs.type == VIDEO_PALETTE_YUV420P) {
flip_inplace_horizontal(map + wh, w2, h2);
flip_inplace_horizontal(map + wh + wh4, w2, h2);
}
break;
case FLIP_TYPE_VERTICAL:
flip_inplace_vertical(map,width, height);
if (cnt->imgs.type == VIDEO_PALETTE_YUV420P) {
flip_inplace_vertical(map + wh, w2, h2);
flip_inplace_vertical(map + wh + wh4, w2, h2);
}
break;
default:
break;
}
switch (deg) {
case 90: