From patchwork Wed Jan 10 04:55:18 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Dixit, Vishwanath" X-Patchwork-Id: 7244 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.78.2 with SMTP id r2csp4738032jaa; Tue, 9 Jan 2018 20:55:30 -0800 (PST) X-Google-Smtp-Source: ACJfBouEkiJzp7ISTvCW017nujht58bYQEDnNKkYRsveFGZkhVh2KiZS/H343SWQ3es/W31kReBK X-Received: by 10.28.11.75 with SMTP id 72mr12533182wml.158.1515560130723; Tue, 09 Jan 2018 20:55:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1515560130; cv=none; d=google.com; s=arc-20160816; b=BQ73YWfHWqSrfxNuHXqFgxrnBATLTl6GspKkm0JXnPMDsylrRQ1APoJvaaCDU66IW5 orHH29sPKy0dvN7oEPdZX2zVTEXUemJ7Tt/vN60URrXgW1DhCCscMV/iTKnATL7H8FXv PWhiorevf2y53+733r7jZ5dupf0sDrqLv5H2mvOhSa3RAcbMg97WbKdX1GH7ZkfpHXcz bcwzZ9g9SktvvslIoFwMRgzn4ybxY7ObFoy0R6Ll5EgxXoFmjg6MxMs24UVI8jyHzTto uv0UAQdNTLg9fF5o6dyw6KjAQ45Fo02rxxNeNJh+ZeBEEONqX1MGGzv28bdyf52ChZ4+ nBJg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:feedback-id:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to :arc-authentication-results; bh=ZrWS2FuyRK5afxEMYZh7p1+vPj+saHDcxIt2UkA9rd0=; b=qBy39RKAkbVgHW7sR0iYH2cMPdHrbx3PWPYy0yWFUHnL3te4DptwoUS45xYOGrOVTH jjPJaQ+b34xTNurROZRIeESJQJXVz2HiWFl68SKnhQzQEq3YWNWOHUAY/MHL5pGfiXIB 9sdbkK6XHiza/z8JwpQol6vqrFgFr7c4cj4xC28pXB38M/9afObeMRzxk6TjbdkMvBsv ZX265wcSMyDXQzs4luwwc2rrMYttd1WXmiDI6o7iqaryOTTYWoYaNH6VFRL2MjxACL/k xJ2Ko9+kD98sZGBg9fb0CfNH9198Uxgy6NAcH3qqcuh3ziyz2C8dWIuseDh9b0tMrWw/ Qu8w== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@smtpservice.net header.s=m78bu0.a1-4.dyn header.b=Wovy1XLU; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=QUARANTINE sp=NONE dis=NONE) header.from=akamai.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id q62si10332582wma.57.2018.01.09.20.55.30; Tue, 09 Jan 2018 20:55:30 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@smtpservice.net header.s=m78bu0.a1-4.dyn header.b=Wovy1XLU; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=QUARANTINE sp=NONE dis=NONE) header.from=akamai.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C226B6807A8; Wed, 10 Jan 2018 06:55:27 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from a2i831.smtp2go.com (a2i831.smtp2go.com [103.47.207.63]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F0F18680656 for ; Wed, 10 Jan 2018 06:55:25 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=smtpservice.net; s=m78bu0.a1-4.dyn; x=1515561027; h=Feedback-ID: X-Smtpcorp-Track:Message-Id:Date:Subject:To:From:Reply-To:Sender: List-Unsubscribe; bh=5gIOQYisNHvZqaKKqSYzcwl5BhE4OC86QIpqbfQ0+d4=; b=Wovy1XLU N8Fe5T76PR0nyWCA842vom1nWaP78bSszTvSQCRtNOyvIn5tBnJ7j98Nvd5BN17WkT7fyu01u/+Wa u/hioiKebheEUFiaFWlNKQNWp1YEjZCxfGaA4bm4IoncyxJZmMXVDED5TmAz3Z7aKNw71WQ9A2mI2 8XwpU6nc8FvL0LVdRvRyKHz1S/ikhOuzci7VvSIGcoq8tFQPp0AEc9WpbotyUmpavtQdPaXkCfT6i 8zykf+M5DXpY+RNQ83vNif1brz199rHZEiqPL5/DKJYBvvOdE2xGABX1+zIfB2cMq37lpsA3sx2Pw EusRQhjXYRjoefJPo+U9cWNPpQ==; From: vdixit@akamai.com To: ffmpeg-devel@ffmpeg.org Date: Wed, 10 Jan 2018 10:25:18 +0530 Message-Id: <1515560118-8342-1-git-send-email-vdixit@akamai.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <20180108215259.GB2302@sunshine.barsnick.net> References: <20180108215259.GB2302@sunshine.barsnick.net> X-Smtpcorp-Track: 1-Z8Q7NmF7ey7x.Vdy6Gnyxx Feedback-ID: 337386m:337386asVRLGB:337386so-Ipvf0CE:SMTPCORP X-Report-Abuse: Please forward a copy of this message, including all headers, to Subject: [FFmpeg-devel] [PATCH v2 3/3] avdevice/decklink: addition of absolute wallclock option for pts source X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Vishwanath Dixit MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Vishwanath Dixit --- doc/indevs.texi | 6 ++++-- libavdevice/decklink_common_c.h | 1 + libavdevice/decklink_dec.cpp | 4 ++++ libavdevice/decklink_dec_c.c | 1 + 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/doc/indevs.texi b/doc/indevs.texi index 36aef49..0bc8e6a 100644 --- a/doc/indevs.texi +++ b/doc/indevs.texi @@ -298,11 +298,13 @@ Sets the audio input source. Must be @samp{unset}, @samp{embedded}, @item video_pts Sets the video packet timestamp source. Must be @samp{video}, @samp{audio}, -@samp{reference} or @samp{wallclock}. Defaults to @samp{video}. +@samp{reference}, @samp{wallclock} or @samp{abs_wallclock}. +Defaults to @samp{video}. @item audio_pts Sets the audio packet timestamp source. Must be @samp{video}, @samp{audio}, -@samp{reference} or @samp{wallclock}. Defaults to @samp{audio}. +@samp{reference}, @samp{wallclock} or @samp{abs_wallclock}. +Defaults to @samp{audio}. @item draw_bars If set to @samp{true}, color bars are drawn in the event of a signal loss. diff --git a/libavdevice/decklink_common_c.h b/libavdevice/decklink_common_c.h index 18097e2..08e9f9b 100644 --- a/libavdevice/decklink_common_c.h +++ b/libavdevice/decklink_common_c.h @@ -28,6 +28,7 @@ typedef enum DecklinkPtsSource { PTS_SRC_VIDEO = 2, PTS_SRC_REFERENCE = 3, PTS_SRC_WALLCLOCK = 4, + PTS_SRC_ABS_WALLCLOCK = 5, PTS_SRC_NB } DecklinkPtsSource; diff --git a/libavdevice/decklink_dec.cpp b/libavdevice/decklink_dec.cpp index 1fd40ca..c6eea43 100644 --- a/libavdevice/decklink_dec.cpp +++ b/libavdevice/decklink_dec.cpp @@ -607,6 +607,8 @@ static int64_t get_pkt_pts(IDeckLinkVideoInputFrame *videoFrame, res = videoFrame->GetHardwareReferenceTimestamp(time_base.den, &bmd_pts, &bmd_duration); break; case PTS_SRC_WALLCLOCK: + /* fall through */ + case PTS_SRC_ABS_WALLCLOCK: { /* MSVC does not support compound literals like AV_TIME_BASE_Q * in C++ code (compiler error C4576) */ @@ -652,6 +654,8 @@ HRESULT decklink_input_callback::VideoInputFrameArrived( ctx->frameCount++; if (ctx->audio_pts_source == PTS_SRC_WALLCLOCK || ctx->video_pts_source == PTS_SRC_WALLCLOCK) wallclock = av_gettime_relative(); + else if (ctx->audio_pts_source == PTS_SRC_ABS_WALLCLOCK || ctx->video_pts_source == PTS_SRC_ABS_WALLCLOCK) + wallclock = av_gettime(); // Handle Video Frame if (videoFrame) { diff --git a/libavdevice/decklink_dec_c.c b/libavdevice/decklink_dec_c.c index d52dde5..00fb3af 100644 --- a/libavdevice/decklink_dec_c.c +++ b/libavdevice/decklink_dec_c.c @@ -70,6 +70,7 @@ static const AVOption options[] = { { "video", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = PTS_SRC_VIDEO }, 0, 0, DEC, "pts_source"}, { "reference", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = PTS_SRC_REFERENCE}, 0, 0, DEC, "pts_source"}, { "wallclock", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = PTS_SRC_WALLCLOCK}, 0, 0, DEC, "pts_source"}, + { "abs_wallclock", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = PTS_SRC_ABS_WALLCLOCK}, 0, 0, DEC, "pts_source"}, { "draw_bars", "draw bars on signal loss" , OFFSET(draw_bars), AV_OPT_TYPE_BOOL, { .i64 = 1}, 0, 1, DEC }, { "queue_size", "input queue buffer size", OFFSET(queue_size), AV_OPT_TYPE_INT64, { .i64 = (1024 * 1024 * 1024)}, 0, INT64_MAX, DEC }, { "audio_depth", "audio bitdepth (16 or 32)", OFFSET(audio_depth), AV_OPT_TYPE_INT, { .i64 = 16}, 16, 32, DEC },