From c267579db3d279d34cbb489485920825053d2afc Mon Sep 17 00:00:00 2001 From: Florian Tham Date: Sat, 24 Jun 2017 23:35:41 +0200 Subject: [PATCH] gr-osmosdr: fix sdrplay noise in gqrx --- net-wireless/gr-osmosdr/Manifest | 3 +- .../gr-osmosdr/files/gqrx_spikes.patch | 91 +++++++++++++++++++ .../gr-osmosdr/gr-osmosdr-9999.ebuild | 3 + 3 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 net-wireless/gr-osmosdr/files/gqrx_spikes.patch diff --git a/net-wireless/gr-osmosdr/Manifest b/net-wireless/gr-osmosdr/Manifest index 756f2e1..9338683 100644 --- a/net-wireless/gr-osmosdr/Manifest +++ b/net-wireless/gr-osmosdr/Manifest @@ -1,4 +1,5 @@ +AUX gqrx_spikes.patch 2724 SHA256 b89672ff88e9eb2fd3d97c4b4a6cbf76ed5a73fb1842f4afb2eda6823f6e015f SHA512 e7c2111bdd857ac6d10ee47034e9824cd0a3ae1c15edeb5187674a48e51a57e110860f2d85ca392e61c7a0632c645efd7a02c1c7764bc9c1fa92c579f2275de5 WHIRLPOOL 3b6cabde7bfc9b7fb8e61ceb26920abb3f821c8f90ad3fece190ca8680c9d84ae3fbec5744ea191d97c5846e3f286bc6ebf26c53b0f4b6a5686fb1b8228d68af DIST gr-osmosdr-0.1.4_p20150730.tar.xz 1148596 SHA256 b94e597d8042717d70f5f8c358fb8446ef64a91fa6ab2b362e0e7d37457bd961 SHA512 7e6847eba0d4e217ea71bb4b8105290b329bf8840a7193df013b3a0cd9c9ef57f3686252da48cb0df239288b5794c75178a8bb45ff2a2dd8b605f63fec2426d9 WHIRLPOOL db2df16796ab5974d22d4f606bd73aaec53693933fcc5c12e5126f14e4d3d2eadacd7cf2e28cb18a951caf9a16440c72f54177acfd3af16512febd97d6e0072c EBUILD gr-osmosdr-0.1.4_p20150730.ebuild 1920 SHA256 e02119d72b7074a412f16480ab086adc4013062f98d6f5b6989cc2979463ae3f SHA512 a99299d2a6ef5c09df4076cf82a01024c1da468efb9e658f5d31c63b1f6020efe5eeda98f218a747b5164811356c35a5d0bbc75d794a69bb9b90071338f54720 WHIRLPOOL 4c6b837840cd20ffcb354dfdeed73fa45bf8a81d40803541799e55f34aaff143b74e252b067019fe33feea653286d793792d67e88fee4c3be6ea81d58a7bca0f -EBUILD gr-osmosdr-9999.ebuild 1920 SHA256 e4e37406d0474e315f7a1a6909260578e5fc06168d8336dd3905ab20c726cecd SHA512 304cbf82578e1cfb85c2febc557ad0ec257325a32751e07b3e0aae20c1e56896679f8354154357426d77b0fa0e6543de9e71dc44e49c70ea300965562f99b323 WHIRLPOOL e06cb0559f7d67cf21d7c8c3a9e0466e86b9be4b04d130455f776d5e67dcdc096953c63887ea2ee78a06e76fec4c7bddaa04b611c48862fd6511a7fc7aab8bb3 +EBUILD gr-osmosdr-9999.ebuild 2270 SHA256 962ac36e9b6ec282e0a9e3fa89654587df20e530db4201599abb8f3161b835ef SHA512 d22b2db242fa44028930beb29ac4c8f58967a8b18af4491dd021d16c2d1fb9c12d2fe38ed3cde9cd2874bee0337de509b482840e5c5f6d1569b05b1c1df0a496 WHIRLPOOL 4740ea8e43c343fd1b04c950220a6a6880841687214913d3575692ad74e5bb1aafd61f01ef5757958e45da564bf970bbcdd40228b0ba35483825d2a61fdcf48a MISC metadata.xml 752 SHA256 aaf4a362243890bc6b43748cbb5c28f2ba400afb801c88514e0bc3806be26329 SHA512 3b49428bfa6b62bda1195b6c31c549a1ccf59fce03ce0bed5206a0d5a40386264628930758dbaa64e8a40b657c478076cb9a2f10c7d5ace10547ca5cf00742ae WHIRLPOOL 039452d0e4f720e5d60c1b23d7cd025a9c50c35216b199a118ffd4d38ffd08780cc6144d08254f704901662d1837e27a2e9cca0ed005fe601b8f4062801596d8 diff --git a/net-wireless/gr-osmosdr/files/gqrx_spikes.patch b/net-wireless/gr-osmosdr/files/gqrx_spikes.patch new file mode 100644 index 0000000..73c5ca2 --- /dev/null +++ b/net-wireless/gr-osmosdr/files/gqrx_spikes.patch @@ -0,0 +1,91 @@ +--- a/lib/sdrplay/sdrplay_source_c.cc 2017-06-24 23:13:25.747061807 +0200 ++++ b/lib/sdrplay/sdrplay_source_c.cc 2015-09-20 09:27:29.000000000 +0200 +@@ -142,8 +142,11 @@ + */ + sdrplay_source_c::~sdrplay_source_c () + { +- free(_dev); +- _dev = NULL; ++ if (_dev != NULL) ++ { ++ free(_dev); ++ _dev = NULL; ++ } + _buf_mutex.lock(); + if (_running) + { +@@ -214,10 +217,10 @@ + gr_complex *out = (gr_complex *)output_items[0]; + int cnt = noutput_items; + unsigned int sampNum; ++ unsigned int sampNumStart; + int grChanged; + int rfChanged; + int fsChanged; +- + if (_uninit) + { + return WORK_DONE; +@@ -230,27 +233,35 @@ + } + + _buf_mutex.lock(); +- +- if (_buf_offset) ++ sampNumStart = sampNum; ++ int first_offset = _buf_offset; ++ if (_buf_offset > 0) + { +- for (int i = _buf_offset; i < _dev->samplesPerPacket; i++) ++ for (int i = _buf_offset; i < _dev->samplesPerPacket; i++) + { + *out++ = gr_complex( float(_bufi[i]) * (1.0f/2048.0f), float(_bufq[i]) * (1.0f/2048.0f) ); + } +- cnt -= (_dev->samplesPerPacket - _buf_offset); ++ if (cnt > ( _dev ->samplesPerPacket - _buf_offset )) ++ { ++ cnt = cnt - (_dev->samplesPerPacket - _buf_offset); ++ } ++ else ++ { ++ _buf_offset = _buf_offset + cnt; ++ cnt = 0; ++ } + } + +- while ((cnt - _dev->samplesPerPacket) >= 0) ++ while ((cnt - _dev->samplesPerPacket) > 0) + { + mir_sdr_ReadPacket(_bufi.data(), _bufq.data(), &sampNum, &grChanged, &rfChanged, &fsChanged); + for (int i = 0; i < _dev->samplesPerPacket; i++) + { + *out++ = gr_complex( float(_bufi[i]) * (1.0f/2048.0f), float(_bufq[i]) * (1.0f/2048.0f) ); + } +- cnt -= _dev->samplesPerPacket; ++ cnt = cnt - _dev->samplesPerPacket; + } +- +- _buf_offset = 0; ++ + if (cnt) + { + mir_sdr_ReadPacket(_bufi.data(), _bufq.data(), &sampNum, &grChanged, &rfChanged, &fsChanged); +@@ -258,10 +269,15 @@ + { + *out++ = gr_complex( float(_bufi[i]) * (1.0f/2048.0f), float(_bufq[i]) * (1.0f/2048.0f) ); + } +- _buf_offset = cnt; +- } +- _buf_mutex.unlock(); ++ _buf_offset = cnt; + ++ } ++ int items = sampNum - sampNumStart; ++ if ( (items + _dev->samplesPerPacket - first_offset - noutput_items) != (_dev->samplesPerPacket - cnt)) ++ { ++ std::cerr << "Sampling Error! " << "cnt before return = " << cnt << " noutput_items = " << noutput_items << " first_offset = " << first_offset << " buffer_offset = " << _buf_offset << " Items = " << items << " SpP - _buf_offset = " << _dev->samplesPerPacket - _buf_offset << std::endl; ++ } ++ _buf_mutex.unlock(); + return noutput_items; + } + diff --git a/net-wireless/gr-osmosdr/gr-osmosdr-9999.ebuild b/net-wireless/gr-osmosdr/gr-osmosdr-9999.ebuild index 1da7b29..d2dc048 100644 --- a/net-wireless/gr-osmosdr/gr-osmosdr-9999.ebuild +++ b/net-wireless/gr-osmosdr/gr-osmosdr-9999.ebuild @@ -41,6 +41,9 @@ DEPEND="${RDEPEND} REQUIRED_USE="${PYTHON_REQUIRED_USE}" src_prepare() { + # patch source: http://www.transmitter.com/sdrplay/sdrplay_source_c.cc.test-0919-49.txt, + # details under http://www.sdrplay.com/community/viewtopic.php?f=9&t=317&sid=29080cae8c5689e5c332fb1a76abb325&start=10http://www.sdrplay.com/community/viewtopic.php?f=9&t=317&sid=29080cae8c5689e5c332fb1a76abb325&start=10 + epatch ${FILESDIR}/gqrx_spikes.patch epatch_user }