Comments (21)
Hum, the MER is very good but the BER is very poor at 0.50. Does the BER always remain that high?
A longer output log could help as well.
You say you have no issues with Ubuntu but have issues with Fedora? Are you able to provide more details if your running this in a VM or native environment?
With that said given the high BER it appear something is happening with the signal and/or samples.
from nrsc5.
Hi there,
Thanks for the quick response! I am running on a Native System. I will get more info to you shortly.
from nrsc5.
Here is NRSC-5 running
Detached kernel driver
Found Rafael Micro R820T tuner
Exact sample rate is: 1488375.071248 Hz
[R82XX] PLL not locked!
Gain: 0.0 dB, CNR: 7.6 dB
Gain: 0.9 dB, CNR: 9.6 dB
Gain: 1.4 dB, CNR: 10.7 dB
Gain: 2.7 dB, CNR: 14.2 dB
Gain: 3.7 dB, CNR: 15.7 dB
Gain: 7.7 dB, CNR: 18.7 dB
Gain: 8.7 dB, CNR: 19.3 dB
Gain: 12.5 dB, CNR: 21.2 dB
Gain: 14.4 dB, CNR: 19.6 dB
Gain: 15.7 dB, CNR: 16.0 dB
Gain: 16.6 dB, CNR: 15.2 dB
Gain: 19.7 dB, CNR: 13.6 dB
Gain: 20.7 dB, CNR: 12.2 dB
Gain: 22.9 dB, CNR: 10.8 dB
Gain: 25.4 dB, CNR: 8.8 dB
Gain: 28.0 dB, CNR: 6.0 dB
Gain: 29.7 dB, CNR: 6.7 dB
Gain: 32.8 dB, CNR: 8.9 dB
Gain: 33.8 dB, CNR: 8.3 dB
Gain: 36.4 dB, CNR: 6.1 dB
Gain: 37.2 dB, CNR: 7.2 dB
Gain: 38.6 dB, CNR: 5.7 dB
Gain: 40.2 dB, CNR: 6.8 dB
Gain: 42.1 dB, CNR: 6.8 dB
Gain: 43.4 dB, CNR: 5.5 dB
Gain: 43.9 dB, CNR: 5.5 dB
Gain: 44.5 dB, CNR: 6.0 dB
Gain: 48.0 dB, CNR: 5.7 dB
Gain: 49.6 dB, CNR: 5.0 dB
Best gain: 12.5 dB, CNR: 21.2 dB
Allocating 8 zero-copy buffers
CFO: -363.372803 Hz
Block @ 13
01:51:26 Synchronized
01:51:28 MER: 10.2 dB (lower), 8.8 dB (upper)
01:51:28 BER: 0.499455, avg: 0.499455, min: 0.499455, max: 0.499455
01:51:28 Lost synchronization
Block @ 0
Block @ 0
01:51:29 Synchronized
01:51:31 MER: 8.9 dB (lower), 7.5 dB (upper)
01:51:31 BER: 0.499617, avg: 0.499536, min: 0.499455, max: 0.499617
01:51:31 Lost synchronization
Block @ 0
01:51:32 Synchronized
20:51:34 MER: 9.1 dB (lower), 7.5 dB (upper)
20:51:34 BER: 0.500175, avg: 0.499749, min: 0.499455, max: 0.500175
20:51:34 Lost synchronization
Block @ 0
Block @ 0
20:51:35 Synchronized
20:51:37 MER: 9.1 dB (lower), 7.7 dB (upper)
20:51:37 BER: 0.499770, avg: 0.499754, min: 0.499455, max: 0.500175
20:51:37 Lost synchronization
Block @ 0
Block @ 0
20:51:38 Synchronized
20:51:40 MER: 9.3 dB (lower), 7.8 dB (upper)
20:51:40 BER: 0.499360, avg: 0.499675, min: 0.499360, max: 0.500175
20:51:40 Lost synchronization
Block @ 0
20:51:41 Synchronized
20:51:43 MER: 9.6 dB (lower), 7.9 dB (upper)
20:51:43 BER: 0.498738, avg: 0.499519, min: 0.498738, max: 0.500175
20:51:43 Lost synchronization
Block @ 0
Block @ 0
20:51:44 Synchronized
20:51:46 MER: 9.5 dB (lower), 7.8 dB (upper)
20:51:46 BER: 0.500323, avg: 0.499634, min: 0.498738, max: 0.500323
20:51:46 Lost synchronization
Block @ 0
from nrsc5.
Hum...
The same station works without issues on Ubuntu 20.04 but fails with Fedora 36?
from nrsc5.
Ubuntu 20.04
Detached kernel driver
Found Rafael Micro R820T tuner
Exact sample rate is: 1488375.071248 Hz
[R82XX] PLL not locked!
Disabled direct sampling mode
[R82XX] PLL not locked!
21:01:33 Synchronized
21:01:33 Country: US, FCC facility ID: 10059
21:01:33 Station name: WSHE-FM
21:01:33 Country: US, FCC facility ID: 10059
21:01:33 Station name: WSHE-FM
21:01:33 Slogan:
21:01:33 Country: US, FCC facility ID: 10059
21:01:33 Station name: WSHE-FM
21:01:33 Slogan:
21:01:33 Data service: public, type: Emergency, MIME type 444
21:01:33 Country: US, FCC facility ID: 10059
21:01:33 Station name: WSHE-FM
21:01:33 Slogan:
21:01:33 Data service: public, type: Emergency, MIME type 444
21:01:33 Country: US, FCC facility ID: 10059
21:01:33 Station name: WSHE-FM
21:01:33 Slogan:
21:01:33 Audio program 1: public, type: None, sound experience 0
21:01:33 Data service: public, type: Emergency, MIME type 444
21:01:33 Country: US, FCC facility ID: 10059
21:01:33 Station name: WSHE-FM
21:01:33 Slogan:
21:01:33 Message:
21:01:33 Audio program 1: public, type: None, sound experience 0
21:01:33 Data service: public, type: Emergency, MIME type 444
21:01:33 Country: US, FCC facility ID: 10059
21:01:33 Station name: WSHE-FM
21:01:33 Slogan:
21:01:33 Message:
21:01:33 Station location: 39.185303, -76.806274, 96m
21:01:33 Audio program 1: public, type: None, sound experience 0
21:01:33 Data service: public, type: Emergency, MIME type 444
21:01:33 Country: US, FCC facility ID: 10059
21:01:33 Station name: WSHE-FM
21:01:33 Slogan:
21:01:33 Message:
21:01:33 Station location: 39.185303, -76.806274, 96m
21:01:33 Audio program 0: public, type: None, sound experience 0
21:01:33 Audio program 1: public, type: None, sound experience 0
21:01:33 Data service: public, type: Emergency, MIME type 444
21:01:34 MER: 11.8 dB (lower), 11.4 dB (upper)
21:01:34 BER: 0.000142, avg: 0.000142, min: 0.000142, max: 0.000142
21:01:36 MER: 12.6 dB (lower), 12.3 dB (upper)
21:01:36 BER: 0.000047, avg: 0.000094, min: 0.000047, max: 0.000142
21:01:36 Title: Raise Your Glass
21:01:36 Artist: PINK
21:01:36 Album:
21:01:36 Genre:
21:01:36 XHDR: 0 BE4B7536 54054
21:01:36 Audio bit rate: 56.0 kbps
21:01:37 MER: 11.8 dB (lower), 11.2 dB (upper)
21:01:37 BER: 0.000145, avg: 0.000111, min: 0.000047, max: 0.000145
21:01:37 Title: Raise Your Glass
21:01:37 Artist: PINK
21:01:37 Album:
21:01:37 Genre:
21:01:37 XHDR: 0 BE4B7536 54054
21:01:37 Audio bit rate: 56.3 kbps
^C
from nrsc5.
Ubuntu 20.04 with latest compiled NRSC5
Found Rafael Micro R820T tuner
Exact sample rate is: 1488375.071248 Hz
[R82XX] PLL not locked!
Gain: 0.0 dB, CNR: 8.3 dB
Gain: 0.9 dB, CNR: 10.9 dB
Gain: 1.4 dB, CNR: 12.2 dB
Gain: 2.7 dB, CNR: 14.9 dB
Gain: 3.7 dB, CNR: 16.7 dB
Gain: 7.7 dB, CNR: 19.7 dB
Gain: 8.7 dB, CNR: 20.3 dB
Gain: 12.5 dB, CNR: 21.8 dB
Gain: 14.4 dB, CNR: 17.8 dB
Gain: 15.7 dB, CNR: 15.2 dB
Gain: 16.6 dB, CNR: 12.3 dB
Gain: 19.7 dB, CNR: 9.8 dB
Gain: 20.7 dB, CNR: 9.2 dB
Gain: 22.9 dB, CNR: 8.9 dB
Gain: 25.4 dB, CNR: 8.9 dB
Gain: 28.0 dB, CNR: 8.3 dB
Gain: 29.7 dB, CNR: 9.2 dB
Gain: 32.8 dB, CNR: 6.3 dB
Gain: 33.8 dB, CNR: 5.5 dB
Gain: 36.4 dB, CNR: 4.9 dB
Gain: 37.2 dB, CNR: 6.9 dB
Gain: 38.6 dB, CNR: 4.8 dB
Gain: 40.2 dB, CNR: 6.7 dB
Gain: 42.1 dB, CNR: 6.2 dB
Gain: 43.4 dB, CNR: 6.4 dB
Gain: 43.9 dB, CNR: 6.0 dB
Gain: 44.5 dB, CNR: 4.9 dB
Gain: 48.0 dB, CNR: 4.5 dB
Gain: 49.6 dB, CNR: 4.9 dB
Best gain: 12.5 dB, CNR: 21.8 dB
CFO: -363.372803 Hz
Block @ 6
21:07:22 Synchronized
21:07:22 Country: US, FCC facility ID: 10059
21:07:22 Station name: WSHE-FM
21:07:22 Country: US, FCC facility ID: 10059
21:07:22 Station name: WSHE-FM
21:07:22 Slogan:
21:07:22 Country: US, FCC facility ID: 10059
21:07:22 Station name: WSHE-FM
21:07:22 Slogan:
21:07:22 Data service: public, type: Emergency, MIME type 444
21:07:22 Country: US, FCC facility ID: 10059
21:07:22 Station name: WSHE-FM
21:07:22 Slogan:
21:07:22 Data service: public, type: Emergency, MIME type 444
21:07:22 Country: US, FCC facility ID: 10059
21:07:22 Station name: WSHE-FM
21:07:22 Slogan:
21:07:22 Audio program 1: public, type: None, sound experience 0
21:07:22 Data service: public, type: Emergency, MIME type 444
21:07:22 Country: US, FCC facility ID: 10059
21:07:22 Station name: WSHE-FM
21:07:22 Slogan:
21:07:22 Message:
21:07:22 Audio program 1: public, type: None, sound experience 0
21:07:22 Data service: public, type: Emergency, MIME type 444
21:07:22 Country: US, FCC facility ID: 10059
21:07:22 Station name: WSHE-FM
21:07:22 Slogan:
21:07:22 Message:
21:07:22 Station location: 39.185303, -76.806274, 96m
21:07:22 Audio program 1: public, type: None, sound experience 0
21:07:22 Data service: public, type: Emergency, MIME type 444
21:07:22 Country: US, FCC facility ID: 10059
21:07:22 Station name: WSHE-FM
21:07:22 Slogan:
21:07:22 Message:
21:07:22 Station location: 39.185303, -76.806274, 96m
21:07:22 Audio program 0: public, type: None, sound experience 0
21:07:22 Audio program 1: public, type: None, sound experience 0
21:07:22 Data service: public, type: Emergency, MIME type 444
21:07:23 MER: 10.1 dB (lower), 8.7 dB (upper)
21:07:23 BER: 0.003399, avg: 0.003399, min: 0.003399, max: 0.003399
ignoring partial pdu
ignoring partial pdu
ALFN of pending leap second adjustment: 0
21:07:25 MER: 8.7 dB (lower), 7.2 dB (upper)
21:07:25 BER: 0.006425, avg: 0.004912, min: 0.003399, max: 0.006425
21:07:25 Title: Uptown Funk
21:07:25 Artist: Mark Ronson W/ Bruno Mars
21:07:25 Album:
21:07:25 Genre:
21:07:25 XHDR: 0 BE4B7536 54055
21:07:25 Audio bit rate: 56.5 kbps
Local time zone offset: -300 minutes, DST sched. 1, local DST? yes, regional DST? yes
21:07:26 MER: 8.8 dB (lower), 7.3 dB (upper)
21:07:26 BER: 0.005040, avg: 0.004955, min: 0.003399, max: 0.006425
21:07:26 Title: Uptown Funk
21:07:26 Artist: Mark Ronson W/ Bruno Mars
21:07:26 Album:
21:07:26 Genre:
21:07:26 XHDR: 0 BE4B7536 54055
21:07:26 Title: Uptown Funk
21:07:26 Artist: Mark Ronson W/ Bruno Mars
21:07:26 Album:
21:07:26 Genre:
21:07:26 XHDR: 0 BE4B7536 54055
21:07:26 Audio bit rate: 56.2 kbps
Pending leap second offset: 0, current leap second offset: 0
21:07:28 MER: 8.6 dB (lower), 7.2 dB (upper)
21:07:28 BER: 0.005755, avg: 0.005155, min: 0.003399, max: 0.006425
21:07:28 Title: Uptown Funk
21:07:28 Artist: Mark Ronson W/ Bruno Mars
21:07:28 Album:
21:07:28 Genre:
21:07:28 XHDR: 0 BE4B7536 54055
21:07:28 Audio bit rate: 57.2 kbps
21:07:29 MER: 9.2 dB (lower), 7.4 dB (upper)
21:07:29 BER: 0.004657, avg: 0.005055, min: 0.003399, max: 0.006425
21:07:29 Title: Uptown Funk
21:07:29 Artist: Mark Ronson W/ Bruno Mars
21:07:29 Album:
21:07:29 Genre:
21:07:29 XHDR: 0 BE4B7536 54055
21:07:29 Audio bit rate: 56.3 kbps
^C
from nrsc5.
What happens if you play the included sample https://github.com/theori-io/nrsc5/blob/master/support/sample.xz using Fedora 36?
You will need to decompress it before playing and use the -r iq-input flag.
from nrsc5.
I think on Fedora 35 in an x86 architecture I had to use the -DUSE_SSE=ON build option. Without it I was getting the same kind of dropped synch issue.
from nrsc5.
I fixed it. The version I compiled on Ubuntu right now works perfect on Fedora 36.
I think I botched the first compile. So I will recompile on Fedora 36 fresh again and see if it works.
from nrsc5.
It's possible there is a bug somewhere in one of the libraries, a GCC bug or something with Fedora 36.
Anything you find might be helpful in trying to figure out what went wrong.
from nrsc5.
So after recompiling on Fedora 36 I had the same issue. I just replaced the nrsc5 binary with the Ubuntu 20.04 version and it's perfect. My friend (who does DevOps) says it may be the cmake.
from nrsc5.
@markjfine mentioned about using the SSE build option to resolve their issues on Fedora.
You might want to try to rebuild using the -DUSE_SSE=ON build option and see if that resolves the issue.
from nrsc5.
I always use the SSE Option. But I found this when I run ldd against the binaries it's different.
Fedora 36:
linux-vdso.so.1 (0x00007ffcaff6c000)
libao.so.4 => /lib64/libao.so.4 (0x00007faa3d27d000)
libfftw3f.so.3 => /lib64/libfftw3f.so.3 (0x00007faa3d07d000)
librtlsdr.so.0 => /lib64/librtlsdr.so.0 (0x00007faa3d06b000)
libm.so.6 => /lib64/libm.so.6 (0x00007faa3cf8d000)
libc.so.6 => /lib64/libc.so.6 (0x00007faa3cd8c000)
libusb-1.0.so.0 => /lib64/libusb-1.0.so.0 (0x00007faa3cd6b000)
/lib64/ld-linux-x86-64.so.2 (0x00007faa3d2a4000)
libudev.so.1 => /lib64/libudev.so.1 (0x00007faa3cd3e000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007faa3cd1e000)
Ubuntu:
linux-vdso.so.1 (0x00007ffee3dd0000)
libao.so.4 => /lib64/libao.so.4 (0x00007feca21fe000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007feca21f9000)
libfftw3f.so.3 => /lib64/libfftw3f.so.3 (0x00007feca1ff9000)
librtlsdr.so.0 => /lib64/librtlsdr.so.0 (0x00007feca1fe7000)
libm.so.6 => /lib64/libm.so.6 (0x00007feca1f09000)
libc.so.6 => /lib64/libc.so.6 (0x00007feca1d08000)
libusb-1.0.so.0 => /lib64/libusb-1.0.so.0 (0x00007feca1ce7000)
/lib64/ld-linux-x86-64.so.2 (0x00007feca2283000)
libudev.so.1 => /lib64/libudev.so.1 (0x00007feca1cba000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007feca1c9a000)
All libraries exist on both systems in /lib64. For some reason Fedora 36 is not linking libpthread.
from nrsc5.
libpthread is optional so that isn't the cause.
What happens if you play the sample https://github.com/theori-io/nrsc5/blob/master/support/sample.xz on Fedora using the build you made on it? Does it play correctly or show similar behavior.
from nrsc5.
Same issue when compiled on F36.
xz -d < ../sample.xz | src/nrsc5 -r - 0
Block @ 3
Block @ 31
Block @ 0
22:52:55 Synchronized
22:52:55 MER: 13.5 dB (lower), 12.5 dB (upper)
22:52:55 BER: 0.499086, avg: 0.499086, min: 0.499086, max: 0.499086
22:52:55 Lost synchronization
Block @ 0
Block @ 0
22:52:56 Synchronized
22:52:56 MER: 13.6 dB (lower), 12.3 dB (upper)
22:52:56 BER: 0.500424, avg: 0.499755, min: 0.499086, max: 0.500424
22:52:56 Lost synchronization
Block @ 0
Block @ 0
22:52:56 Synchronized
22:52:56 MER: 7.3 dB (lower), 6.5 dB (upper)
22:52:56 BER: 0.501790, avg: 0.500433, min: 0.499086, max: 0.501790
22:52:56 Lost synchronization
Block @ 0
22:52:57 Synchronized
22:52:57 MER: 13.2 dB (lower), 12.1 dB (upper)
22:52:57 BER: 0.498591, avg: 0.499973, min: 0.498591, max: 0.501790
22:52:57 Lost synchronization
Block @ 0
Block @ 0
22:52:57 Synchronized
22:52:57 MER: 13.5 dB (lower), 12.3 dB (upper)
22:52:57 BER: 0.501026, avg: 0.500183, min: 0.498591, max: 0.501790
22:52:57 Lost synchronization
Block @ 0
I also built in a Ubuntu 22.04 Docker container and it works fine on the Fedora 36 System. I think it might have something to do with GCC 12 since Ubuntu 22.04 uses GCC 11.2.
from nrsc5.
There might be some compile optimizations that are not playing well if the new version of GCC. It's happened before.
You could attempt to invoke a older version of GCC and see if that works.
@argilo any ideas what might be going on here? I don't have a Fedora 36 system right now for testing.
from nrsc5.
Umm it's almost definitely GCC 12. I compiled it on Ubuntu 22.04 and Fedora 35 in docker and ran the binary on my F36 system. Ubuntu and F35 come with GCC 11.2
from nrsc5.
I was able to reproduce the problem on Ubuntu 22.04 by installing GCC 12 (sudo apt install gcc-12
) and asking cmake to use it with -DCMAKE_C_COMPILER=gcc-12
. The most likely explanation is that nrsc5 has a bug which happens to be exposed by this particular compiler version. The problem only occurs with -DUSE_SSE=1
, which suggests that the bug is in the SSE-optimized convolutional decoder.
from nrsc5.
GCC 12 produces the following warning, which could well point to the source of the problem:
In file included from /home/argilo/git/nrsc5/src/conv_sse.h:25,
from /home/argilo/git/nrsc5/src/conv_dec.c:37:
In function ‘_mm_load1_pd’,
inlined from ‘_mm_loaddup_pd’ at /usr/lib/gcc/x86_64-linux-gnu/12/include/pmmintrin.h:101:10,
inlined from ‘_sse_metrics_k7_n4’ at /home/argilo/git/nrsc5/src/conv_sse.h:254:7,
inlined from ‘gen_metrics_k7_n3’ at /home/argilo/git/nrsc5/src/conv_sse.h:322:2,
inlined from ‘_conv_decode.constprop’ at /home/argilo/git/nrsc5/src/conv_dec.c:415:4:
/usr/lib/gcc/x86_64-linux-gnu/12/include/emmintrin.h:138:10: warning: ‘_val’ may be used uninitialized [-Wmaybe-uninitialized]
138 | return _mm_set1_pd (*__P);
| ^~~~~~~~~~~~~~~~~~
/home/argilo/git/nrsc5/src/conv_sse.h: In function ‘_conv_decode.constprop’:
/home/argilo/git/nrsc5/src/conv_sse.h:320:23: note: ‘_val’ declared here
320 | const int16_t _val[4] = { val[0], val[1], val[2], 0 };
| ^~~~
from nrsc5.
The following patch appears to fix the issue:
diff --git a/src/conv_sse.h b/src/conv_sse.h
index 1165c65..98f9619 100644
--- a/src/conv_sse.h
+++ b/src/conv_sse.h
@@ -251,7 +251,7 @@ static inline void _sse_metrics_k7_n4(const int16_t *val, const int16_t *out,
m8, m9, m10, m11, m12, m13, m14, m15)
/* (BMU) Load and expand 8-bit input out to 16-bits */
- m7 = _mm_castpd_si128(_mm_loaddup_pd((double const *) val));
+ m7 = _mm_loadu_si128((__m128i *) val);
/* (BMU) Load and compute branch metrics */
m0 = _mm_load_si128((__m128i *) &out[0]);
@@ -317,7 +317,7 @@ static inline void _sse_metrics_k7_n4(const int16_t *val, const int16_t *out,
static void gen_metrics_k7_n3(const int8_t *val, const int16_t *out,
int16_t *sums, int16_t *paths, int norm)
{
- const int16_t _val[4] = { val[0], val[1], val[2], 0 };
+ const int16_t _val[8] = { val[0], val[1], val[2], 0, val[0], val[1], val[2], 0 };
_sse_metrics_k7_n4(_val, out, sums, paths, norm);
}
from nrsc5.
from nrsc5.
Related Issues (20)
- Error No rule to make target 'faad2-prefix/lib/libfaad_hdc.a', HOT 1
- Feature Request: Dump only DWRO named image files
- Windows build failure HOT 3
- Add support for primary service mode MP2 HOT 6
- After #311 I/Q files no longer playback correctly HOT 11
- On Windows, NRSC5 should quit after reading an I/Q file HOT 1
- Tolerate bit errors in the PCI value
- Dependencies built when not found are on old versions. HOT 5
- With weak signals, The logged primary service mode may be incorrect. HOT 1
- WAWZ Undocumented ServiceDataType and MIMEType HOT 13
- Coexistence between nrsc5 and other rtl-sdr tuning apps HOT 34
- [libnrsc5] Segment Fault HOT 4
- Supplying input IQ at lower sample rate HOT 3
- fftwf plans can be destroyed HOT 1
- Underruns & cracking noises HOT 13
- Error building on Windows HOT 3
- Trouble with nrsc5 - Linux HOT 3
- Sporadic audio output issues ... HOT 22
- Error compiling on WINDOWS HOT 6
- Analog and HD signal strength HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nrsc5.