From patchwork Sat May 9 08:50:48 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Zhao, Gang" X-Patchwork-Id: 19577 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 731FA449D36 for ; Sat, 9 May 2020 12:20:10 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 42836689EBE; Sat, 9 May 2020 12:20:10 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f194.google.com (mail-pg1-f194.google.com [209.85.215.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CA50E689CDF for ; Sat, 9 May 2020 12:20:03 +0300 (EEST) Received: by mail-pg1-f194.google.com with SMTP id r10so1573138pgv.8 for ; Sat, 09 May 2020 02:20:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:in-reply-to :references; bh=OopcAwgouF9LXeYXwwwHGDfR4nFMm8dApfj4hZdl/H0=; b=RmZTcvqmnRMJwzTkYFLUSJ46Y8+hU3H9iLBnQxEP/Mba3y8e9cmXQIRWJcFJOV7Vpl R4++G2JOpuBhPeunTpDR+gzt+7tgZ6QcjGFgz5DcT1Gyv5EjuzLaQo7x4tk1+3qqHdvD wY79QFYlFo9dqB64s65TpGf6x8cAYonYzHK4yPcBc5oEm3FaaBxZYZkb5uz9qKN9Q/o6 JV1TCut/hKlcIwEytSyCAo1wB0rFLFoMYpdYUKl1JjMpfV25ttzhzyjnPpTg62kvJzDa MZTHaycfI7ZmlGRk7IXMHEmvIoGggQzKVEvnInQrlSAzrEy3m7jbztvbFhbfnaw9/cyx leHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=OopcAwgouF9LXeYXwwwHGDfR4nFMm8dApfj4hZdl/H0=; b=kgiCBYwFHsfYbpDn59dnKMidY5WqEODhb/6Q7+bZ0mvlcGkIgFjJ/Ge5l1vfr3ICTi rUMs2faUuodn4bFD1i0vC20RMoOtSNcsPPqwuof1M2IbUO7DLbstrNZppao7j3nqp/4i mUTBcg8lviAXvoC5t1+sHSpJuxDykeI61OWvCY75YQ4hW9kT8a9izzuTRGCs76XKTu/H xvb424WtkyzoW85s9LNJ7wk+u6spFe6TRNTNDSuijsds1w0LCrpOtMvX6KeV0Qsxq/Ei k6QFmHlbDNmC+QKGT5J3gNZ2lTgxoqWDu5O5t0SlCFKxZ5ios9gGgtnSyTtUxMrN/Sl7 W/dg== X-Gm-Message-State: AGi0PubsoUQ1VMXavFumQs+2gF20glIrDWiZtEkV6G7EoJoTa272MY/b vr4nFfUWLHBycxySyc6fGIOrLfO2o9A= X-Google-Smtp-Source: APiQypKIXUTr7/+NzFy5JI+sk7gZ/LnHSuO1WaOJw50/RNKjPXsZcvEah3Ji6HDsq/sNPHtsp3YVsQ== X-Received: by 2002:a63:5fc1:: with SMTP id t184mr5776061pgb.48.1589014311096; Sat, 09 May 2020 01:51:51 -0700 (PDT) Received: from localhost.localdomain ([2600:3c01::f03c:91ff:feee:c20d]) by smtp.gmail.com with ESMTPSA id a138sm4031946pfd.32.2020.05.09.01.51.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 09 May 2020 01:51:50 -0700 (PDT) From: "Zhao, Gang" To: Date: Sat, 9 May 2020 16:50:48 +0800 Message-Id: <2e05ebebedefffda637f1703adb3dfa8fca25ed0.1589014205.git.gang.zhao.42@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: Subject: [FFmpeg-devel] [PATCH 2/3] libavdevice: Update to new iterating API 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Zhao, Gang --- libavdevice/avdevice.c | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git libavdevice/avdevice.c libavdevice/avdevice.c index 3d03d89f04..8c1b296d71 100644 --- libavdevice/avdevice.c +++ libavdevice/avdevice.c @@ -83,16 +83,33 @@ static void *device_next(void *prev, int output, { const AVClass *pc; AVClassCategory category = AV_CLASS_CATEGORY_NA; + void *opaque = NULL; + void *orig_prev = prev; + int found_prev = 0; + do { - if (output) { - if (!(prev = av_oformat_next(prev))) - break; + if (output) + prev = (void *)av_muxer_iterate(&opaque); + else + prev = (void *)av_demuxer_iterate(&opaque); + + if (!prev) + break; + + /* if orig_prev is NULL, start from the first muxer/demuxer */ + orig_prev = orig_prev ? orig_prev : prev; + + if (!found_prev) { + if (orig_prev == prev) + found_prev = 1; + continue; + } + + if (output) pc = ((AVOutputFormat *)prev)->priv_class; - } else { - if (!(prev = av_iformat_next(prev))) - break; + else pc = ((AVInputFormat *)prev)->priv_class; - } + if (!pc) continue; category = pc->category;