{"id":96001,"date":"2020-10-06T13:42:04","date_gmt":"2020-10-06T11:42:04","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/sdr-dvb-t2-receiver-na-c"},"modified":"2020-10-06T13:42:04","modified_gmt":"2020-10-06T11:42:04","slug":"sdr-dvb-t2-receiver-na-c","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/sdr-dvb-t2-receiver-na-c","title":{"rendered":"Odbiornik SDR DVB-T2 na C++","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Radio definiowane programowo (Software Defined Radio) to metoda zast\u0119powania prac zwi\u0105zanych z metalem (co zasadniczo jest korzystne dla zdrowia) b\u00f3lami g\u0142owy zwi\u0105zanymi z programowaniem. SDR zapowiada si\u0119 na du\u017c\u0105 przysz\u0142o\u015b\u0107, a jego g\u0142\u00f3wn\u0105 zalet\u0105 jest zniesienie ogranicze\u0144 w implementacji protoko\u0142\u00f3w radiowych. Przyk\u0142adem jest metoda modulacji OFDM (ortogonalna modulacja cz\u0119stotliwo\u015bci), kt\u00f3ra sta\u0142a si\u0119 mo\u017cliwa tylko dzi\u0119ki metodzie SDR. Ale SDR oferuje r\u00f3wnie\u017c inn\u0105, czysto in\u017cynieryjn\u0105 mo\u017cliwo\u015b\u0107 \u2013 kontrol\u0119 i wizualizacj\u0119 sygna\u0142u w dowolnym punkcie z minimalnym wysi\u0142kiem.<\/p>\n<p><\/p>\n<p>Jednym z interesuj\u0105cych standard\u00f3w komunikacji jest naziemna telewizja cyfrowa DVB-T2.<br \/>\nPo co? Oczywi\u015bcie, mo\u017cna po prostu w\u0142\u0105czy\u0107 telewizor bez wstawania, ale nie ma tam absolutnie nic do ogl\u0105dania, i to ju\u017c nie jest moje zdanie, a fakt medyczny.<\/p>\n<p><\/p>\n<p>M\u00f3wi\u0105c serio, DVB-T2 zosta\u0142 zaprojektowany z bardzo szerokimi mo\u017cliwo\u015bciami, w tym:<\/p>\n<p><\/p>\n<ul>\n<li>zastosowanie wewn\u0119trzne<\/li>\n<li>modulacja od QPSK do 256QAM<\/li>\n<li>szeroko\u015b\u0107 pasma od 1,7 MHz do 8 MHz <noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p>Posiadam do\u015bwiadczenie w odbiorze telewizji cyfrowej w zasadzie SDR. Standard DVB-T mo\u017cna znale\u017a\u0107 w znanym projekcie GNURadio. Istnieje blok gr-dvbs2rx dla standardu DVB-T2 (wszystko dla tego samego GNURadio), ale wymagaj\u0105cy wcze\u015bniejszej synchronizacji sygna\u0142u, co inspiruje (osobne podzi\u0119kowania dla Rona Economosa).<\/p>\n<p><\/p>\n<p>Co mamy.<\/p>\n<p><\/p>\n<p>Istnieje standard ETSI EN 302 755, szczeg\u00f3\u0142owo opisuj\u0105cy transmisj\u0119, ale nie odbi\u00f3r.<\/p>\n<p><\/p>\n<p>Sygna\u0142 w eterze z cz\u0119stotliwo\u015bci\u0105 pr\u00f3bkowania 9,14285714285714285714 MHz, modulowany COFDM z 32768 no\u015bnymi w pasmie 8 MHz.<\/p>\n<p><\/p>\n<p>Zaleca si\u0119 odbieranie takich sygna\u0142\u00f3w z podw\u00f3jn\u0105 cz\u0119stotliwo\u015bci\u0105 pr\u00f3bkowania (aby nic nie straci\u0107) i na po\u015bredniej cz\u0119stotliwo\u015bci wi\u0119kszej ni\u017c szeroko\u015b\u0107 pasma (odbi\u00f3r superheterodynowy), aby pozby\u0107 si\u0119 przesuni\u0119cia sta\u0142opr\u0105dowego (DC) i \u201eprzecieku\u201d lokalnego generatora (LO) na wej\u015bciu odbiornika. Urz\u0105dzenia spe\u0142niaj\u0105ce te warunki s\u0105 zbyt drogie na zwyk\u0142\u0105 ciekawo\u015b\u0107.<\/p>\n<p><\/p>\n<p>SdrPlay z 10 Msps 10-bit lub AirSpy o podobnych parametrach s\u0105 znacznie ta\u0144sze. Tutaj nie m\u00f3wimy o podw\u00f3jnej cz\u0119stotliwo\u015bci pr\u00f3bkowania, a odbi\u00f3r mo\u017cna prowadzi\u0107 tylko z bezpo\u015bredni\u0105 konwersj\u0105 (Zero IF). Dlatego (ze wzgl\u0119d\u00f3w finansowych) przechodzimy na stron\u0119 zwolennik\u00f3w \u201eczystego\u201d SDR z minimaln\u0105 konwersj\u0105 sprz\u0119tow\u0105.<\/p>\n<p><\/p>\n<p>Nale\u017ca\u0142o rozwi\u0105za\u0107 dwie kwestie:<\/p>\n<p><\/p>\n<ol>\n<li>Synchronizacja. Poznanie dok\u0142adnego odchylenia cz\u0119stotliwo\u015bci radiowej z precyzj\u0105 do fazy oraz odchylenie cz\u0119stotliwo\u015bci pr\u00f3bkowania.<\/li>\n<li>Przepisanie standardu DVB-T2 w odwrotnej kolejno\u015bci.<\/li>\n<\/ol>\n<p><\/p>\n<p>Drugie zadanie wymaga znacznie wi\u0119cej kodu, ale jest wykonalne dzi\u0119ki cierpliwo\u015bci i \u0142atwo weryfikowalne na podstawie sygna\u0142\u00f3w testowych. <\/p>\n<p><\/p>\n<p>Sygna\u0142y testowe s\u0105 dost\u0119pne na serwerze BBC ftp:\/\/ftp.kw.bbc.co.uk\/t2refs\/ z szczeg\u00f3\u0142owymi instrukcjami.<\/p>\n<p><\/p>\n<p>Rozwi\u0105zanie pierwszego zadania w du\u017cej mierze zale\u017cy od specyfikacji urz\u0105dzenia SDR i mo\u017cliwo\u015bci jego sterowania. U\u017cycie zalecanych funkcji zarz\u0105dzania cz\u0119stotliwo\u015bci\u0105, jak si\u0119 m\u00f3wi, nie przynios\u0142o sukcesu, ale dostarczy\u0142o wiele do\u015bwiadcze\u0144 w czytaniu dokumentacji technicznej, programowaniu, ogl\u0105daniu seriali, rozwi\u0105zywaniu filozoficznych problem\u00f3w... og\u00f3lnie m\u00f3wi\u0105c, nie uda\u0142o si\u0119 porzuci\u0107 projektu. <\/p>\n<p><\/p>\n<p>Wiara w \u201eczyste SDR\u201d tylko si\u0119 wzmocni\u0142a. <\/p>\n<p><\/p>\n<p>Przyjmujemy sygna\u0142 takim, jaki jest, interpolujemy go praktycznie do analogowego i wyci\u0105gamy ju\u017c dyskretny, ale podobny do prawdziwego.<\/p>\n<p><\/p>\n<p>Schemat blokowy synchronizacji:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Odbiornik SDR DVB-T2 na C++\" src=\"\/wp-content\/uploads\/2020\/10\/b6362e201fb355fb63760fa901ecf73e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tutaj wszystko jest zgodne z podr\u0119cznikiem. Potem b\u0119dzie troch\u0119 trudniej. Musimy obliczy\u0107 odchylenia. Istnieje wiele literatury i artyku\u0142\u00f3w badawczych por\u00f3wnuj\u0105cych zalety i wady r\u00f3\u017cnych metod. Z klasyki to \u201eMichael Speth, Stefan Fechtel, Gunnar Fock, Heinrich Meyr, Optimum Receiver Design for OFDM-Based Broadband Transmission \u2013 Part I i II\u201d. Tylko nie spotka\u0142em \u017cadnego in\u017cyniera, kt\u00f3ry potrafi\u0142by i chcia\u0142by to oblicza\u0107, dlatego zastosowano podej\u015bcie in\u017cynieryjne. T\u0105 sam\u0105 metod\u0105 synchronizacji wprowadzono zak\u0142\u00f3cenia do sygna\u0142u testowego. Por\u00f3wnuj\u0105c r\u00f3\u017cne metryki z znanymi odchyleniami (sam je wprowadza\u0142em) wybrano najlepsze pod wzgl\u0119dem wydajno\u015bci i prostoty realizacji. Odchylenie cz\u0119stotliwo\u015bci odbioru oblicza si\u0119 por\u00f3wnuj\u0105c zabezpieczony interwa\u0142 z jego powtarzaj\u0105c\u0105 si\u0119 cz\u0119\u015bci\u0105. Faz\u0119 cz\u0119stotliwo\u015bci odbioru oraz cz\u0119stotliwo\u015b\u0107 pr\u00f3bkowania ocenia si\u0119 na podstawie odchylenia faz sygna\u0142\u00f3w pilotowych, kt\u00f3re wykorzystuje si\u0119 tak\u017ce w prostym, liniowym equalizerze sygna\u0142u OFDM.<\/p>\n<p><\/p>\n<p>Charakterystyka equalizera:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Odbiornik SDR DVB-T2 na C++\" src=\"\/wp-content\/uploads\/2020\/10\/d4a1bc8fc4d5e27cb7d376a810ea4485.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>I wszystko to dobrze dzia\u0142a, je\u015bli wiadomo, kiedy zaczyna si\u0119 ramka DVB-T2. W tym celu w sygnale przesy\u0142any jest symbol preambu\u0142y P1. Spos\u00f3b detekcji i dekodowania symbolu P1 jest opisany w Specyfikacji Technicznej ETSI TS 102 831 (tam r\u00f3wnie\u017c wiele przydatnych wskaz\u00f3wek dotycz\u0105cych odbioru).<\/p>\n<p><\/p>\n<p>Autokorelacja sygna\u0142u P1 (najwy\u017cszy punkt to pocz\u0105tek ramki):<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Odbiornik SDR DVB-T2 na C++\" src=\"\/wp-content\/uploads\/2020\/10\/10e052a169a20b16d28d01b1462f4ff3.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pierwszy obrazek (zaledwie sze\u015b\u0107 miesi\u0119cy do ruchomego obrazu...):<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Odbiornik SDR DVB-T2 na C++\" src=\"\/wp-content\/uploads\/2020\/10\/8c434965be9c2450afd3c82b3ebbb4f4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>I tu dowiemy si\u0119, czym jest nier\u00f3wnowaga IQ, przesuni\u0119cie DC i wycieki LO. Zwykle kompensacja tych specyficznych dla bezpo\u015bredniej konwersji zniekszta\u0142ce\u0144 jest realizowana w sterowniku urz\u0105dzenia SDR. Dlatego zaj\u0119\u0142o to du\u017co czasu, aby zrozumie\u0107: wybijanie gwiazdek z zgranej konstelacji QAM64 to dzia\u0142anie funkcji kompensacji. Musia\u0142em wszystko wy\u0142\u0105czy\u0107 i napisa\u0107 w\u0142asny projekt.<\/p>\n<p><\/p>\n<p>I wtedy obrazek zacz\u0105\u0142 si\u0119 porusza\u0107:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Odbiornik SDR DVB-T2 na C++\" src=\"\/wp-content\/uploads\/2020\/10\/0ddb224d2e0a3890ac9d335c96ba24f0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Modulacja QAM64 ze specyficznym obrotem konstelacji w standardzie DVB-T2:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Odbiornik SDR DVB-T2 na C++\" src=\"\/wp-content\/uploads\/2020\/10\/b06328fa648125249ef9b0b74522e831.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kr\u00f3tko m\u00f3wi\u0105c, to wynik wprowadzenia mi\u0119sa z powrotem przez maszynk\u0119 do mielenia. Standard przewiduje cztery rodzaje mieszania:<\/p>\n<p><\/p>\n<ul>\n<li>bit interleaving (mieszanie bit\u00f3w z skr\u0119caniem kolumn)<\/li>\n<li>cell interleaving (mieszanie kom\u00f3rek w bloku kodowania)<\/li>\n<li>time interleaving (w grupie blok\u00f3w kodowania)<\/li>\n<li>frequency interleaving (mieszanie cz\u0119stotliwo\u015bci w symbolu OFDM)<\/li>\n<\/ul>\n<p><\/p>\n<p>Ostatecznie na wej\u015bciu mamy taki sygna\u0142:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Odbiornik SDR DVB-T2 na C++\" src=\"\/wp-content\/uploads\/2020\/10\/cb60687702c5f225840df30124a9ef68.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>To wszystko jest walk\u0105 o odporno\u015b\u0107 zak\u0142\u00f3ce\u0144 kodowanego sygna\u0142u.<\/p>\n<p><\/p>\n<h4 id=\"itog\">Podsumowanie<\/h4>\n<p><\/p>\n<p>Teraz mo\u017cemy zobaczy\u0107 nie tylko sam sygna\u0142 i jego kszta\u0142t, ale tak\u017ce informacje pomocnicze.<br \/>\nW eterze s\u0105 dwa multipleksy. W ka\u017cdym po dwa fizyczne kana\u0142y (PLP). <\/p>\n<p><\/p>\n<p>Jedna dziwno\u015b\u0107 zauwa\u017cona w pierwszym multipleksie \u2014 pierwszy PLP ma etykiet\u0119 \"multiple\", co jest logiczne, poniewa\u017c nie jest jedyny w multipleksie, natomiast drugi PLP ma etykiet\u0119 \"single\" i to rodzi pytania.<br \/>\nJeszcze ciekawsza jest druga dziwno\u015b\u0107 w drugim multipleksie \u2014 wszystkie programy znajduj\u0105 si\u0119 w pierwszym PLP, a w drugim PLP na niskiej pr\u0119dko\u015bci obecny jest sygna\u0142 o nieznanym charakterze. Przynajmniej odtwarzacz VLC, rozumiej\u0105cy oko\u0142o pi\u0119\u0107dziesi\u0119ciu format\u00f3w wideo i tyle samo audio, go nie rozpoznaje. <\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Oleg-Malyutin\/sdr_receiver_dvb_t2\">Sam projekt mo\u017cna znale\u017a\u0107 tutaj<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Projekt zosta\u0142 stworzony w celu okre\u015blenia samej mo\u017cliwo\u015bci dekodowania DVB-T2 za pomoc\u0105 SdrPlay (a teraz ju\u017c i AirSpy), wi\u0119c to nawet nie jest wersja alfa.<\/p>\n<p><\/p>\n<p>P.S. Podczas trudnego pisania artyku\u0142u uda\u0142o si\u0119 pod\u0142\u0105czy\u0107 do projektu PlutoSDR.<\/p>\n<p><\/p>\n<p>Niekt\u00f3rzy od razu powiedz\u0105, \u017ce tam jest tylko 6Msps dla sygna\u0142u IQ na wyj\u015bciu USB2.0, a potrzebne jest co najmniej 9,2Msps, ale to ju\u017c oddzielny temat.<\/p>\n<p>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/522150\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>Software Defined Radio (\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e-\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u0430\u044f \u0440\u0430\u0434\u0438\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0430) \u2014 \u044d\u0442\u043e \u043c\u0435\u0442\u043e\u0434 \u0437\u0430\u043c\u0435\u043d\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e \u043c\u0435\u0442\u0430\u043b\u043b\u0443 (\u0447\u0442\u043e, \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0437\u0434\u043e\u0440\u043e\u0432\u044c\u044f) \u043d\u0430 \u0433\u043e\u043b\u043e\u0432\u043d\u0443\u044e \u0431\u043e\u043b\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. SDR \u043f\u0440\u043e\u0440\u043e\u0447\u0430\u0442 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0434\u043e\u0441\u0442\u043e\u0438\u043d\u0441\u0442\u0432\u043e\u043c \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0441\u043d\u044f\u0442\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0430\u0434\u0438\u043e\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432. \u041f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434 \u043c\u043e\u0434\u0443\u043b\u044f\u0446\u0438\u0438 OFDM (Orthogonal frequency-division multiplexing), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u0430\u043b\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0442\u043e\u0434\u043e\u043c SDR. \u041d\u043e \u0435\u0441\u0442\u044c \u0432 SDR \u0438 \u0435\u0449\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":96002,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-96001","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"Software Defined Radio (\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e-\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u0430\u044f \u0440\u0430\u0434\u0438\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0430) \u2014 \u044d\u0442\u043e \u043c\u0435\u0442\u043e\u0434 \u0437\u0430\u043c\u0435\u043d\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e \u043c\u0435\u0442\u0430\u043b\u043b\u0443 (\u0447\u0442\u043e, \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0437\u0434\u043e\u0440\u043e\u0432\u044c\u044f) \u043d\u0430 \u0433\u043e\u043b\u043e\u0432\u043d\u0443\u044e \u0431\u043e\u043b\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/sdr-dvb-t2-receiver-na-c\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47SDR DVB-T2 receiver \u043d\u0430 C++ | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"Software Defined Radio (\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e-\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u0430\u044f \u0440\u0430\u0434\u0438\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0430) \u2014 \u044d\u0442\u043e \u043c\u0435\u0442\u043e\u0434 \u0437\u0430\u043c\u0435\u043d\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e \u043c\u0435\u0442\u0430\u043b\u043b\u0443 (\u0447\u0442\u043e, \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0437\u0434\u043e\u0440\u043e\u0432\u044c\u044f) \u043d\u0430 \u0433\u043e\u043b\u043e\u0432\u043d\u0443\u044e \u0431\u043e\u043b\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/sdr-dvb-t2-receiver-na-c\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-10-06T11:42:04+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-10-06T11:42:04+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Odbiornik SDR DVB-T2 w C++ | ProHoster","description":"Software Defined Radio (programowo definiowane radio) \u2014 to metoda zast\u0105pienia pracy w metalu (co zasadniczo jest korzystne dla zdrowia) b\u00f3lem g\u0142owy programowania.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/sdr-dvb-t2-receiver-na-c","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47SDR DVB-T2 receiver \u043d\u0430 C++ | ProHoster","og:description":"Software Defined Radio (\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e-\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u0430\u044f \u0440\u0430\u0434\u0438\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0430) \u2014 \u044d\u0442\u043e \u043c\u0435\u0442\u043e\u0434 \u0437\u0430\u043c\u0435\u043d\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e \u043c\u0435\u0442\u0430\u043b\u043b\u0443 (\u0447\u0442\u043e, \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0437\u0434\u043e\u0440\u043e\u0432\u044c\u044f) \u043d\u0430 \u0433\u043e\u043b\u043e\u0432\u043d\u0443\u044e \u0431\u043e\u043b\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/sdr-dvb-t2-receiver-na-c","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-10-06T11:42:04+00:00","article:modified_time":"2020-10-06T11:42:04+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"96001","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 10:53:26","updated":"2022-09-28 21:02:51","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/96001","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=96001"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/96001\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/96002"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=96001"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=96001"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=96001"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}