Ticket #4988: 0001-v4l2-added-discard-timestamps-option.patch

File 0001-v4l2-added-discard-timestamps-option.patch, 3.7 KB (added by oviano, 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;  
    5959#define V4L_TS_MONO2ABS 2
    6060
    6161/**
     62 * Discard the timestamps of the grabbed frames.
     63 */
     64#define V4L_TS_DISCARD  3
     65
     66/**
    6267 * Once the kind of timestamps returned by the kernel have been detected,
    6368 * the value of the timefilter (NULL or not) determines whether a conversion
    6469 * takes place.
    static int mmap_read_frame(AVFormatContext *ctx, AVPacket *pkt)  
    584589            return AVERROR(ENOMEM);
    585590        }
    586591    }
    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    }
    589598
    590599    return pkt->size;
    591600}
    static const AVOption options[] = {  
    11071116    { "list_standards", "list supported standards and exit",                      OFFSET(list_standard), AV_OPT_TYPE_INT,   {.i64 = 0 },  0, 1, DEC, "list_standards" },
    11081117    { "all",            "show all supported standards",                           OFFSET(list_standard), AV_OPT_TYPE_CONST, {.i64 = 1 },  0, 0, DEC, "list_standards" },
    11091118
    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
    11151126    { "use_libv4l2",  "use libv4l2 (v4l-utils) conversion functions",             OFFSET(use_libv4l2),  AV_OPT_TYPE_BOOL,   {.i64 = 0}, 0, 1, DEC },
    11161127    { NULL },
    11171128};