From patchwork Thu May 17 22:49:25 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aman Karmani X-Patchwork-Id: 9003 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:155:0:0:0:0:0 with SMTP id c82-v6csp4626249jad; Thu, 17 May 2018 15:50:14 -0700 (PDT) X-Google-Smtp-Source: AB8JxZoJ5L42JF1yH7Dr0L44YR98CF52zvtKvIAiaBjeJQ1HrxDdH0G9Ulk4ayQjMNkOHwpnr+yL X-Received: by 2002:adf:8407:: with SMTP id 7-v6mr6375030wrf.176.1526597414694; Thu, 17 May 2018 15:50:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1526597414; cv=none; d=google.com; s=arc-20160816; b=L6TJjN8SqUCLEIWrAzTecFonOp5lfDKXMMLuMZebde3yIMkKv+rFKrfhzk8sGY8KDG 2jNB2YqrT4T2NVOCjD7wWnf7lcbTwsM8rXcK0ktRJyfSUDAXj9M0wc72mTzekRoKc3Js PMxVm+Cv5CAEoLfAIc6uY7qw0+rKXtkRBCOgumzIh+U/Ak7hITZ8+IgekbxROhD0aRZB kSD/ejaLGiaNiAvrOcdD5JOSR1DO1qLutxaiLYW22eeDC2UiippKVaLm3vFATSG+1h0C 0eZSai+pJATZ/x+/yckaVMLI9lqtdfb0exP9yoqXghTXgJwAi4Mjyw2Fn3hyg2IUxF9i zHGw== 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:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=JXcC0S7NwE7DzIPUVAtBoaT18BBXBt/YF+aaCchTplE=; b=CEd2AhU/KbT0ZrfBBTvAlNx3TJuZZjwvvlYKh9DrS+Rc6lKUgzdWDrsz2QsHQaSP3n WXrC7NUxaemYbO4Q1y9aab6aVKg6SGzn4dXyYjIYoBj3HfEgdZb5DVNpOxkDOQypEoJP x5flDa/KSrIkbWtUpUcsjtvLT2ZQnPCKDHuV7xQBwk6aRMOlBa4+Lhss94KvxW6UpD8z /mTVdeMIWMtvTTl+h+/ebKFihZBJTgvhQLaKSXKQrM8cUtexDQ+U3VeWks8mWS3haK4n eKiWLHGm8UxAPBwfzZ5yJCgpoO5xijXsKOzLR7FxVYALPUw+eiu5h/VJrnVd9kCVOaqB At5A== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@tmm1-net.20150623.gappssmtp.com header.s=20150623 header.b=F4VSQUEw; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 13-v6si5461488wrx.287.2018.05.17.15.50.14; Thu, 17 May 2018 15:50:14 -0700 (PDT) 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=@tmm1-net.20150623.gappssmtp.com header.s=20150623 header.b=F4VSQUEw; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B836468A519; Fri, 18 May 2018 01:49:23 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl0-f54.google.com (mail-pl0-f54.google.com [209.85.160.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 12F4368A50E for ; Fri, 18 May 2018 01:49:17 +0300 (EEST) Received: by mail-pl0-f54.google.com with SMTP id u6-v6so3391548pls.9 for ; Thu, 17 May 2018 15:49:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tmm1-net.20150623.gappssmtp.com; s=20150623; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=cl+ZbB8esvFeQjey1QUSkIBtLoWKzrFnYzt0ASixLCE=; b=F4VSQUEwS5fGNQo40XXUn55IrXinmDBTZp9xnoMluRtyWn8Z3Xz2MyAcXD6BCjZfbC wQp5yiauCHK8qz7bMhdfpBhshihskiM+NbKNZcd78dYldqbB/GW8TwJNvzNTuVcYXc33 TOQLHcXbgLBc4AZ2LWfWwXBKDyzKzY4I/tKLPijSWuhy+Dgtd6Hb1IkpmVc1XKQUaGns /m1W0u2TU66IN78aSkLFSWsRZBnbxlwgda/qfoXzC+o7lYnnhHBJGrC3GmxPZWykaAeY Lx2SIka2nnTcR9RCw0eSgg07Q0VmoVPth5WmNwSpJurO1f1UuJhm1/t35G+Qx4U98jQD Z7ww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=cl+ZbB8esvFeQjey1QUSkIBtLoWKzrFnYzt0ASixLCE=; b=Ha8Oya5KOnSmlQ5njVTMEukUz3gMYlrl+Reqrr90NWkT8Mo7KEAypZYS420sdpdiqn SNR8RupqwyzIBhHu9T2Qdd0ILNmdMcucz2yFoT0nRL5kdXhxYWKoXG95UlD94KidG7lk QL9F7T8KlDtCeryJTh8QZlR+sdXeZOoO45lVAgP5owGC5BovOAoPzPKoNwz6ODXxAY7n rdzj06CzqLiL+jacLm6cY7iIWdR+aJ+OZt5InOLXCON+xVpi2/RR0cxGLqd3yaJUR1oA VbTsz05Tuk02uSSZZPbvqI0TGqa8RgZ26qhutGQ6TfIYT/nGh0Qc9MqxkRWDRCE9RAmJ 1aaQ== X-Gm-Message-State: ALKqPwcgyB7Nz4mduokIEW/D7R8tLZd9b8v6sdoJqI7LmEzT2OjEtfO8 +N+7rwPvhkzfgQ13zGCHKCaZSKyN X-Received: by 2002:a17:902:20e5:: with SMTP id v34-v6mr6959602plg.127.1526597394675; Thu, 17 May 2018 15:49:54 -0700 (PDT) Received: from localhost.localdomain (c-69-181-54-242.hsd1.ca.comcast.net. [69.181.54.242]) by smtp.gmail.com with ESMTPSA id v6-v6sm8881588pfm.120.2018.05.17.15.49.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 17 May 2018 15:49:54 -0700 (PDT) From: Aman Gupta To: ffmpeg-devel@ffmpeg.org Date: Thu, 17 May 2018 15:49:25 -0700 Message-Id: <20180517224926.4106-2-ffmpeg@tmm1.net> X-Mailer: git-send-email 2.14.2 In-Reply-To: <20180517224926.4106-1-ffmpeg@tmm1.net> References: <20180517224926.4106-1-ffmpeg@tmm1.net> Subject: [FFmpeg-devel] [PATCH v3 2/3] avformat/mpegts: keep track of AVProgram.pmt_version and set AV_PROGRAM_CHANGED on version updates 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: michael@niedermayer.cc, cus@passwd.hu, Aman Gupta , jeebjp@gmail.com MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Aman Gupta This can be used to detect changes to the streams in an AVProgram Signed-off-by: Aman Gupta --- libavformat/mpegts.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c index fc9bb3940e..e83238d733 100644 --- a/libavformat/mpegts.c +++ b/libavformat/mpegts.c @@ -330,12 +330,24 @@ static void set_pmt_found(MpegTSContext *ts, unsigned int programid) p->pmt_found = 1; } -static void set_pcr_pid(AVFormatContext *s, unsigned int programid, unsigned int pid) +static void update_av_program_info(AVFormatContext *s, unsigned int programid, + unsigned int pid, int version) { int i; for (i = 0; i < s->nb_programs; i++) { - if (s->programs[i]->id == programid) { - s->programs[i]->pcr_pid = pid; + AVProgram *program = s->programs[i]; + if (program->id == programid) { + int old_pcr_pid = program->pcr_pid, + old_version = program->pmt_version; + program->pcr_pid = pid; + program->pmt_version = version; + + if (old_version != -1 && old_version != version) { + program->flags |= AV_PROGRAM_CHANGED; + av_log(s, AV_LOG_DEBUG, + "detected PMT change on program %d (version=%d/%d, pcr_pid=0x%x/0x%x)\n", + programid, old_version, version, old_pcr_pid, pid); + } break; } } @@ -2036,7 +2048,7 @@ static void pmt_cb(MpegTSFilter *filter, const uint8_t *section, int section_len return; pcr_pid &= 0x1fff; add_pid_to_pmt(ts, h->id, pcr_pid); - set_pcr_pid(ts->stream, h->id, pcr_pid); + update_av_program_info(ts->stream, h->id, pcr_pid, h->version); av_log(ts->stream, AV_LOG_TRACE, "pcr_pid=0x%x\n", pcr_pid);