From patchwork Sat Sep 23 17:59:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 43881 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp337917pzh; Sat, 23 Sep 2023 10:59:57 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEYWKRkBWYLrK62ksZWo1t8ZYdeazK2LcEFl7tcLHi6gyC/F3jf6+kIe0feDSdWWnolZHOP X-Received: by 2002:adf:fd85:0:b0:313:e8b6:1699 with SMTP id d5-20020adffd85000000b00313e8b61699mr2391836wrr.55.1695491997132; Sat, 23 Sep 2023 10:59:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695491997; cv=none; d=google.com; s=arc-20160816; b=TZjKhpKUlYOSWaJx3ezOUrpdAeHe4djuk7bWOQX8ouiyHN8ASHKjCuU/EG15sH/Wn0 W4ww0NCmSJOVdTU98v5yalqdN0RedR9v9G2aeUDrtogMnjHlZrVMSsiKc/ne0J7+69OU iz5XoGuJmeFUsZT6k68tdg/4LLZJpACrmbJWrlBdD1v3YLNQHTiz1aqCEfDOUXtIqYtE nC/kLuo220gNadu0h6tODciOnRTC/212hcdymdwS38knudii3dnEKJKHWtBY3CIFP9Oo LpaMQF9S3vSoDZyao50SWIYpgs3d38hfM28hLNVT5Pe0n2VDNiknAhceJbYsscPutaAH eLOw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :delivered-to; bh=Aaq3lUCoioJ8CNK855Hld/JatyotiHHR+/6AAMZI23Y=; fh=e5zN9xSzcxLA6bGo3lF+CqTbY/oLwzApV03EO/RBfgQ=; b=pYBA7TFYJKegsbqCVOA+bN0RdtL1XPRPf+7lAA2R3TQGuayBSTRr3CpCQ3LiAGO9mQ DoAolCnyoCurWhU3MrbgwQDLYktxtS9slhtAB3o67oONah76yRUVp94Sr36V/g2SnXLV wHq8zCj5vjN1knYNe1UCPefInzleKAcfj+jbcZIb5Lfi53hURS3W2YEcOBhd4VMkwPYp llD1hs6pcqGFqbZidrSDGGk4vrEc7R1Szo8bmcJg8R7dZtOuRXtBr50AGW8AQLzT1oWa NyKh979m5jc5mn7D3KXEnomr/WHrcMsPLyca73wTq2wNyyHD0op3eme5cx25StZvhCUd Gn1Q== ARC-Authentication-Results: i=1; mx.google.com; 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 x14-20020a170906710e00b0099b422f9c93si5376213ejj.524.2023.09.23.10.59.55; Sat, 23 Sep 2023 10:59:57 -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; 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 1309268C9F6; Sat, 23 Sep 2023 20:59:53 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from relay3-d.mail.gandi.net (relay3-d.mail.gandi.net [217.70.183.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2B8DB68C947 for ; Sat, 23 Sep 2023 20:59:46 +0300 (EEST) Received: by mail.gandi.net (Postfix) with ESMTPSA id D70A260002 for ; Sat, 23 Sep 2023 17:59:44 +0000 (UTC) From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Sat, 23 Sep 2023 19:59:43 +0200 Message-Id: <20230923175943.1675272-1-michael@niedermayer.cc> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 X-GND-Sasl: michael@niedermayer.cc Subject: [FFmpeg-devel] [PATCH] sdr: Remove avpriv_sdr_options 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: ZhlPoMGV6s4T This causes issues with dlls Found-by: mkver Signed-off-by: Michael Niedermayer --- libavdevice/sdrindev.c | 10 ++++++- libavformat/sdr.h | 58 ++++++++++++++++++++++++++++++++++++++-- libavformat/sdrdemux.c | 60 +++--------------------------------------- 3 files changed, 68 insertions(+), 60 deletions(-) diff --git a/libavdevice/sdrindev.c b/libavdevice/sdrindev.c index 8766fc2f34..d5a8228d21 100644 --- a/libavdevice/sdrindev.c +++ b/libavdevice/sdrindev.c @@ -468,10 +468,18 @@ static int sdr_get_device_list(AVFormatContext *ctx, AVDeviceInfoList *device_li return ret; } +#define OFFSET(x) offsetof(SDRContext, x) +#define DEC AV_OPT_FLAG_DECODING_PARAM + +static const AVOption sdr_options[] = { + { "sdr_adcc" ,"sdr automatic dc correction", OFFSET(sdr_adcc), AV_OPT_TYPE_BOOL , {.i64 = -1}, -1, 1, DEC}, + SDR_COMMON_OPT +}; + static const AVClass sdr_demuxer_class = { .class_name = "sdr", .item_name = av_default_item_name, - .option = avpriv_sdr_options, + .option = sdr_options, .version = LIBAVUTIL_VERSION_INT, .category = AV_CLASS_CATEGORY_DEMUXER, }; diff --git a/libavformat/sdr.h b/libavformat/sdr.h index 1bf8fbef79..ad238e7e5f 100644 --- a/libavformat/sdr.h +++ b/libavformat/sdr.h @@ -288,8 +288,6 @@ typedef struct BandDescriptor { int64_t freq_max; } BandDescriptor ; -extern const AVOption avpriv_sdr_options[]; - extern ModulationDescriptor ff_sdr_modulation_descs[]; /** @@ -341,4 +339,60 @@ static inline float len2(AVComplexFloat c) return c.re*c.re + c.im*c.im; } +#define SDR_COMMON_OPT \ + { "video_size", "set frame size", OFFSET(width), AV_OPT_TYPE_IMAGE_SIZE, {.str = "0x0"}, 0, 0, DEC },\ + { "framerate" , "set frame rate", OFFSET(fps), AV_OPT_TYPE_VIDEO_RATE, {.str = "25"}, 0, INT_MAX,DEC },\ + { "block_size", "FFT block size", OFFSET(block_size), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, DEC},\ + { "mode", "" , OFFSET(mode), AV_OPT_TYPE_INT, {.i64 = SingleStationMode}, 0, ModeNB-1, DEC, "mode"},\ + { "single_mode", "Demodulate 1 station", 0, AV_OPT_TYPE_CONST, {.i64 = SingleStationMode}, 0, 0, DEC, "mode"},\ + { "all_mode" , "Demodulate all station", 0, AV_OPT_TYPE_CONST, {.i64 = AllStationMode}, 0, 0, DEC, "mode"},\ +\ + { "station_freq", "current station/channel/stream frequency", OFFSET(station_freq), AV_OPT_TYPE_INT64, {.i64 = 88000000}, 0, INT64_MAX, DEC},\ +\ + { "driver" , "sdr driver name" , OFFSET(driver_name), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, DEC},\ + { "rtlsdr_fixes" , "workaround rtlsdr issues", OFFSET(rtlsdr_fixes), AV_OPT_TYPE_INT , {.i64 = -1}, -1, 1, DEC},\ + { "sdrplay_fixes" , "workaround sdrplay issues", OFFSET(sdrplay_fixes), AV_OPT_TYPE_INT , {.i64 = -1}, -1, 1, DEC},\ + { "dc_fix" , "Apply DC correction", OFFSET(dc_fix), AV_OPT_TYPE_INT , {.i64 = -1}, -1, 1, DEC},\ + { "sdr_sr" , "sdr sample rate" , OFFSET(sdr_sample_rate ), AV_OPT_TYPE_INT , {.i64 = 0}, 0, INT_MAX, DEC},\ + { "sdr_freq", "sdr frequency" , OFFSET(user_wanted_freq), AV_OPT_TYPE_INT64 , {.i64 = 9000000}, 0, INT64_MAX, DEC},\ + { "gain" , "sdr overall gain", OFFSET(sdr_gain), AV_OPT_TYPE_INT , {.i64 = GAIN_SDR_AGC}, -3, INT_MAX, DEC, "gain"},\ + { "sdr_agc", "SDR AGC (if supported)", 0, AV_OPT_TYPE_CONST, {.i64 = GAIN_SDR_AGC}, 0, 0, DEC, "gain"},\ + { "sw_agc", "Software AGC", 0, AV_OPT_TYPE_CONST, {.i64 = GAIN_SW_AGC}, 0, 0, DEC, "gain"},\ + { "default_gain", "Never touch gain", 0, AV_OPT_TYPE_CONST, {.i64 = GAIN_DEFAULT}, 0, 0, DEC, "gain"},\ +\ + { "agc_min_headroom", "AGC min headroom", OFFSET(agc_min_headroom), AV_OPT_TYPE_FLOAT, {.dbl = 0.4}, 0, 1.0, DEC},\ + { "agc_max_headroom", "AGC max headroom", OFFSET(agc_max_headroom), AV_OPT_TYPE_FLOAT, {.dbl = 0.8}, 0, 1.0, DEC},\ + { "agc_max_headroom_time", "AGC max headroom time", OFFSET(agc_max_headroom_time), AV_OPT_TYPE_FLOAT, {.dbl = 0.1}, 0, INT_MAX, DEC},\ + { "min_gain", "minimum gain", OFFSET(min_gain ), AV_OPT_TYPE_FLOAT , {.dbl = 0}, 0, INT_MAX, DEC},\ + { "max_gain", "maximum gain", OFFSET(max_gain ), AV_OPT_TYPE_FLOAT , {.dbl = 0}, 0, INT_MAX, DEC},\ +\ + { "min_freq", "minimum frequency", OFFSET(min_freq ), AV_OPT_TYPE_INT64 , {.i64 = 0}, 0, INT64_MAX, DEC},\ + { "max_freq", "maximum frequency", OFFSET(max_freq ), AV_OPT_TYPE_INT64 , {.i64 = 0}, 0, INT64_MAX, DEC},\ +\ + { "dumpurl", "url to dump soapy output to" , OFFSET(dump_url), AV_OPT_TYPE_STRING , {.str = NULL}, 0, 0, DEC},\ + { "kbd_alpha", "Kaiser Bessel window parameter" , OFFSET(kbd_alpha), AV_OPT_TYPE_INT , {.i64 = 8}, 1, 16, DEC},\ +\ + { "am_mode", "AM Demodulation Mode", OFFSET(am_mode ), AV_OPT_TYPE_INT , {.i64 = AMMidSide}, 0, AMModeNB-1, DEC, "am_mode"},\ + { "am_leftright", "AM Demodulation Left Right", 0, AV_OPT_TYPE_CONST, {.i64 = AMLeftRight}, 0, 0, DEC, "am_mode"},\ + { "am_midside", "AM Demodulation Mid Side", 0, AV_OPT_TYPE_CONST, {.i64 = AMMidSide}, 0, 0, DEC, "am_mode"},\ + { "am_inphase", "AM Demodulation In Phase", 0, AV_OPT_TYPE_CONST, {.i64 = AMInPhase}, 0, 0, DEC, "am_mode"},\ + { "am_envelope","AM Demodulation EnvelopeDC", 0, AV_OPT_TYPE_CONST, {.i64 = AMEnvelope}, 0, 0, DEC, "am_mode"},\ + { "am_cquam","CQUAM Stereo Demodulation", 0, AV_OPT_TYPE_CONST, {.i64 = AMCQUAM}, 0, 0, DEC, "am_mode"},\ +\ + { "am_fft_ref", "Use FFT Based carrier for AM demodulation", OFFSET(am_fft_ref), AV_OPT_TYPE_INT , {.i64 = 0}, 0, 1, DEC},\ +\ + { "fm_emphasis" , "FM De-Emphasis", OFFSET(emphasis_mode), AV_OPT_TYPE_INT, {.i64 = EMPHASIS_75us}, 0, EMPHASISNB - 1, DEC, "fm_emphasis"},\ + { "emphasis75us", "FM De-Emphasis 75us", 0, AV_OPT_TYPE_CONST, {.i64 = EMPHASIS_75us}, 0, 0, DEC, "fm_emphasis"},\ + { "emphasis50us", "FM De-Emphasis 50us", 0, AV_OPT_TYPE_CONST, {.i64 = EMPHASIS_50us}, 0, 0, DEC, "fm_emphasis"},\ + { "none" , "No FM De-Emphasis" , 0, AV_OPT_TYPE_CONST, {.i64 = EMPHASIS_NONE}, 0, 0, DEC, "fm_emphasis"},\ +\ + { "am_threshold" , "AM detection threshold", OFFSET(am_threshold), AV_OPT_TYPE_FLOAT, {.dbl = 20}, 0, FLT_MAX, DEC},\ + { "fm_threshold" , "FM detection threshold", OFFSET(fm_threshold), AV_OPT_TYPE_FLOAT, {.dbl = 50}, 0, FLT_MAX, DEC},\ + { "am_multiple" , "AM frequency mutiple", OFFSET(am_multiple ), AV_OPT_TYPE_FLOAT, {.dbl = 0}, 0, FLT_MAX, DEC},\ + { "fm_multiple" , "FM frequency mutiple", OFFSET(fm_multiple ), AV_OPT_TYPE_FLOAT, {.dbl = 0}, 0, FLT_MAX, DEC},\ + { "am_multiple_tolerance", "AM frequency mutiple tolerance", OFFSET(am_multiple_tolerance), AV_OPT_TYPE_FLOAT, {.dbl = 60}, 0, FLT_MAX, DEC},\ +\ + { NULL }, + + #endif /* AVFORMAT_SDR_H */ diff --git a/libavformat/sdrdemux.c b/libavformat/sdrdemux.c index 84dd90af80..227fa0f656 100644 --- a/libavformat/sdrdemux.c +++ b/libavformat/sdrdemux.c @@ -2321,68 +2321,14 @@ static int sdrfile_probe(const AVProbeData *p) #define OFFSET(x) offsetof(SDRContext, x) #define DEC AV_OPT_FLAG_DECODING_PARAM -const AVOption avpriv_sdr_options[] = { - { "video_size", "set frame size", OFFSET(width), AV_OPT_TYPE_IMAGE_SIZE, {.str = "0x0"}, 0, 0, DEC }, - { "framerate" , "set frame rate", OFFSET(fps), AV_OPT_TYPE_VIDEO_RATE, {.str = "25"}, 0, INT_MAX,DEC }, - { "block_size", "FFT block size", OFFSET(block_size), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, DEC}, - { "mode", "" , OFFSET(mode), AV_OPT_TYPE_INT, {.i64 = SingleStationMode}, 0, ModeNB-1, DEC, "mode"}, - { "single_mode", "Demodulate 1 station", 0, AV_OPT_TYPE_CONST, {.i64 = SingleStationMode}, 0, 0, DEC, "mode"}, - { "all_mode" , "Demodulate all station", 0, AV_OPT_TYPE_CONST, {.i64 = AllStationMode}, 0, 0, DEC, "mode"}, - - { "station_freq", "current station/channel/stream frequency", OFFSET(station_freq), AV_OPT_TYPE_INT64, {.i64 = 88000000}, 0, INT64_MAX, DEC}, - - { "driver" , "sdr driver name" , OFFSET(driver_name), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, DEC}, - { "rtlsdr_fixes" , "workaround rtlsdr issues", OFFSET(rtlsdr_fixes), AV_OPT_TYPE_INT , {.i64 = -1}, -1, 1, DEC}, - { "sdrplay_fixes" , "workaround sdrplay issues", OFFSET(sdrplay_fixes), AV_OPT_TYPE_INT , {.i64 = -1}, -1, 1, DEC}, - { "dc_fix" , "Apply DC correction", OFFSET(dc_fix), AV_OPT_TYPE_INT , {.i64 = -1}, -1, 1, DEC}, - { "sdr_sr" , "sdr sample rate" , OFFSET(sdr_sample_rate ), AV_OPT_TYPE_INT , {.i64 = 0}, 0, INT_MAX, DEC}, - { "sdr_freq", "sdr frequency" , OFFSET(user_wanted_freq), AV_OPT_TYPE_INT64 , {.i64 = 9000000}, 0, INT64_MAX, DEC}, - { "gain" , "sdr overall gain", OFFSET(sdr_gain), AV_OPT_TYPE_INT , {.i64 = GAIN_SDR_AGC}, -3, INT_MAX, DEC, "gain"}, - { "sdr_agc", "SDR AGC (if supported)", 0, AV_OPT_TYPE_CONST, {.i64 = GAIN_SDR_AGC}, 0, 0, DEC, "gain"}, - { "sw_agc", "Software AGC", 0, AV_OPT_TYPE_CONST, {.i64 = GAIN_SW_AGC}, 0, 0, DEC, "gain"}, - { "default_gain", "Never touch gain", 0, AV_OPT_TYPE_CONST, {.i64 = GAIN_DEFAULT}, 0, 0, DEC, "gain"}, - - { "agc_min_headroom", "AGC min headroom", OFFSET(agc_min_headroom), AV_OPT_TYPE_FLOAT, {.dbl = 0.4}, 0, 1.0, DEC}, - { "agc_max_headroom", "AGC max headroom", OFFSET(agc_max_headroom), AV_OPT_TYPE_FLOAT, {.dbl = 0.8}, 0, 1.0, DEC}, - { "agc_max_headroom_time", "AGC max headroom time", OFFSET(agc_max_headroom_time), AV_OPT_TYPE_FLOAT, {.dbl = 0.1}, 0, INT_MAX, DEC}, - { "min_gain", "minimum gain", OFFSET(min_gain ), AV_OPT_TYPE_FLOAT , {.dbl = 0}, 0, INT_MAX, DEC}, - { "max_gain", "maximum gain", OFFSET(max_gain ), AV_OPT_TYPE_FLOAT , {.dbl = 0}, 0, INT_MAX, DEC}, - - { "sdr_adcc" ,"sdr automatic dc correction", OFFSET(sdr_adcc), AV_OPT_TYPE_BOOL , {.i64 = -1}, -1, 1, DEC}, - { "min_freq", "minimum frequency", OFFSET(min_freq ), AV_OPT_TYPE_INT64 , {.i64 = 0}, 0, INT64_MAX, DEC}, - { "max_freq", "maximum frequency", OFFSET(max_freq ), AV_OPT_TYPE_INT64 , {.i64 = 0}, 0, INT64_MAX, DEC}, - - { "dumpurl", "url to dump soapy output to" , OFFSET(dump_url), AV_OPT_TYPE_STRING , {.str = NULL}, 0, 0, DEC}, - { "kbd_alpha", "Kaiser Bessel window parameter" , OFFSET(kbd_alpha), AV_OPT_TYPE_INT , {.i64 = 8}, 1, 16, DEC}, - - - { "am_mode", "AM Demodulation Mode", OFFSET(am_mode ), AV_OPT_TYPE_INT , {.i64 = AMMidSide}, 0, AMModeNB-1, DEC, "am_mode"}, - { "am_leftright", "AM Demodulation Left Right", 0, AV_OPT_TYPE_CONST, {.i64 = AMLeftRight}, 0, 0, DEC, "am_mode"}, - { "am_midside", "AM Demodulation Mid Side", 0, AV_OPT_TYPE_CONST, {.i64 = AMMidSide}, 0, 0, DEC, "am_mode"}, - { "am_inphase", "AM Demodulation In Phase", 0, AV_OPT_TYPE_CONST, {.i64 = AMInPhase}, 0, 0, DEC, "am_mode"}, - { "am_envelope","AM Demodulation EnvelopeDC", 0, AV_OPT_TYPE_CONST, {.i64 = AMEnvelope}, 0, 0, DEC, "am_mode"}, - { "am_cquam","CQUAM Stereo Demodulation", 0, AV_OPT_TYPE_CONST, {.i64 = AMCQUAM}, 0, 0, DEC, "am_mode"}, - - { "am_fft_ref", "Use FFT Based carrier for AM demodulation", OFFSET(am_fft_ref), AV_OPT_TYPE_INT , {.i64 = 0}, 0, 1, DEC}, - - { "fm_emphasis" , "FM De-Emphasis", OFFSET(emphasis_mode), AV_OPT_TYPE_INT, {.i64 = EMPHASIS_75us}, 0, EMPHASISNB - 1, DEC, "fm_emphasis"}, - { "emphasis75us", "FM De-Emphasis 75us", 0, AV_OPT_TYPE_CONST, {.i64 = EMPHASIS_75us}, 0, 0, DEC, "fm_emphasis"}, - { "emphasis50us", "FM De-Emphasis 50us", 0, AV_OPT_TYPE_CONST, {.i64 = EMPHASIS_50us}, 0, 0, DEC, "fm_emphasis"}, - { "none" , "No FM De-Emphasis" , 0, AV_OPT_TYPE_CONST, {.i64 = EMPHASIS_NONE}, 0, 0, DEC, "fm_emphasis"}, - - { "am_threshold" , "AM detection threshold", OFFSET(am_threshold), AV_OPT_TYPE_FLOAT, {.dbl = 20}, 0, FLT_MAX, DEC}, - { "fm_threshold" , "FM detection threshold", OFFSET(fm_threshold), AV_OPT_TYPE_FLOAT, {.dbl = 50}, 0, FLT_MAX, DEC}, - { "am_multiple" , "AM frequency mutiple", OFFSET(am_multiple ), AV_OPT_TYPE_FLOAT, {.dbl = 0}, 0, FLT_MAX, DEC}, - { "fm_multiple" , "FM frequency mutiple", OFFSET(fm_multiple ), AV_OPT_TYPE_FLOAT, {.dbl = 0}, 0, FLT_MAX, DEC}, - { "am_multiple_tolerance", "AM frequency mutiple tolerance", OFFSET(am_multiple_tolerance), AV_OPT_TYPE_FLOAT, {.dbl = 60}, 0, FLT_MAX, DEC}, - - { NULL }, +static const AVOption sdrfile_options[] = { + SDR_COMMON_OPT }; static const AVClass sdrfile_demuxer_class = { .class_name = "sdrfile", .item_name = av_default_item_name, - .option = avpriv_sdr_options, + .option = sdrfile_options, .version = LIBAVUTIL_VERSION_INT, .category = AV_CLASS_CATEGORY_DEMUXER, };