[PATCH] Staging: go7007: detector features - add new tuning option

Dan Carpenter dan.carpenter at oracle.com
Wed Apr 18 08:49:36 UTC 2012


On Wed, Apr 18, 2012 at 11:50:15AM +0400, volokh wrote:
> >From a600b33c0824bf1b5031f820f8afaefa9e51dc16 Mon Sep 17 00:00:00 2001
> From: Volokh Konstantin <my84 at bk.ru>
> Date: Tue, 17 Apr 2012 21:39:15 +0400
> Subject: [PATCH] Staging: go7007: detector features - add new tuning option
>  for card(     V4L2_MPEG_VIDEO_ENCODING_H263    
>  ,V4L2_CID_MPEG_VIDEO_B_FRAMES) - add
>  framesizes&frameintervals control - tested&realize motion
>  detector control(     GO7007IOC_REGION_NUMBER    
>  ,GO7007IOC_PIXEL_THRESOLD     ,GO7007IOC_MOTION_THRESOLD   
>   ,GO7007IOC_TRIGGER     ,GO7007IOC_REGION_CONTROL    
>  ,GO7007IOC_CLIP_LEFT     ,GO7007IOC_CLIP_TOP    
>  ,GO7007IOC_CLIP_WIDTH     ,GO7007IOC_CLIP_HEIGHT)
> 
> Tested with  Angelo PCI-MPG24(Adlink) with go7007&tw2804 onboard
> 
> With Utility script for conversation to 'c' style based on checkpatch.pl
> 

Something went desperately wrong with your style script...  :(

This patch needs to be broken up into multiple patches.  For example
one patch could remove the #ifdefed out dead code.  Pull all the
unrelated cleanups out into their own patches.

> @@ -159,6 +152,8 @@ static u32 get_frame_type_flag(struct go7007_buffer *gobuf, int format)
>  		default:
>  			return 0;
>  		}
> +	default:
> +	  break;

Use 8 space tabs.

>  	}
>  
>  	return 0;
> @@ -171,7 +166,7 @@ static int set_capture_size(struct go7007 *go, struct v4l2_format *fmt, int try)
>  
>  	if (fmt != NULL && fmt->fmt.pix.pixelformat != V4L2_PIX_FMT_MJPEG &&
>  			fmt->fmt.pix.pixelformat != V4L2_PIX_FMT_MPEG &&
> -			fmt->fmt.pix.pixelformat != V4L2_PIX_FMT_MPEG4)
> +			fmt->fmt.pix.pixelformat != V4L2_PIX_FMT_H263)
>  		return -EINVAL;
>  
>  	switch (go->standard) {
> @@ -303,11 +298,10 @@ static int set_capture_size(struct go7007 *go, struct v4l2_format *fmt, int try)
>  		go->gop_header_enable = 1;
>  		go->dvd_mode = 0;
>  		break;
> -	/* Backwards compatibility only! */
> -	case V4L2_PIX_FMT_MPEG4:
> -		if (go->format == GO7007_FORMAT_MPEG4)
> +	case V4L2_PIX_FMT_H263:
> +		if (go->format == GO7007_FORMAT_H263)
>  			break;
> -		go->format = GO7007_FORMAT_MPEG4;
> +		go->format = GO7007_FORMAT_H263;
>  		go->pali = 0xf5;
>  		go->aspect_ratio = GO7007_RATIO_1_1;
>  		go->gop_size = go->sensor_framerate / 1000;
> @@ -334,112 +328,388 @@ static int set_capture_size(struct go7007 *go, struct v4l2_format *fmt, int try)
>  	return 0;
>  }
>  
> -#if 0
> -static int clip_to_modet_map(struct go7007 *go, int region,
> -		struct v4l2_clip *clip_list)
> +static int md_g_ctrl(struct v4l2_control *ctrl, struct go7007 *go)
>  {
> -	struct v4l2_clip clip, *clip_ptr;
> -	int x, y, mbnum;
> -
> -	/* Check if coordinates are OK and if any macroblocks are already
> -	 * used by other regions (besides 0) */
> -	clip_ptr = clip_list;
> -	while (clip_ptr) {
> -		if (copy_from_user(&clip, clip_ptr, sizeof(clip)))
> -			return -EFAULT;
> -		if (clip.c.left < 0 || (clip.c.left & 0xF) ||
> -				clip.c.width <= 0 || (clip.c.width & 0xF))
> -			return -EINVAL;
> -		if (clip.c.left + clip.c.width > go->width)
> -			return -EINVAL;
> -		if (clip.c.top < 0 || (clip.c.top & 0xF) ||
> -				clip.c.height <= 0 || (clip.c.height & 0xF))
> -			return -EINVAL;
> -		if (clip.c.top + clip.c.height > go->height)
> -			return -EINVAL;
> -		for (y = 0; y < clip.c.height; y += 16)
> -			for (x = 0; x < clip.c.width; x += 16) {
> -				mbnum = (go->width >> 4) *
> -						((clip.c.top + y) >> 4) +
> -					((clip.c.left + x) >> 4);
> -				if (go->modet_map[mbnum] != 0 &&
> -						go->modet_map[mbnum] != region)
> -					return -EBUSY;
> -			}
> -		clip_ptr = clip.next;
> +	switch (ctrl->id) {
> +	case GO7007IOC_REGION_NUMBER:
> +	ctrl->value = go->fCurrentRegion;
> +	break;
> +	case GO7007IOC_PIXEL_THRESOLD:
> +	ctrl->value = (go->modet[go->fCurrentRegion].pixel_threshold<<1)+1;
> +	break;
> +	case GO7007IOC_MOTION_THRESOLD:
> +	ctrl->value = (go->modet[go->fCurrentRegion].motion_threshold<<1)+1;
> +	break;
> +	case GO7007IOC_TRIGGER:
> +	ctrl->value = (go->modet[go->fCurrentRegion].mb_threshold<<1)+1;
> +	break;
> +	case GO7007IOC_CLIP_LEFT:
> +	ctrl->value = go->fClipRegion.left;
> +	break;
> +	case GO7007IOC_CLIP_TOP:
> +	ctrl->value = go->fClipRegion.top;
> +	break;
> +	case GO7007IOC_CLIP_WIDTH:
> +	ctrl->value = go->fClipRegion.width;
> +	break;
> +	case GO7007IOC_CLIP_HEIGHT:
> +	ctrl->value = go->fClipRegion.height;
> +	break;
> +	case GO7007IOC_REGION_CONTROL:
> +	default:
> +	return -EINVAL;

Indenting on switch statements should look like this:

	switch (ctrl->id) {
	case GO7007IOC_REGION_NUMBER:
		ctrl->value = go->fCurrentRegion;
		break;
	case GO7007IOC_PIXEL_THRESOLD:

etc.

>  	}
> +	return 0;
> +}
>  
> -	/* Clear old region macroblocks */
> -	for (mbnum = 0; mbnum < 1624; ++mbnum)
> -		if (go->modet_map[mbnum] == region)
> +static void ClearModetMap(struct go7007 *go, char Region)

The original code used "region" and that was better than "Region".
Anyway, don't do unrelated renaming because it messes up the patch.

> +{
> +  /* Clear old region macroblocks */
> +	int mbnum;

Put a blank line here.

> +	for (mbnum = 0; mbnum < sizeof(go->modet_map); ++mbnum)
> +		if (go->modet_map[mbnum] == Region)
>  			go->modet_map[mbnum] = 0;
> +}
>  
> -	/* Claim macroblocks in this list */
> -	clip_ptr = clip_list;
> -	while (clip_ptr) {
> -		if (copy_from_user(&clip, clip_ptr, sizeof(clip)))
> -			return -EFAULT;
> -		for (y = 0; y < clip.c.height; y += 16)
> -			for (x = 0; x < clip.c.width; x += 16) {
> -				mbnum = (go->width >> 4) *
> -						((clip.c.top + y) >> 4) +
> -					((clip.c.left + x) >> 4);
> -				go->modet_map[mbnum] = region;
> -			}
> -		clip_ptr = clip.next;
> +static int RectToModetMap(
> +	struct go7007 *go,
> +	char Region,
> +	struct v4l2_rect *Rect,
> +	int Delete)
> +{
> +	register int x, y, mbnum;
> +  /* Check if coordinates are OK and if any macroblocks are already
> +   * used by other regions (besides 0) */
> +/*  if(Rect)*/
> +	if (
> +	Rect->left < 0 || (
> +	Rect->left & 0xF) || Rect->width <= 0 || (
> +	Rect->width & 0xF))
> +		return -EINVAL;

I'm not sure what went wrong here with indenting.  You used a tool
to do this automatically?  Can you redo it, it's not worth reviewing
as is.

So basically this was not a proper review at all, and I understand
that.  Please break it up into small patch, fix the style issues,
and we'll review it properly next time.

regards,
dan carpenter




More information about the devel mailing list