From patchwork Tue Oct 3 20:08:13 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Thompson X-Patchwork-Id: 5400 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.76 with SMTP id m12csp58640jah; Tue, 3 Oct 2017 13:15:43 -0700 (PDT) X-Received: by 10.28.66.16 with SMTP id p16mr15609337wma.11.1507061742962; Tue, 03 Oct 2017 13:15:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1507061742; cv=none; d=google.com; s=arc-20160816; b=ohB8Vv+/eU/QbOd3kf55/iphLSCxT3Tt8Qs1DqymFpRajS4Ul8PtBn0uE5r1evQTmC WpHhbRESX7a96MaYdWgj2tXyYxSH5cnPgW5SXUFWTpl8LZdlvrJmMUwvrlEXDtIcHZkE Ok6saryo4fWq0RjXHjxROL242cS17XkdeC7D8N+aHt/RKWUrSwqGQ36vLHXkStYGmvXc boM+HN1XvOoFjDb4bimvsHcPhIeL7Jg7VquZa0A5jjaimy5ZoriPRKiw7AJd/jOmuWUf SsgAR1VA/MsYFnxEyXSlRpRxAsq3TImADaLpuseCqflSejucN3Y7CpsKmh3bOt7d9XcT 3yqQ== 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:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:dkim-signature :delivered-to:arc-authentication-results; bh=ONdhBukJVjI9xIZ4ZuFbSzxss0MFK3mak/wMObb0leM=; b=zLy+iFMpNJx9+YKrMldSAH66vbgnasZbBvYG74noWMsIGorHF+uGWzMePI/5skToLQ m525CykCLwj5H4Uo9DhYHbz5MSa17LvYRzWNgO8cUG3Zaucs7SvcQ9cSWvS7Lak5jKpb lnUvS9RpDYvvLU8E9QUeyc+yg2V+87R2PtP6VA5YuffgW1xDnbw9g4+1nwVpyOFEHXMH dXFIAvmPhRsfld60xtWAMEZbmsnW4I6mpS7M7oqrtZT5PdBNXAyRexv+iGXnaSRlRxGB m3qlkCcEb15RxNvw4B022gVcuQpztE/CJO1I079Y8ocaP+OHcwqBko8EurGtJtOXJwGV I1Vw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@jkqxz-net.20150623.gappssmtp.com header.s=20150623 header.b=U1XYw64N; 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 a11si1519295wmi.138.2017.10.03.13.15.42; Tue, 03 Oct 2017 13:15:42 -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=@jkqxz-net.20150623.gappssmtp.com header.s=20150623 header.b=U1XYw64N; 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 3CC2568A0F8; Tue, 3 Oct 2017 23:15:26 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr0-f175.google.com (mail-wr0-f175.google.com [209.85.128.175]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0935068A07E for ; Tue, 3 Oct 2017 23:15:20 +0300 (EEST) Received: by mail-wr0-f175.google.com with SMTP id m18so7246264wrm.2 for ; Tue, 03 Oct 2017 13:15:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jkqxz-net.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id; bh=osECICAc7O/h0dCasd+mLX+5fsi3PterFnBc7vwStwQ=; b=U1XYw64N833uht41xHKEVUPHkLv5+9rG5e+dHkNqGGoYxTwNz8KWZj+KhtP23AFv0b ddJbpofMBGsrerA3vGpugAM2TfbL+LBcMzZ4c/+wj2FxCdVVcSxZRiMC7cJGItvko70h ENQhfibNXfbCOoUD9Cyrm2ayyJFV6RdUXLwx7l5nJMexPKfXx5/iW9zcIOqEh+pJNgZC Yko9MR84yMzOWSNYSTJZ7ntNZUrpuWGxuM7Scf0YQHBvpRdvE1tbhO11mc5DA9oC6apV 7X4z9h/iD/wcejZ8C8NDy1DuxhcqAws8xZJU2MIZo1vcVuYwZjD09ZRSppyULrBLg2Sf GjWg== 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; bh=osECICAc7O/h0dCasd+mLX+5fsi3PterFnBc7vwStwQ=; b=mFBCIUcf0lctazu0JJnqS48XADiHgE3CbwnYIZJ6OD8Afia5PGV/uH2drc0qHfoqVJ Ny8N0V++mzAjSwOpehefFXYCEr3pcskZ6uHOCjq9pkd22zoeNE2+3KhQyRAeigfOcX4U CfxG+Am//Y0lUA8gf7jMtrQG/NJE8dGykeWcbzrMMFNDYpvpsjF2bSIrngYCXi8ng/vV LRi0g7NVwb0jZd7kJ/fi8YEhwFO3D+5PtMB7wjkY2ORF6+KPhnj7NSs5QHmd4meL6t0b XzIV/ZrVfi90GtEsPMGyJo4gVjU44H7EiEYBSY15/S4vemjpcc0WX4sgc9T9jHMHDEy+ U7Hw== X-Gm-Message-State: AMCzsaVLfXY6W1qRwfz+anuS39admD3N9AdEPGoOjhsnz/SOMf1uUKJo ZUNfPMVMfHNoZtn9gBCcJ4KLXbp+ X-Google-Smtp-Source: AOwi7QALBSCJ0Qu2AOniTXZcrjxNsCHUvSbUN3Kx0DBe/kxu6R72Q5hRN07miqnVG4c5w6gUXtYYtA== X-Received: by 10.223.196.199 with SMTP id o7mr4326729wrf.119.1507061304878; Tue, 03 Oct 2017 13:08:24 -0700 (PDT) Received: from rywe.jkqxz.net (cpc91242-cmbg18-2-0-cust650.5-4.cable.virginm.net. [82.8.130.139]) by smtp.gmail.com with ESMTPSA id b89sm35157932wrd.42.2017.10.03.13.08.24 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 03 Oct 2017 13:08:24 -0700 (PDT) From: Mark Thompson To: ffmpeg-devel@ffmpeg.org Date: Tue, 3 Oct 2017 21:08:13 +0100 Message-Id: <20171003200814.23120-1-sw@jkqxz.net> X-Mailer: git-send-email 2.11.0 Subject: [FFmpeg-devel] [PATCH 1/2] lavc/v4l2: Remove use of lfind() 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" This is not present in older bionic and therefore fails to build there, and the code is much simpler without it anyway. --- libavcodec/v4l2_fmt.c | 73 +++++++++++------------------------------------ libavcodec/v4l2_m2m_enc.c | 32 ++++++++------------- 2 files changed, 28 insertions(+), 77 deletions(-) diff --git a/libavcodec/v4l2_fmt.c b/libavcodec/v4l2_fmt.c index a7ce308696..6df47e3f5a 100644 --- a/libavcodec/v4l2_fmt.c +++ b/libavcodec/v4l2_fmt.c @@ -109,74 +109,33 @@ static const struct fmt_conversion { #endif }; -static int match_codec(const void *a, const void *b) -{ - if (*(enum AVCodecID *)a == ((struct fmt_conversion *)b)->avcodec) - return 0; - - return 1; -} - uint32_t ff_v4l2_format_avcodec_to_v4l2(enum AVCodecID avcodec) { - size_t len = FF_ARRAY_ELEMS(fmt_map); - struct fmt_conversion *item; - - item = lfind(&avcodec, fmt_map, &len, sizeof(fmt_map[0]), match_codec); - if (item) - return item->v4l2_fmt; - + int i; + for (i = 0; i < FF_ARRAY_ELEMS(fmt_map); i++) { + if (fmt_map[i].avcodec == avcodec) + return fmt_map[i].v4l2_fmt; + } return 0; } -static int match_fmt(const void *a, const void *b) -{ - if ( *(enum AVPixelFormat *)a == ((struct fmt_conversion *)b)->avfmt) - return 0; - - return 1; -} - uint32_t ff_v4l2_format_avfmt_to_v4l2(enum AVPixelFormat avfmt) { - size_t len = FF_ARRAY_ELEMS(fmt_map); - struct fmt_conversion *item; - - item = lfind(&avfmt, fmt_map, &len, sizeof(fmt_map[0]), match_fmt); - if (item) - return item->v4l2_fmt; - + int i; + for (i = 0; i < FF_ARRAY_ELEMS(fmt_map); i++) { + if (fmt_map[i].avfmt == avfmt) + return fmt_map[i].v4l2_fmt; + } return 0; } -struct v4l2fmt_avcodec_pair { - enum AVCodecID avcodec; - uint32_t v4l2_fmt; -}; - -static int match_codecfmt(const void *a, const void *b) -{ - struct v4l2fmt_avcodec_pair *key = (struct v4l2fmt_avcodec_pair *) a; - struct fmt_conversion *item = (struct fmt_conversion *) b; - - if (key->avcodec == item->avcodec && key->v4l2_fmt == item->v4l2_fmt) - return 0; - - return 1; -} - enum AVPixelFormat ff_v4l2_format_v4l2_to_avfmt(uint32_t v4l2_fmt, enum AVCodecID avcodec) { - struct v4l2fmt_avcodec_pair const key = { - .v4l2_fmt = v4l2_fmt, - .avcodec = avcodec, - }; - size_t len = FF_ARRAY_ELEMS(fmt_map); - struct fmt_conversion *item; - - item = lfind(&key, fmt_map, &len, sizeof(fmt_map[0]), match_codecfmt); - if (item) - return item->avfmt; - + int i; + for (i = 0; i < FF_ARRAY_ELEMS(fmt_map); i++) { + if (fmt_map[i].avcodec == avcodec && + fmt_map[i].v4l2_fmt == v4l2_fmt) + return fmt_map[i].avfmt; + } return AV_PIX_FMT_NONE; } diff --git a/libavcodec/v4l2_m2m_enc.c b/libavcodec/v4l2_m2m_enc.c index e40a120b53..9f59be6efb 100644 --- a/libavcodec/v4l2_m2m_enc.c +++ b/libavcodec/v4l2_m2m_enc.c @@ -91,20 +91,12 @@ static inline int v4l2_get_ext_ctrl(V4L2m2mContext *s, unsigned int id, signed i return 0; } -static int match_profile(const void *a, const void *b) -{ - if (*(unsigned int *)a == *(unsigned int *)b) - return 0; - - return 1; -} - static inline unsigned int v4l2_h264_profile_from_ff(int p) { struct h264_profile { unsigned int ffmpeg_val; unsigned int v4l2_val; - } *val, profile[] = { + } profile[] = { { FF_PROFILE_H264_CONSTRAINED_BASELINE, MPEG_VIDEO(H264_PROFILE_CONSTRAINED_BASELINE) }, { FF_PROFILE_H264_HIGH_444_PREDICTIVE, MPEG_VIDEO(H264_PROFILE_HIGH_444_PREDICTIVE) }, { FF_PROFILE_H264_HIGH_422_INTRA, MPEG_VIDEO(H264_PROFILE_HIGH_422_INTRA) }, @@ -117,12 +109,12 @@ static inline unsigned int v4l2_h264_profile_from_ff(int p) { FF_PROFILE_H264_MAIN, MPEG_VIDEO(H264_PROFILE_MAIN) }, { FF_PROFILE_H264_HIGH, MPEG_VIDEO(H264_PROFILE_HIGH) }, }; - size_t len = FF_ARRAY_ELEMS(profile); - - val = lfind(&p, profile, &len, sizeof(profile[0]), match_profile); - if (val) - return val->v4l2_val; + int i; + for (i = 0; i < FF_ARRAY_ELEMS(profile); i++) { + if (profile[i].ffmpeg_val == p) + return profile[i].v4l2_val; + } return AVERROR(ENOENT); } @@ -131,19 +123,19 @@ static inline int v4l2_mpeg4_profile_from_ff(int p) struct mpeg4_profile { unsigned int ffmpeg_val; unsigned int v4l2_val; - } *val, profile[] = { + } profile[] = { { FF_PROFILE_MPEG4_ADVANCED_CODING, MPEG_VIDEO(MPEG4_PROFILE_ADVANCED_CODING_EFFICIENCY) }, { FF_PROFILE_MPEG4_ADVANCED_SIMPLE, MPEG_VIDEO(MPEG4_PROFILE_ADVANCED_SIMPLE) }, { FF_PROFILE_MPEG4_SIMPLE_SCALABLE, MPEG_VIDEO(MPEG4_PROFILE_SIMPLE_SCALABLE) }, { FF_PROFILE_MPEG4_SIMPLE, MPEG_VIDEO(MPEG4_PROFILE_SIMPLE) }, { FF_PROFILE_MPEG4_CORE, MPEG_VIDEO(MPEG4_PROFILE_CORE) }, }; - size_t len = FF_ARRAY_ELEMS(profile); - - val = lfind(&p, profile, &len, sizeof(profile[0]), match_profile); - if (val) - return val->v4l2_val; + int i; + for (i = 0; i < FF_ARRAY_ELEMS(profile); i++) { + if (profile[i].ffmpeg_val == p) + return profile[i].v4l2_val; + } return AVERROR(ENOENT); }