Re: [PATCH 1/1] v4l: Add frame end event

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Sakari,

On 11/01/2013 02:10 PM, Sakari Ailus wrote:
> Add an event to signal frame end. This is not necessarily the same timestamp
> as the video buffer done timestamp, and can be also subscribed by other
> processes than the one controlling streaming and buffer (de)queueing.
> 
> Also make all event type constants appear as constants in documentation and
> move frame sync event struct documentation after all control event
> documentation.
> 
> Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>
> ---
> Hi folks,
> 
> As we have a frame sync event that's being used to tell about the frame
> start, I thought of having a frame end event as well. This isn't exactly the
> same as a buffer ready event which could take place already earlier for
> instance if cropping is being done.
> 
> I propose to use the id field for the purpose (V4L2_EVENT_FRAME_SYNC_START /
> V4L2_EVENT_FRAME_SYNC_END). The frame start event will retain its old id
> zero.
> 
> Originally I think we thought of using the id field for the line, but
> now I think it's worth adding a distinct event for that purpose: line based
> events are typically triggered from other sources than line based events.
> Frame sync, in my opinion, matches better with frame start and frame end
> than to anything related to lines.
> 
> So should line based events be supported, they should have their own event
> type and use the id field as the line number.

I have no objections to this patch. You do need to adapt drivers/media/platform/omap3isp/ispccdc.c
a bit since it is using the FRAME_SYNC event and so it should check the id field.

But will you also be upstreaming a driver that uses the SYNC_END?

I don't really want to merge this if nobody is using it.

Regards,

	Hans

> 
> Kind regards,
> Sakari
> 
>  Documentation/DocBook/media/v4l/vidioc-dqevent.xml | 58 +++++++++++++++-------
>  .../DocBook/media/v4l/vidioc-subscribe-event.xml   | 11 +++-
>  include/uapi/linux/videodev2.h                     |  3 ++
>  3 files changed, 51 insertions(+), 21 deletions(-)
> 
> diff --git a/Documentation/DocBook/media/v4l/vidioc-dqevent.xml b/Documentation/DocBook/media/v4l/vidioc-dqevent.xml
> index 89891ad..e258c6e 100644
> --- a/Documentation/DocBook/media/v4l/vidioc-dqevent.xml
> +++ b/Documentation/DocBook/media/v4l/vidioc-dqevent.xml
> @@ -76,21 +76,22 @@
>  	    <entry></entry>
>  	    <entry>&v4l2-event-vsync;</entry>
>              <entry><structfield>vsync</structfield></entry>
> -	    <entry>Event data for event V4L2_EVENT_VSYNC.
> +	    <entry>Event data for event <constant>V4L2_EVENT_VSYNC</constant>.
>              </entry>
>  	  </row>
>  	  <row>
>  	    <entry></entry>
>  	    <entry>&v4l2-event-ctrl;</entry>
>              <entry><structfield>ctrl</structfield></entry>
> -	    <entry>Event data for event V4L2_EVENT_CTRL.
> +	    <entry>Event data for event <constant>V4L2_EVENT_CTRL</constant>.
>              </entry>
>  	  </row>
>  	  <row>
>  	    <entry></entry>
>  	    <entry>&v4l2-event-frame-sync;</entry>
>              <entry><structfield>frame_sync</structfield></entry>
> -	    <entry>Event data for event V4L2_EVENT_FRAME_SYNC.</entry>
> +	    <entry>Event data for event <constant>V4L2_EVENT_FRAME_SYNC
> +	    </constant>.</entry>
>  	  </row>
>  	  <row>
>  	    <entry></entry>
> @@ -226,22 +227,6 @@
>        </tgroup>
>      </table>
>  
> -    <table frame="none" pgwide="1" id="v4l2-event-frame-sync">
> -      <title>struct <structname>v4l2_event_frame_sync</structname></title>
> -      <tgroup cols="3">
> -	&cs-str;
> -	<tbody valign="top">
> -	  <row>
> -	    <entry>__u32</entry>
> -	    <entry><structfield>frame_sequence</structfield></entry>
> -	    <entry>
> -	      The sequence number of the frame being received.
> -	    </entry>
> -	  </row>
> -	</tbody>
> -      </tgroup>
> -    </table>
> -
>      <table pgwide="1" frame="none" id="changes-flags">
>        <title>Changes</title>
>        <tgroup cols="3">
> @@ -270,6 +255,41 @@
>  	</tbody>
>        </tgroup>
>      </table>
> +
> +    <table frame="none" pgwide="1" id="v4l2-event-frame-sync">
> +      <title>struct <structname>v4l2_event_frame_sync</structname></title>
> +      <tgroup cols="3">
> +	&cs-str;
> +	<tbody valign="top">
> +	  <row>
> +	    <entry>__u32</entry>
> +	    <entry><structfield>frame_sequence</structfield></entry>
> +	    <entry>
> +	      The sequence number of the frame being received.
> +	    </entry>
> +	  </row>
> +	</tbody>
> +      </tgroup>
> +    </table>
> +
> +    <table pgwide="1" frame="none" id="v4l2-event-frame-sync-ids">
> +      <title>Frame sync event IDs</title>
> +      <tgroup cols="3">
> +	&cs-def;
> +	<tbody valign="top">
> +	  <row>
> +	    <entry><constant>V4L2_EVENT_FRAME_SYNC_START</constant></entry>
> +	    <entry>0x0000</entry>
> +	    <entry>Frame sync event delivered at frame start.</entry>
> +	  </row>
> +	  <row>
> +	    <entry><constant>V4L2_EVENT_FRAME_SYNC_END</constant></entry>
> +	    <entry>0x0001</entry>
> +	    <entry>Frame sync event delivered at frame end.</entry>
> +	  </row>
> +	</tbody>
> +      </tgroup>
> +    </table>
>    </refsect1>
>    <refsect1>
>      &return-value;
> diff --git a/Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml b/Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml
> index 5c70b61..aaa6fe1 100644
> --- a/Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml
> +++ b/Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml
> @@ -143,15 +143,22 @@
>  	    <entry>4</entry>
>  	    <entry>
>  	      <para>Triggered immediately when the reception of a
> -	      frame has begun. This event has a
> +	      frame has begun or ended. This event has a
>  	      &v4l2-event-frame-sync; associated with it.</para>
>  
>  	      <para>If the hardware needs to be stopped in the case of a
>  	      buffer underrun it might not be able to generate this event.
>  	      In such cases the <structfield>frame_sequence</structfield>
>  	      field in &v4l2-event-frame-sync; will not be incremented. This
> -	      causes two consecutive frame sequence numbers to have n times
> +	      causes two consecutive frame sync events to have n times
>  	      frame interval in between them.</para>
> +
> +	      <para>The <structfield>id</structfield> field must be set to
> +	      either <constant>V4L2_EVENT_FRAME_SYNC_START</constant> or
> +	      <constant>V4L2_EVENT_FRAME_SYNC_END</constant> which signify
> +	      the start of frame and end of frame, respectively. See
> +	      <xref linkend="v4l2-event-frame-sync-ids" /> for more
> +	      information.</para>
>  	    </entry>
>  	  </row>
>  	  <row>
> diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
> index 437f1b0..133957a 100644
> --- a/include/uapi/linux/videodev2.h
> +++ b/include/uapi/linux/videodev2.h
> @@ -1760,6 +1760,9 @@ struct v4l2_event_ctrl {
>  	__s32 default_value;
>  };
>  
> +#define V4L2_EVENT_FRAME_SYNC_START		0
> +#define V4L2_EVENT_FRAME_SYNC_END		1
> +
>  struct v4l2_event_frame_sync {
>  	__u32 frame_sequence;
>  };
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux