From patchwork Wed Oct 14 14:19:00 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 22946 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 AF28044AD39 for ; Wed, 14 Oct 2020 17:25:06 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4E6F368B9F5; Wed, 14 Oct 2020 17:25:05 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f172.google.com (mail-qt1-f172.google.com [209.85.160.172]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3ED7B68B94F for ; Wed, 14 Oct 2020 17:24:58 +0300 (EEST) Received: by mail-qt1-f172.google.com with SMTP id m9so2329497qth.7 for ; Wed, 14 Oct 2020 07:24:58 -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:mime-version :content-transfer-encoding; bh=v6bnaxcUirsTExekKCz44TO9//p17SSoRCTrrQrl9mk=; b=p0czSf0QoGzuUUP0eKWOY04cxRS3y/omNUZaAwvkoWSbjfmLEkWFOOHHfqstX6uKPq 1hewDgpL+13oy+lAPL17yYqsZUb3Oa4xa/gc9HTTxGXuAbJPTJMLOYty0yE2wvUrJMc4 LOrGu0lOSjHzd7uc0FG1IVS2sdB4VOeGsW04qMf501R4Ykqgz2THisgZpGfCRmrc1xLh qh2YmdHIrsUI11DLi4miK7q6G/+sRXUgmeeFdfYwSN27FZVGEVi+z26z+HkbAK+HmUQO qk7anhNsAdrVBM9Hrd368ZP9/DA8zM5V9Da22f1nWaCLHz92NRfdbHQUeFvG2XHgK14i Nd4A== 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:mime-version:content-transfer-encoding; bh=v6bnaxcUirsTExekKCz44TO9//p17SSoRCTrrQrl9mk=; b=iyoeQ9J2ZjTpz83ZDeYAP6NifnbN9DTbpRIl8UpZQAgxvcgz4l1A+EEp0QRsWGxNf+ f7k+Ry2yXrdA1pAMh3q9V5sM8Qoya3KiKoBx/H1qo25vAefQXkpRiLFl+s2fla7Fyb0P Ed8QA93XWucGyYvAq7M80fq4nfzV8kA8/8gw/JSDZAHaI6DxXASAw5NiZ6AZwKGfnLmu l+biWnKOTX7pU/a3d8f2jG9G91YjKDJvwD9Y8lB2kq8w/Q72LgZ7uiVae8B5FVqQ0/yP OR1ND1PKuwgp3ua/15dmrwqrt982Fvz4d609oWNiW6qMMHcRP84BfEm7Ksa1Mceg9cVq zHfA== X-Gm-Message-State: AOAM531beySRB2yvJKWMKX2CBtd7w4qGzgvNhUHEvgyv82hLZ7Q7OZ/H xVVyrpkddnOtlIhTIuxwBvOmOe3LHFo= X-Google-Smtp-Source: ABdhPJxphOS0BYArjr4bBk3ZCv3tECrTaEzmf1TK+NVFaMwVkgLK5ZnzxHiYZc2eQN3w4NFF+XxwRA== X-Received: by 2002:ac8:1a62:: with SMTP id q31mr1038751qtk.389.1602685161630; Wed, 14 Oct 2020 07:19:21 -0700 (PDT) Received: from localhost.localdomain ([181.23.86.134]) by smtp.gmail.com with ESMTPSA id 67sm1255489qkd.14.2020.10.14.07.19.19 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Oct 2020 07:19:20 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Wed, 14 Oct 2020 11:19:00 -0300 Message-Id: <20201014141900.2946-1-jamrial@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <160268329546.25784.912876453313455200@lain.red.khirnov.net> References: <160268329546.25784.912876453313455200@lain.red.khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/6 v2] avdevice/alldevices: stop using deprecated linked list 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: James Almer --- libavdevice/alldevices.c | 72 ++++++++++++++++++++++++++++++++++++++++ libavdevice/avdevice.c | 46 ------------------------- 2 files changed, 72 insertions(+), 46 deletions(-) diff --git a/libavdevice/alldevices.c b/libavdevice/alldevices.c index a6f68dd3bb..c3e5190e6f 100644 --- a/libavdevice/alldevices.c +++ b/libavdevice/alldevices.c @@ -67,3 +67,75 @@ void avdevice_register_all(void) { avpriv_register_devices(outdev_list, indev_list); } + +static void *next_input(AVInputFormat *prev, AVClassCategory c2) +{ + const AVClass *pc; + const AVClassCategory c1 = AV_CLASS_CATEGORY_DEVICE_INPUT; + AVClassCategory category = AV_CLASS_CATEGORY_NA; + const AVInputFormat *fmt = NULL; + int i = 0; + + while (prev && (fmt = indev_list[i])) { + i++; + if (prev == fmt) + break; + } + + do { + fmt = indev_list[i++]; + if (!fmt) + break; + pc = fmt->priv_class; + if (!pc) + continue; + category = pc->category; + } while (category != c1 && category != c2); + return (AVInputFormat *)fmt; +} + +static void *next_output(AVOutputFormat *prev, AVClassCategory c2) +{ + const AVClass *pc; + const AVClassCategory c1 = AV_CLASS_CATEGORY_DEVICE_OUTPUT; + AVClassCategory category = AV_CLASS_CATEGORY_NA; + const AVOutputFormat *fmt = NULL; + int i = 0; + + while (prev && (fmt = outdev_list[i])) { + i++; + if (prev == fmt) + break; + } + + do { + fmt = outdev_list[i++]; + if (!fmt) + break; + pc = fmt->priv_class; + if (!pc) + continue; + category = pc->category; + } while (category != c1 && category != c2); + return (AVOutputFormat *)fmt; +} + +AVInputFormat *av_input_audio_device_next(AVInputFormat *d) +{ + return next_input(d, AV_CLASS_CATEGORY_DEVICE_AUDIO_INPUT); +} + +AVInputFormat *av_input_video_device_next(AVInputFormat *d) +{ + return next_input(d, AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT); +} + +AVOutputFormat *av_output_audio_device_next(AVOutputFormat *d) +{ + return next_output(d, AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT); +} + +AVOutputFormat *av_output_video_device_next(AVOutputFormat *d) +{ + return next_output(d, AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT); +} diff --git a/libavdevice/avdevice.c b/libavdevice/avdevice.c index 3d03d89f04..ec84d3b990 100644 --- a/libavdevice/avdevice.c +++ b/libavdevice/avdevice.c @@ -78,52 +78,6 @@ const char * avdevice_license(void) return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1]; } -static void *device_next(void *prev, int output, - AVClassCategory c1, AVClassCategory c2) -{ - const AVClass *pc; - AVClassCategory category = AV_CLASS_CATEGORY_NA; - do { - if (output) { - if (!(prev = av_oformat_next(prev))) - break; - pc = ((AVOutputFormat *)prev)->priv_class; - } else { - if (!(prev = av_iformat_next(prev))) - break; - pc = ((AVInputFormat *)prev)->priv_class; - } - if (!pc) - continue; - category = pc->category; - } while (category != c1 && category != c2); - return prev; -} - -AVInputFormat *av_input_audio_device_next(AVInputFormat *d) -{ - return device_next(d, 0, AV_CLASS_CATEGORY_DEVICE_AUDIO_INPUT, - AV_CLASS_CATEGORY_DEVICE_INPUT); -} - -AVInputFormat *av_input_video_device_next(AVInputFormat *d) -{ - return device_next(d, 0, AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT, - AV_CLASS_CATEGORY_DEVICE_INPUT); -} - -AVOutputFormat *av_output_audio_device_next(AVOutputFormat *d) -{ - return device_next(d, 1, AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT, - AV_CLASS_CATEGORY_DEVICE_OUTPUT); -} - -AVOutputFormat *av_output_video_device_next(AVOutputFormat *d) -{ - return device_next(d, 1, AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT, - AV_CLASS_CATEGORY_DEVICE_OUTPUT); -} - int avdevice_app_to_dev_control_message(struct AVFormatContext *s, enum AVAppToDevMessageType type, void *data, size_t data_size) {