Ticket #4988: 0001-v4l2-added-discard-timestamps-option.patch
| File 0001-v4l2-added-discard-timestamps-option.patch, 3.7 KB (added by , 10 years ago) |
|---|
-
libavdevice/v4l2.c
From 58b07e1477dcd0cc9af78cacf9176167e451dbea Mon Sep 17 00:00:00 2001 From: Oliver Collyer <ovcollyer@mac.com> Date: Wed, 31 Aug 2016 18:36:52 +0300 Subject: [PATCH] v4l2 - added discard timestamps option --- libavdevice/v4l2.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/libavdevice/v4l2.c b/libavdevice/v4l2.c index 02dba37..6b992f2 100644
a b static const int desired_video_buffers = 256; 59 59 #define V4L_TS_MONO2ABS 2 60 60 61 61 /** 62 * Discard the timestamps of the grabbed frames. 63 */ 64 #define V4L_TS_DISCARD 3 65 66 /** 62 67 * Once the kind of timestamps returned by the kernel have been detected, 63 68 * the value of the timefilter (NULL or not) determines whether a conversion 64 69 * takes place. … … static int mmap_read_frame(AVFormatContext *ctx, AVPacket *pkt) 584 589 return AVERROR(ENOMEM); 585 590 } 586 591 } 587 pkt->pts = buf.timestamp.tv_sec * INT64_C(1000000) + buf.timestamp.tv_usec; 588 convert_timestamp(ctx, &pkt->pts); 592 if (s->ts_mode == V4L_TS_DISCARD) 593 pkt->pts = AV_NOPTS_VALUE; 594 else { 595 pkt->pts = buf.timestamp.tv_sec * INT64_C(1000000) + buf.timestamp.tv_usec; 596 convert_timestamp(ctx, &pkt->pts); 597 } 589 598 590 599 return pkt->size; 591 600 } … … static const AVOption options[] = { 1107 1116 { "list_standards", "list supported standards and exit", OFFSET(list_standard), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, 1, DEC, "list_standards" }, 1108 1117 { "all", "show all supported standards", OFFSET(list_standard), AV_OPT_TYPE_CONST, {.i64 = 1 }, 0, 0, DEC, "list_standards" }, 1109 1118 1110 { "timestamps", "set type of timestamps for grabbed frames", OFFSET(ts_mode), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, 2, DEC, "timestamps" }, 1111 { "ts", "set type of timestamps for grabbed frames", OFFSET(ts_mode), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, 2, DEC, "timestamps" }, 1112 { "default", "use timestamps from the kernel", OFFSET(ts_mode), AV_OPT_TYPE_CONST, {.i64 = V4L_TS_DEFAULT }, 0, 2, DEC, "timestamps" }, 1113 { "abs", "use absolute timestamps (wall clock)", OFFSET(ts_mode), AV_OPT_TYPE_CONST, {.i64 = V4L_TS_ABS }, 0, 2, DEC, "timestamps" }, 1114 { "mono2abs", "force conversion from monotonic to absolute timestamps", OFFSET(ts_mode), AV_OPT_TYPE_CONST, {.i64 = V4L_TS_MONO2ABS }, 0, 2, DEC, "timestamps" }, 1119 { "timestamps", "set type of timestamps for grabbed frames", OFFSET(ts_mode), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, 3, DEC, "timestamps" }, 1120 { "ts", "set type of timestamps for grabbed frames", OFFSET(ts_mode), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, 3, DEC, "timestamps" }, 1121 { "default", "use timestamps from the kernel", OFFSET(ts_mode), AV_OPT_TYPE_CONST, {.i64 = V4L_TS_DEFAULT }, 0, 3, DEC, "timestamps" }, 1122 { "abs", "use absolute timestamps (wall clock)", OFFSET(ts_mode), AV_OPT_TYPE_CONST, {.i64 = V4L_TS_ABS }, 0, 3, DEC, "timestamps" }, 1123 { "mono2abs", "force conversion from monotonic to absolute timestamps", OFFSET(ts_mode), AV_OPT_TYPE_CONST, {.i64 = V4L_TS_MONO2ABS }, 0, 3, DEC, "timestamps" }, 1124 { "discard", "discard timestamps of grabbed frames", OFFSET(ts_mode), AV_OPT_TYPE_CONST, {.i64 = V4L_TS_DISCARD }, 0, 3, DEC, "timestamps" }, 1125 1115 1126 { "use_libv4l2", "use libv4l2 (v4l-utils) conversion functions", OFFSET(use_libv4l2), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, DEC }, 1116 1127 { NULL }, 1117 1128 };
