[17/20] media: adv7604: Support V4L_FIELD_INTERLACED

Message ID 1432139980-12619-18-git-send-email-william.towle@codethink.co.uk (mailing list archive)
State Superseded, archived
Headers

Commit Message

William Towle May 20, 2015, 4:39 p.m. UTC
  When hardware reports interlaced input, correctly set field to
V4L_FIELD_INTERLACED ini adv76xx_fill_format.

Signed-off-by: Rob Taylor <rob.taylor@codethink.co.uk>
Reviewed-by: William Towle <william.towle@codethink.co.uk>
---
 drivers/media/i2c/adv7604.c |    7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
  

Comments

Rob Taylor May 21, 2015, 10:40 a.m. UTC | #1
On 21/05/15 07:10, Hans Verkuil wrote:
> On 05/20/2015 06:39 PM, William Towle wrote:
>> When hardware reports interlaced input, correctly set field to
>> V4L_FIELD_INTERLACED ini adv76xx_fill_format.
>>
>> Signed-off-by: Rob Taylor <rob.taylor@codethink.co.uk>
>> Reviewed-by: William Towle <william.towle@codethink.co.uk>
>> ---
>>  drivers/media/i2c/adv7604.c |    7 ++++++-
>>  1 file changed, 6 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/media/i2c/adv7604.c b/drivers/media/i2c/adv7604.c
>> index 4bde3e1..d77ee1f 100644
>> --- a/drivers/media/i2c/adv7604.c
>> +++ b/drivers/media/i2c/adv7604.c
>> @@ -1791,7 +1791,12 @@ static void adv76xx_fill_format(struct adv76xx_state *state,
>>  
>>  	format->width = state->timings.bt.width;
>>  	format->height = state->timings.bt.height;
>> -	format->field = V4L2_FIELD_NONE;
>> +
>> +	if (state->timings.bt.interlaced)
>> +		format->field= V4L2_FIELD_INTERLACED;
> 
> No, this should be FIELD_ALTERNATE. FIELD_INTERLACED means that the two fields
> are interlaced into a single frame buffer, with FIELD_ALTERNATE each buffer
> contains one field. And when capturing v4l2_buffer should return which field
> (TOP/BOTTOM) the buffer contains. It also complicates cropping/composing: the
> crop rectangle is in frame coordinates, composing uses field coordinates.
> The vivid driver handles this correctly and can be used as a reference.
>
>

OK, that makes sense. I think for now we'll just drop this patch from
the series until we can test this properly - its a bit undercooked..

> Also, no space before the '='. Please add.
> 
> You might be interested in this patch series as well:
> 
> http://permalink.gmane.org/gmane.linux.drivers.video-input-infrastructure/90578

Ah yes, this does look useful.

> I'm thinking of doing some interlaced tests myself, possibly this weekend,
> using the adv7604.


That would be great, happy to test anything on our side.

Thanks
Rob


> Regards,
> 
> 	Hans
> 
>> +	else
>> +		format->field= V4L2_FIELD_NONE;
>> +
>>  	format->colorspace = V4L2_COLORSPACE_SRGB;
>>  
>>  	if (state->timings.bt.flags & V4L2_DV_FL_IS_CE_VIDEO)
>>
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  
Guennadi Liakhovetski May 25, 2015, 3:15 p.m. UTC | #2
On Wed, 20 May 2015, William Towle wrote:

> When hardware reports interlaced input, correctly set field to
> V4L_FIELD_INTERLACED ini adv76xx_fill_format.
> 
> Signed-off-by: Rob Taylor <rob.taylor@codethink.co.uk>
> Reviewed-by: William Towle <william.towle@codethink.co.uk>
> ---
>  drivers/media/i2c/adv7604.c |    7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/media/i2c/adv7604.c b/drivers/media/i2c/adv7604.c
> index 4bde3e1..d77ee1f 100644
> --- a/drivers/media/i2c/adv7604.c
> +++ b/drivers/media/i2c/adv7604.c
> @@ -1791,7 +1791,12 @@ static void adv76xx_fill_format(struct adv76xx_state *state,
>  
>  	format->width = state->timings.bt.width;
>  	format->height = state->timings.bt.height;
> -	format->field = V4L2_FIELD_NONE;
> +
> +	if (state->timings.bt.interlaced)
> +		format->field= V4L2_FIELD_INTERLACED;
> +	else
> +		format->field= V4L2_FIELD_NONE;
> +

A space before "=" please.

Thanks
Guennadi

>  	format->colorspace = V4L2_COLORSPACE_SRGB;
>  
>  	if (state->timings.bt.flags & V4L2_DV_FL_IS_CE_VIDEO)
> -- 
> 1.7.10.4
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  

Patch

diff --git a/drivers/media/i2c/adv7604.c b/drivers/media/i2c/adv7604.c
index 4bde3e1..d77ee1f 100644
--- a/drivers/media/i2c/adv7604.c
+++ b/drivers/media/i2c/adv7604.c
@@ -1791,7 +1791,12 @@  static void adv76xx_fill_format(struct adv76xx_state *state,
 
 	format->width = state->timings.bt.width;
 	format->height = state->timings.bt.height;
-	format->field = V4L2_FIELD_NONE;
+
+	if (state->timings.bt.interlaced)
+		format->field= V4L2_FIELD_INTERLACED;
+	else
+		format->field= V4L2_FIELD_NONE;
+
 	format->colorspace = V4L2_COLORSPACE_SRGB;
 
 	if (state->timings.bt.flags & V4L2_DV_FL_IS_CE_VIDEO)