Re: [PATCH 0/3] Handling of reduced FPS in V4L2

From: Hans Verkuil
Date: Fri Mar 24 2017 - 07:24:36 EST


On 03/24/17 12:03, Jose Abreu wrote:
> Hi Hans,
>
>
> On 21-03-2017 11:49, Jose Abreu wrote:
>> Hi all,
>>
>> This is a follow up patch from this discussion [1]. It should be
>> seen more as a starting point to introduce better handling of
>> time per frame in v4l2. Quoting Hans Verkuil from [1]:
>>
>> 1) "Add a flag V4L2_DV_FL_CAN_DETECT_REDUCED_FPS. If set,
>> then the hw can detect the difference between regular fps
>> and 1000/1001 fps. Note: this is only valid for timings of
>> VIC codes with the V4L2_DV_FL_CAN_REDUCE_FPS flag set."
>>
>> 2) "Allow V4L2_DV_FL_REDUCED_FPS to be used for receivers
>> if V4L2_DV_FL_CAN_DETECT_REDUCED_FPS is set."
>>
>> 3) "For standard VIC codes the pixelclock returned by
>> query_dv_timings is that of the corresponding VIC timing,
>> not what is measured. This will ensure fixed fps values"
>>
>> 4) "g_parm should calculate the fps based on the v4l2_bt_timings
>> struct, looking at the REDUCES_FPS flags. For those receivers that
>> cannot detect the difference, the fps will be 24/30/60 Hz, for
>> those that can detect the difference g_parm can check if both
>> V4L2_DV_FL_CAN_DETECT_REDUCED_FPS and V4L2_DV_FL_REDUCED_FPS are
>> set and reduce the fps by 1000/1001."
>>
>> -----------
>> In terms of implementation:
>> - Point 1) is done in patch 1/3
>> - Point 2) and 3) should be done by a HDMI Receiver driver
>> (I think?).
>> - Point 4) is done in patch 2/3.
>> - The patch 3/3 is a simple implementation (which was not
>> tested) in the cobalt driver
>> -----------
>>
>> [1] https://patchwork.kernel.org/patch/9609441/
>>
>> Best regards,
>> Jose Miguel Abreu
>>
>> Cc: Carlos Palminha <palminha@xxxxxxxxxxxx>
>> Cc: Mauro Carvalho Chehab <mchehab@xxxxxxxxxx>
>> Cc: Hans Verkuil <hans.verkuil@xxxxxxxxx>
>> Cc: linux-media@xxxxxxxxxxxxxxx
>> Cc: linux-kernel@xxxxxxxxxxxxxxx
>>
>> Jose Abreu (3):
>> [media] videodev2.h: Add new DV flag CAN_DETECT_REDUCED_FPS
>> [media] v4l2-dv-timings: Introduce v4l2_calc_timeperframe helper
>> [media] cobalt: Use v4l2_calc_timeperframe helper
>>
>> drivers/media/pci/cobalt/cobalt-v4l2.c | 9 +++++--
>> drivers/media/v4l2-core/v4l2-dv-timings.c | 39 +++++++++++++++++++++++++++++++
>> include/media/v4l2-dv-timings.h | 11 +++++++++
>> include/uapi/linux/videodev2.h | 7 ++++++
>> 4 files changed, 64 insertions(+), 2 deletions(-)
>>
>
> Can you please review this series, when possible? And if you
> could test it on cobalt it would be great :)

Hopefully next week. Did you have some real-world numbers w.r.t. measured
pixelclock frequencies and 60 vs 59.94 Hz and 24 vs 23.976 Hz?

I do want to see that, since this patch series only makes sense if you can
actually make use of it to reliably detect the difference.

I will try to test that myself with cobalt, but almost certainly I won't
be able to tell the difference; if memory serves it can't detect the freq
with high enough precision.

Regards,

Hans