From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> To: ffmpeg-devel@ffmpeg.org Cc: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Subject: [FFmpeg-devel] [PATCH 09/10] avcodec/v210_dec: Move ff_v210dec_init into a header Date: Tue, 3 May 2022 08:37:50 +0200 Message-ID: <AS8PR01MB7944EFB3D4C25A4C6E63822C8FC09@AS8PR01MB7944.eurprd01.prod.exchangelabs.com> (raw) In-Reply-To: <AS8PR01MB7944F1A5A2DE2EE9898F81A28FC09@AS8PR01MB7944.eurprd01.prod.exchangelabs.com> This removes a dependency of checkasm on lavc/v210_dec.o and also allows to inline ff_v210dec_init() irrespectively of interposing. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> --- libavcodec/v210dec.c | 29 +------------------ libavcodec/v210dec.h | 1 - libavcodec/v210dec_init.h | 61 +++++++++++++++++++++++++++++++++++++++ tests/checkasm/v210dec.c | 2 +- 4 files changed, 63 insertions(+), 30 deletions(-) create mode 100644 libavcodec/v210dec_init.h diff --git a/libavcodec/v210dec.c b/libavcodec/v210dec.c index b5e1d728a7..6c10ef6a7c 100644 --- a/libavcodec/v210dec.c +++ b/libavcodec/v210dec.c @@ -24,45 +24,18 @@ #include "avcodec.h" #include "codec_internal.h" #include "v210dec.h" +#include "v210dec_init.h" #include "libavutil/bswap.h" #include "libavutil/internal.h" #include "libavutil/intreadwrite.h" #include "thread.h" -#define READ_PIXELS(a, b, c) \ - do { \ - val = av_le2ne32(*src++); \ - *a++ = val & 0x3FF; \ - *b++ = (val >> 10) & 0x3FF; \ - *c++ = (val >> 20) & 0x3FF; \ - } while (0) - typedef struct ThreadData { AVFrame *frame; uint8_t *buf; int stride; } ThreadData; -static void v210_planar_unpack_c(const uint32_t *src, uint16_t *y, uint16_t *u, uint16_t *v, int width) -{ - uint32_t val; - int i; - - for( i = 0; i < width-5; i += 6 ){ - READ_PIXELS(u, y, v); - READ_PIXELS(y, u, y); - READ_PIXELS(v, y, u); - READ_PIXELS(y, v, y); - } -} - -av_cold void ff_v210dec_init(V210DecContext *s) -{ - s->unpack_frame = v210_planar_unpack_c; - if (ARCH_X86) - ff_v210_x86_init(s); -} - static av_cold int decode_init(AVCodecContext *avctx) { V210DecContext *s = avctx->priv_data; diff --git a/libavcodec/v210dec.h b/libavcodec/v210dec.h index 662e266315..87ba38e151 100644 --- a/libavcodec/v210dec.h +++ b/libavcodec/v210dec.h @@ -32,7 +32,6 @@ typedef struct { void (*unpack_frame)(const uint32_t *src, uint16_t *y, uint16_t *u, uint16_t *v, int width); } V210DecContext; -void ff_v210dec_init(V210DecContext *s); void ff_v210_x86_init(V210DecContext *s); #endif /* AVCODEC_V210DEC_H */ diff --git a/libavcodec/v210dec_init.h b/libavcodec/v210dec_init.h new file mode 100644 index 0000000000..305ab3911e --- /dev/null +++ b/libavcodec/v210dec_init.h @@ -0,0 +1,61 @@ +/* + * V210 decoder DSP init + * + * Copyright (C) 2009 Michael Niedermayer <michaelni@gmx.at> + * Copyright (c) 2009 Baptiste Coudurier <baptiste dot coudurier at gmail dot com> + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_V210DEC_INIT_H +#define AVCODEC_V210DEC_INIT_H + +#include <stdint.h> + +#include "config.h" +#include "libavutil/attributes.h" +#include "libavutil/bswap.h" +#include "v210dec.h" + +#define READ_PIXELS(a, b, c) \ + do { \ + val = av_le2ne32(*src++); \ + *a++ = val & 0x3FF; \ + *b++ = (val >> 10) & 0x3FF; \ + *c++ = (val >> 20) & 0x3FF; \ + } while (0) + +static void v210_planar_unpack_c(const uint32_t *src, uint16_t *y, uint16_t *u, uint16_t *v, int width) +{ + uint32_t val; + + for (int i = 0; i < width - 5; i += 6) { + READ_PIXELS(u, y, v); + READ_PIXELS(y, u, y); + READ_PIXELS(v, y, u); + READ_PIXELS(y, v, y); + } +} + +static av_unused av_cold void ff_v210dec_init(V210DecContext *s) +{ + s->unpack_frame = v210_planar_unpack_c; + if (ARCH_X86) + ff_v210_x86_init(s); +} + +#endif /* AVCODEC_V210DEC_INIT_H */ diff --git a/tests/checkasm/v210dec.c b/tests/checkasm/v210dec.c index 7dd50a8271..6aef519cc5 100644 --- a/tests/checkasm/v210dec.c +++ b/tests/checkasm/v210dec.c @@ -20,7 +20,7 @@ #include <string.h> #include "checkasm.h" -#include "libavcodec/v210dec.h" +#include "libavcodec/v210dec_init.h" static uint32_t get_v210(void) { -- 2.32.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next prev parent reply other threads:[~2022-05-03 6:40 UTC|newest] Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-05-03 6:18 [FFmpeg-devel] [PATCH 01/10] avfilter/af_afir: Only keep DSP stuff in header Andreas Rheinhardt 2022-05-03 6:37 ` [FFmpeg-devel] [PATCH 02/10] avfilter/af_afir: Move ff_afir_init() to header Andreas Rheinhardt 2022-05-03 6:37 ` [FFmpeg-devel] [PATCH 03/10] avfilter/vf_blend: Move ff_blend_init into a header Andreas Rheinhardt 2022-05-03 6:37 ` [FFmpeg-devel] [PATCH 04/10] avfilter/vf_eq: Move ff_nlmeans_init " Andreas Rheinhardt 2022-05-03 6:37 ` [FFmpeg-devel] [PATCH 05/10] avfilter/vf_gblur: Move ff_gblur_init " Andreas Rheinhardt 2022-05-03 6:37 ` [FFmpeg-devel] [PATCH 06/10] avfilter/vf_hflip: Move ff_hflip_init " Andreas Rheinhardt 2022-05-03 6:37 ` [FFmpeg-devel] [PATCH 07/10] avfilter/vf_nlmeans: Move ff_nlmeans_init " Andreas Rheinhardt 2022-05-13 6:28 ` Soft Works 2022-05-13 8:27 ` Andreas Rheinhardt 2022-05-13 9:00 ` Hendrik Leppkes 2022-05-13 9:03 ` Soft Works 2022-05-13 9:01 ` Soft Works 2022-05-13 9:13 ` Hendrik Leppkes 2022-05-13 9:25 ` Andreas Rheinhardt 2022-05-13 9:27 ` Hendrik Leppkes 2022-05-13 9:34 ` Soft Works 2022-05-13 9:32 ` Soft Works 2022-05-03 6:37 ` [FFmpeg-devel] [PATCH 08/10] avfilter/vf_threshold: Move ff_threshold_init " Andreas Rheinhardt 2022-05-03 6:37 ` Andreas Rheinhardt [this message] 2022-05-03 6:37 ` [FFmpeg-devel] [PATCH 10/10] avcodec/v210_enc: Move ff_v210enc_init " Andreas Rheinhardt 2022-05-05 1:55 ` [FFmpeg-devel] [PATCH 01/10] avfilter/af_afir: Only keep DSP stuff in header Andreas Rheinhardt
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=AS8PR01MB7944EFB3D4C25A4C6E63822C8FC09@AS8PR01MB7944.eurprd01.prod.exchangelabs.com \ --to=andreas.rheinhardt@outlook.com \ --cc=ffmpeg-devel@ffmpeg.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git