diff mbox

[yavta,6/9] Timestamp source for output buffers

Message ID 1393690690-5004-7-git-send-email-sakari.ailus@iki.fi (mailing list archive)
State New, archived
Headers show

Commit Message

Sakari Ailus March 1, 2014, 4:18 p.m. UTC
Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi>
---
 yavta.c |   18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

Comments

Laurent Pinchart April 1, 2014, 10:20 p.m. UTC | #1
Hi Sakari,

Thank you for the patch.

On Saturday 01 March 2014 18:18:07 Sakari Ailus wrote:
> Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi>
> ---
>  yavta.c |   18 +++++++++++++++++-
>  1 file changed, 17 insertions(+), 1 deletion(-)
> 
> diff --git a/yavta.c b/yavta.c
> index a9b192a..71c1477 100644
> --- a/yavta.c
> +++ b/yavta.c
> @@ -73,6 +73,7 @@ struct device
>  	unsigned int height;
>  	unsigned int bytesperline;
>  	unsigned int imagesize;
> +	uint32_t buffer_output_flags;
> 
>  	void *pattern;
>  	unsigned int patternsize;
> @@ -611,6 +612,7 @@ static int video_queue_buffer(struct device *dev, int
> index, enum buffer_fill_mo buf.m.userptr = (unsigned
> long)dev->buffers[index].mem;
> 
>  	if (dev->type == V4L2_BUF_TYPE_VIDEO_OUTPUT) {
> +		buf.flags = dev->buffer_output_flags;
>  		buf.bytesused = dev->patternsize;
>  		memcpy(dev->buffers[buf.index].mem, dev->pattern, dev->patternsize);
>  	} else {
> @@ -1255,6 +1257,7 @@ static void usage(const char *argv0)
>  	printf("    --no-query			Don't query capabilities on open\n");
>  	printf("    --offset			User pointer buffer offset from page
> start\n");
>  	printf("    --requeue-last		Requeue the last buffers before
> streamoff\n");
> +	printf("    --timestamp-source		Set timestamp source on output
> buffers [eof, soe]\n");
>  	printf("    --skip n			Skip the first n frames\n");
>  	printf("    --sleep-forever		Sleep forever after configuring the
> device\n"); printf("    --stride value		Line stride in bytes\n");
> @@ -1269,6 +1272,7 @@ static void usage(const char *argv0)
>  #define OPT_REQUEUE_LAST	262
>  #define OPT_STRIDE		263
>  #define OPT_FD			264
> +#define OPT_TSTAMP_SRC		265
> 
>  static struct option opts[] = {
>  	{"capture", 2, 0, 'c'},
> @@ -1298,7 +1302,8 @@ static struct option opts[] = {
>  	{"sleep-forever", 0, 0, OPT_SLEEP_FOREVER},
>  	{"stride", 1, 0, OPT_STRIDE},
>  	{"time-per-frame", 1, 0, 't'},
> -	{"userptr", 0, 0, 'u'},
> +	{"timestamp-source", 1, 0, OPT_TSTAMP_SRC},
> +	{"userptr", 1, 0, 'u'},

This seems to be an unrelated change.

>  	{0, 0, 0, 0}
>  };
> 
> @@ -1487,6 +1492,17 @@ int main(int argc, char *argv[])
>  		case OPT_STRIDE:
>  			stride = atoi(optarg);
>  			break;
> +		case OPT_TSTAMP_SRC:
> +			if (!strcmp(optarg, "eof")) {
> +				dev.buffer_output_flags |= V4L2_BUF_FLAG_TSTAMP_SRC_EOF;

As the buffer_output_flags isn't used for anything else, would it make sense 
to just name it timestamp_source ?

> +			} else if (!strcmp(optarg, "soe")) {
> +				dev.buffer_output_flags |= V4L2_BUF_FLAG_TSTAMP_SRC_SOE;
> +			} else {
> +				printf("Invalid timestamp source %s\n", optarg);
> +				return 1;
> +			}
> +			printf("Using %s timestamp source\n", optarg);

Do we really need this printf ?

> +			break;
>  		case OPT_USERPTR_OFFSET:
>  			userptr_offset = atoi(optarg);
>  			break;
Sakari Ailus April 10, 2014, 6:53 p.m. UTC | #2
Hi Laurent,

Laurent Pinchart wrote:
...
>> @@ -1298,7 +1302,8 @@ static struct option opts[] = {
>>   	{"sleep-forever", 0, 0, OPT_SLEEP_FOREVER},
>>   	{"stride", 1, 0, OPT_STRIDE},
>>   	{"time-per-frame", 1, 0, 't'},
>> -	{"userptr", 0, 0, 'u'},
>> +	{"timestamp-source", 1, 0, OPT_TSTAMP_SRC},
>> +	{"userptr", 1, 0, 'u'},
>
> This seems to be an unrelated change.

Oops! My bad.

>>   	{0, 0, 0, 0}
>>   };
>>
>> @@ -1487,6 +1492,17 @@ int main(int argc, char *argv[])
>>   		case OPT_STRIDE:
>>   			stride = atoi(optarg);
>>   			break;
>> +		case OPT_TSTAMP_SRC:
>> +			if (!strcmp(optarg, "eof")) {
>> +				dev.buffer_output_flags |= V4L2_BUF_FLAG_TSTAMP_SRC_EOF;
>
> As the buffer_output_flags isn't used for anything else, would it make sense
> to just name it timestamp_source ?

Currently not. But it could. I'm fine with the change if you insist. :-)

>> +			} else if (!strcmp(optarg, "soe")) {
>> +				dev.buffer_output_flags |= V4L2_BUF_FLAG_TSTAMP_SRC_SOE;
>> +			} else {
>> +				printf("Invalid timestamp source %s\n", optarg);
>> +				return 1;
>> +			}
>> +			printf("Using %s timestamp source\n", optarg);
>
> Do we really need this printf ?

Time to add a "verbose" option? :-D

I'll remove it.
diff mbox

Patch

diff --git a/yavta.c b/yavta.c
index a9b192a..71c1477 100644
--- a/yavta.c
+++ b/yavta.c
@@ -73,6 +73,7 @@  struct device
 	unsigned int height;
 	unsigned int bytesperline;
 	unsigned int imagesize;
+	uint32_t buffer_output_flags;
 
 	void *pattern;
 	unsigned int patternsize;
@@ -611,6 +612,7 @@  static int video_queue_buffer(struct device *dev, int index, enum buffer_fill_mo
 		buf.m.userptr = (unsigned long)dev->buffers[index].mem;
 
 	if (dev->type == V4L2_BUF_TYPE_VIDEO_OUTPUT) {
+		buf.flags = dev->buffer_output_flags;
 		buf.bytesused = dev->patternsize;
 		memcpy(dev->buffers[buf.index].mem, dev->pattern, dev->patternsize);
 	} else {
@@ -1255,6 +1257,7 @@  static void usage(const char *argv0)
 	printf("    --no-query			Don't query capabilities on open\n");
 	printf("    --offset			User pointer buffer offset from page start\n");
 	printf("    --requeue-last		Requeue the last buffers before streamoff\n");
+	printf("    --timestamp-source		Set timestamp source on output buffers [eof, soe]\n");
 	printf("    --skip n			Skip the first n frames\n");
 	printf("    --sleep-forever		Sleep forever after configuring the device\n");
 	printf("    --stride value		Line stride in bytes\n");
@@ -1269,6 +1272,7 @@  static void usage(const char *argv0)
 #define OPT_REQUEUE_LAST	262
 #define OPT_STRIDE		263
 #define OPT_FD			264
+#define OPT_TSTAMP_SRC		265
 
 static struct option opts[] = {
 	{"capture", 2, 0, 'c'},
@@ -1298,7 +1302,8 @@  static struct option opts[] = {
 	{"sleep-forever", 0, 0, OPT_SLEEP_FOREVER},
 	{"stride", 1, 0, OPT_STRIDE},
 	{"time-per-frame", 1, 0, 't'},
-	{"userptr", 0, 0, 'u'},
+	{"timestamp-source", 1, 0, OPT_TSTAMP_SRC},
+	{"userptr", 1, 0, 'u'},
 	{0, 0, 0, 0}
 };
 
@@ -1487,6 +1492,17 @@  int main(int argc, char *argv[])
 		case OPT_STRIDE:
 			stride = atoi(optarg);
 			break;
+		case OPT_TSTAMP_SRC:
+			if (!strcmp(optarg, "eof")) {
+				dev.buffer_output_flags |= V4L2_BUF_FLAG_TSTAMP_SRC_EOF;
+			} else if (!strcmp(optarg, "soe")) {
+				dev.buffer_output_flags |= V4L2_BUF_FLAG_TSTAMP_SRC_SOE;
+			} else {
+				printf("Invalid timestamp source %s\n", optarg);
+				return 1;
+			}
+			printf("Using %s timestamp source\n", optarg);
+			break;
 		case OPT_USERPTR_OFFSET:
 			userptr_offset = atoi(optarg);
 			break;