From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id E37E742C89 for ; Mon, 1 Aug 2022 12:24:06 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 71C1368B8E4; Mon, 1 Aug 2022 15:24:04 +0300 (EEST) Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-oln040092068044.outbound.protection.outlook.com [40.92.68.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5DEAE68B8BD for ; Mon, 1 Aug 2022 15:23:58 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lhJ4fQoBJHdeUucXTjkOpIfiac6Gf0gHMem0uFFgGC6I9nwNNHKYV6zeTHuaHwzvGYPk2ItT2NNKL93Uz3Qs/naRQ00egoZuAbBSIlGznicy0/t/LZH9moYtDa1wCMIshSRHklTkWpBHbz06+vm3+lUZNzdO+N/jNor8LLzhb0rIjNl9bd8dYLfZHjUASlFWCfjspf3m9AdgK19ssut96Z/m3SU/2FLt9IXzFhvSlPZ7tGx82jogCPtMLMxqoJeDv42EhQfnDWEiXqNaNA/KW4UmGLb0ZsuccFvwyk9ZrXITLLGGxu3WneXpEZBKj0pPp4v3vqpfCgdRorTY8L+Fow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=3etlSWDNg7/JS9eHen5XjU0TVGCCiueQLNJtatadY3c=; b=SgwthzNHVs1o2YXHd+QBykEM+kPOnZa+sJjc/C0TpJykg1iQ7JH+IPEchX//VGBZv8lK/aXcFefRYKGp9zwfeeQ+KUsyZ9Qnkanpt5BZuQvgOoPbRJSZ4g91H8dA6VdLLESqmwQr10luNjSexjOnItjic0pNZfBTDEbe0oksT484fBLaKc5eArN+Dc9siNOP2Q6oo0PRTIV4PTNyW2+P6mVQxPmHJpGybHci6+3wqfwydRE+J7Py6myQyL+FCAkpPQf/euFITI4nRIfPgc1nV00sKolkX6uYrfxMweL83a9+fC707ROL2guaVaT7wrQsWWYN2bU2PAoPqrx1ZwXfTQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3etlSWDNg7/JS9eHen5XjU0TVGCCiueQLNJtatadY3c=; b=RKJp1CIyZDjHiGY1+xWOOsmyf67b6Y/Aidc/JRsQVJn7apI0DIATNkXtAn+WC62lSMC7KXUdedXpflHnn0BiWmstVKZPn8Ov8NDBSzary8P7DPxiF+miwQgTPqBATID1VlpsY1qqYtCXZuJ5+kJlHvWEhLTku0VMZ9VQaSPfnI1KSKOkMngn7n2uxtt4SCvmI44DQoVJjvaQ95xvaRuOwx4ht4aWDy4qDO2lBB/8MCl1xJcTqOX3In4GOms8+opXyUvTkUGC1vElG3YYmzKUjybMiFu2Ntj4N7nNii6KrpvXjpJ+JG2j3OEaJCdNPRzXjSKd/8Ny2WwvCl6HCrPWPQ== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by HE1PR0101MB2425.eurprd01.prod.exchangelabs.com (2603:10a6:3:85::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5482.14; Mon, 1 Aug 2022 12:23:56 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46%11]) with mapi id 15.20.5482.016; Mon, 1 Aug 2022 12:23:56 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 1 Aug 2022 14:23:40 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [m1HlfKeanwkx/6//gdiFo0kb5kLNNcp7] X-ClientProxiedBy: FR0P281CA0137.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:96::13) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220801122349.3996066-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b27e9a29-7d49-4401-a573-08da73b8b439 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRs85NybYSQmkOI17x75buOErZ/8PImAC2LjUd1Y/Af3G3suckD2Vp5EEV1ST+0VKiw41NEWbsddk15nlZtrLvQlQoTm/lUQ9oJKVVv7v+RTjMBaetZSk+4UKDlAfYGfzKsZS6a/JuJjsH/Ya3rjEoxDJ7sT+vaDsTphAZMtts8v6uNdhc3NRGJGMM+RQBSjbz9ZnLfB192xFZlJQ7vs7zmBuKvmR6MarERmHtZP9cfIhSQakhK/iAxZR0Yl4PykhorGZ8WRYeKCKjrU2NcDfJFYxlB+1zctkq+ZqHD4kOJFYJJsTFwgtFwmxIooQ5la657XhsPsKJzgYCUjwXDIp4q2Gf5nNYcdimaFZ0tt7DWMpXZaFcsnikDJZDPIhaTkF8PZUzB/7WNj4Qc4Zt5xodcuNWqLaL62KXG+ylstwz5dVIMy+EAhlhd6mV+KTRYMUMHCdxnG2QCGEP3Qv+FZTf1iCbggPuhwGPpA0N495zidcH+jKRG3PiDSzAahkE3cGtXgEIDp5Ya96dMhoqKEp7GD4ivl+yyz2JvOcnRBvmYf2nvWr5aFdzeJA5qL/U8ty5k2d9WoEgIaIcKaBzwW1OPue0nb+a13q4TQhtVNQRKVVOr0rUoC53027MGMH+rGTpSIVWyKrUkCzdxaoJjx9IrSIYane2/blFxYmPqGMR05bRqhj51Bq7Te3086GQUBk7MElhONreHMkhWyL+DSxaGMcy5KmR7VBfXVjbxngL0TgLL/M5GcV/zevDe9T/A8Sw= X-MS-TrafficTypeDiagnostic: HE1PR0101MB2425:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6CvcmNrH5I8lK3PlT5LOg1yka9ecD0h9Fg1gSIJS0wvtOznCbwmf4lhx2AvxFT8uQ7/X2IISaTKZHP0h/+DYMKNM6LSTHcQ4KK4vn9TIYW35e6BmIeoYf7UwZflM0yoHMIVePUdKtN39YfTzyd3P8IklKyeOQBLyT5vlxmLYC8bs2cEpv2kJedW+qxY/fPLYsR/j2jlyyN5c72NcSNkdtYmH+Iqqoubus/h2eJ9tsr/zfr6rx4q44BvxCrv3gS9CJq1cYpTwRuHupsiLXWl0UHeyFKaJQKhkr5NjjlRUYdEmzYJkGmpvvBfRrXukmg6oow51rTeE2lH6f/2UC2+F/s48AQOXNrVJ+2/Sf3SaoRsKXWHdVuzyGaw07r1l5wLNG7QA9SfXrDM3/8PKfogAP1OCdmpPOd3GIax5zEgLUWFAZTlk5tRJjqDjnLwfqC1LpTuL8SdWfD1s8FXEblbpxjWWN+899AAi6d8Ldgeh+4wwZY2f9XAPPmqoyXfX1qi1ip6IPcP3IiZKRIatwBpS9CXOANCw7a3YCeguMxqMs7nzfx36VaAZBqlo/JwvmOttcbItNXQHC+uu3IuVJYysukBCydFk+rRFfUEFnhUALDedJMFE9C2YNGgFHNT4pcK4zQJrYlZO3RRDUs7sUIzp5A== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?S1KylTJPX52yRT4HurJu5KKzwyqg4Jg79mLx97XThIBMBHkpEvAOHED9KvQn?= =?us-ascii?Q?HeE/6DmbLO8slJGG+fUlSsNnuAhR7v5ohJcZ1QDUDLQQ3CIfiLzBdxXKVe7G?= =?us-ascii?Q?z03Rru8LLUOG01YzyzZ0YL4mprslKtQWO6HEJr5EmhTUuSm8OWV5/xBrkWsK?= =?us-ascii?Q?H4uWswDVWmdt/dDZBHSCPHzPrX91rCwELxJ+IsmXAADtaP/Ip5bobeghu6Cs?= =?us-ascii?Q?N5Q1dy/8+Deyj9yF0s+UKJ2pqNGNqcNeVYpo6Q43kzwE9EUnFGuy6mdl2GFT?= =?us-ascii?Q?/HeuWi1K0Pno+QRBjoPJ+kYPykrtaSBif6EQakIMjLVVLWSSDSY6xTjR0Q7R?= =?us-ascii?Q?siOMvh1vE+xR+qb1r9kXeByh+M7K7I05tp7OVUCUcguzgf7p1h0gCGNuYnOF?= =?us-ascii?Q?nLSFVlB/vO1+TQkjuWbiSuU5ibfh0lwy6zfpJFtjss7IU0cw7o1IbBB8QxI4?= =?us-ascii?Q?hLCH/p3SbS/nLSKVRJ7J2frD8XSmgtYSBkXsXhB4HSwjGVKGH51K2AlWqH9A?= =?us-ascii?Q?F3XqNfbvcJqs48CAZcUSIh2B29ARaA1X8NnztBe6fYWqJlkVINfPvSI+CUSM?= =?us-ascii?Q?ykVn4ZLwMz3R1quXwfacM6uYl1GO5e6DuwH3bHuuucLFySaNEw28587yxmI1?= =?us-ascii?Q?cUaVNCt6FM13t0j4DMYRNrK2U3vlkxW6wUZ0vyTb7OgGucgB1zUjZnhlM6e3?= =?us-ascii?Q?qJXHSaWP2qv3yHiSkoQZEd5BqgXBX9BM7m5hI5OlrktMZrpVTyvvrLbCeFiP?= =?us-ascii?Q?5VpSMQhr8bK5x85IxCqAip2kccDDGs8f4kPHzBq4zkbfbACf3Lau1bH/kXIi?= =?us-ascii?Q?DGZ3WzK0idh0rQWQdMgQJ8jUsLClBWCuxcxc9Fo7AvP1Os7iF+lk4zmv+rrR?= =?us-ascii?Q?vj6sJr5NCVi7NU1W01GwgbSbW6u0cgj4SWkRYoWigA5KPnwOuB/oe/DMrB13?= =?us-ascii?Q?lOFKI4kXK85uW7rnAzjYer7luZSx7cwQInDAcJIeqlpoRri0JnWuuc3GangW?= =?us-ascii?Q?/k0mQwDSaWV/X4eEFTmtfUJYIyDoAqmiP+uaIIy/6ft7ifElNKE+IL3+m6hM?= =?us-ascii?Q?NUTAf1sGCYah4CJKCKup+wg88dZlZDFHRH/TYdIMHrh0GxI0proI3OEaJ4O1?= =?us-ascii?Q?mOufFZhZa+AgXfvpaEhkCWJMe4ducBdOtPYiE0qp/RX6nWe8PESNkF0sr8pf?= =?us-ascii?Q?/+0x3Bjp2y70FtcDZsJxWkWor2dhBNib/yGIw1wsCdN/W0yFo6xOWExT6Lhl?= =?us-ascii?Q?KprVyqc9GdkpGt3ny4+0HqWrjih/91v633/1RWEo9Kt6tJDRa7G9GBpcG68Z?= =?us-ascii?Q?0WQ=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b27e9a29-7d49-4401-a573-08da73b8b439 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Aug 2022 12:23:56.4168 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0101MB2425 Subject: [FFmpeg-devel] [PATCH 02/11] avcodec/flacdsp: Split encoder-only parts into a ctx of its own X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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: Andreas Rheinhardt Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Signed-off-by: Andreas Rheinhardt --- configure | 4 +--- libavcodec/Makefile | 5 ++-- libavcodec/arm/Makefile | 4 ++-- libavcodec/arm/flacdsp_init_arm.c | 5 +--- libavcodec/flacdsp.c | 4 ---- libavcodec/flacenc.c | 6 ++--- libavcodec/flacencdsp.c | 40 +++++++++++++++++++++++++++++++ libavcodec/flacencdsp.h | 34 ++++++++++++++++++++++++++ libavcodec/x86/Makefile | 3 ++- libavcodec/x86/flacdsp_init.c | 12 ---------- libavcodec/x86/flacencdsp_init.c | 38 +++++++++++++++++++++++++++++ tests/checkasm/Makefile | 2 +- tests/checkasm/checkasm.c | 2 +- 13 files changed, 125 insertions(+), 34 deletions(-) create mode 100644 libavcodec/flacencdsp.c create mode 100644 libavcodec/flacencdsp.h create mode 100644 libavcodec/x86/flacencdsp_init.c diff --git a/configure b/configure index 8c7e8c9d1d..6cee752acd 100755 --- a/configure +++ b/configure @@ -2449,7 +2449,6 @@ CONFIG_EXTRA=" faandct faanidct fdctdsp - flacdsp fmtconvert frame_thread_encoder g722dsp @@ -2817,8 +2816,7 @@ ffv1_encoder_select="rangecoder" ffvhuff_decoder_select="huffyuv_decoder" ffvhuff_encoder_select="huffyuv_encoder" fic_decoder_select="golomb" -flac_decoder_select="flacdsp" -flac_encoder_select="bswapdsp flacdsp lpc" +flac_encoder_select="bswapdsp lpc" flashsv2_decoder_select="inflate_wrapper" flashsv2_encoder_select="deflate_wrapper" flashsv_decoder_select="inflate_wrapper" diff --git a/libavcodec/Makefile b/libavcodec/Makefile index aff7752856..10179b717e 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -91,7 +91,6 @@ OBJS-$(CONFIG_FDCTDSP) += fdctdsp.o jfdctfst.o jfdctint.o FFT-OBJS-$(CONFIG_HARDCODED_TABLES) += cos_tables.o OBJS-$(CONFIG_FFT) += avfft.o fft_float.o fft_fixed_32.o \ fft_init_table.o $(FFT-OBJS-yes) -OBJS-$(CONFIG_FLACDSP) += flacdsp.o OBJS-$(CONFIG_FMTCONVERT) += fmtconvert.o OBJS-$(CONFIG_GOLOMB) += golomb.o OBJS-$(CONFIG_H263DSP) += h263dsp.o @@ -345,8 +344,8 @@ OBJS-$(CONFIG_FFWAVESYNTH_DECODER) += ffwavesynth.o OBJS-$(CONFIG_FIC_DECODER) += fic.o OBJS-$(CONFIG_FITS_DECODER) += fitsdec.o fits.o OBJS-$(CONFIG_FITS_ENCODER) += fitsenc.o -OBJS-$(CONFIG_FLAC_DECODER) += flacdec.o flacdata.o flac.o -OBJS-$(CONFIG_FLAC_ENCODER) += flacenc.o flacdata.o flac.o +OBJS-$(CONFIG_FLAC_DECODER) += flacdec.o flacdata.o flacdsp.o flac.o +OBJS-$(CONFIG_FLAC_ENCODER) += flacenc.o flacdata.o flacencdsp.o flac.o OBJS-$(CONFIG_FLASHSV_DECODER) += flashsv.o OBJS-$(CONFIG_FLASHSV_ENCODER) += flashsvenc.o OBJS-$(CONFIG_FLASHSV2_ENCODER) += flashsv2enc.o diff --git a/libavcodec/arm/Makefile b/libavcodec/arm/Makefile index c4ab93aeeb..5d284bdc01 100644 --- a/libavcodec/arm/Makefile +++ b/libavcodec/arm/Makefile @@ -6,8 +6,6 @@ OBJS-$(CONFIG_AC3DSP) += arm/ac3dsp_init_arm.o \ OBJS-$(CONFIG_AUDIODSP) += arm/audiodsp_init_arm.o OBJS-$(CONFIG_BLOCKDSP) += arm/blockdsp_init_arm.o OBJS-$(CONFIG_FFT) += arm/fft_init_arm.o -OBJS-$(CONFIG_FLACDSP) += arm/flacdsp_init_arm.o \ - arm/flacdsp_arm.o OBJS-$(CONFIG_FMTCONVERT) += arm/fmtconvert_init_arm.o OBJS-$(CONFIG_G722DSP) += arm/g722dsp_init_arm.o OBJS-$(CONFIG_H264CHROMA) += arm/h264chroma_init_arm.o @@ -38,6 +36,8 @@ OBJS-$(CONFIG_VP8DSP) += arm/vp8dsp_init_arm.o OBJS-$(CONFIG_AAC_DECODER) += arm/aacpsdsp_init_arm.o \ arm/sbrdsp_init_arm.o OBJS-$(CONFIG_DCA_DECODER) += arm/synth_filter_init_arm.o +OBJS-$(CONFIG_FLAC_DECODER) += arm/flacdsp_init_arm.o \ + arm/flacdsp_arm.o OBJS-$(CONFIG_HEVC_DECODER) += arm/hevcdsp_init_arm.o OBJS-$(CONFIG_MLP_DECODER) += arm/mlpdsp_init_arm.o OBJS-$(CONFIG_RV40_DECODER) += arm/rv40dsp_init_arm.o diff --git a/libavcodec/arm/flacdsp_init_arm.c b/libavcodec/arm/flacdsp_init_arm.c index a16de9ee9a..9962cc89f4 100644 --- a/libavcodec/arm/flacdsp_init_arm.c +++ b/libavcodec/arm/flacdsp_init_arm.c @@ -20,14 +20,11 @@ #include "libavutil/attributes.h" #include "libavcodec/flacdsp.h" -#include "config.h" -#include "config_components.h" void ff_flac_lpc_16_arm(int32_t *samples, const int coeffs[32], int order, int qlevel, int len); av_cold void ff_flacdsp_init_arm(FLACDSPContext *c, enum AVSampleFormat fmt, int channels) { - if (CONFIG_FLAC_DECODER) - c->lpc16 = ff_flac_lpc_16_arm; + c->lpc16 = ff_flac_lpc_16_arm; } diff --git a/libavcodec/flacdsp.c b/libavcodec/flacdsp.c index da8400ae0a..42e231db53 100644 --- a/libavcodec/flacdsp.c +++ b/libavcodec/flacdsp.c @@ -27,7 +27,6 @@ #define SAMPLE_SIZE 16 #define PLANAR 0 #include "flacdsp_template.c" -#include "flacdsp_lpc_template.c" #undef PLANAR #define PLANAR 1 @@ -38,7 +37,6 @@ #define SAMPLE_SIZE 32 #define PLANAR 0 #include "flacdsp_template.c" -#include "flacdsp_lpc_template.c" #undef PLANAR #define PLANAR 1 @@ -90,8 +88,6 @@ av_cold void ff_flacdsp_init(FLACDSPContext *c, enum AVSampleFormat fmt, int cha { c->lpc16 = flac_lpc_16_c; c->lpc32 = flac_lpc_32_c; - c->lpc16_encode = flac_lpc_encode_c_16; - c->lpc32_encode = flac_lpc_encode_c_32; switch (fmt) { case AV_SAMPLE_FMT_S32: diff --git a/libavcodec/flacenc.c b/libavcodec/flacenc.c index 3cfefbc89f..00f78fc814 100644 --- a/libavcodec/flacenc.c +++ b/libavcodec/flacenc.c @@ -36,7 +36,7 @@ #include "lpc.h" #include "flac.h" #include "flacdata.h" -#include "flacdsp.h" +#include "flacencdsp.h" #define FLAC_SUBFRAME_CONSTANT 0 #define FLAC_SUBFRAME_VERBATIM 1 @@ -125,7 +125,7 @@ typedef struct FlacEncodeContext { uint8_t *md5_buffer; unsigned int md5_buffer_size; BswapDSPContext bdsp; - FLACDSPContext flac_dsp; + FLACEncDSPContext flac_dsp; int flushed; int64_t next_pts; @@ -425,7 +425,7 @@ static av_cold int flac_encode_init(AVCodecContext *avctx) s->options.max_prediction_order, FF_LPC_TYPE_LEVINSON); ff_bswapdsp_init(&s->bdsp); - ff_flacdsp_init(&s->flac_dsp, avctx->sample_fmt, channels); + ff_flacencdsp_init(&s->flac_dsp); dprint_compression_options(s); diff --git a/libavcodec/flacencdsp.c b/libavcodec/flacencdsp.c new file mode 100644 index 0000000000..46e5a0352b --- /dev/null +++ b/libavcodec/flacencdsp.c @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2012 Mans Rullgard + * + * 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 + */ + +#include "config.h" +#include "flacencdsp.h" + +#define SAMPLE_SIZE 16 +#include "flacdsp_lpc_template.c" + +#undef SAMPLE_SIZE +#define SAMPLE_SIZE 32 +#include "flacdsp_lpc_template.c" + + +av_cold void ff_flacencdsp_init(FLACEncDSPContext *c) +{ + c->lpc16_encode = flac_lpc_encode_c_16; + c->lpc32_encode = flac_lpc_encode_c_32; + +#if ARCH_X86 + ff_flacencdsp_init_x86(c); +#endif +} diff --git a/libavcodec/flacencdsp.h b/libavcodec/flacencdsp.h new file mode 100644 index 0000000000..39811e2353 --- /dev/null +++ b/libavcodec/flacencdsp.h @@ -0,0 +1,34 @@ +/* + * 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_FLACENCDSP_H +#define AVCODEC_FLACENCDSP_H + +#include + +typedef struct FLACEncDSPContext { + void (*lpc16_encode)(int32_t *res, const int32_t *smp, int len, int order, + const int32_t coefs[32], int shift); + void (*lpc32_encode)(int32_t *res, const int32_t *smp, int len, int order, + const int32_t coefs[32], int shift); +} FLACEncDSPContext; + +void ff_flacencdsp_init(FLACEncDSPContext *c); +void ff_flacencdsp_init_x86(FLACEncDSPContext *c); + +#endif /* AVCODEC_FLACDSP_H */ diff --git a/libavcodec/x86/Makefile b/libavcodec/x86/Makefile index 6361161180..4e448623af 100644 --- a/libavcodec/x86/Makefile +++ b/libavcodec/x86/Makefile @@ -10,7 +10,6 @@ OBJS-$(CONFIG_DIRAC_DECODER) += x86/diracdsp_init.o \ x86/dirac_dwt_init.o OBJS-$(CONFIG_FDCTDSP) += x86/fdctdsp_init.o OBJS-$(CONFIG_FFT) += x86/fft_init.o -OBJS-$(CONFIG_FLACDSP) += x86/flacdsp_init.o OBJS-$(CONFIG_FMTCONVERT) += x86/fmtconvert_init.o OBJS-$(CONFIG_H263DSP) += x86/h263dsp_init.o OBJS-$(CONFIG_H264CHROMA) += x86/h264chroma_init.o @@ -55,6 +54,8 @@ OBJS-$(CONFIG_CFHD_ENCODER) += x86/cfhdencdsp_init.o OBJS-$(CONFIG_DCA_DECODER) += x86/dcadsp_init.o x86/synth_filter_init.o OBJS-$(CONFIG_DNXHD_ENCODER) += x86/dnxhdenc_init.o OBJS-$(CONFIG_EXR_DECODER) += x86/exrdsp_init.o +OBJS-$(CONFIG_FLAC_DECODER) += x86/flacdsp_init.o +OBJS-$(CONFIG_FLAC_ENCODER) += x86/flacencdsp_init.o OBJS-$(CONFIG_OPUS_DECODER) += x86/opusdsp_init.o OBJS-$(CONFIG_OPUS_ENCODER) += x86/celt_pvq_init.o OBJS-$(CONFIG_HEVC_DECODER) += x86/hevcdsp_init.o diff --git a/libavcodec/x86/flacdsp_init.c b/libavcodec/x86/flacdsp_init.c index 7975712db9..2deaf3117f 100644 --- a/libavcodec/x86/flacdsp_init.c +++ b/libavcodec/x86/flacdsp_init.c @@ -22,15 +22,12 @@ #include "libavcodec/flacdsp.h" #include "libavutil/x86/cpu.h" #include "config.h" -#include "config_components.h" void ff_flac_lpc_32_sse4(int32_t *samples, const int coeffs[32], int order, int qlevel, int len); void ff_flac_lpc_32_xop(int32_t *samples, const int coeffs[32], int order, int qlevel, int len); -void ff_flac_enc_lpc_16_sse4(int32_t *, const int32_t *, int, int, const int32_t *,int); - #define DECORRELATE_FUNCS(fmt, opt) \ void ff_flac_decorrelate_ls_##fmt##_##opt(uint8_t **out, int32_t **in, int channels, \ int len, int shift); \ @@ -57,7 +54,6 @@ av_cold void ff_flacdsp_init_x86(FLACDSPContext *c, enum AVSampleFormat fmt, int #if HAVE_X86ASM int cpu_flags = av_get_cpu_flags(); -#if CONFIG_FLAC_DECODER if (EXTERNAL_SSE2(cpu_flags)) { if (fmt == AV_SAMPLE_FMT_S16) { if (channels == 2) @@ -104,13 +100,5 @@ av_cold void ff_flacdsp_init_x86(FLACDSPContext *c, enum AVSampleFormat fmt, int if (EXTERNAL_XOP(cpu_flags)) { c->lpc32 = ff_flac_lpc_32_xop; } -#endif - -#if CONFIG_FLAC_ENCODER - if (EXTERNAL_SSE4(cpu_flags)) { - if (CONFIG_GPL) - c->lpc16_encode = ff_flac_enc_lpc_16_sse4; - } -#endif #endif /* HAVE_X86ASM */ } diff --git a/libavcodec/x86/flacencdsp_init.c b/libavcodec/x86/flacencdsp_init.c new file mode 100644 index 0000000000..5ab37e0a8f --- /dev/null +++ b/libavcodec/x86/flacencdsp_init.c @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2014 James Almer + * + * 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 + */ + +#include "config.h" +#include "libavutil/attributes.h" +#include "libavutil/x86/cpu.h" +#include "libavcodec/flacencdsp.h" + +void ff_flac_enc_lpc_16_sse4(int32_t *, const int32_t *, int, int, const int32_t *,int); + +av_cold void ff_flacencdsp_init_x86(FLACEncDSPContext *c) +{ +#if HAVE_X86ASM && CONFIG_GPL + int cpu_flags = av_get_cpu_flags(); + + if (EXTERNAL_SSE4(cpu_flags)) { + if (CONFIG_GPL) + c->lpc16_encode = ff_flac_enc_lpc_16_sse4; + } +#endif /* HAVE_X86ASM */ +} diff --git a/tests/checkasm/Makefile b/tests/checkasm/Makefile index e869c70b55..1ac170491b 100644 --- a/tests/checkasm/Makefile +++ b/tests/checkasm/Makefile @@ -3,7 +3,6 @@ AVCODECOBJS-$(CONFIG_AUDIODSP) += audiodsp.o AVCODECOBJS-$(CONFIG_BLOCKDSP) += blockdsp.o AVCODECOBJS-$(CONFIG_BSWAPDSP) += bswapdsp.o -AVCODECOBJS-$(CONFIG_FLACDSP) += flacdsp.o AVCODECOBJS-$(CONFIG_FMTCONVERT) += fmtconvert.o AVCODECOBJS-$(CONFIG_G722DSP) += g722dsp.o AVCODECOBJS-$(CONFIG_H264DSP) += h264dsp.o @@ -23,6 +22,7 @@ AVCODECOBJS-$(CONFIG_AAC_DECODER) += aacpsdsp.o \ AVCODECOBJS-$(CONFIG_ALAC_DECODER) += alacdsp.o AVCODECOBJS-$(CONFIG_DCA_DECODER) += synth_filter.o AVCODECOBJS-$(CONFIG_EXR_DECODER) += exrdsp.o +AVCODECOBJS-$(CONFIG_FLAC_DECODER) += flacdsp.o AVCODECOBJS-$(CONFIG_HUFFYUV_DECODER) += huffyuvdsp.o AVCODECOBJS-$(CONFIG_JPEG2000_DECODER) += jpeg2000dsp.o AVCODECOBJS-$(CONFIG_OPUS_DECODER) += opusdsp.o diff --git a/tests/checkasm/checkasm.c b/tests/checkasm/checkasm.c index 5ffcafbda9..e56fd3850e 100644 --- a/tests/checkasm/checkasm.c +++ b/tests/checkasm/checkasm.c @@ -96,7 +96,7 @@ static const struct { #if CONFIG_EXR_DECODER { "exrdsp", checkasm_check_exrdsp }, #endif - #if CONFIG_FLACDSP + #if CONFIG_FLAC_DECODER { "flacdsp", checkasm_check_flacdsp }, #endif #if CONFIG_FMTCONVERT -- 2.34.1 _______________________________________________ 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".