[FFmpeg-devel] [PATCH] Add support to video4linux2 framerate auto-set.

Stefano Sabatini stefano.sabatini-lala
Wed Jan 5 12:26:58 CET 2011


On date Wednesday 2011-01-05 08:46:05 +0100, Luca Abeni encoded:
> Hi Stefano,
> 
> On 01/04/2011 09:52 PM, Stefano Sabatini wrote:
> >In particular, fix ffmpeg grabbing timestamps when the timebase value
> >is not set through the CLI.
> 
> The idea looks good, but, can you move the frame rate autodetection to
> v4l2_set_parameters(), after the call to VIDIOC_S_PARM? (more precisely,
> after the "if (ap->time_base.num && ap->time_base.den)" block)
> Does it work, with such a change? (I think so, but, can you verify?)

This would require another change:
if (ap->time_base.num && ap->time_base.den) {
   // set the timebase in the driver
}
if (!ap->time_base.num || !ap->time_base.den) {
   // auto-select timebase and set it in the driver
}

which involves code duplication.

I put the framerate auto-select code just after the size auto-select
code, as that looked more symmetrical and sounded more consistent with
the overall design.

As for v4l2_set_parameters(), I suppose it should be used for setting
parameters, so the auto-selection phase should be already done when
the function is called. Currently the logic implemented is:

v4l2_read_header()
  1. check the size and frame rate values, if unset (i.e. if they are
     set to 0) then use the auto-select feature of the v4l driver for
     selecting the values to set

v4l2_set_parameters()
  2. set the size and frame rate values (they need to be non-0 values)

We could move 1. to v4l2_set_parameters() but I prefer to keep the two
operations in different functions.
-- 
FFmpeg = Faithless and Funny Murdering Powered Experimenting Ghost



More information about the ffmpeg-devel mailing list