From patchwork Tue Oct 27 14:18:57 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 23245 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 37EA844BDB0 for ; Tue, 27 Oct 2020 16:19:47 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 112EC68AA85; Tue, 27 Oct 2020 16:19:47 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f179.google.com (mail-qt1-f179.google.com [209.85.160.179]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5AC78687FE6 for ; Tue, 27 Oct 2020 16:19:40 +0200 (EET) Received: by mail-qt1-f179.google.com with SMTP id h12so1054935qtc.9 for ; Tue, 27 Oct 2020 07:19:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=dYxjDc/KGeMFcwFDDtT7ghdOep8rjvS4Ka4NaaxaQYs=; b=a0pkHY+iKfyEOWn7zovygRIAShIkvTpaYLpQ2G7s/7yfSHuWOTmjl+cDtXZvU1TGbu +K+T4zsgcntxBDIkCDkTbazmqEPHTbNUXyK11D9kxhGcXDBPW8/Imj028nFYR9nbGxJR OXRfnhSgxqeQ+TgpTNG7Qeo8E31TH/+7scjJLMLJTawwhENy24U5XJcA+XpBBXSwA9Aj f5bNoJZp46+2KHJ9Vf8Hi3QhcvgOfeOU957w5yU8bG5UeI6hMsTHDxg0poZ4nB2zn9yL 6OVHk7AJ1G4M+rb7ux8ksVNh+Ua80n0HjZLg+2ic4xu7LYYshhlmX3GPTHuZtckAD+I1 R7Qw== 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:mime-version :content-transfer-encoding; bh=dYxjDc/KGeMFcwFDDtT7ghdOep8rjvS4Ka4NaaxaQYs=; b=JQuxX62QHUyS69Cvv9Rulq7eRPxhANj9Mor8dP0om6vNUGWJXi+lLEXlSLntEslvmh 3RN9O1GPsr/l3Vtr/dTmTF193ms32zNObL/Z2U4F0HWT8HvVN4fr320sXMF/MbspyEB5 FICAvU9RlBfxLmvKwy3tZhb79x853SANllHXhk0tKoqjNqXGZeFju94dHoTvz59P0aGF 7T/n0WXR/miYrSLricyCUoj3Vh8lbEkMzpLtiD2rAObCHa5CcfHItZUZLNgOWtaITt0Z zf7kj3vt0RNFStmUEGWI9mtZgH1xpFxbpfPJJaq1w/+3wWtXvMGoWtPPVs47bkHdJaud FTiA== X-Gm-Message-State: AOAM5333G4gcgHufV5S+teQClrVXsZRBzAo5EcKcFWuD6QJ2UAf13FcK UD2ONdJiumMQ2if4ge6ZVBKpJzVlfrs= X-Google-Smtp-Source: ABdhPJzD/Cwox5H4pCsngQzcDw1ZikrIESaFLFnax3Qz3j5zUp3xQJHMv4eZr2ngqrOxVB278hW4kw== X-Received: by 2002:aed:22c7:: with SMTP id q7mr2256475qtc.141.1603808378213; Tue, 27 Oct 2020 07:19:38 -0700 (PDT) Received: from localhost.localdomain ([181.23.86.134]) by smtp.gmail.com with ESMTPSA id u16sm890865qth.42.2020.10.27.07.19.36 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Oct 2020 07:19:37 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Tue, 27 Oct 2020 11:18:57 -0300 Message-Id: <20201027141859.1346-1-jamrial@gmail.com> X-Mailer: git-send-email 2.28.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/3] avcodec/codec2utils: remove avpriv prefix from inline functions 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 --- libavcodec/codec2utils.c | 8 ++++---- libavcodec/codec2utils.h | 14 +++++++------- libavcodec/libcodec2.c | 16 ++++++++-------- libavformat/codec2.c | 32 ++++++++++++++++---------------- 4 files changed, 35 insertions(+), 35 deletions(-) diff --git a/libavcodec/codec2utils.c b/libavcodec/codec2utils.c index 931478f22a..f1b6e56526 100644 --- a/libavcodec/codec2utils.c +++ b/libavcodec/codec2utils.c @@ -37,7 +37,7 @@ int avpriv_codec2_mode_bit_rate(void *logctx, int mode) int avpriv_codec2_mode_frame_size(void *logctx, int mode) { - int frame_size_table[AVPRIV_CODEC2_MODE_MAX+1] = { + int frame_size_table[CODEC2_MODE_MAX+1] = { 160, // 3200 160, // 2400 320, // 1600 @@ -49,7 +49,7 @@ int avpriv_codec2_mode_frame_size(void *logctx, int mode) 320, // 700C }; - if (mode < 0 || mode > AVPRIV_CODEC2_MODE_MAX) { + if (mode < 0 || mode > CODEC2_MODE_MAX) { av_log(logctx, AV_LOG_ERROR, "unknown codec2 mode %i, can't find frame_size\n", mode); return 0; } else { @@ -59,7 +59,7 @@ int avpriv_codec2_mode_frame_size(void *logctx, int mode) int avpriv_codec2_mode_block_align(void *logctx, int mode) { - int block_align_table[AVPRIV_CODEC2_MODE_MAX+1] = { + int block_align_table[CODEC2_MODE_MAX+1] = { 8, // 3200 6, // 2400 8, // 1600 @@ -71,7 +71,7 @@ int avpriv_codec2_mode_block_align(void *logctx, int mode) 4, // 700C }; - if (mode < 0 || mode > AVPRIV_CODEC2_MODE_MAX) { + if (mode < 0 || mode > CODEC2_MODE_MAX) { av_log(logctx, AV_LOG_ERROR, "unknown codec2 mode %i, can't find block_align\n", mode); return 0; } else { diff --git a/libavcodec/codec2utils.h b/libavcodec/codec2utils.h index 6def4d4aa3..e9b1f84d84 100644 --- a/libavcodec/codec2utils.h +++ b/libavcodec/codec2utils.h @@ -27,14 +27,14 @@ //Highest mode we're willing to use. //Don't want to let users accidentally produce files that can't be decoded in the future. //CODEC2_MODE_WB (9) is experimental/unstable as of 2017-11-23. -#define AVPRIV_CODEC2_MODE_MAX 8 //CODEC2_MODE_700C +#define CODEC2_MODE_MAX 8 //CODEC2_MODE_700C //Used by both codec2raw demuxer and libcodec2 encoder. //The integers match the values in codec2.h, so "3200" -> CODEC2_MODE_3000 = 0 and so on. //It is possible that we're linked to a version of libcodec2 that lacks some of these modes. //For example Debian stretch ships with libcodec2.so.0.4 which lacks CODEC2_MODE_700C. -#define AVPRIV_CODEC2_AVOPTIONS(desc, classname, min_val, default_val, option_flags) \ - { "mode", desc, offsetof(classname, mode), AV_OPT_TYPE_INT, {.i64 = default_val}, min_val, AVPRIV_CODEC2_MODE_MAX, .flags=option_flags, .unit="codec2_mode"},\ +#define CODEC2_AVOPTIONS(desc, classname, min_val, default_val, option_flags) \ + { "mode", desc, offsetof(classname, mode), AV_OPT_TYPE_INT, {.i64 = default_val}, min_val, CODEC2_MODE_MAX, .flags=option_flags, .unit="codec2_mode"},\ { "3200", "3200", 0, AV_OPT_TYPE_CONST, {.i64 = 0}, .flags=option_flags, .unit="codec2_mode"},\ { "2400", "2400", 0, AV_OPT_TYPE_CONST, {.i64 = 1}, .flags=option_flags, .unit="codec2_mode"},\ { "1600", "1600", 0, AV_OPT_TYPE_CONST, {.i64 = 2}, .flags=option_flags, .unit="codec2_mode"},\ @@ -59,10 +59,10 @@ int avpriv_codec2_mode_frame_size(void *logctx, int mode); //Mimics (codec2_bits_per_frame()+7)/8 int avpriv_codec2_mode_block_align(void *logctx, int mode); -#define AVPRIV_CODEC2_EXTRADATA_SIZE 4 +#define CODEC2_EXTRADATA_SIZE 4 //Used in codec2raw demuxer and libcodec2 encoder -static inline void avpriv_codec2_make_extradata(uint8_t *ptr, int mode) { +static inline void codec2_make_extradata(uint8_t *ptr, int mode) { //version 0.8 as of 2017-12-23 (r3386) ptr[0] = 0; //major ptr[1] = 8; //minor @@ -71,11 +71,11 @@ static inline void avpriv_codec2_make_extradata(uint8_t *ptr, int mode) { } //Returns version as a 16-bit value. 0.8 -> 0x0008 -static inline uint16_t avpriv_codec2_version_from_extradata(uint8_t *ptr) { +static inline uint16_t codec2_version_from_extradata(uint8_t *ptr) { return (ptr[0] << 8) + ptr[1]; } -static inline uint8_t avpriv_codec2_mode_from_extradata(uint8_t *ptr) { +static inline uint8_t codec2_mode_from_extradata(uint8_t *ptr) { return ptr[2]; } diff --git a/libavcodec/libcodec2.c b/libavcodec/libcodec2.c index 1d6bed0383..8421f5b261 100644 --- a/libavcodec/libcodec2.c +++ b/libavcodec/libcodec2.c @@ -34,7 +34,7 @@ typedef struct { static const AVOption options[] = { //not AV_OPT_FLAG_DECODING_PARAM since mode should come from the demuxer //1300 (aka FreeDV 1600) is the most common mode on-the-air, default to it here as well - AVPRIV_CODEC2_AVOPTIONS("codec2 mode", LibCodec2Context, 0, 4 /*CODEC2_MODE_1300*/, AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_ENCODING_PARAM), + CODEC2_AVOPTIONS("codec2 mode", LibCodec2Context, 0, 4 /*CODEC2_MODE_1300*/, AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_ENCODING_PARAM), { NULL }, }; @@ -55,7 +55,7 @@ static av_cold int libcodec2_init_common(AVCodecContext *avctx, int mode) { LibCodec2Context *c2 = avctx->priv_data; //Grab mode name from options, unless it's some weird number. - const char *modename = mode >= 0 && mode <= AVPRIV_CODEC2_MODE_MAX ? options[mode+1].name : "?"; + const char *modename = mode >= 0 && mode <= CODEC2_MODE_MAX ? options[mode+1].name : "?"; c2->codec = codec2_create(mode); if (!c2->codec) { @@ -93,13 +93,13 @@ static av_cold int libcodec2_init_decoder(AVCodecContext *avctx) avctx->sample_fmt = AV_SAMPLE_FMT_S16; avctx->channel_layout = AV_CH_LAYOUT_MONO; - if (avctx->extradata_size != AVPRIV_CODEC2_EXTRADATA_SIZE) { + if (avctx->extradata_size != CODEC2_EXTRADATA_SIZE) { av_log(avctx, AV_LOG_ERROR, "must have exactly %i bytes of extradata (got %i)\n", - AVPRIV_CODEC2_EXTRADATA_SIZE, avctx->extradata_size); + CODEC2_EXTRADATA_SIZE, avctx->extradata_size); return AVERROR_INVALIDDATA; } - return libcodec2_init_common(avctx, avpriv_codec2_mode_from_extradata(avctx->extradata)); + return libcodec2_init_common(avctx, codec2_mode_from_extradata(avctx->extradata)); } static av_cold int libcodec2_init_encoder(AVCodecContext *avctx) @@ -114,13 +114,13 @@ static av_cold int libcodec2_init_encoder(AVCodecContext *avctx) return AVERROR(EINVAL); } - avctx->extradata = av_mallocz(AVPRIV_CODEC2_EXTRADATA_SIZE + AV_INPUT_BUFFER_PADDING_SIZE); + avctx->extradata = av_mallocz(CODEC2_EXTRADATA_SIZE + AV_INPUT_BUFFER_PADDING_SIZE); if (!avctx->extradata) { return AVERROR(ENOMEM); } - avctx->extradata_size = AVPRIV_CODEC2_EXTRADATA_SIZE; - avpriv_codec2_make_extradata(avctx->extradata, c2->mode); + avctx->extradata_size = CODEC2_EXTRADATA_SIZE; + codec2_make_extradata(avctx->extradata, c2->mode); return libcodec2_init_common(avctx, c2->mode); } diff --git a/libavformat/codec2.c b/libavformat/codec2.c index 0d7c488587..1f7f16a106 100644 --- a/libavformat/codec2.c +++ b/libavformat/codec2.c @@ -29,8 +29,8 @@ #include "rawenc.h" #include "pcm.h" -#define AVPRIV_CODEC2_HEADER_SIZE 7 -#define AVPRIV_CODEC2_MAGIC 0xC0DEC2 +#define CODEC2_HEADER_SIZE 7 +#define CODEC2_MAGIC 0xC0DEC2 //the lowest version we should ever run across is 0.8 //we may run across later versions as the format evolves @@ -46,7 +46,7 @@ typedef struct { static int codec2_probe(const AVProbeData *p) { //must start wih C0 DE C2 - if (AV_RB24(p->buf) != AVPRIV_CODEC2_MAGIC) { + if (AV_RB24(p->buf) != CODEC2_MAGIC) { return 0; } @@ -63,7 +63,7 @@ static int codec2_probe(const AVProbeData *p) static int codec2_read_header_common(AVFormatContext *s, AVStream *st) { - int mode = avpriv_codec2_mode_from_extradata(st->codecpar->extradata); + int mode = codec2_mode_from_extradata(st->codecpar->extradata); st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO; st->codecpar->codec_id = AV_CODEC_ID_CODEC2; @@ -95,28 +95,28 @@ static int codec2_read_header(AVFormatContext *s) return AVERROR(ENOMEM); } - if (avio_rb24(s->pb) != AVPRIV_CODEC2_MAGIC) { + if (avio_rb24(s->pb) != CODEC2_MAGIC) { av_log(s, AV_LOG_ERROR, "not a .c2 file\n"); return AVERROR_INVALIDDATA; } - ret = ff_alloc_extradata(st->codecpar, AVPRIV_CODEC2_EXTRADATA_SIZE); + ret = ff_alloc_extradata(st->codecpar, CODEC2_EXTRADATA_SIZE); if (ret) { return ret; } - ret = ffio_read_size(s->pb, st->codecpar->extradata, AVPRIV_CODEC2_EXTRADATA_SIZE); + ret = ffio_read_size(s->pb, st->codecpar->extradata, CODEC2_EXTRADATA_SIZE); if (ret < 0) { return ret; } - version = avpriv_codec2_version_from_extradata(st->codecpar->extradata); + version = codec2_version_from_extradata(st->codecpar->extradata); if ((version >> 8) != EXPECTED_CODEC2_MAJOR_VERSION) { avpriv_report_missing_feature(s, "Major version %i", version >> 8); return AVERROR_PATCHWELCOME; } - s->internal->data_offset = AVPRIV_CODEC2_HEADER_SIZE; + s->internal->data_offset = CODEC2_HEADER_SIZE; return codec2_read_header_common(s, st); } @@ -160,14 +160,14 @@ static int codec2_write_header(AVFormatContext *s) st = s->streams[0]; - if (st->codecpar->extradata_size != AVPRIV_CODEC2_EXTRADATA_SIZE) { + if (st->codecpar->extradata_size != CODEC2_EXTRADATA_SIZE) { av_log(s, AV_LOG_ERROR, ".c2 files require exactly %i bytes of extradata (got %i)\n", - AVPRIV_CODEC2_EXTRADATA_SIZE, st->codecpar->extradata_size); + CODEC2_EXTRADATA_SIZE, st->codecpar->extradata_size); return AVERROR(EINVAL); } - avio_wb24(s->pb, AVPRIV_CODEC2_MAGIC); - avio_write(s->pb, st->codecpar->extradata, AVPRIV_CODEC2_EXTRADATA_SIZE); + avio_wb24(s->pb, CODEC2_MAGIC); + avio_write(s->pb, st->codecpar->extradata, CODEC2_EXTRADATA_SIZE); return 0; } @@ -189,13 +189,13 @@ static int codec2raw_read_header(AVFormatContext *s) return AVERROR(ENOMEM); } - ret = ff_alloc_extradata(st->codecpar, AVPRIV_CODEC2_EXTRADATA_SIZE); + ret = ff_alloc_extradata(st->codecpar, CODEC2_EXTRADATA_SIZE); if (ret) { return ret; } s->internal->data_offset = 0; - avpriv_codec2_make_extradata(st->codecpar->extradata, c2->mode); + codec2_make_extradata(st->codecpar->extradata, c2->mode); return codec2_read_header_common(s, st); } @@ -211,7 +211,7 @@ static const AVOption codec2_options[] = { }; static const AVOption codec2raw_options[] = { - AVPRIV_CODEC2_AVOPTIONS("codec2 mode [mandatory]", Codec2Context, -1, -1, AV_OPT_FLAG_DECODING_PARAM), + CODEC2_AVOPTIONS("codec2 mode [mandatory]", Codec2Context, -1, -1, AV_OPT_FLAG_DECODING_PARAM), FRAMES_PER_PACKET, { NULL }, }; From patchwork Tue Oct 27 14:18:58 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 23246 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 3124C44BDB0 for ; Tue, 27 Oct 2020 16:19:48 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1734C68ABFA; Tue, 27 Oct 2020 16:19:48 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f194.google.com (mail-qt1-f194.google.com [209.85.160.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5A51A687FE6 for ; Tue, 27 Oct 2020 16:19:41 +0200 (EET) Received: by mail-qt1-f194.google.com with SMTP id m14so1047000qtc.12 for ; Tue, 27 Oct 2020 07:19:41 -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=9JU90IAWffpK0ASfC1W1dkDjwhxJ3+bQeKrdS8u5rSA=; b=unInc8BSK6IlGpll+4Trs9UykIKuEmB2YzkLNtNFUBqXQKgx1dlJVoWwYiKHK2w66/ K8JbS9LnnHPiHSkCbPt5+QPpZGQeKOnJQX1loa9LG9xARDgcYrEPtFH+xTNTr5bf15oy mNanuWcYH7igR5He6Ljvti8qDyxb3JDXP9XJ8Jwi24H3tV2SF1+y9iI6KMfRB6ca0yom vLuhX/mz5L1GMoiwDUKh0sBWiEcyAgbFuuMZlYbwiDkk5ZtqQijsvfKjABKibW51IceB //bz6CqUAV5ZVeDCOTG6s2hBvzn+ef2YO5nhCS3v1lJ0R/RF3RUxwxI6+WXyG2fJaM3r q0WA== 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=9JU90IAWffpK0ASfC1W1dkDjwhxJ3+bQeKrdS8u5rSA=; b=N8Pg8UrEXYWrUg8xB/CVcEgQy5W9VwF6mfHJm94lqN9O5DkrP+CPyhs7BUROjTMCYW 8HTc/Ea6e9NL4net0+jF2I5lhwwmkJU0jGDVWruTvyNUc7as/qAyf2A1IzgVUeZniwn3 eICpoVlXRu7GSDa7zFhFgN9ZV2t95s07K8i+FPII8w7WHRi49Fo/4rM3vxTkeoNvkXwD ekPELTb1CYuVJSZHpRU6iSPLRHmssV5kVHHLHem08SAOBAw2boPYFPW0nQiwFKj9Yc5K BPgnG0NXnZa1bjAInBKbY8cYDSNTUHyxKXPozA7T91uVaxhmdr6Y4qEpQSTACvF+BwuW oW+w== X-Gm-Message-State: AOAM533biTP7sNx/FBg6pffSkBmVWzpZhTLPeZIG6hDf6692o3SiLweg 0FDlQsG03Q6NMFZQD5BmL4dDyPJ4tWU= X-Google-Smtp-Source: ABdhPJzl2t+SE4hPRTrIpvSg0pM1+tLBW1FoVyuJDc71IA/i0llxVDcGP1INpTANVpDdezeFSdafZQ== X-Received: by 2002:ac8:5247:: with SMTP id y7mr2281695qtn.205.1603808379707; Tue, 27 Oct 2020 07:19:39 -0700 (PDT) Received: from localhost.localdomain ([181.23.86.134]) by smtp.gmail.com with ESMTPSA id u16sm890865qth.42.2020.10.27.07.19.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Oct 2020 07:19:39 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Tue, 27 Oct 2020 11:18:58 -0300 Message-Id: <20201027141859.1346-2-jamrial@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201027141859.1346-1-jamrial@gmail.com> References: <20201027141859.1346-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/3] avcodec/codec2utils: move codec2_version_from_extradata to lavf 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" It's only used by the codec2 demuxers Signed-off-by: James Almer --- libavcodec/codec2utils.h | 5 ----- libavformat/codec2.c | 5 +++++ 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/libavcodec/codec2utils.h b/libavcodec/codec2utils.h index e9b1f84d84..2ee7a592a1 100644 --- a/libavcodec/codec2utils.h +++ b/libavcodec/codec2utils.h @@ -70,11 +70,6 @@ static inline void codec2_make_extradata(uint8_t *ptr, int mode) { ptr[3] = 0; //flags } -//Returns version as a 16-bit value. 0.8 -> 0x0008 -static inline uint16_t codec2_version_from_extradata(uint8_t *ptr) { - return (ptr[0] << 8) + ptr[1]; -} - static inline uint8_t codec2_mode_from_extradata(uint8_t *ptr) { return ptr[2]; } diff --git a/libavformat/codec2.c b/libavformat/codec2.c index 1f7f16a106..edd450716f 100644 --- a/libavformat/codec2.c +++ b/libavformat/codec2.c @@ -86,6 +86,11 @@ static int codec2_read_header_common(AVFormatContext *s, AVStream *st) return 0; } +//Returns version as a 16-bit value. 0.8 -> 0x0008 +static uint16_t codec2_version_from_extradata(uint8_t *ptr) { + return (ptr[0] << 8) + ptr[1]; +} + static int codec2_read_header(AVFormatContext *s) { AVStream *st = avformat_new_stream(s, NULL); From patchwork Tue Oct 27 14:18:59 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 23247 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 4461844BDB0 for ; Tue, 27 Oct 2020 16:19:50 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 28B4868ACD0; Tue, 27 Oct 2020 16:19:50 +0200 (EET) 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 DD0CF68AB96 for ; Tue, 27 Oct 2020 16:19:42 +0200 (EET) Received: by mail-qt1-f172.google.com with SMTP id m9so1057001qth.7 for ; Tue, 27 Oct 2020 07:19:42 -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=+jUusQv32sRKHJ7tU+IZOTuiNg+P7uRq2XmsFPBjOOU=; b=tkbVrHidIMCNqdCYmMnv77wWqKhItCGk+2M5QGGFdDPBV+Q35nb2p+AzvqjP7zPbJ+ yi21LWST8KcO/xGjbMJktxkfzeWM2JIJOh5IP4N8F/+TvBN0cTmr/4dG3bcawG4vSCEe cFMC9bSiKjrtmPFK5Tm/i8EYc9yBQSc4VH95eB0VigaP+MUAX7ZPAT9OP2rToddhRmZw 6CJBr3OLwHPyh4b+KxjFjtlw8Mp5PylTPLCITfQ5mcW661jS5wy05OJATV7eKu8yATvX Geiq0v6/9vFmMff21jQ1XRbDRBm2LZEb08t2lRnDy/KP5kGJmW7FHRNrsjs2dsMzXE6U 5qfg== 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=+jUusQv32sRKHJ7tU+IZOTuiNg+P7uRq2XmsFPBjOOU=; b=s1kJQhMDcUXzqJFuqOedzNDX1Jw0Ctqqmp1PStUwQtnWAlBZwdAsXEqWPak/5qj9Up RNV3IMUO3Aku4BF6EDph7NJ+vjJF34LpokYUzskxyAKUCYKwTnqbHcnVkCoYp1iAjOgs U1oRPA7HaxNXpxeln1vfYshoPdK/iQQaAclDYqnGNvlYKn3t25zzYpvA+urtVC6orGd4 Lmze2Dii9f2E4tUPNbbBq2wjdy6ZuvW/wMGu8Rhw4yN0S2kxHC3Z4jbop6heloZ34Z3q VBXuZ+4+ibXY59OO0ijSeEjvD/5d34wEc/b/iUofP8/OsTDSTvKLFZQK1mZBYZx6Q/31 Kv6Q== X-Gm-Message-State: AOAM532fprDS85p8QgP1B4YxVEpWu0ZdYmfvATniLmDoNkX1BFfZtQ4a tW2Z7scD0W1iFNGuC7oZI6FOTbEm8RU= X-Google-Smtp-Source: ABdhPJwUXr0GgwpoBUmLB/7vZPIXtd6H4vdTDAKLqCgpzC3tyKxjxfMUYilMwQJ9D0urBFly85Pc1w== X-Received: by 2002:ac8:71d5:: with SMTP id i21mr2354285qtp.365.1603808381248; Tue, 27 Oct 2020 07:19:41 -0700 (PDT) Received: from localhost.localdomain ([181.23.86.134]) by smtp.gmail.com with ESMTPSA id u16sm890865qth.42.2020.10.27.07.19.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Oct 2020 07:19:40 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Tue, 27 Oct 2020 11:18:59 -0300 Message-Id: <20201027141859.1346-3-jamrial@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201027141859.1346-1-jamrial@gmail.com> References: <20201027141859.1346-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/3] avcodec/codec2utils: move the remaining avpriv functions to lavf 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" They are only used by the codec2 demuxers. The symbols are kept around until the next major bump. Signed-off-by: James Almer --- libavcodec/codec2utils.c | 2 ++ libavcodec/codec2utils.h | 4 +++ libavformat/codec2.c | 66 ++++++++++++++++++++++++++++++++++++++-- 3 files changed, 69 insertions(+), 3 deletions(-) diff --git a/libavcodec/codec2utils.c b/libavcodec/codec2utils.c index f1b6e56526..a942662403 100644 --- a/libavcodec/codec2utils.c +++ b/libavcodec/codec2utils.c @@ -23,6 +23,7 @@ #include "internal.h" #include "libavcodec/codec2utils.h" +#if LIBAVCODEC_VERSION_MAJOR < 59 int avpriv_codec2_mode_bit_rate(void *logctx, int mode) { int frame_size = avpriv_codec2_mode_frame_size(logctx, mode); @@ -78,3 +79,4 @@ int avpriv_codec2_mode_block_align(void *logctx, int mode) return block_align_table[mode]; } } +#endif diff --git a/libavcodec/codec2utils.h b/libavcodec/codec2utils.h index 2ee7a592a1..37f0693dc7 100644 --- a/libavcodec/codec2utils.h +++ b/libavcodec/codec2utils.h @@ -24,6 +24,8 @@ #include +#include "version.h" + //Highest mode we're willing to use. //Don't want to let users accidentally produce files that can't be decoded in the future. //CODEC2_MODE_WB (9) is experimental/unstable as of 2017-11-23. @@ -45,6 +47,7 @@ { "700B", "700B", 0, AV_OPT_TYPE_CONST, {.i64 = 7}, .flags=option_flags, .unit="codec2_mode"},\ { "700C", "700C", 0, AV_OPT_TYPE_CONST, {.i64 = 8}, .flags=option_flags, .unit="codec2_mode"} +#if LIBAVCODEC_VERSION_MAJOR < 59 //The three following functions are here to avoid needing libavformat/codec2.c to depend on libcodec2 //Computes bitrate from mode, with frames rounded up to the nearest octet. @@ -58,6 +61,7 @@ int avpriv_codec2_mode_frame_size(void *logctx, int mode); //Mimics (codec2_bits_per_frame()+7)/8 int avpriv_codec2_mode_block_align(void *logctx, int mode); +#endif #define CODEC2_EXTRADATA_SIZE 4 diff --git a/libavformat/codec2.c b/libavformat/codec2.c index edd450716f..a64160283c 100644 --- a/libavformat/codec2.c +++ b/libavformat/codec2.c @@ -61,6 +61,66 @@ static int codec2_probe(const AVProbeData *p) return AVPROBE_SCORE_EXTENSION + 1; } +//Mimics codec2_samples_per_frame() +static int codec2_mode_frame_size(AVFormatContext *s, int mode) +{ + int frame_size_table[CODEC2_MODE_MAX+1] = { + 160, // 3200 + 160, // 2400 + 320, // 1600 + 320, // 1400 + 320, // 1300 + 320, // 1200 + 320, // 700 + 320, // 700B + 320, // 700C + }; + + if (mode < 0 || mode > CODEC2_MODE_MAX) { + av_log(s, AV_LOG_ERROR, "unknown codec2 mode %i, can't find frame_size\n", mode); + return 0; + } else { + return frame_size_table[mode]; + } +} + +//Mimics (codec2_bits_per_frame()+7)/8 +static int codec2_mode_block_align(AVFormatContext *s, int mode) +{ + int block_align_table[CODEC2_MODE_MAX+1] = { + 8, // 3200 + 6, // 2400 + 8, // 1600 + 7, // 1400 + 7, // 1300 + 6, // 1200 + 4, // 700 + 4, // 700B + 4, // 700C + }; + + if (mode < 0 || mode > CODEC2_MODE_MAX) { + av_log(s, AV_LOG_ERROR, "unknown codec2 mode %i, can't find block_align\n", mode); + return 0; + } else { + return block_align_table[mode]; + } +} + +//Computes bitrate from mode, with frames rounded up to the nearest octet. +//So 700 bit/s (28 bits/frame) becomes 800 bits/s (32 bits/frame). +static int codec2_mode_bit_rate(AVFormatContext *s, int mode) +{ + int frame_size = codec2_mode_frame_size(s, mode); + int block_align = codec2_mode_block_align(s, mode); + + if (frame_size <= 0 || block_align <= 0) { + return 0; + } + + return 8 * 8000 * block_align / frame_size; +} + static int codec2_read_header_common(AVFormatContext *s, AVStream *st) { int mode = codec2_mode_from_extradata(st->codecpar->extradata); @@ -71,9 +131,9 @@ static int codec2_read_header_common(AVFormatContext *s, AVStream *st) st->codecpar->channels = 1; st->codecpar->format = AV_SAMPLE_FMT_S16; st->codecpar->channel_layout = AV_CH_LAYOUT_MONO; - st->codecpar->bit_rate = avpriv_codec2_mode_bit_rate(s, mode); - st->codecpar->frame_size = avpriv_codec2_mode_frame_size(s, mode); - st->codecpar->block_align = avpriv_codec2_mode_block_align(s, mode); + st->codecpar->bit_rate = codec2_mode_bit_rate(s, mode); + st->codecpar->frame_size = codec2_mode_frame_size(s, mode); + st->codecpar->block_align = codec2_mode_block_align(s, mode); if (st->codecpar->bit_rate <= 0 || st->codecpar->frame_size <= 0 ||