diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/Makefile.include.am xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/Makefile.include.am --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/Makefile.include.am 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/Makefile.include.am 2014-07-18 06:05:30.000000000 +0000 @@ -35,8 +35,9 @@ else mkdir -m 755 -p $(DESTDIR)@LIBDIR@/$(ADDONNAME) mkdir -m 755 -p $(DESTDIR)@DATADIR@/$(ADDONNAME) - cp -f @BINPREFIX@$(ADDONBINNAME)@BIN_EXT@ $(DESTDIR)@LIBDIR@/$(ADDONNAME) ; chmod 655 $(DESTDIR)@LIBDIR@/$(ADDONNAME)/@BINPREFIX@$(ADDONBINNAME)@BIN_EXT@ + cp -f @BINPREFIX@$(ADDONBINNAME)@BIN_EXT@ $(DESTDIR)@LIBDIR@/$(ADDONNAME) ; chmod 655 $(DESTDIR)@LIBDIR@/$(ADDONNAME)/@BINPREFIX@$(ADDONBINNAME)@BIN_EXT@; find $(DESTDIR)@DATADIR@/$(ADDONNAME) -type f -exec chmod 0644 {} \; cp -r -f @abs_top_srcdir@/addons/$(ADDONNAME)/addon/* $(DESTDIR)@DATADIR@/$(ADDONNAME) ; chmod -R o+rx $(DESTDIR)@DATADIR@/$(ADDONNAME) + rm -f $(DESTDIR)@DATADIR@/$(ADDONNAME)/addon.xml.in endif all: @BUILD_TYPE@ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/addon/addon.xml.in xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/addon/addon.xml.in --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/addon/addon.xml.in 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/addon/addon.xml.in 2014-07-18 06:05:30.000000000 +0000 @@ -1,12 +1,12 @@ - + Frontend του XBMC για το ARGUS TV PVR http://www.argus-tv.com/ XBMC frontend for the ARGUS TV PVR http://www.argus-tv.com// XBMC frontend for the ARGUS TV PVR http://www.argus-tv.com// + XBMC frontend for the ARGUS TV PVR http://www.argus-tv.com/ Frontend de XBMC para ARGUS TV PVR http://www.argus-tv.com// Frontend de XBMC para ARGUS TV PVR http://www.argus-tv.com// XBMC esi ARGUS TV PVRile http://www.argus-tv.com// - XBMC Interface logicielle pour l'enregistreur vidéo ARGUS TV http://www.argus-tv.com// + Interface logicielle pour l'enregistreur vidéo ARGUS TV http://www.argus-tv.com// Frontal XBMC pour le numériscope ARGUS TV http://www.argus-tv.com/ Interface de XBMC para o PRV de ARGUS TV http://www.argus-tv.com// ממשק קדמי של XBMC ל ARGUS TV PVR http://www.argus-tv.com// XBMC pozadinski softver za ARGUS TV PVR http://www.argus-tv.com// XBMC ARGUS TV előtér-kiszolgáló http://www.argus-tv.com// + XBMC արտաքին տեսքը ARGUS TV PVR համար http://www.argus-tv.com// Frontend XBMC untuk ARGUS TV PVR http://www.argus-tv.com// + XBMC framendi fyrir ARGUS TV upptökutæki (PVR) http://www.argus-tv.com// Frontend XBMC di ARGUS TV PVR http://www.argus-tv.com// ARGUS TV PVR 用 XBMC フロントエンド http://www.argus-tv.com// ARGUS TV PVR을 위한 XBMC 프론트엔드 http://www.argus-tv.com// XBMC sąsaja su ARGUS TV PVR http://www.argus-tv.com// XBMC galasistēma ARGUS TV PVR http://www.argus-tv.com// XBMC интерфејс за ARGUS TV PVR http://www.argus-tv.com// + XBMC फ्रन्टऐंड साठी ARGUS TV PVR http://www.argus-tv.com// Bahagian hadapan XBMC untuk PVR ARGUS TV http://www.argus-tv.com// XBMC frontend voor het ARGUS-TV PVR http://www.argus-tv.com// - XBMC sitt frontend for ARGUS TV PVR http://www.argus-tv.com// + XBMC-klientdel til ARGUS TV PVR http://www.argus-tv.com/ Klient XBMC dla ARGUS TV PVR http://www.argus-tv.com// Frontend XBMC para ARGUS TV PVR http://www.argus-tv.com// Frontend do XBMC para o PVR ARGUS TV http://www.argus-tv.com// Frontend XBMC pentru PVR-ul ARGUS TV http://www.argus-tv.com/ Интерфейс XBMC для ARGUS TV PVR http://www.argus-tv.com// + TV PVR ආරක්ෂාව සඳහා XBMC ඉදිරි කොන http://www.argus-tv.com// XBMC rozhranie pre ARGUS TV PVR http://www.argus-tv.com// XBMC-jev vmesnik za ARGUS TV PVR http://www.argus-tv.com// XBMC frontend për ARGUS TV PVR http://www.argus-tv.com & XBMC frontend för ARGUS TV PVR http://www.argus-tv.com/ ARGUS TV PVR http://www.argus-tv.com// உடைய XBMC பயனர் இணைப்பு - ARGUS TV PVR http://www.argus-tv.com// için XBMC başlangıcı + ARGUS TV PVR için XBMC ön ucu http://www.argus-tv.com// Накладка XBMC для ARGUS TV PVR http://www.argus-tv.com// Giao tiếp XBMC cho ARGUS TV PVR http://www.argus-tv.com/ XBMC 的 ARGUS TV PVR 前端 http://www.argus-tv.com// @@ -73,16 +78,19 @@ Frontend για το ARGUS TV PVR. Υποστηρίζει ροές Live TV & Εγγραφές, ακρόαση Ραδιοφώνου, EPG και προγραμματισμό. ARGUS TV PVR frontend. Supports streaming of Live TV & Recordings, listening to Radio channels, EPG and schedules. ARGUS TV PVR frontend. Supports streaming of Live TV & Recordings, listening to Radio channels, EPG and schedules. + ARGUS TV PVR frontend. Supports streaming of Live TV & Recordings, listening to Radio channels, EPG and schedules. Frontend de ARGUS TV PVR. Soporta transmisiones de TV en Vivo y Grabaciones, escuchar canales de Radio, Guía Electrónica de Programas (EPG) y temporizadores. - Frontend de ARGUS TV PVR. Soporta transmisiones de TV en Vivo y Grabaciones, escuchar canales de Radio, Guía Electrónica de Programas (EPG) y temporizadores. + Frontend de ARGUS TV PVR. Soporta transmisiones de TV en Vivo y Grabaciones, escuchar canales de Radio, Guía Electrónica de Programas (GEP) y temporizadores. ARGUS TV PVR esi. Toetab telekanalite striimimist ja salvestamist, raadio kuulamist ja elektroonilist saatekava. Interface logicielle pour l'enregistreur vidéo ARGUS TV. Supporte la lecture en continu de télévision et son enregistrement, l'écoute de radios, les guides de programmes et les minuteries. - Frontal de numériscope pour ARGUS TV, prenant en charge les télés en direct & les enregistrements, l'écoute de chaînes radio, le GÉP et les horaires. - Interface do PVR de ARGUS TV. Soporta transmisión de TV ao vivo e Gravacións, escoita de canles de radio, Guía e programacións. + Frontal de numériscope pour ARGUS TV, prenant en charge la lecture en transit des télés en direct & les enregistrements, l'écoute de chaînes radio, le GÉP et les horaires. + Interface do PVR de ARGUS TV. Soporta transmisión de TV en directo e Gravacións, escoita de canles de radio, Guía e programacións. ממשק קידמי של ARGOS TV PVR. תומך בהצגת שידורי טלויזיה חיים והקלטות רשימות של תחנות רדיו לוחות שידורים ותזמוני הקלטות. ARGUS TV PVR pozadinski softver. Podržava stremanje televizije i snimanje, slušanje radio programa, EPG i zakazano snimanje. ARGUS TV PVR előtér-kiszolgáló. Élő adások, felvételek és rádió csatornák sugárzásának támogatása EPG-vel és időzítéssel. + ARGUS TV PVR արտաքին տեսքը: TV հիմա, Ձայնագրություններ, Ռադիո ալիքների ունկնդրում, EPG և ժամանակացույցի հնարավորություն: Frontend PVR ARGUS TV. Mendukung pengaliran TV dan Rekaman langsung, mendengarkan kanal radio, EPG dan jadwal. + ARGUS TV framendi; styður streymingu á beinum sjónvarpi og upptökum, hlustun á útvarpsstöðvar sjónvarpsvísum (EGP) og dagskráryfirlitum. Frontend ARGUS TV PVR. Supporta lo streaming e la registrazione di Live TV, l'ascolto dei canali radio, la guida ai programmi e gli orari. ARGUS TV PVR フロントエンドです。テレビ放送のストリーミング、録画、ラジオチャンネルの視聴、EPG、録画予約をサポートしています。 ARGUS TV PVR 프론트엔드. 라이브 TV 스트리밍과 녹화, 라디오 청취, EPG와 예약 지원. @@ -91,17 +99,19 @@ ARGUS TV PVR интерфејс. Подржува стриминг на Live TV & Снимки, слушање на радио канали, EPG и планирања. Bahagian hadapan PVR ARGUS TV; menyokong penstirman TV Langsung & Rakaman, mendengar saluran Radio, EPG dan jadual. ARGUS TV PVR frontend. Ondersteunt het bekijken van Live TV en opnames, het beluisteren van radio zenders, het tonen van de EPG en het inplannen/beheren van nieuwe opnames (Timers). - ARGUS TV PVR frontend. Støtter visning av direkte TV og opptak, lytting til radiokanaler, EPG og tidsopptak. - Klient ARGUS TV PVR. Wspiera strumieniowanie kanałów telewizyjnych, nagrywanie, planowanie nagrań oraz funkcje przewodnika TV. + ARGUS TV PVR klientdel Støtter visning av Live-TV, opptak, lytting til radiokanaler, EPG og tidsopptak. + Klient ARGUS TV PVR wspiera strumieniowanie kanałów radiowych i telewizyjnych, nagrywanie, planowanie nagrań oraz funkcje przewodnika TV. Frontend ARGUS TV PVR. Suporta transmissão de TV em directo e Gravações, audição de estações de Rádio, EPG e agendamentos. Frontend do PVR ARGUS TV. Suporta streaming de TV Ao Vivo & Gravações, canais de Rádio, EPG e agendamento. Frontend PVR ARGUS TV. Suportă difuzare în flux pentru televiziune în direct și pentru înregistrări, ascultarea canalelor radio, EPG și planificări. Интерфейс для ARGUS TV PVR. Поддерживает просмотр потокового ТВ и видеозаписей, прослушивание радиоканалов и работу с электронным телегидом и расписаниями. + ආරක්ෂක TV PVR ඉදිරිකොන. සජීව රූපවාහිනී සහ පටිගත කිරීම්, ගුවන් විදුලි නාලිකාවට සවන් දීම, EPG සහ උපලේඛණ සඳහා ප්‍රවාහන උදව් ලබා දීම. ARGUS TV PVR rozhranie. Podporuje streamovanie živého TV vysielania a nahrávok, počúvanie rozhlasových kanálov, EPG a plánovače. Vmesnik za ARGUS TV PVR; podpira pretakanje televizije v živo & posnetkov, poslušanje radia, EPG in časovnike. ARGUS TV PVR frontend. Përkrahën transmetimin e Live TV's & Rregjistrime, dëgjimin të radio-kanaleve, EPG'së dhe orarin. ARGUS TV PVR frontend. Stödjer strömmning av direktsänd TV & inspelningar, lyssna på radiokanaler, EPG och schemaläggning. ARGUS TV PVR முன்நிலை. லைவ் டிவி & பதிவுகளின் ஸ்ட்ரீமிங் செய்யவும், ரேடியோ சேனல்கள் கேட்கவும் மற்றும் EPG, துணைபுரிகிறது. + ARGUS TV PVR ön ucu. Canlı TV akışı ve kayıt yapabilme, radyo kanalları dinleme, EPG ve zamanlayıcıları destekler. Накладка для ARGUS TV. Підтримує потокове Live TV і запис, прослуховування радіо каналів, телегід та планування. Giao tiếp PVR cho ARGUS TV. Hỗ trợ trực tuyến của Live TV và Recordings, nghe Đài phát thanh (Radio), EPG và lịch trình (Schedules). ARGUS TV PVR 前端。支持直播电视和录像流媒体、收听电台、电子节目单及计划任务功能。 @@ -117,6 +127,7 @@ Ασταθές πρόγραμμα! Οι δημιουργοί δεν είναι σε καμία περίπτωση υπεύθυνοι για αποτυχημένες εγγραφές, λανθασμένους χρονοδιακόπτες, χαμένες ώρες, ή κάθε είδους ανεπιθύμητα αποτελέσματα.. This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects.. This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects.. + This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects.. ¡Este software es aún inestable! Los autores no son responsables en forma alguna por grabaciones fallidas, temporizaciones incorrectas, tiempo perdido o ningún otro efecto no deseado. ¡Este software es inestable! Los autores no se responsabilizan por grabaciones fallidas, temporizadores incorrectos, horas perdidas, o cualquier otro efecto no deseado.. ¡Esto es software inestable! Los autores no son de ninguna manera responsables por grabaciones fallidas, temporizadores incorrectos, horas perdidas o cualquier otro efecto no deseado... @@ -124,27 +135,29 @@ Tämä on epävakaa ohjelma! Ohjelman kirjoittavat eivät vastaa millään tavalla epäonnistuneista nauhoituksista, ajastimen väärästä toiminnasta, hukatusta ajasta tai muista ei-halutuista tapahtumista. Logiciel en cours d'élaboration ! Les auteurs ne sont en aucun cas responsables de l'échec des enregistrements, minuteries défectueuses, temps perdu ou autres effets indésirables.. Ce logiciel est instable! Les auteurs ne sont aucunement responsables des enregistrements défaillants, des minuteries erronées, des heures perdues ou tout autre effet indésirable. - Este é software non estable, os autores non se fan responsábeis dos erros na gravacións, temporizadores incorrectos, e outros efectos non desexados. + Software non estable, os autores non se fan responsábeis dos erros nas gravacións, temporizadores incorrectos, e outros efectos non desexados. זוהי תוכנה לא יציבה! היוצרים אינם אחראים לכשלון בהקלטה, תזמונים לא נכונים, שעות מבוזבזות או כל השפעות בלתי רצויות אחרות. Ovo je nestabilan softver! Autori nisu ni na koji način odgovorani za neuspjelo snimanje, netočna zakazana snimanja, izgubjene sate, ili bilo koje druge neželjene učinke .. Ez nem stabil szoftver! A készítők nem vállalnak felelősséget, a hibás felvételért, rossz időzítésért, elvesztegetett időért... + Սա անկայուն ծրագրային ապահովում է: Հեղինակները պատասխանատու չեն վատ ձայնագրումների, սխալ ժամանակացույցերի, կորած ժամանակի կամ այլ ոչ ցանկալի երևույթների համար: Ini merupakan software yang tidak stabil! Penulis tidak bertanggung jawab untuk rekaman gagal, timer salah, waktu terbuang, atau efek tak diinginkan lainnya... - Þetta er óstöðugur hugbúnaður! Höfundarnir eru á engann hátt ábyrgir fyrir misheppnuðum upptökum, röngum upptökutímum, klukkustundum sem að fóru í súginn eða nokkrum öðrum óæskilegum áhrifum. + Þetta er óstöðugur hugbúnaður! Höfundarnir eru á engan hátt ábyrgir fyrir misheppnuðum upptökum, röngum upptökutímum, klukkustundum sem að fóru í súginn eða nokkrum öðrum óæskilegum áhrifum. Questo software è instabile! Gli autori non sono in alcun modo responsabili per registrazioni fallite, timers incorretti, ore perse, o qualsiasi altro effetto indesiderato. これは不安定なソフトウェアです!本プログラムの作者は、録画の失敗、正確に作動しなかったタイマー、無駄にした時間、その他あらゆる好ましくない結果について責任を負わないものとします。 ეს არის არასტაბილური პროგრამული უზრუნველყოფა! ავტორები არ არიან პასუხისმგებელი შეცდომებზე, არასწორ EPG-ზე, დაკარგულ დროზე ან სხვა ხარვეზებზე 이 소프트웨어는 불안정합니다! 제작자는 녹화 실패, 부정확한 타이머, 시간 낭비 및 기타 예상하지 못한 결과에 대해 책임지지 않습니다.. Tai yra nestabili programinė įranga! Autorius jokiu būdu neatsakingas už nepavykusius įrašus, neteisingus laikmačius, iššvaistytas valandas, ar nutikus kitiems nepageidaujamiems poveikiams ...[COLOR=red](xbmc.lt siūlo/rekomenduoja testuojant šį priedą persijungti į Anglų [orinali] kalbą)[/COLOR] - Šī ir nestabila programmatūra! Autori nav nekādā vaidā atbildīgi par nesanākušiem ierakstiem, nepareiziem taimeriem, iztērētām stundām vai jebkādiem citiem nevēlamiem efektiem.. + Šī ir nestabila programmatūra! Autori nav atbildīgi par nesanākušiem ierakstiem, nepareiziem taimeriem, iztērētām stundām vai jebkādiem citiem nevēlamiem efektiem.. Ова е нестабилен софтвер! Авторите на ниту еден начин не одговараат за неуспешни снимки, неточни тајмери, потрошени часови, или било кои други несакани ефекти. Ini merupakan perisian tidak stabil! Pengarang tidak bertanggungjawab atas kegagalan rakaman, pemasa tidak betul, masa yang dibazirkan, atau apa jua kesan yang tidak dikehendaki.. Deze software is niet 100% stabiel! De auteurs zijn op geen enkele wijze aansprakelijk voor mislukte opnames, verspilde tijd, of enig ander ongewild neveneffect.. - Dette er ustabil programvare! Skaperen har ikke på noen måte ansvar for feilede opptak, feile timere, bortkastede timer, eller andre uønskede effekter.. - Oprogramowanie nadal jest w fazie rozwoju i jest niestabilne! Autorzy w żaden sposób nie są odpowiedzialni za błędne nagrania, błędy planowaniu nagrań, zmarnowany czas ani jakiekolwiek inne niepożądane efekty. + Dette er ustabil programvare! Skaperne har på ingen måte ansvar for ødelagte opptak, feilstilte tidsur, bortkastede timer, eller andre uønskede effekter... + Oprogramowanie nadal jest w fazie rozwoju i jest niestabilne! Autorzy w żaden sposób nie są odpowiedzialni za nieudane nagrania, błędy w planie nagrań, zmarnowany czas ani jakiekolwiek inne niepożądane efekty. Este software é instável! Os autores não são de forma alguma responsáveis por gravações falhadas, temporizadores incorrectos, horas desperdiçadas, ou qualquer outro tipo de efeitos indesejáveis.. Este é um software instável! Os autores não são responsáveis por falhas nas gravações, agendamentos incorretos, horas desperdiçadas, ou quaisquer outros efeitos indesejáveis. Acesta nu este o aplicație definitivă! Autorii nu sunt în nici un fel responsabili pentru înregistrări eșuate, cronometre incorecte, ore pierdute, sau orice alte efecte nedorite... Это нестабильная программа! Авторы не несут ответственности за неудачные записи, неверные таймеры, потраченное время и прочие нежелательные эффекты. + මෙය අස්ථිර මෘදුකාංගයකි! මෙහි සිදුවන පටිගත කිරීම් අසාර්ථක වීම්, සාවද්‍ය මුහුර්තක, නාස්ති වූ කාලයන්, හෝ වෙනත් යමිකිසි නුසුදුසු බලපෑම් සඳහා කතෘ වග කියනු නොලැබේ. Tento softvér nie je stabilný! Autori nenesú žiadnu zodpovednosť za chybné nahrávky vysielania, nesprávne časovače alebo iné neželané udalosti spôsobené týmto softvérom.. To je nestabilna programska oprema! Avtorji niso odgovorni za neuspela snemanja, nepravilne časovnike, zapravljen čas in katerikoli drug neželen učinek... Ky program nuk është ende stabil! Autorët së këtij programi nuk janë në as një menyr përgjegjës për rregistrime të gabuara, timer të pasaktë, kohë të humbur ose efekte të tillë të padëshirueshëm. diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/addon/changelog.txt xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/addon/changelog.txt --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/addon/changelog.txt 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/addon/changelog.txt 2014-07-18 06:05:30.000000000 +0000 @@ -1,3 +1,7 @@ +v1.9.178 (01-07-2014) +- Updated language files from Transifex +v1.9.177 (01-05-2014) +- fill initial last played position for recordings v1.9.176 (22-04-2014) - improved timer conflicts detection - fix threads on OS X diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/addon/resources/language/Armenian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/addon/resources/language/Armenian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/addon/resources/language/Armenian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/addon/resources/language/Armenian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,41 @@ +# XBMC Media Center language file +# Addon Name: ARGUS TV client +# Addon id: pvr.argustv +# Addon Provider: Fred Hoogduin, Marcel Groothuis +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Armenian (http://www.transifex.com/projects/p/xbmc-main/language/hy/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hy\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "ARGUS TV Hostname" +msgstr "ARGUS TV Հոսթի անվանում" + +msgctxt "#30001" +msgid "ARGUS TV webserver port" +msgstr "ARGUS TV ցանցային սերվերի կետ" + +msgctxt "#30002" +msgid "Include Radio" +msgstr "Ռադիոն ներառյալ" + +msgctxt "#30004" +msgid "Windows user account" +msgstr "Օգտատեր" + +msgctxt "#30005" +msgid "Password" +msgstr "Գաղտնաբառ" + +msgctxt "#30006" +msgid "Delay after tuning (ms)" +msgstr "Սպասում ձևափոխումից հետո (մվ)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/addon/resources/language/Croatian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/addon/resources/language/Croatian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/addon/resources/language/Croatian/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/addon/resources/language/Croatian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -26,7 +26,7 @@ msgctxt "#30002" msgid "Include Radio" -msgstr "Uključujući radio" +msgstr "Uključi radio" msgctxt "#30003" msgid "Connect timeout (s)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/addon/resources/language/English (US)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/addon/resources/language/English (US)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/addon/resources/language/English (US)/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/addon/resources/language/English (US)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -16,6 +16,30 @@ "Language: en_US\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgctxt "#30000" +msgid "ARGUS TV Hostname" +msgstr "ARGUS TV Hostname" + +msgctxt "#30001" +msgid "ARGUS TV webserver port" +msgstr "ARGUS TV webserver port" + +msgctxt "#30002" +msgid "Include Radio" +msgstr "Include Radio" + +msgctxt "#30003" +msgid "Connect timeout (s)" +msgstr "Connect timeout (s)" + +msgctxt "#30004" +msgid "Windows user account" +msgstr "Windows user account" + msgctxt "#30005" msgid "Password" msgstr "Password" + +msgctxt "#30006" +msgid "Delay after tuning (ms)" +msgstr "Delay after tuning (ms)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/addon/resources/language/Galician/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/addon/resources/language/Galician/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/addon/resources/language/Galician/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/addon/resources/language/Galician/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -26,7 +26,7 @@ msgctxt "#30002" msgid "Include Radio" -msgstr "Incluir Radio" +msgstr "Incluír Radio" msgctxt "#30003" msgid "Connect timeout (s)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/addon/resources/language/Icelandic/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/addon/resources/language/Icelandic/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/addon/resources/language/Icelandic/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/addon/resources/language/Icelandic/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -16,6 +16,30 @@ "Language: is\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgctxt "#30000" +msgid "ARGUS TV Hostname" +msgstr "Nafn á ARGUS TV hýsingunni" + +msgctxt "#30001" +msgid "ARGUS TV webserver port" +msgstr "Vefmiðlaragátt ARGUS TV" + +msgctxt "#30002" +msgid "Include Radio" +msgstr "Hafa úrvarp með" + +msgctxt "#30003" +msgid "Connect timeout (s)" +msgstr "Tengitími útrennur (ms)" + +msgctxt "#30004" +msgid "Windows user account" +msgstr "Windows notandanafn" + msgctxt "#30005" msgid "Password" msgstr "Lykilorð" + +msgctxt "#30006" +msgid "Delay after tuning (ms)" +msgstr "Biðtími eftir rásaval (ms)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/addon/resources/language/Latvian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/addon/resources/language/Latvian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/addon/resources/language/Latvian/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/addon/resources/language/Latvian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -20,10 +20,26 @@ msgid "ARGUS TV Hostname" msgstr "ARGUS TV saimniekvārds" +msgctxt "#30001" +msgid "ARGUS TV webserver port" +msgstr "ARGUS TV tīmekļa servera ports" + msgctxt "#30002" msgid "Include Radio" msgstr "Iekļaut radio" +msgctxt "#30003" +msgid "Connect timeout (s)" +msgstr "Savienojuma noilgums" + +msgctxt "#30004" +msgid "Windows user account" +msgstr "Windows lietotāja konts" + msgctxt "#30005" msgid "Password" msgstr "Parole" + +msgctxt "#30006" +msgid "Delay after tuning (ms)" +msgstr "Aizkave pēc uztveršanas (ms)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/addon/resources/language/Norwegian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/addon/resources/language/Norwegian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/addon/resources/language/Norwegian/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/addon/resources/language/Norwegian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -18,11 +18,11 @@ msgctxt "#30000" msgid "ARGUS TV Hostname" -msgstr "ARGUS TV vertsnavn" +msgstr "ARGUS TV-vertsnavn" msgctxt "#30001" msgid "ARGUS TV webserver port" -msgstr "ARGUS TV webtjener-port" +msgstr "ARGUS TV-nettjenerport" msgctxt "#30002" msgid "Include Radio" @@ -30,7 +30,7 @@ msgctxt "#30003" msgid "Connect timeout (s)" -msgstr "Tilkobling tidsavbrudd(er)" +msgstr "Tilkoblingsavbrudd (s)" msgctxt "#30004" msgid "Windows user account" @@ -42,4 +42,4 @@ msgctxt "#30006" msgid "Delay after tuning (ms)" -msgstr "Forsinkelse etter lasting (i millisekunder)" +msgstr "Forsinkelse etter lasting (ms)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/addon/resources/language/Polish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/addon/resources/language/Polish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/addon/resources/language/Polish/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/addon/resources/language/Polish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -26,7 +26,7 @@ msgctxt "#30002" msgid "Include Radio" -msgstr "Uwzględnij Radio" +msgstr "Uwzględniaj radio" msgctxt "#30003" msgid "Connect timeout (s)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/addon/resources/language/Sinhala/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/addon/resources/language/Sinhala/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/addon/resources/language/Sinhala/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/addon/resources/language/Sinhala/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,45 @@ +# XBMC Media Center language file +# Addon Name: ARGUS TV client +# Addon id: pvr.argustv +# Addon Provider: Fred Hoogduin, Marcel Groothuis +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Sinhala (http://www.transifex.com/projects/p/xbmc-main/language/si/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: si\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "ARGUS TV Hostname" +msgstr "ආරක්ෂක රූපවාහිනී ධාරක නම" + +msgctxt "#30001" +msgid "ARGUS TV webserver port" +msgstr "ආරක්ෂක රූපවාහිනී ජාලසේවා තිර්ථය " + +msgctxt "#30002" +msgid "Include Radio" +msgstr "ගුවන් විදුලිය ඇතුළත් කරන්න" + +msgctxt "#30003" +msgid "Connect timeout (s)" +msgstr "සම්බන්ධවීමේ කාලය(න්) ඉවරයි. " + +msgctxt "#30004" +msgid "Windows user account" +msgstr "windows පරිශීලක නම" + +msgctxt "#30005" +msgid "Password" +msgstr "මුරපදය" + +msgctxt "#30006" +msgid "Delay after tuning (ms)" +msgstr "සුසර කිරීමෙන් පසු ප්‍රමාදය (මිලි.තත්.)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/addon/resources/language/Spanish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/addon/resources/language/Spanish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/addon/resources/language/Spanish/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/addon/resources/language/Spanish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -18,11 +18,11 @@ msgctxt "#30000" msgid "ARGUS TV Hostname" -msgstr "Hostname ARGUS TV" +msgstr "Nombre del servidor ARGUS TV" msgctxt "#30001" msgid "ARGUS TV webserver port" -msgstr "Puerto del webserver de ARGUS TV" +msgstr "Puerto del servidor Web de ARGUS TV" msgctxt "#30002" msgid "Include Radio" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/addon/resources/language/Tamil (India)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/addon/resources/language/Tamil (India)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/addon/resources/language/Tamil (India)/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/addon/resources/language/Tamil (India)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -38,7 +38,7 @@ msgctxt "#30005" msgid "Password" -msgstr "அடையாளச் சொல்" +msgstr "கடவுச்சொல்" msgctxt "#30006" msgid "Delay after tuning (ms)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/addon/resources/language/Thai/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/addon/resources/language/Thai/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/addon/resources/language/Thai/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/addon/resources/language/Thai/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -16,6 +16,10 @@ "Language: th\n" "Plural-Forms: nplurals=1; plural=0;\n" +msgctxt "#30003" +msgid "Connect timeout (s)" +msgstr "ระยะเวลาหยุดการเชื่อมต่อ (วิ)" + msgctxt "#30005" msgid "Password" msgstr "รหัสผ่าน" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/project/VS2010Express/pvr.argustv.vcxproj xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/project/VS2010Express/pvr.argustv.vcxproj --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/project/VS2010Express/pvr.argustv.vcxproj 2014-03-04 10:06:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/project/VS2010Express/pvr.argustv.vcxproj 2014-07-18 06:05:30.000000000 +0000 @@ -1,5 +1,5 @@  - + Debug @@ -19,12 +19,14 @@ DynamicLibrary true MultiByte + v120 DynamicLibrary false true MultiByte + v120 diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/activerecording.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/activerecording.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/activerecording.cpp 2012-11-27 01:00:30.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/activerecording.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/activerecording.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/activerecording.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/activerecording.h 2012-11-27 01:00:30.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/activerecording.h 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/channel.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/channel.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/channel.h 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/channel.h 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/client.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/client.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/client.h 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/client.h 2014-07-18 06:05:30.000000000 +0000 @@ -15,7 +15,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/epg.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/epg.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/epg.h 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/epg.h 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/EventsThread.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/EventsThread.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/EventsThread.cpp 2014-03-04 10:06:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/EventsThread.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/EventsThread.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/EventsThread.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/EventsThread.h 2014-03-04 10:06:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/EventsThread.h 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/guideprogram.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/guideprogram.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/guideprogram.cpp 2012-11-27 01:00:30.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/guideprogram.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to -* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +* the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, +* MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/guideprogram.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/guideprogram.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/guideprogram.h 2012-11-27 01:00:30.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/guideprogram.h 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/KeepAliveThread.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/KeepAliveThread.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/KeepAliveThread.cpp 2012-11-27 01:00:30.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/KeepAliveThread.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/pvrclient-argustv.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/pvrclient-argustv.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/pvrclient-argustv.cpp 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/pvrclient-argustv.cpp 2014-06-10 08:39:14.000000000 +0000 @@ -689,6 +689,7 @@ tag.iDuration = recording.RecordingStopTime() - recording.RecordingStartTime(); strncpy(tag.strPlot, recording.Description(), sizeof(tag.strPlot)); tag.iPlayCount = recording.FullyWatchedCount(); + tag.iLastPlayedPosition = recording.LastWatchedPosition(); if (nrOfRecordings > 1) { recording.Transform(true); diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/recording.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/recording.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/recording.cpp 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/recording.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to -* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +* the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, +* MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/recordinggroup.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/recordinggroup.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/recordinggroup.cpp 2012-11-27 01:00:30.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/recordinggroup.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/recordinggroup.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/recordinggroup.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/recordinggroup.h 2012-11-27 01:00:30.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/recordinggroup.h 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/recording.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/recording.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/recording.h 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/recording.h 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/tools.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/tools.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/tools.cpp 2012-11-27 01:00:30.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/tools.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/tools.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/tools.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/tools.h 2012-11-27 01:00:30.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/tools.h 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/upcomingrecording.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/upcomingrecording.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/upcomingrecording.cpp 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/upcomingrecording.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/upcomingrecording.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/upcomingrecording.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.argustv/src/upcomingrecording.h 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.argustv/src/upcomingrecording.h 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.demo/addon/addon.xml.in xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.demo/addon/addon.xml.in --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.demo/addon/addon.xml.in 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.demo/addon/addon.xml.in 2014-07-18 06:05:30.000000000 +0000 @@ -1,12 +1,12 @@ - + Πελάτης PVR Demo Demo PVR Client Demo PVR Client + Demo PVR Client Demo Cliente PVR Cliente PVR demo Cliente Demo PVR @@ -38,10 +39,13 @@ הדגמה לקוח PVR Demo PVR klijent Demo PVR ügyfél + Նախնական PVR բաժանորդ Klien Demo PVR + Prufu upptökubiðlari Client PVR Demo デモ PVR クライアント 데모 PVR 클라이언트 + Demo PVR klientas Demo PVR klients Демо за PVR клиент Kline PVR Demo @@ -53,12 +57,14 @@ Cliente de PVR de Demonstração Demo client PVR Демонстрация клиента PVR + ආදර්ශක PVR ආයත්තකයා Demo PVR Klient Demo odjemalec PVR Пробни PVR клијент Demo PVR Klient PVR கிளையன் செயல்முறை Муштарии намоишии PVR + ตัวอย่างลูกข่าย PVR PVR Tanıtım İstemcisi Демонстраційний клієнт для PVR Demo PVR @@ -74,6 +80,7 @@ Πελάτης PVR Demo Demo PVR Client Demo PVR Client + Demo PVR Client Demo Cliente PVR Cliente PVR demo Cliente Demo PVR @@ -85,10 +92,13 @@ הדגמה לקוח PVR Demo PVR klijent Demo PVR ügyfél + Նախնական PVR բաժանորդ Demo Klien PVR + Prufu upptökubiðlari Client PVR Demo デモ PVR クライアント 데모 PVR 클라이언트 + Demo PVR klientas Demo PVR klients Демо за PVR клиент Klien PVR Demo @@ -100,12 +110,14 @@ Cliente de PVR de Demonstração Demo client PVR Демонстрация клиента PVR + ආදර්ශක PVR ආයත්තකයා Demo PVR Klient Demo odjemalec PVR Пробни PVR клијент Demo PVR Klient PVR கிளையன் செயல்முறை Муштарии намоишии PVR + ตัวอย่างลูกข่าย PVR PVR Tanıtım İstemcisi Демонстраційний клієнт для PVR Demo PVR @@ -121,6 +133,7 @@ Περιέχει μόνο εικονικά κανάλια Just contains stubs Just contains stubs + Just contains stubs Sólo contiene fragmentos contiene sólo marcadores Solo contiene talones @@ -133,6 +146,7 @@ Samo sadrži kratke informacije Csak tesztfunkciókat tartalmaz Hanya mengandung stub + Inniheldur aðeins búta Contiene solo tronconi 単なるスタブです Satur tikai nepabeigtas lietas @@ -146,6 +160,7 @@ Só contém esboços Contine numai cioturi Содержит заглушки + අක්කඩ පමණක් අන්තර්ගතයි. Obsahuje len útržky Vsebuje le fiktivne vsebine Садржи само назнаке садржаја diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.demo/project/VS2010Express/pvrclient_demo.vcxproj xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.demo/project/VS2010Express/pvrclient_demo.vcxproj --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.demo/project/VS2010Express/pvrclient_demo.vcxproj 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.demo/project/VS2010Express/pvrclient_demo.vcxproj 2014-07-18 06:05:30.000000000 +0000 @@ -1,5 +1,5 @@  - + Debug @@ -20,12 +20,14 @@ DynamicLibrary true MultiByte + v120 DynamicLibrary false true MultiByte + v120 diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.demo/src/client.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.demo/src/client.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.demo/src/client.cpp 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.demo/src/client.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.demo/src/client.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.demo/src/client.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.demo/src/client.h 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.demo/src/client.h 2014-07-18 06:05:30.000000000 +0000 @@ -15,7 +15,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.demo/src/PVRDemoData.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.demo/src/PVRDemoData.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.demo/src/PVRDemoData.cpp 2014-01-04 10:28:19.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.demo/src/PVRDemoData.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.demo/src/PVRDemoData.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.demo/src/PVRDemoData.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.demo/src/PVRDemoData.h 2012-11-21 10:53:40.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.demo/src/PVRDemoData.h 2014-07-18 06:05:30.000000000 +0000 @@ -15,7 +15,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/addon.xml.in xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/addon.xml.in --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/addon.xml.in 2014-01-28 20:43:50.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/addon.xml.in 2014-07-18 06:05:30.000000000 +0000 @@ -1,12 +1,12 @@ + provider-name="DVBLogic"> - + + ПВР добавка за DVBLink + PVR plugin pro DVBLink + PVR-Plugin für DVBLink PVR Plugin for DVBLink + PVR Plugin for DVBLink + Complemento PVR para DVBLink + Plugiciel de numériscope pour DVBLink + Complemento PVR do DVBLink + תוסף PVR עבור DVBLink + PVR dodatak za DVBLink + PVR Kiegészítő a DVBLink-hez + PVR viðbót fyrir DVBLink + Plugin PVR per DVBLink + DVBLink の PVR プラグイン + PVR įskiepis skirtas DVBLink + Plugin PVR untuk DVBLink + PVR Plug-in voor DVBLink + PVR-innstikk til DVBLink + Klient XBMC dla DVBLink + Plugin PVR para DVBLink + Plugin de PVR para DVBLink + Дополнение PVR для DVBLink + DBVLink සඳහා PVR පේනුකිරීම + PVR zásuvný modul pre DVBLink + DVBLink PVR 插件 + ПВР добавка за DVBLink от DvbLogic.com. Поддържа стрийминг и записване на телевизия, електронен програмен справочник и броячи. + PVR plugin pro DVBLink od DvbLogic.com; podporuje živé TV vysílání a nahrávání, EPG, časovač + PVR-Plugin für DVBLink von DvbLogic.com; unterstützt das Streaming von Live-TV & Aufnahmen, EPG, Timer PVR Plugin for DVBLink from DvbLogic.com; supporting streaming of Live TV & Recordings, EPG, Timers + PVR Plugin for DVBLink from DvbLogic.com; supporting streaming of Live TV & Recordings, EPG, Timers + Complemento PVR para DVBLink de DvbLogic.com; soporta emisiones en directo, grabaciones, EPG, programaciones + Plugiciel de numériscope pour DVBLink de DvbLogic.com, prenant en charge la lecture en transit de la télé en direct & les enregistrements, GÉP, des minuteries + Complemento PVR do DVBLink de DvbLogic.com; soporta transmisión de TV en directo e Gravacións, Guía e temporizadores + תוסף PVR עבור DVBLink מאת DvbLogic.com; תומך בהזרמת שידורים חיים והקלטות, לוח שידורים ותזמונים + PVR dodatak za DVBLink od DvbLogic.com; podržava streamanje TV programa i snimanje, elektronski programski vodič (EPG) i zakazana snimanja + PVR Kiegészítő a DVBLink-hez a DvbLogic.com-tól; támogatja a Live TV streamet & felvételt, EPG-t, időzítőt. + Upptökuviðbót (PVR) fyrir DVBLink frá DvbLogic.com; styður streymingu á Live TV & Recordings, rafræna dagskrárvísa (EPG), og tímaupptökur + Plugin PVR per DVBLink da DvbLogic.com; supporta lo stream di Live TV e registrazioni, EPG, timer + DvdLogic.com - DVBLink の PVR プラグインです。ライブTV ストリーミング、録画、EPG、タイマーをサポートしています + PVR įskiepis skirtas DVBLink iš DvbLogic.com; palaiko Live TV transliaciją ir įrašymus, EPG, laikmačius + Plugin PVR untuk DVBLink dari DvbLogic.com; menyokong penstriman Siaran Langsung & Rakaman, EPG dan Pemasa + PVR plug-in voor DVBLink van DvbLogic.com; ondersteunt het streamen van Live TV & opnames, EPG, Timers + PVR-innstikk til DVBLink fra DvbLogic.com - støtter strømming av Live-TV, opptak, EPG og tidsur. + Klient DVBLink od DvbLogic.com. Wspiera strumieniowanie kanałów telewizyjnych, nagrywanie, planowanie nagrań oraz funkcje przewodnika TV. + Plugin PVR para DVBLink de DvbLogic.com; suporta transmissão de TV em Directo e Gravações, EPG, Temporizadores. + Plugin de PVR para DVBLink de DvbLogic.com; suporta streaming de tv ao vivo e gravações, EPG, Agendamentos + Плагин PVR для DVBLink с сайта DvbLogic.com; поддержка трансляции Прямого вещания и записей Live TV & Recordings, EPG, Таймеров + DvbLogic.com වලින් DBVLink සඳහා PVR පේනුකිරීම; සජීව රූපවාහිනී සහ පටිගත කිරීම් ප්‍රවාහන කිරීම ,EPG, මුහුර්තක උදව් + PVR zásuvný modul pre DVBLink od firmy DvbLogic.com; je podporované streamovanie živého televízneho vysielania a nahrávok, EPG, časovačov + 来自 DvbLogic.com 的 DVBLink 的 PVR 插件,支持直播电视播放和录制、电子节目单、定时器 + Hierdie is onstabiele sagteware! Die outeurs is op geen manier verantwoordelik vir gefaalde opnames, inkorrekte tydhouers, gemorsde ure, of enige ander ongewensde effekte. + This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects.. + Тази програма е нестабилна! Авторите не носят отговорност за неуспешно записване, некоректни броячи, пропиляно време и други нежелани ефекти. + Això és programari inestable! Els autors no són de cap manera responsables dels enregistraments que han fallat, temporitzadors incorrectes, hores perdudes, o qualssevol altres efectes no desitjats.. + Tento software není stabilní. Autoři nejsou žádným způsobem zodpovědní za selhání při nahrávání, neplatné časovače, ztracený čas, či jakékoliv jiné nežádoucí události... + Mae hwn yn feddalwedd ansad! Nid yw'r awduron yn gyfrifol mewn unrhyw ffordd am fethu recordio, amseru gwallus, oriau wedi eu gwastraffu nac effeithiau anymunol eraill. + Dette er ustabil software! Ophavsmændene er på ingen måde ansvarlige for mislykkede optagelser, ukorrekte timere, spildte timer, eller andre uønskede konsekvenser.. + Dies ist instabile Software! Die Autoren sind in keiner Weise verantwortlich für fehlgeschlagene Aufnahmen, falsche Timer, verschwendete Zeit oder andere ungewünschte Effekte. + Ασταθές πρόγραμμα! Οι δημιουργοί δεν είναι σε καμία περίπτωση υπεύθυνοι για αποτυχημένες εγγραφές, λανθασμένους χρονοδιακόπτες, χαμένες ώρες, ή κάθε είδους ανεπιθύμητα αποτελέσματα.. This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects.. + This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects.. + This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects.. + ¡Este es un software inestable! Los autores no son de ninguna manera responsables de las grabaciones fallidas o incorrectas, las programaciones perdidas, ni otros efectos no deseables.. + ¡Este software es inestable! Los autores no se responsabilizan por grabaciones fallidas, temporizadores incorrectos, horas perdidas, o cualquier otro efecto no deseado.. + ¡Esto es software inestable! Los autores no son de ninguna manera responsables por grabaciones fallidas, temporizadores incorrectos, horas perdidas o cualquier otro efecto no deseado... + See on ebastabiilne tarkvara! Autorid ei ole kuidagi moodi vastutavad nurjunud salvestiste, ebaõige aegrelee, raisatud tundide ega muude soovimatute asjade eest. + Tämä on epävakaa ohjelmisto! Tekijät eivät ole millään muotoa vastuussa epäonnistuneista tallennuksista, virheellisistä ajastuksia, haaskatusta ajasta, verenpaineen noususta tai mistään muusta epäsuotuisasta vaikutuksesta. + Logiciel en cours d'élaboration ! Les auteurs ne sont en aucun cas responsables de l'échec des enregistrements, minuteries défectueuses, temps perdu ou autres effets indésirables.. + Ce logiciel est instable! Les auteurs ne sont aucunement responsables des enregistrements défaillants, des minuteries erronées, des heures perdues ou tout autre effet indésirable. + Este é software non estable, os autores non se fan responsábeis dos erros nas gravacións, temporizadores incorrectos, e outros efectos non desexados. + זוהי תוכנה בלתי יציבה!מחברי התכנה אינם אחראים להקלטות כושלות,מתזמני הקלטות שגויים,שעות מבוזבזות,או כל תוצאה בלתי רצויה... + Ovo je nestabilan softver! Autori nisu ni na koji način odgovorni za neuspjelo snimanje, netočna vremena snimanja, izgubljene sate, ili bilo koje druge nepoželjne učinke... + Ez nem stabil szoftver! A készítők nem vállalnak felelősséget, a hibás felvételért, rossz időzítésért, elvesztegetett időért... + Սա անկայուն ծրագրային ապահովում է: Հեղինակները պատասխանատու չեն վատ ձայնագրումների, սխալ ժամանակացույցերի, կորած ժամանակի կամ այլ ոչ ցանկալի երևույթների համար: + Ini merupakan software yang tidak stabil! Penulis tidak bertanggung jawab untuk rekaman gagal, timer salah, waktu terbuang, atau efek tak diinginkan lainnya... + Þetta er óstöðugur hugbúnaður! Höfundar eru á engann hátt ábyrgir fyrir mistökum í upptöku, röngum tíma, klukkustundum sem fara í súginn, eða nokkru öðrum óæskilegum hegðunum. + Questo software è instabile! Gli autori non sono in alcun modo responsabili per le registrazioni fallite ì, timer non corretti, ore perse o qualsiasi altro effetto non desiderato... + これは不安定なソフトウェアです!本プログラムの作者は、録画の失敗、正確に作動しなかったタイマー、無駄にした時間、その他あらゆる好ましくない結果について責任を負わないものとします。 + ეს არის არასტაბილური პროგრამული უზრუნველყოფა! ავტორები არ არიან პასუხისმგებელი შეცდომებზე, არასწორ EPG-ზე, დაკარგულ დროზე ან სხვა ხარვეზებზე + 이 소프트웨어는 불안정합니다! 제작자는 녹화 실패, 부정확한 타이머, 시간 낭비 및 기타 예상하지 못한 결과에 대해 책임지지 않습니다.. + Tai yra nestabili programinė įranga! Autorius jokiu būdu neatsakingas už nepavykusius įrašus, neteisingus laikmačius, iššvaistytas valandas, ar nutikus kitiems nepageidaujamiems poveikiams ...[COLOR=red](xbmc.lt rekomenduoja testuojant šį priedą persijungti į Anglų [orinali] kalbą)[/COLOR] + Šī ir nestabila programmatūra! Autori nav atbildīgi par nesanākušiem ierakstiem, nepareiziem taimeriem, iztērētām stundām vai jebkādiem citiem nevēlamiem efektiem.. + Ова е нестабилен софтвер! Авторите на ниту еден начин не одговараат за неуспешни снимки, неточни тајмери, потрошени часови, или било кои други несакани ефекти. + Ini merupakan perisian tidak stabil! Pengarang tidak bertanggungjawab atas kegagalan rakaman, pemasa tidak betul, masa yang dibazirkan, atau apa jua kesan yang tidak dikehendaki.. + Dit is instabiele software! De auteurs zijn op geen enkele wijze verantwoordelijk voor mislukte opnames, onjuiste timers, verspilde uren, of andere ongewenste effecten .. + Dette er ustabil programvare! Skaperen har ikke på noen måte ansvar for feilede opptak, feile timere, bortkastede timer, eller andre uønskede effekter.. + Oprogramowanie nadal jest w fazie rozwoju i jest niestabilne! Autorzy w żaden sposób nie są odpowiedzialni za nieudane nagrania, błędy w planie nagrań, zmarnowany czas ani jakiekolwiek inne niepożądane efekty. + Este software é instável! Os autores não se responsabilizam por falhas nas gravações, temporizadores incorrectos, horas perdidas ou outro qualquer efeito não desejado... + Este é um software instável! Os autores não são responsáveis por falhas nas gravações, agendamentos incorretos, horas dispendidas, ou quaisquer outros efeitos indesejáveis + Acesta nu este o aplicație definitivă! Autorii nu sunt în nici un fel responsabili pentru înregistrări eșuate, cronometre incorecte, ore pierdute, sau orice alte efecte nedorite... + Это тестовая программа! Авторы не несут ответственности за неудачные записи, неверные таймеры, потраченное время и прочие нежелательные эффекты.. + මෙය අස්ථිර මෘදුකාංගයකි! මෙහි සිදුවන පටිගත කිරීම් අසාර්ථක වීම්, සාවද්‍ය මුහුර්තක, නාස්ති වූ කාලයන්, හෝ වෙනත් යමිකිසි නුසුදුසු බලපෑම් සඳහා කතෘ වග කියනු නොලැබේ. + Tento softvér nie je stabilný! Autori nenesú žiadnu zodpovednosť za chybné nahrávky vysielania, nesprávne časovače alebo iné neželané udalosti spôsobené týmto softvérom.. + To je nestabilna programska oprema! Avtorji niso odgovorni za neuspela snemanja, nepravilne časovnike, zapravljen čas in katerikoli drug neželen učinek... + Ky program nuk është ende stabël! Autorët e këtij programi nuk janë në as një menyr përgjegjës për rregistrime të gabuara, timer të pasaktë, kohë të humbur ose efekte të tilla të padëshirueshme. + Овај софтвер је нестабилан! Аутори ни на који начин нису одговорни за неуспела снимања, неисправна заказана снимања, изгубљене сате или друге нежељене ефекте. + Detta är ostabil mjukvara! Upphovsmännen är inte ansvariga för misslyckade inspelningar, inkorrekta timers, bortslösade timmar, eller några andra oönskade effekter.. + இந்த நிலையற்ற மென்பொருள்! தோல்வியடைந்தது பதிவுகள், தவறான டைமர்கள், வீணாகி மணி, அல்லது வேறு எந்த விரும்பத்தகாத விளைவுகலுக்கு இதன் ஆசிரியர்கள் பொறுப்பு இல்லை. + Ин нармафзори ноустувор аст! Муаллифон барои вайрониҳои сабт, вақтсанҷҳои нодуруст, соатҳои бефоида ва дигар таъсирҳои номатлуб ҷавобгар намебошанд. + Bu stabil olmayan program! Yapımcılar hatalı kayıtlardan, bozuk sürelerden, harcanan vakitten veya herhangi bir olumsuz etkiden dolayı sorumlu tutulamaz. + Це нестабільна програма! Автори не несуть відповідальності за попсуті записи, неправильні таймери, втрачений час та інші небажані ефекти. + Đây là phần mềm không ổn định! Các tác giả không chịu trách nhiệm đối với bản ghi chương trình thất bại, hẹn giờ không chính xác, giờ lãng phí, hoặc bất kỳ tác dụng không mong muốn khác.. + 这是不稳定版的软件!作者不对录像失败、错误定时造成时间浪费或其它不良影响负责。 + 這是測試版軟體!其原創作者並無法對於以下情況負責,包含:錄影失敗,不正確的定時設定,多餘時數,或任何產生的其它不良影響... @OS@ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/changelog.txt xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/changelog.txt --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/changelog.txt 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/changelog.txt 2014-07-18 06:05:30.000000000 +0000 @@ -1,3 +1,11 @@ +[B]Version 1.9.2[/B] +Updated: language files from Transifex + +[B]Version 1.9.1[/B] +Added: support for DVBLink v5 server timeshifting capabilities +Fixed: series number, genre, episode name tags +Fixed: correct displaying of series recordings + [B]Version 1.9.0[/B] Sync with XBMC PVR API v1.9.0 diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Afrikaans/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Afrikaans/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Afrikaans/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Afrikaans/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,45 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Afrikaans (http://www.transifex.com/projects/p/xbmc-main/language/af/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: af\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Algemeen" + +msgctxt "#30005" +msgid "Username" +msgstr "Gebruikersnaam" + +msgctxt "#30006" +msgid "Password" +msgstr "Wagwoord" + +msgctxt "#30100" +msgid "Stream" +msgstr "Stroom" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Bistempo" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Gevorderde" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Albanian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Albanian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Albanian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Albanian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,45 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Albanian (http://www.transifex.com/projects/p/xbmc-main/language/sq/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sq\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "I përgjithsëm" + +msgctxt "#30005" +msgid "Username" +msgstr "Emër-përdoruesi" + +msgctxt "#30006" +msgid "Password" +msgstr "Fjalkalimi" + +msgctxt "#30100" +msgid "Stream" +msgstr "Transmeto" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Bitrata" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Të shtuar" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Amharic/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Amharic/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Amharic/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Amharic/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,37 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Amharic (http://www.transifex.com/projects/p/xbmc-main/language/am/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: am\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "ባጠቃላይ" + +msgctxt "#30005" +msgid "Username" +msgstr "የተጠቃሚ ስም " + +msgctxt "#30006" +msgid "Password" +msgstr "የመግቢያ ቃል" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30200" +msgid "Advanced" +msgstr "የረቀቀ" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Arabic/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Arabic/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Arabic/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Arabic/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,41 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Arabic (http://www.transifex.com/projects/p/xbmc-main/language/ar/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ar\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" + +msgctxt "#30000" +msgid "General" +msgstr "عام" + +msgctxt "#30005" +msgid "Username" +msgstr "اسم المستخدم" + +msgctxt "#30006" +msgid "Password" +msgstr "كلمة المرور" + +msgctxt "#30100" +msgid "Stream" +msgstr "بث" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "معدل بت" + +msgctxt "#30200" +msgid "Advanced" +msgstr "منقدم" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Armenian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Armenian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Armenian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Armenian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,29 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Armenian (http://www.transifex.com/projects/p/xbmc-main/language/hy/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hy\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Գլխավոր" + +msgctxt "#30006" +msgid "Password" +msgstr "Գաղտնաբառ" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Հոսք" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Azerbaijani/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Azerbaijani/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Azerbaijani/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Azerbaijani/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,21 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/xbmc-main/language/az/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: az\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Bit sürəti" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Basque/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Basque/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Basque/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Basque/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,41 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Basque (http://www.transifex.com/projects/p/xbmc-main/language/eu/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: eu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Orokorra" + +msgctxt "#30005" +msgid "Username" +msgstr "Erabiltzailea" + +msgctxt "#30006" +msgid "Password" +msgstr "Pasahitza" + +msgctxt "#30100" +msgid "Stream" +msgstr "Stream" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Bitrate-a" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Belarusian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Belarusian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Belarusian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Belarusian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,45 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Belarusian (http://www.transifex.com/projects/p/xbmc-main/language/be/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: be\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Агульныя" + +msgctxt "#30005" +msgid "Username" +msgstr "Username" + +msgctxt "#30006" +msgid "Password" +msgstr "Пароль" + +msgctxt "#30100" +msgid "Stream" +msgstr "Stream" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Бітрэйт" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Advanced" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Bosnian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Bosnian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Bosnian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Bosnian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,41 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Bosnian (http://www.transifex.com/projects/p/xbmc-main/language/bs/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: bs\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Opšte" + +msgctxt "#30005" +msgid "Username" +msgstr "Korisničko ime" + +msgctxt "#30006" +msgid "Password" +msgstr "Lozinka" + +msgctxt "#30100" +msgid "Stream" +msgstr "Zapis" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Brzina protoka" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Bulgarian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Bulgarian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Bulgarian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Bulgarian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,121 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Bulgarian (http://www.transifex.com/projects/p/xbmc-main/language/bg/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: bg\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Главни" + +msgctxt "#30001" +msgid "Server Address" +msgstr "Адрес на сървъра" + +msgctxt "#30002" +msgid "Server Port" +msgstr "Порт на сървъра" + +msgctxt "#30003" +msgid "Client name" +msgstr "Клиентско име" + +msgctxt "#30004" +msgid "Connection timeout (s)" +msgstr "Таймаут при свързване (с)" + +msgctxt "#30005" +msgid "Username" +msgstr "Потребителско име" + +msgctxt "#30006" +msgid "Password" +msgstr "Парола" + +msgctxt "#30100" +msgid "Stream" +msgstr "Поток" + +msgctxt "#30102" +msgid "Stream format" +msgstr "Стрийминг формат" + +msgctxt "#30103" +msgid "Height" +msgstr "Височина" + +msgctxt "#30104" +msgid "Width" +msgstr "Ширина" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Битрейт" + +msgctxt "#30106" +msgid "Audio track" +msgstr "Аудио запис" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30108" +msgid "RTP" +msgstr "RTP" + +msgctxt "#30109" +msgid "HLS" +msgstr "HLS" + +msgctxt "#30110" +msgid "ASF" +msgstr "ASF" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Включи таймшифта" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Път към таймшифт буфера" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Допълнителни" + +msgctxt "#30202" +msgid "Show information messages" +msgstr "Показвай информативни съобщения" + +msgctxt "#32001" +msgid "Connected to DVBLink Server '%s'" +msgstr "Свързан към DVBLink сървъра '%s'" + +msgctxt "#32002" +msgid "Found '%d' channels" +msgstr "Открити са '%d' канала" + +msgctxt "#32007" +msgid "Found %d EPG timers" +msgstr "Открити са ЕПС брояча" + +msgctxt "#32008" +msgid "Found %d manual timers" +msgstr "Открити са %d ръчни брояча" + +msgctxt "#32009" +msgid "Found %d recordings" +msgstr "Открити са %d записа" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Burmese/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Burmese/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Burmese/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Burmese/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,37 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Burmese (http://www.transifex.com/projects/p/xbmc-main/language/my/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: my\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30000" +msgid "General" +msgstr "ယေဘုယျ" + +msgctxt "#30005" +msgid "Username" +msgstr "အသုံးပြုသူအမည်" + +msgctxt "#30006" +msgid "Password" +msgstr "စကားဝှက်" + +msgctxt "#30100" +msgid "Stream" +msgstr "Stream" + +msgctxt "#30200" +msgid "Advanced" +msgstr "အဆင့်မြင့်သော" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Catalan/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Catalan/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Catalan/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Catalan/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,53 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Catalan (http://www.transifex.com/projects/p/xbmc-main/language/ca/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ca\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "General" + +msgctxt "#30005" +msgid "Username" +msgstr "Nom d'usuari" + +msgctxt "#30006" +msgid "Password" +msgstr "Contrasenya" + +msgctxt "#30100" +msgid "Stream" +msgstr "Flux" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Taxa de bits" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Activar Timeshift" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Camí de la memòria intermedia del Timeshift" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Avançat" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Chinese (Simple)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Chinese (Simple)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Chinese (Simple)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Chinese (Simple)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,141 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Chinese (Simple) (http://www.transifex.com/projects/p/xbmc-main/language/zh/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30000" +msgid "General" +msgstr "常规" + +msgctxt "#30001" +msgid "Server Address" +msgstr "服务器地址" + +msgctxt "#30002" +msgid "Server Port" +msgstr "服务器端口" + +msgctxt "#30003" +msgid "Client name" +msgstr "客户端名称" + +msgctxt "#30004" +msgid "Connection timeout (s)" +msgstr "连接超时(秒)" + +msgctxt "#30005" +msgid "Username" +msgstr "用户名" + +msgctxt "#30006" +msgid "Password" +msgstr "密码" + +msgctxt "#30100" +msgid "Stream" +msgstr "媒体流" + +msgctxt "#30102" +msgid "Stream format" +msgstr "流格式" + +msgctxt "#30103" +msgid "Height" +msgstr "高" + +msgctxt "#30104" +msgid "Width" +msgstr "宽" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "码率" + +msgctxt "#30106" +msgid "Audio track" +msgstr "音轨" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30108" +msgid "RTP" +msgstr "RTP" + +msgctxt "#30109" +msgid "HLS" +msgstr "HLS" + +msgctxt "#30110" +msgid "ASF" +msgstr "ASF" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "启用时光平移" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "时光平移缓存路径" + +msgctxt "#30200" +msgid "Advanced" +msgstr "高级" + +msgctxt "#30201" +msgid "Use channel handle instead of client id" +msgstr "使用频道句柄而非客户端 ID" + +msgctxt "#30202" +msgid "Show information messages" +msgstr "显示信息" + +msgctxt "#32001" +msgid "Connected to DVBLink Server '%s'" +msgstr "连接到 DVBLink 服务器“%s”" + +msgctxt "#32002" +msgid "Found '%d' channels" +msgstr "找到 %d 个频道" + +msgctxt "#32003" +msgid "Could not connect to DVBLink Server '%s' (Error code : %d)" +msgstr "无法连接 DVBLink 服务器“%s”(错误码:%d)" + +msgctxt "#32004" +msgid "Could not get recordings (Error code : %d)" +msgstr "无法获取录像(错误码:%d)" + +msgctxt "#32006" +msgid "Could not get timers(Error code : %d)" +msgstr "无法获取定时器(错误码:%d)" + +msgctxt "#32007" +msgid "Found %d EPG timers" +msgstr "找到 %d 个电子节目单定时器" + +msgctxt "#32008" +msgid "Found %d manual timers" +msgstr "找到 %d 个人工定时器" + +msgctxt "#32009" +msgid "Found %d recordings" +msgstr "找到 %d 个录像" + +msgctxt "#32010" +msgid "Could not get stream for channel %s (Error code : %d)" +msgstr "无法获取频道 %s 的媒体流(错误码:%d)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Chinese (Traditional)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Chinese (Traditional)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Chinese (Traditional)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Chinese (Traditional)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,53 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Chinese (Traditional) (http://www.transifex.com/projects/p/xbmc-main/language/zh_TW/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_TW\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30000" +msgid "General" +msgstr "一般設定" + +msgctxt "#30005" +msgid "Username" +msgstr "帳號" + +msgctxt "#30006" +msgid "Password" +msgstr "密碼" + +msgctxt "#30100" +msgid "Stream" +msgstr "媒體流" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "頻率" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "啟用時間平移" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "時間平移緩衝路徑" + +msgctxt "#30200" +msgid "Advanced" +msgstr "進階" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Croatian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Croatian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Croatian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Croatian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,141 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Croatian (http://www.transifex.com/projects/p/xbmc-main/language/hr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hr\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +msgctxt "#30000" +msgid "General" +msgstr "Općenito" + +msgctxt "#30001" +msgid "Server Address" +msgstr "Adresa poslužitelja" + +msgctxt "#30002" +msgid "Server Port" +msgstr "Ulaz poslužitelja" + +msgctxt "#30003" +msgid "Client name" +msgstr "Naziv klijenta" + +msgctxt "#30004" +msgid "Connection timeout (s)" +msgstr "Vrijeme čekanja povezivanja (sek)" + +msgctxt "#30005" +msgid "Username" +msgstr "Korisničko ime" + +msgctxt "#30006" +msgid "Password" +msgstr "Lozinka" + +msgctxt "#30100" +msgid "Stream" +msgstr "Stream" + +msgctxt "#30102" +msgid "Stream format" +msgstr "Format streama" + +msgctxt "#30103" +msgid "Height" +msgstr "Visina" + +msgctxt "#30104" +msgid "Width" +msgstr "Širina" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Brzina prijenosa" + +msgctxt "#30106" +msgid "Audio track" +msgstr "Zvučni zapis" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30108" +msgid "RTP" +msgstr "RTP" + +msgctxt "#30109" +msgid "HLS" +msgstr "HLS" + +msgctxt "#30110" +msgid "ASF" +msgstr "ASF" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Omogući vremensko premotavanje" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Putanja međuspremnika premotavanja u vremenu" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Napredno" + +msgctxt "#30201" +msgid "Use channel handle instead of client id" +msgstr "Koristi upravljanje programom umjesto ID klijenta" + +msgctxt "#30202" +msgid "Show information messages" +msgstr "Prikaži poruke informacije" + +msgctxt "#32001" +msgid "Connected to DVBLink Server '%s'" +msgstr "Povezano s DVBLink poslužiteljem '%s'" + +msgctxt "#32002" +msgid "Found '%d' channels" +msgstr "Pronađeno '%d' programa" + +msgctxt "#32003" +msgid "Could not connect to DVBLink Server '%s' (Error code : %d)" +msgstr "Nemoguće povezivanje s DVBLink poslužiteljem '%s' (kôd greške : %d)" + +msgctxt "#32004" +msgid "Could not get recordings (Error code : %d)" +msgstr "Nemoguć dohvat snimanja (kôd greške : %d)" + +msgctxt "#32006" +msgid "Could not get timers(Error code : %d)" +msgstr "Nemoguć dohvat zakazanih snimanja (kôd greške : %d)" + +msgctxt "#32007" +msgid "Found %d EPG timers" +msgstr "Pronađeno %d EPG zakazanih snimanja" + +msgctxt "#32008" +msgid "Found %d manual timers" +msgstr "Pronađeno %d EPG ručno zakazanih snimanja" + +msgctxt "#32009" +msgid "Found %d recordings" +msgstr "Pronađeno %d EPG snimanja" + +msgctxt "#32010" +msgid "Could not get stream for channel %s (Error code : %d)" +msgstr "Nemoguć dohvat streama za program %s (kôd greške : %d)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Czech/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Czech/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Czech/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Czech/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,141 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Czech (http://www.transifex.com/projects/p/xbmc-main/language/cs/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: cs\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +msgctxt "#30000" +msgid "General" +msgstr "Hlavní" + +msgctxt "#30001" +msgid "Server Address" +msgstr "Adresa serveru" + +msgctxt "#30002" +msgid "Server Port" +msgstr "Port serveru" + +msgctxt "#30003" +msgid "Client name" +msgstr "Jméno klienta" + +msgctxt "#30004" +msgid "Connection timeout (s)" +msgstr "Timeout připojení (s)" + +msgctxt "#30005" +msgid "Username" +msgstr "Uživatelské jméno" + +msgctxt "#30006" +msgid "Password" +msgstr "Heslo" + +msgctxt "#30100" +msgid "Stream" +msgstr "Stream" + +msgctxt "#30102" +msgid "Stream format" +msgstr "Formát streamu" + +msgctxt "#30103" +msgid "Height" +msgstr "Výška" + +msgctxt "#30104" +msgid "Width" +msgstr "Šířka" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Datový tok" + +msgctxt "#30106" +msgid "Audio track" +msgstr "Zvuková stopa" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30108" +msgid "RTP" +msgstr "RTP" + +msgctxt "#30109" +msgid "HLS" +msgstr "HLS" + +msgctxt "#30110" +msgid "ASF" +msgstr "ASF" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Povolit časový posun" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Cesta k zásobníku časového posunu" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Pokročilé" + +msgctxt "#30201" +msgid "Use channel handle instead of client id" +msgstr "Použít \"channel handle\" místo id klienta" + +msgctxt "#30202" +msgid "Show information messages" +msgstr "Zobrazit informační zprávy " + +msgctxt "#32001" +msgid "Connected to DVBLink Server '%s'" +msgstr "Připojeno k DVBLink serveru '%s'" + +msgctxt "#32002" +msgid "Found '%d' channels" +msgstr "Nalezen/o kanál/ů" + +msgctxt "#32003" +msgid "Could not connect to DVBLink Server '%s' (Error code : %d)" +msgstr "Nelze se připojit k DVBLink server '%s' (Číslo chyby : %d)" + +msgctxt "#32004" +msgid "Could not get recordings (Error code : %d)" +msgstr "Nelze získat nahrávky (Číslo chyby : %d)" + +msgctxt "#32006" +msgid "Could not get timers(Error code : %d)" +msgstr "Nelze získat časovače (Číslo chyby : %d)" + +msgctxt "#32007" +msgid "Found %d EPG timers" +msgstr "Nalezen/o %d EPG časovač/ů" + +msgctxt "#32008" +msgid "Found %d manual timers" +msgstr "Nalezeno %d ručních časovačů" + +msgctxt "#32009" +msgid "Found %d recordings" +msgstr "Nalezeno %d nahrávek" + +msgctxt "#32010" +msgid "Could not get stream for channel %s (Error code : %d)" +msgstr "Nelze získat stream pro kanál %s (Číslo chyby : %d)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Danish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Danish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Danish/strings.po 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Danish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -1,17 +1,20 @@ # XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic msgid "" msgstr "" -"Project-Id-Version: XBMC-Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" -"POT-Creation-Date: 2012-12-11 20:52+0000\n" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Danish (http://www.transifex.com/projects/p/xbmc-main/language/da/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: da\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30000" msgid "General" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Dutch/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Dutch/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Dutch/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Dutch/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,141 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Dutch (http://www.transifex.com/projects/p/xbmc-main/language/nl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Algemeen" + +msgctxt "#30001" +msgid "Server Address" +msgstr "Server adres" + +msgctxt "#30002" +msgid "Server Port" +msgstr "Server poort" + +msgctxt "#30003" +msgid "Client name" +msgstr "Cliënt naam" + +msgctxt "#30004" +msgid "Connection timeout (s)" +msgstr "Connectie time-out (s)" + +msgctxt "#30005" +msgid "Username" +msgstr "Gebruikersnaam" + +msgctxt "#30006" +msgid "Password" +msgstr "Wachtwoord" + +msgctxt "#30100" +msgid "Stream" +msgstr "Stream" + +msgctxt "#30102" +msgid "Stream format" +msgstr "Stream formaat" + +msgctxt "#30103" +msgid "Height" +msgstr "Hoogte" + +msgctxt "#30104" +msgid "Width" +msgstr "Breedte" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Bitsnelheid" + +msgctxt "#30106" +msgid "Audio track" +msgstr "Muziek nummer" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30108" +msgid "RTP" +msgstr "RTP" + +msgctxt "#30109" +msgid "HLS" +msgstr "HLS" + +msgctxt "#30110" +msgid "ASF" +msgstr "ASF" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Inschakelen Tijdsprong" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Tijdsprong buffer locatie" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Geavanceerd" + +msgctxt "#30201" +msgid "Use channel handle instead of client id" +msgstr "Gebruik kanaal beheer in plaats van cliënt ID" + +msgctxt "#30202" +msgid "Show information messages" +msgstr "Toon informatieberichten" + +msgctxt "#32001" +msgid "Connected to DVBLink Server '%s'" +msgstr "Verbonden met de DVBLink Server '%s'" + +msgctxt "#32002" +msgid "Found '%d' channels" +msgstr "Gevonden '%d' kanalen" + +msgctxt "#32003" +msgid "Could not connect to DVBLink Server '%s' (Error code : %d)" +msgstr "Kan niet verbinden met de DVBLink server '%s' (Foutcode : %d)" + +msgctxt "#32004" +msgid "Could not get recordings (Error code : %d)" +msgstr "Kan geen opnamen verkrijgen (foutcode : %d)" + +msgctxt "#32006" +msgid "Could not get timers(Error code : %d)" +msgstr "Kan geen timers ontvangen (foutcode : %d)" + +msgctxt "#32007" +msgid "Found %d EPG timers" +msgstr "Gevonden %d EPG timers" + +msgctxt "#32008" +msgid "Found %d manual timers" +msgstr "Gevonden %d manuele timers" + +msgctxt "#32009" +msgid "Found %d recordings" +msgstr "Gevonden %d opnamen" + +msgctxt "#32010" +msgid "Could not get stream for channel %s (Error code : %d)" +msgstr "Kan geen stream ontvangen voor kanaal %s (foutcode : %d)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/English/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/English/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/English/strings.po 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/English/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -1,17 +1,20 @@ # XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic msgid "" msgstr "" -"Project-Id-Version: XBMC-Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" -"POT-Creation-Date: 2012-12-11 20:52+0000\n" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: English (http://www.transifex.com/projects/p/xbmc-main/language/en/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: en\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #settings labels @@ -95,7 +98,7 @@ msgid "Timeshift buffer path" msgstr "" -#empty strings from id 30111 to 30199 +#empty strings from id 30113 to 30199 msgctxt "#30200" msgid "Advanced" @@ -111,8 +114,8 @@ msgid "Show information messages" msgstr "" -#category labels #empty strings from id 30203 to 32000 +#category labels msgctxt "#32001" msgid "Connected to DVBLink Server '%s'" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/English (Australia)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/English (Australia)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/English (Australia)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/English (Australia)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,37 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: English (Australia) (http://www.transifex.com/projects/p/xbmc-main/language/en_AU/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: en_AU\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "General" + +msgctxt "#30005" +msgid "Username" +msgstr "Username" + +msgctxt "#30006" +msgid "Password" +msgstr "Password" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Bitrate" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Advanced" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/English (New Zealand)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/English (New Zealand)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/English (New Zealand)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/English (New Zealand)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,53 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: English (New Zealand) (http://www.transifex.com/projects/p/xbmc-main/language/en_NZ/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: en_NZ\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "General" + +msgctxt "#30005" +msgid "Username" +msgstr "Username" + +msgctxt "#30006" +msgid "Password" +msgstr "Password" + +msgctxt "#30100" +msgid "Stream" +msgstr "Stream" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Bitrate" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Enable Timeshift" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Timeshift buffer path" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Advanced" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/English (US)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/English (US)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/English (US)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/English (US)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,141 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: English (US) (http://www.transifex.com/projects/p/xbmc-main/language/en_US/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: en_US\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "General" + +msgctxt "#30001" +msgid "Server Address" +msgstr "Server Address" + +msgctxt "#30002" +msgid "Server Port" +msgstr "Server Port" + +msgctxt "#30003" +msgid "Client name" +msgstr "Client name" + +msgctxt "#30004" +msgid "Connection timeout (s)" +msgstr "Connection timeout (s)" + +msgctxt "#30005" +msgid "Username" +msgstr "Username" + +msgctxt "#30006" +msgid "Password" +msgstr "Password" + +msgctxt "#30100" +msgid "Stream" +msgstr "Stream" + +msgctxt "#30102" +msgid "Stream format" +msgstr "Stream format" + +msgctxt "#30103" +msgid "Height" +msgstr "Height" + +msgctxt "#30104" +msgid "Width" +msgstr "Width" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Bitrate" + +msgctxt "#30106" +msgid "Audio track" +msgstr "Audio track" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30108" +msgid "RTP" +msgstr "RTP" + +msgctxt "#30109" +msgid "HLS" +msgstr "HLS" + +msgctxt "#30110" +msgid "ASF" +msgstr "ASF" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Enable Timeshift" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Timeshift buffer path" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Advanced" + +msgctxt "#30201" +msgid "Use channel handle instead of client id" +msgstr "Use channel handle instead of client id" + +msgctxt "#30202" +msgid "Show information messages" +msgstr "Show information messages" + +msgctxt "#32001" +msgid "Connected to DVBLink Server '%s'" +msgstr "Connected to DVBLink Server '%s'" + +msgctxt "#32002" +msgid "Found '%d' channels" +msgstr "Found '%d' channels" + +msgctxt "#32003" +msgid "Could not connect to DVBLink Server '%s' (Error code : %d)" +msgstr "Could not connect to DVBLink Server '%s' (Error code : %d)" + +msgctxt "#32004" +msgid "Could not get recordings (Error code : %d)" +msgstr "Could not get recordings (Error code : %d)" + +msgctxt "#32006" +msgid "Could not get timers(Error code : %d)" +msgstr "Could not get timers(Error code : %d)" + +msgctxt "#32007" +msgid "Found %d EPG timers" +msgstr "Found %d EPG timers" + +msgctxt "#32008" +msgid "Found %d manual timers" +msgstr "Found %d manual timers" + +msgctxt "#32009" +msgid "Found %d recordings" +msgstr "Found %d recordings" + +msgctxt "#32010" +msgid "Could not get stream for channel %s (Error code : %d)" +msgstr "Could not get stream for channel %s (Error code : %d)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Esperanto/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Esperanto/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Esperanto/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Esperanto/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,33 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Esperanto (http://www.transifex.com/projects/p/xbmc-main/language/eo/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: eo\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Generalo" + +msgctxt "#30005" +msgid "Username" +msgstr "Uzulonomo" + +msgctxt "#30006" +msgid "Password" +msgstr "pasvorto" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Bit Rate" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Estonian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Estonian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Estonian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Estonian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,45 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Estonian (http://www.transifex.com/projects/p/xbmc-main/language/et/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: et\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Üldine" + +msgctxt "#30005" +msgid "Username" +msgstr "Kasutajanimi" + +msgctxt "#30006" +msgid "Password" +msgstr "Salasõna" + +msgctxt "#30100" +msgid "Stream" +msgstr "Voog" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Bitikiirus" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Põhjalikumad seaded" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Faroese/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Faroese/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Faroese/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Faroese/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,37 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Faroese (http://www.transifex.com/projects/p/xbmc-main/language/fo/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fo\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Vanligt" + +msgctxt "#30005" +msgid "Username" +msgstr "Brúkaranavn" + +msgctxt "#30006" +msgid "Password" +msgstr "Loyniorð" + +msgctxt "#30100" +msgid "Stream" +msgstr "Sending" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Bitrate" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Finnish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Finnish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Finnish/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Finnish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,45 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Finnish (http://www.transifex.com/projects/p/xbmc-main/language/fi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Yleiset" + +msgctxt "#30005" +msgid "Username" +msgstr "Käyttäjänimi" + +msgctxt "#30006" +msgid "Password" +msgstr "Salasana" + +msgctxt "#30100" +msgid "Stream" +msgstr "Katso" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Bittinopeus" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Lisäasetukset" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/French/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/French/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/French/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/French/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,101 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: French (http://www.transifex.com/projects/p/xbmc-main/language/fr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Général" + +msgctxt "#30001" +msgid "Server Address" +msgstr "Adresse du serveur" + +msgctxt "#30002" +msgid "Server Port" +msgstr "Port du serveur" + +msgctxt "#30003" +msgid "Client name" +msgstr "Nom du client" + +msgctxt "#30004" +msgid "Connection timeout (s)" +msgstr "Temporisation de connexion (s)" + +msgctxt "#30005" +msgid "Username" +msgstr "Nom d'utilisateur" + +msgctxt "#30006" +msgid "Password" +msgstr "Mot de passe" + +msgctxt "#30100" +msgid "Stream" +msgstr "Flux" + +msgctxt "#30102" +msgid "Stream format" +msgstr "Format du flux" + +msgctxt "#30103" +msgid "Height" +msgstr "Hauteur" + +msgctxt "#30104" +msgid "Width" +msgstr "Largeur" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Débit" + +msgctxt "#30106" +msgid "Audio track" +msgstr "Piste audio" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Activer le différé" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Chemin du tampon pour le différé" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Avancé" + +msgctxt "#30201" +msgid "Use channel handle instead of client id" +msgstr "Veuillez utiliser l'identifiant de la chaîne à la place de celui du client" + +msgctxt "#30202" +msgid "Show information messages" +msgstr "Afficher les messages d'informations" + +msgctxt "#32001" +msgid "Connected to DVBLink Server '%s'" +msgstr "Connexion rétablie au serveur '%s'" + +msgctxt "#32002" +msgid "Found '%d' channels" +msgstr "'%d' chaîne(s) trouvée(s)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/French (Canada)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/French (Canada)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/French (Canada)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/French (Canada)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,141 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: French (Canada) (http://www.transifex.com/projects/p/xbmc-main/language/fr_CA/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr_CA\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Général" + +msgctxt "#30001" +msgid "Server Address" +msgstr "Adresse du serveur" + +msgctxt "#30002" +msgid "Server Port" +msgstr "Port du serveur" + +msgctxt "#30003" +msgid "Client name" +msgstr "Nom du client" + +msgctxt "#30004" +msgid "Connection timeout (s)" +msgstr "Délai d'attente de connexion (s)" + +msgctxt "#30005" +msgid "Username" +msgstr "Nom d'utilisateur" + +msgctxt "#30006" +msgid "Password" +msgstr "Mot de passe" + +msgctxt "#30100" +msgid "Stream" +msgstr "Flux" + +msgctxt "#30102" +msgid "Stream format" +msgstr "Format du flux" + +msgctxt "#30103" +msgid "Height" +msgstr "Hauteur" + +msgctxt "#30104" +msgid "Width" +msgstr "Largeur" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Débit binaire" + +msgctxt "#30106" +msgid "Audio track" +msgstr "Piste audio" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30108" +msgid "RTP" +msgstr "RTP" + +msgctxt "#30109" +msgid "HLS" +msgstr "HLS" + +msgctxt "#30110" +msgid "ASF" +msgstr "ASF" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Activer le décalage temporel" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Chemin du tampon de décalage temporel" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Avancé" + +msgctxt "#30201" +msgid "Use channel handle instead of client id" +msgstr "Utiliser le descripteur de chaîne au lieu de l'ID du client" + +msgctxt "#30202" +msgid "Show information messages" +msgstr "Montrer les messages d'information" + +msgctxt "#32001" +msgid "Connected to DVBLink Server '%s'" +msgstr "Connecté au serveur DVBLink « %s »" + +msgctxt "#32002" +msgid "Found '%d' channels" +msgstr "« %d » chaînes trouvées" + +msgctxt "#32003" +msgid "Could not connect to DVBLink Server '%s' (Error code : %d)" +msgstr "Impossible de se connecter au serveur DVBLink « %s » (code d'erreur : %d)" + +msgctxt "#32004" +msgid "Could not get recordings (Error code : %d)" +msgstr "Impossible d'obtenir les enregistrements (code d'erreur : %d)" + +msgctxt "#32006" +msgid "Could not get timers(Error code : %d)" +msgstr "Impossible d'obtenir les minuteries (code d'erreur : %d)" + +msgctxt "#32007" +msgid "Found %d EPG timers" +msgstr "%d minuteries du GÉP trouvées" + +msgctxt "#32008" +msgid "Found %d manual timers" +msgstr "%d minuteries manuelles trouvées" + +msgctxt "#32009" +msgid "Found %d recordings" +msgstr "%d enregistrements trouvés" + +msgctxt "#32010" +msgid "Could not get stream for channel %s (Error code : %d)" +msgstr "Impossible d'obtenir le flux de la chaîne %s (code d'erreur : %d)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Galician/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Galician/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Galician/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Galician/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,141 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Galician (http://www.transifex.com/projects/p/xbmc-main/language/gl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: gl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Xeral" + +msgctxt "#30001" +msgid "Server Address" +msgstr "Enderezo do Servidor" + +msgctxt "#30002" +msgid "Server Port" +msgstr "Porto do Servidor" + +msgctxt "#30003" +msgid "Client name" +msgstr "Nome do cliente" + +msgctxt "#30004" +msgid "Connection timeout (s)" +msgstr "Tempo(s) de espera" + +msgctxt "#30005" +msgid "Username" +msgstr "Nome de usuario" + +msgctxt "#30006" +msgid "Password" +msgstr "Contrasinal" + +msgctxt "#30100" +msgid "Stream" +msgstr "Fluxo" + +msgctxt "#30102" +msgid "Stream format" +msgstr "Formato do fluxo" + +msgctxt "#30103" +msgid "Height" +msgstr "Alto" + +msgctxt "#30104" +msgid "Width" +msgstr "Ancho" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Taxe de bits" + +msgctxt "#30106" +msgid "Audio track" +msgstr "Pista de audio" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30108" +msgid "RTP" +msgstr "RTP" + +msgctxt "#30109" +msgid "HLS" +msgstr "HLS" + +msgctxt "#30110" +msgid "ASF" +msgstr "ASF" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Habilitar Timeshift" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Camiño do búfer do Timeshift" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Avanzado" + +msgctxt "#30201" +msgid "Use channel handle instead of client id" +msgstr "Empregar o manexador da canle no canto do id do cliente" + +msgctxt "#30202" +msgid "Show information messages" +msgstr "Amosar mensaxes de información" + +msgctxt "#32001" +msgid "Connected to DVBLink Server '%s'" +msgstr "Conectado ao Servidor DVBLink '%s'" + +msgctxt "#32002" +msgid "Found '%d' channels" +msgstr "Atopadas '%d' canles" + +msgctxt "#32003" +msgid "Could not connect to DVBLink Server '%s' (Error code : %d)" +msgstr "Non se puido conectar co Servidor DVBLink '%s' (códido do erro: %d)" + +msgctxt "#32004" +msgid "Could not get recordings (Error code : %d)" +msgstr "Non se puideron obter as gravacións (código do erro: %d)" + +msgctxt "#32006" +msgid "Could not get timers(Error code : %d)" +msgstr "Non se puideron obter os temporizadores (código do erro: %d)" + +msgctxt "#32007" +msgid "Found %d EPG timers" +msgstr "Atopados %d temporizadores" + +msgctxt "#32008" +msgid "Found %d manual timers" +msgstr "Atopados %d temporizadores manuais" + +msgctxt "#32009" +msgid "Found %d recordings" +msgstr "Atopadas %d gravacións" + +msgctxt "#32010" +msgid "Could not get stream for channel %s (Error code : %d)" +msgstr "Non foi posíbel obter o fluxo da canle %s (código do erro: %d)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Georgian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Georgian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Georgian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Georgian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,41 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Georgian (http://www.transifex.com/projects/p/xbmc-main/language/ka/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ka\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30000" +msgid "General" +msgstr "მთავარი" + +msgctxt "#30005" +msgid "Username" +msgstr "მომხმარებელი" + +msgctxt "#30006" +msgid "Password" +msgstr "პაროლი" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "დროში გადანაცვლების ჩართვა" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "დროში გადანაცვლების ბუფერის მისამართი" + +msgctxt "#30200" +msgid "Advanced" +msgstr "დამატებით" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/German/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/German/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/German/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/German/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,141 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: German (http://www.transifex.com/projects/p/xbmc-main/language/de/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Allgemein" + +msgctxt "#30001" +msgid "Server Address" +msgstr "Serveradresse" + +msgctxt "#30002" +msgid "Server Port" +msgstr "Serverport" + +msgctxt "#30003" +msgid "Client name" +msgstr "Clientname" + +msgctxt "#30004" +msgid "Connection timeout (s)" +msgstr "Zeitüberschreitung der Verbindung (s)" + +msgctxt "#30005" +msgid "Username" +msgstr "Benutzername" + +msgctxt "#30006" +msgid "Password" +msgstr "Passwort" + +msgctxt "#30100" +msgid "Stream" +msgstr "Streamen" + +msgctxt "#30102" +msgid "Stream format" +msgstr "Streamformat" + +msgctxt "#30103" +msgid "Height" +msgstr "Höhe" + +msgctxt "#30104" +msgid "Width" +msgstr "Breite" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Bitrate" + +msgctxt "#30106" +msgid "Audio track" +msgstr "Audiospur" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30108" +msgid "RTP" +msgstr "RTP" + +msgctxt "#30109" +msgid "HLS" +msgstr "HLS" + +msgctxt "#30110" +msgid "ASF" +msgstr "ASF" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Timeshift aktivieren" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Timeshift Puffer-Pfad" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Erweitert" + +msgctxt "#30201" +msgid "Use channel handle instead of client id" +msgstr "Senderidentifikator anstatt Client-Kennung verwenden" + +msgctxt "#30202" +msgid "Show information messages" +msgstr "Informationsmeldungen anzeigen" + +msgctxt "#32001" +msgid "Connected to DVBLink Server '%s'" +msgstr "Verbunden mit dem DVBLink-Server '%s'" + +msgctxt "#32002" +msgid "Found '%d' channels" +msgstr "'%d' Sender gefunden" + +msgctxt "#32003" +msgid "Could not connect to DVBLink Server '%s' (Error code : %d)" +msgstr "Konnte nicht mit dem DVBLink-Server '%s' verbinden (Fehlercode : %d)" + +msgctxt "#32004" +msgid "Could not get recordings (Error code : %d)" +msgstr "Aufnahmen konnten nicht abgerufen werden (Fehlercode : %d)" + +msgctxt "#32006" +msgid "Could not get timers(Error code : %d)" +msgstr "Timer konnten nicht abgerufen werden (Fehlercode : %d)" + +msgctxt "#32007" +msgid "Found %d EPG timers" +msgstr "%d EPG-Timer gefunden" + +msgctxt "#32008" +msgid "Found %d manual timers" +msgstr "%d manuelle Timer gefunden" + +msgctxt "#32009" +msgid "Found %d recordings" +msgstr "%d Aufnahmen gefunden" + +msgctxt "#32010" +msgid "Could not get stream for channel %s (Error code : %d)" +msgstr "Stream für Sender %s konnte nicht abgerufen werden (Fehlercode : %d)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Greek/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Greek/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Greek/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Greek/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,53 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Greek (http://www.transifex.com/projects/p/xbmc-main/language/el/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: el\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Γενικά" + +msgctxt "#30005" +msgid "Username" +msgstr "Όνομα χρήστη" + +msgctxt "#30006" +msgid "Password" +msgstr "Κωδικός πρόσβασης" + +msgctxt "#30100" +msgid "Stream" +msgstr "Ροή πολυμέσων" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Bitrate" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Ενεργοποίηση Timeshift" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Διαδρομή προσωρινής αποθήκευσης Timeshift" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Για προχωρημένους" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Haitian (Haitian Creole)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Haitian (Haitian Creole)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Haitian (Haitian Creole)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Haitian (Haitian Creole)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Haitian (Haitian Creole) (http://www.transifex.com/projects/p/xbmc-main/language/ht/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ht\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30005" +msgid "Username" +msgstr "nom itilizateur" + +msgctxt "#30006" +msgid "Password" +msgstr "mo de pas" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Hebrew/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Hebrew/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Hebrew/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Hebrew/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,141 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Hebrew (http://www.transifex.com/projects/p/xbmc-main/language/he/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: he\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "כללי" + +msgctxt "#30001" +msgid "Server Address" +msgstr "כתובת שרת" + +msgctxt "#30002" +msgid "Server Port" +msgstr "יציאת שרת" + +msgctxt "#30003" +msgid "Client name" +msgstr "שם לקוח" + +msgctxt "#30004" +msgid "Connection timeout (s)" +msgstr "זמן לניסיון חיבור (שניות)" + +msgctxt "#30005" +msgid "Username" +msgstr "שם משתמש" + +msgctxt "#30006" +msgid "Password" +msgstr "סיסמא" + +msgctxt "#30100" +msgid "Stream" +msgstr "זרימה" + +msgctxt "#30102" +msgid "Stream format" +msgstr "מבנה זרימה" + +msgctxt "#30103" +msgid "Height" +msgstr "גובה" + +msgctxt "#30104" +msgid "Width" +msgstr "רוחב" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "קצב ביטים" + +msgctxt "#30106" +msgid "Audio track" +msgstr "רצועת שמע" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30108" +msgid "RTP" +msgstr "RTP" + +msgctxt "#30109" +msgid "HLS" +msgstr "HLS" + +msgctxt "#30110" +msgid "ASF" +msgstr "ASF" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "אפשר תזוזה בזמן" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "נתיב חוצץ תזוזה בזמן" + +msgctxt "#30200" +msgid "Advanced" +msgstr "מתקדם" + +msgctxt "#30201" +msgid "Use channel handle instead of client id" +msgstr "השתמש ב-handle ערוץ במקום קליינט id" + +msgctxt "#30202" +msgid "Show information messages" +msgstr "הצג הודעות מידע" + +msgctxt "#32001" +msgid "Connected to DVBLink Server '%s'" +msgstr "מחובר לשרת DVBLink '%s'" + +msgctxt "#32002" +msgid "Found '%d' channels" +msgstr "נמצאו '%d' ערוצים" + +msgctxt "#32003" +msgid "Could not connect to DVBLink Server '%s' (Error code : %d)" +msgstr "לא היתה אפשרות להתחבר לשרת DVBLink '%s' (קוד שגיאה : %d)" + +msgctxt "#32004" +msgid "Could not get recordings (Error code : %d)" +msgstr "לא היתה אפשרות לקבל הקלטות (קוד שגיאה : %d)" + +msgctxt "#32006" +msgid "Could not get timers(Error code : %d)" +msgstr "לא היתה אפשרות לקבל תזמונים (קוד שגיאה : %d)" + +msgctxt "#32007" +msgid "Found %d EPG timers" +msgstr "נמצאו %d תזמוני לוח שידורים" + +msgctxt "#32008" +msgid "Found %d manual timers" +msgstr "נמצאו %d תזמונים ידניים" + +msgctxt "#32009" +msgid "Found %d recordings" +msgstr "נמצאו %d הקלטות" + +msgctxt "#32010" +msgid "Could not get stream for channel %s (Error code : %d)" +msgstr "לא היתה אפשרות לקבל הזרמה לערוץ %s (קוד שגיאה : %d)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Hindi (Devanagiri)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Hindi (Devanagiri)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Hindi (Devanagiri)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Hindi (Devanagiri)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,33 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Hindi (Devanagiri) (http://www.transifex.com/projects/p/xbmc-main/language/hi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "सामान्य" + +msgctxt "#30005" +msgid "Username" +msgstr "उपयोगकर्ता नाम" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "बिट दर" + +msgctxt "#30200" +msgid "Advanced" +msgstr "उन्नत" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Hungarian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Hungarian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Hungarian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Hungarian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,141 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Hungarian (http://www.transifex.com/projects/p/xbmc-main/language/hu/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Általános" + +msgctxt "#30001" +msgid "Server Address" +msgstr "Kiszolgáló Címe" + +msgctxt "#30002" +msgid "Server Port" +msgstr "Kiszolgáló Port" + +msgctxt "#30003" +msgid "Client name" +msgstr "Kliens Név" + +msgctxt "#30004" +msgid "Connection timeout (s)" +msgstr "A kapcsolat időtúllépési értéke (mp.)" + +msgctxt "#30005" +msgid "Username" +msgstr "Felhasználónév" + +msgctxt "#30006" +msgid "Password" +msgstr "Jelszó" + +msgctxt "#30100" +msgid "Stream" +msgstr "Adatfolyam" + +msgctxt "#30102" +msgid "Stream format" +msgstr "Stream formátum" + +msgctxt "#30103" +msgid "Height" +msgstr "Magasság" + +msgctxt "#30104" +msgid "Width" +msgstr "Szélesség" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Bitarány" + +msgctxt "#30106" +msgid "Audio track" +msgstr "Hangsáv" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30108" +msgid "RTP" +msgstr "RTP" + +msgctxt "#30109" +msgid "HLS" +msgstr "HLS" + +msgctxt "#30110" +msgid "ASF" +msgstr "ASF" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Csúsztatott élőkép engedélyezése" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Csúsztatott élőkép tároló útvonala" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Haladó" + +msgctxt "#30201" +msgid "Use channel handle instead of client id" +msgstr "Csatorna használata kliensazonosító helyett" + +msgctxt "#30202" +msgid "Show information messages" +msgstr "Információs üzenetek mutatása" + +msgctxt "#32001" +msgid "Connected to DVBLink Server '%s'" +msgstr "Kapcsolódva a DVBLink Kiszolgálóhoz '%s'" + +msgctxt "#32002" +msgid "Found '%d' channels" +msgstr " '%d' csatorna megtalálva" + +msgctxt "#32003" +msgid "Could not connect to DVBLink Server '%s' (Error code : %d)" +msgstr "Nem lehet kapcsolódni a DVBLink Kiszolgálóhoz '%s' (Hibakód : %d)" + +msgctxt "#32004" +msgid "Could not get recordings (Error code : %d)" +msgstr "Nem találhatóak felvételek (Hibakód : %d)" + +msgctxt "#32006" +msgid "Could not get timers(Error code : %d)" +msgstr "Nem találhatóak időzítők (Hibakód : %d)" + +msgctxt "#32007" +msgid "Found %d EPG timers" +msgstr "%d talált EPG időzítő" + +msgctxt "#32008" +msgid "Found %d manual timers" +msgstr "%d talált kézi időzítő" + +msgctxt "#32009" +msgid "Found %d recordings" +msgstr "%d talált felvétel" + +msgctxt "#32010" +msgid "Could not get stream for channel %s (Error code : %d)" +msgstr "Nem található stream a %s csatornához (Hibakód : %d)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Icelandic/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Icelandic/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Icelandic/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Icelandic/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,141 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Icelandic (http://www.transifex.com/projects/p/xbmc-main/language/is/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: is\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Almennt" + +msgctxt "#30001" +msgid "Server Address" +msgstr "Netfang miðlara" + +msgctxt "#30002" +msgid "Server Port" +msgstr "Hlið miðlara" + +msgctxt "#30003" +msgid "Client name" +msgstr "Nafn biðlara" + +msgctxt "#30004" +msgid "Connection timeout (s)" +msgstr "Tengitími rennur út (s)" + +msgctxt "#30005" +msgid "Username" +msgstr "Notandanafn" + +msgctxt "#30006" +msgid "Password" +msgstr "Lykilorð" + +msgctxt "#30100" +msgid "Stream" +msgstr "Straumur" + +msgctxt "#30102" +msgid "Stream format" +msgstr "Gerð straums" + +msgctxt "#30103" +msgid "Height" +msgstr "Hæð" + +msgctxt "#30104" +msgid "Width" +msgstr "Breidd" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Bitahraði" + +msgctxt "#30106" +msgid "Audio track" +msgstr "Hljóðrás" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30108" +msgid "RTP" +msgstr "RTP" + +msgctxt "#30109" +msgid "HLS" +msgstr "HLS" + +msgctxt "#30110" +msgid "ASF" +msgstr "ASF" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Virkja Tímahliðrun" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Slóð á biðminni Tímahliðrunar" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Ítarlegt" + +msgctxt "#30201" +msgid "Use channel handle instead of client id" +msgstr "Nota upplýsingar rásar í staðinn fyrir kenni biðlara" + +msgctxt "#30202" +msgid "Show information messages" +msgstr "Sýna upplýsingaskilaboð" + +msgctxt "#32001" +msgid "Connected to DVBLink Server '%s'" +msgstr "Tengdur við DVBLink miðlara '%s'" + +msgctxt "#32002" +msgid "Found '%d' channels" +msgstr "Fann '%d' rásir" + +msgctxt "#32003" +msgid "Could not connect to DVBLink Server '%s' (Error code : %d)" +msgstr "Gat ekki tengst við DVBLink miðlara '%s' (Villukóði : %d)" + +msgctxt "#32004" +msgid "Could not get recordings (Error code : %d)" +msgstr "Gat ekki náð í upptökur (Villukóði : %d)" + +msgctxt "#32006" +msgid "Could not get timers(Error code : %d)" +msgstr "Gat ekki náð í tímastillingar (Villukóði : %d)" + +msgctxt "#32007" +msgid "Found %d EPG timers" +msgstr "Fann %d tímastillingar frá rafrænum dagskrárvísi" + +msgctxt "#32008" +msgid "Found %d manual timers" +msgstr "Fann %d handvirkar tímastillingar" + +msgctxt "#32009" +msgid "Found %d recordings" +msgstr "Fann %d upptökur" + +msgctxt "#32010" +msgid "Could not get stream for channel %s (Error code : %d)" +msgstr "Gat ekki náð í straum fyrir rásina %s (Villukóði : %d)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Indonesian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Indonesian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Indonesian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Indonesian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,53 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Indonesian (http://www.transifex.com/projects/p/xbmc-main/language/id/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: id\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30000" +msgid "General" +msgstr "Umum" + +msgctxt "#30005" +msgid "Username" +msgstr "NamaPengguna" + +msgctxt "#30006" +msgid "Password" +msgstr "Password" + +msgctxt "#30100" +msgid "Stream" +msgstr "Stream" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Bit Rate" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Aktifkan Timeshift" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Path penyangga Timeshift" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Tingkat Lanjut" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Italian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Italian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Italian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Italian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,141 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Italian (http://www.transifex.com/projects/p/xbmc-main/language/it/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: it\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Generale" + +msgctxt "#30001" +msgid "Server Address" +msgstr "Indirizzo server" + +msgctxt "#30002" +msgid "Server Port" +msgstr "Porta server" + +msgctxt "#30003" +msgid "Client name" +msgstr "Nome client" + +msgctxt "#30004" +msgid "Connection timeout (s)" +msgstr "Tempo per la connessione (s)" + +msgctxt "#30005" +msgid "Username" +msgstr "Nome utente" + +msgctxt "#30006" +msgid "Password" +msgstr "Password" + +msgctxt "#30100" +msgid "Stream" +msgstr "Stream" + +msgctxt "#30102" +msgid "Stream format" +msgstr "Formato stream" + +msgctxt "#30103" +msgid "Height" +msgstr "Altezza" + +msgctxt "#30104" +msgid "Width" +msgstr "Larghezza" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Bitrate" + +msgctxt "#30106" +msgid "Audio track" +msgstr "Traccia audio" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30108" +msgid "RTP" +msgstr "RTP" + +msgctxt "#30109" +msgid "HLS" +msgstr "HLS" + +msgctxt "#30110" +msgid "ASF" +msgstr "ASF" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Abilita Timeshift" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Percorso per il buffer del timeshift" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Avanzate" + +msgctxt "#30201" +msgid "Use channel handle instead of client id" +msgstr "Usa handle canale al posto dell'id canale" + +msgctxt "#30202" +msgid "Show information messages" +msgstr "Mostra messaggi di informazione" + +msgctxt "#32001" +msgid "Connected to DVBLink Server '%s'" +msgstr "Connesso al server DVBLink '%s'" + +msgctxt "#32002" +msgid "Found '%d' channels" +msgstr "Trovato '%d' canali" + +msgctxt "#32003" +msgid "Could not connect to DVBLink Server '%s' (Error code : %d)" +msgstr "Non posso connettermi al server DVBLink '%s' (Codice d'errore: %d)" + +msgctxt "#32004" +msgid "Could not get recordings (Error code : %d)" +msgstr "Non posso ottenere le registrazioni (Codice d'errore: %d)" + +msgctxt "#32006" +msgid "Could not get timers(Error code : %d)" +msgstr "Non posso ottenere i timer (Codice d'errore: %d)" + +msgctxt "#32007" +msgid "Found %d EPG timers" +msgstr "Trovati %d timer EPG" + +msgctxt "#32008" +msgid "Found %d manual timers" +msgstr "Trovati %d timer manuali" + +msgctxt "#32009" +msgid "Found %d recordings" +msgstr "Trovato %d registrazioni" + +msgctxt "#32010" +msgid "Could not get stream for channel %s (Error code : %d)" +msgstr "Non posso ottenere lo stream per il canale %s (Codice d'errore: %d)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Japanese/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Japanese/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Japanese/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Japanese/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,141 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Japanese (http://www.transifex.com/projects/p/xbmc-main/language/ja/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ja\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30000" +msgid "General" +msgstr "一般" + +msgctxt "#30001" +msgid "Server Address" +msgstr "サーバのアドレス" + +msgctxt "#30002" +msgid "Server Port" +msgstr "サーバのポート番号" + +msgctxt "#30003" +msgid "Client name" +msgstr "クライアント名" + +msgctxt "#30004" +msgid "Connection timeout (s)" +msgstr "接続タイムアウト (秒)" + +msgctxt "#30005" +msgid "Username" +msgstr "ユーザー名" + +msgctxt "#30006" +msgid "Password" +msgstr "パスワード" + +msgctxt "#30100" +msgid "Stream" +msgstr "ストリーム" + +msgctxt "#30102" +msgid "Stream format" +msgstr "ストリーム形式" + +msgctxt "#30103" +msgid "Height" +msgstr "高さ" + +msgctxt "#30104" +msgid "Width" +msgstr "幅" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "ビットレート" + +msgctxt "#30106" +msgid "Audio track" +msgstr "オーディオトラック" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30108" +msgid "RTP" +msgstr "RTP" + +msgctxt "#30109" +msgid "HLS" +msgstr "HLS" + +msgctxt "#30110" +msgid "ASF" +msgstr "ASF" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "タイムシフトを有効" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "タイムシフト用バッファのパス" + +msgctxt "#30200" +msgid "Advanced" +msgstr "高度な設定" + +msgctxt "#30201" +msgid "Use channel handle instead of client id" +msgstr "クライアントID の代わりに使用するチャンネルハンドル" + +msgctxt "#30202" +msgid "Show information messages" +msgstr "情報メッセージを表示" + +msgctxt "#32001" +msgid "Connected to DVBLink Server '%s'" +msgstr "DVBLink サーバ '%s' に接続" + +msgctxt "#32002" +msgid "Found '%d' channels" +msgstr "'%d' チャンネルがみつかりました" + +msgctxt "#32003" +msgid "Could not connect to DVBLink Server '%s' (Error code : %d)" +msgstr "DVBLink サーバ '%s' に接続できませんでした (エラーコード : %d)" + +msgctxt "#32004" +msgid "Could not get recordings (Error code : %d)" +msgstr "録画が取得できませんでした (エラーコード : %d)" + +msgctxt "#32006" +msgid "Could not get timers(Error code : %d)" +msgstr "タイマーが取得できませんでした (エラーコード : %d)" + +msgctxt "#32007" +msgid "Found %d EPG timers" +msgstr "EPG タイマー %d がみつかりました" + +msgctxt "#32008" +msgid "Found %d manual timers" +msgstr "手動タイマー %d がみつかりました" + +msgctxt "#32009" +msgid "Found %d recordings" +msgstr "録画 %d がみつかりました" + +msgctxt "#32010" +msgid "Could not get stream for channel %s (Error code : %d)" +msgstr "チャンネル %s のストリームが取得できませんでした (エラーコード : %d)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Korean/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Korean/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Korean/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Korean/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,53 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Korean (http://www.transifex.com/projects/p/xbmc-main/language/ko/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ko\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30000" +msgid "General" +msgstr "일반" + +msgctxt "#30005" +msgid "Username" +msgstr "사용자명" + +msgctxt "#30006" +msgid "Password" +msgstr "비밀번호" + +msgctxt "#30100" +msgid "Stream" +msgstr "스트림" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "비트레이트" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "타임시프트 사용" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "타임시프트 버퍼 경로" + +msgctxt "#30200" +msgid "Advanced" +msgstr "고급" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Latvian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Latvian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Latvian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Latvian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,53 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Latvian (http://www.transifex.com/projects/p/xbmc-main/language/lv/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lv\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Vispārīgi" + +msgctxt "#30005" +msgid "Username" +msgstr "LIetotājvārds" + +msgctxt "#30006" +msgid "Password" +msgstr "Parole" + +msgctxt "#30100" +msgid "Stream" +msgstr "Plūsma" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Bitu ātrums" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Ieslēgt laika nobīdi" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Laika nobīdes bufera ceļš" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Papildus" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Lithuanian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Lithuanian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Lithuanian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Lithuanian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,141 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Lithuanian (http://www.transifex.com/projects/p/xbmc-main/language/lt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lt\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Pagrindinis" + +msgctxt "#30001" +msgid "Server Address" +msgstr "Serverio adresas" + +msgctxt "#30002" +msgid "Server Port" +msgstr "Serverio prievadas" + +msgctxt "#30003" +msgid "Client name" +msgstr "Kliento vardas" + +msgctxt "#30004" +msgid "Connection timeout (s)" +msgstr "Prisijungimo laukimo laikas (s)" + +msgctxt "#30005" +msgid "Username" +msgstr "Vartotojo vardas" + +msgctxt "#30006" +msgid "Password" +msgstr "Slaptažodis" + +msgctxt "#30100" +msgid "Stream" +msgstr "Srautas" + +msgctxt "#30102" +msgid "Stream format" +msgstr "Srauto formatas" + +msgctxt "#30103" +msgid "Height" +msgstr "Aukštis" + +msgctxt "#30104" +msgid "Width" +msgstr "Plotis" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Pralaidumas" + +msgctxt "#30106" +msgid "Audio track" +msgstr "Garso takelis" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30108" +msgid "RTP" +msgstr "RTP" + +msgctxt "#30109" +msgid "HLS" +msgstr "HLS" + +msgctxt "#30110" +msgid "ASF" +msgstr "ASF" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Įjungti laiko poslinkį" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Laiko poslinkio buferio kelias" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Išplėstiniai" + +msgctxt "#30201" +msgid "Use channel handle instead of client id" +msgstr "Naudoti kanalo valdymą vietoj kliento id" + +msgctxt "#30202" +msgid "Show information messages" +msgstr "Rodyti informacinius pranešimus" + +msgctxt "#32001" +msgid "Connected to DVBLink Server '%s'" +msgstr "Prisijungta prie DVBLink serverio '%s'" + +msgctxt "#32002" +msgid "Found '%d' channels" +msgstr "Rasta kanalų: '%d'" + +msgctxt "#32003" +msgid "Could not connect to DVBLink Server '%s' (Error code : %d)" +msgstr "Neįmanoma prisijungti prie DVBLink serverio '%s' (Klaidos kodas : %d)" + +msgctxt "#32004" +msgid "Could not get recordings (Error code : %d)" +msgstr "Neįmanoma gauti įrašų (Klaidos kodas : %d)" + +msgctxt "#32006" +msgid "Could not get timers(Error code : %d)" +msgstr "Neįmanoma gauti laikmačių (Klaidos kodas : %d)" + +msgctxt "#32007" +msgid "Found %d EPG timers" +msgstr "Rasta EPG laikmačių: %d" + +msgctxt "#32008" +msgid "Found %d manual timers" +msgstr "Rasta rankinių laikmačių: %d" + +msgctxt "#32009" +msgid "Found %d recordings" +msgstr "Rasta įrašų: %d" + +msgctxt "#32010" +msgid "Could not get stream for channel %s (Error code : %d)" +msgstr "Neįmanoma gauti kanalo %s srauto (Klaidos kodas : %d)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Macedonian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Macedonian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Macedonian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Macedonian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,41 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Macedonian (http://www.transifex.com/projects/p/xbmc-main/language/mk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: mk\n" +"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" + +msgctxt "#30000" +msgid "General" +msgstr "Општо" + +msgctxt "#30005" +msgid "Username" +msgstr "Корисничко име" + +msgctxt "#30006" +msgid "Password" +msgstr "Лозинка" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Брзина на проток" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Напредно" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Malay/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Malay/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Malay/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Malay/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,137 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Malay (http://www.transifex.com/projects/p/xbmc-main/language/ms/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ms\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30000" +msgid "General" +msgstr "Am" + +msgctxt "#30001" +msgid "Server Address" +msgstr "Alamat Pelayan" + +msgctxt "#30002" +msgid "Server Port" +msgstr "Port Pelayan" + +msgctxt "#30003" +msgid "Client name" +msgstr "Nama klien" + +msgctxt "#30004" +msgid "Connection timeout (s)" +msgstr "Sambungan terhenti" + +msgctxt "#30005" +msgid "Username" +msgstr "Nama Pengguna" + +msgctxt "#30006" +msgid "Password" +msgstr "Kata Laluan" + +msgctxt "#30100" +msgid "Stream" +msgstr "Strim" + +msgctxt "#30102" +msgid "Stream format" +msgstr "Format strim" + +msgctxt "#30103" +msgid "Height" +msgstr "Tinggi" + +msgctxt "#30104" +msgid "Width" +msgstr "Lebara" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Kadar bit" + +msgctxt "#30106" +msgid "Audio track" +msgstr "Runut audio" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30108" +msgid "RTP" +msgstr "RTP" + +msgctxt "#30109" +msgid "HLS" +msgstr "HLS" + +msgctxt "#30110" +msgid "ASF" +msgstr "ASF" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Benarkan Anjak Masa" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Laluan penimbal Anjak Masa" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Lanjutan" + +msgctxt "#30202" +msgid "Show information messages" +msgstr "Papar mesej maklumat" + +msgctxt "#32001" +msgid "Connected to DVBLink Server '%s'" +msgstr "Bersambung ke Pelayan DVBLink \"%s'" + +msgctxt "#32002" +msgid "Found '%d' channels" +msgstr "Jumpa '%d' saluran" + +msgctxt "#32003" +msgid "Could not connect to DVBLink Server '%s' (Error code : %d)" +msgstr "Tidak dapat bersambung ke Pelayan DVBLink '%s' (Kod ralat : %d)" + +msgctxt "#32004" +msgid "Could not get recordings (Error code : %d)" +msgstr "Tidak dapat rakaman (Kod ralat : %d)" + +msgctxt "#32006" +msgid "Could not get timers(Error code : %d)" +msgstr "Tidak dapat pemasa (Kod ralat : %d)" + +msgctxt "#32007" +msgid "Found %d EPG timers" +msgstr "Jumpa %d pemasa EPG" + +msgctxt "#32008" +msgid "Found %d manual timers" +msgstr "Jumpa %d pemasa manual" + +msgctxt "#32009" +msgid "Found %d recordings" +msgstr "Jumpa %d rakaman" + +msgctxt "#32010" +msgid "Could not get stream for channel %s (Error code : %d)" +msgstr "Tidak dapat strim untuk saluran %s (Kod ralat : %d)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Malayalam/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Malayalam/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Malayalam/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Malayalam/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,21 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Malayalam (http://www.transifex.com/projects/p/xbmc-main/language/ml/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ml\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "പോതുവായത്" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Maltese/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Maltese/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Maltese/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Maltese/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,33 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Maltese (http://www.transifex.com/projects/p/xbmc-main/language/mt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: mt\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n==0 || ( n%100>1 && n%100<11) ? 1 : (n%100>10 && n%100<20 ) ? 2 : 3);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Ġenerali" + +msgctxt "#30005" +msgid "Username" +msgstr "Username" + +msgctxt "#30006" +msgid "Password" +msgstr "Sigriet" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Bit Rate" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Maori/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Maori/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Maori/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Maori/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,45 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Maori (http://www.transifex.com/projects/p/xbmc-main/language/mi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: mi\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Āhuawhānui" + +msgctxt "#30005" +msgid "Username" +msgstr "Ingoa kaiwhakamahi" + +msgctxt "#30006" +msgid "Password" +msgstr "Kupuhipa" + +msgctxt "#30100" +msgid "Stream" +msgstr "Roma" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Bitrate" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Arā Atu Anō" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Norwegian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Norwegian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Norwegian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Norwegian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,141 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Norwegian (http://www.transifex.com/projects/p/xbmc-main/language/no/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: no\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Generelt" + +msgctxt "#30001" +msgid "Server Address" +msgstr "Tjeneradresse" + +msgctxt "#30002" +msgid "Server Port" +msgstr "Tjenerport" + +msgctxt "#30003" +msgid "Client name" +msgstr "Klientnavn" + +msgctxt "#30004" +msgid "Connection timeout (s)" +msgstr "Tilkoblingsavbrudd (s)" + +msgctxt "#30005" +msgid "Username" +msgstr "Brukernavn" + +msgctxt "#30006" +msgid "Password" +msgstr "Passord" + +msgctxt "#30100" +msgid "Stream" +msgstr "Strøm" + +msgctxt "#30102" +msgid "Stream format" +msgstr "Strømmeformat" + +msgctxt "#30103" +msgid "Height" +msgstr "Høyde" + +msgctxt "#30104" +msgid "Width" +msgstr "Bredde" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Bitrate" + +msgctxt "#30106" +msgid "Audio track" +msgstr "Lydspor" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30108" +msgid "RTP" +msgstr "RTP" + +msgctxt "#30109" +msgid "HLS" +msgstr "HLS" + +msgctxt "#30110" +msgid "ASF" +msgstr "ASF" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Aktiver tidsforskyvning" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Sti for tidsforskyvningbuffer" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Avansert" + +msgctxt "#30201" +msgid "Use channel handle instead of client id" +msgstr "Bruk kanalnavn i stedet for klient-ID" + +msgctxt "#30202" +msgid "Show information messages" +msgstr "Vis informasjonsbeskjeder" + +msgctxt "#32001" +msgid "Connected to DVBLink Server '%s'" +msgstr "Koblet til DVBLink-tjener ‘%s’" + +msgctxt "#32002" +msgid "Found '%d' channels" +msgstr "Fant ‘%d’ kanaler" + +msgctxt "#32003" +msgid "Could not connect to DVBLink Server '%s' (Error code : %d)" +msgstr "Kunne ikke koble til DVBLink-tjener ‘%s’ (Feilkode : %d)" + +msgctxt "#32004" +msgid "Could not get recordings (Error code : %d)" +msgstr "Kunne ikke hente opptak (Feilkode : %d)" + +msgctxt "#32006" +msgid "Could not get timers(Error code : %d)" +msgstr "Kunne ikke hente tidsur (Feilkode : %d)" + +msgctxt "#32007" +msgid "Found %d EPG timers" +msgstr "Fant %d EPG-tidsur" + +msgctxt "#32008" +msgid "Found %d manual timers" +msgstr "Fant %d manuelle tidsur" + +msgctxt "#32009" +msgid "Found %d recordings" +msgstr "Fant %d opptak" + +msgctxt "#32010" +msgid "Could not get stream for channel %s (Error code : %d)" +msgstr "Kunne ikke hente kanalstrøm %s (Feilkode : %d)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Ossetic/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Ossetic/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Ossetic/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Ossetic/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,21 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Ossetic (http://www.transifex.com/projects/p/xbmc-main/language/os/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: os\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Сӕйраг" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Persian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Persian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Persian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Persian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,33 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Persian (http://www.transifex.com/projects/p/xbmc-main/language/fa/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fa\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30000" +msgid "General" +msgstr "عمومی" + +msgctxt "#30005" +msgid "Username" +msgstr "نام کاربری" + +msgctxt "#30006" +msgid "Password" +msgstr "کلمه عبور" + +msgctxt "#30200" +msgid "Advanced" +msgstr "پیشرفته" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Persian (Iran)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Persian (Iran)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Persian (Iran)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Persian (Iran)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,33 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Persian (Iran) (http://www.transifex.com/projects/p/xbmc-main/language/fa_IR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fa_IR\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30000" +msgid "General" +msgstr "عمومی" + +msgctxt "#30005" +msgid "Username" +msgstr "نام کاربری" + +msgctxt "#30006" +msgid "Password" +msgstr "رمز عبور" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "نرخ بیت" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Polish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Polish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Polish/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Polish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,141 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Polish (http://www.transifex.com/projects/p/xbmc-main/language/pl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pl\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Ogólne " + +msgctxt "#30001" +msgid "Server Address" +msgstr "Adres serwera" + +msgctxt "#30002" +msgid "Server Port" +msgstr "Port serwera" + +msgctxt "#30003" +msgid "Client name" +msgstr "Nazwa klienta" + +msgctxt "#30004" +msgid "Connection timeout (s)" +msgstr "Limit czasu połączenia (s)" + +msgctxt "#30005" +msgid "Username" +msgstr "Użytkownik" + +msgctxt "#30006" +msgid "Password" +msgstr "Hasło" + +msgctxt "#30100" +msgid "Stream" +msgstr "Strumieniowanie" + +msgctxt "#30102" +msgid "Stream format" +msgstr "Format strumieniowania" + +msgctxt "#30103" +msgid "Height" +msgstr "Wysokość" + +msgctxt "#30104" +msgid "Width" +msgstr "Szerokość" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Przepływność" + +msgctxt "#30106" +msgid "Audio track" +msgstr "Ścieżka dźwiękowa" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30108" +msgid "RTP" +msgstr "RTP" + +msgctxt "#30109" +msgid "HLS" +msgstr "HLS" + +msgctxt "#30110" +msgid "ASF" +msgstr "ASF" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Aktywuj funkcję przesunięcia czasowego" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Ścieżka do pliku bufora" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Zaawansowane" + +msgctxt "#30201" +msgid "Use channel handle instead of client id" +msgstr "Używaj identyfikatora kanału zamiast identyfikatora klienta" + +msgctxt "#30202" +msgid "Show information messages" +msgstr "Pokazuj komunikaty informacyjne" + +msgctxt "#32001" +msgid "Connected to DVBLink Server '%s'" +msgstr "Połączono z serwerem DVBLink '%s'" + +msgctxt "#32002" +msgid "Found '%d' channels" +msgstr "Znaleziono %d kanałów" + +msgctxt "#32003" +msgid "Could not connect to DVBLink Server '%s' (Error code : %d)" +msgstr "Problem z połączeniem z serwerem DVBLink '%s' (Kod błędu: %d)" + +msgctxt "#32004" +msgid "Could not get recordings (Error code : %d)" +msgstr "Problem z pobraniem listy nagrań (Kod błędu: %d)" + +msgctxt "#32006" +msgid "Could not get timers(Error code : %d)" +msgstr "Problem z pobraniem listy zaplanowanych nagrań (Kod błędu: %d)" + +msgctxt "#32007" +msgid "Found %d EPG timers" +msgstr "Znaleziono %d zaplanowanych nagrań przewodnika telewizyjnego" + +msgctxt "#32008" +msgid "Found %d manual timers" +msgstr "Znaleziono %d manualnie zaplanowanych nagrań" + +msgctxt "#32009" +msgid "Found %d recordings" +msgstr "Znaleziono %d nagrań" + +msgctxt "#32010" +msgid "Could not get stream for channel %s (Error code : %d)" +msgstr "Problem z otworzeniem strumienia kanału %s (Kod błędu: %d)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Portuguese/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Portuguese/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Portuguese/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Portuguese/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,141 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Portuguese (http://www.transifex.com/projects/p/xbmc-main/language/pt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Geral" + +msgctxt "#30001" +msgid "Server Address" +msgstr "Endereço do servidor" + +msgctxt "#30002" +msgid "Server Port" +msgstr "Porta do Servidor" + +msgctxt "#30003" +msgid "Client name" +msgstr "Nome do cliente" + +msgctxt "#30004" +msgid "Connection timeout (s)" +msgstr "Tempo limite de ligação (seg)" + +msgctxt "#30005" +msgid "Username" +msgstr "Utilizador" + +msgctxt "#30006" +msgid "Password" +msgstr "Palavra-passe" + +msgctxt "#30100" +msgid "Stream" +msgstr "Transmissão" + +msgctxt "#30102" +msgid "Stream format" +msgstr "Formato da transmissão" + +msgctxt "#30103" +msgid "Height" +msgstr "Altura" + +msgctxt "#30104" +msgid "Width" +msgstr "Largura" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Bitrate" + +msgctxt "#30106" +msgid "Audio track" +msgstr "Faixa de áudio" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30108" +msgid "RTP" +msgstr "RTP" + +msgctxt "#30109" +msgid "HLS" +msgstr "HLS" + +msgctxt "#30110" +msgid "ASF" +msgstr "ASF" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Activar Ver Mais Tarde" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Localização do buffer de Ver Mais Tarde" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Avançado" + +msgctxt "#30201" +msgid "Use channel handle instead of client id" +msgstr "Usar expressão do canal em vez do id do cliente" + +msgctxt "#30202" +msgid "Show information messages" +msgstr "Exibir mensagens de informação" + +msgctxt "#32001" +msgid "Connected to DVBLink Server '%s'" +msgstr "Ligado ao Servidor DVBLink '%s'" + +msgctxt "#32002" +msgid "Found '%d' channels" +msgstr "Foram encontrados '%d' canais" + +msgctxt "#32003" +msgid "Could not connect to DVBLink Server '%s' (Error code : %d)" +msgstr "Não foi possível ligar ao Servidor DVBLink '%s' (Código de erro : %d)" + +msgctxt "#32004" +msgid "Could not get recordings (Error code : %d)" +msgstr "Não foi possível obter gravações (Código de erro : %d)" + +msgctxt "#32006" +msgid "Could not get timers(Error code : %d)" +msgstr "Não foi possível obter temporizadores (Código de erro : %d)" + +msgctxt "#32007" +msgid "Found %d EPG timers" +msgstr "Foram encontrados %d temporizadores EPG" + +msgctxt "#32008" +msgid "Found %d manual timers" +msgstr "Foram encontrados %d temporizadores manuais" + +msgctxt "#32009" +msgid "Found %d recordings" +msgstr "Foram encontradas %d gravações" + +msgctxt "#32010" +msgid "Could not get stream for channel %s (Error code : %d)" +msgstr "Não foi possível obter a transmissão do canal %s (Código de erro : %d)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Portuguese (Brazil)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Portuguese (Brazil)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Portuguese (Brazil)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Portuguese (Brazil)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,141 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/xbmc-main/language/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Geral" + +msgctxt "#30001" +msgid "Server Address" +msgstr "Endereço do servidor" + +msgctxt "#30002" +msgid "Server Port" +msgstr "Porta no Servidor" + +msgctxt "#30003" +msgid "Client name" +msgstr "Nome do Cliente" + +msgctxt "#30004" +msgid "Connection timeout (s)" +msgstr "Tempo limite para conexão (s)" + +msgctxt "#30005" +msgid "Username" +msgstr "Nome do usuário" + +msgctxt "#30006" +msgid "Password" +msgstr "Senha" + +msgctxt "#30100" +msgid "Stream" +msgstr "Canal/sinal" + +msgctxt "#30102" +msgid "Stream format" +msgstr "Formato Stream" + +msgctxt "#30103" +msgid "Height" +msgstr "Altura" + +msgctxt "#30104" +msgid "Width" +msgstr "Largura" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Taxa de bits" + +msgctxt "#30106" +msgid "Audio track" +msgstr "Faixa de Áudio" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30108" +msgid "RTP" +msgstr "RTP" + +msgctxt "#30109" +msgid "HLS" +msgstr "HLS" + +msgctxt "#30110" +msgid "ASF" +msgstr "ASF" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Ativar gravação" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Caminho do buffer de gravação" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Avançado" + +msgctxt "#30201" +msgid "Use channel handle instead of client id" +msgstr "Usar canais manuseados ao invés do id do cliente" + +msgctxt "#30202" +msgid "Show information messages" +msgstr "Mostrar mensagens informativas" + +msgctxt "#32001" +msgid "Connected to DVBLink Server '%s'" +msgstr "Conectado ao Servidor DVBLink '%s'" + +msgctxt "#32002" +msgid "Found '%d' channels" +msgstr "Encontrado '%d' canais" + +msgctxt "#32003" +msgid "Could not connect to DVBLink Server '%s' (Error code : %d)" +msgstr "Não pude conectar-me ao Servidor DVBLink '%s' (Código Erro: %d)" + +msgctxt "#32004" +msgid "Could not get recordings (Error code : %d)" +msgstr "Não foi possível obter gravações (Código de erro: %d)" + +msgctxt "#32006" +msgid "Could not get timers(Error code : %d)" +msgstr "Não foi possível obter agendamentos (Código de erro: %d)" + +msgctxt "#32007" +msgid "Found %d EPG timers" +msgstr "Encontrado %d Agendamentos no EPG" + +msgctxt "#32008" +msgid "Found %d manual timers" +msgstr "Encontrado %d agendamentos manuais" + +msgctxt "#32009" +msgid "Found %d recordings" +msgstr "Encontrado %d gravações" + +msgctxt "#32010" +msgid "Could not get stream for channel %s (Error code : %d)" +msgstr "Não foi possível obter stream para o canal %s (Código de erro: %d)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Romanian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Romanian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Romanian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Romanian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,53 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Romanian (http://www.transifex.com/projects/p/xbmc-main/language/ro/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ro\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" + +msgctxt "#30000" +msgid "General" +msgstr "General" + +msgctxt "#30005" +msgid "Username" +msgstr "Utilizator" + +msgctxt "#30006" +msgid "Password" +msgstr "Parolă" + +msgctxt "#30100" +msgid "Stream" +msgstr "Flux" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Rată de biți" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Activează programul de înregistrare" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Calea buffer-ului de înregistrare" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Avansat" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Russian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Russian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Russian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Russian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,141 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Russian (http://www.transifex.com/projects/p/xbmc-main/language/ru/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ru\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Основное" + +msgctxt "#30001" +msgid "Server Address" +msgstr "Адрес сервера" + +msgctxt "#30002" +msgid "Server Port" +msgstr "Порт сервера" + +msgctxt "#30003" +msgid "Client name" +msgstr "Имя клиентского приложения" + +msgctxt "#30004" +msgid "Connection timeout (s)" +msgstr "Лимит времени соединения (сек.)" + +msgctxt "#30005" +msgid "Username" +msgstr "Пользователь" + +msgctxt "#30006" +msgid "Password" +msgstr "Пароль" + +msgctxt "#30100" +msgid "Stream" +msgstr "Поток" + +msgctxt "#30102" +msgid "Stream format" +msgstr "Формат потокового вещания" + +msgctxt "#30103" +msgid "Height" +msgstr "Высота" + +msgctxt "#30104" +msgid "Width" +msgstr "Ширина" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Битрейт" + +msgctxt "#30106" +msgid "Audio track" +msgstr "Аудиодорожка" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30108" +msgid "RTP" +msgstr "RTP" + +msgctxt "#30109" +msgid "HLS" +msgstr "HLS" + +msgctxt "#30110" +msgid "ASF" +msgstr "ASF" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Включить таймшифт" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Путь к буферу таймшифт" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Дополнительно" + +msgctxt "#30201" +msgid "Use channel handle instead of client id" +msgstr "Использовать клавишу канала вместо id клиента" + +msgctxt "#30202" +msgid "Show information messages" +msgstr "Отображать информационные сообщения" + +msgctxt "#32001" +msgid "Connected to DVBLink Server '%s'" +msgstr "Соединение с сервером DVBLink, '%s'" + +msgctxt "#32002" +msgid "Found '%d' channels" +msgstr "Найдено каналов, '%d'" + +msgctxt "#32003" +msgid "Could not connect to DVBLink Server '%s' (Error code : %d)" +msgstr "Не удалось совершить соединение с сервером DVBLink, '%s' (Код ошибки : %d)" + +msgctxt "#32004" +msgid "Could not get recordings (Error code : %d)" +msgstr "Не удалось найти записи (Код ошибки : %d)" + +msgctxt "#32006" +msgid "Could not get timers(Error code : %d)" +msgstr "Не удалось получить таймеры (Код ошибки : %d)" + +msgctxt "#32007" +msgid "Found %d EPG timers" +msgstr "Найдено %d таймеров EPG" + +msgctxt "#32008" +msgid "Found %d manual timers" +msgstr "Обнаружено %d ручных таймеров" + +msgctxt "#32009" +msgid "Found %d recordings" +msgstr "Обнаружено %d записей" + +msgctxt "#32010" +msgid "Could not get stream for channel %s (Error code : %d)" +msgstr "Не удалось обнаружить трансляцию для канала %s (Код ошибки : %d)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Serbian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Serbian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Serbian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Serbian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,45 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Serbian (http://www.transifex.com/projects/p/xbmc-main/language/sr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Opšte" + +msgctxt "#30005" +msgid "Username" +msgstr "Korisničko ime" + +msgctxt "#30006" +msgid "Password" +msgstr "Lozinka" + +msgctxt "#30100" +msgid "Stream" +msgstr "Zapis" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Brzina protoka" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Омогући временски помак" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Путања до међумеморије временског помака" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Serbian (Cyrillic)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Serbian (Cyrillic)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Serbian (Cyrillic)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Serbian (Cyrillic)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,37 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Serbian (Cyrillic) (http://www.transifex.com/projects/p/xbmc-main/language/sr_RS/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr_RS\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Опште" + +msgctxt "#30005" +msgid "Username" +msgstr "Корисничко име" + +msgctxt "#30006" +msgid "Password" +msgstr "Лозинка" + +msgctxt "#30100" +msgid "Stream" +msgstr "Запис" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Брзина протока" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Sinhala/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Sinhala/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Sinhala/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Sinhala/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,141 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Sinhala (http://www.transifex.com/projects/p/xbmc-main/language/si/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: si\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "සාමාන්‍ය" + +msgctxt "#30001" +msgid "Server Address" +msgstr "මෙහෙකරු ලිපිනය" + +msgctxt "#30002" +msgid "Server Port" +msgstr "මෙහෙකරු තිර්ථය" + +msgctxt "#30003" +msgid "Client name" +msgstr "ආයත්තකයාගේ නම" + +msgctxt "#30004" +msgid "Connection timeout (s)" +msgstr "සම්බන්ධවීමේ කාලය(න්) ඉවරයි" + +msgctxt "#30005" +msgid "Username" +msgstr "පරිශීලක නම" + +msgctxt "#30006" +msgid "Password" +msgstr "මුරපදය" + +msgctxt "#30100" +msgid "Stream" +msgstr "ප්‍රවාහය" + +msgctxt "#30102" +msgid "Stream format" +msgstr "ප්‍රවාහ ආකෘතිය" + +msgctxt "#30103" +msgid "Height" +msgstr "උස" + +msgctxt "#30104" +msgid "Width" +msgstr "පළල" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "මාත්‍රා අනුපාතය" + +msgctxt "#30106" +msgid "Audio track" +msgstr "ශ්‍රවණ තැටිය" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30108" +msgid "RTP" +msgstr "RTP" + +msgctxt "#30109" +msgid "HLS" +msgstr "HLS" + +msgctxt "#30110" +msgid "ASF" +msgstr "ASF" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "කාල සාරුව ක්‍රියාත්මක කරන්න" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "කාල සාරු අවරෝධක පෙත" + +msgctxt "#30200" +msgid "Advanced" +msgstr "උසස්" + +msgctxt "#30201" +msgid "Use channel handle instead of client id" +msgstr "සේවාදායක හඳුනාගැනීමේ අංකය වෙනුවෙන් වාසි මාර්ගය භාවිතා කරන්න" + +msgctxt "#30202" +msgid "Show information messages" +msgstr "තොරතුරු පණිවිඩ පෙන්වන්න" + +msgctxt "#32001" +msgid "Connected to DVBLink Server '%s'" +msgstr "DVBLink මෙහෙයුම්කරු වෙත සම්බන්ධ කරන්න '%s'" + +msgctxt "#32002" +msgid "Found '%d' channels" +msgstr "'%d' මග සොයාගත්තා" + +msgctxt "#32003" +msgid "Could not connect to DVBLink Server '%s' (Error code : %d)" +msgstr "DVBLink මෙහෙයුම්කරු වෙත සම්බන්ධ කළ නොහැක '%s' ( දෝෂ කේතය : %d)" + +msgctxt "#32004" +msgid "Could not get recordings (Error code : %d)" +msgstr "පටිගත කිරීම් ගත නොහැක (දෝෂ කේතය : %d)" + +msgctxt "#32006" +msgid "Could not get timers(Error code : %d)" +msgstr "මුහුර්තකය ගත නොහැක (දෝෂ කේතය : %d )" + +msgctxt "#32007" +msgid "Found %d EPG timers" +msgstr "%d EPG මුහුර්තක සොයාගත්තා" + +msgctxt "#32008" +msgid "Found %d manual timers" +msgstr "%d කාර්ය මුහුර්තක සොයාගත්තා" + +msgctxt "#32009" +msgid "Found %d recordings" +msgstr "%d පටිගත කිරීම් සොයාගත්තා" + +msgctxt "#32010" +msgid "Could not get stream for channel %s (Error code : %d)" +msgstr "නාලිකාවට ප්‍රවාහයක් ලබාගත නොහැක %s ( දෝෂ කේතාංකය : %d)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Slovak/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Slovak/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Slovak/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Slovak/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,141 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Slovak (http://www.transifex.com/projects/p/xbmc-main/language/sk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sk\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +msgctxt "#30000" +msgid "General" +msgstr "Hlavné" + +msgctxt "#30001" +msgid "Server Address" +msgstr "Adresa servera" + +msgctxt "#30002" +msgid "Server Port" +msgstr "Port servera" + +msgctxt "#30003" +msgid "Client name" +msgstr "Názov klientskej aplikácie" + +msgctxt "#30004" +msgid "Connection timeout (s)" +msgstr "Časový limit pre spojenie (sek.)" + +msgctxt "#30005" +msgid "Username" +msgstr "Užívateľské meno" + +msgctxt "#30006" +msgid "Password" +msgstr "Heslo" + +msgctxt "#30100" +msgid "Stream" +msgstr "Streamovať" + +msgctxt "#30102" +msgid "Stream format" +msgstr "Formát streamu" + +msgctxt "#30103" +msgid "Height" +msgstr "Výška" + +msgctxt "#30104" +msgid "Width" +msgstr "Šírka" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Dátový tok" + +msgctxt "#30106" +msgid "Audio track" +msgstr "Zvuková stopa" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30108" +msgid "RTP" +msgstr "RTP" + +msgctxt "#30109" +msgid "HLS" +msgstr "HLS" + +msgctxt "#30110" +msgid "ASF" +msgstr "ASF" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Povoliť časový posun" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Cesta k zásobníku časového posunu" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Pokročilé nastavenia" + +msgctxt "#30201" +msgid "Use channel handle instead of client id" +msgstr "Použiť referenciu na kanál namiesto ID klienta" + +msgctxt "#30202" +msgid "Show information messages" +msgstr "Zobraziť informačné správy" + +msgctxt "#32001" +msgid "Connected to DVBLink Server '%s'" +msgstr "Pripojené k DVBLink serveru '%s'" + +msgctxt "#32002" +msgid "Found '%d' channels" +msgstr "Nájdených '%d' kanálov" + +msgctxt "#32003" +msgid "Could not connect to DVBLink Server '%s' (Error code : %d)" +msgstr "Nie je možné sa pripojiť k DVBLink serveru '%s' (Kód chyby : %d)" + +msgctxt "#32004" +msgid "Could not get recordings (Error code : %d)" +msgstr "Nie je možné získať nahrávky (Kód chyby : %d)" + +msgctxt "#32006" +msgid "Could not get timers(Error code : %d)" +msgstr "Nie je možné získať časovače(Kód chyby : %d)" + +msgctxt "#32007" +msgid "Found %d EPG timers" +msgstr "Nájdených %d EPG časovačov" + +msgctxt "#32008" +msgid "Found %d manual timers" +msgstr "Nájdených %d ručne zadaných časovačov" + +msgctxt "#32009" +msgid "Found %d recordings" +msgstr "Nájdených %d nahrávok" + +msgctxt "#32010" +msgid "Could not get stream for channel %s (Error code : %d)" +msgstr "Nie je možné získať stream pre kanál %s (Kód chyby : %d)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Slovenian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Slovenian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Slovenian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Slovenian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,53 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Slovenian (http://www.transifex.com/projects/p/xbmc-main/language/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Splošno" + +msgctxt "#30005" +msgid "Username" +msgstr "Uporabniško ime" + +msgctxt "#30006" +msgid "Password" +msgstr "Geslo" + +msgctxt "#30100" +msgid "Stream" +msgstr "Pretok" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Bitna hitrost" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Omogoči časovni zamik" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Pot medpomnenja časovnega zamika" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Napredno" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Spanish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Spanish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Spanish/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Spanish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,141 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Spanish (http://www.transifex.com/projects/p/xbmc-main/language/es/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "General" + +msgctxt "#30001" +msgid "Server Address" +msgstr "Dirección del Servidor" + +msgctxt "#30002" +msgid "Server Port" +msgstr "Puerto del Servidor" + +msgctxt "#30003" +msgid "Client name" +msgstr "Nombre de cliente" + +msgctxt "#30004" +msgid "Connection timeout (s)" +msgstr "Tiempo de espera para conexión (seg)" + +msgctxt "#30005" +msgid "Username" +msgstr "Usuario" + +msgctxt "#30006" +msgid "Password" +msgstr "Contraseña" + +msgctxt "#30100" +msgid "Stream" +msgstr "Flujo" + +msgctxt "#30102" +msgid "Stream format" +msgstr "Formato del flujo" + +msgctxt "#30103" +msgid "Height" +msgstr "Altura" + +msgctxt "#30104" +msgid "Width" +msgstr "Anchura" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Tasa de bits" + +msgctxt "#30106" +msgid "Audio track" +msgstr "Pista de audio" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30108" +msgid "RTP" +msgstr "RTP" + +msgctxt "#30109" +msgid "HLS" +msgstr "HLS" + +msgctxt "#30110" +msgid "ASF" +msgstr "ASF" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Activar TimeShift" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Ruta del buffer de TimeShift" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Avanzado" + +msgctxt "#30201" +msgid "Use channel handle instead of client id" +msgstr "Usar canales en lugar de ID de cliente" + +msgctxt "#30202" +msgid "Show information messages" +msgstr "Mostrar mensajes informativos" + +msgctxt "#32001" +msgid "Connected to DVBLink Server '%s'" +msgstr "Conectado a Servidor DVBLink '%s'" + +msgctxt "#32002" +msgid "Found '%d' channels" +msgstr "Encontrados '%d' canales" + +msgctxt "#32003" +msgid "Could not connect to DVBLink Server '%s' (Error code : %d)" +msgstr "Imposible conectar al servidor DVBLink '%s' (Código de error: %d)" + +msgctxt "#32004" +msgid "Could not get recordings (Error code : %d)" +msgstr "Imposible obtener grabaciones (Código de error: %d)" + +msgctxt "#32006" +msgid "Could not get timers(Error code : %d)" +msgstr "Imposible obtener programaciones (Código de error: %d)" + +msgctxt "#32007" +msgid "Found %d EPG timers" +msgstr "Encontradas %d programaciones EPG" + +msgctxt "#32008" +msgid "Found %d manual timers" +msgstr "Encontradas %d programaciones manuales" + +msgctxt "#32009" +msgid "Found %d recordings" +msgstr "Encontradas %d grabaciones" + +msgctxt "#32010" +msgid "Could not get stream for channel %s (Error code : %d)" +msgstr "Imposible obtener flujo en el canal %s (Código de error: %d)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Spanish (Argentina)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Spanish (Argentina)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Spanish (Argentina)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Spanish (Argentina)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,53 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/xbmc-main/language/es_AR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es_AR\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "General" + +msgctxt "#30005" +msgid "Username" +msgstr "Usuario" + +msgctxt "#30006" +msgid "Password" +msgstr "Contraseña" + +msgctxt "#30100" +msgid "Stream" +msgstr "Flujo" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Bitrate" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Activar Timeshift" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Ruta del buffer de Timeshift" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Avanzado" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Spanish (Mexico)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Spanish (Mexico)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Spanish (Mexico)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Spanish (Mexico)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,45 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/xbmc-main/language/es_MX/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es_MX\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "General" + +msgctxt "#30005" +msgid "Username" +msgstr "Usuario" + +msgctxt "#30006" +msgid "Password" +msgstr "Contraseña" + +msgctxt "#30100" +msgid "Stream" +msgstr "Stream" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Bitrate" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Avanzado" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Swedish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Swedish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Swedish/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Swedish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,53 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Swedish (http://www.transifex.com/projects/p/xbmc-main/language/sv/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sv\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Allmänt" + +msgctxt "#30005" +msgid "Username" +msgstr "Användarnamn" + +msgctxt "#30006" +msgid "Password" +msgstr "Lösenord" + +msgctxt "#30100" +msgid "Stream" +msgstr "Strömma" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Bithastighet" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Aktivera Timeshift" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Buffertsökväg för Timeshift " + +msgctxt "#30200" +msgid "Advanced" +msgstr "Avancerad" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Tajik/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Tajik/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Tajik/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Tajik/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,45 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Tajik (http://www.transifex.com/projects/p/xbmc-main/language/tg/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: tg\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Умумӣ" + +msgctxt "#30005" +msgid "Username" +msgstr "Номи корбар" + +msgctxt "#30006" +msgid "Password" +msgstr "Парол" + +msgctxt "#30100" +msgid "Stream" +msgstr "Ҷараён" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Битрейт" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Иловагӣ" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Tamil (India)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Tamil (India)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Tamil (India)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Tamil (India)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,53 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Tamil (India) (http://www.transifex.com/projects/p/xbmc-main/language/ta_IN/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ta_IN\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "பொதுவானவை" + +msgctxt "#30005" +msgid "Username" +msgstr "பயனர்பெயர்" + +msgctxt "#30006" +msgid "Password" +msgstr "கடவுச்சொல்" + +msgctxt "#30100" +msgid "Stream" +msgstr "ஒலிப்பேழை" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "பிட்வீதம்" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "நேரமாற்றத்தை செயல்படுத்து" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "நேரமாற்ற இடையக பாதை" + +msgctxt "#30200" +msgid "Advanced" +msgstr "மேம்பட்டது" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Telugu/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Telugu/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Telugu/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Telugu/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,29 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Telugu (http://www.transifex.com/projects/p/xbmc-main/language/te/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: te\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "General" +msgstr "సాధారణం" + +msgctxt "#30005" +msgid "Username" +msgstr "వాడుకరి పేరు" + +msgctxt "#30006" +msgid "Password" +msgstr "సంకేతపదం" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Thai/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Thai/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Thai/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Thai/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,45 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Thai (http://www.transifex.com/projects/p/xbmc-main/language/th/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: th\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30000" +msgid "General" +msgstr "ทั่วไป" + +msgctxt "#30005" +msgid "Username" +msgstr "ชื่อผู้ใช้" + +msgctxt "#30006" +msgid "Password" +msgstr "รหัสผ่าน" + +msgctxt "#30100" +msgid "Stream" +msgstr "สตรีม" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "บิทเรต" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30200" +msgid "Advanced" +msgstr "ขั้นสูง" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Turkish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Turkish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Turkish/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Turkish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,53 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Turkish (http://www.transifex.com/projects/p/xbmc-main/language/tr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: tr\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30000" +msgid "General" +msgstr "Genel" + +msgctxt "#30005" +msgid "Username" +msgstr "Kullanıcı adı" + +msgctxt "#30006" +msgid "Password" +msgstr "Parola" + +msgctxt "#30100" +msgid "Stream" +msgstr "Akış" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Bit oranı" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Zaman Kaydırma Aktif" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Zaman Kaydırma tampon bellek yolu" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Gelişmiş" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Ukrainian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Ukrainian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Ukrainian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Ukrainian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,45 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Ukrainian (http://www.transifex.com/projects/p/xbmc-main/language/uk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: uk\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +msgctxt "#30000" +msgid "General" +msgstr "Загальні" + +msgctxt "#30005" +msgid "Username" +msgstr "Ім'я користувача" + +msgctxt "#30006" +msgid "Password" +msgstr "Пароль" + +msgctxt "#30100" +msgid "Stream" +msgstr "Потік" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Бітрейт" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Більше" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Uzbek/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Uzbek/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Uzbek/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Uzbek/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,33 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Uzbek (http://www.transifex.com/projects/p/xbmc-main/language/uz/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: uz\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30000" +msgid "General" +msgstr "Umumiy" + +msgctxt "#30005" +msgid "Username" +msgstr "Foydalanuvchi nomi" + +msgctxt "#30006" +msgid "Password" +msgstr "Maxfiy so'z" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Bitreyt" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Vietnamese/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Vietnamese/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Vietnamese/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Vietnamese/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,53 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Vietnamese (http://www.transifex.com/projects/p/xbmc-main/language/vi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: vi\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30000" +msgid "General" +msgstr "Tổng Quan" + +msgctxt "#30005" +msgid "Username" +msgstr "Tên truy cập" + +msgctxt "#30006" +msgid "Password" +msgstr "Mật khẩu" + +msgctxt "#30100" +msgid "Stream" +msgstr "Luồng" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Bitrate" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Bật Timeshift" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Đường dẫn bộ đệm Timeshift" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Nâng cao" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Vietnamese (Viet Nam)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Vietnamese (Viet Nam)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Vietnamese (Viet Nam)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Vietnamese (Viet Nam)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,29 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/projects/p/xbmc-main/language/vi_VN/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: vi_VN\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30000" +msgid "General" +msgstr "Chung" + +msgctxt "#30006" +msgid "Password" +msgstr "Mật khẩu" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Nâng ca" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Welsh/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Welsh/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/language/Welsh/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/language/Welsh/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,53 @@ +# XBMC Media Center language file +# Addon Name: DVBLink PVR Client +# Addon id: pvr.dvblink +# Addon Provider: DVBLogic +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Welsh (http://www.transifex.com/projects/p/xbmc-main/language/cy/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: cy\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\n" + +msgctxt "#30000" +msgid "General" +msgstr "Cyffredinol" + +msgctxt "#30005" +msgid "Username" +msgstr "Enw defnyddiwr" + +msgctxt "#30006" +msgid "Password" +msgstr "Cyfrinair" + +msgctxt "#30100" +msgid "Stream" +msgstr "Ffrydio" + +msgctxt "#30105" +msgid "Bitrate" +msgstr "Didradd" + +msgctxt "#30107" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30111" +msgid "Enable Timeshift" +msgstr "Galluogi Symud Amser" + +msgctxt "#30112" +msgid "Timeshift buffer path" +msgstr "Llwybr byffro Symud Amser" + +msgctxt "#30200" +msgid "Advanced" +msgstr "Uwch" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/settings.xml xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/settings.xml --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/addon/resources/settings.xml 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/addon/resources/settings.xml 2014-06-10 08:39:14.000000000 +0000 @@ -3,9 +3,8 @@ - + - @@ -14,7 +13,6 @@ - @@ -23,7 +21,6 @@ - \ No newline at end of file diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/project/VS2010Express/pvrclient_dvblink.vcxproj xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/project/VS2010Express/pvrclient_dvblink.vcxproj --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/project/VS2010Express/pvrclient_dvblink.vcxproj 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/project/VS2010Express/pvrclient_dvblink.vcxproj 2014-07-18 06:05:30.000000000 +0000 @@ -1,5 +1,5 @@  - + Debug @@ -20,12 +20,14 @@ DynamicLibrary true MultiByte + v120 DynamicLibrary false true MultiByte + v120 diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/src/client.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/src/client.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/src/client.cpp 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/src/client.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -17,7 +17,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ @@ -26,11 +27,11 @@ #include "xbmc_pvr_dll.h" #include "DVBLinkClient.h" #include "platform/util/util.h" +#include "platform/util/timeutils.h" using namespace std; using namespace ADDON; - #ifdef TARGET_WINDOWS #define snprintf _snprintf #endif @@ -48,22 +49,44 @@ long g_lPort = DEFAULT_PORT; ///< The DVBLink Connect Server listening port (default: 8080) int g_iConnectTimeout = DEFAULT_TIMEOUT; ///< The Socket connection timeout DVBLINK_STREAMTYPE g_eStreamType = DEFAULT_STREAMTYPE; ///< Stream type used by video stream -std::string g_szClientname = DEFAULT_CLIENTNAME; ///< Name of dvblink client +std::string g_szClientname; ///< Name of dvblink client std::string g_szUsername = DEFAULT_USERNAME; ///< Username std::string g_szPassword = DEFAULT_PASSWORD; ///< Password -bool g_bUseChlHandle = DEFAULT_USECHLHANDLE; ///< Use channel handle instead of client id bool g_bShowInfoMSG = DEFAULT_SHOWINFOMSG; ///< Show information messages int g_iHeight = DEFAULT_HEIGHT; ///< Height of stream when using transcoding int g_iWidth = DEFAULT_WIDTH; ///< Width of stream when using transcoding int g_iBitrate = DEFAULT_BITRATE; ///< Bitrate of stream when using transcoding std::string g_szAudiotrack = DEFAULT_AUDIOTRACK; ///< Audiotrack to include in stream when using transcoding -std::string g_szTimeShiftBufferPath = DEFAULT_TIMESHIFTBUFFERPATH; ///< Path to timeshift buffer bool g_bUseTimeshift = DEFAULT_USETIMESHIFT; ///< Use timeshift CHelper_libXBMC_addon *XBMC = NULL; CHelper_libXBMC_pvr *PVR = NULL; extern "C" { +static void generate_uuid(std::string& uuid) +{ + int64_t seed_value = PLATFORM::GetTimeMs(); + seed_value = seed_value % 1000000000; + srand((unsigned int)seed_value); + + //fill in uuid string from a template + std::string template_str = "xxxx-xx-xx-xx-xxxxxx"; + for (size_t i=0; iLog(LOG_DEBUG, "%s - Creating the PVR DVBlink add-on", __FUNCTION__); + //generate a guid to use as a client identification + generate_uuid(g_szClientname); + XBMC->Log(LOG_NOTICE, "Generated guid %s to use as a DVBLink client ID", g_szClientname.c_str()); + m_CurStatus = ADDON_STATUS_UNKNOWN; g_strUserPath = pvrprops->strUserPath; g_strClientPath = pvrprops->strClientPath; @@ -110,18 +137,6 @@ g_szHostname = DEFAULT_HOST; } - /* Read setting "client" from settings.xml */ - if (XBMC->GetSetting("client", buffer)) - { - g_szClientname = buffer; - } - else - { - /* If setting is unknown fallback to defaults */ - XBMC->Log(LOG_ERROR, "Couldn't get 'clientname' setting, falling back to 'xbmc' as default"); - g_szClientname = DEFAULT_CLIENTNAME; - } - /* Read setting "username" from settings.xml */ if (XBMC->GetSetting("username", buffer)) { @@ -170,14 +185,6 @@ g_iConnectTimeout = DEFAULT_TIMEOUT; } - /* Read setting "ch_handle" from settings.xml */ - if (!XBMC->GetSetting("ch_handle", &g_bUseChlHandle)) - { - /* If setting is unknown fallback to defaults */ - XBMC->Log(LOG_ERROR, "Couldn't get 'ch_handle' setting, falling back to 'true' as default"); - g_bUseChlHandle = DEFAULT_USECHLHANDLE; - } - /* Read setting "timeshift" from settings.xml */ if (!XBMC->GetSetting("timeshift", &g_bUseTimeshift)) { @@ -186,20 +193,7 @@ g_bUseTimeshift = DEFAULT_USETIMESHIFT; } - /* Read setting "timeshiftpath" from settings.xml */ - if (XBMC->GetSetting("timeshiftpath", buffer)) - { - g_szTimeShiftBufferPath = buffer; - } - else - { - /* If setting is unknown fallback to defaults */ - XBMC->Log(LOG_ERROR, "Couldn't get 'timeshiftpath' setting, falling back to 'special://userdata/addon_data/pvr.dvblink/' as default"); - g_szTimeShiftBufferPath = DEFAULT_TIMESHIFTBUFFERPATH; - } - - - /* Read setting "ch_handle" from settings.xml */ + /* Read setting "shoow info message" from settings.xml */ if (!XBMC->GetSetting("showinfomsg", &g_bShowInfoMSG)) { /* If setting is unknown fallback to defaults */ @@ -245,7 +239,7 @@ /* Log the current settings for debugging purposes */ XBMC->Log(LOG_DEBUG, "settings: streamtype='%i' host='%s', port=%i, timeout=%i", g_eStreamType, g_szHostname.c_str(), g_lPort, g_iConnectTimeout); - dvblinkclient = new DVBLinkClient(XBMC,PVR, g_szClientname, g_szHostname, g_lPort, g_bShowInfoMSG, g_szUsername, g_szPassword, g_bUseTimeshift, g_szTimeShiftBufferPath); + dvblinkclient = new DVBLinkClient(XBMC,PVR, g_szClientname, g_szHostname, g_lPort, g_bShowInfoMSG, g_szUsername, g_szPassword, g_bUseTimeshift); m_CurStatus = ADDON_STATUS_OK; m_bCreated = true; @@ -287,15 +281,6 @@ if (tmp_sHostname != g_szHostname) return ADDON_STATUS_NEED_RESTART; } - else if (str == "client") - { - string tmp_sClientname; - XBMC->Log(LOG_INFO, "Changed Setting 'client' from %s to %s", g_szClientname.c_str(), (const char*) settingValue); - tmp_sClientname = g_szClientname; - g_szClientname = (const char*) settingValue; - if (tmp_sClientname != g_szClientname) - return ADDON_STATUS_NEED_RESTART; - } else if (str == "username") { string tmp_sUsername; @@ -338,26 +323,12 @@ XBMC->Log(LOG_INFO, "Changed setting 'timeout' from %u to %u", g_iConnectTimeout, *(int*) settingValue); g_iConnectTimeout = *(int*) settingValue; } - else if (str == "ch_handle") - { - XBMC->Log(LOG_INFO, "Changed Setting 'ch_handle' from %u to %u", g_bUseChlHandle, *(int*) settingValue); - g_bUseChlHandle = *(bool*) settingValue; - } else if (str == "timeshift") { XBMC->Log(LOG_INFO, "Changed Setting 'timeshift' from %u to %u", g_bUseTimeshift, *(int*) settingValue); g_bUseTimeshift = *(bool*) settingValue; return ADDON_STATUS_NEED_RESTART; } - else if (str == "timeshiftpath") - { - string tmp_sTimeShiftBufferPath; - XBMC->Log(LOG_INFO, "Changed Setting 'timeshiftpath' from %s to %s", g_szTimeShiftBufferPath.c_str(), (const char*) settingValue); - tmp_sTimeShiftBufferPath = g_szTimeShiftBufferPath; - g_szTimeShiftBufferPath = (const char*) settingValue; - if (tmp_sTimeShiftBufferPath != g_szTimeShiftBufferPath) - return ADDON_STATUS_NEED_RESTART; - } else if (str == "showinfomsg") { XBMC->Log(LOG_INFO, "Changed Setting 'showinfomsg' from %u to %u", g_bShowInfoMSG, *(int*) settingValue); @@ -502,7 +473,7 @@ void CloseLiveStream(void) { if (dvblinkclient) - dvblinkclient->StopStreaming(g_bUseChlHandle); + dvblinkclient->StopStreaming(true); } const char * GetLiveStreamURL(const PVR_CHANNEL &channel) @@ -540,6 +511,27 @@ return -1; } +time_t GetPlayingTime() +{ + if (dvblinkclient) + return dvblinkclient->GetPlayingTime(); + return 0; +} + +time_t GetBufferTimeStart() +{ + if (dvblinkclient) + return dvblinkclient->GetBufferTimeStart(); + return 0; +} + +time_t GetBufferTimeEnd() +{ + if (dvblinkclient) + return dvblinkclient->GetBufferTimeEnd(); + return 0; +} + void PauseStream(bool bPaused) { } @@ -783,8 +775,4 @@ { } -time_t GetPlayingTime() { return 0; } -time_t GetBufferTimeStart() { return 0; } -time_t GetBufferTimeEnd() { return 0; } - } diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/src/client.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/src/client.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/src/client.h 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/src/client.h 2014-07-18 06:05:30.000000000 +0000 @@ -17,7 +17,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ @@ -33,19 +34,16 @@ /* Client Settings default values */ #define DEFAULT_HOST "127.0.0.1" -#define DEFAULT_PORT 8080 +#define DEFAULT_PORT 8100 #define DEFAULT_TIMEOUT 10 #define DEFAULT_STREAMTYPE HTTP -#define DEFAULT_CLIENTNAME "xbmc" #define DEFAULT_USERNAME "" #define DEFAULT_PASSWORD "" -#define DEFAULT_USECHLHANDLE true #define DEFAULT_SHOWINFOMSG false #define DEFAULT_HEIGHT 720 #define DEFAULT_WIDTH 576 #define DEFAULT_BITRATE 512 #define DEFAULT_AUDIOTRACK "eng" -#define DEFAULT_TIMESHIFTBUFFERPATH "special://userdata/addon_data/pvr.dvblink/" #define DEFAULT_USETIMESHIFT false /* Client Settings */ @@ -60,13 +58,8 @@ extern int g_iWidth; extern int g_iBitrate; extern std::string g_szAudiotrack; -extern bool g_bUseChlHandle; extern bool g_bShowInfoMSG; extern bool g_bUseTimeshift; -extern std::string g_szTimeShiftBufferPath; - - extern ADDON::CHelper_libXBMC_addon *XBMC; extern CHelper_libXBMC_pvr *PVR; - diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/src/DVBLinkClient.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/src/DVBLinkClient.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/src/DVBLinkClient.cpp 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/src/DVBLinkClient.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -17,7 +17,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ @@ -56,7 +57,7 @@ -DVBLinkClient::DVBLinkClient(CHelper_libXBMC_addon *XBMC, CHelper_libXBMC_pvr *PVR,std::string clientname, std::string hostname, long port,bool showinfomsg, std::string username, std::string password, bool usetimeshift, std::string timeshiftpath) +DVBLinkClient::DVBLinkClient(CHelper_libXBMC_addon *XBMC, CHelper_libXBMC_pvr *PVR,std::string clientname, std::string hostname, long port,bool showinfomsg, std::string username, std::string password, bool usetimeshift) { this->PVR = PVR; this->XBMC = XBMC; @@ -65,14 +66,10 @@ m_connected = false; m_currentChannelId = 0; m_showinfomsg = showinfomsg; + m_usetimeshift = usetimeshift; - m_usetimeshift = usetimeshift && XBMC->DirectoryExists(timeshiftpath.c_str()); - - m_timeshiftpath.append(timeshiftpath); - m_timeshiftpath.append(clientname); - - m_httpClient = new HttpPostClient(XBMC,hostname,port, username, password); - m_dvblinkRemoteCommunication = DVBLinkRemote::Connect((HttpClient&)*m_httpClient, m_hostname.c_str(), 8080, username.c_str(), password.c_str()); + m_httpClient = new HttpPostClient(XBMC,hostname, port, username, password); + m_dvblinkRemoteCommunication = DVBLinkRemote::Connect((HttpClient&)*m_httpClient, m_hostname.c_str(), port, username.c_str(), password.c_str()); DVBLinkRemoteStatusCode status; m_timerCount = -1; @@ -209,88 +206,70 @@ PVR_ERROR result = PVR_ERROR_FAILED; PLATFORM::CLockObject critsec(m_mutex); - GetSchedulesRequest getSchedulesRequest; - StoredSchedules sschedules; + GetRecordingsRequest recordingsRequest; + RecordingList recordings; DVBLinkRemoteStatusCode status; - int count = 0; - if ((status = m_dvblinkRemoteCommunication->GetSchedules(getSchedulesRequest, sschedules)) != DVBLINK_REMOTE_STATUS_OK) + if ((status = m_dvblinkRemoteCommunication->GetRecordings(recordingsRequest, recordings)) != DVBLINK_REMOTE_STATUS_OK) { std::string error; m_dvblinkRemoteCommunication->GetLastError(error); - XBMC->Log(LOG_ERROR, "Could not get timers (Error code : %d Description : %s)", (int)status,error.c_str()); - // XBMC->QueueNotification(QUEUE_ERROR, XBMC->GetLocalizedString(32006), (int)status); + XBMC->Log(LOG_ERROR, "Could not get timers (Error code : %d Description : %s)", (int)status, error.c_str()); return result; } - XBMC->Log(LOG_INFO, "Found %d epg timers", sschedules.GetEpgSchedules().size()); + XBMC->Log(LOG_INFO, "Found %d timers", recordings.size()); if (m_showinfomsg) { - XBMC->QueueNotification(QUEUE_INFO, XBMC->GetLocalizedString(32007), sschedules.GetEpgSchedules().size()); + XBMC->QueueNotification(QUEUE_INFO, XBMC->GetLocalizedString(32007), recordings.size()); } - for (std::vector::iterator it = sschedules.GetEpgSchedules().begin(); it < sschedules.GetEpgSchedules().end(); it++) + for (size_t i=0; i < recordings.size(); i++) { - StoredEpgSchedule* schedule = (StoredEpgSchedule*)*it; + Recording* rec = recordings[i]; + PVR_TIMER xbmcTimer; memset(&xbmcTimer, 0, sizeof(PVR_TIMER)); - PVR_STR2INT(xbmcTimer.iClientIndex, schedule->GetID().c_str()); + //fake index + xbmcTimer.iClientIndex = i; + //misuse strDirectory to keep id of the timer + PVR_STRCPY(xbmcTimer.strDirectory, rec->GetID().c_str()); - xbmcTimer.iClientChannelUid = GetInternalUniqueIdFromChannelId(schedule->GetChannelID()); + xbmcTimer.iClientChannelUid = GetInternalUniqueIdFromChannelId(rec->GetChannelID()); xbmcTimer.state = PVR_TIMER_STATE_SCHEDULED; - xbmcTimer.bIsRepeating = schedule->Repeat; - PVR_STR2INT(xbmcTimer.iEpgUid, schedule->GetProgramID().c_str()); - EpgSearchResult epgSearchResult; - if (DoEPGSearch(epgSearchResult,schedule->GetChannelID(), -1, -1, schedule->GetProgramID())) - { - if (epgSearchResult.size() < 1 || epgSearchResult[0]->GetEpgData().size() < 1) - { - XBMC->Log(LOG_INFO, "No EPG program data for timer '%s' on channel '%s' with program id '%s'", schedule->GetID().c_str(),schedule->GetChannelID().c_str(),schedule->GetProgramID().c_str()); - continue; - } - ChannelEpgData * channelepgdata = epgSearchResult[0]; - Program * program = channelepgdata->GetEpgData()[0]; - - xbmcTimer.startTime =program->GetStartTime(); - xbmcTimer.endTime = program->GetStartTime() + program->GetDuration(); - PVR_STRCPY(xbmcTimer.strTitle, program->GetTitle().c_str()); - PVR_STRCPY(xbmcTimer.strSummary, program->ShortDescription.c_str()); - PVR->TransferTimerEntry(handle, &xbmcTimer); - XBMC->Log(LOG_INFO, "Added EPG timer : %s", program->GetTitle().c_str()); - - count++; - } - - } - - XBMC->Log(LOG_INFO, "Found %d manual timers", sschedules.GetManualSchedules().size()); - - if (m_showinfomsg) - { - XBMC->QueueNotification(QUEUE_INFO, XBMC->GetLocalizedString(32008), sschedules.GetManualSchedules().size()); - } + if (rec->IsActive) + xbmcTimer.state = PVR_TIMER_STATE_RECORDING; + if (rec->IsConflict) + xbmcTimer.state = PVR_TIMER_STATE_CONFLICT_NOK; + if (!rec->GetProgram().IsRecord) + xbmcTimer.state = PVR_TIMER_STATE_CANCELLED; - for (std::vector::iterator it = sschedules.GetManualSchedules().begin(); it < sschedules.GetManualSchedules().end(); it++) - { - StoredManualSchedule* schedule = (StoredManualSchedule*)*it; - PVR_TIMER xbmcTimer; - memset(&xbmcTimer, 0, sizeof(PVR_TIMER)); - PVR_STR2INT(xbmcTimer.iClientIndex, schedule->GetID().c_str()); - - xbmcTimer.iClientChannelUid = GetInternalUniqueIdFromChannelId(schedule->GetChannelID()); + xbmcTimer.bIsRepeating = rec->GetProgram().IsSeries; + PVR_STR2INT(xbmcTimer.iEpgUid, rec->GetProgram().GetID().c_str()); + + xbmcTimer.startTime =rec->GetProgram().GetStartTime(); + xbmcTimer.endTime = rec->GetProgram().GetStartTime() + rec->GetProgram().GetDuration(); + PVR_STRCPY(xbmcTimer.strTitle, rec->GetProgram().GetTitle().c_str()); + PVR_STRCPY(xbmcTimer.strSummary, rec->GetProgram().ShortDescription.c_str()); + + int genre_type, genre_subtype; + SetEPGGenre(rec->GetProgram(), genre_type, genre_subtype); + if (genre_type == EPG_GENRE_USE_STRING) + { + xbmcTimer.iGenreType = EPG_EVENT_CONTENTMASK_UNDEFINED; + } else + { + xbmcTimer.iGenreType = genre_type; + xbmcTimer.iGenreSubType = genre_subtype; + } - xbmcTimer.state = PVR_TIMER_STATE_SCHEDULED; - xbmcTimer.startTime = schedule->GetStartTime(); - xbmcTimer.endTime = schedule->GetStartTime() + schedule->GetDuration(); - PVR_STRCPY(xbmcTimer.strTitle, schedule->Title.c_str()); - //TODO: PAE: Add weekdays - XBMC->Log(LOG_INFO, "Added manual timer : %s", schedule->Title.c_str()); PVR->TransferTimerEntry(handle, &xbmcTimer); - count++; + XBMC->Log(LOG_INFO, "Added EPG timer : %s", rec->GetProgram().GetTitle().c_str()); } - m_timerCount = count; + + m_timerCount = recordings.size(); result = PVR_ERROR_NO_ERROR; return result; } @@ -302,7 +281,7 @@ DVBLinkRemoteStatusCode status; AddScheduleRequest * addScheduleRequest = NULL; std::string channelId = m_channelMap[timer.iClientChannelUid]->GetID(); - if (timer.iEpgUid != 0) + if (timer.iEpgUid != -1) { char programId [33]; PVR_INT2STR(programId,timer.iEpgUid); @@ -336,13 +315,11 @@ PVR_ERROR result = PVR_ERROR_FAILED; PLATFORM::CLockObject critsec(m_mutex); DVBLinkRemoteStatusCode status; - char scheduleId [33]; - PVR_INT2STR(scheduleId, timer.iClientIndex); - RemoveScheduleRequest removeSchedule(scheduleId); + //recording id is kept in strDirectory! + RemoveRecordingRequest removeRecording(timer.strDirectory); - - if ((status = m_dvblinkRemoteCommunication->RemoveSchedule(removeSchedule)) == DVBLINK_REMOTE_STATUS_OK) + if ((status = m_dvblinkRemoteCommunication->RemoveRecording(removeRecording)) == DVBLINK_REMOTE_STATUS_OK) { XBMC->Log(LOG_INFO, "Timer deleted"); PVR->TriggerTimerUpdate(); @@ -359,12 +336,8 @@ PVR_ERROR DVBLinkClient::UpdateTimer(const PVR_TIMER &timer) { - PVR_ERROR deleteResult = DeleteTimer(timer); - if (deleteResult == PVR_ERROR_NO_ERROR) - { - return AddTimer(timer); - } - return deleteResult; + //DVBLink serverdoes not support timer update (e.g. delete/re-create) + return PVR_ERROR_FAILED; } int DVBLinkClient::GetRecordingsAmount() @@ -373,8 +346,6 @@ return m_recordingCount; } - - std::string DVBLinkClient::GetRecordedTVByDateObjectID(const std::string& buildInRecoderObjectID) { std::string result = ""; @@ -392,7 +363,6 @@ PlaybackContainer * container = (PlaybackContainer *) *it; - // if (strcmp(container->GetName().c_str(), "By Date") == 0) if (container->GetObjectID().find("F6F08949-2A07-4074-9E9D-423D877270BB") != std::string::npos) { result = container->GetObjectID(); @@ -468,6 +438,17 @@ xbmcRecording.iDuration = tvitem->GetMetadata().GetDuration(); PVR_STRCPY(xbmcRecording.strChannelName, tvitem->ChannelName.c_str()); PVR_STRCPY(xbmcRecording.strThumbnailPath, tvitem->GetThumbnailUrl().c_str()); + int genre_type, genre_subtype; + SetEPGGenre(tvitem->GetMetadata(), genre_type, genre_subtype); + if (genre_type == EPG_GENRE_USE_STRING) + { + xbmcRecording.iGenreType = EPG_EVENT_CONTENTMASK_UNDEFINED; + } else + { + xbmcRecording.iGenreType = genre_type; + xbmcRecording.iGenreSubType = genre_subtype; + } + PVR->TransferRecordingEntry(handle, &xbmcRecording); } @@ -506,20 +487,26 @@ options.SetAudioTrack(audiotrack); Channel * c = m_channelMap[channel.iUniqueId]; DVBLinkRemoteStatusCode status; - switch (streamtype) + if (m_usetimeshift) { - case HTTP: - streamRequest = new RawHttpStreamRequest(m_hostname.c_str(), c->GetDvbLinkID(), m_clientname.c_str()); - break; - case RTP: - streamRequest = new RealTimeTransportProtocolStreamRequest(m_hostname.c_str(), c->GetDvbLinkID(), m_clientname.c_str(), options); - break; - case HLS: - streamRequest = new HttpLiveStreamRequest(m_hostname.c_str(), c->GetDvbLinkID(), m_clientname.c_str(), options); - break; - case ASF: - streamRequest = new WindowsMediaStreamRequest(m_hostname.c_str(), c->GetDvbLinkID(), m_clientname.c_str(), options); - break; + streamRequest = new RawHttpTimeshiftStreamRequest(m_hostname.c_str(), c->GetDvbLinkID(), m_clientname.c_str()); + } else + { + switch (streamtype) + { + case HTTP: + streamRequest = new RawHttpStreamRequest(m_hostname.c_str(), c->GetDvbLinkID(), m_clientname.c_str()); + break; + case RTP: + streamRequest = new RealTimeTransportProtocolStreamRequest(m_hostname.c_str(), c->GetDvbLinkID(), m_clientname.c_str(), options); + break; + case HLS: + streamRequest = new HttpLiveStreamRequest(m_hostname.c_str(), c->GetDvbLinkID(), m_clientname.c_str(), options); + break; + case ASF: + streamRequest = new WindowsMediaStreamRequest(m_hostname.c_str(), c->GetDvbLinkID(), m_clientname.c_str(), options); + break; + } } if ((status = m_dvblinkRemoteCommunication->PlayChannel(*streamRequest, *m_stream)) != DVBLINK_REMOTE_STATUS_OK) @@ -539,14 +526,14 @@ bool DVBLinkClient::OpenLiveStream(const PVR_CHANNEL &channel, DVBLINK_STREAMTYPE streamtype, int width, int height, int bitrate, std::string audiotrack) { - if (m_usetimeshift && streamtype == HTTP) + if (m_usetimeshift) { if (m_tsBuffer) { SAFE_DELETE(m_tsBuffer); } - m_tsBuffer = new TimeShiftBuffer(XBMC, GetLiveStreamURL(channel, streamtype, width, height, bitrate, audiotrack), m_timeshiftpath); - return m_tsBuffer->IsValid(); + m_tsBuffer = new TimeShiftBuffer(XBMC, GetLiveStreamURL(channel, streamtype, width, height, bitrate, audiotrack)); + return true; } return false; } @@ -578,6 +565,27 @@ return 0; } +time_t DVBLinkClient::GetPlayingTime() +{ + if(m_tsBuffer) + return m_tsBuffer->GetPlayingTime(); + return 0; +} + +time_t DVBLinkClient::GetBufferTimeStart() +{ + if(m_tsBuffer) + return m_tsBuffer->GetBufferTimeStart(); + return 0; +} + +time_t DVBLinkClient::GetBufferTimeEnd() +{ + if(m_tsBuffer) + return m_tsBuffer->GetBufferTimeEnd(); + return 0; +} + void DVBLinkClient::StopStreaming(bool bUseChlHandle) { PLATFORM::CLockObject critsec(m_mutex); @@ -610,53 +618,53 @@ SAFE_DELETE(request); } -void DVBLinkClient::SetEPGGenre(Program *program, EPG_TAG *tag) +void DVBLinkClient::SetEPGGenre(dvblinkremote::ItemMetadata& metadata, int& genre_type, int& genre_subtype) { - if (program->IsCatNews) + genre_type = EPG_GENRE_USE_STRING; + genre_subtype = 0x00; + + if (metadata.IsCatNews) { - tag->iGenreType = 0x20; - tag->iGenreSubType = 0x00; + genre_type = EPG_EVENT_CONTENTMASK_NEWSCURRENTAFFAIRS; + genre_subtype = 0x00; } - if (program->IsCatDocumentary) + if (metadata.IsCatDocumentary) { - tag->iGenreType = 0x20; - tag->iGenreSubType = 0x03; + genre_type = EPG_EVENT_CONTENTMASK_NEWSCURRENTAFFAIRS; + genre_subtype = 0x03; } - if (program->IsCatEducational) + if (metadata.IsCatEducational) { - tag->iGenreType = 0x90; + genre_type = EPG_EVENT_CONTENTMASK_EDUCATIONALSCIENCE; } - if (program->IsCatSports) + if (metadata.IsCatSports) { - tag->iGenreType = 0x40; + genre_type = EPG_EVENT_CONTENTMASK_SPORTS; } - - - - if (program->IsCatMovie) + if (metadata.IsCatMovie) { - tag->iGenreType = 0x10; - tag->iGenreSubType =program->IsCatThriller ? 0x01 : program->IsCatScifi ? 0x03 :program->IsCatHorror ? 0x03 : program->IsCatComedy ? 0x04 : program->IsCatSoap ? 0x05 : program->IsCatRomance ? 0x06 :program->IsCatDrama ? 0x08 : 0; + genre_type = EPG_EVENT_CONTENTMASK_MOVIEDRAMA; + genre_subtype =metadata.IsCatThriller ? 0x01 : metadata.IsCatScifi ? 0x03 :metadata.IsCatHorror ? 0x03 : metadata.IsCatComedy ? 0x04 : metadata.IsCatSoap ? 0x05 : metadata.IsCatRomance ? 0x06 :metadata.IsCatDrama ? 0x08 : 0; } - if (program->IsCatKids) + if (metadata.IsCatKids) { - tag->iGenreType = 0x50; + genre_type = EPG_EVENT_CONTENTMASK_CHILDRENYOUTH; } - if (program->IsCatMusic) + if (metadata.IsCatMusic) { - tag->iGenreType = 0x60; + genre_type = EPG_EVENT_CONTENTMASK_MUSICBALLETDANCE; } - if (program->IsCatSpecial) + if (metadata.IsCatSpecial) { - tag->iGenreType = 0xB0; + genre_type = EPG_EVENT_CONTENTMASK_SPECIAL; } } @@ -713,11 +721,19 @@ broadcast.iParentalRating = 0; broadcast.iStarRating = p->Rating; broadcast.bNotify = false; - broadcast.iSeriesNumber = 0; + broadcast.iSeriesNumber = p->SeasonNumber; broadcast.iEpisodeNumber = p->EpisodeNumber; broadcast.iEpisodePartNumber = 0; - broadcast.strEpisodeName = ""; - SetEPGGenre(p, &broadcast); + broadcast.strEpisodeName = p->SubTitle.c_str(); + + int genre_type, genre_subtype; + SetEPGGenre(*p, genre_type, genre_subtype); + broadcast.iGenreType = genre_type; + if (genre_type == EPG_GENRE_USE_STRING) + broadcast.strGenreDescription = p->Keywords.c_str(); + else + broadcast.iGenreSubType = genre_subtype; + PVR->TransferEpgEntry(handle, &broadcast); } } diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/src/DVBLinkClient.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/src/DVBLinkClient.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/src/DVBLinkClient.h 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/src/DVBLinkClient.h 2014-07-18 06:05:30.000000000 +0000 @@ -17,7 +17,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ @@ -40,12 +41,10 @@ #define DVBLINK_BUILD_IN_RECORDER_SOURCE_ID "8F94B459-EFC0-4D91-9B29-EC3D72E92677" #define DVBLINK_RECODINGS_BY_DATA_ID "F6F08949-2A07-4074-9E9D-423D877270BB" - - class DVBLinkClient : public PLATFORM::CThread { public: - DVBLinkClient(ADDON::CHelper_libXBMC_addon *XBMC, CHelper_libXBMC_pvr *PVR, std::string clientname, std::string hostname, long port, bool showinfomsg, std::string username, std::string password, bool usetimeshift, std::string timeshiftpath); + DVBLinkClient(ADDON::CHelper_libXBMC_addon *XBMC, CHelper_libXBMC_pvr *PVR, std::string clientname, std::string hostname, long port, bool showinfomsg, std::string username, std::string password, bool usetimeshift); ~DVBLinkClient(void); int GetChannelsAmount(); PVR_ERROR GetChannels(ADDON_HANDLE handle, bool bRadio); @@ -68,10 +67,13 @@ long long PositionLiveStream(void); long long LengthLiveStream(void); int ReadLiveStream(unsigned char *pBuffer, unsigned int iBufferSize); + time_t GetPlayingTime(); + time_t GetBufferTimeStart(); + time_t GetBufferTimeEnd(); private: bool DoEPGSearch(dvblinkremote::EpgSearchResult& epgSearchResult, const std::string& channelId, const long startTime, const long endTime, const std::string & programId = ""); - void SetEPGGenre(dvblinkremote::Program *program, EPG_TAG *tag); + void SetEPGGenre(dvblinkremote::ItemMetadata& metadata, int& genre_type, int& genre_subtype); std::string GetBuildInRecorderObjectID(); std::string GetRecordedTVByDateObjectID(const std::string& buildInRecoderObjectID); int GetInternalUniqueIdFromChannelId(const std::string& channelId); @@ -93,7 +95,6 @@ std::string m_clientname; std::string m_hostname; TimeShiftBuffer *m_tsBuffer; - std::string m_timeshiftpath; bool m_usetimeshift; bool m_showinfomsg; bool m_updating; diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/src/HttpPostClient.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/src/HttpPostClient.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/src/HttpPostClient.cpp 2014-01-04 10:28:19.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/src/HttpPostClient.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -17,7 +17,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/src/HttpPostClient.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/src/HttpPostClient.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/src/HttpPostClient.h 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/src/HttpPostClient.h 2014-07-18 06:05:30.000000000 +0000 @@ -17,7 +17,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/src/TimeShiftBuffer.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/src/TimeShiftBuffer.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/src/TimeShiftBuffer.cpp 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/src/TimeShiftBuffer.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -17,124 +17,182 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ - #include "TimeShiftBuffer.h" using namespace ADDON; -TimeShiftBuffer::TimeShiftBuffer(CHelper_libXBMC_addon * XBMC, std::string streampath, std::string bufferpath) +TimeShiftBuffer::TimeShiftBuffer(CHelper_libXBMC_addon * XBMC, std::string streampath) { + last_pos_req_time_ = -1; + last_pos_ = 0; + this->XBMC = XBMC; + streampath_ = streampath; - m_bufferPath = bufferpath; - m_streamHandle = XBMC->OpenFile(streampath.c_str(), 0); - m_filebufferWriteHandle = XBMC->OpenFileForWrite(m_bufferPath.c_str(),true); - Sleep(100); - m_filebufferReadHandle = XBMC->OpenFile(m_bufferPath.c_str(), 0); - m_shifting = true; - CreateThread(); + m_streamHandle = XBMC->OpenFile(streampath_.c_str(), 0); } - -bool TimeShiftBuffer::IsValid() +TimeShiftBuffer::~TimeShiftBuffer(void) { - return (m_streamHandle != NULL); + XBMC->CloseFile(m_streamHandle); } -void TimeShiftBuffer::Stop() -{ - m_shifting = false; -} -TimeShiftBuffer::~TimeShiftBuffer(void) +long long TimeShiftBuffer::Seek(long long iPosition, int iWhence) { - Stop(); - if (IsRunning()) + if (iPosition == 0 && iWhence == SEEK_CUR) { - StopThread(); + return Position(); } - if (m_filebufferWriteHandle) - { - XBMC->CloseFile(m_filebufferWriteHandle); - } - if (m_filebufferReadHandle) - { - XBMC->CloseFile(m_filebufferReadHandle); - } - if (XBMC->FileExists(m_bufferPath.c_str(), true)) - { - XBMC->DeleteFile(m_bufferPath.c_str()); - } + long long ret_val = 0; + + char param_buf[1024]; + sprintf(param_buf, "&seek=%lld&whence=%d", iPosition, iWhence); - if (m_streamHandle) + std::string req_url = streampath_; + req_url += param_buf; + + //close streaming handle before executing seek + XBMC->CloseFile(m_streamHandle); + //execute seek request + std::vector response_values; + if (ExecuteServerRequest(req_url, response_values)) { - XBMC->CloseFile(m_streamHandle); + ret_val = atoll(response_values[0].c_str()); } + + //restart streaming + m_streamHandle = XBMC->OpenFile(streampath_.c_str(), 0); + + return ret_val; } -void *TimeShiftBuffer::Process() +long long TimeShiftBuffer::Position() { - XBMC->Log(LOG_DEBUG, "TimeShiftProcess:: thread started"); - byte buffer[STREAM_READ_BUFFER_SIZE]; - int bytesRead = STREAM_READ_BUFFER_SIZE; + long long ret_val = 0; - while (m_shifting) + time_t duration; + long long length; + GetBufferParams(length, duration, ret_val); + + return ret_val; +} + +bool TimeShiftBuffer::ExecuteServerRequest(const std::string& url, std::vector& response_values) +{ + bool ret_val = false; + response_values.clear(); + + void* req_handle = XBMC->OpenFile(url.c_str(), 0); + if (req_handle != NULL) { - bytesRead = XBMC->ReadFile(m_streamHandle, buffer, sizeof(buffer)); - XBMC->WriteFile(m_filebufferWriteHandle,buffer,bytesRead); + char resp_buf[1024]; + unsigned int read = XBMC->ReadFile(req_handle, resp_buf, sizeof(resp_buf)); + + if (read > 0) + { + //add zero at the end to turn response into string + resp_buf[read] = '\0'; + char* token = strtok( resp_buf, ","); + while( token != NULL ) + { + response_values.push_back(token); + /* Get next token: */ + token = strtok(NULL, ","); + } + ret_val = response_values.size() > 0; + } + + XBMC->CloseFile(req_handle); } - XBMC->Log(LOG_DEBUG, "TimeShiftProcess:: thread stopped"); - return NULL; -} + return ret_val; +} -long long TimeShiftBuffer::Seek(long long iPosition, int iWhence) +long long TimeShiftBuffer::Length() { - if (m_filebufferReadHandle) - return XBMC->SeekFile(m_filebufferReadHandle,iPosition,iWhence); - return 0; + long long ret_val = 0; + + time_t duration; + long long cur_pos; + GetBufferParams(ret_val, duration, cur_pos); + + return ret_val; } -long long TimeShiftBuffer::Position() +bool TimeShiftBuffer::GetBufferParams(long long& length, time_t& duration, long long& cur_pos) { - if (m_filebufferReadHandle) - return XBMC->GetFilePosition(m_filebufferReadHandle); - return 0; + bool ret_val = false; + + std::string req_url = streampath_; + req_url += "&get_stats=1"; + + std::vector response_values; + if (ExecuteServerRequest(req_url, response_values) && + response_values.size() == 3) + { + length = atoll(response_values[0].c_str()); + duration = (time_t)atoll(response_values[1].c_str()); + cur_pos = atoll(response_values[2].c_str()); + ret_val = true; + } + + return ret_val; } -long long TimeShiftBuffer::Length() +int TimeShiftBuffer::ReadData(unsigned char *pBuffer, unsigned int iBufferSize) { - if (m_filebufferReadHandle) - return XBMC->GetFileLength(m_filebufferReadHandle); - return 0; + return XBMC->ReadFile(m_streamHandle, pBuffer, iBufferSize); } -int TimeShiftBuffer::ReadData(unsigned char *pBuffer, unsigned int iBufferSize) +time_t TimeShiftBuffer::GetPlayingTime() { - unsigned int totalReadBytes = 0; - unsigned int totalTimeWaited = 0; - if (m_filebufferReadHandle) - { - unsigned int read = XBMC->ReadFile(m_filebufferReadHandle, pBuffer,iBufferSize); - totalReadBytes += read; + time_t ret_val = last_pos_; - while (read < iBufferSize && totalTimeWaited < BUFFER_READ_TIMEOUT) - { - Sleep(BUFFER_READ_WAITTIME); - totalTimeWaited += BUFFER_READ_WAITTIME; - read = XBMC->ReadFile(m_filebufferReadHandle, pBuffer,iBufferSize - totalReadBytes); - totalReadBytes += read; - } + time_t now; + now = time(NULL); - if(totalTimeWaited > BUFFER_READ_TIMEOUT) + if (last_pos_req_time_ == -1 || now > last_pos_req_time_ + 1) + { + long long length, cur_pos; + time_t duration; + if (GetBufferParams(length, duration, cur_pos)) { - XBMC->Log(LOG_DEBUG, "Timeshifterbuffer timed out, waited : %d", totalTimeWaited); + ret_val = now - (time_t)((length - cur_pos) * duration / length); } + + last_pos_ = ret_val; + last_pos_req_time_ = now; } - return totalReadBytes; + + return ret_val; +} + +time_t TimeShiftBuffer::GetBufferTimeStart() +{ + time_t ret_val = 0; + + time_t now; + now = time(NULL); + + long long length, cur_pos; + time_t duration; + if (GetBufferParams(length, duration, cur_pos)) + ret_val = now - duration; + + return ret_val; +} + +time_t TimeShiftBuffer::GetBufferTimeEnd() +{ + time_t now; + now = time(NULL); + + return now; } diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/src/TimeShiftBuffer.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/src/TimeShiftBuffer.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvblink/src/TimeShiftBuffer.h 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvblink/src/TimeShiftBuffer.h 2014-07-18 06:05:30.000000000 +0000 @@ -17,46 +17,43 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ #pragma once -#ifdef TARGET_WINDOWS -#define DeleteFile DeleteFileA -#endif - #include "libXBMC_addon.h" #include "platform/util/StdString.h" #include "libdvblinkremote/dvblinkremote.h" -#include "platform/threads/threads.h" #include "platform/util/util.h" -#define STREAM_READ_BUFFER_SIZE 8192 -#define BUFFER_READ_TIMEOUT 10000 -#define BUFFER_READ_WAITTIME 50 - -class TimeShiftBuffer : public PLATFORM::CThread +class TimeShiftBuffer { public: - TimeShiftBuffer(ADDON::CHelper_libXBMC_addon * XBMC, std::string streampath, std::string bufferpath); + TimeShiftBuffer(ADDON::CHelper_libXBMC_addon * XBMC, std::string streampath); ~TimeShiftBuffer(void); + int ReadData(unsigned char *pBuffer, unsigned int iBufferSize); - bool IsValid(); long long Seek(long long iPosition, int iWhence); long long Position(); long long Length(); - void Stop(void); + void Stop(); + + time_t GetPlayingTime(); + time_t GetBufferTimeStart(); + time_t GetBufferTimeEnd(); + private: - virtual void * Process(void); + bool ExecuteServerRequest(const std::string& url, std::vector& response_values); + bool GetBufferParams(long long& length, time_t& duration, long long& cur_pos); - std::string m_bufferPath; void * m_streamHandle; - void * m_filebufferReadHandle; - void * m_filebufferWriteHandle; - bool m_shifting; ADDON::CHelper_libXBMC_addon * XBMC; + std::string streampath_; + time_t last_pos_req_time_; + time_t last_pos_; }; diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/addon.xml.in xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/addon.xml.in --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/addon.xml.in 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/addon.xml.in 2014-07-18 06:05:30.000000000 +0000 @@ -1,12 +1,12 @@ - + Το frontend του XBMC για το DVBViewer XBMC's frontend for DVBViewer XBMC's frontend for DVBViewer + XBMC's frontend for DVBViewer Frontend de XBMC para DVBViewer Frontend de XBMC para DVBViewer XBMC esi DVBViewer'ile - Client XBMC pour DVBViewer + Interface logicielle pour DVBViewer Frontal XBMC pour DVBViewer Interface de XBMC para DVBViewer ממשק קדמי של XBMC עבור DVBViewer DVBViewer pozadinski softver za XBMC XBMC DVBViwer előtér-kiszolgáló Frontend XBMC untuk DVBViewer + XBMC framendi fyrir DVBViewer Frontend XBMC per DVBViewer DVBViewer 用 XBMC フロントエンド XBMC's სამომხმარებლო მხარე DVBViewer-თვის DVBViewer XBMC 프론트엔드 + XBMC's sąsaja su DVBViewer XBMC galasistēma DVBViewer XBMC's интерфејс за DVBViewer Bahagian hadapan XBMC untuk DVBViewer XBMC's Frontend voor DVBViewer - XBMC sitt frontend for DVBViewer + XBMC sin klientdel for DVBViewer Klient XBMC dla DVBViewer Frontend XBMC para DVBViewer XBMC's frontend para DVBViewer @@ -72,31 +75,34 @@ DVBViewer Recording Service frontend; Understøtter streaming af Direkte TV, Timere, Optagelser og EPG. For parsing af XML output fra RS webinterface bruges xmlParser biblioteket, der er udviklet af Frank Vanden Berghen (http://www.applied-mathematics.net/tools/xmlParser.html). Mange tak for dette! Oberfläche für den DVBViewer-Aufnahmedienst; Unterstützt Live TV & Aufnahmen, Timer und EPG. Für das Parsen der XML-Ausgabe der RS-Weboberfläche nutzt es die xmlParser-Bibliothek, entwickelt von Frank Vanden Berghen (http://www.applied-mathematics.net/tools/xmlParser.html). Vielen Dank dafür!⏎ Frontend για την Υπηρεσία Εγγραφών του DVBViewer. Υποστηρίζει ροές Live TV, Χρονοδιακόπτες, Εγγραφές & EPG. Για την ανάλυση του XML αρχείου εξόδου από την RS διεπαφή ιστού χρησιμοποιείται η βιβλιοθήκη xmlParser που αναπτύχθηκε από τον Frank Vanden Berghen (http://www.applied-mathematics.net/tools/xmlParser.html). Θερμές ευχαριστίες για αυτό! - DVBViewer Recording Service frontend; supporting streaming of LiveTV, Timers, Recordings & EPG. For parsing the XML output from the RS webinterface it uses the xmlParser library developed by Frank Vanden Berghen (http://www.applied-mathematics.net/tools/xmlParser.html). Many thanks for this! + DVBViewer Recording Service frontend; supporting streaming of LiveTV, Timers, Recordings & EPG. DVBViewer Recording Service frontend; supporting streaming of LiveTV, Timers, Recordings & EPG. For parsing the XML output from the RS webinterface it uses the xmlParser library developed by Frank Vanden Berghen (http://www.applied-mathematics.net/tools/xmlParser.html). Many thanks for this! + DVBViewer Recording Service frontend; supporting streaming of LiveTV, Timers, Recordings & EPG. Frontend del Servicio de Grabaciones de DVBViewer; soportando transmisión de TV en Vivo, Temporizadores, Grabaciones y Guía de Programas. Para analizar la salida XML de la interfaz Web RS usa la librería xmlParser desarrollada por Frank Vanden Berghen (http://www.applied-mathematics.net/tools/xmlParser.html).⏎ Frontend del Servicio de Grabaciones de DVBViewer; soportando transmisión de TV en Vivo, Temporizadores, Grabaciones y Guía de Programas. Para analizar la salida XML de la interfaz Web RS usa la librería xmlParser desarrollada por Frank Vanden Berghen (http://www.applied-mathematics.net/tools/xmlParser.html). ¡Mucas gracias por esto!⏎ DVBViewer salvestus serveri esi; toetab televisiooni striimimist, salvestamist ja elektroonilist saatekava. RS veebilehe XML väljundi parsimiseks kasutatakse Frank Vanden Berghen poolt arendatud xmlParser teeki (http://www.applied-mathematics.net/tools/xmlParser.html). Palju tänu selle eest! Client pour le Service d'Enregistrement DVBViewer; supporte la diffusion de la TV en direct, les programmations, les enregistrements et l'EPG. Utilise la librairie xmlParser développée par Frank Vanden Berghen pour l'interprétation de la sortie XML de l'interface web du SE (http://www.applied-mathematics.net/tools/xmlParser.html). - Frontal du service d'enregistrement de DVBViewer prenant en charge la lecture en transit des télés en direct, les minuteries, les enregistrements, et le GÉP. Pour analyser la sortie XML de l'interface Web du service d'enregistrement, il utilise la bibliothèque xmlParser développée par Frank Vanden Berghen (http://www.applied-mathematics.net/tools/xmlParser.html). Un grand merci pour ceci! - Servizo da interface de gravación de DVBViewer, soporta a transmisión de TV ao vivo, temporizadores, gravacións e Guía. Para analizar a saída do XML da interface web RS fai uso da librería xmlParser desenrrolada por Frank Vanden Berghen (http://www.applied-mathematics.net/tools/xmlParser.html). Moitas Grazas! + Frontal du service d'enregistrement de DVBViewer prenant en charge la lecture en transit des télés en direct, les minuteries, les enregistrements, et le GÉP. + Servizo da interface de gravación de DVBViewer, soporta a transmisión de TV en directo, temporizadores, gravacións e Guía. Para analizar a saída do XML da interface web RS fai uso da librería xmlParser desenrrolada por Frank Vanden Berghen (http://www.applied-mathematics.net/tools/xmlParser.html). Moitas Grazas! נגן DVB ממשק קידמי של שרת הקלטה;תומך בהזרמת שידורים חיים של טלויזיה,מתזמני הקלטות ולוחות שידורים.לניתוח פלט של XML ממשק אינטרנט RS משתמש בסיפרית xmlPreser שפותחה ע"י פראנק ודן ברגן (http://www.applied-mathematics.net/tools/xmlParser.html).הרבה תודה על כך!⏎ DVBViewer pozadinski softver usluge snimanja; podržava stremanje televizije, zakazana snimanja, snimanje i EPG. Za prikupljanje podataka iz XML datoteka sa RS web sučelja koristi xmlParser zbirku koju je razvio Frank Vanden Berghen (http://www.applied-mathematics.net/tools/xmlParser.html).Puno hvala za ovo!⏎ DVBViwer felvétel szolgáltatás előtér-kiszolgáló, ami támogatja az élő TV adások sugárzását, időzítések hozzáadását, felvételek készítését és EPG adatok kezelését. Frontend Layanan Perekaman DVBViewer; Mendukung pengaliran TV secara langsung, Timer, Perekaman dan EPG. Untuk mengolah keluaran XML dari antar-muka web RS, akan menggunakan pustaka xmlParser yang dikembangkan oleh Frank Vanden Berghen (http://www.applied-mathematics.net/tools/xmlParser.html). Terimakasih untuk hal tersebut! + Framendi fyrir upptökuþjónustu DVBViewer; styður streymingu á LiveTV, tímatöku-upptökur og rafræna sjónvarpsvísa (EPG). Frontend del servizio di registrazione DVBViewer; supporta lo streaming LiveTV, i timer, la registrazione e l'EPG. Per scansionare l'output XML dell'interfaccia web RS viene utilizzata la libreria xmlParser sviluppata da Frank Vanden Berghen (http://www.applied-mathematics.net/tools/xmlParser.html). Molte grazie per questo! DVBViewer 録画サービスのフロントエンドです。LiveTV のストリーミング視聴、タイマー、録画、EPG をサポートしています。RS web インターフェースの XML 出力の読み込みには Frank Vanden Berghen 氏の開発した xmlParser ライブラリ (http://www.applied-mathematics.net/tools/xmlParser.html) を使用しています。ありがとうございます! DVBViewer ჩაწერის სერვისის სამომხმარებლო მხარე ; მხარს უჭერს LiveTV-ის სტრიმინგს, თაიმერებს, ჩანაწერებს და EPG-ს. XML-სი გამოსავლის RS ვებ-ინტერფეისიდან გამოიყენება xmlParser ბიბლიოთეკა რომელიც Frank Vanden Berghen-მა შექმნა (http://www.applied-mathematics.net/tools/xmlParser.html). რისთვისაც უღრმესი მადლობა! DVBViewer 녹화 서비스 프론트엔드; 라이브 TV 스트리밍, 녹화, EPG 지원. RS 웹인터페이스에서 XML을 추출하기 위해 Frank Vanden Berghen이 개발한 xmlParser를 이용합니다 (http://www.applied-mathematics.net/tools/xmlParser.html). Many thanks for this! - DVBViewer Recording Service galasistēma; atbalsta tiešraides TV straumēšanu, taimerus, ierakstus un EPG. Lai analizētu XML izvadi no RS tīmekļa saskarnes, tas izmanto xmlParser bibliotēku, kuru izstrādājis Frank Vanden Berghen (http://www.applied-mathematics.net/tools/xmlParser.html). Liels paldies par to! + DVBViewer įrašymo paslaugų sąsajos; remia transliaciją LiveTV, Taimeriai, įrašų ir EPG. + DVBViewer ierakstīšanas servisa galasistēma; atbalsta tiešraides TV straumēšanu, taimerus, ierakstus un EPG. DVBViewer Recording Service frontend; supporting streaming of LiveTV, Timers, Recordings & EPG. For parsing the XML output from the RS webinterface it uses the xmlParser library developed by Frank Vanden Berghen (http://www.applied-mathematics.net/tools/xmlParser.html). Many thanks for this! Bahagian hadapan perkhidmatan Rakaman DVBViewer; menyokong penstriman bagi TV Langsung, Pemasa, Rakaman & EPG. Untuk menghurai output XML dari webinterface RS ia gunakan pustaka penghurai xml yang dibangunkan oleh Frank Vanden Berghen (http://www.applied-mathematics.net/tools/xmlParser.html). Terima kasih!⏎ DVBViewer opnamen service frontend; ondersteunt streaming van LiveTV, Timers, opnamen& EPG. Voor parsing de XML output van de RS webinterface gebruikt het de xmlParser bibliotheek ontwikkelt door Frank van den Berghen (http://www.applied-mathematics.net/tools/xmlParser.html) Hartelijk bedankt voor dit! DVBViewer Recording Service frontend; støtter streaming av live TV, timere, Opptak og EPG. For å legge til XML utdata fra RS webinterface bruker det xmlParser bibloteket laget av Frank Vanden Berghen (http://www.applied-mathematics.net/tools/xmlParser.html). Mange takk for dette! - Klient usługi DVBViewer Recording Service. Wspiera strumieniowanie kanałów telewizyjnych, nagrywanie, planowanie nagrań oraz funkcje przewodnika TV. Do parsowania plików XML udostępnianych przez interfejs webowy usługi, wykorzystuje bibliotekę xmlParser opracowaną przez Franka Vanden Berghen (http://www.applied-mathematics.net/tools/xmlParser.html). Wielkie dzięki za to! + Klient usługi DVBViewer Recording Service. Wspiera strumieniowanie kanałów telewizyjnych, nagrywanie, planowanie nagrań oraz funkcje przewodnika TV. Frontend para o serviço de gravação DVBViewer; permite transmissão ao vivo de LiveTV, temporizadores, gravações e EPG. Para análise do XML emitido da webinterface RS, é utilizada a biblioteca xmlParser de Frank Vanden Berghen (http://www.applied-mathematics.net/tools/xmlParser.html). Mil obrigados por isso! DVBViewer frontend Serviço de gravações, suporta streaming de TV ao Vivo, Agendamentos, Gravações e EPG. Para analisar a saída XML do RS webinterface ele usa a biblioteca XmlParser desenvolvido por Frank Vanden Berghen (http://www.applied-mathematics.net/tools/xmlParser.html). Muito obrigado por isso! - DVBViewer serviciu interfață de înregistrare; suporta streaming de LiveTV, Timers, Înregistrări și EPG. Pentru parsarea XML din webinterface RS se folosește biblioteca xmlParser dezvoltat de Frank Vanden Berghen (http://www.applied-mathematics.net/tools/xmlParser.html). Multe mulțumiri pentru asta! + DVBViewer serviciu interfață de înregistrare; suporta streaming de LiveTV, Timers, Înregistrări și EPG. Фронтэнд сервиса записи DVBViewer; поддерживает потоковое вещание ТВ, таймеры, запись и ЕПГ. Для разбора XML-вывода RS-интерфейса использует библиотеку xmlParser, написанную Frank Vanden Berghen (http://www.applied-mathematics.net/tools/xmlParser.html). За что благодарим его!⏎ Rozhranie pre spoluprácu s nahrávacou službou aplikácie DVBViewer; podporuje streamovanie živej televízie, časovače, nahrávky a EPG. Na získavanie dát zo XML výstupu z RS webového rozhrania používa knižnicu xmlParser, ktorú vyvinul Frank Vanden Berghen (http://www.applied-mathematics.net/tools/xmlParser.html). Za to mu veľmi ďakujeme! Vmesnik za DVBViewer; podpira pretakanje televizije v živo, časovnike, snemanje & EPG. Za branje zapisa XML s spletnega vmesnika RS uporablja knjižnico xmlParser avtorja Franka Vanden Berghena (http://www.applied-mathematics.net/tools/xmlParser.html). Hvala za to! @@ -107,7 +113,7 @@ DVBViewer Recording Service frontend; LiveTV yayınını, zamanlayıcıları, kayıtları ve EPGları destekler. RS web arayüzünden XML çıktısı almak için Frank Vanden Berghen (http://www.applied-mathematics.net/tools/xmlParser.html) tarafından geliştirilmiş xmlParser kütüphanesini kullanır. Bunun için kendisine teşekkür ediyoruz! Накладка на сервіс запису DVBViewer'а; підтримує потокове LiveTV, таймери, запис та телегід. Для обробки виводу XML з RS веб-інтерфейсу використовує бібліотеку xmlParser, розроблену Франком Ванденом Бергеном (http://www.applied-mathematics.net/tools/xmlParser.html). Велика подяка йому за це! Giao tiếp DVBViewer Recording Service; hỗ trợ phát streaming LiveTV, hẹn giờ, thu chương trình và hiển thị lịch chiếu (EPG). Sử dụng trích xuất XML từ RS webinterface dựa trên thư viện xmlParser phát triển bởi Frank Vanden Berghen (http://www.applied-mathematics.net/tools/xmlParser.html). Xin cảm ơn rất nhiều! - DVBViewer 录像服务前端。支持直播电视流媒体、定时器、录像及电子节目单。RS web 接口的 XML 结果解析采用 xmlParser 库,由 Frank Vanden Berghen 开发(http://www.applied-mathematics.net/tools/xmlParser.html)。感谢作者! + DVBViewer 录像服务前端。支持直播电视、定时器、录像及电子节目单。 DVBViewer錄影服務前端;支援電視直播串流,計時器,錄影以及電子節目表功能。為了解析從RS Web界面的XML輸出,它使用由Frank Vanden Berghen (http://www.applied-mathematics.net/tools/xmlParser.html) 所開發的xmlParser 資料庫。對此致上無比謝意! Hierdie is onstabiele sagteware! Die outeurs is op geen manier verantwoordelik vir gefaalde opnames, inkorrekte tydhouers, vermorsde ure, of enige ander ongewensde effekte. This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects.. @@ -120,6 +126,7 @@ Ασταθές πρόγραμμα! Οι δημιουργοί δεν είναι σε καμία περίπτωση υπεύθυνοι για αποτυχημένες εγγραφές, λανθασμένους χρονοδιακόπτες, χαμένες ώρες, ή κάθε είδους ανεπιθύμητα αποτελέσματα.. This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects.. This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects.. + This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects.. ¡Este software es aún inestable! Los autores no son responsables en forma alguna por grabaciones fallidas, temporizaciones incorrectas, tiempo perdido o ningún otro efecto no deseado. ¡Este software es inestable! Los autores no se responsabilizan por grabaciones fallidas, temporizadores incorrectos, horas perdidas, o cualquier otro efecto no deseado.. ¡Esto es software inestable! Los autores no son de ninguna manera responsables por grabaciones fallidas, temporizadores incorrectos, horas perdidas o cualquier otro efecto no deseado... @@ -131,23 +138,25 @@ זוהי תוכנה לא יציבה! היוצרים אינם אחראים לכשלון בהקלטה, תזמונים לא נכונים, שעות מבוזבזות או כל השפעות בלתי רצויות אחרות. Ovo je nestabilan softver! Autori nisu ni na koji način odgovorani za neuspjelo snimanje, netočna zakazana snimanja, izgubjene sate, ili bilo koje druge neželjene učinke .. Ez nem stabil szoftver! A készítők nem vállalnak felelősséget, a hibás felvételért, rossz időzítésért, elvesztegetett időért... + Սա անկայուն ծրագրային ապահովում է: Հեղինակները պատասխանատու չեն վատ ձայնագրումների, սխալ ժամանակացույցերի, կորած ժամանակի կամ այլ ոչ ցանկալի երևույթների համար: Ini merupakan software yang tidak stabil! Penulis tidak bertanggung jawab untuk rekaman gagal, timer salah, waktu terbuang, atau efek tak diinginkan lainnya... - Þetta er óstöðugur hugbúnaður! Höfundarnir eru á engann hátt ábyrgir fyrir misheppnuðum upptökum, röngum upptökutímum, klukkustundum sem að fóru í súginn eða nokkrum öðrum óæskilegum áhrifum. + Þetta er óstöðugur hugbúnaður! Höfundarnir eru á engan hátt ábyrgir fyrir misheppnuðum upptökum, röngum upptökutímum, klukkustundum sem að fóru í súginn eða nokkrum öðrum óæskilegum áhrifum. Questo software è instabile! Gli autori non sono in alcun modo responsabili per registrazioni fallite, timers incorretti, ore perse, o qualsiasi altro effetto indesiderato. これは不安定なソフトウェアです!本プログラムの作者は、録画の失敗、正確に作動しなかったタイマー、無駄にした時間、その他あらゆる好ましくない結果について責任を負わないものとします。 ეს არის არასტაბილური პროგრამული უზრუნველყოფა! ავტორები არ არიან პასუხისმგებელი შეცდომებზე, არასწორ EPG-ზე, დაკარგულ დროზე ან სხვა ხარვეზებზე 이 소프트웨어는 불안정합니다! 제작자는 녹화 실패, 부정확한 타이머, 시간 낭비 및 기타 예상하지 못한 결과에 대해 책임지지 않습니다.. Tai yra nestabili programinė įranga! Autorius jokiu būdu neatsakingas už nepavykusius įrašus, neteisingus laikmačius, iššvaistytas valandas, ar nutikus kitiems nepageidaujamiems poveikiams ...[COLOR=red](xbmc.lt siūlo/rekomenduoja testuojant šį priedą persijungti į Anglų [orinali] kalbą)[/COLOR] - Šī ir nestabila programmatūra! Autori nav nekādā vaidā atbildīgi par nesanākušiem ierakstiem, nepareiziem taimeriem, iztērētām stundām vai jebkādiem citiem nevēlamiem efektiem.. + Šī ir nestabila programmatūra! Autori nav atbildīgi par nesanākušiem ierakstiem, nepareiziem taimeriem, iztērētām stundām vai jebkādiem citiem nevēlamiem efektiem.. Ова е нестабилен софтвер! Авторите на ниту еден начин не одговараат за неуспешни снимки, неточни тајмери, потрошени часови, или било кои други несакани ефекти. Ini merupakan perisian tidak stabil! Pengarang tidak bertanggungjawab atas kegagalan rakaman, pemasa tidak betul, masa yang dibazirkan, atau apa jua kesan yang tidak dikehendaki.. Deze software is niet 100% stabiel! De auteurs zijn op geen enkele wijze aansprakelijk voor mislukte opnames, verspilde tijd, of enig ander ongewild neveneffect.. - Dette er ustabil programvare! Skaperen har ikke på noen måte ansvar for feilede opptak, feile timere, bortkastede timer, eller andre uønskede effekter.. - Oprogramowanie nadal jest w fazie rozwoju i jest niestabilne! Autorzy w żaden sposób nie są odpowiedzialni za błędne nagrania, błędy planowaniu nagrań, zmarnowany czas ani jakiekolwiek inne niepożądane efekty. + Dette er ustabil programvare! Skaperen har på ingen måte ansvar for ødelagte opptak, feilstilte tidsur, bortkastede timer, eller andre uønskede effekter... + Oprogramowanie nadal jest w fazie rozwoju i jest niestabilne! Autorzy w żaden sposób nie są odpowiedzialni za nieudane nagrania, błędy w planie nagrań, zmarnowany czas ani jakiekolwiek inne niepożądane efekty. Este software é instável! Os autores não são de forma alguma responsáveis por gravações falhadas, temporizadores incorrectos, horas desperdiçadas, ou qualquer outro tipo de efeitos indesejáveis.. Este é um software instável! Os autores não são responsáveis por falhas nas gravações, agendamentos incorretos, horas desperdiçadas, ou quaisquer outros efeitos indesejáveis. Acesta nu este o aplicație definitivă! Autorii nu sunt în nici un fel responsabili pentru înregistrări eșuate, cronometre incorecte, ore pierdute, sau orice alte efecte nedorite... Это нестабильная программа! Авторы не несут ответственности за неудачные записи, неверные таймеры, потраченное время и прочие нежелательные эффекты. + මෙය අස්ථිර මෘදුකාංගයකි! මෙහි සිදුවන පටිගත කිරීම් අසාර්ථක වීම්, සාවද්‍ය මුහුර්තක, නාස්ති වූ කාලයන්, හෝ වෙනත් යමිකිසි නුසුදුසු බලපෑම් සඳහා කතෘ වග කියනු නොලැබේ. Tento softvér nie je stabilný! Autori nenesú žiadnu zodpovednosť za chybné nahrávky vysielania, nesprávne časovače alebo iné neželané udalosti spôsobené týmto softvérom.. To je nestabilna programska oprema! Avtorji niso odgovorni za neuspela snemanja, nepravilne časovnike, zapravljen čas in katerikoli drug neželen učinek... Ky program nuk është ende stabil! Autorët së këtij programi nuk janë në as një menyr përgjegjës për rregistrime të gabuara, timer të pasaktë, kohë të humbur ose efekte të tillë të padëshirueshëm. diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/changelog.txt xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/changelog.txt --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/changelog.txt 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/changelog.txt 2014-07-18 06:05:30.000000000 +0000 @@ -1,3 +1,22 @@ +1.9.16 + +[updated] Language files from Transifex + +1.9.15 + +[updated] Speed up timeshift startup time +[added] If available add genre to EPG +[added] Support for grouping recordings. Grouping can be by rec. directory, + rec. date, first letter, tv channel or series +[fixed] Another timezone offsets fix + +1.9.14 + +[updated] Require DVB Viewer Recording Service 1.26.0 or later +[updated] Removed external XML library. Use TinyXML instead +[added] Low performance mode for devices like the raspberry pi +[fixed] Timers starting near 12pm could have wrong date + 1.9.13 [updated] Language files from Transifex diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Afrikaans/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Afrikaans/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Afrikaans/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Afrikaans/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -44,6 +44,6 @@ msgid "Advanced" msgstr "Gevorderde" -msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Kan nie aan die Opname Diens konnekteer" +msgctxt "#30102" +msgid "Recordings" +msgstr "Opnames" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Albanian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Albanian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Albanian/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Albanian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -44,6 +44,6 @@ msgid "Advanced" msgstr "Të shtuar" -msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Nuk mund të lidhet me Recording Service" +msgctxt "#30102" +msgid "Recordings" +msgstr "Rregjistrime" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Arabic/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Arabic/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Arabic/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Arabic/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -31,3 +31,7 @@ msgctxt "#30101" msgid "Advanced" msgstr "منقدم" + +msgctxt "#30102" +msgid "Recordings" +msgstr "التسجيلات" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Armenian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Armenian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Armenian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Armenian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: DVBViewer Client +# Addon id: pvr.dvbviewer +# Addon Provider: jdembski, A600, Manuel Mausz, Portisch +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Armenian (http://www.transifex.com/projects/p/xbmc-main/language/hy/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hy\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30003" +msgid "Password" +msgstr "Գաղտնաբառ" + +msgctxt "#30100" +msgid "General" +msgstr "Գլխավոր" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Basque/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Basque/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Basque/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Basque/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -27,3 +27,7 @@ msgctxt "#30100" msgid "General" msgstr "Orokorra" + +msgctxt "#30102" +msgid "Recordings" +msgstr "Grabazioak" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Belarusian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Belarusian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Belarusian/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Belarusian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -44,6 +44,6 @@ msgid "Advanced" msgstr "Advanced" -msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Can't connect to the Recording Service" +msgctxt "#30102" +msgid "Recordings" +msgstr "Recordings" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Bosnian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Bosnian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Bosnian/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Bosnian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -27,3 +27,7 @@ msgctxt "#30100" msgid "General" msgstr "Opšte" + +msgctxt "#30102" +msgid "Recordings" +msgstr "Snimci" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Bulgarian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Bulgarian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Bulgarian/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Bulgarian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -34,11 +34,11 @@ msgctxt "#30010" msgid "Use favourites instead of channel list" -msgstr "Използвай любимите вместо списъка с канали" +msgstr "Ползвай любимите вместо списъка с канали" msgctxt "#30011" msgid "Use local favourites file" -msgstr "Използвай локален файл с любими" +msgstr "Ползвай локален файл с любими" msgctxt "#30012" msgid "Select the favourites.xml file" @@ -54,7 +54,7 @@ msgctxt "#30030" msgid "Use RTSP streaming for live TV" -msgstr "Използвай RTSP стрийминг за телевизия на живо" +msgstr "Ползвай RTSP стрийминг за телевизия на живо" msgctxt "#30100" msgid "General" @@ -64,10 +64,22 @@ msgid "Advanced" msgstr "Допълнителни" -msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Неуспешно свързване с услугата за записване" - -msgctxt "#30501" -msgid "Recording Service version %s or higher required" -msgstr "Изисква се услуга за записване версия %s или по-нова" +msgctxt "#30102" +msgid "Recordings" +msgstr "Записи" + +msgctxt "#30502" +msgid "Unable to parse channel list" +msgstr "Не може да се анализира каналния списък" + +msgctxt "#30503" +msgid "Check XBMC log for more information" +msgstr "Провери XBMC дневника за още информация" + +msgctxt "#30504" +msgid "Unable to open local favourites.xml" +msgstr "Не може да се отвори локалния favourites.xml" + +msgctxt "#30505" +msgid "Unable to parse favourites list" +msgstr "Не може да се анализира списъка с любими" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Burmese/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Burmese/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Burmese/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Burmese/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -31,3 +31,7 @@ msgctxt "#30101" msgid "Advanced" msgstr "အဆင့်မြင့်သော" + +msgctxt "#30102" +msgid "Recordings" +msgstr "အသံသွင်းခြင်း" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Catalan/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Catalan/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Catalan/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Catalan/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -32,10 +32,30 @@ msgid "Password" msgstr "Contrasenya" +msgctxt "#30010" +msgid "Use favourites instead of channel list" +msgstr "Utilitza favorits enlloc de llista de canals" + +msgctxt "#30011" +msgid "Use local favourites file" +msgstr "Utilitza fitxer local de favorits" + msgctxt "#30012" msgid "Select the favourites.xml file" msgstr "Seleccioneu el fitxer favourites.xml" +msgctxt "#30020" +msgid "Enable Timeshift" +msgstr "Activar Timeshift" + +msgctxt "#30021" +msgid "Timeshift buffer path" +msgstr "Camí de la memòria intermedia del Timeshift" + +msgctxt "#30030" +msgid "Use RTSP streaming for live TV" +msgstr "Utilitza flux RTSP per a TV en viu" + msgctxt "#30100" msgid "General" msgstr "General" @@ -44,6 +64,6 @@ msgid "Advanced" msgstr "Avançat" -msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "No es pot connectar amb el servei d'enregistrament" +msgctxt "#30102" +msgid "Recordings" +msgstr "Enregistraments" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Chinese (Simple)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Chinese (Simple)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Chinese (Simple)/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Chinese (Simple)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -56,6 +56,38 @@ msgid "Use RTSP streaming for live TV" msgstr "直播电视使用 RTSP 流" +msgctxt "#30040" +msgid "Enable low performance mode (disables logos & thumbnails)" +msgstr "启用低性能模式(禁用图标和缩略图)" + +msgctxt "#30050" +msgid "Group recordings" +msgstr "录像分组" + +msgctxt "#30051" +msgid "disabled" +msgstr "禁用" + +msgctxt "#30052" +msgid "by recording directory" +msgstr "按录像目录" + +msgctxt "#30053" +msgid "by recording date" +msgstr "按录像日期" + +msgctxt "#30054" +msgid "by first letter" +msgstr "按首字母" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "按电视频道" + +msgctxt "#30056" +msgid "by series" +msgstr "按系列" + msgctxt "#30100" msgid "General" msgstr "常规" @@ -64,10 +96,34 @@ msgid "Advanced" msgstr "高级" +msgctxt "#30102" +msgid "Recordings" +msgstr "录像" + msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "无法连接录像服务" +msgid "Unable to connect to the DVBViewer Recording Service" +msgstr "无法连接到 DVBViewer 录像服务" msgctxt "#30501" -msgid "Recording Service version %s or higher required" -msgstr "录像服务需要 s% 或更高版本" +msgid "DVBViewer Recording Service version %s or higher required" +msgstr "DVBViewer 录像服务需要 %s 或更高版本" + +msgctxt "#30502" +msgid "Unable to parse channel list" +msgstr "无法解析频道列表" + +msgctxt "#30503" +msgid "Check XBMC log for more information" +msgstr "更多信息见 XBMC 日志" + +msgctxt "#30504" +msgid "Unable to open local favourites.xml" +msgstr "无法打开本地 favourites.xml" + +msgctxt "#30505" +msgid "Unable to parse favourites list" +msgstr "无法解析收藏夹列表" + +msgctxt "#30506" +msgid "Unable to parse timer list" +msgstr "无法解析定时器列表" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Chinese (Traditional)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Chinese (Traditional)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Chinese (Traditional)/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Chinese (Traditional)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -52,6 +52,6 @@ msgid "Advanced" msgstr "進階" -msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "無法連接到錄影服務" +msgctxt "#30102" +msgid "Recordings" +msgstr "錄音" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Croatian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Croatian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Croatian/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Croatian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -56,6 +56,38 @@ msgid "Use RTSP streaming for live TV" msgstr "Koristi RTSP streamanje za televiziju" +msgctxt "#30040" +msgid "Enable low performance mode (disables logos & thumbnails)" +msgstr "Omogući slabije performanse (onemogući logotipove i minijature)" + +msgctxt "#30050" +msgid "Group recordings" +msgstr "Grupiraj snimanja" + +msgctxt "#30051" +msgid "disabled" +msgstr "onemogućeno" + +msgctxt "#30052" +msgid "by recording directory" +msgstr "prema direktoriju snimanja" + +msgctxt "#30053" +msgid "by recording date" +msgstr "prema datumu snimanja" + +msgctxt "#30054" +msgid "by first letter" +msgstr "prema prvom slovu" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "prema TV programu" + +msgctxt "#30056" +msgid "by series" +msgstr "prema seriji" + msgctxt "#30100" msgid "General" msgstr "Općenito" @@ -64,10 +96,34 @@ msgid "Advanced" msgstr "Napredno" +msgctxt "#30102" +msgid "Recordings" +msgstr "Snimanja" + msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Nemoguće povezivanje s uslugom snimanja" +msgid "Unable to connect to the DVBViewer Recording Service" +msgstr "Nemoguće povezivanje s DVBViewer uslugom snimanja" msgctxt "#30501" -msgid "Recording Service version %s or higher required" -msgstr "Potrebna je usluga snimanja inačice %s ili viša" +msgid "DVBViewer Recording Service version %s or higher required" +msgstr "DVBViewer usluga snimanja inačice %s ili novija je potrebna" + +msgctxt "#30502" +msgid "Unable to parse channel list" +msgstr "Nemoguća obrada popisa programa" + +msgctxt "#30503" +msgid "Check XBMC log for more information" +msgstr "Provjerite XBMC zapis za više informacija" + +msgctxt "#30504" +msgid "Unable to open local favourites.xml" +msgstr "Nemoguće otvaranje lokalne favourites.xml datoteke" + +msgctxt "#30505" +msgid "Unable to parse favourites list" +msgstr "Nemoguća obrada popisa omiljenih" + +msgctxt "#30506" +msgid "Unable to parse timer list" +msgstr "Nemoguća obrada popisa zakazanih snimanja" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Czech/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Czech/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Czech/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Czech/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -32,6 +32,14 @@ msgid "Password" msgstr "Heslo" +msgctxt "#30010" +msgid "Use favourites instead of channel list" +msgstr "Použij oblibené místo seznamu programů" + +msgctxt "#30011" +msgid "Use local favourites file" +msgstr "Použit lokální soubor oblíbených" + msgctxt "#30012" msgid "Select the favourites.xml file" msgstr "Vyberte soubor favourites.xml" @@ -44,6 +52,42 @@ msgid "Timeshift buffer path" msgstr "Cesta k zásobníku časového posunu" +msgctxt "#30030" +msgid "Use RTSP streaming for live TV" +msgstr "Použij RTSP streamování pro TV" + +msgctxt "#30040" +msgid "Enable low performance mode (disables logos & thumbnails)" +msgstr "Zapni mód nízkého výkonu (zakáže loga & náhledy)" + +msgctxt "#30050" +msgid "Group recordings" +msgstr "Seskup nahrávky" + +msgctxt "#30051" +msgid "disabled" +msgstr "zakázáno" + +msgctxt "#30052" +msgid "by recording directory" +msgstr "podle složky nahrávky" + +msgctxt "#30053" +msgid "by recording date" +msgstr "podle času nahrávky" + +msgctxt "#30054" +msgid "by first letter" +msgstr "podle počátečního písmena" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "podle tv programu" + +msgctxt "#30056" +msgid "by series" +msgstr "podle seriálu" + msgctxt "#30100" msgid "General" msgstr "Obecné" @@ -52,6 +96,34 @@ msgid "Advanced" msgstr "Pokročilé" +msgctxt "#30102" +msgid "Recordings" +msgstr "Nahrávky" + msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Nelze se spojit se službou nahrávání" +msgid "Unable to connect to the DVBViewer Recording Service" +msgstr "Nelze se spojit se službou nahrávání DBVieweru" + +msgctxt "#30501" +msgid "DVBViewer Recording Service version %s or higher required" +msgstr "Je vyžadována DVBViewer Recording Service verze %s nebo vyšší." + +msgctxt "#30502" +msgid "Unable to parse channel list" +msgstr "Nemohu parsovat seznam programů" + +msgctxt "#30503" +msgid "Check XBMC log for more information" +msgstr "Pro více informací projdi XBMC log" + +msgctxt "#30504" +msgid "Unable to open local favourites.xml" +msgstr "Nemohu otevřít lokální favourites.xml" + +msgctxt "#30505" +msgid "Unable to parse favourites list" +msgstr "Nemohu parsovat seznam oblíbených" + +msgctxt "#30506" +msgid "Unable to parse timer list" +msgstr "Nemohu parsovat seznam časovačů" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Danish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Danish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Danish/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Danish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -56,6 +56,38 @@ msgid "Use RTSP streaming for live TV" msgstr "Brug RTSP streaming til live TV" +msgctxt "#30040" +msgid "Enable low performance mode (disables logos & thumbnails)" +msgstr "Aktiver lav ydeevne tilstand (deaktiverer logoer & thumbnails)" + +msgctxt "#30050" +msgid "Group recordings" +msgstr "Gruppe optagelser" + +msgctxt "#30051" +msgid "disabled" +msgstr "deaktiveret" + +msgctxt "#30052" +msgid "by recording directory" +msgstr "ud fra optage mappe" + +msgctxt "#30053" +msgid "by recording date" +msgstr "ud fra optage dato" + +msgctxt "#30054" +msgid "by first letter" +msgstr "ud fra første bogstav" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "ud fra tv kanal" + +msgctxt "#30056" +msgid "by series" +msgstr "ud fra serier" + msgctxt "#30100" msgid "General" msgstr "Generelt" @@ -64,10 +96,34 @@ msgid "Advanced" msgstr "Avanceret" +msgctxt "#30102" +msgid "Recordings" +msgstr "Optagelser" + msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Kan ikke forbinde til optagelsestjeneste" +msgid "Unable to connect to the DVBViewer Recording Service" +msgstr "Kunne ikke oprette forbindelse til DVBViewer Optage Service" msgctxt "#30501" -msgid "Recording Service version %s or higher required" -msgstr "Optageservice version %s eller højere nødvendig" +msgid "DVBViewer Recording Service version %s or higher required" +msgstr "DVBViewer Optage Service version %s eller højere kræves" + +msgctxt "#30502" +msgid "Unable to parse channel list" +msgstr "Kan ikke analysere kanalliste" + +msgctxt "#30503" +msgid "Check XBMC log for more information" +msgstr "Tjek XBMC log for mere information" + +msgctxt "#30504" +msgid "Unable to open local favourites.xml" +msgstr "Kan ikke åbne lokal favourites.xml" + +msgctxt "#30505" +msgid "Unable to parse favourites list" +msgstr "Kunne ikke fortolke favoritliste" + +msgctxt "#30506" +msgid "Unable to parse timer list" +msgstr "Kan ikke analysere timerliste" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Dutch/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Dutch/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Dutch/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Dutch/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -56,6 +56,38 @@ msgid "Use RTSP streaming for live TV" msgstr "Gebruik RTSP streaming voor live TV" +msgctxt "#30040" +msgid "Enable low performance mode (disables logos & thumbnails)" +msgstr "Activeer lage prestatie modus (deactiveert logo's & miniaturen)" + +msgctxt "#30050" +msgid "Group recordings" +msgstr "Groepsopnamen" + +msgctxt "#30051" +msgid "disabled" +msgstr "Uitgeschakeld" + +msgctxt "#30052" +msgid "by recording directory" +msgstr "Volgens opname locatie" + +msgctxt "#30053" +msgid "by recording date" +msgstr "Volgens opname datum" + +msgctxt "#30054" +msgid "by first letter" +msgstr "Volgens eerste letter" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "Volgens TV kanaal" + +msgctxt "#30056" +msgid "by series" +msgstr "Volgens serie" + msgctxt "#30100" msgid "General" msgstr "Algemeen" @@ -64,10 +96,34 @@ msgid "Advanced" msgstr "Geavanceerd" +msgctxt "#30102" +msgid "Recordings" +msgstr "Opnames" + msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Kan geen verbinding maken met de opnamen service" +msgid "Unable to connect to the DVBViewer Recording Service" +msgstr "Kan geen verbinding maken met de DVBViewer opname service" msgctxt "#30501" -msgid "Recording Service version %s or higher required" -msgstr "Opnamen service versie %s of hoger vereist" +msgid "DVBViewer Recording Service version %s or higher required" +msgstr "DVBViewer opnamen service versie %s of hoger vereist" + +msgctxt "#30502" +msgid "Unable to parse channel list" +msgstr "Niet gelukt de kanalenlijst te laden" + +msgctxt "#30503" +msgid "Check XBMC log for more information" +msgstr "Controleer het XBMC log voor meer informatie" + +msgctxt "#30504" +msgid "Unable to open local favourites.xml" +msgstr "Niet gelukt het lokale favourites.xml te openen" + +msgctxt "#30505" +msgid "Unable to parse favourites list" +msgstr "Niet geluk de favorieten lijst te laden" + +msgctxt "#30506" +msgid "Unable to parse timer list" +msgstr "niet gelukt de timer lijst te laden" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/English/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/English/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/English/strings.po 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/English/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -64,7 +64,44 @@ msgid "Use RTSP streaming for live TV" msgstr "" -#empty strings from id 30031 to 30099 +#empty strings from id 30031 to 30039 + +msgctxt "#30040" +msgid "Enable low performance mode (disables logos & thumbnails)" +msgstr "" + +#empty strings from id 30041 to 30049 + +msgctxt "#30050" +msgid "Group recordings" +msgstr "" + +msgctxt "#30051" +msgid "disabled" +msgstr "" + +msgctxt "#30052" +msgid "by recording directory" +msgstr "" + +msgctxt "#30053" +msgid "by recording date" +msgstr "" + +msgctxt "#30054" +msgid "by first letter" +msgstr "" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "" + +msgctxt "#30056" +msgid "by series" +msgstr "" + +#empty strings from id 30057 to 30099 +#sections msgctxt "#30100" msgid "General" @@ -74,13 +111,37 @@ msgid "Advanced" msgstr "" -#empty strings from id 30102 to 30499 +msgctxt "#30102" +msgid "Recordings" +msgstr "" + +#empty strings from id 30103 to 30499 #notifications msgctxt "#30500" -msgid "Can't connect to the Recording Service" +msgid "Unable to connect to the DVBViewer Recording Service" msgstr "" msgctxt "#30501" -msgid "Recording Service version %s or higher required" +msgid "DVBViewer Recording Service version %s or higher required" +msgstr "" + +msgctxt "#30502" +msgid "Unable to parse channel list" +msgstr "" + +msgctxt "#30503" +msgid "Check XBMC log for more information" +msgstr "" + +msgctxt "#30504" +msgid "Unable to open local favourites.xml" +msgstr "" + +msgctxt "#30505" +msgid "Unable to parse favourites list" +msgstr "" + +msgctxt "#30506" +msgid "Unable to parse timer list" msgstr "" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/English (New Zealand)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/English (New Zealand)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/English (New Zealand)/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/English (New Zealand)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -56,6 +56,38 @@ msgid "Use RTSP streaming for live TV" msgstr "Use RTSP streaming for live TV" +msgctxt "#30040" +msgid "Enable low performance mode (disables logos & thumbnails)" +msgstr "Enable low performance mode (disables logos & thumbnails)" + +msgctxt "#30050" +msgid "Group recordings" +msgstr "Group recordings" + +msgctxt "#30051" +msgid "disabled" +msgstr "disabled" + +msgctxt "#30052" +msgid "by recording directory" +msgstr "by recording directory" + +msgctxt "#30053" +msgid "by recording date" +msgstr "by recording date" + +msgctxt "#30054" +msgid "by first letter" +msgstr "by first letter" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "by tv channel" + +msgctxt "#30056" +msgid "by series" +msgstr "by series" + msgctxt "#30100" msgid "General" msgstr "General" @@ -64,10 +96,34 @@ msgid "Advanced" msgstr "Advanced" +msgctxt "#30102" +msgid "Recordings" +msgstr "Recordings" + msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Can't connect to the Recording Service" +msgid "Unable to connect to the DVBViewer Recording Service" +msgstr "Unable to connect to the DVBViewer Recording Service" msgctxt "#30501" -msgid "Recording Service version %s or higher required" -msgstr "Recording Service version %s or higher required" +msgid "DVBViewer Recording Service version %s or higher required" +msgstr "DVBViewer Recording Service version %s or higher required" + +msgctxt "#30502" +msgid "Unable to parse channel list" +msgstr "Unable to parse channel list" + +msgctxt "#30503" +msgid "Check XBMC log for more information" +msgstr "Check XBMC log for more information" + +msgctxt "#30504" +msgid "Unable to open local favourites.xml" +msgstr "Unable to open local favourites.xml" + +msgctxt "#30505" +msgid "Unable to parse favourites list" +msgstr "Unable to parse favourites list" + +msgctxt "#30506" +msgid "Unable to parse timer list" +msgstr "Unable to parse timer list" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/English (US)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/English (US)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/English (US)/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/English (US)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -16,6 +16,14 @@ "Language: en_US\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgctxt "#30000" +msgid "DVBViewer Recording Service IP Address" +msgstr "DVBViewer Recording Service IP Address" + +msgctxt "#30001" +msgid "Webinterface Port" +msgstr "Webinterface Port" + msgctxt "#30002" msgid "Username" msgstr "Username" @@ -24,6 +32,62 @@ msgid "Password" msgstr "Password" +msgctxt "#30010" +msgid "Use favourites instead of channel list" +msgstr "Use favorites instead of channel list" + +msgctxt "#30011" +msgid "Use local favourites file" +msgstr "Use local favorites file" + +msgctxt "#30012" +msgid "Select the favourites.xml file" +msgstr "Select the favourites.xml file" + +msgctxt "#30020" +msgid "Enable Timeshift" +msgstr "Enable Timeshift" + +msgctxt "#30021" +msgid "Timeshift buffer path" +msgstr "Timeshift buffer path" + +msgctxt "#30030" +msgid "Use RTSP streaming for live TV" +msgstr "Use RTSP streaming for LiveTV" + +msgctxt "#30040" +msgid "Enable low performance mode (disables logos & thumbnails)" +msgstr "Enable low performance mode (disables logos & thumbnails)" + +msgctxt "#30050" +msgid "Group recordings" +msgstr "Group recordings" + +msgctxt "#30051" +msgid "disabled" +msgstr "disabled" + +msgctxt "#30052" +msgid "by recording directory" +msgstr "by recording directory" + +msgctxt "#30053" +msgid "by recording date" +msgstr "by recording date" + +msgctxt "#30054" +msgid "by first letter" +msgstr "by first letter" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "by tv channel" + +msgctxt "#30056" +msgid "by series" +msgstr "by series" + msgctxt "#30100" msgid "General" msgstr "General" @@ -31,3 +95,35 @@ msgctxt "#30101" msgid "Advanced" msgstr "Advanced" + +msgctxt "#30102" +msgid "Recordings" +msgstr "Recordings" + +msgctxt "#30500" +msgid "Unable to connect to the DVBViewer Recording Service" +msgstr "Unable to connect to the DVBViewer Recording Service" + +msgctxt "#30501" +msgid "DVBViewer Recording Service version %s or higher required" +msgstr "DVBViewer Recording Service version %s or higher required" + +msgctxt "#30502" +msgid "Unable to parse channel list" +msgstr "Unable to parse channel list" + +msgctxt "#30503" +msgid "Check XBMC log for more information" +msgstr "Check XBMC log for more information" + +msgctxt "#30504" +msgid "Unable to open local favourites.xml" +msgstr "Unable to open local favourites.xml" + +msgctxt "#30505" +msgid "Unable to parse favourites list" +msgstr "Unable to parse favorites list" + +msgctxt "#30506" +msgid "Unable to parse timer list" +msgstr "Unable to parse timer list" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Estonian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Estonian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Estonian/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Estonian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -44,6 +44,6 @@ msgid "Advanced" msgstr "Edasijõudnud" -msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Salvestus serveriga ühendamine nurjus" +msgctxt "#30102" +msgid "Recordings" +msgstr "Salvestused" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Faroese/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Faroese/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Faroese/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Faroese/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -27,3 +27,7 @@ msgctxt "#30100" msgid "General" msgstr "Vanligt" + +msgctxt "#30102" +msgid "Recordings" +msgstr "Upptøkur" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Finnish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Finnish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Finnish/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Finnish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -35,3 +35,7 @@ msgctxt "#30101" msgid "Advanced" msgstr "Lisäasetukset" + +msgctxt "#30102" +msgid "Recordings" +msgstr "Nauhoitukset" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/French/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/French/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/French/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/French/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -56,6 +56,38 @@ msgid "Use RTSP streaming for live TV" msgstr "Utiliser le streaming RTSP pour la TV Directe" +msgctxt "#30040" +msgid "Enable low performance mode (disables logos & thumbnails)" +msgstr "Permettre le mode à basses performances (désactive les logos et les vignettes)" + +msgctxt "#30050" +msgid "Group recordings" +msgstr "Grouper les enregistrements" + +msgctxt "#30051" +msgid "disabled" +msgstr "désactivé" + +msgctxt "#30052" +msgid "by recording directory" +msgstr "par dossier d'enregistrement" + +msgctxt "#30053" +msgid "by recording date" +msgstr "par date d'enregistrement" + +msgctxt "#30054" +msgid "by first letter" +msgstr "par première lettre" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "par chaîne TV" + +msgctxt "#30056" +msgid "by series" +msgstr "par séries" + msgctxt "#30100" msgid "General" msgstr "Général" @@ -64,10 +96,34 @@ msgid "Advanced" msgstr "Avancé" +msgctxt "#30102" +msgid "Recordings" +msgstr "Enregistrements" + msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Impossible de se connecter au service d'enregistrement" +msgid "Unable to connect to the DVBViewer Recording Service" +msgstr "Impossible de se connecter au service d'enregistrement DVBViewer" msgctxt "#30501" -msgid "Recording Service version %s or higher required" -msgstr "Version du service d'enregistrement %s ou supérieur requisé" +msgid "DVBViewer Recording Service version %s or higher required" +msgstr "La version %s ou ultérieure du service d'enregistrement DVBViewer est exigée" + +msgctxt "#30502" +msgid "Unable to parse channel list" +msgstr "Impossible d'analyser la liste des chaînes" + +msgctxt "#30503" +msgid "Check XBMC log for more information" +msgstr "Consultez le journal de XBMC pour plus d'informations" + +msgctxt "#30504" +msgid "Unable to open local favourites.xml" +msgstr "Impossible d'ouvrir le fichier favourites.xml local" + +msgctxt "#30505" +msgid "Unable to parse favourites list" +msgstr "Impossible d'analyser la liste des favoris" + +msgctxt "#30506" +msgid "Unable to parse timer list" +msgstr "Impossible d'analyser la liste des minuteries" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/French (Canada)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/French (Canada)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/French (Canada)/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/French (Canada)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -54,7 +54,39 @@ msgctxt "#30030" msgid "Use RTSP streaming for live TV" -msgstr "Utiliser la lecture en transit pour la télé en direct " +msgstr "Utiliser la lecture en transit RTSP pour la télé en direct " + +msgctxt "#30040" +msgid "Enable low performance mode (disables logos & thumbnails)" +msgstr "Permettre le mode à basse performance (désactive les logos et les imagettes)" + +msgctxt "#30050" +msgid "Group recordings" +msgstr "Grouper les enregistrements" + +msgctxt "#30051" +msgid "disabled" +msgstr "désactivé" + +msgctxt "#30052" +msgid "by recording directory" +msgstr "par répertoire d'enregistrement" + +msgctxt "#30053" +msgid "by recording date" +msgstr "par date d'enregistrement" + +msgctxt "#30054" +msgid "by first letter" +msgstr "par première lettre" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "par chaîne télé" + +msgctxt "#30056" +msgid "by series" +msgstr "par série" msgctxt "#30100" msgid "General" @@ -64,10 +96,34 @@ msgid "Advanced" msgstr "Avancé" +msgctxt "#30102" +msgid "Recordings" +msgstr "Enregistrements" + msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Impossible de se connecter au service d'enregistrement" +msgid "Unable to connect to the DVBViewer Recording Service" +msgstr "Impossible de se connecter au service d'enregistrement DVBViewer" msgctxt "#30501" -msgid "Recording Service version %s or higher required" -msgstr "La version %s ou ultérieure du service d'enregistrement est exigée" +msgid "DVBViewer Recording Service version %s or higher required" +msgstr "La version %s ou ultérieure du service d'enregistrement DVBViewer est exigée" + +msgctxt "#30502" +msgid "Unable to parse channel list" +msgstr "Impossible d'analyser la liste des chaînes" + +msgctxt "#30503" +msgid "Check XBMC log for more information" +msgstr "Consultez le journal de XBMC pour plus d'informations" + +msgctxt "#30504" +msgid "Unable to open local favourites.xml" +msgstr "Impossible d'ouvrir le fichier favourites.xml local" + +msgctxt "#30505" +msgid "Unable to parse favourites list" +msgstr "Impossible d'analyser la liste des favoris" + +msgctxt "#30506" +msgid "Unable to parse timer list" +msgstr "Impossible d'analyser la liste des minuteries" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Galician/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Galician/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Galician/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Galician/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -38,7 +38,7 @@ msgctxt "#30011" msgid "Use local favourites file" -msgstr "Usar o ficheiro de favoritos locales" +msgstr "Usar o ficheiro de favoritos locais" msgctxt "#30012" msgid "Select the favourites.xml file" @@ -46,7 +46,7 @@ msgctxt "#30020" msgid "Enable Timeshift" -msgstr "Habilitar Timeshift" +msgstr "Activar Timeshift" msgctxt "#30021" msgid "Timeshift buffer path" @@ -54,7 +54,39 @@ msgctxt "#30030" msgid "Use RTSP streaming for live TV" -msgstr "Usar a transmisión RTSP para a TV ao vivo" +msgstr "Usar a transmisión RTSP para a TV en directo" + +msgctxt "#30040" +msgid "Enable low performance mode (disables logos & thumbnails)" +msgstr "Habilitar modo de baixo rendemento (deshabilita logos e previos)" + +msgctxt "#30050" +msgid "Group recordings" +msgstr "Gravacións en grupo" + +msgctxt "#30051" +msgid "disabled" +msgstr "deshabilitado" + +msgctxt "#30052" +msgid "by recording directory" +msgstr "por cartafol de gravación" + +msgctxt "#30053" +msgid "by recording date" +msgstr "por data de gravación" + +msgctxt "#30054" +msgid "by first letter" +msgstr "pola primeira letra" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "por canle de tv" + +msgctxt "#30056" +msgid "by series" +msgstr "por series" msgctxt "#30100" msgid "General" @@ -64,10 +96,34 @@ msgid "Advanced" msgstr "Avanzado" +msgctxt "#30102" +msgid "Recordings" +msgstr "Gravacións" + msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Non se puido conectar ao servizo de gravación" +msgid "Unable to connect to the DVBViewer Recording Service" +msgstr "Non foi posíbel conectarse ao Servizo de Gravación DVBViewer" msgctxt "#30501" -msgid "Recording Service version %s or higher required" -msgstr "Requírese a versión %s ou superior do servizo" +msgid "DVBViewer Recording Service version %s or higher required" +msgstr "Requírese a versión %s ou superior do Servizo de Gravación DVBViewer" + +msgctxt "#30502" +msgid "Unable to parse channel list" +msgstr "Non foi posíbel analizar a lista de canles" + +msgctxt "#30503" +msgid "Check XBMC log for more information" +msgstr "Verifique o rexistro de XBMC para máis información" + +msgctxt "#30504" +msgid "Unable to open local favourites.xml" +msgstr "Non foi posíbel abrir o favourites.xml local" + +msgctxt "#30505" +msgid "Unable to parse favourites list" +msgstr "Non foi posíbel analizar a lista de favoritos" + +msgctxt "#30506" +msgid "Unable to parse timer list" +msgstr "Non foi posíbel analizar a lista de temporizadores" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Georgian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Georgian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Georgian/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Georgian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -63,11 +63,3 @@ msgctxt "#30101" msgid "Advanced" msgstr "დამატებით" - -msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "ვერ ვუკავშირდები ჩაწერის სერვისს" - -msgctxt "#30501" -msgid "Recording Service version %s or higher required" -msgstr "საჭიროა ჩაწერის სერვისის %s ან უფრო ახალი ვერსია" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/German/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/German/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/German/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/German/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -22,7 +22,7 @@ msgctxt "#30001" msgid "Webinterface Port" -msgstr "Weboberfläche Port" +msgstr "Weboberflächenport" msgctxt "#30002" msgid "Username" @@ -56,6 +56,38 @@ msgid "Use RTSP streaming for live TV" msgstr "RTSP-Streaming für Live TV verwenden" +msgctxt "#30040" +msgid "Enable low performance mode (disables logos & thumbnails)" +msgstr "Niedrigen Leistungsmodus aktivieren (deaktiviert Logos & Miniaturansichten)" + +msgctxt "#30050" +msgid "Group recordings" +msgstr "Gruppenaufnahmen" + +msgctxt "#30051" +msgid "disabled" +msgstr "deaktiviert" + +msgctxt "#30052" +msgid "by recording directory" +msgstr "nach Aufnameverzeichnis" + +msgctxt "#30053" +msgid "by recording date" +msgstr "nach Aufnahmedatum" + +msgctxt "#30054" +msgid "by first letter" +msgstr "nach dem ersten Buchstaben" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "nach Fernsehsender" + +msgctxt "#30056" +msgid "by series" +msgstr "nach Serie" + msgctxt "#30100" msgid "General" msgstr "Allgemein" @@ -64,10 +96,34 @@ msgid "Advanced" msgstr "Fortgeschritten" +msgctxt "#30102" +msgid "Recordings" +msgstr "Aufnahmen" + msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Kann keine Verbindung mit dem Aufzeichnungsdienst herstellen" +msgid "Unable to connect to the DVBViewer Recording Service" +msgstr "Mit dem DVBViewer-Aufnahmedienst konnte nicht verbunden werden" msgctxt "#30501" -msgid "Recording Service version %s or higher required" -msgstr "Aufzeichnungsdienst in Version %s oder höher wird benötigt" +msgid "DVBViewer Recording Service version %s or higher required" +msgstr "DVBViewer Aufnahme-Dienst Version %s oder höher wird benötigt" + +msgctxt "#30502" +msgid "Unable to parse channel list" +msgstr "Kanal-Liste konnte nicht eingelesen werden" + +msgctxt "#30503" +msgid "Check XBMC log for more information" +msgstr "Überprüfen Sie das XBMC-Protokoll für weitere Informationen" + +msgctxt "#30504" +msgid "Unable to open local favourites.xml" +msgstr "Lokale favourites.xml konnte nicht geladen werden" + +msgctxt "#30505" +msgid "Unable to parse favourites list" +msgstr "Favoriten-Liste konnte nicht eingelesen werden" + +msgctxt "#30506" +msgid "Unable to parse timer list" +msgstr "Timer-Liste konnte nicht eingelesen werden" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Greek/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Greek/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Greek/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Greek/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -56,6 +56,38 @@ msgid "Use RTSP streaming for live TV" msgstr "Χρήση ροής RTSP για ζωντανή τηλεόρασης" +msgctxt "#30040" +msgid "Enable low performance mode (disables logos & thumbnails)" +msgstr "Λειτουργία χαμηλής απόδοσης (απενεργοποιεί λογότυπα & μικρογραφίες)" + +msgctxt "#30050" +msgid "Group recordings" +msgstr "Εγγραφές γκρουπ" + +msgctxt "#30051" +msgid "disabled" +msgstr "ανενεργό" + +msgctxt "#30052" +msgid "by recording directory" +msgstr "ανά φάκελο εγγραφής" + +msgctxt "#30053" +msgid "by recording date" +msgstr "ανά ημερομηνία εγγραφής" + +msgctxt "#30054" +msgid "by first letter" +msgstr "αλφαβητικά" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "ανά κανάλι" + +msgctxt "#30056" +msgid "by series" +msgstr "ανά σειρά" + msgctxt "#30100" msgid "General" msgstr "Γενικά" @@ -64,10 +96,34 @@ msgid "Advanced" msgstr "Για Προχωρημένους" +msgctxt "#30102" +msgid "Recordings" +msgstr "Εγγραφές" + msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Αδυναμία σύνδεσης με την Υπηρεσία Εγγραφών" +msgid "Unable to connect to the DVBViewer Recording Service" +msgstr "Αδυναμία σύνδεσης με την Υπηρεσία Εγγραφών του DVBViewer" msgctxt "#30501" -msgid "Recording Service version %s or higher required" -msgstr "Απαιτείται η έκδοση %s ή ανώτερη για το Recording Service" +msgid "DVBViewer Recording Service version %s or higher required" +msgstr "Απαιτείται η έκδοση %s ή ανώτερη για την Υπηρεσία Εγγραφών του DVBViewer" + +msgctxt "#30502" +msgid "Unable to parse channel list" +msgstr "Αδυναμία ανάλυσης της λίστας καναλιών" + +msgctxt "#30503" +msgid "Check XBMC log for more information" +msgstr "Ελέγξτε το αρχείο καταγραφής του XBMC για περισσότερες πληροφορίες" + +msgctxt "#30504" +msgid "Unable to open local favourites.xml" +msgstr "Αδυναμία χρήσης του τοπικού αρχείου favourites.xml" + +msgctxt "#30505" +msgid "Unable to parse favourites list" +msgstr "Αδυναμία ανάλυσης της λίστας αγαπημένων" + +msgctxt "#30506" +msgid "Unable to parse timer list" +msgstr "Αδυναμία ανάλυσης της λίστας χρονοδιακοπτών" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Haitian (Haitian Creole)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Haitian (Haitian Creole)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Haitian (Haitian Creole)/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Haitian (Haitian Creole)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -23,7 +23,3 @@ msgctxt "#30003" msgid "Password" msgstr "mo de pas" - -msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Pa ka konekte ak sevis enrejistremen" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Hebrew/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Hebrew/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Hebrew/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Hebrew/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -56,6 +56,14 @@ msgid "Use RTSP streaming for live TV" msgstr "השתמש בהזרמת RTSP לשידור חי" +msgctxt "#30050" +msgid "Group recordings" +msgstr "קבוצת הקלטה" + +msgctxt "#30051" +msgid "disabled" +msgstr "מבוטל" + msgctxt "#30100" msgid "General" msgstr "כללי" @@ -64,10 +72,6 @@ msgid "Advanced" msgstr "מתקדם" -msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "אין אפשרות להתחבר לשירות ההקלטה" - -msgctxt "#30501" -msgid "Recording Service version %s or higher required" -msgstr "נדרשת לפחות גרסת שירות הקלטות %s" +msgctxt "#30102" +msgid "Recordings" +msgstr "הקלטות" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Hungarian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Hungarian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Hungarian/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Hungarian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -56,6 +56,38 @@ msgid "Use RTSP streaming for live TV" msgstr "RTSP adatfolyam használata az elő TV-hez" +msgctxt "#30040" +msgid "Enable low performance mode (disables logos & thumbnails)" +msgstr "Alacsony teljesítményigényű mód (logók és bélyegképek letiltása)" + +msgctxt "#30050" +msgid "Group recordings" +msgstr "Felvételek csoportosítása" + +msgctxt "#30051" +msgid "disabled" +msgstr "letiltva" + +msgctxt "#30052" +msgid "by recording directory" +msgstr "felvétel könyvtár szerint" + +msgctxt "#30053" +msgid "by recording date" +msgstr "felvétel dátuma szerint" + +msgctxt "#30054" +msgid "by first letter" +msgstr "Kezdőbetű szerint" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "Tv csatorna szerint" + +msgctxt "#30056" +msgid "by series" +msgstr "sorozat szerint" + msgctxt "#30100" msgid "General" msgstr "Általános" @@ -64,10 +96,34 @@ msgid "Advanced" msgstr "Haladó" +msgctxt "#30102" +msgid "Recordings" +msgstr "Felvételek" + msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Nem lehet a felvétel szolgáltatáshoz csatlakozni" +msgid "Unable to connect to the DVBViewer Recording Service" +msgstr "Nem lehet a DVBViewer felvétel szolgáltatáshoz csatlakozni" msgctxt "#30501" -msgid "Recording Service version %s or higher required" -msgstr "Felvétel szolgáltatás verzió %s vagy nagyobb szükséges" +msgid "DVBViewer Recording Service version %s or higher required" +msgstr "DVBViewer Felvétel Szolgáltatás verzió %s vagy nagyobb szükséges" + +msgctxt "#30502" +msgid "Unable to parse channel list" +msgstr "Csatornalista nem összeállítható" + +msgctxt "#30503" +msgid "Check XBMC log for more information" +msgstr "További információk az XBMC logban" + +msgctxt "#30504" +msgid "Unable to open local favourites.xml" +msgstr "A heyli favourites.xml fájl nem megnyitható" + +msgctxt "#30505" +msgid "Unable to parse favourites list" +msgstr "A kedvencek lista nem összeállítható" + +msgctxt "#30506" +msgid "Unable to parse timer list" +msgstr "A felvételi lista nem összeállítható" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Icelandic/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Icelandic/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Icelandic/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Icelandic/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -16,6 +16,14 @@ "Language: is\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgctxt "#30000" +msgid "DVBViewer Recording Service IP Address" +msgstr "IP netfang fyrir upptökuþjónustu DVBViewer" + +msgctxt "#30001" +msgid "Webinterface Port" +msgstr "Gátt vefviðmóts" + msgctxt "#30002" msgid "Username" msgstr "Notandanafn" @@ -24,10 +32,98 @@ msgid "Password" msgstr "Lykilorð" +msgctxt "#30010" +msgid "Use favourites instead of channel list" +msgstr "Nota uppáhaldslista í staðinn fyrir rásalista" + +msgctxt "#30011" +msgid "Use local favourites file" +msgstr "Nota staðværa uppáhaldslista" + msgctxt "#30012" msgid "Select the favourites.xml file" msgstr "Veldu favourites.xml skrána" +msgctxt "#30020" +msgid "Enable Timeshift" +msgstr "Virkja Tímahliðrun" + +msgctxt "#30021" +msgid "Timeshift buffer path" +msgstr "Slóð á biðminni Tímahliðrunar" + +msgctxt "#30030" +msgid "Use RTSP streaming for live TV" +msgstr "Nota RTSP straum fyrir beinar sjónvarpsútsendingar" + +msgctxt "#30040" +msgid "Enable low performance mode (disables logos & thumbnails)" +msgstr "Virkja ham fyrir litla vinnslu (gera óvirkar táknmyndir og smámyndir)" + +msgctxt "#30050" +msgid "Group recordings" +msgstr "Hópa upptökur" + +msgctxt "#30051" +msgid "disabled" +msgstr "óvirkt" + +msgctxt "#30052" +msgid "by recording directory" +msgstr "eftir upptökumöppu" + +msgctxt "#30053" +msgid "by recording date" +msgstr "eftir upptökudagsetningu" + +msgctxt "#30054" +msgid "by first letter" +msgstr "eftir fyrsta staf" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "eftir sjónvarpsrás" + +msgctxt "#30056" +msgid "by series" +msgstr "eftir seríum" + msgctxt "#30100" msgid "General" msgstr "Almennt" + +msgctxt "#30101" +msgid "Advanced" +msgstr "Ítarlegt" + +msgctxt "#30102" +msgid "Recordings" +msgstr "Upptökur" + +msgctxt "#30500" +msgid "Unable to connect to the DVBViewer Recording Service" +msgstr "Gat ekki tengst DVBViewer upptökuþjónustunni" + +msgctxt "#30501" +msgid "DVBViewer Recording Service version %s or higher required" +msgstr "Þarfnast útgáfu %s eða nýrri af DVBViewer upptökuþjónustunni" + +msgctxt "#30502" +msgid "Unable to parse channel list" +msgstr "Gat ekki þáttað rásalista" + +msgctxt "#30503" +msgid "Check XBMC log for more information" +msgstr "Skoðaðu XBMC atburðaskránna fyrir nánari upplýsingar" + +msgctxt "#30504" +msgid "Unable to open local favourites.xml" +msgstr "Gat ekki opnað staðværa favourites.xml skrá" + +msgctxt "#30505" +msgid "Unable to parse favourites list" +msgstr "Gat ekki þáttað uppáhaldslistann" + +msgctxt "#30506" +msgid "Unable to parse timer list" +msgstr "Gat ekki þáttað tímatöku listann" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Indonesian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Indonesian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Indonesian/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Indonesian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -64,10 +64,6 @@ msgid "Advanced" msgstr "Lanjutan" -msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Tidak bisa terkoneksi dengan Layanan Perekaman" - -msgctxt "#30501" -msgid "Recording Service version %s or higher required" -msgstr "Membutuhkan Layanan Perekaman versi %s atau yang lebih tinggi" +msgctxt "#30102" +msgid "Recordings" +msgstr "Perekaman" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Italian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Italian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Italian/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Italian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -56,6 +56,38 @@ msgid "Use RTSP streaming for live TV" msgstr "Utilizza streaming RTSP per la TV live" +msgctxt "#30040" +msgid "Enable low performance mode (disables logos & thumbnails)" +msgstr "Abilità modalità leggera (disabilita loghi e anteprime)" + +msgctxt "#30050" +msgid "Group recordings" +msgstr "Raggruppa registrazioni" + +msgctxt "#30051" +msgid "disabled" +msgstr "disabilitato" + +msgctxt "#30052" +msgid "by recording directory" +msgstr "per cartella di registrazione" + +msgctxt "#30053" +msgid "by recording date" +msgstr "per data di registrazione" + +msgctxt "#30054" +msgid "by first letter" +msgstr "per lettera iniziale" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "per canale tv" + +msgctxt "#30056" +msgid "by series" +msgstr "per serie" + msgctxt "#30100" msgid "General" msgstr "Generale" @@ -64,10 +96,34 @@ msgid "Advanced" msgstr "Avanzato" +msgctxt "#30102" +msgid "Recordings" +msgstr "Registrazioni" + msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Impossibile connettersi al servizio di registrazione" +msgid "Unable to connect to the DVBViewer Recording Service" +msgstr "Non posso connettermi al DVBViewer Recording Service" msgctxt "#30501" -msgid "Recording Service version %s or higher required" -msgstr "Richiesta la versione %s o maggiore del Recording Service" +msgid "DVBViewer Recording Service version %s or higher required" +msgstr "Versione %s del DVBViewer Recording Service richiesta" + +msgctxt "#30502" +msgid "Unable to parse channel list" +msgstr "Impossibile analizzare la lista canali" + +msgctxt "#30503" +msgid "Check XBMC log for more information" +msgstr "Controlla il log XBMC per maggiori informazioni" + +msgctxt "#30504" +msgid "Unable to open local favourites.xml" +msgstr "Impossibile aprire favourites.xml locale" + +msgctxt "#30505" +msgid "Unable to parse favourites list" +msgstr "Impossibile analizzare la lista preferiti" + +msgctxt "#30506" +msgid "Unable to parse timer list" +msgstr "Impossibile analizzare la lista timer" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Japanese/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Japanese/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Japanese/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Japanese/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -32,6 +32,14 @@ msgid "Password" msgstr "パスワード" +msgctxt "#30010" +msgid "Use favourites instead of channel list" +msgstr "チャンネルリストの代わりにお気に入りを使用" + +msgctxt "#30011" +msgid "Use local favourites file" +msgstr "ローカルのお気に入りファイルを使用" + msgctxt "#30012" msgid "Select the favourites.xml file" msgstr "favourites.xml ファイルを選択" @@ -44,6 +52,42 @@ msgid "Timeshift buffer path" msgstr "タイムシフト用バッファのパス" +msgctxt "#30030" +msgid "Use RTSP streaming for live TV" +msgstr "ライブ TV に RTSP ストリーミングを使用" + +msgctxt "#30040" +msgid "Enable low performance mode (disables logos & thumbnails)" +msgstr "低パフォーマンスモードを有効に(ロゴやサムネールを無効に)" + +msgctxt "#30050" +msgid "Group recordings" +msgstr "グループ録画" + +msgctxt "#30051" +msgid "disabled" +msgstr "無効" + +msgctxt "#30052" +msgid "by recording directory" +msgstr "録画ディレクトリ順" + +msgctxt "#30053" +msgid "by recording date" +msgstr "録画年月日順" + +msgctxt "#30054" +msgid "by first letter" +msgstr "あいうえお順" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "チャンネル順" + +msgctxt "#30056" +msgid "by series" +msgstr "シリーズ順" + msgctxt "#30100" msgid "General" msgstr "一般" @@ -52,6 +96,34 @@ msgid "Advanced" msgstr "高度な設定" +msgctxt "#30102" +msgid "Recordings" +msgstr "録音" + msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "録画サービスに接続できません" +msgid "Unable to connect to the DVBViewer Recording Service" +msgstr "DVBViewer 録画サービスに接続できませんでした" + +msgctxt "#30501" +msgid "DVBViewer Recording Service version %s or higher required" +msgstr "DVBViewer 録画サービスバージョン %s 以上が必要です" + +msgctxt "#30502" +msgid "Unable to parse channel list" +msgstr "チャンネルリストの解析に失敗しました" + +msgctxt "#30503" +msgid "Check XBMC log for more information" +msgstr "詳しくは XBMC のログを参照してください" + +msgctxt "#30504" +msgid "Unable to open local favourites.xml" +msgstr "ローカルのお気に入りファイルを開けませんでした" + +msgctxt "#30505" +msgid "Unable to parse favourites list" +msgstr "お気に入りリストの読み込みに失敗しました" + +msgctxt "#30506" +msgid "Unable to parse timer list" +msgstr "タイマーリストの読み込みに失敗しました" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Korean/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Korean/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Korean/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Korean/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -32,10 +32,38 @@ msgid "Password" msgstr "비밀번호" +msgctxt "#30010" +msgid "Use favourites instead of channel list" +msgstr "채널 목록 대신 즐겨찾기 사용" + +msgctxt "#30011" +msgid "Use local favourites file" +msgstr "로컬 즐겨찾기 사용" + msgctxt "#30012" msgid "Select the favourites.xml file" msgstr "favourites.xml 파일 선택" +msgctxt "#30020" +msgid "Enable Timeshift" +msgstr "타임시프트 사용" + +msgctxt "#30021" +msgid "Timeshift buffer path" +msgstr "타임시프트 버퍼 경로" + +msgctxt "#30030" +msgid "Use RTSP streaming for live TV" +msgstr "TV 시청에 RTSP 스트리밍 사용" + +msgctxt "#30040" +msgid "Enable low performance mode (disables logos & thumbnails)" +msgstr "저성능 모드 사용 (로고와 썸네일 사용하지 않음)" + +msgctxt "#30051" +msgid "disabled" +msgstr "사용 안 함" + msgctxt "#30100" msgid "General" msgstr "일반" @@ -44,6 +72,6 @@ msgid "Advanced" msgstr "고급" -msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "녹화 서비스에 연결할 수 없음" +msgctxt "#30102" +msgid "Recordings" +msgstr "녹화" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Latvian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Latvian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Latvian/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Latvian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -18,7 +18,7 @@ msgctxt "#30000" msgid "DVBViewer Recording Service IP Address" -msgstr "DVBViewer Recording Service IP adrese" +msgstr "DVBViewer ierakstīšanas servisa IP adrese" msgctxt "#30001" msgid "Webinterface Port" @@ -34,15 +34,15 @@ msgctxt "#30010" msgid "Use favourites instead of channel list" -msgstr "Channel list vietā izmantot favourites" +msgstr "Kanālu saraksta vietā izmantot izlasi" msgctxt "#30011" msgid "Use local favourites file" -msgstr "Izmantot lokālu favourites failu" +msgstr "Izmantot lokālo izlases failu" msgctxt "#30012" msgid "Select the favourites.xml file" -msgstr "Izvēlēties favourites.xml failu" +msgstr "Atlasīt favourites.xml failu" msgctxt "#30020" msgid "Enable Timeshift" @@ -56,6 +56,38 @@ msgid "Use RTSP streaming for live TV" msgstr "Izmantot RTSP straumēšanu tiešraides TV" +msgctxt "#30040" +msgid "Enable low performance mode (disables logos & thumbnails)" +msgstr "Ieslēgt mazas efektivitātes režīmu (izslēdz logo & sīktēlus)" + +msgctxt "#30050" +msgid "Group recordings" +msgstr "Grupas ieraksti" + +msgctxt "#30051" +msgid "disabled" +msgstr "izslēgts" + +msgctxt "#30052" +msgid "by recording directory" +msgstr "pēc ierakstīšanas direktorijas" + +msgctxt "#30053" +msgid "by recording date" +msgstr "pēc ierakstīšanas datuma" + +msgctxt "#30054" +msgid "by first letter" +msgstr "pēc pirmā burta" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "pēc tv kanāla" + +msgctxt "#30056" +msgid "by series" +msgstr "pēc sērijas" + msgctxt "#30100" msgid "General" msgstr "Vispārīgi" @@ -64,10 +96,34 @@ msgid "Advanced" msgstr "Papildus" +msgctxt "#30102" +msgid "Recordings" +msgstr "Ieraksti" + msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Nevar savienoties ar Recording Service" +msgid "Unable to connect to the DVBViewer Recording Service" +msgstr "Nevar pieslēgties DVBViewer ierakstīšanas servisam" msgctxt "#30501" -msgid "Recording Service version %s or higher required" -msgstr "Nepieciešama Recording Service %s vai jaunāka versija" +msgid "DVBViewer Recording Service version %s or higher required" +msgstr "Nepieciešams DVBViewer ierakstīšanas serviss %s vai jaunāka versija" + +msgctxt "#30502" +msgid "Unable to parse channel list" +msgstr "Nevar parsēt kanālu sarakstu" + +msgctxt "#30503" +msgid "Check XBMC log for more information" +msgstr "Pārbaudiet XBMC žurnālu plašākai informācijai" + +msgctxt "#30504" +msgid "Unable to open local favourites.xml" +msgstr "Nevar atvērt lokālo favourites.xml" + +msgctxt "#30505" +msgid "Unable to parse favourites list" +msgstr "Nevar parsēt izlases sarakstu" + +msgctxt "#30506" +msgid "Unable to parse timer list" +msgstr "Nevar parsēt taimera sarakstu" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Lithuanian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Lithuanian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Lithuanian/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Lithuanian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -16,6 +16,10 @@ "Language: lt\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +msgctxt "#30000" +msgid "DVBViewer Recording Service IP Address" +msgstr "DVBViewer įrašymo paslaugų IP adresas" + msgctxt "#30001" msgid "Webinterface Port" msgstr "Web sąsajos prievadas" @@ -28,6 +32,62 @@ msgid "Password" msgstr "Slaptažodis" +msgctxt "#30010" +msgid "Use favourites instead of channel list" +msgstr "Naudoti mėgstamiausi vietoj kanalų sąrašo" + +msgctxt "#30011" +msgid "Use local favourites file" +msgstr "Naudoti vietinį mėgstamiausią failą" + +msgctxt "#30012" +msgid "Select the favourites.xml file" +msgstr "Pasirinkti favourites.xml failą" + +msgctxt "#30020" +msgid "Enable Timeshift" +msgstr "Įjungti laiko poslinkį" + +msgctxt "#30021" +msgid "Timeshift buffer path" +msgstr "Laiko poslinkio buferio kelias" + +msgctxt "#30030" +msgid "Use RTSP streaming for live TV" +msgstr "Naudoti RTSP transliaciją Live TV" + +msgctxt "#30040" +msgid "Enable low performance mode (disables logos & thumbnails)" +msgstr "Įjungti mažo veiksmingumo režimą (išjungia logotipus ir miniatiūras)" + +msgctxt "#30050" +msgid "Group recordings" +msgstr "Grupiniai įrašai" + +msgctxt "#30051" +msgid "disabled" +msgstr "išjungta" + +msgctxt "#30052" +msgid "by recording directory" +msgstr "pagal įrašymo katalogą" + +msgctxt "#30053" +msgid "by recording date" +msgstr "pagal įrašymo datą" + +msgctxt "#30054" +msgid "by first letter" +msgstr "pagal pirmą raidę" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "pagal TV kanalą" + +msgctxt "#30056" +msgid "by series" +msgstr "pagal seriją" + msgctxt "#30100" msgid "General" msgstr "Pagrindinis" @@ -35,3 +95,35 @@ msgctxt "#30101" msgid "Advanced" msgstr "Išplėstinis" + +msgctxt "#30102" +msgid "Recordings" +msgstr "Įrašai" + +msgctxt "#30500" +msgid "Unable to connect to the DVBViewer Recording Service" +msgstr "Nepavyko prisijungti prie DVBViewer įrašymo paslaugų" + +msgctxt "#30501" +msgid "DVBViewer Recording Service version %s or higher required" +msgstr "DVBViewer įrašymo paslaugų versija %s arba didesnę būtinąją" + +msgctxt "#30502" +msgid "Unable to parse channel list" +msgstr "Nepavyko apdoroti kanalų sąrašo" + +msgctxt "#30503" +msgid "Check XBMC log for more information" +msgstr "Patikrinti XBMC žurnalą -Daugiau informacijos" + +msgctxt "#30504" +msgid "Unable to open local favourites.xml" +msgstr "Nepavyko atverti vietinio favourites.xml" + +msgctxt "#30505" +msgid "Unable to parse favourites list" +msgstr "Nepavyko apdoroti mėgstamiausių sąrašo" + +msgctxt "#30506" +msgid "Unable to parse timer list" +msgstr "Nepavyko apdoroti laikmačio sąrašo" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Macedonian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Macedonian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Macedonian/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Macedonian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -32,6 +32,10 @@ msgid "Password" msgstr "Лозинка" +msgctxt "#30010" +msgid "Use favourites instead of channel list" +msgstr "Користи ги омилените наместо листата канали" + msgctxt "#30012" msgid "Select the favourites.xml file" msgstr "Одбери favourites.xml папка" @@ -44,6 +48,6 @@ msgid "Advanced" msgstr "Напредно" -msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Неможе да се поврзе на Recording Service" +msgctxt "#30102" +msgid "Recordings" +msgstr "Снимки" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Malay/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Malay/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Malay/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Malay/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -56,6 +56,38 @@ msgid "Use RTSP streaming for live TV" msgstr "Guna penstriman RTSP untuk TV langsung" +msgctxt "#30040" +msgid "Enable low performance mode (disables logos & thumbnails)" +msgstr "Upayakan mod prestasi rendah (tidakupayakan logo & lakaran kecil)" + +msgctxt "#30050" +msgid "Group recordings" +msgstr "Rakaman kumpulan" + +msgctxt "#30051" +msgid "disabled" +msgstr "lumpuh" + +msgctxt "#30052" +msgid "by recording directory" +msgstr "berdasarkan direktori rakaman" + +msgctxt "#30053" +msgid "by recording date" +msgstr "berdasarkan tarikh rakaman" + +msgctxt "#30054" +msgid "by first letter" +msgstr "berdasarkan hufur pertama" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "berdasarkan saluran televisyen" + +msgctxt "#30056" +msgid "by series" +msgstr "berdasarkan siri" + msgctxt "#30100" msgid "General" msgstr "Am" @@ -64,10 +96,30 @@ msgid "Advanced" msgstr "Lanjutan" +msgctxt "#30102" +msgid "Recordings" +msgstr "Rakaman" + msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Tidak dapat sambung ke Perkhidmatan Rakaman" +msgid "Unable to connect to the DVBViewer Recording Service" +msgstr "Tidak dapat bersambung kepada Servis Rakaman DVBViewer" msgctxt "#30501" -msgid "Recording Service version %s or higher required" -msgstr "Perkhidmatan Rakaman versi %s atau lebih tinggi diperlukan" +msgid "DVBViewer Recording Service version %s or higher required" +msgstr "Servis Rakaman DVBViewer versi %s atau lebih tinggi diperlukan" + +msgctxt "#30502" +msgid "Unable to parse channel list" +msgstr "Senarai saluran tidak dapat dihurai" + +msgctxt "#30503" +msgid "Check XBMC log for more information" +msgstr "Semak log XBMC untuk maklumat lanjut" + +msgctxt "#30505" +msgid "Unable to parse favourites list" +msgstr "Senarai kegemaran tidak dapat dihurai" + +msgctxt "#30506" +msgid "Unable to parse timer list" +msgstr "Senarai pemasa tidak dapat dihurai" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Maltese/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Maltese/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Maltese/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Maltese/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -27,3 +27,7 @@ msgctxt "#30100" msgid "General" msgstr "Ġenerali" + +msgctxt "#30102" +msgid "Recordings" +msgstr "Recordings" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Maori/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Maori/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Maori/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Maori/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -31,3 +31,7 @@ msgctxt "#30101" msgid "Advanced" msgstr "Arā Atu Anō" + +msgctxt "#30102" +msgid "Recordings" +msgstr "Ngā pūhopu" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Norwegian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Norwegian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Norwegian/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Norwegian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -18,11 +18,11 @@ msgctxt "#30000" msgid "DVBViewer Recording Service IP Address" -msgstr "DVBViewer Recording Service Ip Adresse" +msgstr "IP-adresse til DVBViewer-opptakstjeneste" msgctxt "#30001" msgid "Webinterface Port" -msgstr "Webgrensesnitt Port" +msgstr "Nettgrensesnittsport" msgctxt "#30002" msgid "Username" @@ -32,9 +32,29 @@ msgid "Password" msgstr "Passord" +msgctxt "#30010" +msgid "Use favourites instead of channel list" +msgstr "Benytt favoritter i stedet for kanalliste" + +msgctxt "#30011" +msgid "Use local favourites file" +msgstr "Bruk lokal favorittfil" + msgctxt "#30012" msgid "Select the favourites.xml file" -msgstr "Velg favourites.xml filen" +msgstr "Velg «favourites.xml»-filen" + +msgctxt "#30020" +msgid "Enable Timeshift" +msgstr "Aktiver tidsforskyvning" + +msgctxt "#30021" +msgid "Timeshift buffer path" +msgstr "Sti for tidsforskyvningbuffer" + +msgctxt "#30030" +msgid "Use RTSP streaming for live TV" +msgstr "Bruk RTSP-strømming til Live-TV" msgctxt "#30100" msgid "General" @@ -44,6 +64,6 @@ msgid "Advanced" msgstr "Avansert" -msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Kan ikke koble til Recording Service" +msgctxt "#30102" +msgid "Recordings" +msgstr "Opptak" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Persian (Iran)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Persian (Iran)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Persian (Iran)/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Persian (Iran)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -27,3 +27,7 @@ msgctxt "#30100" msgid "General" msgstr "عمومی" + +msgctxt "#30102" +msgid "Recordings" +msgstr "ضبط شده ها" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Polish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Polish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Polish/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Polish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -18,7 +18,7 @@ msgctxt "#30000" msgid "DVBViewer Recording Service IP Address" -msgstr "Adres IP usługi DVBViewer Recording Service" +msgstr "Adres IP usługi" msgctxt "#30001" msgid "Webinterface Port" @@ -26,7 +26,7 @@ msgctxt "#30002" msgid "Username" -msgstr "Nazwa użytkownika" +msgstr "Użytkownik" msgctxt "#30003" msgid "Password" @@ -46,16 +46,48 @@ msgctxt "#30020" msgid "Enable Timeshift" -msgstr "Włącz funkcję przesunięcia czasowego" +msgstr "Aktywuj funkcję przesunięcia czasowego" msgctxt "#30021" msgid "Timeshift buffer path" -msgstr "Ścieżka do pliku bufora przesunięcia czasowego" +msgstr "Ścieżka do pliku bufora" msgctxt "#30030" msgid "Use RTSP streaming for live TV" msgstr "Używaj RTSP do strumieniowania telewizji" +msgctxt "#30040" +msgid "Enable low performance mode (disables logos & thumbnails)" +msgstr "Aktywuj tryb niskiej wydajności (bez logo i miniatur)" + +msgctxt "#30050" +msgid "Group recordings" +msgstr "Grupuj nagrania " + +msgctxt "#30051" +msgid "disabled" +msgstr "nieaktywne" + +msgctxt "#30052" +msgid "by recording directory" +msgstr "po katalogach" + +msgctxt "#30053" +msgid "by recording date" +msgstr "po datach" + +msgctxt "#30054" +msgid "by first letter" +msgstr "alfabetycznie" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "po kanałach" + +msgctxt "#30056" +msgid "by series" +msgstr "po serialach" + msgctxt "#30100" msgid "General" msgstr "Ogólne" @@ -64,10 +96,34 @@ msgid "Advanced" msgstr "Zaawansowane" +msgctxt "#30102" +msgid "Recordings" +msgstr "Nagrania" + msgctxt "#30500" -msgid "Can't connect to the Recording Service" +msgid "Unable to connect to the DVBViewer Recording Service" msgstr "Problem z połączeniem z usługą Recording Service" msgctxt "#30501" -msgid "Recording Service version %s or higher required" +msgid "DVBViewer Recording Service version %s or higher required" msgstr "Usługa Recording Service wymagana w wersji %s lub nowszej" + +msgctxt "#30502" +msgid "Unable to parse channel list" +msgstr "Błąd parsowania listy kanałów" + +msgctxt "#30503" +msgid "Check XBMC log for more information" +msgstr "Sprawdź szczegóły w pliku dziennika XBMC" + +msgctxt "#30504" +msgid "Unable to open local favourites.xml" +msgstr "Nie można otworzyć pliku favourites.xml" + +msgctxt "#30505" +msgid "Unable to parse favourites list" +msgstr "Błąd parsowania listy ulubionych" + +msgctxt "#30506" +msgid "Unable to parse timer list" +msgstr "Błąd parsowania listy nagrań" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Portuguese/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Portuguese/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Portuguese/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Portuguese/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -56,6 +56,38 @@ msgid "Use RTSP streaming for live TV" msgstr "Usar emissão RTSP para TV ao vivo" +msgctxt "#30040" +msgid "Enable low performance mode (disables logos & thumbnails)" +msgstr "Activar modo de baixa performance (sem logotipos nem miniaturas)" + +msgctxt "#30050" +msgid "Group recordings" +msgstr "Agrupar gravações" + +msgctxt "#30051" +msgid "disabled" +msgstr "desactivado" + +msgctxt "#30052" +msgid "by recording directory" +msgstr "por pasta de gravação" + +msgctxt "#30053" +msgid "by recording date" +msgstr "por data de gravação" + +msgctxt "#30054" +msgid "by first letter" +msgstr "por primeira letra" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "por canal de tv" + +msgctxt "#30056" +msgid "by series" +msgstr "por série" + msgctxt "#30100" msgid "General" msgstr "Geral" @@ -64,10 +96,34 @@ msgid "Advanced" msgstr "Avançado" +msgctxt "#30102" +msgid "Recordings" +msgstr "Gravações" + msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Não foi possível ligar ao Serviço de Gravação" +msgid "Unable to connect to the DVBViewer Recording Service" +msgstr "Não foi possível ligar ao Serviço de Gravação DVBViewer" msgctxt "#30501" -msgid "Recording Service version %s or higher required" -msgstr "É necessária uma versão do Serviço de Gravação %s ou superior" +msgid "DVBViewer Recording Service version %s or higher required" +msgstr "É necessária a versão %s ou superior do Serviço de Gravação DVBViewer" + +msgctxt "#30502" +msgid "Unable to parse channel list" +msgstr "Não foi possível analisar a lista de canais" + +msgctxt "#30503" +msgid "Check XBMC log for more information" +msgstr "Verifique o registo do XBMC para mais informação" + +msgctxt "#30504" +msgid "Unable to open local favourites.xml" +msgstr "Não foi possível abrir o ficheiro local favorites.xml" + +msgctxt "#30505" +msgid "Unable to parse favourites list" +msgstr "Não foi possível analisar a lista de favoritos" + +msgctxt "#30506" +msgid "Unable to parse timer list" +msgstr "Não foi possível analisar a lista de temporizadores" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Portuguese (Brazil)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Portuguese (Brazil)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Portuguese (Brazil)/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Portuguese (Brazil)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -56,6 +56,38 @@ msgid "Use RTSP streaming for live TV" msgstr "Usar RTSP streaming para TV ao Vivo" +msgctxt "#30040" +msgid "Enable low performance mode (disables logos & thumbnails)" +msgstr "Ativar modo de baixa performance (desabilita logos & miniaturas)" + +msgctxt "#30050" +msgid "Group recordings" +msgstr "Gravações Agrupadas" + +msgctxt "#30051" +msgid "disabled" +msgstr "desativado" + +msgctxt "#30052" +msgid "by recording directory" +msgstr "pelo diretório de gravação" + +msgctxt "#30053" +msgid "by recording date" +msgstr "pela data da gravação" + +msgctxt "#30054" +msgid "by first letter" +msgstr "pela primeira letra" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "por canais tv" + +msgctxt "#30056" +msgid "by series" +msgstr "por séries" + msgctxt "#30100" msgid "General" msgstr "Geral" @@ -64,10 +96,34 @@ msgid "Advanced" msgstr "Avançado" +msgctxt "#30102" +msgid "Recordings" +msgstr "Gravações" + msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Não pude me conectar ao Serviço de Gravação" +msgid "Unable to connect to the DVBViewer Recording Service" +msgstr "Não goi possível conectar com o serviço de gravação DVBViewer" msgctxt "#30501" -msgid "Recording Service version %s or higher required" -msgstr "Versão do Serviço de Gravação %s ou maior é requerido" +msgid "DVBViewer Recording Service version %s or higher required" +msgstr "Versão do serviço de gravação DVDViewer %s ou maior é requerido" + +msgctxt "#30502" +msgid "Unable to parse channel list" +msgstr "Não foi possível analisar a lista de canais" + +msgctxt "#30503" +msgid "Check XBMC log for more information" +msgstr "Verifique o log do XBMC para maiores informações" + +msgctxt "#30504" +msgid "Unable to open local favourites.xml" +msgstr "Não foi possível abrir favourites.xml local" + +msgctxt "#30505" +msgid "Unable to parse favourites list" +msgstr "Não foi possível analisar lista de favoritos" + +msgctxt "#30506" +msgid "Unable to parse timer list" +msgstr "Não foi possível analisar lista dos agendamentos" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Romanian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Romanian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Romanian/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Romanian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -18,11 +18,11 @@ msgctxt "#30000" msgid "DVBViewer Recording Service IP Address" -msgstr "Adresa IP a DVBViewer" +msgstr "DVBViewer Adresa IP" msgctxt "#30001" msgid "Webinterface Port" -msgstr "Portul interfaței web" +msgstr "Portul interfeței web" msgctxt "#30002" msgid "Username" @@ -32,21 +32,61 @@ msgid "Password" msgstr "Parolă" +msgctxt "#30010" +msgid "Use favourites instead of channel list" +msgstr "Folosiți favorite în locul listei complete de canale." + +msgctxt "#30011" +msgid "Use local favourites file" +msgstr "Folosiți fișierul local de favorite" + msgctxt "#30012" msgid "Select the favourites.xml file" msgstr "Selectează fișierul favourites.xml " msgctxt "#30020" msgid "Enable Timeshift" -msgstr "Activeaza programul de inregistrare" +msgstr "Activează programul de înregistrare" msgctxt "#30021" msgid "Timeshift buffer path" -msgstr "Calea tamponului de inregistrare" +msgstr "Calea buffer-ului de înregistrare" msgctxt "#30030" msgid "Use RTSP streaming for live TV" -msgstr "Foloseste RTSP pentru TV in direct" +msgstr "Foloseste RTSP pentru streaming Live TV" + +msgctxt "#30040" +msgid "Enable low performance mode (disables logos & thumbnails)" +msgstr "Activează modul de performanță scăzută (scoate logo-uri și miniaturi)" + +msgctxt "#30050" +msgid "Group recordings" +msgstr "Grup de înregistrări " + +msgctxt "#30051" +msgid "disabled" +msgstr "dezactivat" + +msgctxt "#30052" +msgid "by recording directory" +msgstr "după directorul de înregistrare" + +msgctxt "#30053" +msgid "by recording date" +msgstr "după data de înregistrare" + +msgctxt "#30054" +msgid "by first letter" +msgstr "după prima literă" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "după canalul TV" + +msgctxt "#30056" +msgid "by series" +msgstr "după serie" msgctxt "#30100" msgid "General" @@ -56,6 +96,10 @@ msgid "Advanced" msgstr "Avansat" +msgctxt "#30102" +msgid "Recordings" +msgstr "Înregistrări" + msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Nu se poate conecta la Serviciul de înregistrare" +msgid "Unable to connect to the DVBViewer Recording Service" +msgstr "Nu se poate conecta la serviciul de înregistrare DVBViewer" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Russian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Russian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Russian/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Russian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -56,6 +56,38 @@ msgid "Use RTSP streaming for live TV" msgstr "Использовать RTSP поток для вещания ТВ" +msgctxt "#30040" +msgid "Enable low performance mode (disables logos & thumbnails)" +msgstr "Включить режим низкой производительности (отключает лого и эскизы)" + +msgctxt "#30050" +msgid "Group recordings" +msgstr "Груповые записи" + +msgctxt "#30051" +msgid "disabled" +msgstr "отключен" + +msgctxt "#30052" +msgid "by recording directory" +msgstr "по папке записей" + +msgctxt "#30053" +msgid "by recording date" +msgstr "по дате записи" + +msgctxt "#30054" +msgid "by first letter" +msgstr "по первой букве" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "по ТВ каналу" + +msgctxt "#30056" +msgid "by series" +msgstr "по названию сериала" + msgctxt "#30100" msgid "General" msgstr "Общие" @@ -64,10 +96,34 @@ msgid "Advanced" msgstr "Расширенный" +msgctxt "#30102" +msgid "Recordings" +msgstr "Записи" + msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Не могу соединиться с сервисом записи" +msgid "Unable to connect to the DVBViewer Recording Service" +msgstr "Не удалось подключиться к сервису записи DVBViewer" msgctxt "#30501" -msgid "Recording Service version %s or higher required" -msgstr "Служба записи требуется %s версии или выше" +msgid "DVBViewer Recording Service version %s or higher required" +msgstr "Необходима версия сервиса записи DVBViewer %s или выше" + +msgctxt "#30502" +msgid "Unable to parse channel list" +msgstr "Не удалось загрузить список каналов" + +msgctxt "#30503" +msgid "Check XBMC log for more information" +msgstr "Проверьте XBMC лог файл чтобы получить больше информации" + +msgctxt "#30504" +msgid "Unable to open local favourites.xml" +msgstr "Не удалось открыть локальный файл favourites.xml" + +msgctxt "#30505" +msgid "Unable to parse favourites list" +msgstr "Не удалось загрузить список избранных" + +msgctxt "#30506" +msgid "Unable to parse timer list" +msgstr "Не удалось загрузить список таймеров" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Serbian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Serbian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Serbian/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Serbian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -48,6 +48,6 @@ msgid "General" msgstr "Opšte" -msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Не могу да се повежем са услугом снимања" +msgctxt "#30102" +msgid "Recordings" +msgstr "Snimci" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Serbian (Cyrillic)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Serbian (Cyrillic)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Serbian (Cyrillic)/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Serbian (Cyrillic)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -27,3 +27,7 @@ msgctxt "#30100" msgid "General" msgstr "Опште" + +msgctxt "#30102" +msgid "Recordings" +msgstr "Снимци" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Sinhala/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Sinhala/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Sinhala/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Sinhala/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,57 @@ +# XBMC Media Center language file +# Addon Name: DVBViewer Client +# Addon id: pvr.dvbviewer +# Addon Provider: jdembski, A600, Manuel Mausz, Portisch +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Sinhala (http://www.transifex.com/projects/p/xbmc-main/language/si/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: si\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30002" +msgid "Username" +msgstr "පරිශීලක නම" + +msgctxt "#30003" +msgid "Password" +msgstr "මුරපදය" + +msgctxt "#30020" +msgid "Enable Timeshift" +msgstr "කාල සාරුව ක්‍රියාත්මක කරන්න" + +msgctxt "#30021" +msgid "Timeshift buffer path" +msgstr "කාල සාරු අවරෝධක පෙත" + +msgctxt "#30054" +msgid "by first letter" +msgstr "මුලකුර අනුව" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "රුපවාහිනී නාලිකාව අනුව" + +msgctxt "#30056" +msgid "by series" +msgstr "මාලාව අනුව" + +msgctxt "#30100" +msgid "General" +msgstr "සාමාන්‍ය" + +msgctxt "#30101" +msgid "Advanced" +msgstr "උසස්" + +msgctxt "#30102" +msgid "Recordings" +msgstr "පටිගතකිරීම්" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Slovak/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Slovak/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Slovak/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Slovak/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -56,6 +56,38 @@ msgid "Use RTSP streaming for live TV" msgstr "Použiť RTSP streamovanie pre živú TV" +msgctxt "#30040" +msgid "Enable low performance mode (disables logos & thumbnails)" +msgstr "Zapnúť mód pre nízky výkon (nezobrazovať logo a obrázkové náhľady)" + +msgctxt "#30050" +msgid "Group recordings" +msgstr "Zoskupiť nahrávky" + +msgctxt "#30051" +msgid "disabled" +msgstr "vypnuté" + +msgctxt "#30052" +msgid "by recording directory" +msgstr "podľa adresára nahrávky" + +msgctxt "#30053" +msgid "by recording date" +msgstr "podľa dátumu nahrávky" + +msgctxt "#30054" +msgid "by first letter" +msgstr "podľa začiatočného písmena" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "podľa TV kanálu" + +msgctxt "#30056" +msgid "by series" +msgstr "podľa série" + msgctxt "#30100" msgid "General" msgstr "Hlavné" @@ -64,10 +96,34 @@ msgid "Advanced" msgstr "Pokročilé" +msgctxt "#30102" +msgid "Recordings" +msgstr "Nahrávky" + msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Nie je možné sa pripojiť k nahrávacej službe" +msgid "Unable to connect to the DVBViewer Recording Service" +msgstr "Nepodarilo sa spojiť so službou nahrávania DVBViewer" msgctxt "#30501" -msgid "Recording Service version %s or higher required" -msgstr "Vyžaduje sa služba nahrávania vo verzii %s alebo vyššej" +msgid "DVBViewer Recording Service version %s or higher required" +msgstr "Je potrebná DVBViewer Recording Service verzia min. %s" + +msgctxt "#30502" +msgid "Unable to parse channel list" +msgstr "Nepodarilo sa sprístupniť zoznam kanálov" + +msgctxt "#30503" +msgid "Check XBMC log for more information" +msgstr "Pre viac informácií pozri XBMC log" + +msgctxt "#30504" +msgid "Unable to open local favourites.xml" +msgstr "Nedá sa otvoriť lokálny favourites.xml" + +msgctxt "#30505" +msgid "Unable to parse favourites list" +msgstr "Nepodarilo sa sprístupniť zoznam obľúbených" + +msgctxt "#30506" +msgid "Unable to parse timer list" +msgstr "Nepodarilo sa sprístupniť zoznam časových plánov" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Slovenian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Slovenian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Slovenian/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Slovenian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -64,10 +64,6 @@ msgid "Advanced" msgstr "Napredno" -msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "S storitvijo DVBViewer se ni mogoče povezati" - -msgctxt "#30501" -msgid "Recording Service version %s or higher required" -msgstr "Potrebna je storitev DVBViewer različice %s ali novejše" +msgctxt "#30102" +msgid "Recordings" +msgstr "Posnetki" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Spanish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Spanish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Spanish/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Spanish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -54,7 +54,39 @@ msgctxt "#30030" msgid "Use RTSP streaming for live TV" -msgstr "Usar streaming RTSP para TV en vivo" +msgstr "Usar streaming RTSP para TV en directo" + +msgctxt "#30040" +msgid "Enable low performance mode (disables logos & thumbnails)" +msgstr "Activar el modo de bajo rendimiento (desactiva logos y miniaturas)" + +msgctxt "#30050" +msgid "Group recordings" +msgstr "Grabaciones de Grupo" + +msgctxt "#30051" +msgid "disabled" +msgstr "Deshabilitado" + +msgctxt "#30052" +msgid "by recording directory" +msgstr "por carpeta de grabación" + +msgctxt "#30053" +msgid "by recording date" +msgstr "por fecha de grabación " + +msgctxt "#30054" +msgid "by first letter" +msgstr "por primera letra" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "por canales de tv" + +msgctxt "#30056" +msgid "by series" +msgstr "por series" msgctxt "#30100" msgid "General" @@ -64,10 +96,34 @@ msgid "Advanced" msgstr "Avanzado" +msgctxt "#30102" +msgid "Recordings" +msgstr "Grabaciones" + msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "No se puede conectar con el Servicio de Grabación" +msgid "Unable to connect to the DVBViewer Recording Service" +msgstr "Incapaz de conectar con el Servicio de Grabación DVBViewer" msgctxt "#30501" -msgid "Recording Service version %s or higher required" -msgstr "Se necesita versión %s os superior del servicio de grabación" +msgid "DVBViewer Recording Service version %s or higher required" +msgstr "Se requiere una versión %s o superior para el Servicio de Grabación DVBViewer " + +msgctxt "#30502" +msgid "Unable to parse channel list" +msgstr "No se puede analizar la lista de canales" + +msgctxt "#30503" +msgid "Check XBMC log for more information" +msgstr "Para mas información comprobar el Log XBMC" + +msgctxt "#30504" +msgid "Unable to open local favourites.xml" +msgstr "No se puede abrir el archivo local favourites.xml" + +msgctxt "#30505" +msgid "Unable to parse favourites list" +msgstr "No se puede cargar la lista de favoritos" + +msgctxt "#30506" +msgid "Unable to parse timer list" +msgstr "No se puede leer el listado de temporizadores" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Spanish (Argentina)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Spanish (Argentina)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Spanish (Argentina)/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Spanish (Argentina)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -32,6 +32,14 @@ msgid "Password" msgstr "Contraseña" +msgctxt "#30010" +msgid "Use favourites instead of channel list" +msgstr "Usar favoritos en lugar de lista de canal" + +msgctxt "#30011" +msgid "Use local favourites file" +msgstr "Usar archivo de favoritos local" + msgctxt "#30012" msgid "Select the favourites.xml file" msgstr "Elegir el archivo favourites.xml" @@ -44,6 +52,42 @@ msgid "Timeshift buffer path" msgstr "Ruta del buffer de Timeshift" +msgctxt "#30030" +msgid "Use RTSP streaming for live TV" +msgstr "Usar transmisión RTSP para TV en vivo" + +msgctxt "#30040" +msgid "Enable low performance mode (disables logos & thumbnails)" +msgstr "Habilitar modo de bajo rendimiento (deshabilita logos y miniaturas)" + +msgctxt "#30050" +msgid "Group recordings" +msgstr "Agrupar grabaciones" + +msgctxt "#30051" +msgid "disabled" +msgstr "deshabilitado" + +msgctxt "#30052" +msgid "by recording directory" +msgstr "por directorio de grabación" + +msgctxt "#30053" +msgid "by recording date" +msgstr "por fecha de grabación" + +msgctxt "#30054" +msgid "by first letter" +msgstr "por primera letra" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "por canal de televisión" + +msgctxt "#30056" +msgid "by series" +msgstr "por serie" + msgctxt "#30100" msgid "General" msgstr "General" @@ -52,6 +96,34 @@ msgid "Advanced" msgstr "Avanzado" +msgctxt "#30102" +msgid "Recordings" +msgstr "Grabaciones" + msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "No se puede conectar con el Servicio de Grabación" +msgid "Unable to connect to the DVBViewer Recording Service" +msgstr "No se puede conectar con el Servicio de Grabación de DVBViewer" + +msgctxt "#30501" +msgid "DVBViewer Recording Service version %s or higher required" +msgstr "Se requiere Servicio de Grabación versión %s o superior" + +msgctxt "#30502" +msgid "Unable to parse channel list" +msgstr "No se puede leer la lista de canales" + +msgctxt "#30503" +msgid "Check XBMC log for more information" +msgstr "Vea el log de XBMC para más información" + +msgctxt "#30504" +msgid "Unable to open local favourites.xml" +msgstr "No se puede abrir el archivo local favourites.xml" + +msgctxt "#30505" +msgid "Unable to parse favourites list" +msgstr "No se puede leer la lista de favoritos" + +msgctxt "#30506" +msgid "Unable to parse timer list" +msgstr "No se puede leer el listado de temporizadores" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Spanish (Mexico)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Spanish (Mexico)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Spanish (Mexico)/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Spanish (Mexico)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -31,3 +31,7 @@ msgctxt "#30101" msgid "Advanced" msgstr "Avanzado" + +msgctxt "#30102" +msgid "Recordings" +msgstr "Grabaciones" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Swedish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Swedish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Swedish/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Swedish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -56,6 +56,38 @@ msgid "Use RTSP streaming for live TV" msgstr "Använd RTSP-strömning för direktsänd TV" +msgctxt "#30040" +msgid "Enable low performance mode (disables logos & thumbnails)" +msgstr "Aktivera lågt prestandaläge (inaktiverar logos & miniatyrbilder)" + +msgctxt "#30050" +msgid "Group recordings" +msgstr "Gruppinspelningar" + +msgctxt "#30051" +msgid "disabled" +msgstr "inaktiverad" + +msgctxt "#30052" +msgid "by recording directory" +msgstr "efter inspelningskatalog" + +msgctxt "#30053" +msgid "by recording date" +msgstr "efter inspelningsdatum" + +msgctxt "#30054" +msgid "by first letter" +msgstr "efter första bokstav" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "efter tv-kanal" + +msgctxt "#30056" +msgid "by series" +msgstr "efter serie" + msgctxt "#30100" msgid "General" msgstr "Allmänt" @@ -64,10 +96,34 @@ msgid "Advanced" msgstr "Avancerad" +msgctxt "#30102" +msgid "Recordings" +msgstr "Inspelningar" + msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Kan inte ansluta till inspelningstjänsten" +msgid "Unable to connect to the DVBViewer Recording Service" +msgstr "Kunde inte ansluta till DVBViewers inspelningstjänst" msgctxt "#30501" -msgid "Recording Service version %s or higher required" -msgstr "Inspelningsservice version %s eller högre krävs" +msgid "DVBViewer Recording Service version %s or higher required" +msgstr "DVBViewer Inspelningstjänst Version %s eller uppåt krävs" + +msgctxt "#30502" +msgid "Unable to parse channel list" +msgstr "Kunde inte läsa av kanallista" + +msgctxt "#30503" +msgid "Check XBMC log for more information" +msgstr "Se XBMC loggen för mer information" + +msgctxt "#30504" +msgid "Unable to open local favourites.xml" +msgstr "Kunde inte öppna lokal favourites.xml" + +msgctxt "#30505" +msgid "Unable to parse favourites list" +msgstr "Kunde inte läsa av favoritlistan" + +msgctxt "#30506" +msgid "Unable to parse timer list" +msgstr "Kunde inte läsa av timerlistan" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Tajik/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Tajik/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Tajik/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Tajik/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -31,3 +31,7 @@ msgctxt "#30101" msgid "Advanced" msgstr "Иловагӣ" + +msgctxt "#30102" +msgid "Recordings" +msgstr "Сабтҳо" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Tamil (India)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Tamil (India)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Tamil (India)/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Tamil (India)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -30,7 +30,7 @@ msgctxt "#30003" msgid "Password" -msgstr "அடையாளச் சொல்" +msgstr "கடவுச்சொல்" msgctxt "#30012" msgid "Select the favourites.xml file" @@ -50,8 +50,8 @@ msgctxt "#30101" msgid "Advanced" -msgstr "மேம்பட்ட" +msgstr "மேம்பட்டது" -msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "பதிவு சேவை இணைக்க முடியவில்லை" +msgctxt "#30102" +msgid "Recordings" +msgstr "பதிவகள்" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Thai/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Thai/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Thai/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Thai/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -31,3 +31,7 @@ msgctxt "#30101" msgid "Advanced" msgstr "ขั้นสูง" + +msgctxt "#30102" +msgid "Recordings" +msgstr "กำลังบันทึก" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Turkish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Turkish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Turkish/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Turkish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -56,6 +56,34 @@ msgid "Use RTSP streaming for live TV" msgstr "Canlı TV için RTSP akışını kullan" +msgctxt "#30050" +msgid "Group recordings" +msgstr "Grup kayıtları" + +msgctxt "#30051" +msgid "disabled" +msgstr "devre dışı" + +msgctxt "#30052" +msgid "by recording directory" +msgstr "kayıt dizinine göre" + +msgctxt "#30053" +msgid "by recording date" +msgstr "kayıt tarihine göre" + +msgctxt "#30054" +msgid "by first letter" +msgstr "İlk harfe göre" + +msgctxt "#30055" +msgid "by tv channel" +msgstr "tv kanalına göre" + +msgctxt "#30056" +msgid "by series" +msgstr "diziye göre" + msgctxt "#30100" msgid "General" msgstr "Genel" @@ -64,10 +92,6 @@ msgid "Advanced" msgstr "Gelişmiş" -msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Kayıt Servisi'ne bağlanılamıyor" - -msgctxt "#30501" -msgid "Recording Service version %s or higher required" -msgstr "Kayıt Servisi'nin %s veya daha yüksek sürümü gerekiyor" +msgctxt "#30102" +msgid "Recordings" +msgstr "Kayıtlar" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Ukrainian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Ukrainian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Ukrainian/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Ukrainian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -44,6 +44,6 @@ msgid "Advanced" msgstr "Більше" -msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Не можу з’єднатися з Сервісом запису" +msgctxt "#30102" +msgid "Recordings" +msgstr "Записи" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Vietnamese/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Vietnamese/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Vietnamese/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Vietnamese/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -32,10 +32,30 @@ msgid "Password" msgstr "Mật khẩu" +msgctxt "#30010" +msgid "Use favourites instead of channel list" +msgstr "Dùng danh sách yêu thích thay cho danh sách toàn bộ kênh" + +msgctxt "#30011" +msgid "Use local favourites file" +msgstr "Dùng tệp tin yêu thích có sẵn" + msgctxt "#30012" msgid "Select the favourites.xml file" msgstr "Chọn nguồn file favourites.xml" +msgctxt "#30020" +msgid "Enable Timeshift" +msgstr "Bật Timeshift" + +msgctxt "#30021" +msgid "Timeshift buffer path" +msgstr "Đường dẫn bộ đệm Timeshift" + +msgctxt "#30030" +msgid "Use RTSP streaming for live TV" +msgstr "Dùng RTSP cho chương trình TV" + msgctxt "#30100" msgid "General" msgstr "Tổng Quan" @@ -44,6 +64,6 @@ msgid "Advanced" msgstr "Nâng cao" -msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Không kết nối được tới Recording Service" +msgctxt "#30102" +msgid "Recordings" +msgstr "Các bản ghi" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Welsh/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Welsh/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/language/Welsh/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/language/Welsh/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -64,10 +64,6 @@ msgid "Advanced" msgstr "Uwch" -msgctxt "#30500" -msgid "Can't connect to the Recording Service" -msgstr "Methu cysylltu â'r Gwasanaeth Recordio" - -msgctxt "#30501" -msgid "Recording Service version %s or higher required" -msgstr "Mae angen Gwasanaeth Recordio fersiwn %s or neu uwch" +msgctxt "#30102" +msgid "Recordings" +msgstr "Recordiadau" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/settings.xml xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/settings.xml --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/addon/resources/settings.xml 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/addon/resources/settings.xml 2014-06-10 08:39:15.000000000 +0000 @@ -13,11 +13,18 @@ + + + + - + + + + diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/Makefile.am xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/Makefile.am --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/Makefile.am 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/Makefile.am 2014-06-10 08:39:15.000000000 +0000 @@ -10,11 +10,12 @@ LIBNAME = libdvbviewer-addon lib_LTLIBRARIES = libdvbviewer-addon.la +LIBS = @abs_top_srcdir@/lib/tinyxml/libtinyxml.la + include ../Makefile.include.am libdvbviewer_addon_la_SOURCES = src/client.cpp \ src/DvbData.cpp \ - src/xmlParser.cpp \ src/TimeshiftBuffer.cpp libdvbviewer_addon_la_LDFLAGS = @TARGET_LDFLAGS@ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/project/VS2010Express/pvr.dvbviewer.vcxproj xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/project/VS2010Express/pvr.dvbviewer.vcxproj --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/project/VS2010Express/pvr.dvbviewer.vcxproj 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/project/VS2010Express/pvr.dvbviewer.vcxproj 2014-07-18 06:05:30.000000000 +0000 @@ -1,5 +1,5 @@  - + Debug @@ -19,12 +19,14 @@ DynamicLibrary true MultiByte + v120 DynamicLibrary false true MultiByte + v120 @@ -85,21 +87,22 @@ - - {fe4573f6-a794-4ad3-b37f-49e51f1140e6} + + {bdc7d21d-9fd9-41aa-bec8-8b70e1448c50} + - + \ No newline at end of file diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/project/VS2010Express/pvr.dvbviewer.vcxproj.filters xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/project/VS2010Express/pvr.dvbviewer.vcxproj.filters --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/project/VS2010Express/pvr.dvbviewer.vcxproj.filters 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/project/VS2010Express/pvr.dvbviewer.vcxproj.filters 2014-06-10 08:39:15.000000000 +0000 @@ -18,9 +18,6 @@ Source Files - - Source Files - Source Files @@ -32,9 +29,6 @@ Header Files - - Header Files - Header Files diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/src/client.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/src/client.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/src/client.cpp 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/src/client.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ @@ -27,23 +28,24 @@ using namespace ADDON; -ADDON_STATUS m_CurStatus = ADDON_STATUS_UNKNOWN; +ADDON_STATUS m_curStatus = ADDON_STATUS_UNKNOWN; /* User adjustable settings are saved here. * Default values are defined inside client.h * and exported to the other source files. */ -CStdString g_strHostname = DEFAULT_HOST; -int g_iConnectTimeout = DEFAULT_CONNECT_TIMEOUT; -int g_iPortWeb = DEFAULT_WEB_PORT; -CStdString g_strUsername = ""; -CStdString g_strPassword = ""; -bool g_useFavourites = false; -bool g_useFavouritesFile = false; -CStdString g_favouritesFile = ""; -bool g_bUseTimeshift = false; -CStdString g_strTimeshiftBufferPath = DEFAULT_TSBUFFERPATH; -bool g_useRTSP = false; +CStdString g_hostname = DEFAULT_HOST; +int g_webPort = DEFAULT_WEB_PORT; +CStdString g_username = ""; +CStdString g_password = ""; +bool g_useFavourites = false; +bool g_useFavouritesFile = false; +CStdString g_favouritesFile = ""; +int g_groupRecordings = DvbRecording::GroupDisabled; +bool g_useTimeshift = false; +CStdString g_timeshiftBufferPath = DEFAULT_TSBUFFERPATH; +bool g_useRTSP = false; +bool g_lowPerformance = false; CHelper_libXBMC_addon *XBMC = NULL; CHelper_libXBMC_pvr *PVR = NULL; @@ -56,51 +58,60 @@ char buffer[1024]; if (XBMC->GetSetting("host", buffer)) - g_strHostname = buffer; + g_hostname = buffer; if (XBMC->GetSetting("user", buffer)) - g_strUsername = buffer; + g_username = buffer; if (XBMC->GetSetting("pass", buffer)) - g_strPassword = buffer; + g_password = buffer; - if (!XBMC->GetSetting("webport", &g_iPortWeb)) - g_iPortWeb = DEFAULT_WEB_PORT; + if (!XBMC->GetSetting("webport", &g_webPort)) + g_webPort = DEFAULT_WEB_PORT; if (!XBMC->GetSetting("usefavourites", &g_useFavourites)) g_useFavourites = false; - if (XBMC->GetSetting("usefavouritesfile", &g_useFavouritesFile)) + if (!XBMC->GetSetting("usefavouritesfile", &g_useFavouritesFile)) g_useFavouritesFile = false; if (g_useFavouritesFile && XBMC->GetSetting("favouritesfile", buffer)) g_favouritesFile = buffer; - if (!XBMC->GetSetting("usetimeshift", &g_bUseTimeshift)) - g_bUseTimeshift = false; + if (!XBMC->GetSetting("grouprecordings", &g_groupRecordings)) + g_groupRecordings = DvbRecording::GroupDisabled; + + if (!XBMC->GetSetting("usetimeshift", &g_useTimeshift)) + g_useTimeshift = false; if (XBMC->GetSetting("timeshiftpath", buffer)) - g_strTimeshiftBufferPath = buffer; + g_timeshiftBufferPath = buffer; - if (!XBMC->GetSetting("usertsp", &g_useRTSP) || g_bUseTimeshift) + if (!XBMC->GetSetting("usertsp", &g_useRTSP) || g_useTimeshift) g_useRTSP = false; + if (!XBMC->GetSetting("lowperformance", &g_lowPerformance)) + g_lowPerformance = false; + /* Log the current settings for debugging purposes */ XBMC->Log(LOG_DEBUG, "DVBViewer Addon Configuration options"); - XBMC->Log(LOG_DEBUG, "Hostname: %s", g_strHostname.c_str()); - if (!g_strUsername.empty() && !g_strPassword.empty()) + XBMC->Log(LOG_DEBUG, "Hostname: %s", g_hostname.c_str()); + if (!g_username.empty() && !g_password.empty()) { - XBMC->Log(LOG_DEBUG, "Username: %s", g_strUsername.c_str()); - XBMC->Log(LOG_DEBUG, "Password: %s", g_strPassword.c_str()); + XBMC->Log(LOG_DEBUG, "Username: %s", g_username.c_str()); + XBMC->Log(LOG_DEBUG, "Password: %s", g_password.c_str()); } - XBMC->Log(LOG_DEBUG, "WebPort: %d", g_iPortWeb); + XBMC->Log(LOG_DEBUG, "WebPort: %d", g_webPort); XBMC->Log(LOG_DEBUG, "Use favourites: %s", (g_useFavourites) ? "yes" : "no"); if (g_useFavouritesFile) - XBMC->Log(LOG_DEBUG, "Favourites File: %s", g_favouritesFile.c_str()); - XBMC->Log(LOG_DEBUG, "Timeshift: %s", (g_bUseTimeshift) ? "enabled" : "disabled"); - if (g_bUseTimeshift) - XBMC->Log(LOG_DEBUG, "Timeshift Buffer Path: %s", g_strTimeshiftBufferPath.c_str()); + XBMC->Log(LOG_DEBUG, "Favourites file: %s", g_favouritesFile.c_str()); + if (g_groupRecordings != DvbRecording::GroupDisabled) + XBMC->Log(LOG_DEBUG, "Group recordings: %d", g_groupRecordings); + XBMC->Log(LOG_DEBUG, "Timeshift: %s", (g_useTimeshift) ? "enabled" : "disabled"); + if (g_useTimeshift) + XBMC->Log(LOG_DEBUG, "Timeshift buffer path: %s", g_timeshiftBufferPath.c_str()); XBMC->Log(LOG_DEBUG, "Use RTSP: %s", (g_useRTSP) ? "yes" : "no"); + XBMC->Log(LOG_DEBUG, "Low performance mode: %s", (g_lowPerformance) ? "yes" : "no"); } ADDON_STATUS ADDON_Create(void* hdl, void* props) @@ -123,8 +134,8 @@ return ADDON_STATUS_PERMANENT_FAILURE; } - XBMC->Log(LOG_DEBUG, "%s - Creating DVBViewer PVR-Client", __FUNCTION__); - m_CurStatus = ADDON_STATUS_UNKNOWN; + XBMC->Log(LOG_DEBUG, "%s Creating DVBViewer PVR-Client", __FUNCTION__); + m_curStatus = ADDON_STATUS_UNKNOWN; ADDON_ReadSettings(); @@ -134,21 +145,21 @@ SAFE_DELETE(DvbData); SAFE_DELETE(PVR); SAFE_DELETE(XBMC); - m_CurStatus = ADDON_STATUS_LOST_CONNECTION; - return m_CurStatus; + m_curStatus = ADDON_STATUS_LOST_CONNECTION; + return m_curStatus; } - m_CurStatus = ADDON_STATUS_OK; - return m_CurStatus; + m_curStatus = ADDON_STATUS_OK; + return m_curStatus; } ADDON_STATUS ADDON_GetStatus() { /* check whether we're still connected */ - if (m_CurStatus == ADDON_STATUS_OK && !DvbData->IsConnected()) - m_CurStatus = ADDON_STATUS_LOST_CONNECTION; + if (m_curStatus == ADDON_STATUS_OK && !DvbData->IsConnected()) + m_curStatus = ADDON_STATUS_LOST_CONNECTION; - return m_CurStatus; + return m_curStatus; } void ADDON_Destroy() @@ -157,7 +168,7 @@ SAFE_DELETE(PVR); SAFE_DELETE(XBMC); - m_CurStatus = ADDON_STATUS_UNKNOWN; + m_curStatus = ADDON_STATUS_UNKNOWN; } bool ADDON_HasSettings() @@ -181,22 +192,22 @@ CStdString sname(settingName); if (sname == "host") { - if (g_strHostname.compare((const char *)settingValue) != 0) + if (g_hostname.compare((const char *)settingValue) != 0) return ADDON_STATUS_NEED_RESTART; } else if (sname == "user") { - if (g_strUsername.compare((const char *)settingValue) != 0) + if (g_username.compare((const char *)settingValue) != 0) return ADDON_STATUS_NEED_RESTART; } else if (sname == "pass") { - if (g_strPassword.compare((const char *)settingValue) != 0) + if (g_password.compare((const char *)settingValue) != 0) return ADDON_STATUS_NEED_RESTART; } else if (sname == "webport") { - if (g_iPortWeb != *(int *)settingValue) + if (g_webPort != *(int *)settingValue) return ADDON_STATUS_NEED_RESTART; } else if (sname == "usefavourites") @@ -216,17 +227,22 @@ } else if (sname == "usetimeshift") { - if (g_bUseTimeshift != *(bool *)settingValue) + if (g_useTimeshift != *(bool *)settingValue) + return ADDON_STATUS_NEED_RESTART; + } + else if (sname == "grouprecordings") + { + if (g_groupRecordings != *(const DvbRecording::Group *)settingValue) return ADDON_STATUS_NEED_RESTART; } else if (sname == "timeshiftpath") { CStdString newValue = (const char *)settingValue; - if (g_strTimeshiftBufferPath != newValue) + if (g_timeshiftBufferPath != newValue) { - XBMC->Log(LOG_DEBUG, "%s - Changed Setting '%s' from '%s' to '%s'", __FUNCTION__, - settingName, g_strTimeshiftBufferPath.c_str(), newValue.c_str()); - g_strTimeshiftBufferPath = newValue; + XBMC->Log(LOG_DEBUG, "%s Changed Setting '%s' from '%s' to '%s'", __FUNCTION__, + settingName, g_timeshiftBufferPath.c_str(), newValue.c_str()); + g_timeshiftBufferPath = newValue; } } else if (sname == "usertsp") @@ -234,6 +250,11 @@ if (g_useRTSP != *(bool *)settingValue) return ADDON_STATUS_NEED_RESTART; } + else if (sname == "lowperformance") + { + if (g_lowPerformance != *(bool *)settingValue) + return ADDON_STATUS_NEED_RESTART; + } return ADDON_STATUS_OK; } @@ -256,14 +277,14 @@ const char* GetPVRAPIVersion(void) { - static const char *strApiVersion = XBMC_PVR_API_VERSION; - return strApiVersion; + static const char *apiVersion = XBMC_PVR_API_VERSION; + return apiVersion; } const char* GetMininumPVRAPIVersion(void) { - static const char *strMinApiVersion = XBMC_PVR_MIN_API_VERSION; - return strMinApiVersion; + static const char *minApiVersion = XBMC_PVR_MIN_API_VERSION; + return minApiVersion; } const char* GetGUIAPIVersion(void) @@ -312,9 +333,9 @@ { static CStdString conn; if (DvbData) - conn.Format("%s%s", g_strHostname, DvbData->IsConnected() ? "" : " (Not connected!)"); + conn.Format("%s%s", g_hostname, DvbData->IsConnected() ? "" : " (Not connected!)"); else - conn.Format("%s (addon error!)", g_strHostname); + conn.Format("%s (addon error!)", g_hostname); return conn.c_str(); } @@ -477,6 +498,7 @@ if (!DvbData || !DvbData->IsConnected()) return ""; + DvbData->SwitchChannel(channel); return DvbData->GetLiveStreamURL(channel).c_str(); } @@ -485,7 +507,7 @@ if (!DvbData || !DvbData->IsConnected()) return false; - return g_bUseTimeshift; + return g_useTimeshift; } bool CanSeekStream(void) @@ -493,39 +515,61 @@ if (!DvbData || !DvbData->IsConnected()) return false; - return g_bUseTimeshift; + return g_useTimeshift; } int ReadLiveStream(unsigned char *pBuffer, unsigned int iBufferSize) { - if (!DvbData || !DvbData->IsConnected()) + if (!DvbData || !DvbData->IsConnected() || !DvbData->GetTimeshiftBuffer()) return 0; - return DvbData->ReadLiveStream(pBuffer, iBufferSize); + return DvbData->GetTimeshiftBuffer()->ReadData(pBuffer, iBufferSize); } long long SeekLiveStream(long long iPosition, int iWhence /* = SEEK_SET */) { - if (!DvbData || !DvbData->IsConnected()) + if (!DvbData || !DvbData->IsConnected() || !DvbData->GetTimeshiftBuffer()) return -1; - return DvbData->SeekLiveStream(iPosition, iWhence); + return DvbData->GetTimeshiftBuffer()->Seek(iPosition, iWhence); } long long PositionLiveStream(void) { - if (!DvbData || !DvbData->IsConnected()) + if (!DvbData || !DvbData->IsConnected() || !DvbData->GetTimeshiftBuffer()) return -1; - return DvbData->PositionLiveStream(); + return DvbData->GetTimeshiftBuffer()->Position(); } long long LengthLiveStream(void) { - if (!DvbData || !DvbData->IsConnected()) + if (!DvbData || !DvbData->IsConnected() || !DvbData->GetTimeshiftBuffer()) return 0; - return DvbData->LengthLiveStream(); + return DvbData->GetTimeshiftBuffer()->Length(); +} + +time_t GetBufferTimeStart() +{ + if (!DvbData || !DvbData->IsConnected() || !DvbData->GetTimeshiftBuffer()) + return 0; + + return DvbData->GetTimeshiftBuffer()->TimeStart(); +} + +time_t GetBufferTimeEnd() +{ + if (!DvbData || !DvbData->IsConnected() || !DvbData->GetTimeshiftBuffer()) + return 0; + + return DvbData->GetTimeshiftBuffer()->TimeEnd(); +} + +time_t GetPlayingTime() +{ + //FIXME: this should rather return the time of the *current* position + return GetBufferTimeEnd(); } PVR_ERROR SignalStatus(PVR_SIGNAL_STATUS &signalStatus) @@ -565,7 +609,4 @@ void PauseStream(bool _UNUSED(bPaused)) {} bool SeekTime(int, bool, double*) { return false; } void SetSpeed(int) {}; -time_t GetPlayingTime() { return 0; } -time_t GetBufferTimeStart() { return 0; } -time_t GetBufferTimeEnd() { return 0; } } diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/src/client.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/src/client.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/src/client.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/src/client.h 2014-07-18 06:05:30.000000000 +0000 @@ -15,7 +15,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ @@ -47,21 +48,34 @@ #define PVR_STRCPY(dest, source) do { strncpy(dest, source, sizeof(dest)-1); dest[sizeof(dest)-1] = '\0'; } while(0) #define PVR_STRCLR(dest) memset(dest, 0, sizeof(dest)) +/* indicate that caller can handle truncated reads, where function returns before entire buffer has been filled */ +#define READ_TRUNCATED 0x01 +/* indicate that that caller support read in the minimum defined chunk size, this disables internal cache then */ +#define READ_CHUNKED 0x02 +/* use cache to access this file */ +#define READ_CACHED 0x04 +/* open without caching. regardless to file type. */ +#define READ_NO_CACHE 0x08 +/* calcuate bitrate for file while reading */ +#define READ_BITRATE 0x10 + #define DEFAULT_HOST "127.0.0.1" -#define DEFAULT_CONNECT_TIMEOUT 30 #define DEFAULT_WEB_PORT 8089 #define DEFAULT_TSBUFFERPATH "special://userdata/addon_data/pvr.dvbviewer" -extern CStdString g_strHostname; -extern int g_iPortWeb; -extern CStdString g_strUsername; -extern CStdString g_strPassword; +extern CStdString g_hostname; +extern int g_webPort; +extern CStdString g_username; +extern CStdString g_password; extern bool g_useFavourites; extern bool g_useFavouritesFile; extern CStdString g_favouritesFile; -extern bool g_bUseTimeshift; -extern CStdString g_strTimeshiftBufferPath; +extern int g_groupRecordings; +extern bool g_useTimeshift; +extern CStdString g_timeshiftBufferPath; extern bool g_useRTSP; +extern bool g_lowPerformance; + extern ADDON::CHelper_libXBMC_addon *XBMC; extern CHelper_libXBMC_pvr *PVR; diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/src/DvbData.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/src/DvbData.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/src/DvbData.cpp 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/src/DvbData.cpp 2014-06-10 08:39:15.000000000 +0000 @@ -1,6 +1,8 @@ #include "DvbData.h" #include "client.h" #include "platform/util/util.h" +#include "tinyxml/tinyxml.h" +#include "tinyxml/XMLUtils.h" #include #include #include @@ -40,19 +42,17 @@ : m_connected(false), m_backendVersion(0) { // simply add user@pass in front of the URL if username/password is set - CStdString strAuth(""); - if (!g_strUsername.empty() && !g_strPassword.empty()) - strAuth.Format("%s:%s@", g_strUsername.c_str(), g_strPassword.c_str()); - m_strURL.Format("http://%s%s:%u/", strAuth.c_str(), g_strHostname.c_str(), - g_iPortWeb); - - m_currentChannel = 0; - m_iClientIndexCounter = 1; - - m_iUpdateTimer = 0; - m_bUpdateTimers = false; - m_bUpdateEPG = false; - m_tsBuffer = NULL; + CStdString auth(""); + if (!g_username.empty() && !g_password.empty()) + auth.Format("%s:%s@", g_username.c_str(), g_password.c_str()); + m_url.Format("http://%s%s:%u/", auth.c_str(), g_hostname.c_str(), g_webPort); + + m_currentChannel = 0; + m_newTimerIndex = 1; + + m_updateTimers = false; + m_updateEPG = false; + m_tsBuffer = NULL; } Dvb::~Dvb() @@ -81,8 +81,10 @@ return false; TimerUpdates(); + // force recording sync as XBMC won't update recordings on PVR restart + PVR->TriggerRecordingUpdate(); - XBMC->Log(LOG_INFO, "Starting separate client update thread..."); + XBMC->Log(LOG_INFO, "Starting separate polling thread..."); CreateThread(); return IsRunning(); @@ -122,7 +124,7 @@ bool Dvb::SwitchChannel(const PVR_CHANNEL& channel) { m_currentChannel = channel.iUniqueId; - m_bUpdateEPG = true; + m_updateEPG = true; return true; } @@ -144,7 +146,6 @@ PVR_CHANNEL xbmcChannel; memset(&xbmcChannel, 0, sizeof(PVR_CHANNEL)); - xbmcChannel.iUniqueId = channel->id; xbmcChannel.bIsRadio = channel->radio; xbmcChannel.iChannelNumber = channel->frontendNr; @@ -158,7 +159,7 @@ else PVR_STRCPY(xbmcChannel.strInputFormat, ""); - if (!g_bUseTimeshift) + if (!g_useTimeshift) { // self referencing so GetLiveStreamURL() gets triggered CStdString streamURL; @@ -172,57 +173,62 @@ return PVR_ERROR_NO_ERROR; } -PVR_ERROR Dvb::GetEPGForChannel(ADDON_HANDLE handle, const PVR_CHANNEL& channel, time_t iStart, time_t iEnd) +//TODO: rewrite +//TODO: missing epg v2 - there's no documention +PVR_ERROR Dvb::GetEPGForChannel(ADDON_HANDLE handle, + const PVR_CHANNEL& channel, time_t iStart, time_t iEnd) { DvbChannel *myChannel = m_channels[channel.iUniqueId - 1]; - CStdString url(BuildURL("api/epg.html?lvl=2&channel=%"PRIu64"&start=%f&end=%f", - myChannel->epgId, iStart/86400.0 + DELPHI_DATE, iEnd/86400.0 + DELPHI_DATE)); - CStdString strXML(GetHttpXML(url)); - - XMLResults xe; - XMLNode xMainNode = XMLNode::parseString(strXML, NULL, &xe); - if (xe.error != 0) + CStdString url = BuildURL("api/epg.html?lvl=2&channel=%"PRIu64"&start=%f&end=%f", + myChannel->epgId, iStart/86400.0 + DELPHI_DATE, iEnd/86400.0 + DELPHI_DATE); + CStdString req = GetHttpXML(url); + + TiXmlDocument doc; + doc.Parse(req); + if (doc.Error()) { - XBMC->Log(LOG_ERROR, "Unable to parse EPG. Invalid XML. Error: %s", XMLNode::getError(xe.error)); + XBMC->Log(LOG_ERROR, "Unable to parse EPG. Error: %s", + doc.ErrorDesc()); return PVR_ERROR_SERVER_ERROR; } - XMLNode xNode = xMainNode.getChildNode("epg"); - int n = xNode.nChildNode("programme"); - XBMC->Log(LOG_DEBUG, "%s Number of EPG entries for channel '%s': %d", - __FUNCTION__, channel.strChannelName, n); - unsigned iNumEPG = 0; - for (int i = 0; i < n; ++i) + for (TiXmlElement *xEntry = doc.RootElement()->FirstChildElement("programme"); + xEntry; xEntry = xEntry->NextSiblingElement("programme")) { DvbEPGEntry entry; entry.iChannelUid = channel.iUniqueId; - - XMLNode xTmp = xNode.getChildNode("programme", i); - entry.startTime = ParseDateTime(xNode.getChildNode("programme", i).getAttribute("start")); - entry.endTime = ParseDateTime(xNode.getChildNode("programme", i).getAttribute("stop")); + entry.startTime = ParseDateTime(xEntry->Attribute("start")); + entry.endTime = ParseDateTime(xEntry->Attribute("stop")); if (iEnd > 1 && iEnd < entry.endTime) continue; - if (!GetXMLValue(xTmp, "eventid", entry.iEventId)) + if (!XMLUtils::GetInt(xEntry, "eventid", entry.iEventId)) continue; - if(!GetXMLValue(xTmp.getChildNode("titles"), "title", entry.strTitle, true)) + // since RS 1.26.0 the correct language is already merged into the elements + TiXmlNode *xTitles = xEntry->FirstChild("titles"); + if (!xTitles || !XMLUtils::GetString(xTitles, "title", entry.strTitle)) continue; - CStdString strTmp, strTmp2; - GetXMLValue(xTmp.getChildNode("descriptions"), "description", strTmp, true); - GetXMLValue(xTmp.getChildNode("events"), "event", strTmp2, true); - if (strTmp.length() > strTmp2.length()) - entry.strPlot = strTmp; - else - entry.strPlot = strTmp2; + TiXmlNode *xDescriptions = xEntry->FirstChild("descriptions"); + if (xDescriptions) + XMLUtils::GetString(xDescriptions, "description", entry.strPlot); + + TiXmlNode *xEvents = xEntry->FirstChild("events"); + if (xEvents) + { + XMLUtils::GetString(xEvents, "event", entry.strPlotOutline); + if (!entry.strPlotOutline.empty() && entry.strPlot.empty()) + entry.strPlot = entry.strPlotOutline; + } + + XMLUtils::GetUInt(xEntry, "content", entry.genre); EPG_TAG broadcast; memset(&broadcast, 0, sizeof(EPG_TAG)); - broadcast.iUniqueBroadcastId = entry.iEventId; broadcast.strTitle = entry.strTitle.c_str(); broadcast.iChannelNumber = channel.iChannelNumber; @@ -230,21 +236,10 @@ broadcast.endTime = entry.endTime; broadcast.strPlotOutline = entry.strPlotOutline.c_str(); broadcast.strPlot = entry.strPlot.c_str(); - broadcast.strIconPath = ""; // unused - broadcast.iGenreType = 0; // unused - broadcast.iGenreSubType = 0; // unused - broadcast.strGenreDescription = ""; - broadcast.firstAired = 0; // unused - broadcast.iParentalRating = 0; // unused - broadcast.iStarRating = 0; // unused - broadcast.bNotify = false; - broadcast.iSeriesNumber = 0; // unused - broadcast.iEpisodeNumber = 0; // unused - broadcast.iEpisodePartNumber = 0; // unused - broadcast.strEpisodeName = ""; // unused + broadcast.iGenreType = entry.genre & 0xF0; + broadcast.iGenreSubType = entry.genre & 0x0F; PVR->TransferEpgEntry(handle, &broadcast); - ++iNumEPG; XBMC->Log(LOG_DEBUG, "%s loaded EPG entry '%u:%s': start=%u, end=%u", @@ -272,6 +267,7 @@ continue; if (group->radio != bRadio) continue; + PVR_CHANNEL_GROUP tag; memset(&tag, 0, sizeof(PVR_CHANNEL_GROUP)); tag.bIsRadio = group->radio; @@ -293,21 +289,22 @@ if (group->name != pvrGroup.strGroupName) continue; - for(std::list::iterator it = group->channels.begin(); + for (std::list::iterator it = group->channels.begin(); it != group->channels.end(); ++it) { DvbChannel *channel = *it; + PVR_CHANNEL_GROUP_MEMBER tag; memset(&tag, 0, sizeof(PVR_CHANNEL_GROUP_MEMBER)); PVR_STRCPY(tag.strGroupName, pvrGroup.strGroupName); tag.iChannelUniqueId = channel->id; tag.iChannelNumber = channelNumberInGroup++; + PVR->TransferChannelGroupMember(handle, &tag); + XBMC->Log(LOG_DEBUG, "%s add channel '%s' (%u) to group '%s'", __FUNCTION__, channel->name.c_str(), channel->backendNr, group->name.c_str()); - - PVR->TransferChannelGroupMember(handle, &tag); } } return PVR_ERROR_NO_ERROR; @@ -326,24 +323,17 @@ { PVR_TIMER tag; memset(&tag, 0, sizeof(PVR_TIMER)); - + PVR_STRCPY(tag.strTitle, timer->strTitle.c_str()); + PVR_STRCPY(tag.strSummary, timer->strPlot.c_str()); tag.iClientChannelUid = timer->iChannelUid; tag.startTime = timer->startTime; tag.endTime = timer->endTime; - PVR_STRCPY(tag.strTitle, timer->strTitle.c_str()); - PVR_STRCPY(tag.strDirectory, "/"); // unused - PVR_STRCPY(tag.strSummary, timer->strPlot.c_str()); tag.state = timer->state; tag.iPriority = timer->iPriority; - tag.iLifetime = 0; // unused tag.bIsRepeating = timer->bRepeating; tag.firstDay = timer->iFirstDay; tag.iWeekdays = timer->iWeekdays; tag.iEpgUid = timer->iEpgId; - tag.iMarginStart = 0; // unused - tag.iMarginEnd = 0; // unused - tag.iGenreType = 0; // unused - tag.iGenreSubType = 0; // unused tag.iClientIndex = timer->iClientIndex; PVR->TransferTimerEntry(handle, &tag); @@ -370,7 +360,7 @@ if (timer.state == PVR_TIMER_STATE_RECORDING) PVR->TriggerRecordingUpdate(); - m_bUpdateTimers = true; + m_updateTimers = true; return PVR_ERROR_NO_ERROR; } @@ -382,86 +372,123 @@ PVR_ERROR Dvb::GetRecordings(ADDON_HANDLE handle) { - CStdString url = BuildURL("api/recordings.html?images=1&nofilename=1"); + CStdString url = BuildURL("api/recordings.html?images=1"); CStdString req = GetHttpXML(url); RemoveNullChars(req); - XMLResults xe; - XMLNode xMainNode = XMLNode::parseString(req, NULL, &xe); - if (xe.error != 0) + TiXmlDocument doc; + doc.Parse(req); + if (doc.Error()) { - XBMC->Log(LOG_ERROR, "Unable to parse recordings. Invalid XML. Error: %s", - XMLNode::getError(xe.error)); + XBMC->Log(LOG_ERROR, "Unable to parse recordings. Error: %s", + doc.ErrorDesc()); return PVR_ERROR_SERVER_ERROR; } - XMLNode xNode = xMainNode.getChildNode("recordings"); - CStdString streamURL, imageURL; - GetXMLValue(xNode, "serverURL", streamURL); - GetXMLValue(xNode, "imageURL", imageURL); - - int n = xNode.nChildNode("recording"); - XBMC->Log(LOG_DEBUG, "%s Number of recording entries: %d", __FUNCTION__, n); + TiXmlElement *root = doc.RootElement(); + XMLUtils::GetString(root, "serverURL", streamURL); + XMLUtils::GetString(root, "imageURL", imageURL); // there's no need to merge new recordings in older ones as XBMC does this // already for us (using strRecordingId). so just parse all recordings again - m_recordings.clear(); + m_recordingAmount = 0; // insert recordings in reverse order - for (int i = 0; i < n; ++i) + for (TiXmlNode *xNode = root->LastChild("recording"); + xNode; xNode = xNode->PreviousSibling("recording")) { - XMLNode xTmp = xNode.getChildNode("recording", n - i - 1); - - m_recordings.push_back(DvbRecording()); - DvbRecording *recording = &m_recordings.back(); - - recording->id = xTmp.getAttribute("id"); - GetXMLValue(xTmp, "title", recording->title); - GetXMLValue(xTmp, "channel", recording->channelName); - GetXMLValue(xTmp, "info", recording->plotOutline); - - CStdString tmp; - recording->plot = (GetXMLValue(xTmp, "desc", tmp)) ? tmp - : recording->plotOutline; + if (!xNode->ToElement()) + continue; - recording->streamURL = BuildExtURL(streamURL, "%s.ts", - recording->id.c_str()); + TiXmlElement *xRecording = xNode->ToElement(); - if (GetXMLValue(xTmp, "image", tmp)) - recording->thumbnailPath = BuildExtURL(imageURL, "%s", tmp.c_str()); + DvbRecording recording; + recording.id = xRecording->Attribute("id"); + xRecording->QueryUnsignedAttribute("content", &recording.genre); + XMLUtils::GetString(xRecording, "channel", recording.channelName); + XMLUtils::GetString(xRecording, "title", recording.title); + XMLUtils::GetString(xRecording, "info", recording.plotOutline); + XMLUtils::GetString(xRecording, "desc", recording.plot); + if (recording.plot.empty()) + recording.plot = recording.plotOutline; + + recording.streamURL = BuildExtURL(streamURL, "%s.ts", recording.id.c_str()); + + CStdString thumbnail; + if (!g_lowPerformance && XMLUtils::GetString(xRecording, "image", thumbnail)) + recording.thumbnailPath = BuildExtURL(imageURL, "%s", thumbnail.c_str()); - CStdString startTime = xTmp.getAttribute("start"); - recording->startTime = ParseDateTime(startTime); + CStdString startTime = xRecording->Attribute("start"); + recording.startTime = ParseDateTime(startTime); int hours, mins, secs; - sscanf(xTmp.getAttribute("duration"), "%02d%02d%02d", &hours, &mins, &secs); - recording->duration = hours*60*60 + mins*60 + secs; + sscanf(xRecording->Attribute("duration"), "%02d%02d%02d", &hours, &mins, &secs); + recording.duration = hours*60*60 + mins*60 + secs; // generate a more unique id - recording->id += "_" + startTime; + recording.id += "_" + startTime; PVR_RECORDING tag; memset(&tag, 0, sizeof(PVR_RECORDING)); - PVR_STRCPY(tag.strRecordingId, recording->id.c_str()); - PVR_STRCPY(tag.strTitle, recording->title.c_str()); - PVR_STRCPY(tag.strStreamURL, recording->streamURL.c_str()); - PVR_STRCPY(tag.strPlotOutline, recording->plotOutline.c_str()); - PVR_STRCPY(tag.strPlot, recording->plot.c_str()); - PVR_STRCPY(tag.strChannelName, recording->channelName.c_str()); - PVR_STRCPY(tag.strThumbnailPath, recording->thumbnailPath.c_str()); - tag.recordingTime = recording->startTime; - tag.iDuration = recording->duration; - PVR_STRCPY(tag.strDirectory, "/"); // unused + PVR_STRCPY(tag.strRecordingId, recording.id.c_str()); + PVR_STRCPY(tag.strTitle, recording.title.c_str()); + PVR_STRCPY(tag.strStreamURL, recording.streamURL.c_str()); + PVR_STRCPY(tag.strPlotOutline, recording.plotOutline.c_str()); + PVR_STRCPY(tag.strPlot, recording.plot.c_str()); + PVR_STRCPY(tag.strChannelName, recording.channelName.c_str()); + PVR_STRCPY(tag.strThumbnailPath, recording.thumbnailPath.c_str()); + tag.recordingTime = recording.startTime; + tag.iDuration = recording.duration; + tag.iGenreType = recording.genre & 0xF0; + tag.iGenreSubType = recording.genre & 0x0F; + + CStdString tmp; + switch(g_groupRecordings) + { + case DvbRecording::GroupByDirectory: + XMLUtils::GetString(xRecording, "file", tmp); + tmp.ToLower(); + for (std::vector::reverse_iterator recf = m_recfolders.rbegin(); + recf != m_recfolders.rend(); ++recf) + { + if (tmp.compare(0, recf->length(), *recf) != 0) + continue; + tmp = tmp.substr(recf->length(), tmp.ReverseFind('\\') - recf->length()); + tmp.Replace('\\', '/'); + PVR_STRCPY(tag.strDirectory, tmp.c_str() + 1); + break; + } + break; + case DvbRecording::GroupByDate: + tmp.Format("%s/%s", startTime.substr(0, 4), startTime.substr(4, 2)); + PVR_STRCPY(tag.strDirectory, tmp.c_str()); + break; + case DvbRecording::GroupByFirstLetter: + tag.strDirectory[0] = recording.title[0]; + tag.strDirectory[1] = '\0'; + break; + case DvbRecording::GroupByTVChannel: + PVR_STRCPY(tag.strDirectory, recording.channelName.c_str()); + break; + case DvbRecording::GroupBySeries: + tmp = "Unknown"; + XMLUtils::GetString(xRecording, "series", tmp); + PVR_STRCPY(tag.strDirectory, tmp.c_str()); + break; + default: + break; + } PVR->TransferRecordingEntry(handle, &tag); + ++m_recordingAmount; XBMC->Log(LOG_DEBUG, "%s loaded Recording entry '%s': start=%u, length=%u", - __FUNCTION__, recording->title.c_str(), recording->startTime, - recording->duration); + __FUNCTION__, recording.title.c_str(), recording.startTime, + recording.duration); } - XBMC->Log(LOG_INFO, "Loaded %u Recording Entries", m_recordings.size()); + XBMC->Log(LOG_INFO, "Loaded %u Recording Entries", m_recordingAmount); return PVR_ERROR_NO_ERROR; } @@ -483,7 +510,7 @@ unsigned int Dvb::GetRecordingsAmount() { - return m_recordings.size(); + return m_recordingAmount; } @@ -495,15 +522,15 @@ return true; SwitchChannel(channelinfo); - if (!g_bUseTimeshift) + if (!g_useTimeshift) return true; if (m_tsBuffer) SAFE_DELETE(m_tsBuffer); - XBMC->Log(LOG_INFO, "Timeshift starts; url=%s", - GetLiveStreamURL(channelinfo).c_str()); - m_tsBuffer = new TimeshiftBuffer(GetLiveStreamURL(channelinfo), - g_strTimeshiftBufferPath); + + CStdString streamURL = GetLiveStreamURL(channelinfo); + XBMC->Log(LOG_INFO, "Timeshift starts; url=%s", streamURL.c_str()); + m_tsBuffer = new TimeshiftBuffer(streamURL, g_timeshiftBufferPath); return m_tsBuffer->IsValid(); } @@ -514,69 +541,46 @@ SAFE_DELETE(m_tsBuffer); } -int Dvb::ReadLiveStream(unsigned char *pBuffer, unsigned int iBufferSize) +TimeshiftBuffer *Dvb::GetTimeshiftBuffer() { - if (!m_tsBuffer) - return 0; - return m_tsBuffer->ReadData(pBuffer, iBufferSize); -} - -long long Dvb::SeekLiveStream(long long iPosition, int iWhence /* = SEEK_SET */) -{ - if (!m_tsBuffer) - return 0; - return m_tsBuffer->Seek(iPosition, iWhence); -} - -long long Dvb::PositionLiveStream(void) -{ - if (!m_tsBuffer) - return 0; - return m_tsBuffer->Position(); -} - -long long Dvb::LengthLiveStream(void) -{ - if (!m_tsBuffer) - return 0; - return m_tsBuffer->Length(); + return m_tsBuffer; } CStdString& Dvb::GetLiveStreamURL(const PVR_CHANNEL& channelinfo) { - SwitchChannel(channelinfo); return m_channels[channelinfo.iUniqueId - 1]->streamURL; } void *Dvb::Process() { + int updateTimer = 0; XBMC->Log(LOG_DEBUG, "%s starting", __FUNCTION__); while (!IsStopped()) { Sleep(1000); - ++m_iUpdateTimer; + ++updateTimer; - if (m_bUpdateEPG) + if (m_updateEPG) { Sleep(8000); /* Sleep enough time to let the recording service grab the EPG data */ PVR->TriggerEpgUpdate(m_currentChannel); - m_bUpdateEPG = false; + m_updateEPG = false; } - if (m_iUpdateTimer > 60 || m_bUpdateTimers) + if (updateTimer > 60 || m_updateTimers) { - m_iUpdateTimer = 0; + updateTimer = 0; // Trigger Timer and Recording updates acording to the addon settings CLockObject lock(m_mutex); - XBMC->Log(LOG_INFO, "Perform timer/recording updates!"); + XBMC->Log(LOG_INFO, "Performing timer/recording updates!"); - if (m_bUpdateTimers) + if (m_updateTimers) { Sleep(500); - m_bUpdateTimers = false; + m_updateTimers = false; } TimerUpdates(); PVR->TriggerRecordingUpdate(); @@ -592,42 +596,40 @@ CStdString Dvb::GetHttpXML(const CStdString& url) { - CStdString strResult; - void* fileHandle = XBMC->OpenFile(url, 0); + CStdString result; + void *fileHandle = XBMC->OpenFile(url, READ_NO_CACHE); if (fileHandle) { char buffer[1024]; while (int bytesRead = XBMC->ReadFile(fileHandle, buffer, 1024)) - strResult.append(buffer, bytesRead); + result.append(buffer, bytesRead); XBMC->CloseFile(fileHandle); } - return strResult; + return result; } -CStdString Dvb::URLEncodeInline(const CStdString& strData) +CStdString Dvb::URLEncodeInline(const CStdString& data) { /* Copied from xbmc/URL.cpp */ - CStdString strResult; + CStdString result; /* wonder what a good value is here is, depends on how often it occurs */ - strResult.reserve(strData.length() * 2); + result.reserve(data.length() * 2); - for (unsigned int i = 0; i < strData.length(); ++i) + for (unsigned int i = 0; i < data.length(); ++i) { - int kar = (unsigned char)strData[i]; - //if (kar == ' ') strResult += '+'; // obsolete + int kar = (unsigned char)data[i]; + //if (kar == ' ') result += '+'; // obsolete if (isalnum(kar) || strchr("-_.!()" , kar) ) // Don't URL encode these according to RFC1738 - { - strResult += kar; - } + result += kar; else { - CStdString strTmp; - strTmp.Format("%%%02.2x", kar); - strResult += strTmp; + CStdString tmp; + tmp.Format("%%%02.2x", kar); + result += tmp; } } - return strResult; + return result; } bool Dvb::LoadChannels() @@ -635,79 +637,81 @@ CStdString url = BuildURL("api/getchannelsxml.html?subchannels=1&rtsp=1&upnp=1&logo=1"); CStdString req = GetHttpXML(url); - XMLResults xe; - XMLNode xMainNode = XMLNode::parseString(req, NULL, &xe); - if (xe.error != 0) - { - XBMC->Log(LOG_ERROR, "Unable to parse channels. Invalid XML. Error: %s", - XMLNode::getError(xe.error)); + TiXmlDocument doc; + doc.Parse(req); + if (doc.Error()) + { + XBMC->Log(LOG_ERROR, "Unable to parse channels. Error: %s", + doc.ErrorDesc()); + XBMC->QueueNotification(QUEUE_ERROR, XBMC->GetLocalizedString(30502)); + XBMC->QueueNotification(QUEUE_ERROR, XBMC->GetLocalizedString(30503)); return false; } - XMLNode xChannels = xMainNode.getChildNode("channels"); + TiXmlElement *root = doc.RootElement(); CStdString streamURL; - GetXMLValue(xChannels, (g_useRTSP) ? "rtspURL" : "upnpURL", streamURL); + XMLUtils::GetString(root, (g_useRTSP) ? "rtspURL" : "upnpURL", streamURL); m_channels.clear(); m_channelAmount = 0; m_groups.clear(); m_groupAmount = 0; - int n = xChannels.nChildNode("root"); - for (int i = 0; i < n; ++i) + for (TiXmlElement *xRoot = doc.RootElement()->FirstChildElement("root"); + xRoot; xRoot = xRoot->NextSiblingElement("root")) { - XMLNode xRoot = xChannels.getChildNode("root", i); - int num_groups = xRoot.nChildNode("group"); - for (int j = 0; j < num_groups; ++j) + for (TiXmlElement *xGroup = xRoot->FirstChildElement("group"); + xGroup; xGroup = xGroup->NextSiblingElement("group")) { - XMLNode xGroup = xRoot.getChildNode("group", j); - m_groups.push_back(DvbGroup()); DvbGroup *group = &m_groups.back(); - group->name = xGroup.getAttribute("name"); + group->name = xGroup->Attribute("name"); group->hidden = g_useFavourites; group->radio = true; if (!group->hidden) ++m_groupAmount; - int num_channels = xGroup.nChildNode("channel"); - for (int k = 0; k < num_channels; ++k) + for (TiXmlElement *xChannel = xGroup->FirstChildElement("channel"); + xChannel; xChannel = xChannel->NextSiblingElement("channel")) { - XMLNode xChannel = xGroup.getChildNode("channel", k); - DvbChannel *channel = new DvbChannel(); - int flags = atoi(xChannel.getAttribute("flags")); + unsigned int flags = 0; + xChannel->QueryUnsignedAttribute("flags", &flags); channel->radio = !(flags & VIDEO_FLAG); channel->encrypted = (flags & ENCRYPTED_FLAG); - channel->name = xChannel.getAttribute("name"); - channel->backendNr = atoi(xChannel.getAttribute("nr")); - channel->epgId = ParseUInt64(xChannel.getAttribute("EPGID")); + channel->name = xChannel->Attribute("name"); channel->hidden = g_useFavourites; channel->frontendNr = (!g_useFavourites) ? m_channels.size() + 1 : 0; - channel->backendIds.push_back(ParseUInt64(xChannel.getAttribute("ID"))); + xChannel->QueryUnsignedAttribute("nr", &channel->backendNr); + xChannel->QueryValueAttribute("EPGID", &channel->epgId); + + uint64_t backendId = 0; + xChannel->QueryValueAttribute("ID", &backendId); + channel->backendIds.push_back(backendId); CStdString logoURL; - if (GetXMLValue(xChannel, "logo", logoURL)) + if (!g_lowPerformance && XMLUtils::GetString(xChannel, "logo", logoURL)) channel->logoURL = BuildURL("%s", logoURL.c_str()); if (g_useRTSP) { CStdString urlParams; - GetXMLValue(xChannel, "rtsp", urlParams); + XMLUtils::GetString(xChannel, "rtsp", urlParams); channel->streamURL = BuildExtURL(streamURL, "%s", urlParams.c_str()); } else channel->streamURL = BuildExtURL(streamURL, "%u.ts", channel->backendNr); - int num_subchannels = xChannel.nChildNode("subchannel"); - for (int l = 0; l < num_subchannels; ++l) + for (TiXmlElement* xSubChannel = xChannel->FirstChildElement("subchannel"); + xSubChannel; xSubChannel = xSubChannel->NextSiblingElement("subchannel")) { - XMLNode xSubChannel = xChannel.getChildNode("subchannel", l); - channel->backendIds.push_back(ParseUInt64(xSubChannel.getAttribute("ID"))); + uint64_t backendId = 0; + xSubChannel->QueryValueAttribute("ID", &backendId); + channel->backendIds.push_back(backendId); } - //FIXME: PVR_CHANNEL.UniqueId is uint32 but DVB Viewer ids are uint64 + //FIXME: PVR_CHANNEL.UniqueId is uint32 but DVBViewer ids are uint64 // so generate our own unique ids, at least for this session channel->id = m_channels.size() + 1; m_channels.push_back(channel); @@ -728,7 +732,8 @@ { if (!XBMC->FileExists(g_favouritesFile, false)) { - //TODO: print error instead of loading favourites + XBMC->Log(LOG_ERROR, "Unable to open local favourites.xml"); + XBMC->QueueNotification(QUEUE_ERROR, XBMC->GetLocalizedString(30504)); return false; } url = g_favouritesFile; @@ -737,12 +742,14 @@ CStdString req = GetHttpXML(url); RemoveNullChars(req); - XMLResults xe; - XMLNode xMainNode = XMLNode::parseString(req, NULL, &xe); - if (xe.error != 0) + TiXmlDocument doc; + doc.Parse(req); + if (doc.Error()) { XBMC->Log(LOG_ERROR, "Unable to parse favourites.xml. Error: %s", - XMLNode::getError(xe.error)); + doc.ErrorDesc()); + XBMC->QueueNotification(QUEUE_ERROR, XBMC->GetLocalizedString(30505)); + XBMC->QueueNotification(QUEUE_ERROR, XBMC->GetLocalizedString(30503)); return false; } @@ -762,22 +769,21 @@ * ... * */ - XMLNode xSettings = xMainNode.getChildNode("settings"); - int n = xSettings.nChildNode("section"); - for (int i = 0; i < n; ++i) + for (TiXmlElement *xSection = doc.RootElement()->FirstChildElement("section"); + xSection; xSection = xSection->NextSiblingElement("section")) { DvbGroup *group = NULL; - XMLNode xSection = xSettings.getChildNode("section", i); - int m = xSection.nChildNode("entry"); - for (int j = 0; j < m; ++j) + for (TiXmlElement *xEntry = xSection->FirstChildElement("entry"); + xEntry; xEntry = xEntry->NextSiblingElement("entry")) { - XMLNode xEntry = xSection.getChildNode("entry", j); - // name="Header" doesn't indicate a group alone. see example above - if (CStdString(xEntry.getAttribute("name")) == "Header" && m > 1) + // name="Header" doesn't indicate a group alone. we must have at least + // one additional child. see example above + if (!group && CStdString(xEntry->Attribute("name")) == "Header" + && xEntry->NextSiblingElement("entry")) { m_groups.push_back(DvbGroup()); group = &m_groups.back(); - group->name = ConvertToUtf8(xEntry.getText()); + group->name = ConvertToUtf8(xEntry->GetText()); group->hidden = false; group->radio = false; ++m_groupAmount; @@ -785,17 +791,18 @@ } uint64_t backendId = 0; - std::istringstream ss(xEntry.getText()); + std::istringstream ss(xEntry->GetText()); ss >> backendId; + if (!backendId) + continue; - //TODO: use getchannelbybackendid? for (DvbChannels_t::iterator it = m_channels.begin(); it != m_channels.end(); ++it) { DvbChannel *channel = *it; bool found = false; - for(std::list::iterator it2 = channel->backendIds.begin(); + for (std::list::iterator it2 = channel->backendIds.begin(); it2 != channel->backendIds.end(); ++it2) { /* legacy support for old 32bit channel ids */ @@ -849,47 +856,47 @@ return true; } +//TODO: rewrite DvbTimers_t Dvb::LoadTimers() { DvbTimers_t timers; - CStdString url(BuildURL("api/timerlist.html?utf8")); - CStdString strXML(GetHttpXML(url)); - RemoveNullChars(strXML); - - XMLResults xe; - XMLNode xMainNode = XMLNode::parseString(strXML, NULL, &xe); - if (xe.error != 0) - { - XBMC->Log(LOG_ERROR, "Unable to parse timers. Invalid XML. Error: %s", XMLNode::getError(xe.error)); + CStdString url = BuildURL("api/timerlist.html?utf8"); + CStdString req = GetHttpXML(url); + RemoveNullChars(req); + + TiXmlDocument doc; + doc.Parse(req); + if (doc.Error()) + { + XBMC->Log(LOG_ERROR, "Unable to parse timers. Error: %s", + doc.ErrorDesc()); + XBMC->QueueNotification(QUEUE_ERROR, XBMC->GetLocalizedString(30506)); + XBMC->QueueNotification(QUEUE_ERROR, XBMC->GetLocalizedString(30503)); return timers; } - XMLNode xNode = xMainNode.getChildNode("Timers"); - int n = xNode.nChildNode("Timer"); - XBMC->Log(LOG_DEBUG, "%s Number of timer entries: %d", __FUNCTION__, n); - - for (int i = 0; i < n; ++i) + for (TiXmlElement *xTimer = doc.RootElement()->FirstChildElement("Timer"); + xTimer; xTimer = xTimer->NextSiblingElement("Timer")) { - XMLNode xTmp = xNode.getChildNode("Timer", n - i - 1); + DvbTimer timer; CStdString strTmp; - if (GetXMLValue(xTmp, "Descr", strTmp)) + if (XMLUtils::GetString(xTimer, "Descr", strTmp)) XBMC->Log(LOG_DEBUG, "%s Processing timer '%s'", __FUNCTION__, strTmp.c_str()); - DvbTimer timer; timer.strTitle = strTmp; - timer.iChannelUid = GetChannelUid(xTmp.getChildNode("Channel").getAttribute("ID")); + timer.iChannelUid = GetChannelUid(xTimer->FirstChildElement("Channel")->Attribute("ID")); if (timer.iChannelUid == 0) continue; timer.state = PVR_TIMER_STATE_SCHEDULED; - CStdString DateTime = xTmp.getAttribute("Date"); - DateTime.append(xTmp.getAttribute("Start")); + CStdString DateTime = xTimer->Attribute("Date"); + DateTime.append(xTimer->Attribute("Start")); timer.startTime = ParseDateTime(DateTime, false); - timer.endTime = timer.startTime + atoi(xTmp.getAttribute("Dur"))*60; + timer.endTime = timer.startTime + atoi(xTimer->Attribute("Dur")) * 60; - CStdString Weekdays = xTmp.getAttribute("Days"); + CStdString Weekdays = xTimer->Attribute("Days"); timer.iWeekdays = 0; for (unsigned int j = 0; j < Weekdays.length(); ++j) { @@ -905,22 +912,22 @@ else timer.bRepeating = false; - timer.iPriority = atoi(xTmp.getAttribute("Priority")); + timer.iPriority = atoi(xTimer->Attribute("Priority")); - if (xTmp.getAttribute("EPGEventID")) - timer.iEpgId = atoi(xTmp.getAttribute("EPGEventID")); + if (xTimer->Attribute("EPGEventID")) + timer.iEpgId = atoi(xTimer->Attribute("EPGEventID")); - if (xTmp.getAttribute("Enabled")[0] == '0') + if (xTimer->Attribute("Enabled")[0] == '0') timer.state = PVR_TIMER_STATE_CANCELLED; int iTmp; - if (GetXMLValue(xTmp, "Recording", iTmp)) + if (XMLUtils::GetInt(xTimer, "Recording", iTmp)) { if (iTmp == -1) timer.state = PVR_TIMER_STATE_RECORDING; } - if (GetXMLValue(xTmp, "ID", iTmp)) + if (XMLUtils::GetInt(xTimer, "ID", iTmp)) timer.iTimerId = iTmp; timers.push_back(timer); @@ -933,6 +940,7 @@ return timers; } +//TODO: rewrite void Dvb::TimerUpdates() { for (DvbTimers_t::iterator timer = m_timers.begin(); @@ -940,8 +948,7 @@ timer->iUpdateState = DVB_UPDATE_STATE_NONE; DvbTimers_t newtimers = LoadTimers(); - unsigned int iUpdated = 0; - unsigned int iUnchanged = 0; + unsigned int updated = 0, unchanged = 0; for (DvbTimers_t::iterator newtimer = newtimers.begin(); newtimer != newtimers.end(); ++newtimer) { @@ -954,7 +961,7 @@ if (*timer == *newtimer) { timer->iUpdateState = newtimer->iUpdateState = DVB_UPDATE_STATE_FOUND; - ++iUnchanged; + ++unchanged; } else { @@ -971,12 +978,12 @@ timer->iPriority = newtimer->iPriority; timer->iFirstDay = newtimer->iFirstDay; timer->state = newtimer->state; - ++iUpdated; + ++updated; } } } - unsigned int iRemoved = 0; + unsigned int removed = 0; for (DvbTimers_t::iterator it = m_timers.begin(); it != m_timers.end();) { if (it->iUpdateState == DVB_UPDATE_STATE_NONE) @@ -984,78 +991,80 @@ XBMC->Log(LOG_DEBUG, "%s Removed timer: '%s', ClientIndex: %u", __FUNCTION__, it->strTitle.c_str(), it->iClientIndex); it = m_timers.erase(it); - ++iRemoved; + ++removed; } else ++it; } - unsigned int iNew = 0; + unsigned int added = 0; for (DvbTimers_t::iterator it = newtimers.begin(); it != newtimers.end(); ++it) { if (it->iUpdateState == DVB_UPDATE_STATE_NEW) { - it->iClientIndex = m_iClientIndexCounter; + it->iClientIndex = m_newTimerIndex; XBMC->Log(LOG_DEBUG, "%s New timer: '%s', ClientIndex: %u", - __FUNCTION__, it->strTitle.c_str(), m_iClientIndexCounter); + __FUNCTION__, it->strTitle.c_str(), m_newTimerIndex); m_timers.push_back(*it); - ++m_iClientIndexCounter; - ++iNew; + ++m_newTimerIndex; + ++added; } } - XBMC->Log(LOG_DEBUG, "%s Timers update: removed=%u, untouched=%u, updated=%u, new=%u", - __FUNCTION__, iRemoved, iUnchanged, iUpdated, iNew); + XBMC->Log(LOG_DEBUG, "%s Timers update: removed=%u, untouched=%u, updated=%u, added=%u", + __FUNCTION__, removed, unchanged, updated, added); - if (iRemoved || iUpdated || iNew) + if (removed || updated || added) { XBMC->Log(LOG_INFO, "Changes in timerlist detected, triggering an update!"); PVR->TriggerTimerUpdate(); } } -void Dvb::GenerateTimer(const PVR_TIMER& timer, bool bNewTimer) +void Dvb::GenerateTimer(const PVR_TIMER& timer, bool newTimer) { + // http://en.dvbviewer.tv/wiki/Recording_Service_Web_API#Add_a_timer + XBMC->Log(LOG_DEBUG, "%s iChannelUid=%u title='%s' epgid=%d", __FUNCTION__, timer.iClientChannelUid, timer.strTitle, timer.iEpgUid); - struct tm *timeinfo; time_t startTime = timer.startTime, endTime = timer.endTime; if (!startTime) - time(&startTime); + startTime = time(NULL); else { startTime -= timer.iMarginStart * 60; endTime += timer.iMarginEnd * 60; } - int dor = ((startTime + m_timezone * 60) / DAY_SECS) + DELPHI_DATE; + unsigned int date = ((startTime + m_timezone) / DAY_SECS) + DELPHI_DATE; + struct tm *timeinfo; timeinfo = localtime(&startTime); - int start = timeinfo->tm_hour * 60 + timeinfo->tm_min; + unsigned int start = timeinfo->tm_hour * 60 + timeinfo->tm_min; timeinfo = localtime(&endTime); - int stop = timeinfo->tm_hour * 60 + timeinfo->tm_min; + unsigned int stop = timeinfo->tm_hour * 60 + timeinfo->tm_min; - char strWeek[8] = "-------"; + char repeat[8] = "-------"; for (int i = 0; i < 7; ++i) { if (timer.iWeekdays & (1 << i)) - strWeek[i] = 'T'; + repeat[i] = 'T'; } uint64_t iChannelId = m_channels[timer.iClientChannelUid - 1]->backendIds.front(); CStdString url; - if (bNewTimer) - url = BuildURL("api/timeradd.html?ch=%"PRIu64"&dor=%d&enable=1&start=%d&stop=%d&prio=%d&days=%s&title=%s&encoding=255", - iChannelId, dor, start, stop, timer.iPriority, strWeek, URLEncodeInline(timer.strTitle).c_str()); + if (newTimer) + url = BuildURL("api/timeradd.html?ch=%"PRIu64"&dor=%u&enable=1&start=%u&stop=%u&prio=%d&days=%s&title=%s&encoding=255", + iChannelId, date, start, stop, timer.iPriority, repeat, URLEncodeInline(timer.strTitle).c_str()); else { - int enabled = (timer.state == PVR_TIMER_STATE_CANCELLED) ? 0 : 1; - url = BuildURL("api/timeredit.html?id=%d&ch=%"PRIu64"&dor=%d&enable=%d&start=%d&stop=%d&prio=%d&days=%s&title=%s&encoding=255", - GetTimerId(timer), iChannelId, dor, enabled, start, stop, timer.iPriority, strWeek, URLEncodeInline(timer.strTitle).c_str()); + short enabled = (timer.state == PVR_TIMER_STATE_CANCELLED) ? 0 : 1; + url = BuildURL("api/timeredit.html?id=%d&ch=%"PRIu64"&dor=%u&enable=%d&start=%u&stop=%u&prio=%d&days=%s&title=%s&encoding=255", + GetTimerId(timer), iChannelId, date, enabled, start, stop, timer.iPriority, repeat, URLEncodeInline(timer.strTitle).c_str()); } GetHttpXML(url); - m_bUpdateTimers = true; + m_updateTimers = true; } int Dvb::GetTimerId(const PVR_TIMER& timer) @@ -1069,62 +1078,6 @@ } -bool Dvb::GetXMLValue(const XMLNode& node, const char* tag, int& value) -{ - XMLNode xNode(node.getChildNode(tag)); - if (xNode.isEmpty()) - return false; - value = atoi(xNode.getText()); - return true; -} - -bool Dvb::GetXMLValue(const XMLNode& node, const char* tag, bool& value) -{ - XMLNode xNode(node.getChildNode(tag)); - if (xNode.isEmpty()) - return false; - - CStdString str(xNode.getText()); - str.ToLower(); - if (str == "off" || str == "no" || str == "disabled" || str == "false" || str == "0" ) - value = false; - else - { - value = true; - if (str != "on" && str != "yes" && str != "enabled" && str != "true") - return false; // invalid bool switch - it's probably some other string. - } - return true; -} - -bool Dvb::GetXMLValue(const XMLNode& node, const char* tag, CStdString& value, - bool localize) -{ - XMLNode xNode; - bool found = false; - - for (int i = 0; localize && i < node.nChildNode(tag); ++i) - { - xNode = node.getChildNode(tag, i); - const char *lang = xNode.getAttribute("lng"); - if (lang && lang == m_epgLanguage) - { - found = true; - break; - } - } - - if (!found) - xNode = node.getChildNode(tag); - if (!xNode.isEmpty()) - { - value = xNode.getText(); - return true; - } - value.clear(); - return false; -} - void Dvb::RemoveNullChars(CStdString& str) { /* favourites.xml and timers.xml sometimes have null chars that screw the xml */ @@ -1133,39 +1086,35 @@ bool Dvb::CheckBackendVersion() { - CStdString url(BuildURL("api/version.html")); - CStdString strXML(GetHttpXML(url)); + CStdString url = BuildURL("api/version.html"); + CStdString req = GetHttpXML(url); - XMLResults xe; - XMLNode xMainNode = XMLNode::parseString(strXML, NULL, &xe); - if (xe.error != 0) + TiXmlDocument doc; + doc.Parse(req); + if (doc.Error()) { - XBMC->Log(LOG_ERROR, "Unable to connect to the recording service"); + XBMC->Log(LOG_ERROR, "Unable to connect to the backend service. Error: %s", + doc.ErrorDesc()); XBMC->QueueNotification(QUEUE_ERROR, XBMC->GetLocalizedString(30500)); Sleep(10000); return false; } XBMC->Log(LOG_NOTICE, "Checking backend version..."); - XMLNode xNode = xMainNode.getChildNode("version"); - if (xNode.isEmpty()) + if (doc.RootElement()->QueryUnsignedAttribute("iver", &m_backendVersion) + != TIXML_SUCCESS) { - XBMC->Log(LOG_ERROR, "Could not parse version from result!"); + XBMC->Log(LOG_ERROR, "Unable to parse version"); return false; } - XBMC->Log(LOG_NOTICE, "Version: %s", xNode.getText()); - - XMLCSTR strVersion = xNode.getAttribute("iver"); - if (strVersion) - { - std::istringstream ss(strVersion); - ss >> m_backendVersion; - } + XBMC->Log(LOG_NOTICE, "Version: %u", m_backendVersion); if (m_backendVersion < RS_VERSION_NUM) { - XBMC->Log(LOG_ERROR, "Recording Service version %s or higher required", RS_VERSION_STR); - XBMC->QueueNotification(QUEUE_ERROR, XBMC->GetLocalizedString(30501), RS_VERSION_STR); + XBMC->Log(LOG_ERROR, "Recording Service version %s or higher required", + RS_VERSION_STR); + XBMC->QueueNotification(QUEUE_ERROR, XBMC->GetLocalizedString(30501), + RS_VERSION_STR); Sleep(10000); return false; } @@ -1173,50 +1122,62 @@ return true; } +static bool StringGreaterThan(const CStdString& a, const CStdString& b) +{ + return (a.length() < b.length()); +} + bool Dvb::UpdateBackendStatus(bool updateSettings) { - CStdString url(BuildURL("api/status.html")); - CStdString strXML(GetHttpXML(url)); + CStdString url = BuildURL("api/status.html"); + CStdString req = GetHttpXML(url); - XMLResults xe; - XMLNode xMainNode = XMLNode::parseString(strXML, NULL, &xe); - if (xe.error != 0) + TiXmlDocument doc; + doc.Parse(req); + if (doc.Error()) { - XBMC->Log(LOG_ERROR, "Unable to get backend status. Invalid XML. Error: %s", - XMLNode::getError(xe.error)); + XBMC->Log(LOG_ERROR, "Unable to get backend status. Error: %s", + doc.ErrorDesc()); return false; } - XMLNode xNode = xMainNode.getChildNode("status"); + TiXmlElement *root = doc.RootElement(); + if (updateSettings) { - GetXMLValue(xNode, "timezone", m_timezone); - GetXMLValue(xNode, "epglang", m_epgLanguage); + // RS doesn't update the timezone during daylight saving + //if (XMLUtils::GetLong(root, "timezone", m_timezone)) + // m_timezone *= 60; + m_timezone = GetGMTOffset(); + + m_recfolders.clear(); } // compute disk space. duplicates are detected by their identical values typedef std::pair Recfolder_t; std::set folders; - XMLNode recfolders = xNode.getChildNode("recfolders"); - int n = recfolders.nChildNode("folder"); m_diskspace.total = m_diskspace.used = 0; - for (int i = 0; i < n; ++i) + for (TiXmlElement *xFolder = TiXmlHandle(root).FirstChild("recfolders") + .FirstChild("folder").ToElement(); + xFolder; xFolder = xFolder->NextSiblingElement("folder")) { - XMLNode folder = recfolders.getChildNode("folder", i); - long long size = 0, free = 0; - std::istringstream ss(folder.getAttribute("size")); - ss >> size; - ss.clear(); - ss.str(folder.getAttribute("free")); - ss >> free; + xFolder->QueryValueAttribute("size", &size); + xFolder->QueryValueAttribute("free", &free); if (folders.insert(std::make_pair(size, free)).second) { m_diskspace.total += size / 1024; m_diskspace.used += (size - free) / 1024; } + + if (updateSettings && g_groupRecordings != DvbRecording::GroupDisabled) + m_recfolders.push_back(CStdString(xFolder->GetText()).ToLower()); } + + if (updateSettings && g_groupRecordings != DvbRecording::GroupDisabled) + std::sort(m_recfolders.begin(), m_recfolders.end(), StringGreaterThan); + return true; } @@ -1281,7 +1242,7 @@ it != m_channels.end(); ++it) { DvbChannel *channel = *it; - for(std::list::iterator backendId = channel->backendIds.begin(); + for (std::list::iterator backendId = channel->backendIds.begin(); backendId != channel->backendIds.end(); backendId++) { if (channelId == *backendId) @@ -1293,7 +1254,7 @@ CStdString Dvb::BuildURL(const char* path, ...) { - CStdString url(m_strURL); + CStdString url(m_url); va_list argList; va_start(argList, path); url.AppendFormatV(path, argList); @@ -1305,13 +1266,13 @@ { CStdString url(baseURL); // simply add user@pass in front of the URL if username/password is set - if (!g_strUsername.empty() && !g_strPassword.empty()) + if (!g_username.empty() && !g_password.empty()) { - CStdString strAuth; - strAuth.Format("%s:%s@", g_strUsername.c_str(), g_strPassword.c_str()); + CStdString auth; + auth.Format("%s:%s@", g_username.c_str(), g_password.c_str()); CStdString::size_type pos = url.find("://"); if (pos != CStdString::npos) - url.insert(pos + strlen("://"), strAuth); + url.insert(pos + strlen("://"), auth); } va_list argList; va_start(argList, path); @@ -1328,12 +1289,28 @@ return dest; } -uint64_t Dvb::ParseUInt64(const CStdString& str) +long Dvb::GetGMTOffset() { - uint64_t value = 0; - std::istringstream ss(str); - ss >> value; - if (ss.fail()) - return 0; - return value; +#ifdef TARGET_POSIX + struct tm t; + tzset(); + time_t tt = time(NULL); + if (localtime_r(&tt, &t)) + return t.tm_gmtoff; +#else + TIME_ZONE_INFORMATION tz; + switch(GetTimeZoneInformation(&tz)) + { + case TIME_ZONE_ID_DAYLIGHT: + return (tz.Bias + tz.DaylightBias) * -60; + break; + case TIME_ZONE_ID_STANDARD: + return (tz.Bias + tz.StandardBias) * -60; + break; + case TIME_ZONE_ID_UNKNOWN: + return tz.Bias * -60; + break; + } +#endif + return 0; } diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/src/DvbData.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/src/DvbData.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/src/DvbData.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/src/DvbData.h 2014-06-10 08:39:15.000000000 +0000 @@ -5,7 +5,6 @@ #include "client.h" #include "TimeshiftBuffer.h" -#include "xmlParser.h" #include "platform/util/StdString.h" #include "platform/threads/threads.h" #include @@ -21,7 +20,7 @@ // minimum version required #define RS_VERSION_MAJOR 1 -#define RS_VERSION_MINOR 25 +#define RS_VERSION_MINOR 26 #define RS_VERSION_PATCH1 0 #define RS_VERSION_PATCH2 0 #define RS_VERSION_NUM (RS_VERSION_MAJOR << 24 | RS_VERSION_MINOR << 16 | \ @@ -43,6 +42,11 @@ class DvbChannel { public: + DvbChannel() + : backendNr(0), epgId(0) + {} + +public: /*!< @brief unique id passed to xbmc database. see FIXME for more details */ unsigned int id; /*!< @brief backend number for generating the stream url */ @@ -69,13 +73,20 @@ bool hidden; }; -struct DvbEPGEntry +class DvbEPGEntry { +public: + DvbEPGEntry() + : genre(0) + {} + +public: int iEventId; CStdString strTitle; unsigned int iChannelUid; time_t startTime; time_t endTime; + unsigned int genre; CStdString strPlotOutline; CStdString strPlot; }; @@ -127,11 +138,29 @@ unsigned int iClientIndex; }; -struct DvbRecording +class DvbRecording { +public: + enum Group + { + GroupDisabled = 0, + GroupByDirectory, + GroupByDate, + GroupByFirstLetter, + GroupByTVChannel, + GroupBySeries, + }; + +public: + DvbRecording() + : genre(0) + {} + +public: CStdString id; time_t startTime; int duration; + unsigned int genre; CStdString title; CStdString streamURL; CStdString plot; @@ -143,7 +172,6 @@ typedef std::vector DvbChannels_t; typedef std::vector DvbGroups_t; typedef std::vector DvbTimers_t; -typedef std::vector DvbRecordings_t; class Dvb : public PLATFORM::CThread @@ -181,10 +209,7 @@ bool OpenLiveStream(const PVR_CHANNEL& channelinfo); void CloseLiveStream(); - int ReadLiveStream(unsigned char *pBuffer, unsigned int iBufferSize); - long long SeekLiveStream(long long iPosition, int iWhence /* = SEEK_SET */); - long long PositionLiveStream(void); - long long LengthLiveStream(void); + TimeshiftBuffer *GetTimeshiftBuffer(); CStdString& GetLiveStreamURL(const PVR_CHANNEL& channelinfo); protected: @@ -193,18 +218,14 @@ private: // functions CStdString GetHttpXML(const CStdString& url); - CStdString URLEncodeInline(const CStdString& strData); + CStdString URLEncodeInline(const CStdString& data); bool LoadChannels(); DvbTimers_t LoadTimers(); void TimerUpdates(); - void GenerateTimer(const PVR_TIMER& timer, bool bNewtimer = true); + void GenerateTimer(const PVR_TIMER& timer, bool newtimer = true); int GetTimerId(const PVR_TIMER& timer); // helper functions - bool GetXMLValue(const XMLNode& node, const char* tag, int& value); - bool GetXMLValue(const XMLNode& node, const char* tag, bool& value); - bool GetXMLValue(const XMLNode& node, const char* tag, CStdString& value, - bool localize = false); void RemoveNullChars(CStdString& str); bool CheckBackendVersion(); bool UpdateBackendStatus(bool updateSettings = false); @@ -215,17 +236,17 @@ CStdString BuildURL(const char* path, ...); CStdString BuildExtURL(const CStdString& baseURL, const char* path, ...); CStdString ConvertToUtf8(const CStdString& src); - uint64_t ParseUInt64(const CStdString& str); + long GetGMTOffset(); private: bool m_connected; unsigned int m_backendVersion; - int m_timezone; - CStdString m_epgLanguage; + long m_timezone; struct { long long total, used; } m_diskspace; + std::vector m_recfolders; - CStdString m_strURL; + CStdString m_url; unsigned int m_currentChannel; /* channels + active (not hidden) channels */ @@ -236,14 +257,13 @@ DvbGroups_t m_groups; unsigned int m_groupAmount; - unsigned int m_iUpdateTimer; - bool m_bUpdateTimers; - bool m_bUpdateEPG; - DvbRecordings_t m_recordings; + bool m_updateTimers; + bool m_updateEPG; + unsigned int m_recordingAmount; TimeshiftBuffer *m_tsBuffer; DvbTimers_t m_timers; - unsigned int m_iClientIndexCounter; + unsigned int m_newTimerIndex; PLATFORM::CMutex m_mutex; PLATFORM::CCondition m_started; diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/src/TimeshiftBuffer.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/src/TimeshiftBuffer.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/src/TimeshiftBuffer.cpp 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/src/TimeshiftBuffer.cpp 2014-06-10 08:39:15.000000000 +0000 @@ -7,12 +7,15 @@ TimeshiftBuffer::TimeshiftBuffer(CStdString streampath, CStdString bufferpath) : m_bufferPath(bufferpath) { - m_streamHandle = XBMC->OpenFile(streampath, 0); + m_streamHandle = XBMC->OpenFile(streampath, READ_NO_CACHE); m_bufferPath += "/tsbuffer.ts"; m_filebufferWriteHandle = XBMC->OpenFileForWrite(m_bufferPath, true); +#ifndef TARGET_POSIX + m_writePos = 0; +#endif Sleep(100); - m_filebufferReadHandle = XBMC->OpenFile(m_bufferPath, 0); - m_shifting = true; + m_filebufferReadHandle = XBMC->OpenFile(m_bufferPath, READ_NO_CACHE); + m_start = time(NULL); CreateThread(); } @@ -37,64 +40,94 @@ void TimeshiftBuffer::Stop() { - m_shifting = false; + m_start = 0; } void *TimeshiftBuffer::Process() { - XBMC->Log(LOG_DEBUG, "TimeShiftProcess:: thread started"); + XBMC->Log(LOG_DEBUG, "Timeshift: thread started"); byte buffer[STREAM_READ_BUFFER_SIZE]; - int bytesRead = STREAM_READ_BUFFER_SIZE; - while (m_shifting) + while (m_start) { - bytesRead = XBMC->ReadFile(m_streamHandle, buffer, sizeof(buffer)); - XBMC->WriteFile(m_filebufferWriteHandle, buffer, bytesRead); + unsigned int read = XBMC->ReadFile(m_streamHandle, buffer, sizeof(buffer)); + XBMC->WriteFile(m_filebufferWriteHandle, buffer, read); + +#ifndef TARGET_POSIX + m_mutex.Lock(); + m_writePos += read; + m_mutex.Unlock(); +#endif } - XBMC->Log(LOG_DEBUG, "TimeShiftProcess:: thread stopped"); + XBMC->Log(LOG_DEBUG, "Timeshift: thread stopped"); return NULL; } -long long TimeshiftBuffer::Seek(long long iPosition, int iWhence) +long long TimeshiftBuffer::Seek(long long position, int whence) { if (m_filebufferReadHandle) - return XBMC->SeekFile(m_filebufferReadHandle, iPosition, iWhence); - return 0; + return XBMC->SeekFile(m_filebufferReadHandle, position, whence); + return -1; } long long TimeshiftBuffer::Position() { if (m_filebufferReadHandle) return XBMC->GetFilePosition(m_filebufferReadHandle); - return 0; + return -1; } long long TimeshiftBuffer::Length() { - if (m_filebufferReadHandle) - return XBMC->GetFileLength(m_filebufferReadHandle); - return 0; -} + if (!m_filebufferReadHandle || !m_filebufferWriteHandle) + return 0; -int TimeshiftBuffer::ReadData(unsigned char *pBuffer, unsigned int iBufferSize) -{ - unsigned int totalReadBytes = 0; - unsigned int totalTimeWaited = 0; - if (m_filebufferReadHandle) + // We can't use GetFileLength here as it's value will be cached + // by XBMC until we read or seek above it. + // see xbm/xbmc/filesystem/HDFile.cpp CHDFile::GetLength() + //return XBMC->GetFileLength(m_filebufferReadHandle); + + int64_t writePos = 0; +#ifdef TARGET_POSIX + /* refresh write position */ + XBMC->SeekFile(m_filebufferWriteHandle, 0L, SEEK_CUR); + writePos = XBMC->GetFilePosition(m_filebufferWriteHandle); +#else + m_mutex.Lock(); + writePos = m_writePos; + m_mutex.Unlock(); +#endif + return writePos; +} + +int TimeshiftBuffer::ReadData(unsigned char *buffer, unsigned int size) +{ + if (!m_filebufferReadHandle || !m_filebufferWriteHandle) + return 0; + + /* make sure we never read above the current write position */ + int64_t readPos = XBMC->GetFilePosition(m_filebufferReadHandle); + unsigned int timeWaited = 0; + while (readPos + size > Length()) { - unsigned int read = XBMC->ReadFile(m_filebufferReadHandle, pBuffer, iBufferSize); - totalReadBytes += read; - - while (read < iBufferSize && totalTimeWaited < BUFFER_READ_TIMEOUT) + if (timeWaited > BUFFER_READ_TIMEOUT) { - Sleep(BUFFER_READ_WAITTIME); - totalTimeWaited += BUFFER_READ_WAITTIME; - read = XBMC->ReadFile(m_filebufferReadHandle, pBuffer, iBufferSize - totalReadBytes); - totalReadBytes += read; + XBMC->Log(LOG_DEBUG, "Timeshift: Read timed out; waited %u", timeWaited); + return -1; } - - if (totalTimeWaited > BUFFER_READ_TIMEOUT) - XBMC->Log(LOG_DEBUG, "Timeshifterbuffer timed out, waited : %d", totalTimeWaited); + Sleep(BUFFER_READ_WAITTIME); + timeWaited += BUFFER_READ_WAITTIME; } - return totalReadBytes; + + return XBMC->ReadFile(m_filebufferReadHandle, buffer, size); +} + +time_t TimeshiftBuffer::TimeStart() +{ + return m_start; +} + +time_t TimeshiftBuffer::TimeEnd() +{ + return (m_start) ? time(NULL) : 0; } diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/src/TimeshiftBuffer.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/src/TimeshiftBuffer.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/src/TimeshiftBuffer.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/src/TimeshiftBuffer.h 2014-06-10 08:39:15.000000000 +0000 @@ -6,21 +6,24 @@ #include "platform/util/StdString.h" #include "platform/threads/threads.h" -#define STREAM_READ_BUFFER_SIZE 8192 +#define STREAM_READ_BUFFER_SIZE 32768 #define BUFFER_READ_TIMEOUT 10000 #define BUFFER_READ_WAITTIME 50 -class TimeshiftBuffer : public PLATFORM::CThread +class TimeshiftBuffer + : public PLATFORM::CThread { public: - TimeshiftBuffer(CStdString streampath, CStdString bufferpath); + TimeshiftBuffer(CStdString streamPath, CStdString bufferPath); ~TimeshiftBuffer(void); - int ReadData(unsigned char *pBuffer, unsigned int iBufferSize); + int ReadData(unsigned char *buffer, unsigned int size); bool IsValid(); - long long Seek(long long iPosition, int iWhence); + long long Seek(long long position, int whence); long long Position(); long long Length(); void Stop(void); + time_t TimeStart(); + time_t TimeEnd(); private: virtual void *Process(void); @@ -29,7 +32,11 @@ void *m_streamHandle; void *m_filebufferReadHandle; void *m_filebufferWriteHandle; - bool m_shifting; + time_t m_start; +#ifndef TARGET_POSIX + PLATFORM::CMutex m_mutex; + uint64_t m_writePos; +#endif }; #endif diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/src/xmlParser.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/src/xmlParser.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/src/xmlParser.cpp 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/src/xmlParser.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,2941 +0,0 @@ -/** - **************************************************************************** - *

XML.c - implementation file for basic XML parser written in ANSI C++ - * for portability. It works by using recursion and a node tree for breaking - * down the elements of an XML document.

- * - * @version V2.43 - * @author Frank Vanden Berghen - * - * NOTE: - * - * If you add "#define STRICT_PARSING", on the first line of this file - * the parser will see the following XML-stream: - * some textother text - * as an error. Otherwise, this tring will be equivalent to: - * some textother text - * - * NOTE: - * - * If you add "#define APPROXIMATE_PARSING" on the first line of this file - * the parser will see the following XML-stream: - * - * - * - * as equivalent to the following XML-stream: - * - * - * - * This can be useful for badly-formed XML-streams but prevent the use - * of the following XML-stream (problem is: tags at contiguous levels - * have the same names): - * - * - * - * - * - * - * NOTE: - * - * If you add "#define _XMLPARSER_NO_MESSAGEBOX_" on the first line of this file - * the "openFileHelper" function will always display error messages inside the - * console instead of inside a message-box-window. Message-box-windows are - * available on windows 9x/NT/2000/XP/Vista only. - * - * Copyright (c) 2002, Business-Insight - * Business-Insight - * All rights reserved. - * See the file "AFPL-license.txt" about the licensing terms - * - **************************************************************************** - */ -#ifndef _CRT_SECURE_NO_DEPRECATE -#define _CRT_SECURE_NO_DEPRECATE -#endif -#include "xmlParser.h" -#ifdef _XMLWINDOWS -//#ifdef _DEBUG -//#define _CRTDBG_MAP_ALLOC -//#include -//#endif -#define WIN32_LEAN_AND_MEAN -#include // to have IsTextUnicode, MultiByteToWideChar, WideCharToMultiByte to handle unicode files - // to have "MessageBoxA" to display error messages for openFilHelper -#endif - -#include -#include -#include -#include -#include - -XMLCSTR XMLNode::getVersion() { return _CXML("v2.43"); } -void freeXMLString(XMLSTR t){if(t)free(t);} - -static XMLNode::XMLCharEncoding characterEncoding=XMLNode::char_encoding_UTF8; -static char guessWideCharChars=1, dropWhiteSpace=1, removeCommentsInMiddleOfText=1; - -inline int mmin( const int t1, const int t2 ) { return t1 < t2 ? t1 : t2; } - -// You can modify the initialization of the variable "XMLClearTags" below -// to change the clearTags that are currently recognized by the library. -// The number on the second columns is the length of the string inside the -// first column. -// The "") }, - { _CXML("") }, - { _CXML("") }, - { _CXML("
")    ,5,  _CXML("
") }, -// { _CXML("")}, - { NULL ,0, NULL } -}; - -// You can modify the initialization of the variable "XMLEntities" below -// to change the character entities that are currently recognized by the library. -// The number on the second columns is the length of the string inside the -// first column. Additionally, the syntaxes " " and " " are recognized. -typedef struct { XMLCSTR s; int l; XMLCHAR c;} XMLCharacterEntity; -static XMLCharacterEntity XMLEntities[] = -{ - { _CXML("&" ), 5, _CXML('&' )}, - { _CXML("<" ), 4, _CXML('<' )}, - { _CXML(">" ), 4, _CXML('>' )}, - { _CXML("""), 6, _CXML('\"')}, - { _CXML("'"), 6, _CXML('\'')}, - { NULL , 0, '\0' } -}; - -// When rendering the XMLNode to a string (using the "createXMLString" function), -// you can ask for a beautiful formatting. This formatting is using the -// following indentation character: -#define INDENTCHAR _CXML('\t') - -// The following function parses the XML errors into a user friendly string. -// You can edit this to change the output language of the library to something else. -XMLCSTR XMLNode::getError(XMLError xerror) -{ - switch (xerror) - { - case eXMLErrorNone: return _CXML("No error"); - case eXMLErrorMissingEndTag: return _CXML("Warning: Unmatched end tag"); - case eXMLErrorNoXMLTagFound: return _CXML("Warning: No XML tag found"); - case eXMLErrorEmpty: return _CXML("Error: No XML data"); - case eXMLErrorMissingTagName: return _CXML("Error: Missing start tag name"); - case eXMLErrorMissingEndTagName: return _CXML("Error: Missing end tag name"); - case eXMLErrorUnmatchedEndTag: return _CXML("Error: Unmatched end tag"); - case eXMLErrorUnmatchedEndClearTag: return _CXML("Error: Unmatched clear tag end"); - case eXMLErrorUnexpectedToken: return _CXML("Error: Unexpected token found"); - case eXMLErrorNoElements: return _CXML("Error: No elements found"); - case eXMLErrorFileNotFound: return _CXML("Error: File not found"); - case eXMLErrorFirstTagNotFound: return _CXML("Error: First Tag not found"); - case eXMLErrorUnknownCharacterEntity:return _CXML("Error: Unknown character entity"); - case eXMLErrorCharacterCodeAbove255: return _CXML("Error: Character code above 255 is forbidden in MultiByte char mode."); - case eXMLErrorCharConversionError: return _CXML("Error: unable to convert between WideChar and MultiByte chars"); - case eXMLErrorCannotOpenWriteFile: return _CXML("Error: unable to open file for writing"); - case eXMLErrorCannotWriteFile: return _CXML("Error: cannot write into file"); - - case eXMLErrorBase64DataSizeIsNotMultipleOf4: return _CXML("Warning: Base64-string length is not a multiple of 4"); - case eXMLErrorBase64DecodeTruncatedData: return _CXML("Warning: Base64-string is truncated"); - case eXMLErrorBase64DecodeIllegalCharacter: return _CXML("Error: Base64-string contains an illegal character"); - case eXMLErrorBase64DecodeBufferTooSmall: return _CXML("Error: Base64 decode output buffer is too small"); - }; - return _CXML("Unknown"); -} - -///////////////////////////////////////////////////////////////////////// -// Here start the abstraction layer to be OS-independent // -///////////////////////////////////////////////////////////////////////// - -// Here is an abstraction layer to access some common string manipulation functions. -// The abstraction layer is currently working for gcc, Microsoft Visual Studio 6.0, -// Microsoft Visual Studio .NET, CC (sun compiler) and Borland C++. -// If you plan to "port" the library to a new system/compiler, all you have to do is -// to edit the following lines. -#ifdef XML_NO_WIDE_CHAR -char myIsTextWideChar(const void *b, int len) { return FALSE; } -#else - #if defined (UNDER_CE) || !defined(_XMLWINDOWS) - char myIsTextWideChar(const void *b, int len) // inspired by the Wine API: RtlIsTextUnicode - { -#ifdef sun - // for SPARC processors: wchar_t* buffers must always be alligned, otherwise it's a char* buffer. - if ((((unsigned long)b)%sizeof(wchar_t))!=0) return FALSE; -#endif - const wchar_t *s=(const wchar_t*)b; - - // buffer too small: - if (len<(int)sizeof(wchar_t)) return FALSE; - - // odd length test - if (len&1) return FALSE; - - /* only checks the first 256 characters */ - len=mmin(256,len/sizeof(wchar_t)); - - // Check for the special byte order: - if (*((unsigned short*)s) == 0xFFFE) return TRUE; // IS_TEXT_UNICODE_REVERSE_SIGNATURE; - if (*((unsigned short*)s) == 0xFEFF) return TRUE; // IS_TEXT_UNICODE_SIGNATURE - - // checks for ASCII characters in the UNICODE stream - int i,stats=0; - for (i=0; ilen/2) return TRUE; - - // Check for UNICODE NULL chars - for (i=0; i - static inline int xstrnicmp(XMLCSTR c1, XMLCSTR c2, int l) { return wsncasecmp(c1,c2,l);} - static inline int xstrncmp(XMLCSTR c1, XMLCSTR c2, int l) { return wsncmp(c1,c2,l);} - static inline int xstricmp(XMLCSTR c1, XMLCSTR c2) { return wscasecmp(c1,c2); } - #else - static inline int xstrncmp(XMLCSTR c1, XMLCSTR c2, int l) { return wcsncmp(c1,c2,l);} - #ifdef __linux__ - // for gcc/linux - static inline int xstrnicmp(XMLCSTR c1, XMLCSTR c2, int l) { return wcsncasecmp(c1,c2,l);} - static inline int xstricmp(XMLCSTR c1, XMLCSTR c2) { return wcscasecmp(c1,c2); } - #else - #include - // for gcc/non-linux (MacOS X 10.3, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, AIX 4.3.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw) - static inline int xstricmp(XMLCSTR c1, XMLCSTR c2) - { - wchar_t left,right; - do - { - left=towlower(*c1++); right=towlower(*c2++); - } while (left&&(left==right)); - return (int)left-(int)right; - } - static inline int xstrnicmp(XMLCSTR c1, XMLCSTR c2, int l) - { - wchar_t left,right; - while(l--) - { - left=towlower(*c1++); right=towlower(*c2++); - if ((!left)||(left!=right)) return (int)left-(int)right; - } - return 0; - } - #endif - #endif - static inline XMLSTR xstrstr(XMLCSTR c1, XMLCSTR c2) { return (XMLSTR)wcsstr(c1,c2); } - static inline XMLSTR xstrcpy(XMLSTR c1, XMLCSTR c2) { return (XMLSTR)wcscpy(c1,c2); } - static inline FILE *xfopen(XMLCSTR filename,XMLCSTR mode) - { - char *filenameAscii=myWideCharToMultiByte(filename); - FILE *f; - if (mode[0]==_CXML('r')) f=fopen(filenameAscii,"rb"); - else f=fopen(filenameAscii,"wb"); - free(filenameAscii); - return f; - } - #else - static inline FILE *xfopen(XMLCSTR filename,XMLCSTR mode) { return fopen(filename,mode); } - static inline int xstrlen(XMLCSTR c) { return strlen(c); } - static inline int xstrnicmp(XMLCSTR c1, XMLCSTR c2, int l) { return strncasecmp(c1,c2,l);} - static inline int xstrncmp(XMLCSTR c1, XMLCSTR c2, int l) { return strncmp(c1,c2,l);} - static inline int xstricmp(XMLCSTR c1, XMLCSTR c2) { return strcasecmp(c1,c2); } - static inline XMLSTR xstrstr(XMLCSTR c1, XMLCSTR c2) { return (XMLSTR)strstr(c1,c2); } - static inline XMLSTR xstrcpy(XMLSTR c1, XMLCSTR c2) { return (XMLSTR)strcpy(c1,c2); } - #endif - static inline int _strnicmp(const char *c1,const char *c2, int l) { return strncasecmp(c1,c2,l);} -#endif - - -/////////////////////////////////////////////////////////////////////////////// -// the "xmltoc,xmltob,xmltoi,xmltol,xmltof,xmltoa" functions // -/////////////////////////////////////////////////////////////////////////////// -// These 6 functions are not used inside the XMLparser. -// There are only here as "convenience" functions for the user. -// If you don't need them, you can delete them without any trouble. -#ifdef _XMLWIDECHAR - #ifdef _XMLWINDOWS - // for Microsoft Visual Studio 6.0 and Microsoft Visual Studio .NET and Borland C++ Builder 6.0 - char xmltob(XMLCSTR t,char v){ if (t&&(*t)) return (char)_wtoi(t); return v; } - int xmltoi(XMLCSTR t,int v){ if (t&&(*t)) return _wtoi(t); return v; } - long xmltol(XMLCSTR t,long v){ if (t&&(*t)) return _wtol(t); return v; } - double xmltof(XMLCSTR t,double v){ if (t&&(*t)) swscanf(t, L"%lf", &v); /*v=_wtof(t);*/ return v; } - #else - #ifdef sun - // for CC - #include - char xmltob(XMLCSTR t,char v){ if (t) return (char)wstol(t,NULL,10); return v; } - int xmltoi(XMLCSTR t,int v){ if (t) return (int)wstol(t,NULL,10); return v; } - long xmltol(XMLCSTR t,long v){ if (t) return wstol(t,NULL,10); return v; } - #else - // for gcc - char xmltob(XMLCSTR t,char v){ if (t) return (char)wcstol(t,NULL,10); return v; } - int xmltoi(XMLCSTR t,int v){ if (t) return (int)wcstol(t,NULL,10); return v; } - long xmltol(XMLCSTR t,long v){ if (t) return wcstol(t,NULL,10); return v; } - #endif - double xmltof(XMLCSTR t,double v){ if (t&&(*t)) swscanf(t, L"%lf", &v); /*v=_wtof(t);*/ return v; } - #endif -#else - char xmltob(XMLCSTR t,char v){ if (t&&(*t)) return (char)atoi(t); return v; } - int xmltoi(XMLCSTR t,int v){ if (t&&(*t)) return atoi(t); return v; } - long xmltol(XMLCSTR t,long v){ if (t&&(*t)) return atol(t); return v; } - double xmltof(XMLCSTR t,double v){ if (t&&(*t)) return atof(t); return v; } -#endif -XMLCSTR xmltoa(XMLCSTR t, XMLCSTR v){ if (t) return t; return v; } -XMLCHAR xmltoc(XMLCSTR t,const XMLCHAR v){ if (t&&(*t)) return *t; return v; } - -///////////////////////////////////////////////////////////////////////// -// the "openFileHelper" function // -///////////////////////////////////////////////////////////////////////// - -// Since each application has its own way to report and deal with errors, you should modify & rewrite -// the following "openFileHelper" function to get an "error reporting mechanism" tailored to your needs. -XMLNode XMLNode::openFileHelper(XMLCSTR filename, XMLCSTR tag) -{ - // guess the value of the global parameter "characterEncoding" - // (the guess is based on the first 200 bytes of the file). - FILE *f=xfopen(filename,_CXML("rb")); - if (f) - { - char bb[205]; - int l=(int)fread(bb,1,200,f); - setGlobalOptions(guessCharEncoding(bb,l),guessWideCharChars,dropWhiteSpace,removeCommentsInMiddleOfText); - fclose(f); - } - - // parse the file - XMLResults pResults; - XMLNode xnode=XMLNode::parseFile(filename,tag,&pResults); - - // display error message (if any) - if (pResults.error != eXMLErrorNone) - { - // create message - char message[2000],*s1=(char*)"",*s3=(char*)""; XMLCSTR s2=_CXML(""); - if (pResults.error==eXMLErrorFirstTagNotFound) { s1=(char*)"First Tag should be '"; s2=tag; s3=(char*)"'.\n"; } - sprintf(message, -#ifdef _XMLWIDECHAR - "XML Parsing error inside file '%S'.\n%S\nAt line %i, column %i.\n%s%S%s" -#else - "XML Parsing error inside file '%s'.\n%s\nAt line %i, column %i.\n%s%s%s" -#endif - ,filename,XMLNode::getError(pResults.error),pResults.nLine,pResults.nColumn,s1,s2,s3); - - // display message -#if defined(_XMLWINDOWS) && !defined(UNDER_CE) && !defined(_XMLPARSER_NO_MESSAGEBOX_) - MessageBoxA(NULL,message,"XML Parsing error",MB_OK|MB_ICONERROR|MB_TOPMOST); -#else - printf("%s",message); -#endif - // edit from jdembski: remove exit // exit(255); - return NULL; - } - return xnode; -} - -///////////////////////////////////////////////////////////////////////// -// Here start the core implementation of the XMLParser library // -///////////////////////////////////////////////////////////////////////// - -// You should normally not change anything below this point. - -#ifndef _XMLWIDECHAR -// If "characterEncoding=ascii" then we assume that all characters have the same length of 1 byte. -// If "characterEncoding=UTF8" then the characters have different lengths (from 1 byte to 4 bytes). -// If "characterEncoding=ShiftJIS" then the characters have different lengths (from 1 byte to 2 bytes). -// This table is used as lookup-table to know the length of a character (in byte) based on the -// content of the first byte of the character. -// (note: if you modify this, you must always have XML_utf8ByteTable[0]=0 ). -static const char XML_utf8ByteTable[256] = -{ - // 0 1 2 3 4 5 6 7 8 9 a b c d e f - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x00 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x10 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x20 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x30 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x40 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x50 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x60 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x70 End of ASCII range - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x80 0x80 to 0xc1 invalid - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x90 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0xa0 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0xb0 - 1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,// 0xc0 0xc2 to 0xdf 2 byte - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,// 0xd0 - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,// 0xe0 0xe0 to 0xef 3 byte - 4,4,4,4,4,1,1,1,1,1,1,1,1,1,1,1 // 0xf0 0xf0 to 0xf4 4 byte, 0xf5 and higher invalid -}; -static const char XML_legacyByteTable[256] = -{ - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 -}; -static const char XML_sjisByteTable[256] = -{ - // 0 1 2 3 4 5 6 7 8 9 a b c d e f - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x00 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x10 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x20 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x30 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x40 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x50 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x60 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x70 - 1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,// 0x80 0x81 to 0x9F 2 bytes - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,// 0x90 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0xa0 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0xb0 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0xc0 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0xd0 - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,// 0xe0 0xe0 to 0xef 2 bytes - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 // 0xf0 -}; -static const char XML_gb2312ByteTable[256] = -{ -// 0 1 2 3 4 5 6 7 8 9 a b c d e f - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x00 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x10 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x20 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x30 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x40 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x50 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x60 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x70 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x80 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x90 - 1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,// 0xa0 0xa1 to 0xf7 2 bytes - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,// 0xb0 - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,// 0xc0 - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,// 0xd0 - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,// 0xe0 - 2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1 // 0xf0 -}; -static const char XML_gbk_big5_ByteTable[256] = -{ - // 0 1 2 3 4 5 6 7 8 9 a b c d e f - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x00 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x10 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x20 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x30 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x40 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x50 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x60 - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x70 - 1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,// 0x80 0x81 to 0xfe 2 bytes - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,// 0x90 - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,// 0xa0 - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,// 0xb0 - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,// 0xc0 - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,// 0xd0 - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,// 0xe0 - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1 // 0xf0 -}; -static const char *XML_ByteTable=(const char *)XML_utf8ByteTable; // the default is "characterEncoding=XMLNode::encoding_UTF8" -#endif - - -XMLNode XMLNode::emptyXMLNode; -XMLClear XMLNode::emptyXMLClear={ NULL, NULL, NULL}; -XMLAttribute XMLNode::emptyXMLAttribute={ NULL, NULL}; - -// Enumeration used to decipher what type a token is -typedef enum XMLTokenTypeTag -{ - eTokenText = 0, - eTokenQuotedText, - eTokenTagStart, /* "<" */ - eTokenTagEnd, /* "" */ - eTokenEquals, /* "=" */ - eTokenDeclaration, /* "" */ - eTokenClear, - eTokenError -} XMLTokenType; - -// Main structure used for parsing XML -typedef struct XML -{ - XMLCSTR lpXML; - XMLCSTR lpszText; - int nIndex,nIndexMissigEndTag; - enum XMLError error; - XMLCSTR lpEndTag; - int cbEndTag; - XMLCSTR lpNewElement; - int cbNewElement; - int nFirst; -} XML; - -typedef struct -{ - ALLXMLClearTag *pClr; - XMLCSTR pStr; -} NextToken; - -// Enumeration used when parsing attributes -typedef enum Attrib -{ - eAttribName = 0, - eAttribEquals, - eAttribValue -} Attrib; - -// Enumeration used when parsing elements to dictate whether we are currently -// inside a tag -typedef enum XMLStatus -{ - eInsideTag = 0, - eOutsideTag -} XMLStatus; - -XMLError XMLNode::writeToFile(XMLCSTR filename, const char *encoding, char nFormat) const -{ - if (!d) return eXMLErrorNone; - FILE *f=xfopen(filename,_CXML("wb")); - if (!f) return eXMLErrorCannotOpenWriteFile; -#ifdef _XMLWIDECHAR - unsigned char h[2]={ 0xFF, 0xFE }; - if (!fwrite(h,2,1,f)) - { - fclose(f); - return eXMLErrorCannotWriteFile; - } - if ((!isDeclaration())&&((d->lpszName)||(!getChildNode().isDeclaration()))) - { - if (!fwrite(L"\n",sizeof(wchar_t)*40,1,f)) - { - fclose(f); - return eXMLErrorCannotWriteFile; - } - } -#else - if ((!isDeclaration())&&((d->lpszName)||(!getChildNode().isDeclaration()))) - { - if (characterEncoding==char_encoding_UTF8) - { - // header so that windows recognize the file as UTF-8: - unsigned char h[3]={0xEF,0xBB,0xBF}; - if (!fwrite(h,3,1,f)) - { - fclose(f); - return eXMLErrorCannotWriteFile; - } - encoding="utf-8"; - } else if (characterEncoding==char_encoding_ShiftJIS) encoding="SHIFT-JIS"; - - if (!encoding) encoding="ISO-8859-1"; - if (fprintf(f,"\n",encoding)<0) - { - fclose(f); - return eXMLErrorCannotWriteFile; - } - } else - { - if (characterEncoding==char_encoding_UTF8) - { - unsigned char h[3]={0xEF,0xBB,0xBF}; - if (!fwrite(h,3,1,f)) - { - fclose(f); - return eXMLErrorCannotWriteFile; - } - } - } -#endif - int i; - XMLSTR t=createXMLString(nFormat,&i); - if (!fwrite(t,sizeof(XMLCHAR)*i,1,f)) - { - free(t); - fclose(f); - return eXMLErrorCannotWriteFile; - } - if (fclose(f)!=0) - { - free(t); - return eXMLErrorCannotWriteFile; - } - free(t); - return eXMLErrorNone; -} - -// Duplicate a given string. -XMLSTR stringDup(XMLCSTR lpszData, int cbData) -{ - if (lpszData==NULL) return NULL; - - XMLSTR lpszNew; - if (cbData==-1) cbData=(int)xstrlen(lpszData); - lpszNew = (XMLSTR)malloc((cbData+1) * sizeof(XMLCHAR)); - if (lpszNew) - { - memcpy(lpszNew, lpszData, (cbData) * sizeof(XMLCHAR)); - lpszNew[cbData] = (XMLCHAR)NULL; - } - return lpszNew; -} - -XMLSTR ToXMLStringTool::toXMLUnSafe(XMLSTR dest,XMLCSTR source) -{ - XMLSTR dd=dest; - XMLCHAR ch; - XMLCharacterEntity *entity; - while ((ch=*source)) - { - entity=XMLEntities; - do - { - if (ch==entity->c) {xstrcpy(dest,entity->s); dest+=entity->l; source++; goto out_of_loop1; } - entity++; - } while(entity->s); -#ifdef _XMLWIDECHAR - *(dest++)=*(source++); -#else - switch(XML_ByteTable[(unsigned char)ch]) - { - case 4: *(dest++)=*(source++); - case 3: *(dest++)=*(source++); - case 2: *(dest++)=*(source++); - case 1: *(dest++)=*(source++); - } -#endif -out_of_loop1: - ; - } - *dest=0; - return dd; -} - -// private (used while rendering): -int ToXMLStringTool::lengthXMLString(XMLCSTR source) -{ - int r=0; - XMLCharacterEntity *entity; - XMLCHAR ch; - while ((ch=*source)) - { - entity=XMLEntities; - do - { - if (ch==entity->c) { r+=entity->l; source++; goto out_of_loop1; } - entity++; - } while(entity->s); -#ifdef _XMLWIDECHAR - r++; source++; -#else - ch=XML_ByteTable[(unsigned char)ch]; r+=ch; source+=ch; -#endif -out_of_loop1: - ; - } - return r; -} - -ToXMLStringTool::~ToXMLStringTool(){ freeBuffer(); } -void ToXMLStringTool::freeBuffer(){ if (buf) free(buf); buf=NULL; buflen=0; } -XMLSTR ToXMLStringTool::toXML(XMLCSTR source) -{ - if (!source) - { - if (buflen<1) { buflen=1; buf=(XMLSTR)malloc(sizeof(XMLCHAR)); } - *buf=0; - return buf; - } - int l=lengthXMLString(source)+1; - if (l>buflen) { freeBuffer(); buflen=l; buf=(XMLSTR)malloc(l*sizeof(XMLCHAR)); } - return toXMLUnSafe(buf,source); -} - -// private: -XMLSTR fromXMLString(XMLCSTR s, int lo, XML *pXML) -{ - // This function is the opposite of the function "toXMLString". It decodes the escape - // sequences &, ", ', <, > and replace them by the characters - // &,",',<,>. This function is used internally by the XML Parser. All the calls to - // the XML library will always gives you back "decoded" strings. - // - // in: string (s) and length (lo) of string - // out: new allocated string converted from xml - if (!s) return NULL; - - int ll=0,j; - XMLSTR d; - XMLCSTR ss=s; - XMLCharacterEntity *entity; - while ((lo>0)&&(*s)) - { - if (*s==_CXML('&')) - { - if ((lo>2)&&(s[1]==_CXML('#'))) - { - s+=2; lo-=2; - if ((*s==_CXML('X'))||(*s==_CXML('x'))) { s++; lo--; } - while ((*s)&&(*s!=_CXML(';'))&&((lo--)>0)) s++; - if (*s!=_CXML(';')) - { - pXML->error=eXMLErrorUnknownCharacterEntity; - return NULL; - } - s++; lo--; - } else - { - entity=XMLEntities; - do - { - if ((lo>=entity->l)&&(xstrnicmp(s,entity->s,entity->l)==0)) { s+=entity->l; lo-=entity->l; break; } - entity++; - } while(entity->s); - if (!entity->s) - { - pXML->error=eXMLErrorUnknownCharacterEntity; - return NULL; - } - } - } else - { -#ifdef _XMLWIDECHAR - s++; lo--; -#else - j=XML_ByteTable[(unsigned char)*s]; s+=j; lo-=j; ll+=j-1; -#endif - } - ll++; - } - - d=(XMLSTR)malloc((ll+1)*sizeof(XMLCHAR)); - s=d; - while (ll-->0) - { - if (*ss==_CXML('&')) - { - if (ss[1]==_CXML('#')) - { - ss+=2; j=0; - if ((*ss==_CXML('X'))||(*ss==_CXML('x'))) - { - ss++; - while (*ss!=_CXML(';')) - { - if ((*ss>=_CXML('0'))&&(*ss<=_CXML('9'))) j=(j<<4)+*ss-_CXML('0'); - else if ((*ss>=_CXML('A'))&&(*ss<=_CXML('F'))) j=(j<<4)+*ss-_CXML('A')+10; - else if ((*ss>=_CXML('a'))&&(*ss<=_CXML('f'))) j=(j<<4)+*ss-_CXML('a')+10; - else { free((void*)s); pXML->error=eXMLErrorUnknownCharacterEntity;return NULL;} - ss++; - } - } else - { - while (*ss!=_CXML(';')) - { - if ((*ss>=_CXML('0'))&&(*ss<=_CXML('9'))) j=(j*10)+*ss-_CXML('0'); - else { free((void*)s); pXML->error=eXMLErrorUnknownCharacterEntity;return NULL;} - ss++; - } - } -#ifndef _XMLWIDECHAR - if (j>255) { free((void*)s); pXML->error=eXMLErrorCharacterCodeAbove255;return NULL;} -#endif - (*d++)=(XMLCHAR)j; ss++; - } else - { - entity=XMLEntities; - do - { - if (xstrnicmp(ss,entity->s,entity->l)==0) { *(d++)=entity->c; ss+=entity->l; break; } - entity++; - } while(entity->s); - } - } else - { -#ifdef _XMLWIDECHAR - *(d++)=*(ss++); -#else - switch(XML_ByteTable[(unsigned char)*ss]) - { - case 4: *(d++)=*(ss++); ll--; - case 3: *(d++)=*(ss++); ll--; - case 2: *(d++)=*(ss++); ll--; - case 1: *(d++)=*(ss++); - } -#endif - } - } - *d=0; - return (XMLSTR)s; -} - -#define XML_isSPACECHAR(ch) ((ch==_CXML('\n'))||(ch==_CXML(' '))||(ch== _CXML('\t'))||(ch==_CXML('\r'))) - -// private: -char myTagCompare(XMLCSTR cclose, XMLCSTR copen) -// !!!! WARNING strange convention&: -// return 0 if equals -// return 1 if different -{ - if (!cclose) return 1; - int l=(int)xstrlen(cclose); - if (xstrnicmp(cclose, copen, l)!=0) return 1; - const XMLCHAR c=copen[l]; - if (XML_isSPACECHAR(c)|| - (c==_CXML('/' ))|| - (c==_CXML('<' ))|| - (c==_CXML('>' ))|| - (c==_CXML('=' ))) return 0; - return 1; -} - -// Obtain the next character from the string. -static inline XMLCHAR getNextChar(XML *pXML) -{ - XMLCHAR ch = pXML->lpXML[pXML->nIndex]; -#ifdef _XMLWIDECHAR - if (ch!=0) pXML->nIndex++; -#else - pXML->nIndex+=XML_ByteTable[(unsigned char)ch]; -#endif - return ch; -} - -// Find the next token in a string. -// pcbToken contains the number of characters that have been read. -static NextToken GetNextToken(XML *pXML, int *pcbToken, enum XMLTokenTypeTag *pType) -{ - NextToken result; - XMLCHAR ch; - XMLCHAR chTemp; - int indexStart,nFoundMatch,nIsText=FALSE; - result.pClr=NULL; // prevent warning - - // Find next non-white space character - do { indexStart=pXML->nIndex; ch=getNextChar(pXML); } while XML_isSPACECHAR(ch); - - if (ch) - { - // Cache the current string pointer - result.pStr = &pXML->lpXML[indexStart]; - - // check for standard tokens - switch(ch) - { - // Check for quotes - case _CXML('\''): - case _CXML('\"'): - // Type of token - *pType = eTokenQuotedText; - chTemp = ch; - - // Set the size - nFoundMatch = FALSE; - - // Search through the string to find a matching quote - while((ch = getNextChar(pXML))) - { - if (ch==chTemp) { nFoundMatch = TRUE; break; } - if (ch==_CXML('<')) break; - } - - // If we failed to find a matching quote - if (nFoundMatch == FALSE) - { - pXML->nIndex=indexStart+1; - nIsText=TRUE; - break; - } - -// 4.02.2002 -// if (FindNonWhiteSpace(pXML)) pXML->nIndex--; - - break; - - // Equals (used with attribute values) - case _CXML('='): - *pType = eTokenEquals; - break; - - // Close tag - case _CXML('>'): - *pType = eTokenCloseTag; - break; - - // Check for tag start and tag end - case _CXML('<'): - - { - // First check whether the token is in the clear tag list (meaning it - // does not need formatting). - ALLXMLClearTag *ctag=XMLClearTags; - do - { - if (!xstrncmp(ctag->lpszOpen, result.pStr, ctag->openTagLen)) - { - result.pClr=ctag; - pXML->nIndex+=ctag->openTagLen-1; - *pType=eTokenClear; - return result; - } - ctag++; - } while(ctag->lpszOpen); - - // Peek at the next character to see if we have an end tag 'lpXML[pXML->nIndex]; - - // If we have a tag end... - if (chTemp == _CXML('/')) - { - // Set the type and ensure we point at the next character - getNextChar(pXML); - *pType = eTokenTagEnd; - } - - // If we have an XML declaration tag - else if (chTemp == _CXML('?')) - { - - // Set the type and ensure we point at the next character - getNextChar(pXML); - *pType = eTokenDeclaration; - } - - // Otherwise we must have a start tag - else - { - *pType = eTokenTagStart; - } - break; - } - - // Check to see if we have a short hand type end tag ('/>'). - case _CXML('/'): - - // Peek at the next character to see if we have a short end tag '/>' - chTemp = pXML->lpXML[pXML->nIndex]; - - // If we have a short hand end tag... - if (chTemp == _CXML('>')) - { - // Set the type and ensure we point at the next character - getNextChar(pXML); - *pType = eTokenShortHandClose; - break; - } - - // If we haven't found a short hand closing tag then drop into the - // text process - - // Other characters - default: - nIsText = TRUE; - } - - // If this is a TEXT node - if (nIsText) - { - // Indicate we are dealing with text - *pType = eTokenText; - while((ch = getNextChar(pXML))) - { - if XML_isSPACECHAR(ch) - { - indexStart++; break; - - } else if (ch==_CXML('/')) - { - // If we find a slash then this maybe text or a short hand end tag - // Peek at the next character to see it we have short hand end tag - ch=pXML->lpXML[pXML->nIndex]; - // If we found a short hand end tag then we need to exit the loop - if (ch==_CXML('>')) { pXML->nIndex--; break; } - - } else if ((ch==_CXML('<'))||(ch==_CXML('>'))||(ch==_CXML('='))) - { - pXML->nIndex--; break; - } - } - } - *pcbToken = pXML->nIndex-indexStart; - } else - { - // If we failed to obtain a valid character - *pcbToken = 0; - *pType = eTokenError; - result.pStr=NULL; - } - - return result; -} - -XMLCSTR XMLNode::updateName_WOSD(XMLSTR lpszName) -{ - if (!d) { free(lpszName); return NULL; } - if (d->lpszName&&(lpszName!=d->lpszName)) free((void*)d->lpszName); - d->lpszName=lpszName; - return lpszName; -} - -// private: -XMLNode::XMLNode(struct XMLNodeDataTag *p){ d=p; (p->ref_count)++; } -XMLNode::XMLNode(XMLNodeData *pParent, XMLSTR lpszName, char isDeclaration) -{ - d=(XMLNodeData*)malloc(sizeof(XMLNodeData)); - d->ref_count=1; - - d->lpszName=NULL; - d->nChild= 0; - d->nText = 0; - d->nClear = 0; - d->nAttribute = 0; - - d->isDeclaration = isDeclaration; - - d->pParent = pParent; - d->pChild= NULL; - d->pText= NULL; - d->pClear= NULL; - d->pAttribute= NULL; - d->pOrder= NULL; - - updateName_WOSD(lpszName); -} - -XMLNode XMLNode::createXMLTopNode_WOSD(XMLSTR lpszName, char isDeclaration) { return XMLNode(NULL,lpszName,isDeclaration); } -XMLNode XMLNode::createXMLTopNode(XMLCSTR lpszName, char isDeclaration) { return XMLNode(NULL,stringDup(lpszName),isDeclaration); } - -#define MEMORYINCREASE 50 - -static inline void myFree(void *p) { if (p) free(p); } -static inline void *myRealloc(void *p, int newsize, int memInc, int sizeofElem) -{ - if (p==NULL) { if (memInc) return malloc(memInc*sizeofElem); return malloc(sizeofElem); } - if ((memInc==0)||((newsize%memInc)==0)) p=realloc(p,(newsize+memInc)*sizeofElem); -// if (!p) -// { -// printf("XMLParser Error: Not enough memory! Aborting...\n"); exit(220); -// } - return p; -} - -// private: -XMLElementPosition XMLNode::findPosition(XMLNodeData *d, int index, XMLElementType xxtype) -{ - if (index<0) return -1; - int i=0,j=(int)((index<<2)+xxtype),*o=d->pOrder; while (o[i]!=j) i++; return i; -} - -// private: -// update "order" information when deleting a content of a XMLNode -int XMLNode::removeOrderElement(XMLNodeData *d, XMLElementType t, int index) -{ - int n=d->nChild+d->nText+d->nClear, *o=d->pOrder,i=findPosition(d,index,t); - memmove(o+i, o+i+1, (n-i)*sizeof(int)); - for (;ipOrder=(int)realloc(d->pOrder,n*sizeof(int)); - // but we skip reallocation because it's too time consuming. - // Anyway, at the end, it will be free'd completely at once. - return i; -} - -void *XMLNode::addToOrder(int memoryIncrease,int *_pos, int nc, void *p, int size, XMLElementType xtype) -{ - // in: *_pos is the position inside d->pOrder ("-1" means "EndOf") - // out: *_pos is the index inside p - p=myRealloc(p,(nc+1),memoryIncrease,size); - int n=d->nChild+d->nText+d->nClear; - d->pOrder=(int*)myRealloc(d->pOrder,n+1,memoryIncrease*3,sizeof(int)); - int pos=*_pos,*o=d->pOrder; - - if ((pos<0)||(pos>=n)) { *_pos=nc; o[n]=(int)((nc<<2)+xtype); return p; } - - int i=pos; - memmove(o+i+1, o+i, (n-i)*sizeof(int)); - - while ((pos>2; - memmove(((char*)p)+(pos+1)*size,((char*)p)+pos*size,(nc-pos)*size); - - return p; -} - -// Add a child node to the given element. -XMLNode XMLNode::addChild_priv(int memoryIncrease, XMLSTR lpszName, char isDeclaration, int pos) -{ - if (!lpszName) return emptyXMLNode; - d->pChild=(XMLNode*)addToOrder(memoryIncrease,&pos,d->nChild,d->pChild,sizeof(XMLNode),eNodeChild); - d->pChild[pos].d=NULL; - d->pChild[pos]=XMLNode(d,lpszName,isDeclaration); - d->nChild++; - return d->pChild[pos]; -} - -// Add an attribute to an element. -XMLAttribute *XMLNode::addAttribute_priv(int memoryIncrease,XMLSTR lpszName, XMLSTR lpszValuev) -{ - if (!lpszName) return &emptyXMLAttribute; - if (!d) { myFree(lpszName); myFree(lpszValuev); return &emptyXMLAttribute; } - int nc=d->nAttribute; - d->pAttribute=(XMLAttribute*)myRealloc(d->pAttribute,(nc+1),memoryIncrease,sizeof(XMLAttribute)); - XMLAttribute *pAttr=d->pAttribute+nc; - pAttr->lpszName = lpszName; - pAttr->lpszValue = lpszValuev; - d->nAttribute++; - return pAttr; -} - -// Add text to the element. -XMLCSTR XMLNode::addText_priv(int memoryIncrease, XMLSTR lpszValue, int pos) -{ - if (!lpszValue) return NULL; - if (!d) { myFree(lpszValue); return NULL; } - d->pText=(XMLCSTR*)addToOrder(memoryIncrease,&pos,d->nText,d->pText,sizeof(XMLSTR),eNodeText); - d->pText[pos]=lpszValue; - d->nText++; - return lpszValue; -} - -// Add clear (unformatted) text to the element. -XMLClear *XMLNode::addClear_priv(int memoryIncrease, XMLSTR lpszValue, XMLCSTR lpszOpen, XMLCSTR lpszClose, int pos) -{ - if (!lpszValue) return &emptyXMLClear; - if (!d) { myFree(lpszValue); return &emptyXMLClear; } - d->pClear=(XMLClear *)addToOrder(memoryIncrease,&pos,d->nClear,d->pClear,sizeof(XMLClear),eNodeClear); - XMLClear *pNewClear=d->pClear+pos; - pNewClear->lpszValue = lpszValue; - if (!lpszOpen) lpszOpen=XMLClearTags->lpszOpen; - if (!lpszClose) lpszClose=XMLClearTags->lpszClose; - pNewClear->lpszOpenTag = lpszOpen; - pNewClear->lpszCloseTag = lpszClose; - d->nClear++; - return pNewClear; -} - -// private: -// Parse a clear (unformatted) type node. -char XMLNode::parseClearTag(void *px, void *_pClear) -{ - XML *pXML=(XML *)px; - ALLXMLClearTag pClear=*((ALLXMLClearTag*)_pClear); - int cbTemp=0; - XMLCSTR lpszTemp=NULL; - XMLCSTR lpXML=&pXML->lpXML[pXML->nIndex]; - static XMLCSTR docTypeEnd=_CXML("]>"); - - // Find the closing tag - // Seems the ')) { lpszTemp=pCh; break; } -#ifdef _XMLWIDECHAR - pCh++; -#else - pCh+=XML_ByteTable[(unsigned char)(*pCh)]; -#endif - } - } else lpszTemp=xstrstr(lpXML, pClear.lpszClose); - - if (lpszTemp) - { - // Cache the size and increment the index - cbTemp = (int)(lpszTemp - lpXML); - - pXML->nIndex += cbTemp+(int)xstrlen(pClear.lpszClose); - - // Add the clear node to the current element - addClear_priv(MEMORYINCREASE,cbTemp?stringDup(lpXML,cbTemp):NULL, pClear.lpszOpen, pClear.lpszClose,-1); - return 0; - } - - // If we failed to find the end tag - pXML->error = eXMLErrorUnmatchedEndClearTag; - return 1; -} - -void XMLNode::exactMemory(XMLNodeData *d) -{ - if (d->pOrder) d->pOrder=(int*)realloc(d->pOrder,(d->nChild+d->nText+d->nClear)*sizeof(int)); - if (d->pChild) d->pChild=(XMLNode*)realloc(d->pChild,d->nChild*sizeof(XMLNode)); - if (d->pAttribute) d->pAttribute=(XMLAttribute*)realloc(d->pAttribute,d->nAttribute*sizeof(XMLAttribute)); - if (d->pText) d->pText=(XMLCSTR*)realloc(d->pText,d->nText*sizeof(XMLSTR)); - if (d->pClear) d->pClear=(XMLClear *)realloc(d->pClear,d->nClear*sizeof(XMLClear)); -} - -char XMLNode::maybeAddTxT(void *pa, XMLCSTR tokenPStr) -{ - XML *pXML=(XML *)pa; - XMLCSTR lpszText=pXML->lpszText; - if (!lpszText) return 0; - if (dropWhiteSpace) while (XML_isSPACECHAR(*lpszText)&&(lpszText!=tokenPStr)) lpszText++; - int cbText = (int)(tokenPStr - lpszText); - if (!cbText) { pXML->lpszText=NULL; return 0; } - if (dropWhiteSpace) { cbText--; while ((cbText)&&XML_isSPACECHAR(lpszText[cbText])) cbText--; cbText++; } - if (!cbText) { pXML->lpszText=NULL; return 0; } - XMLSTR lpt=fromXMLString(lpszText,cbText,pXML); - if (!lpt) return 1; - pXML->lpszText=NULL; - if (removeCommentsInMiddleOfText && d->nText && d->nClear) - { - // if the previous insertion was a comment () AND - // if the previous previous insertion was a text then, delete the comment and append the text - int n=d->nChild+d->nText+d->nClear-1,*o=d->pOrder; - if (((o[n]&3)==eNodeClear)&&((o[n-1]&3)==eNodeText)) - { - int i=o[n]>>2; - if (d->pClear[i].lpszOpenTag==XMLClearTags[2].lpszOpen) - { - deleteClear(i); - i=o[n-1]>>2; - n=xstrlen(d->pText[i]); - int n2=xstrlen(lpt)+1; - d->pText[i]=(XMLSTR)realloc((void*)d->pText[i],(n+n2)*sizeof(XMLCHAR)); - if (!d->pText[i]) return 1; - memcpy((void*)(d->pText[i]+n),lpt,n2*sizeof(XMLCHAR)); - free(lpt); - return 0; - } - } - } - addText_priv(MEMORYINCREASE,lpt,-1); - return 0; -} -// private: -// Recursively parse an XML element. -int XMLNode::ParseXMLElement(void *pa) -{ - XML *pXML=(XML *)pa; - int cbToken; - enum XMLTokenTypeTag xtype; - NextToken token; - XMLCSTR lpszTemp=NULL; - int cbTemp=0; - char nDeclaration; - XMLNode pNew; - enum XMLStatus status; // inside or outside a tag - enum Attrib attrib = eAttribName; - - assert(pXML); - - // If this is the first call to the function - if (pXML->nFirst) - { - // Assume we are outside of a tag definition - pXML->nFirst = FALSE; - status = eOutsideTag; - } else - { - // If this is not the first call then we should only be called when inside a tag. - status = eInsideTag; - } - - // Iterate through the tokens in the document - for(;;) - { - // Obtain the next token - token = GetNextToken(pXML, &cbToken, &xtype); - - if (xtype != eTokenError) - { - // Check the current status - switch(status) - { - - // If we are outside of a tag definition - case eOutsideTag: - - // Check what type of token we obtained - switch(xtype) - { - // If we have found text or quoted text - case eTokenText: - case eTokenCloseTag: /* '>' */ - case eTokenShortHandClose: /* '/>' */ - case eTokenQuotedText: - case eTokenEquals: - break; - - // If we found a start tag '<' and declarations 'error = eXMLErrorMissingTagName; - return FALSE; - } - - // If we found a new element which is the same as this - // element then we need to pass this back to the caller.. - -#ifdef APPROXIMATE_PARSING - if (d->lpszName && - myTagCompare(d->lpszName, token.pStr) == 0) - { - // Indicate to the caller that it needs to create a - // new element. - pXML->lpNewElement = token.pStr; - pXML->cbNewElement = cbToken; - return TRUE; - } else -#endif - { - // If the name of the new element differs from the name of - // the current element we need to add the new element to - // the current one and recurse - pNew = addChild_priv(MEMORYINCREASE,stringDup(token.pStr,cbToken), nDeclaration,-1); - - while (!pNew.isEmpty()) - { - // Callself to process the new node. If we return - // FALSE this means we dont have any more - // processing to do... - - if (!pNew.ParseXMLElement(pXML)) return FALSE; - else - { - // If the call to recurse this function - // evented in a end tag specified in XML then - // we need to unwind the calls to this - // function until we find the appropriate node - // (the element name and end tag name must - // match) - if (pXML->cbEndTag) - { - // If we are back at the root node then we - // have an unmatched end tag - if (!d->lpszName) - { - pXML->error=eXMLErrorUnmatchedEndTag; - return FALSE; - } - - // If the end tag matches the name of this - // element then we only need to unwind - // once more... - - if (myTagCompare(d->lpszName, pXML->lpEndTag)==0) - { - pXML->cbEndTag = 0; - } - - return TRUE; - } else - if (pXML->cbNewElement) - { - // If the call indicated a new element is to - // be created on THIS element. - - // If the name of this element matches the - // name of the element we need to create - // then we need to return to the caller - // and let it process the element. - - if (myTagCompare(d->lpszName, pXML->lpNewElement)==0) - { - return TRUE; - } - - // Add the new element and recurse - pNew = addChild_priv(MEMORYINCREASE,stringDup(pXML->lpNewElement,pXML->cbNewElement),0,-1); - pXML->cbNewElement = 0; - } - else - { - // If we didn't have a new element to create - pNew = emptyXMLNode; - - } - } - } - } - break; - - // If we found an end tag - case eTokenTagEnd: - - // If we have node text then add this to the element - if (maybeAddTxT(pXML,token.pStr)) return FALSE; - - // Find the name of the end tag - token = GetNextToken(pXML, &cbTemp, &xtype); - - // The end tag should be text - if (xtype != eTokenText) - { - pXML->error = eXMLErrorMissingEndTagName; - return FALSE; - } - lpszTemp = token.pStr; - - // After the end tag we should find a closing tag - token = GetNextToken(pXML, &cbToken, &xtype); - if (xtype != eTokenCloseTag) - { - pXML->error = eXMLErrorMissingEndTagName; - return FALSE; - } - pXML->lpszText=pXML->lpXML+pXML->nIndex; - - // We need to return to the previous caller. If the name - // of the tag cannot be found we need to keep returning to - // caller until we find a match - if (myTagCompare(d->lpszName, lpszTemp) != 0) -#ifdef STRICT_PARSING - { - pXML->error=eXMLErrorUnmatchedEndTag; - pXML->nIndexMissigEndTag=pXML->nIndex; - return FALSE; - } -#else - { - pXML->error=eXMLErrorMissingEndTag; - pXML->nIndexMissigEndTag=pXML->nIndex; - pXML->lpEndTag = lpszTemp; - pXML->cbEndTag = cbTemp; - } -#endif - - // Return to the caller - exactMemory(d); - return TRUE; - - // If we found a clear (unformatted) token - case eTokenClear: - // If we have node text then add this to the element - if (maybeAddTxT(pXML,token.pStr)) return FALSE; - if (parseClearTag(pXML, token.pClr)) return FALSE; - pXML->lpszText=pXML->lpXML+pXML->nIndex; - break; - - default: - break; - } - break; - - // If we are inside a tag definition we need to search for attributes - case eInsideTag: - - // Check what part of the attribute (name, equals, value) we - // are looking for. - switch(attrib) - { - // If we are looking for a new attribute - case eAttribName: - - // Check what the current token type is - switch(xtype) - { - // If the current type is text... - // Eg. 'attribute' - case eTokenText: - // Cache the token then indicate that we are next to - // look for the equals - lpszTemp = token.pStr; - cbTemp = cbToken; - attrib = eAttribEquals; - break; - - // If we found a closing tag... - // Eg. '>' - case eTokenCloseTag: - // We are now outside the tag - status = eOutsideTag; - pXML->lpszText=pXML->lpXML+pXML->nIndex; - break; - - // If we found a short hand '/>' closing tag then we can - // return to the caller - case eTokenShortHandClose: - exactMemory(d); - pXML->lpszText=pXML->lpXML+pXML->nIndex; - return TRUE; - - // Errors... - case eTokenQuotedText: /* '"SomeText"' */ - case eTokenTagStart: /* '<' */ - case eTokenTagEnd: /* 'error = eXMLErrorUnexpectedToken; - return FALSE; - default: break; - } - break; - - // If we are looking for an equals - case eAttribEquals: - // Check what the current token type is - switch(xtype) - { - // If the current type is text... - // Eg. 'Attribute AnotherAttribute' - case eTokenText: - // Add the unvalued attribute to the list - addAttribute_priv(MEMORYINCREASE,stringDup(lpszTemp,cbTemp), NULL); - // Cache the token then indicate. We are next to - // look for the equals attribute - lpszTemp = token.pStr; - cbTemp = cbToken; - break; - - // If we found a closing tag 'Attribute >' or a short hand - // closing tag 'Attribute />' - case eTokenShortHandClose: - case eTokenCloseTag: - // If we are a declaration element 'lpszText=pXML->lpXML+pXML->nIndex; - - if (d->isDeclaration && - (lpszTemp[cbTemp-1]) == _CXML('?')) - { - cbTemp--; - if (d->pParent && d->pParent->pParent) xtype = eTokenShortHandClose; - } - - if (cbTemp) - { - // Add the unvalued attribute to the list - addAttribute_priv(MEMORYINCREASE,stringDup(lpszTemp,cbTemp), NULL); - } - - // If this is the end of the tag then return to the caller - if (xtype == eTokenShortHandClose) - { - exactMemory(d); - return TRUE; - } - - // We are now outside the tag - status = eOutsideTag; - break; - - // If we found the equals token... - // Eg. 'Attribute =' - case eTokenEquals: - // Indicate that we next need to search for the value - // for the attribute - attrib = eAttribValue; - break; - - // Errors... - case eTokenQuotedText: /* 'Attribute "InvalidAttr"'*/ - case eTokenTagStart: /* 'Attribute <' */ - case eTokenTagEnd: /* 'Attribute error = eXMLErrorUnexpectedToken; - return FALSE; - default: break; - } - break; - - // If we are looking for an attribute value - case eAttribValue: - // Check what the current token type is - switch(xtype) - { - // If the current type is text or quoted text... - // Eg. 'Attribute = "Value"' or 'Attribute = Value' or - // 'Attribute = 'Value''. - case eTokenText: - case eTokenQuotedText: - // If we are a declaration element 'isDeclaration && - (token.pStr[cbToken-1]) == _CXML('?')) - { - cbToken--; - } - - if (cbTemp) - { - // Add the valued attribute to the list - if (xtype==eTokenQuotedText) { token.pStr++; cbToken-=2; } - XMLSTR attrVal=(XMLSTR)token.pStr; - if (attrVal) - { - attrVal=fromXMLString(attrVal,cbToken,pXML); - if (!attrVal) return FALSE; - } - addAttribute_priv(MEMORYINCREASE,stringDup(lpszTemp,cbTemp),attrVal); - } - - // Indicate we are searching for a new attribute - attrib = eAttribName; - break; - - // Errors... - case eTokenTagStart: /* 'Attr = <' */ - case eTokenTagEnd: /* 'Attr = ' */ - case eTokenShortHandClose: /* "Attr = />" */ - case eTokenEquals: /* 'Attr = =' */ - case eTokenDeclaration: /* 'Attr = error = eXMLErrorUnexpectedToken; - return FALSE; - break; - default: break; - } - } - } - } - // If we failed to obtain the next token - else - { - if ((!d->isDeclaration)&&(d->pParent)) - { -#ifdef STRICT_PARSING - pXML->error=eXMLErrorUnmatchedEndTag; -#else - pXML->error=eXMLErrorMissingEndTag; -#endif - pXML->nIndexMissigEndTag=pXML->nIndex; - } - maybeAddTxT(pXML,pXML->lpXML+pXML->nIndex); - return FALSE; - } - } -} - -// Count the number of lines and columns in an XML string. -static void CountLinesAndColumns(XMLCSTR lpXML, int nUpto, XMLResults *pResults) -{ - XMLCHAR ch; - assert(lpXML); - assert(pResults); - - struct XML xml={ lpXML,lpXML, 0, 0, eXMLErrorNone, NULL, 0, NULL, 0, TRUE }; - - pResults->nLine = 1; - pResults->nColumn = 1; - while (xml.nIndexnColumn++; - else - { - pResults->nLine++; - pResults->nColumn=1; - } - } -} - -// Parse XML and return the root element. -XMLNode XMLNode::parseString(XMLCSTR lpszXML, XMLCSTR tag, XMLResults *pResults) -{ - if (!lpszXML) - { - if (pResults) - { - pResults->error=eXMLErrorNoElements; - pResults->nLine=0; - pResults->nColumn=0; - } - return emptyXMLNode; - } - - XMLNode xnode(NULL,NULL,FALSE); - struct XML xml={ lpszXML, lpszXML, 0, 0, eXMLErrorNone, NULL, 0, NULL, 0, TRUE }; - - // Create header element - xnode.ParseXMLElement(&xml); - enum XMLError error = xml.error; - if (!xnode.nChildNode()) error=eXMLErrorNoXMLTagFound; - if ((xnode.nChildNode()==1)&&(xnode.nElement()==1)) xnode=xnode.getChildNode(); // skip the empty node - - // If no error occurred - if ((error==eXMLErrorNone)||(error==eXMLErrorMissingEndTag)||(error==eXMLErrorNoXMLTagFound)) - { - XMLCSTR name=xnode.getName(); - if (tag&&(*tag)&&((!name)||(xstricmp(name,tag)))) - { - xnode=xnode.getChildNode(tag); - if (xnode.isEmpty()) - { - if (pResults) - { - pResults->error=eXMLErrorFirstTagNotFound; - pResults->nLine=0; - pResults->nColumn=0; - } - return emptyXMLNode; - } - } - } else - { - // Cleanup: this will destroy all the nodes - xnode = emptyXMLNode; - } - - - // If we have been given somewhere to place results - if (pResults) - { - pResults->error = error; - - // If we have an error - if (error!=eXMLErrorNone) - { - if (error==eXMLErrorMissingEndTag) xml.nIndex=xml.nIndexMissigEndTag; - // Find which line and column it starts on. - CountLinesAndColumns(xml.lpXML, xml.nIndex, pResults); - } - } - return xnode; -} - -XMLNode XMLNode::parseFile(XMLCSTR filename, XMLCSTR tag, XMLResults *pResults) -{ - if (pResults) { pResults->nLine=0; pResults->nColumn=0; } - FILE *f=xfopen(filename,_CXML("rb")); - if (f==NULL) { if (pResults) pResults->error=eXMLErrorFileNotFound; return emptyXMLNode; } - fseek(f,0,SEEK_END); - int l=(int)ftell(f),headerSz=0; - if (!l) { if (pResults) pResults->error=eXMLErrorEmpty; fclose(f); return emptyXMLNode; } - fseek(f,0,SEEK_SET); - unsigned char *buf=(unsigned char*)malloc(l+4); - l=(int)fread(buf,1,l,f); - fclose(f); - buf[l]=0;buf[l+1]=0;buf[l+2]=0;buf[l+3]=0; -#ifdef _XMLWIDECHAR - if (guessWideCharChars) - { - if (!myIsTextWideChar(buf,l)) - { - XMLNode::XMLCharEncoding ce=XMLNode::char_encoding_legacy; - if ((buf[0]==0xef)&&(buf[1]==0xbb)&&(buf[2]==0xbf)) { headerSz=3; ce=XMLNode::char_encoding_UTF8; } - XMLSTR b2=myMultiByteToWideChar((const char*)(buf+headerSz),ce); - if (!b2) - { - // todo: unable to convert - } - free(buf); buf=(unsigned char*)b2; headerSz=0; - } else - { - if ((buf[0]==0xef)&&(buf[1]==0xff)) headerSz=2; - if ((buf[0]==0xff)&&(buf[1]==0xfe)) headerSz=2; - } - } else - { - if ((buf[0]==0xef)&&(buf[1]==0xff)) headerSz=2; - if ((buf[0]==0xff)&&(buf[1]==0xfe)) headerSz=2; - if ((buf[0]==0xef)&&(buf[1]==0xbb)&&(buf[2]==0xbf)) headerSz=3; - } -#else - if (guessWideCharChars) - { - if (myIsTextWideChar(buf,l)) - { - if ((buf[0]==0xef)&&(buf[1]==0xff)) headerSz=2; - if ((buf[0]==0xff)&&(buf[1]==0xfe)) headerSz=2; - char *b2=myWideCharToMultiByte((const wchar_t*)(buf+headerSz)); - free(buf); buf=(unsigned char*)b2; headerSz=0; - } else - { - if ((buf[0]==0xef)&&(buf[1]==0xbb)&&(buf[2]==0xbf)) headerSz=3; - } - } else - { - if ((buf[0]==0xef)&&(buf[1]==0xff)) headerSz=2; - if ((buf[0]==0xff)&&(buf[1]==0xfe)) headerSz=2; - if ((buf[0]==0xef)&&(buf[1]==0xbb)&&(buf[2]==0xbf)) headerSz=3; - } -#endif - - if (!buf) { if (pResults) pResults->error=eXMLErrorCharConversionError; return emptyXMLNode; } - XMLNode x=parseString((XMLSTR)(buf+headerSz),tag,pResults); - free(buf); - return x; -} - -static inline void charmemset(XMLSTR dest,XMLCHAR c,int l) { while (l--) *(dest++)=c; } -// private: -// Creates an user friendly XML string from a given element with -// appropriate white space and carriage returns. -// -// This recurses through all subnodes then adds contents of the nodes to the -// string. -int XMLNode::CreateXMLStringR(XMLNodeData *pEntry, XMLSTR lpszMarker, int nFormat) -{ - int nResult = 0; - int cb=nFormat<0?0:nFormat; - int cbElement; - int nChildFormat=-1; - int nElementI=pEntry->nChild+pEntry->nText+pEntry->nClear; - int i,j; - if ((nFormat>=0)&&(nElementI==1)&&(pEntry->nText==1)&&(!pEntry->isDeclaration)) nFormat=-2; - - assert(pEntry); - -#define LENSTR(lpsz) (lpsz ? xstrlen(lpsz) : 0) - - // If the element has no name then assume this is the head node. - cbElement = (int)LENSTR(pEntry->lpszName); - - if (cbElement) - { - // "isDeclaration) lpszMarker[nResult++]=_CXML('?'); - xstrcpy(&lpszMarker[nResult], pEntry->lpszName); - nResult+=cbElement; - lpszMarker[nResult++]=_CXML(' '); - - } else - { - nResult+=cbElement+2+cb; - if (pEntry->isDeclaration) nResult++; - } - - // Enumerate attributes and add them to the string - XMLAttribute *pAttr=pEntry->pAttribute; - for (i=0; inAttribute; i++) - { - // "Attrib - cb = (int)LENSTR(pAttr->lpszName); - if (cb) - { - if (lpszMarker) xstrcpy(&lpszMarker[nResult], pAttr->lpszName); - nResult += cb; - // "Attrib=Value " - if (pAttr->lpszValue) - { - cb=(int)ToXMLStringTool::lengthXMLString(pAttr->lpszValue); - if (lpszMarker) - { - lpszMarker[nResult]=_CXML('='); - lpszMarker[nResult+1]=_CXML('"'); - if (cb) ToXMLStringTool::toXMLUnSafe(&lpszMarker[nResult+2],pAttr->lpszValue); - lpszMarker[nResult+cb+2]=_CXML('"'); - } - nResult+=cb+3; - } - if (lpszMarker) lpszMarker[nResult] = _CXML(' '); - nResult++; - } - pAttr++; - } - - if (pEntry->isDeclaration) - { - if (lpszMarker) - { - lpszMarker[nResult-1]=_CXML('?'); - lpszMarker[nResult]=_CXML('>'); - } - nResult++; - if (nFormat!=-1) - { - if (lpszMarker) lpszMarker[nResult]=_CXML('\n'); - nResult++; - } - } else - // If there are child nodes we need to terminate the start tag - if (nElementI) - { - if (lpszMarker) lpszMarker[nResult-1]=_CXML('>'); - if (nFormat>=0) - { - if (lpszMarker) lpszMarker[nResult]=_CXML('\n'); - nResult++; - } - } else nResult--; - } - - // Calculate the child format for when we recurse. This is used to - // determine the number of spaces used for prefixes. - if (nFormat!=-1) - { - if (cbElement&&(!pEntry->isDeclaration)) nChildFormat=nFormat+1; - else nChildFormat=nFormat; - } - - // Enumerate through remaining children - for (i=0; ipOrder[i]; - switch((XMLElementType)(j&3)) - { - // Text nodes - case eNodeText: - { - // "Text" - XMLCSTR pChild=pEntry->pText[j>>2]; - cb = (int)ToXMLStringTool::lengthXMLString(pChild); - if (cb) - { - if (nFormat>=0) - { - if (lpszMarker) - { - charmemset(&lpszMarker[nResult],INDENTCHAR,nFormat+1); - ToXMLStringTool::toXMLUnSafe(&lpszMarker[nResult+nFormat+1],pChild); - lpszMarker[nResult+nFormat+1+cb]=_CXML('\n'); - } - nResult+=cb+nFormat+2; - } else - { - if (lpszMarker) ToXMLStringTool::toXMLUnSafe(&lpszMarker[nResult], pChild); - nResult += cb; - } - } - break; - } - - // Clear type nodes - case eNodeClear: - { - XMLClear *pChild=pEntry->pClear+(j>>2); - // "OpenTag" - cb = (int)LENSTR(pChild->lpszOpenTag); - if (cb) - { - if (nFormat!=-1) - { - if (lpszMarker) - { - charmemset(&lpszMarker[nResult], INDENTCHAR, nFormat+1); - xstrcpy(&lpszMarker[nResult+nFormat+1], pChild->lpszOpenTag); - } - nResult+=cb+nFormat+1; - } - else - { - if (lpszMarker)xstrcpy(&lpszMarker[nResult], pChild->lpszOpenTag); - nResult += cb; - } - } - - // "OpenTag Value" - cb = (int)LENSTR(pChild->lpszValue); - if (cb) - { - if (lpszMarker) xstrcpy(&lpszMarker[nResult], pChild->lpszValue); - nResult += cb; - } - - // "OpenTag Value CloseTag" - cb = (int)LENSTR(pChild->lpszCloseTag); - if (cb) - { - if (lpszMarker) xstrcpy(&lpszMarker[nResult], pChild->lpszCloseTag); - nResult += cb; - } - - if (nFormat!=-1) - { - if (lpszMarker) lpszMarker[nResult] = _CXML('\n'); - nResult++; - } - break; - } - - // Element nodes - case eNodeChild: - { - // Recursively add child nodes - nResult += CreateXMLStringR(pEntry->pChild[j>>2].d, lpszMarker ? lpszMarker + nResult : 0, nChildFormat); - break; - } - default: break; - } - } - - if ((cbElement)&&(!pEntry->isDeclaration)) - { - // If we have child entries we need to use long XML notation for - // closing the element - "blah blah blah" - if (nElementI) - { - // "\0" - if (lpszMarker) - { - if (nFormat >=0) - { - charmemset(&lpszMarker[nResult], INDENTCHAR,nFormat); - nResult+=nFormat; - } - - lpszMarker[nResult]=_CXML('<'); lpszMarker[nResult+1]=_CXML('/'); - nResult += 2; - xstrcpy(&lpszMarker[nResult], pEntry->lpszName); - nResult += cbElement; - - lpszMarker[nResult]=_CXML('>'); - if (nFormat == -1) nResult++; - else - { - lpszMarker[nResult+1]=_CXML('\n'); - nResult+=2; - } - } else - { - if (nFormat>=0) nResult+=cbElement+4+nFormat; - else if (nFormat==-1) nResult+=cbElement+3; - else nResult+=cbElement+4; - } - } else - { - // If there are no children we can use shorthand XML notation - - // "" - // "/>\0" - if (lpszMarker) - { - lpszMarker[nResult]=_CXML('/'); lpszMarker[nResult+1]=_CXML('>'); - if (nFormat != -1) lpszMarker[nResult+2]=_CXML('\n'); - } - nResult += nFormat == -1 ? 2 : 3; - } - } - - return nResult; -} - -#undef LENSTR - -// Create an XML string -// @param int nFormat - 0 if no formatting is required -// otherwise nonzero for formatted text -// with carriage returns and indentation. -// @param int *pnSize - [out] pointer to the size of the -// returned string not including the -// NULL terminator. -// @return XMLSTR - Allocated XML string, you must free -// this with free(). -XMLSTR XMLNode::createXMLString(int nFormat, int *pnSize) const -{ - if (!d) { if (pnSize) *pnSize=0; return NULL; } - - XMLSTR lpszResult = NULL; - int cbStr; - - // Recursively Calculate the size of the XML string - if (!dropWhiteSpace) nFormat=0; - nFormat = nFormat ? 0 : -1; - cbStr = CreateXMLStringR(d, 0, nFormat); - // Alllocate memory for the XML string + the NULL terminator and - // create the recursively XML string. - lpszResult=(XMLSTR)malloc((cbStr+1)*sizeof(XMLCHAR)); - CreateXMLStringR(d, lpszResult, nFormat); - lpszResult[cbStr]=_CXML('\0'); - if (pnSize) *pnSize = cbStr; - return lpszResult; -} - -int XMLNode::detachFromParent(XMLNodeData *d) -{ - XMLNode *pa=d->pParent->pChild; - int i=0; - while (((void*)(pa[i].d))!=((void*)d)) i++; - d->pParent->nChild--; - if (d->pParent->nChild) memmove(pa+i,pa+i+1,(d->pParent->nChild-i)*sizeof(XMLNode)); - else { free(pa); d->pParent->pChild=NULL; } - return removeOrderElement(d->pParent,eNodeChild,i); -} - -XMLNode::~XMLNode() -{ - if (!d) return; - d->ref_count--; - emptyTheNode(0); -} -void XMLNode::deleteNodeContent() -{ - if (!d) return; - if (d->pParent) { detachFromParent(d); d->pParent=NULL; d->ref_count--; } - emptyTheNode(1); -} -void XMLNode::emptyTheNode(char force) -{ - XMLNodeData *dd=d; // warning: must stay this way! - if ((dd->ref_count==0)||force) - { - if (d->pParent) detachFromParent(d); - int i; - XMLNode *pc; - for(i=0; inChild; i++) - { - pc=dd->pChild+i; - pc->d->pParent=NULL; - pc->d->ref_count--; - pc->emptyTheNode(force); - } - myFree(dd->pChild); - for(i=0; inText; i++) free((void*)dd->pText[i]); - myFree(dd->pText); - for(i=0; inClear; i++) free((void*)dd->pClear[i].lpszValue); - myFree(dd->pClear); - for(i=0; inAttribute; i++) - { - free((void*)dd->pAttribute[i].lpszName); - if (dd->pAttribute[i].lpszValue) free((void*)dd->pAttribute[i].lpszValue); - } - myFree(dd->pAttribute); - myFree(dd->pOrder); - myFree((void*)dd->lpszName); - dd->nChild=0; dd->nText=0; dd->nClear=0; dd->nAttribute=0; - dd->pChild=NULL; dd->pText=NULL; dd->pClear=NULL; dd->pAttribute=NULL; - dd->pOrder=NULL; dd->lpszName=NULL; dd->pParent=NULL; - } - if (dd->ref_count==0) - { - free(dd); - d=NULL; - } -} - -XMLNode& XMLNode::operator=( const XMLNode& A ) -{ - // shallow copy - if (this != &A) - { - if (d) { d->ref_count--; emptyTheNode(0); } - d=A.d; - if (d) (d->ref_count) ++ ; - } - return *this; -} - -XMLNode::XMLNode(const XMLNode &A) -{ - // shallow copy - d=A.d; - if (d) (d->ref_count)++ ; -} - -XMLNode XMLNode::deepCopy() const -{ - if (!d) return XMLNode::emptyXMLNode; - XMLNode x(NULL,stringDup(d->lpszName),d->isDeclaration); - XMLNodeData *p=x.d; - int n=d->nAttribute; - if (n) - { - p->nAttribute=n; p->pAttribute=(XMLAttribute*)malloc(n*sizeof(XMLAttribute)); - while (n--) - { - p->pAttribute[n].lpszName=stringDup(d->pAttribute[n].lpszName); - p->pAttribute[n].lpszValue=stringDup(d->pAttribute[n].lpszValue); - } - } - if (d->pOrder) - { - n=(d->nChild+d->nText+d->nClear)*sizeof(int); p->pOrder=(int*)malloc(n); memcpy(p->pOrder,d->pOrder,n); - } - n=d->nText; - if (n) - { - p->nText=n; p->pText=(XMLCSTR*)malloc(n*sizeof(XMLCSTR)); - while(n--) p->pText[n]=stringDup(d->pText[n]); - } - n=d->nClear; - if (n) - { - p->nClear=n; p->pClear=(XMLClear*)malloc(n*sizeof(XMLClear)); - while (n--) - { - p->pClear[n].lpszCloseTag=d->pClear[n].lpszCloseTag; - p->pClear[n].lpszOpenTag=d->pClear[n].lpszOpenTag; - p->pClear[n].lpszValue=stringDup(d->pClear[n].lpszValue); - } - } - n=d->nChild; - if (n) - { - p->nChild=n; p->pChild=(XMLNode*)malloc(n*sizeof(XMLNode)); - while (n--) - { - p->pChild[n].d=NULL; - p->pChild[n]=d->pChild[n].deepCopy(); - p->pChild[n].d->pParent=p; - } - } - return x; -} - -XMLNode XMLNode::addChild(XMLNode childNode, int pos) -{ - XMLNodeData *dc=childNode.d; - if ((!dc)||(!d)) return childNode; - if (!dc->lpszName) - { - // this is a root node: todo: correct fix - int j=pos; - while (dc->nChild) - { - addChild(dc->pChild[0],j); - if (pos>=0) j++; - } - return childNode; - } - if (dc->pParent) { if ((detachFromParent(dc)<=pos)&&(dc->pParent==d)) pos--; } else dc->ref_count++; - dc->pParent=d; -// int nc=d->nChild; -// d->pChild=(XMLNode*)myRealloc(d->pChild,(nc+1),memoryIncrease,sizeof(XMLNode)); - d->pChild=(XMLNode*)addToOrder(0,&pos,d->nChild,d->pChild,sizeof(XMLNode),eNodeChild); - d->pChild[pos].d=dc; - d->nChild++; - return childNode; -} - -void XMLNode::deleteAttribute(int i) -{ - if ((!d)||(i<0)||(i>=d->nAttribute)) return; - d->nAttribute--; - XMLAttribute *p=d->pAttribute+i; - free((void*)p->lpszName); - if (p->lpszValue) free((void*)p->lpszValue); - if (d->nAttribute) memmove(p,p+1,(d->nAttribute-i)*sizeof(XMLAttribute)); else { free(p); d->pAttribute=NULL; } -} - -void XMLNode::deleteAttribute(XMLAttribute *a){ if (a) deleteAttribute(a->lpszName); } -void XMLNode::deleteAttribute(XMLCSTR lpszName) -{ - int j=0; - getAttribute(lpszName,&j); - if (j) deleteAttribute(j-1); -} - -XMLAttribute *XMLNode::updateAttribute_WOSD(XMLSTR lpszNewValue, XMLSTR lpszNewName,int i) -{ - if (!d) { if (lpszNewValue) free(lpszNewValue); if (lpszNewName) free(lpszNewName); return NULL; } - if (i>=d->nAttribute) - { - if (lpszNewName) return addAttribute_WOSD(lpszNewName,lpszNewValue); - return NULL; - } - XMLAttribute *p=d->pAttribute+i; - if (p->lpszValue&&p->lpszValue!=lpszNewValue) free((void*)p->lpszValue); - p->lpszValue=lpszNewValue; - if (lpszNewName&&p->lpszName!=lpszNewName) { free((void*)p->lpszName); p->lpszName=lpszNewName; }; - return p; -} - -XMLAttribute *XMLNode::updateAttribute_WOSD(XMLAttribute *newAttribute, XMLAttribute *oldAttribute) -{ - if (oldAttribute) return updateAttribute_WOSD((XMLSTR)newAttribute->lpszValue,(XMLSTR)newAttribute->lpszName,oldAttribute->lpszName); - return addAttribute_WOSD((XMLSTR)newAttribute->lpszName,(XMLSTR)newAttribute->lpszValue); -} - -XMLAttribute *XMLNode::updateAttribute_WOSD(XMLSTR lpszNewValue, XMLSTR lpszNewName,XMLCSTR lpszOldName) -{ - int j=0; - getAttribute(lpszOldName,&j); - if (j) return updateAttribute_WOSD(lpszNewValue,lpszNewName,j-1); - else - { - if (lpszNewName) return addAttribute_WOSD(lpszNewName,lpszNewValue); - else return addAttribute_WOSD(stringDup(lpszOldName),lpszNewValue); - } -} - -int XMLNode::indexText(XMLCSTR lpszValue) const -{ - if (!d) return -1; - int i,l=d->nText; - if (!lpszValue) { if (l) return 0; return -1; } - XMLCSTR *p=d->pText; - for (i=0; i=d->nText)) return; - d->nText--; - XMLCSTR *p=d->pText+i; - free((void*)*p); - if (d->nText) memmove(p,p+1,(d->nText-i)*sizeof(XMLCSTR)); else { free(p); d->pText=NULL; } - removeOrderElement(d,eNodeText,i); -} - -void XMLNode::deleteText(XMLCSTR lpszValue) { deleteText(indexText(lpszValue)); } - -XMLCSTR XMLNode::updateText_WOSD(XMLSTR lpszNewValue, int i) -{ - if (!d) { if (lpszNewValue) free(lpszNewValue); return NULL; } - if (i>=d->nText) return addText_WOSD(lpszNewValue); - XMLCSTR *p=d->pText+i; - if (*p!=lpszNewValue) { free((void*)*p); *p=lpszNewValue; } - return lpszNewValue; -} - -XMLCSTR XMLNode::updateText_WOSD(XMLSTR lpszNewValue, XMLCSTR lpszOldValue) -{ - if (!d) { if (lpszNewValue) free(lpszNewValue); return NULL; } - int i=indexText(lpszOldValue); - if (i>=0) return updateText_WOSD(lpszNewValue,i); - return addText_WOSD(lpszNewValue); -} - -void XMLNode::deleteClear(int i) -{ - if ((!d)||(i<0)||(i>=d->nClear)) return; - d->nClear--; - XMLClear *p=d->pClear+i; - free((void*)p->lpszValue); - if (d->nClear) memmove(p,p+1,(d->nClear-i)*sizeof(XMLClear)); else { free(p); d->pClear=NULL; } - removeOrderElement(d,eNodeClear,i); -} - -int XMLNode::indexClear(XMLCSTR lpszValue) const -{ - if (!d) return -1; - int i,l=d->nClear; - if (!lpszValue) { if (l) return 0; return -1; } - XMLClear *p=d->pClear; - for (i=0; ilpszValue); } - -XMLClear *XMLNode::updateClear_WOSD(XMLSTR lpszNewContent, int i) -{ - if (!d) { if (lpszNewContent) free(lpszNewContent); return NULL; } - if (i>=d->nClear) return addClear_WOSD(lpszNewContent); - XMLClear *p=d->pClear+i; - if (lpszNewContent!=p->lpszValue) { free((void*)p->lpszValue); p->lpszValue=lpszNewContent; } - return p; -} - -XMLClear *XMLNode::updateClear_WOSD(XMLSTR lpszNewContent, XMLCSTR lpszOldValue) -{ - if (!d) { if (lpszNewContent) free(lpszNewContent); return NULL; } - int i=indexClear(lpszOldValue); - if (i>=0) return updateClear_WOSD(lpszNewContent,i); - return addClear_WOSD(lpszNewContent); -} - -XMLClear *XMLNode::updateClear_WOSD(XMLClear *newP,XMLClear *oldP) -{ - if (oldP) return updateClear_WOSD((XMLSTR)newP->lpszValue,(XMLSTR)oldP->lpszValue); - return NULL; -} - -int XMLNode::nChildNode(XMLCSTR name) const -{ - if (!d) return 0; - int i,j=0,n=d->nChild; - XMLNode *pc=d->pChild; - for (i=0; id->lpszName, name)==0) j++; - pc++; - } - return j; -} - -XMLNode XMLNode::getChildNode(XMLCSTR name, int *j) const -{ - if (!d) return emptyXMLNode; - int i=0,n=d->nChild; - if (j) i=*j; - XMLNode *pc=d->pChild+i; - for (; id->lpszName, name)) - { - if (j) *j=i+1; - return *pc; - } - pc++; - } - return emptyXMLNode; -} - -XMLNode XMLNode::getChildNode(XMLCSTR name, int j) const -{ - if (!d) return emptyXMLNode; - if (j>=0) - { - int i=0; - while (j-->0) getChildNode(name,&i); - return getChildNode(name,&i); - } - int i=d->nChild; - while (i--) if (!xstricmp(name,d->pChild[i].d->lpszName)) break; - if (i<0) return emptyXMLNode; - return getChildNode(i); -} - -XMLNode XMLNode::getChildNodeByPath(XMLCSTR _path, char createMissing, XMLCHAR sep) -{ - XMLSTR path=stringDup(_path); - XMLNode x=getChildNodeByPathNonConst(path,createMissing,sep); - if (path) free(path); - return x; -} - -XMLNode XMLNode::getChildNodeByPathNonConst(XMLSTR path, char createIfMissing, XMLCHAR sep) -{ - if ((!path)||(!(*path))) return *this; - XMLNode xn,xbase=*this; - XMLCHAR *tend1,sepString[2]; sepString[0]=sep; sepString[1]=0; - tend1=xstrstr(path,sepString); - while(tend1) - { - *tend1=0; - xn=xbase.getChildNode(path); - if (xn.isEmpty()) - { - if (createIfMissing) xn=xbase.addChild(path); - else { *tend1=sep; return XMLNode::emptyXMLNode; } - } - *tend1=sep; - xbase=xn; - path=tend1+1; - tend1=xstrstr(path,sepString); - } - xn=xbase.getChildNode(path); - if (xn.isEmpty()&&createIfMissing) xn=xbase.addChild(path); - return xn; -} - -XMLElementPosition XMLNode::positionOfText (int i) const { if (i>=d->nText ) i=d->nText-1; return findPosition(d,i,eNodeText ); } -XMLElementPosition XMLNode::positionOfClear (int i) const { if (i>=d->nClear) i=d->nClear-1; return findPosition(d,i,eNodeClear); } -XMLElementPosition XMLNode::positionOfChildNode(int i) const { if (i>=d->nChild) i=d->nChild-1; return findPosition(d,i,eNodeChild); } -XMLElementPosition XMLNode::positionOfText (XMLCSTR lpszValue) const { return positionOfText (indexText (lpszValue)); } -XMLElementPosition XMLNode::positionOfClear(XMLCSTR lpszValue) const { return positionOfClear(indexClear(lpszValue)); } -XMLElementPosition XMLNode::positionOfClear(XMLClear *a) const { if (a) return positionOfClear(a->lpszValue); return positionOfClear(); } -XMLElementPosition XMLNode::positionOfChildNode(XMLNode x) const -{ - if ((!d)||(!x.d)) return -1; - XMLNodeData *dd=x.d; - XMLNode *pc=d->pChild; - int i=d->nChild; - while (i--) if (pc[i].d==dd) return findPosition(d,i,eNodeChild); - return -1; -} -XMLElementPosition XMLNode::positionOfChildNode(XMLCSTR name, int count) const -{ - if (!name) return positionOfChildNode(count); - int j=0; - do { getChildNode(name,&j); if (j<0) return -1; } while (count--); - return findPosition(d,j-1,eNodeChild); -} - -XMLNode XMLNode::getChildNodeWithAttribute(XMLCSTR name,XMLCSTR attributeName,XMLCSTR attributeValue, int *k) const -{ - int i=0,j; - if (k) i=*k; - XMLNode x; - XMLCSTR t; - do - { - x=getChildNode(name,&i); - if (!x.isEmpty()) - { - if (attributeValue) - { - j=0; - do - { - t=x.getAttribute(attributeName,&j); - if (t&&(xstricmp(attributeValue,t)==0)) { if (k) *k=i; return x; } - } while (t); - } else - { - if (x.isAttributeSet(attributeName)) { if (k) *k=i; return x; } - } - } - } while (!x.isEmpty()); - return emptyXMLNode; -} - -// Find an attribute on an node. -XMLCSTR XMLNode::getAttribute(XMLCSTR lpszAttrib, int *j) const -{ - if (!d) return NULL; - int i=0,n=d->nAttribute; - if (j) i=*j; - XMLAttribute *pAttr=d->pAttribute+i; - for (; ilpszName, lpszAttrib)==0) - { - if (j) *j=i+1; - return pAttr->lpszValue; - } - pAttr++; - } - return NULL; -} - -char XMLNode::isAttributeSet(XMLCSTR lpszAttrib) const -{ - if (!d) return FALSE; - int i,n=d->nAttribute; - XMLAttribute *pAttr=d->pAttribute; - for (i=0; ilpszName, lpszAttrib)==0) - { - return TRUE; - } - pAttr++; - } - return FALSE; -} - -XMLCSTR XMLNode::getAttribute(XMLCSTR name, int j) const -{ - if (!d) return NULL; - int i=0; - while (j-->0) getAttribute(name,&i); - return getAttribute(name,&i); -} - -XMLNodeContents XMLNode::enumContents(int i) const -{ - XMLNodeContents c; - if (!d) { c.etype=eNodeNULL; return c; } - if (inAttribute) - { - c.etype=eNodeAttribute; - c.attrib=d->pAttribute[i]; - return c; - } - i-=d->nAttribute; - c.etype=(XMLElementType)(d->pOrder[i]&3); - i=(d->pOrder[i])>>2; - switch (c.etype) - { - case eNodeChild: c.child = d->pChild[i]; break; - case eNodeText: c.text = d->pText[i]; break; - case eNodeClear: c.clear = d->pClear[i]; break; - default: break; - } - return c; -} - -XMLCSTR XMLNode::getName() const { if (!d) return NULL; return d->lpszName; } -int XMLNode::nText() const { if (!d) return 0; return d->nText; } -int XMLNode::nChildNode() const { if (!d) return 0; return d->nChild; } -int XMLNode::nAttribute() const { if (!d) return 0; return d->nAttribute; } -int XMLNode::nClear() const { if (!d) return 0; return d->nClear; } -int XMLNode::nElement() const { if (!d) return 0; return d->nAttribute+d->nChild+d->nText+d->nClear; } -XMLClear XMLNode::getClear (int i) const { if ((!d)||(i>=d->nClear )) return emptyXMLClear; return d->pClear[i]; } -XMLAttribute XMLNode::getAttribute (int i) const { if ((!d)||(i>=d->nAttribute)) return emptyXMLAttribute; return d->pAttribute[i]; } -XMLCSTR XMLNode::getAttributeName (int i) const { if ((!d)||(i>=d->nAttribute)) return NULL; return d->pAttribute[i].lpszName; } -XMLCSTR XMLNode::getAttributeValue(int i) const { if ((!d)||(i>=d->nAttribute)) return NULL; return d->pAttribute[i].lpszValue; } -XMLCSTR XMLNode::getText (int i) const { if ((!d)||(i>=d->nText )) return NULL; return d->pText[i]; } -XMLNode XMLNode::getChildNode (int i) const { if ((!d)||(i>=d->nChild )) return emptyXMLNode; return d->pChild[i]; } -XMLNode XMLNode::getParentNode ( ) const { if ((!d)||(!d->pParent )) return emptyXMLNode; return XMLNode(d->pParent); } -char XMLNode::isDeclaration ( ) const { if (!d) return 0; return d->isDeclaration; } -char XMLNode::isEmpty ( ) const { return (d==NULL); } -XMLNode XMLNode::emptyNode ( ) { return XMLNode::emptyXMLNode; } - -XMLNode XMLNode::addChild(XMLCSTR lpszName, char isDeclaration, XMLElementPosition pos) - { return addChild_priv(0,stringDup(lpszName),isDeclaration,pos); } -XMLNode XMLNode::addChild_WOSD(XMLSTR lpszName, char isDeclaration, XMLElementPosition pos) - { return addChild_priv(0,lpszName,isDeclaration,pos); } -XMLAttribute *XMLNode::addAttribute(XMLCSTR lpszName, XMLCSTR lpszValue) - { return addAttribute_priv(0,stringDup(lpszName),stringDup(lpszValue)); } -XMLAttribute *XMLNode::addAttribute_WOSD(XMLSTR lpszName, XMLSTR lpszValuev) - { return addAttribute_priv(0,lpszName,lpszValuev); } -XMLCSTR XMLNode::addText(XMLCSTR lpszValue, XMLElementPosition pos) - { return addText_priv(0,stringDup(lpszValue),pos); } -XMLCSTR XMLNode::addText_WOSD(XMLSTR lpszValue, XMLElementPosition pos) - { return addText_priv(0,lpszValue,pos); } -XMLClear *XMLNode::addClear(XMLCSTR lpszValue, XMLCSTR lpszOpen, XMLCSTR lpszClose, XMLElementPosition pos) - { return addClear_priv(0,stringDup(lpszValue),lpszOpen,lpszClose,pos); } -XMLClear *XMLNode::addClear_WOSD(XMLSTR lpszValue, XMLCSTR lpszOpen, XMLCSTR lpszClose, XMLElementPosition pos) - { return addClear_priv(0,lpszValue,lpszOpen,lpszClose,pos); } -XMLCSTR XMLNode::updateName(XMLCSTR lpszName) - { return updateName_WOSD(stringDup(lpszName)); } -XMLAttribute *XMLNode::updateAttribute(XMLAttribute *newAttribute, XMLAttribute *oldAttribute) - { return updateAttribute_WOSD(stringDup(newAttribute->lpszValue),stringDup(newAttribute->lpszName),oldAttribute->lpszName); } -XMLAttribute *XMLNode::updateAttribute(XMLCSTR lpszNewValue, XMLCSTR lpszNewName,int i) - { return updateAttribute_WOSD(stringDup(lpszNewValue),stringDup(lpszNewName),i); } -XMLAttribute *XMLNode::updateAttribute(XMLCSTR lpszNewValue, XMLCSTR lpszNewName,XMLCSTR lpszOldName) - { return updateAttribute_WOSD(stringDup(lpszNewValue),stringDup(lpszNewName),lpszOldName); } -XMLCSTR XMLNode::updateText(XMLCSTR lpszNewValue, int i) - { return updateText_WOSD(stringDup(lpszNewValue),i); } -XMLCSTR XMLNode::updateText(XMLCSTR lpszNewValue, XMLCSTR lpszOldValue) - { return updateText_WOSD(stringDup(lpszNewValue),lpszOldValue); } -XMLClear *XMLNode::updateClear(XMLCSTR lpszNewContent, int i) - { return updateClear_WOSD(stringDup(lpszNewContent),i); } -XMLClear *XMLNode::updateClear(XMLCSTR lpszNewValue, XMLCSTR lpszOldValue) - { return updateClear_WOSD(stringDup(lpszNewValue),lpszOldValue); } -XMLClear *XMLNode::updateClear(XMLClear *newP,XMLClear *oldP) - { return updateClear_WOSD(stringDup(newP->lpszValue),oldP->lpszValue); } - -char XMLNode::setGlobalOptions(XMLCharEncoding _characterEncoding, char _guessWideCharChars, - char _dropWhiteSpace, char _removeCommentsInMiddleOfText) -{ - guessWideCharChars=_guessWideCharChars; dropWhiteSpace=_dropWhiteSpace; removeCommentsInMiddleOfText=_removeCommentsInMiddleOfText; -#ifdef _XMLWIDECHAR - if (_characterEncoding) characterEncoding=_characterEncoding; -#else - switch(_characterEncoding) - { - case char_encoding_UTF8: characterEncoding=_characterEncoding; XML_ByteTable=XML_utf8ByteTable; break; - case char_encoding_legacy: characterEncoding=_characterEncoding; XML_ByteTable=XML_legacyByteTable; break; - case char_encoding_ShiftJIS: characterEncoding=_characterEncoding; XML_ByteTable=XML_sjisByteTable; break; - case char_encoding_GB2312: characterEncoding=_characterEncoding; XML_ByteTable=XML_gb2312ByteTable; break; - case char_encoding_Big5: - case char_encoding_GBK: characterEncoding=_characterEncoding; XML_ByteTable=XML_gbk_big5_ByteTable; break; - default: return 1; - } -#endif - return 0; -} - -XMLNode::XMLCharEncoding XMLNode::guessCharEncoding(void *buf,int l, char useXMLEncodingAttribute) -{ -#ifdef _XMLWIDECHAR - return (XMLCharEncoding)0; -#else - if (l<25) return (XMLCharEncoding)0; - if (guessWideCharChars&&(myIsTextWideChar(buf,l))) return (XMLCharEncoding)0; - unsigned char *b=(unsigned char*)buf; - if ((b[0]==0xef)&&(b[1]==0xbb)&&(b[2]==0xbf)) return char_encoding_UTF8; - - // Match utf-8 model ? - XMLCharEncoding bestGuess=char_encoding_UTF8; - int i=0; - while (i>2 ]; - *(curr++)=base64EncodeTable[(inbuf[0]<<4)&0x3F]; - *(curr++)=base64Fillchar; - *(curr++)=base64Fillchar; - } else if (eLen==2) - { - j=(inbuf[0]<<8)|inbuf[1]; - *(curr++)=base64EncodeTable[ j>>10 ]; - *(curr++)=base64EncodeTable[(j>> 4)&0x3f]; - *(curr++)=base64EncodeTable[(j<< 2)&0x3f]; - *(curr++)=base64Fillchar; - } - *(curr++)=0; - return (XMLSTR)buf; -} - -unsigned int XMLParserBase64Tool::decodeSize(XMLCSTR data,XMLError *xe) -{ - if (!data) return 0; - if (xe) *xe=eXMLErrorNone; - int size=0; - unsigned char c; - //skip any extra characters (e.g. newlines or spaces) - while (*data) - { -#ifdef _XMLWIDECHAR - if (*data>255) { if (xe) *xe=eXMLErrorBase64DecodeIllegalCharacter; return 0; } -#endif - c=base64DecodeTable[(unsigned char)(*data)]; - if (c<97) size++; - else if (c==98) { if (xe) *xe=eXMLErrorBase64DecodeIllegalCharacter; return 0; } - data++; - } - if (xe&&(size%4!=0)) *xe=eXMLErrorBase64DataSizeIsNotMultipleOf4; - if (size==0) return 0; - do { data--; size--; } while(*data==base64Fillchar); size++; - return (unsigned int)((size*3)/4); -} - -unsigned char XMLParserBase64Tool::decode(XMLCSTR data, unsigned char *buf, int len, XMLError *xe) -{ - if (!data) return 0; - if (xe) *xe=eXMLErrorNone; - int i=0,p=0; - unsigned char d,c; - for(;;) - { - -#ifdef _XMLWIDECHAR -#define BASE64DECODE_READ_NEXT_CHAR(c) \ - do { \ - if (data[i]>255){ c=98; break; } \ - c=base64DecodeTable[(unsigned char)data[i++]]; \ - }while (c==97); \ - if(c==98){ if(xe)*xe=eXMLErrorBase64DecodeIllegalCharacter; return 0; } -#else -#define BASE64DECODE_READ_NEXT_CHAR(c) \ - do { c=base64DecodeTable[(unsigned char)data[i++]]; }while (c==97); \ - if(c==98){ if(xe)*xe=eXMLErrorBase64DecodeIllegalCharacter; return 0; } -#endif - - BASE64DECODE_READ_NEXT_CHAR(c) - if (c==99) { return 2; } - if (c==96) - { - if (p==(int)len) return 2; - if (xe) *xe=eXMLErrorBase64DecodeTruncatedData; - return 1; - } - - BASE64DECODE_READ_NEXT_CHAR(d) - if ((d==99)||(d==96)) { if (xe) *xe=eXMLErrorBase64DecodeTruncatedData; return 1; } - if (p==(int)len) { if (xe) *xe=eXMLErrorBase64DecodeBufferTooSmall; return 0; } - buf[p++]=(unsigned char)((c<<2)|((d>>4)&0x3)); - - BASE64DECODE_READ_NEXT_CHAR(c) - if (c==99) { if (xe) *xe=eXMLErrorBase64DecodeTruncatedData; return 1; } - if (p==(int)len) - { - if (c==96) return 2; - if (xe) *xe=eXMLErrorBase64DecodeBufferTooSmall; - return 0; - } - if (c==96) { if (xe) *xe=eXMLErrorBase64DecodeTruncatedData; return 1; } - buf[p++]=(unsigned char)(((d<<4)&0xf0)|((c>>2)&0xf)); - - BASE64DECODE_READ_NEXT_CHAR(d) - if (d==99 ) { if (xe) *xe=eXMLErrorBase64DecodeTruncatedData; return 1; } - if (p==(int)len) - { - if (d==96) return 2; - if (xe) *xe=eXMLErrorBase64DecodeBufferTooSmall; - return 0; - } - if (d==96) { if (xe) *xe=eXMLErrorBase64DecodeTruncatedData; return 1; } - buf[p++]=(unsigned char)(((c<<6)&0xc0)|d); - } -} -#undef BASE64DECODE_READ_NEXT_CHAR - -void XMLParserBase64Tool::alloc(int newsize) -{ - if ((!buf)&&(newsize)) { buf=malloc(newsize); buflen=newsize; return; } - if (newsize>buflen) { buf=realloc(buf,newsize); buflen=newsize; } -} - -unsigned char *XMLParserBase64Tool::decode(XMLCSTR data, int *outlen, XMLError *xe) -{ - if (xe) *xe=eXMLErrorNone; - if (!data) { *outlen=0; return (unsigned char*)""; } - unsigned int len=decodeSize(data,xe); - if (outlen) *outlen=len; - if (!len) return NULL; - alloc(len+1); - if(!decode(data,(unsigned char*)buf,len,xe)){ return NULL; } - return (unsigned char*)buf; -} - diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/src/xmlParser.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/src/xmlParser.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.dvbviewer/src/xmlParser.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.dvbviewer/src/xmlParser.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,733 +0,0 @@ -/****************************************************************************/ -/*! \mainpage XMLParser library - * \section intro_sec Introduction - * - * This is a basic XML parser written in ANSI C++ for portability. - * It works by using recursion and a node tree for breaking - * down the elements of an XML document. - * - * @version V2.43 - * @author Frank Vanden Berghen - * - * Copyright (c) 2002, Business-Insight - * Business-Insight - * All rights reserved. - * See the file AFPL-license.txt about the licensing terms - * - * \section tutorial First Tutorial - * You can follow a simple Tutorial to know the basics... - * - * \section usage General usage: How to include the XMLParser library inside your project. - * - * The library is composed of two files: xmlParser.cpp and - * xmlParser.h. These are the ONLY 2 files that you need when - * using the library inside your own projects. - * - * All the functions of the library are documented inside the comments of the file - * xmlParser.h. These comments can be transformed in - * full-fledged HTML documentation using the DOXYGEN software: simply type: "doxygen doxy.cfg" - * - * By default, the XMLParser library uses (char*) for string representation.To use the (wchar_t*) - * version of the library, you need to define the "_UNICODE" preprocessor definition variable - * (this is usually done inside your project definition file) (This is done automatically for you - * when using Visual Studio). - * - * \section example Advanced Tutorial and Many Examples of usage. - * - * Some very small introductory examples are described inside the Tutorial file - * xmlParser.html - * - * Some additional small examples are also inside the file xmlTest.cpp - * (for the "char*" version of the library) and inside the file - * xmlTestUnicode.cpp (for the "wchar_t*" - * version of the library). If you have a question, please review these additionnal examples - * before sending an e-mail to the author. - * - * To build the examples: - * - linux/unix: type "make" - * - solaris: type "make -f makefile.solaris" - * - windows: Visual Studio: double-click on xmlParser.dsw - * (under Visual Studio .NET, the .dsp and .dsw files will be automatically converted to .vcproj and .sln files) - * - * In order to build the examples you need some additional files: - * - linux/unix: makefile - * - solaris: makefile.solaris - * - windows: Visual Studio: *.dsp, xmlParser.dsw and also xmlParser.lib and xmlParser.dll - * - * \section debugging Debugging with the XMLParser library - * - * \subsection debugwin Debugging under WINDOWS - * - * Inside Visual C++, the "debug versions" of the memory allocation functions are - * very slow: Do not forget to compile in "release mode" to get maximum speed. - * When I had to debug a software that was using the XMLParser Library, it was usually - * a nightmare because the library was sooOOOoooo slow in debug mode (because of the - * slow memory allocations in Debug mode). To solve this - * problem, during all the debugging session, I am now using a very fast DLL version of the - * XMLParser Library (the DLL is compiled in release mode). Using the DLL version of - * the XMLParser Library allows me to have lightening XML parsing speed even in debug! - * Other than that, the DLL version is useless: In the release version of my tool, - * I always use the normal, ".cpp"-based, XMLParser Library (I simply include the - * xmlParser.cpp and - * xmlParser.h files into the project). - * - * The file XMLNodeAutoexp.txt contains some - * "tweaks" that improve substancially the display of the content of the XMLNode objects - * inside the Visual Studio Debugger. Believe me, once you have seen inside the debugger - * the "smooth" display of the XMLNode objects, you cannot live without it anymore! - * - * \subsection debuglinux Debugging under LINUX/UNIX - * - * The speed of the debug version of the XMLParser library is tolerable so no extra - * work.has been done. - * - ****************************************************************************/ - -#ifndef __INCLUDE_XML_NODE__ -#define __INCLUDE_XML_NODE__ - -#include - -#ifdef _UNICODE -// If you comment the next "define" line then the library will never "switch to" _UNICODE (wchar_t*) mode (16/32 bits per characters). -// This is useful when you get error messages like: -// 'XMLNode::openFileHelper' : cannot convert parameter 2 from 'const char [5]' to 'const wchar_t *' -// The _XMLWIDECHAR preprocessor variable force the XMLParser library into either utf16/32-mode (the proprocessor variable -// must be defined) or utf8-mode(the pre-processor variable must be undefined). -#define _XMLWIDECHAR -#endif - -#if defined(WIN32) || defined(UNDER_CE) || defined(_WIN32) || defined(WIN64) || defined(__BORLANDC__) -// comment the next line if you are under windows and the compiler is not Microsoft Visual Studio (6.0 or .NET) or Borland -#define _XMLWINDOWS -#endif - -#ifdef XMLDLLENTRY -#undef XMLDLLENTRY -#endif -#ifdef _USE_XMLPARSER_DLL -#ifdef _DLL_EXPORTS_ -#define XMLDLLENTRY __declspec(dllexport) -#else -#define XMLDLLENTRY __declspec(dllimport) -#endif -#else -#define XMLDLLENTRY -#endif - -// uncomment the next line if you want no support for wchar_t* (no need for the or libraries anymore to compile) -//#define XML_NO_WIDE_CHAR - -#ifdef XML_NO_WIDE_CHAR -#undef _XMLWINDOWS -#undef _XMLWIDECHAR -#endif - -#ifdef _XMLWINDOWS -#include -#else -#define XMLDLLENTRY -#ifndef XML_NO_WIDE_CHAR -#include // to have 'wcsrtombs' for ANSI version - // to have 'mbsrtowcs' for WIDECHAR version -#endif -#endif - -// Some common types for char set portable code -#ifdef _XMLWIDECHAR - #define _CXML(c) L ## c - #define XMLCSTR const wchar_t * - #define XMLSTR wchar_t * - #define XMLCHAR wchar_t -#else - #define _CXML(c) c - #define XMLCSTR const char * - #define XMLSTR char * - #define XMLCHAR char -#endif -#ifndef FALSE - #define FALSE 0 -#endif /* FALSE */ -#ifndef TRUE - #define TRUE 1 -#endif /* TRUE */ - - -/// Enumeration for XML parse errors. -typedef enum XMLError -{ - eXMLErrorNone = 0, - eXMLErrorMissingEndTag, - eXMLErrorNoXMLTagFound, - eXMLErrorEmpty, - eXMLErrorMissingTagName, - eXMLErrorMissingEndTagName, - eXMLErrorUnmatchedEndTag, - eXMLErrorUnmatchedEndClearTag, - eXMLErrorUnexpectedToken, - eXMLErrorNoElements, - eXMLErrorFileNotFound, - eXMLErrorFirstTagNotFound, - eXMLErrorUnknownCharacterEntity, - eXMLErrorCharacterCodeAbove255, - eXMLErrorCharConversionError, - eXMLErrorCannotOpenWriteFile, - eXMLErrorCannotWriteFile, - - eXMLErrorBase64DataSizeIsNotMultipleOf4, - eXMLErrorBase64DecodeIllegalCharacter, - eXMLErrorBase64DecodeTruncatedData, - eXMLErrorBase64DecodeBufferTooSmall -} XMLError; - - -/// Enumeration used to manage type of data. Use in conjunction with structure XMLNodeContents -typedef enum XMLElementType -{ - eNodeChild=0, - eNodeAttribute=1, - eNodeText=2, - eNodeClear=3, - eNodeNULL=4 -} XMLElementType; - -/// Structure used to obtain error details if the parse fails. -typedef struct XMLResults -{ - enum XMLError error; - int nLine,nColumn; -} XMLResults; - -/// Structure for XML clear (unformatted) node (usually comments) -typedef struct XMLClear { - XMLCSTR lpszValue; XMLCSTR lpszOpenTag; XMLCSTR lpszCloseTag; -} XMLClear; - -/// Structure for XML attribute. -typedef struct XMLAttribute { - XMLCSTR lpszName; XMLCSTR lpszValue; -} XMLAttribute; - -/// XMLElementPosition are not interchangeable with simple indexes -typedef int XMLElementPosition; - -struct XMLNodeContents; - -/** @defgroup XMLParserGeneral The XML parser */ - -/// Main Class representing a XML node -/** - * All operations are performed using this class. - * \note The constructors of the XMLNode class are protected, so use instead one of these four methods to get your first instance of XMLNode: - *
    - *
  • XMLNode::parseString
  • - *
  • XMLNode::parseFile
  • - *
  • XMLNode::openFileHelper
  • - *
  • XMLNode::createXMLTopNode (or XMLNode::createXMLTopNode_WOSD)
  • - *
*/ -typedef struct XMLDLLENTRY XMLNode -{ - private: - - struct XMLNodeDataTag; - - /// Constructors are protected, so use instead one of: XMLNode::parseString, XMLNode::parseFile, XMLNode::openFileHelper, XMLNode::createXMLTopNode - XMLNode(struct XMLNodeDataTag *pParent, XMLSTR lpszName, char isDeclaration); - /// Constructors are protected, so use instead one of: XMLNode::parseString, XMLNode::parseFile, XMLNode::openFileHelper, XMLNode::createXMLTopNode - XMLNode(struct XMLNodeDataTag *p); - - public: - static XMLCSTR getVersion();///< Return the XMLParser library version number - - /** @defgroup conversions Parsing XML files/strings to an XMLNode structure and Rendering XMLNode's to files/string. - * @ingroup XMLParserGeneral - * @{ */ - - /// Parse an XML string and return the root of a XMLNode tree representing the string. - static XMLNode parseString (XMLCSTR lpXMLString, XMLCSTR tag=NULL, XMLResults *pResults=NULL); - /**< The "parseString" function parse an XML string and return the root of a XMLNode tree. The "opposite" of this function is - * the function "createXMLString" that re-creates an XML string from an XMLNode tree. If the XML document is corrupted, the - * "parseString" method will initialize the "pResults" variable with some information that can be used to trace the error. - * If you still want to parse the file, you can use the APPROXIMATE_PARSING option as explained inside the note at the - * beginning of the "xmlParser.cpp" file. - * - * @param lpXMLString the XML string to parse - * @param tag the name of the first tag inside the XML file. If the tag parameter is omitted, this function returns a node that represents the head of the xml document including the declaration term (). - * @param pResults a pointer to a XMLResults variable that will contain some information that can be used to trace the XML parsing error. You can have a user-friendly explanation of the parsing error with the "getError" function. - */ - - /// Parse an XML file and return the root of a XMLNode tree representing the file. - static XMLNode parseFile (XMLCSTR filename, XMLCSTR tag=NULL, XMLResults *pResults=NULL); - /**< The "parseFile" function parse an XML file and return the root of a XMLNode tree. The "opposite" of this function is - * the function "writeToFile" that re-creates an XML file from an XMLNode tree. If the XML document is corrupted, the - * "parseFile" method will initialize the "pResults" variable with some information that can be used to trace the error. - * If you still want to parse the file, you can use the APPROXIMATE_PARSING option as explained inside the note at the - * beginning of the "xmlParser.cpp" file. - * - * @param filename the path to the XML file to parse - * @param tag the name of the first tag inside the XML file. If the tag parameter is omitted, this function returns a node that represents the head of the xml document including the declaration term (). - * @param pResults a pointer to a XMLResults variable that will contain some information that can be used to trace the XML parsing error. You can have a user-friendly explanation of the parsing error with the "getError" function. - */ - - /// Parse an XML file and return the root of a XMLNode tree representing the file. A very crude error checking is made. An attempt to guess the Char Encoding used in the file is made. - static XMLNode openFileHelper(XMLCSTR filename, XMLCSTR tag=NULL); - /**< The "openFileHelper" function reports to the screen all the warnings and errors that occurred during parsing of the XML file. - * This function also tries to guess char Encoding (UTF-8, ASCII or SHIT-JIS) based on the first 200 bytes of the file. Since each - * application has its own way to report and deal with errors, you should rather use the "parseFile" function to parse XML files - * and program yourself thereafter an "error reporting" tailored for your needs (instead of using the very crude "error reporting" - * mechanism included inside the "openFileHelper" function). - * - * If the XML document is corrupted, the "openFileHelper" method will: - * - display an error message on the console (or inside a messageBox for windows). - * - stop execution (exit). - * - * I strongly suggest that you write your own "openFileHelper" method tailored to your needs. If you still want to parse - * the file, you can use the APPROXIMATE_PARSING option as explained inside the note at the beginning of the "xmlParser.cpp" file. - * - * @param filename the path of the XML file to parse. - * @param tag the name of the first tag inside the XML file. If the tag parameter is omitted, this function returns a node that represents the head of the xml document including the declaration term (). - */ - - static XMLCSTR getError(XMLError error); ///< this gives you a user-friendly explanation of the parsing error - - /// Create an XML string starting from the current XMLNode. - XMLSTR createXMLString(int nFormat=1, int *pnSize=NULL) const; - /**< The returned string should be free'd using the "freeXMLString" function. - * - * If nFormat==0, no formatting is required otherwise this returns an user friendly XML string from a given element - * with appropriate white spaces and carriage returns. if pnSize is given it returns the size in character of the string. */ - - /// Save the content of an xmlNode inside a file - XMLError writeToFile(XMLCSTR filename, - const char *encoding=NULL, - char nFormat=1) const; - /**< If nFormat==0, no formatting is required otherwise this returns an user friendly XML string from a given element with appropriate white spaces and carriage returns. - * If the global parameter "characterEncoding==encoding_UTF8", then the "encoding" parameter is ignored and always set to "utf-8". - * If the global parameter "characterEncoding==encoding_ShiftJIS", then the "encoding" parameter is ignored and always set to "SHIFT-JIS". - * If "_XMLWIDECHAR=1", then the "encoding" parameter is ignored and always set to "utf-16". - * If no "encoding" parameter is given the "ISO-8859-1" encoding is used. */ - /** @} */ - - /** @defgroup navigate Navigate the XMLNode structure - * @ingroup XMLParserGeneral - * @{ */ - XMLCSTR getName() const; ///< name of the node - XMLCSTR getText(int i=0) const; ///< return ith text field - int nText() const; ///< nbr of text field - XMLNode getParentNode() const; ///< return the parent node - XMLNode getChildNode(int i=0) const; ///< return ith child node - XMLNode getChildNode(XMLCSTR name, int i) const; ///< return ith child node with specific name (return an empty node if failing). If i==-1, this returns the last XMLNode with the given name. - XMLNode getChildNode(XMLCSTR name, int *i=NULL) const; ///< return next child node with specific name (return an empty node if failing) - XMLNode getChildNodeWithAttribute(XMLCSTR tagName, - XMLCSTR attributeName, - XMLCSTR attributeValue=NULL, - int *i=NULL) const; ///< return child node with specific name/attribute (return an empty node if failing) - XMLNode getChildNodeByPath(XMLCSTR path, char createNodeIfMissing=0, XMLCHAR sep='/'); - ///< return the first child node with specific path - XMLNode getChildNodeByPathNonConst(XMLSTR path, char createNodeIfMissing=0, XMLCHAR sep='/'); - ///< return the first child node with specific path. - - int nChildNode(XMLCSTR name) const; ///< return the number of child node with specific name - int nChildNode() const; ///< nbr of child node - XMLAttribute getAttribute(int i=0) const; ///< return ith attribute - XMLCSTR getAttributeName(int i=0) const; ///< return ith attribute name - XMLCSTR getAttributeValue(int i=0) const; ///< return ith attribute value - char isAttributeSet(XMLCSTR name) const; ///< test if an attribute with a specific name is given - XMLCSTR getAttribute(XMLCSTR name, int i) const; ///< return ith attribute content with specific name (return a NULL if failing) - XMLCSTR getAttribute(XMLCSTR name, int *i=NULL) const; ///< return next attribute content with specific name (return a NULL if failing) - int nAttribute() const; ///< nbr of attribute - XMLClear getClear(int i=0) const; ///< return ith clear field (comments) - int nClear() const; ///< nbr of clear field - XMLNodeContents enumContents(XMLElementPosition i) const; ///< enumerate all the different contents (attribute,child,text, clear) of the current XMLNode. The order is reflecting the order of the original file/string. NOTE: 0 <= i < nElement(); - int nElement() const; ///< nbr of different contents for current node - char isEmpty() const; ///< is this node Empty? - char isDeclaration() const; ///< is this node a declaration - XMLNode deepCopy() const; ///< deep copy (duplicate/clone) a XMLNode - static XMLNode emptyNode(); ///< return XMLNode::emptyXMLNode; - /** @} */ - - ~XMLNode(); - XMLNode(const XMLNode &A); ///< to allow shallow/fast copy: - XMLNode& operator=( const XMLNode& A ); ///< to allow shallow/fast copy: - - XMLNode(): d(NULL){}; - static XMLNode emptyXMLNode; - static XMLClear emptyXMLClear; - static XMLAttribute emptyXMLAttribute; - - /** @defgroup xmlModify Create or Update the XMLNode structure - * @ingroup XMLParserGeneral - * The functions in this group allows you to create from scratch (or update) a XMLNode structure. Start by creating your top - * node with the "createXMLTopNode" function and then add new nodes with the "addChild" function. The parameter 'pos' gives - * the position where the childNode, the text or the XMLClearTag will be inserted. The default value (pos=-1) inserts at the - * end. The value (pos=0) insert at the beginning (Insertion at the beginning is slower than at the end).
- * - * REMARK: 0 <= pos < nChild()+nText()+nClear()
- */ - - /** @defgroup creation Creating from scratch a XMLNode structure - * @ingroup xmlModify - * @{ */ - static XMLNode createXMLTopNode(XMLCSTR lpszName, char isDeclaration=FALSE); ///< Create the top node of an XMLNode structure - XMLNode addChild(XMLCSTR lpszName, char isDeclaration=FALSE, XMLElementPosition pos=-1); ///< Add a new child node - XMLNode addChild(XMLNode nodeToAdd, XMLElementPosition pos=-1); ///< If the "nodeToAdd" has some parents, it will be detached from it's parents before being attached to the current XMLNode - XMLAttribute *addAttribute(XMLCSTR lpszName, XMLCSTR lpszValuev); ///< Add a new attribute - XMLCSTR addText(XMLCSTR lpszValue, XMLElementPosition pos=-1); ///< Add a new text content - XMLClear *addClear(XMLCSTR lpszValue, XMLCSTR lpszOpen=NULL, XMLCSTR lpszClose=NULL, XMLElementPosition pos=-1); - /**< Add a new clear tag - * @param lpszOpen default value "" - */ - /** @} */ - - /** @defgroup xmlUpdate Updating Nodes - * @ingroup xmlModify - * Some update functions: - * @{ - */ - XMLCSTR updateName(XMLCSTR lpszName); ///< change node's name - XMLAttribute *updateAttribute(XMLAttribute *newAttribute, XMLAttribute *oldAttribute); ///< if the attribute to update is missing, a new one will be added - XMLAttribute *updateAttribute(XMLCSTR lpszNewValue, XMLCSTR lpszNewName=NULL,int i=0); ///< if the attribute to update is missing, a new one will be added - XMLAttribute *updateAttribute(XMLCSTR lpszNewValue, XMLCSTR lpszNewName,XMLCSTR lpszOldName);///< set lpszNewName=NULL if you don't want to change the name of the attribute if the attribute to update is missing, a new one will be added - XMLCSTR updateText(XMLCSTR lpszNewValue, int i=0); ///< if the text to update is missing, a new one will be added - XMLCSTR updateText(XMLCSTR lpszNewValue, XMLCSTR lpszOldValue); ///< if the text to update is missing, a new one will be added - XMLClear *updateClear(XMLCSTR lpszNewContent, int i=0); ///< if the clearTag to update is missing, a new one will be added - XMLClear *updateClear(XMLClear *newP,XMLClear *oldP); ///< if the clearTag to update is missing, a new one will be added - XMLClear *updateClear(XMLCSTR lpszNewValue, XMLCSTR lpszOldValue); ///< if the clearTag to update is missing, a new one will be added - /** @} */ - - /** @defgroup xmlDelete Deleting Nodes or Attributes - * @ingroup xmlModify - * Some deletion functions: - * @{ - */ - /// The "deleteNodeContent" function forces the deletion of the content of this XMLNode and the subtree. - void deleteNodeContent(); - /**< \note The XMLNode instances that are referring to the part of the subtree that has been deleted CANNOT be used anymore!!. Unexpected results will occur if you continue using them. */ - void deleteAttribute(int i=0); ///< Delete the ith attribute of the current XMLNode - void deleteAttribute(XMLCSTR lpszName); ///< Delete the attribute with the given name (the "strcmp" function is used to find the right attribute) - void deleteAttribute(XMLAttribute *anAttribute); ///< Delete the attribute with the name "anAttribute->lpszName" (the "strcmp" function is used to find the right attribute) - void deleteText(int i=0); ///< Delete the Ith text content of the current XMLNode - void deleteText(XMLCSTR lpszValue); ///< Delete the text content "lpszValue" inside the current XMLNode (direct "pointer-to-pointer" comparison is used to find the right text) - void deleteClear(int i=0); ///< Delete the Ith clear tag inside the current XMLNode - void deleteClear(XMLCSTR lpszValue); ///< Delete the clear tag "lpszValue" inside the current XMLNode (direct "pointer-to-pointer" comparison is used to find the clear tag) - void deleteClear(XMLClear *p); ///< Delete the clear tag "p" inside the current XMLNode (direct "pointer-to-pointer" comparison on the lpszName of the clear tag is used to find the clear tag) - /** @} */ - - /** @defgroup xmlWOSD ???_WOSD functions. - * @ingroup xmlModify - * The strings given as parameters for the "add" and "update" methods that have a name with - * the postfix "_WOSD" (that means "WithOut String Duplication")(for example "addText_WOSD") - * will be free'd by the XMLNode class. For example, it means that this is incorrect: - * \code - * xNode.addText_WOSD("foo"); - * xNode.updateAttribute_WOSD("#newcolor" ,NULL,"color"); - * \endcode - * In opposition, this is correct: - * \code - * xNode.addText("foo"); - * xNode.addText_WOSD(stringDup("foo")); - * xNode.updateAttribute("#newcolor" ,NULL,"color"); - * xNode.updateAttribute_WOSD(stringDup("#newcolor"),NULL,"color"); - * \endcode - * Typically, you will never do: - * \code - * char *b=(char*)malloc(...); - * xNode.addText(b); - * free(b); - * \endcode - * ... but rather: - * \code - * char *b=(char*)malloc(...); - * xNode.addText_WOSD(b); - * \endcode - * ('free(b)' is performed by the XMLNode class) - * @{ */ - static XMLNode createXMLTopNode_WOSD(XMLSTR lpszName, char isDeclaration=FALSE); ///< Create the top node of an XMLNode structure - XMLNode addChild_WOSD(XMLSTR lpszName, char isDeclaration=FALSE, XMLElementPosition pos=-1); ///< Add a new child node - XMLAttribute *addAttribute_WOSD(XMLSTR lpszName, XMLSTR lpszValue); ///< Add a new attribute - XMLCSTR addText_WOSD(XMLSTR lpszValue, XMLElementPosition pos=-1); ///< Add a new text content - XMLClear *addClear_WOSD(XMLSTR lpszValue, XMLCSTR lpszOpen=NULL, XMLCSTR lpszClose=NULL, XMLElementPosition pos=-1); ///< Add a new clear Tag - - XMLCSTR updateName_WOSD(XMLSTR lpszName); ///< change node's name - XMLAttribute *updateAttribute_WOSD(XMLAttribute *newAttribute, XMLAttribute *oldAttribute); ///< if the attribute to update is missing, a new one will be added - XMLAttribute *updateAttribute_WOSD(XMLSTR lpszNewValue, XMLSTR lpszNewName=NULL,int i=0); ///< if the attribute to update is missing, a new one will be added - XMLAttribute *updateAttribute_WOSD(XMLSTR lpszNewValue, XMLSTR lpszNewName,XMLCSTR lpszOldName); ///< set lpszNewName=NULL if you don't want to change the name of the attribute if the attribute to update is missing, a new one will be added - XMLCSTR updateText_WOSD(XMLSTR lpszNewValue, int i=0); ///< if the text to update is missing, a new one will be added - XMLCSTR updateText_WOSD(XMLSTR lpszNewValue, XMLCSTR lpszOldValue); ///< if the text to update is missing, a new one will be added - XMLClear *updateClear_WOSD(XMLSTR lpszNewContent, int i=0); ///< if the clearTag to update is missing, a new one will be added - XMLClear *updateClear_WOSD(XMLClear *newP,XMLClear *oldP); ///< if the clearTag to update is missing, a new one will be added - XMLClear *updateClear_WOSD(XMLSTR lpszNewValue, XMLCSTR lpszOldValue); ///< if the clearTag to update is missing, a new one will be added - /** @} */ - - /** @defgroup xmlPosition Position helper functions (use in conjunction with the update&add functions - * @ingroup xmlModify - * These are some useful functions when you want to insert a childNode, a text or a XMLClearTag in the - * middle (at a specified position) of a XMLNode tree already constructed. The value returned by these - * methods is to be used as last parameter (parameter 'pos') of addChild, addText or addClear. - * @{ */ - XMLElementPosition positionOfText(int i=0) const; - XMLElementPosition positionOfText(XMLCSTR lpszValue) const; - XMLElementPosition positionOfClear(int i=0) const; - XMLElementPosition positionOfClear(XMLCSTR lpszValue) const; - XMLElementPosition positionOfClear(XMLClear *a) const; - XMLElementPosition positionOfChildNode(int i=0) const; - XMLElementPosition positionOfChildNode(XMLNode x) const; - XMLElementPosition positionOfChildNode(XMLCSTR name, int i=0) const; ///< return the position of the ith childNode with the specified name if (name==NULL) return the position of the ith childNode - /** @} */ - - /// Enumeration for XML character encoding. - typedef enum XMLCharEncoding - { - char_encoding_error=0, - char_encoding_UTF8=1, - char_encoding_legacy=2, - char_encoding_ShiftJIS=3, - char_encoding_GB2312=4, - char_encoding_Big5=5, - char_encoding_GBK=6 // this is actually the same as Big5 - } XMLCharEncoding; - - /** \addtogroup conversions - * @{ */ - - /// Sets the global options for the conversions - static char setGlobalOptions(XMLCharEncoding characterEncoding=XMLNode::char_encoding_UTF8, char guessWideCharChars=1, - char dropWhiteSpace=1, char removeCommentsInMiddleOfText=1); - /**< The "setGlobalOptions" function allows you to change four global parameters that affect string & file - * parsing. First of all, you most-probably will never have to change these 3 global parameters. - * - * @param guessWideCharChars If "guessWideCharChars"=1 and if this library is compiled in WideChar mode, then the - * XMLNode::parseFile and XMLNode::openFileHelper functions will test if the file contains ASCII - * characters. If this is the case, then the file will be loaded and converted in memory to - * WideChar before being parsed. If 0, no conversion will be performed. - * - * @param guessWideCharChars If "guessWideCharChars"=1 and if this library is compiled in ASCII/UTF8/char* mode, then the - * XMLNode::parseFile and XMLNode::openFileHelper functions will test if the file contains WideChar - * characters. If this is the case, then the file will be loaded and converted in memory to - * ASCII/UTF8/char* before being parsed. If 0, no conversion will be performed. - * - * @param characterEncoding This parameter is only meaningful when compiling in char* mode (multibyte character mode). - * In wchar_t* (wide char mode), this parameter is ignored. This parameter should be one of the - * three currently recognized encodings: XMLNode::encoding_UTF8, XMLNode::encoding_ascii, - * XMLNode::encoding_ShiftJIS. - * - * @param dropWhiteSpace In most situations, text fields containing only white spaces (and carriage returns) - * are useless. Even more, these "empty" text fields are annoying because they increase the - * complexity of the user's code for parsing. So, 99% of the time, it's better to drop - * the "empty" text fields. However The XML specification indicates that no white spaces - * should be lost when parsing the file. So to be perfectly XML-compliant, you should set - * dropWhiteSpace=0. A note of caution: if you set "dropWhiteSpace=0", the parser will be - * slower and your code will be more complex. - * - * @param removeCommentsInMiddleOfText To explain this parameter, let's consider this code: - * \code - * XMLNode x=XMLNode::parseString("foobarchu","a"); - * \endcode - * If removeCommentsInMiddleOfText=0, then we will have: - * \code - * x.getText(0) -> "foo" - * x.getText(1) -> "bar" - * x.getText(2) -> "chu" - * x.getClear(0) --> "" - * x.getClear(1) --> "" - * \endcode - * If removeCommentsInMiddleOfText=1, then we will have: - * \code - * x.getText(0) -> "foobar" - * x.getText(1) -> "chu" - * x.getClear(0) --> "" - * \endcode - * - * \return "0" when there are no errors. If you try to set an unrecognized encoding then the return value will be "1" to signal an error. - * - * \note Sometime, it's useful to set "guessWideCharChars=0" to disable any conversion - * because the test to detect the file-type (ASCII/UTF8/char* or WideChar) may fail (rarely). */ - - /// Guess the character encoding of the string (ascii, utf8 or shift-JIS) - static XMLCharEncoding guessCharEncoding(void *buffer, int bufLen, char useXMLEncodingAttribute=1); - /**< The "guessCharEncoding" function try to guess the character encoding. You most-probably will never - * have to use this function. It then returns the appropriate value of the global parameter - * "characterEncoding" described in the XMLNode::setGlobalOptions. The guess is based on the content of a buffer of length - * "bufLen" bytes that contains the first bytes (minimum 25 bytes; 200 bytes is a good value) of the - * file to be parsed. The XMLNode::openFileHelper function is using this function to automatically compute - * the value of the "characterEncoding" global parameter. There are several heuristics used to do the - * guess. One of the heuristic is based on the "encoding" attribute. The original XML specifications - * forbids to use this attribute to do the guess but you can still use it if you set - * "useXMLEncodingAttribute" to 1 (this is the default behavior and the behavior of most parsers). - * If an inconsistency in the encoding is detected, then the return value is "0". */ - /** @} */ - - private: - // these are functions and structures used internally by the XMLNode class (don't bother about them): - - typedef struct XMLNodeDataTag // to allow shallow copy and "intelligent/smart" pointers (automatic delete): - { - XMLCSTR lpszName; // Element name (=NULL if root) - int nChild, // Number of child nodes - nText, // Number of text fields - nClear, // Number of Clear fields (comments) - nAttribute; // Number of attributes - char isDeclaration; // Whether node is an XML declaration - '' - struct XMLNodeDataTag *pParent; // Pointer to parent element (=NULL if root) - XMLNode *pChild; // Array of child nodes - XMLCSTR *pText; // Array of text fields - XMLClear *pClear; // Array of clear fields - XMLAttribute *pAttribute; // Array of attributes - int *pOrder; // order of the child_nodes,text_fields,clear_fields - int ref_count; // for garbage collection (smart pointers) - } XMLNodeData; - XMLNodeData *d; - - char parseClearTag(void *px, void *pa); - char maybeAddTxT(void *pa, XMLCSTR tokenPStr); - int ParseXMLElement(void *pXML); - void *addToOrder(int memInc, int *_pos, int nc, void *p, int size, XMLElementType xtype); - int indexText(XMLCSTR lpszValue) const; - int indexClear(XMLCSTR lpszValue) const; - XMLNode addChild_priv(int,XMLSTR,char,int); - XMLAttribute *addAttribute_priv(int,XMLSTR,XMLSTR); - XMLCSTR addText_priv(int,XMLSTR,int); - XMLClear *addClear_priv(int,XMLSTR,XMLCSTR,XMLCSTR,int); - void emptyTheNode(char force); - static inline XMLElementPosition findPosition(XMLNodeData *d, int index, XMLElementType xtype); - static int CreateXMLStringR(XMLNodeData *pEntry, XMLSTR lpszMarker, int nFormat); - static int removeOrderElement(XMLNodeData *d, XMLElementType t, int index); - static void exactMemory(XMLNodeData *d); - static int detachFromParent(XMLNodeData *d); -} XMLNode; - -/// This structure is given by the function XMLNode::enumContents. -typedef struct XMLNodeContents -{ - /// This dictates what's the content of the XMLNodeContent - enum XMLElementType etype; - /**< should be an union to access the appropriate data. Compiler does not allow union of object with constructor... too bad. */ - XMLNode child; - XMLAttribute attrib; - XMLCSTR text; - XMLClear clear; - -} XMLNodeContents; - -/** @defgroup StringAlloc String Allocation/Free functions - * @ingroup xmlModify - * @{ */ -/// Duplicate (copy in a new allocated buffer) the source string. -XMLDLLENTRY XMLSTR stringDup(XMLCSTR source, int cbData=-1); -/**< This is - * a very handy function when used with all the "XMLNode::*_WOSD" functions (\link xmlWOSD \endlink). - * @param cbData If !=0 then cbData is the number of chars to duplicate. New strings allocated with - * this function should be free'd using the "freeXMLString" function. */ - -/// to free the string allocated inside the "stringDup" function or the "createXMLString" function. -XMLDLLENTRY void freeXMLString(XMLSTR t); // {free(t);} -/** @} */ - -/** @defgroup atoX ato? like functions - * @ingroup XMLParserGeneral - * The "xmlto?" functions are equivalents to the atoi, atol, atof functions. - * The only difference is: If the variable "xmlString" is NULL, than the return value - * is "defautValue". These 6 functions are only here as "convenience" functions for the - * user (they are not used inside the XMLparser). If you don't need them, you can - * delete them without any trouble. - * - * @{ */ -XMLDLLENTRY char xmltob(XMLCSTR xmlString,char defautValue=0); -XMLDLLENTRY int xmltoi(XMLCSTR xmlString,int defautValue=0); -XMLDLLENTRY long xmltol(XMLCSTR xmlString,long defautValue=0); -XMLDLLENTRY double xmltof(XMLCSTR xmlString,double defautValue=.0); -XMLDLLENTRY XMLCSTR xmltoa(XMLCSTR xmlString,XMLCSTR defautValue=_CXML("")); -XMLDLLENTRY XMLCHAR xmltoc(XMLCSTR xmlString,const XMLCHAR defautValue=_CXML('\0')); -/** @} */ - -/** @defgroup ToXMLStringTool Helper class to create XML files using "printf", "fprintf", "cout",... functions. - * @ingroup XMLParserGeneral - * @{ */ -/// Helper class to create XML files using "printf", "fprintf", "cout",... functions. -/** The ToXMLStringTool class helps you creating XML files using "printf", "fprintf", "cout",... functions. - * The "ToXMLStringTool" class is processing strings so that all the characters - * &,",',<,> are replaced by their XML equivalent: - * \verbatim &, ", ', <, > \endverbatim - * Using the "ToXMLStringTool class" and the "fprintf function" is THE most efficient - * way to produce VERY large XML documents VERY fast. - * \note If you are creating from scratch an XML file using the provided XMLNode class - * you must not use the "ToXMLStringTool" class (because the "XMLNode" class does the - * processing job for you during rendering).*/ -typedef struct XMLDLLENTRY ToXMLStringTool -{ -public: - ToXMLStringTool(): buf(NULL),buflen(0){} - ~ToXMLStringTool(); - void freeBuffer();/// - + XBMC se voorprogram vir Tvheadend XBMC's frontend for Tvheadend - XBMC клиент за DVBViewer + XBMC клиент за Tvheadend Frontal de l'XBMC pel Tvheadend Rozhraní XBMC pro Tvheadend Blaen XBMC ar gyfer Tvheadend XBMC's frontend til Tvheadend - XBMC Oberfläche für Tvheadend + XBMC-Oberfläche für Tvheadend Το frontend του XBMC για το Tvheadend XBMC's frontend for Tvheadend XBMC's frontend for Tvheadend + XBMC's frontend for Tvheadend Interfaz XBMC para Tvheadend Interfaz XBMC para Tvheadend XBMC esi Tvheadend'ile XBMC:n Tvheadend-tuki - Enregistreur Vidéo XBMC pour Tvheadend + Interface logicielle pour Tvheadend Frontal XBMC pour Tvheadend Interface do XBMC para Tvheadend ממשק קדמי XBMC עבורTvheadend XBMC sučelje za Tvheadend XBMC TVHeadend előtér-kiszolgáló Frontend XBMC untuk Tvheadend + XBMC framendi fyrir Tvheadend Frontend di XBMC per Tvheadend TVheadend 用 XBMC フロントエンド XBMC-ის სამომხმარებლო მხარე Tvheadend-თვის @@ -61,7 +63,7 @@ XBMC's frontend för Tvheadend Tvheadend காண XBMC முன்நிலை Интерфейси XBMC барои Tvheadend - XBMC'nin Tvheadend için arayüzü + Tvheadend için XBMC ön ucu Накладка на XBMC для Tvheadend Giao tiếp XBMC cho Tvheadend XBMC 的 Tvheadend 前端 @@ -73,21 +75,23 @@ Rozhraní Tvheadend. Podporuje proudové vysílání živého vysílání a nahrávek, poslech kanálů rádia, EPG, a časovače. Blaen Tvheadend: cefnogi ffrydio Teledu Byw a Recordio, Amserlenni, Amseryddion Tvheadend frontend; understøtter streaming af direkte TV og optagelser, EPG og timere - Tvheadend Oberfläche; Unterstützung von Live TV & Aufnahmen, EPG und Timern. + Tvheadend-Oberfläche; Unterstützung von Live TV & Aufnahmen, EPG und Timern. Frontend για το Tvheadend. Υποστηρίζει ροές Live TV & Εγγραφές, EPG, Χρονοδιακόπτες Tvheadend frontend; supporting streaming of Live TV & Recordings, EPG, Timers Tvheadend frontend; supporting streaming of Live TV & Recordings, EPG, Timers + Tvheadend frontend; supporting streaming of Live TV & Recordings, EPG, Timers Interfaz Tvheadend; soporta la reproducción de TV en vivo, grabación, guía de programación, temporizadores Interfaz Tvheadend; soporta la reproducción de TV en vivo, grabación, guía de programación, temporizadores Tvheadend esi. Toetab telekanalite striimimist ja salvestamist ning elektroonilist saatekava. Tvheadend; tukee reaaliaikaisen television ja nauhoituksien streamausta, EPGtä ja nauhoituksien ajastusta. - Enregistreur Vidéo pour Tvheadend supportant la lecture en continu du direct télévision et des enregistrements, les guides de programme TV, les minuteries + Interface logicielle pour Tvheadend supportant la lecture en continu du direct télévision et des enregistrements, les guides de programme TV, les minuteries Frontal pour Tvheadend, prenant en charge la lecture en transit des télés en direct & les enregistrements, le GÉP et minuteries. - Interface Tvheadend; soporta a transmisión de TV ao vivo e Gravacións, Guía, temporizadores + Interface Tvheadend; soporta a transmisión de TV en directo e Gravacións, Guía, temporizadores ממשק קדמיTvheadend:תומך בטלוויזיה חיה והקלטות. לוחות שידורים,והקלטה מתוזמנת. Tvheadend pozadinski softver podržava gledanje i snimanje TV programa, elektronski programski vodič (EPG) i zakazano snimanje. TVHeadend előtér-kiszolgáló. Élő adások és felvételek sugárzásának támogatása EPG-vel és időzítéssel Frontend Tvheadend; mendukung menangkap siaran TV Live & Rekaman, EPG, Timer + Tvheadend framendi; styður streymingu á beinum sjónvarpi og upptökum, rafrænum sjónvarpsvísum (EGP), tímatökur Frontend di Tvheadend; supporta lo streaming di Live TV & Registrazione, EPG, Timers TVheadend フロントエンドです。ライブTVストリーミング、録画、EPG、タイマーをサポートしています。 Tvheadend-ის სამომხმარებლო მხარე მხარს უჭერს Live TV სტრიმინგსა და ჩანაწერებს, EPG-სა და თაიმერებს. @@ -98,7 +102,7 @@ Bahagian hadapan Tvheadend; menyokong penstirman Langsung & Rakaman, EPG, Pemasa TV Tvheadend frontend, het ondersteunen streaming van Live TV & Recordings, EPG, Timers Tvheadend frontend; støtte for visning av direkte TV og opptakk, EPG, tidstakere - Klient Tvheadend. Wspiera strumieniowanie kanałów telewizyjnych, nagrywanie, planowanie nagrań oraz funkcje przewodnika TV. + Klient Tvheadend wspiera strumieniowanie kanałów telewizyjnych, nagrywanie, planowanie nagrań oraz funkcje przewodnika TV. Frontend Tvheadend; suporta transmissão de TV em Directo e Gravações, EPG, Temporizadores Tvheadend; suporta streaming de TV Ao Vivo e Gravada, EPG, Agendamentos Frontend Tvheadend; se poate difuza în flux a televiziunii în direct și a înregistrăriilor, EPG, Cronometre @@ -109,7 +113,7 @@ Tvheadend frontend; stödjer strömning av direktsänd TV & inspelningar, EPG, Timers NextPVR முன்நிலை. லைவ் டிவி & பதிவுகளின் ஸ்ட்ரீமிங், EPG கேட்கவும் துணைபுரிகிறது. Интерфейси Tvheadend; дастгирии ҷараёни Сабтҳо, Вақтсанҷҳо, Live TV ва EPG - Tvheadend arayüzü; Canlı Yayın içi akış desteği & Kayıt yapabilme, EPG, Zamanlayıcılar + Tvheadend ön ucu; Canlı TV akışı ve kayıt yapabilme, EPG ve zamanlayıcıları destekler Накладка для Tvheadend; підтримує стрім потоку Live TV і записування, EPG (телегіду), таймерів Giao tiếp cho Tvheadend; hỗ trợ truyền phát và thu chương trình Live TV, hẹn giờ, và hiển thị lịch chiếu (EPG) Tvheadend 前端,支持直播电视和录像流媒体、电子节目单、定时器 @@ -125,6 +129,7 @@ Ασταθές πρόγραμμα! Οι δημιουργοί δεν είναι σε καμία περίπτωση υπεύθυνοι για αποτυχημένες εγγραφές, λανθασμένους χρονοδιακόπτες, χαμένες ώρες, ή κάθε είδους ανεπιθύμητα αποτελέσματα.. This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects.. This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects.. + This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects.. ¡Este software es inestable! Los autores no se responsabilizan de grabaciones fallidas, temporizadores incorrectos, horas perdidas, o cualquier otro efecto no deseado... ¡Este software es inestable! Los autores no se responsabilizan por grabaciones fallidas, temporizadores incorrectos, horas perdidas, o cualquier otro efecto no deseado.. ¡Esto es software inestable! Los autores no son de ninguna manera responsables por grabaciones fallidas, temporizadores incorrectos, horas perdidas o cualquier otro efecto no deseado... @@ -136,6 +141,7 @@ זוהי תוכנה בלתי יציבה!מחברי התכנה אינם אחראים להקלטות כושלות,מתזמני הקלטות שגויים,שעות מבוזבזות,או כל תוצאה בלתי רצויה... Ovo je nestabilan softver! Autori nisu ni na koji način odgovorni za neuspjelo snimanje, netočna vremena snimanja, izgubljene sate, ili bilo koje druge nepoželjne učinke... Ez nem stabil szoftver! A készítők nem vállalnak felelősséget, a hibás felvételért, rossz időzítésért, elvesztegetett időért... + Սա անկայուն ծրագրային ապահովում է: Հեղինակները պատասխանատու չեն վատ ձայնագրումների, սխալ ժամանակացույցերի, կորած ժամանակի կամ այլ ոչ ցանկալի երևույթների համար: Ini merupakan software yang tidak stabil! Penulis tidak bertanggung jawab untuk rekaman gagal, timer salah, waktu terbuang, atau efek tak diinginkan lainnya... Þetta er óstöðugur hugbúnaður! Höfundarnir eru á engann hátt ábyrgir fyrir misheppnuðum upptökum, röngum upptökutímum, klukkustundum sem að fóru í súginn eða nokkrum öðrum óæskilegum áhrifum. Questo software è instabile! Gli autori non sono in alcun modo responsabili per registrazioni fallite, timers incorretti, ore perse, o qualsiasi altro effetto indesiderato. @@ -143,16 +149,17 @@ ეს არის არასტაბილური პროგრამული უზრუნველყოფა! ავტორები არ არიან პასუხისმგებელი შეცდომებზე, არასწორ EPG-ზე, დაკარგულ დროზე ან სხვა ხარვეზებზე 이 소프트웨어는 불안정합니다! 제작자는 녹화 실패, 부정확한 타이머, 시간 낭비 및 기타 예상하지 못한 결과에 대해 책임지지 않습니다.. Tai yra nestabili programinė įranga! Autorius jokiu būdu neatsakingas už nepavykusius įrašus, neteisingus laikmačius, iššvaistytas valandas, ar nutikus kitiems nepageidaujamiems poveikiams ...[COLOR=red](xbmc.lt siūlo/rekomenduoja testuojant šį priedą persijungti į Anglų [orinali] kalbą)[/COLOR] - Šī ir nestabila programmatūra! Autori nav nekādā vaidā atbildīgi par nesanākušiem ierakstiem, nepareiziem taimeriem, iztērētām stundām vai jebkādiem citiem nevēlamiem efektiem.. + Šī ir nestabila programmatūra! Autori nav atbildīgi par nesanākušiem ierakstiem, nepareiziem taimeriem, iztērētām stundām vai jebkādiem citiem nevēlamiem efektiem.. This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects. Ini merupakan perisian tidak stabil! Pengarang tidak bertanggungjawab atas kegagalan rakaman, pemasa tidak betul, masa yang dibazirkan, atau apa jua kesan yang tidak dikehendaki.. Dit is mogelijk onstabiele software! De auteurs zijn op geen enkele wijze verantwoordelijk voor de mislukte opnames, onjuiste timers, verspilde uren, of een andere ongewenste effecten .. Dette er ustabilt programvare! Forfatterne er ikke ansvarlig på noen måte for ødelagte opptak, feile timere, bortkastede timer, eller andre uønskede hendinger... - Oprogramowanie nadal jest w fazie rozwoju i jest niestabilne! Autorzy w żaden sposób nie są odpowiedzialni za błędne nagrania, błędy planowaniu nagrań, zmarnowany czas ani jakiekolwiek inne niepożądane efekty. + Oprogramowanie nadal jest w fazie rozwoju i jest niestabilne! Autorzy w żaden sposób nie są odpowiedzialni za nieudane nagrania, błędy w planie nagrań, zmarnowany czas ani jakiekolwiek inne niepożądane efekty. Este software é instável! Os autores não são de forma alguma responsáveis por gravações falhadas, temporizadores incorrectos, horas desperdiçadas, ou qualquer outro tipo de efeitos indesejáveis.. Este é um software instável! Os autores não são responsáveis por falhas nas gravações, agendamentos incorretos, horas desperdiçadas, ou quaisquer outros efeitos indesejáveis... Acest software nu este stabil! Autorii nu sunt în niciun caz responsabili pentru înregistrările eșuate, cronometre incorecte, ore pierdute sau orice alt efect nedorit. Это нестабильная программа! Авторы не несут ответственности за неудачную запись, неправильные таймеры, потраченное время и другие нежелательные последствия. + මෙය අස්ථිර මෘදුකාංගයකි! මෙහි සිදුවන පටිගත කිරීම් අසාර්ථක වීම්, සාවද්‍ය මුහුර්තක, නාස්ති වූ කාලයන්, හෝ වෙනත් යමිකිසි නුසුදුසු බලපෑම් සඳහා කතෘ වග කියනු නොලැබේ. Tento softvér nie je stabilný! Autori nenesú žiadnu zodpovednosť za chybné nahrávky vysielania, nesprávne časovače alebo iné neželané udalosti spôsobené týmto softvérom.. To je nestabilna programska oprema! Avtorji niso odgovorni za neuspela snemanja, nepravilne časovnike, zapravljen čas in katerikoli drug neželen učinek... Ky program nuk është ende stabil! Autorët e këtij programi nuk janë në as një menyr përgjegjës për rregistrime të gabuara, timer të pasaktë, kohë të humbur ose efekte të tilla të padëshirueshme. diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/addon/resources/language/Armenian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/addon/resources/language/Armenian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/addon/resources/language/Armenian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/addon/resources/language/Armenian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: Tvheadend HTSP Client +# Addon id: pvr.hts +# Addon Provider: Lars Op den Kamp, Team XBMC +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Armenian (http://www.transifex.com/projects/p/xbmc-main/language/hy/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hy\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30004" +msgid "Password" +msgstr "Գաղտնաբառ" + +msgctxt "#30105" +msgid "Resolution" +msgstr "Լուծում" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/addon/resources/language/English (US)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/addon/resources/language/English (US)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/addon/resources/language/English (US)/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/addon/resources/language/English (US)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -16,6 +16,18 @@ "Language: en_US\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgctxt "#30000" +msgid "Tvheadend hostname or IP address" +msgstr "Tvheadend hostname or IP address" + +msgctxt "#30001" +msgid "HTTP port" +msgstr "HTTP port" + +msgctxt "#30002" +msgid "HTSP port" +msgstr "HTSP port" + msgctxt "#30003" msgid "Username" msgstr "Username" @@ -24,6 +36,26 @@ msgid "Password" msgstr "Password" +msgctxt "#30006" +msgid "Connect timeout in seconds" +msgstr "Connect timeout in seconds" + +msgctxt "#30007" +msgid "Response timeout in seconds" +msgstr "Response timeout in seconds" + +msgctxt "#30100" +msgid "Tvheadend transcoding settings" +msgstr "Tvheadend transcoding settings" + +msgctxt "#30101" +msgid "Transcoding settings" +msgstr "Transcoding settings" + +msgctxt "#30102" +msgid "Enable transcoding" +msgstr "Enable transcoding" + msgctxt "#30103" msgid "Audio codec" msgstr "Audio codec" @@ -35,3 +67,11 @@ msgctxt "#30105" msgid "Resolution" msgstr "Resolution" + +msgctxt "#30500" +msgid "Disconnected from '%s'" +msgstr "Disconnected from '%s'" + +msgctxt "#30501" +msgid "Reconnected to '%s'" +msgstr "Reconnected to '%s'" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/addon/resources/language/Galician/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/addon/resources/language/Galician/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/addon/resources/language/Galician/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/addon/resources/language/Galician/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -18,7 +18,7 @@ msgctxt "#30000" msgid "Tvheadend hostname or IP address" -msgstr "nome do host ou enderezo IP" +msgstr "Nome do host ou enderezo IP" msgctxt "#30001" msgid "HTTP port" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/addon/resources/language/German/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/addon/resources/language/German/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/addon/resources/language/German/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/addon/resources/language/German/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -18,15 +18,15 @@ msgctxt "#30000" msgid "Tvheadend hostname or IP address" -msgstr "Tvheadend Hostname oder IP-Adresse" +msgstr "Tvheadend-Hostname oder IP-Adresse" msgctxt "#30001" msgid "HTTP port" -msgstr "HTTP Port" +msgstr "HTTP-Port" msgctxt "#30002" msgid "HTSP port" -msgstr "HTSP Port" +msgstr "HTSP-Port" msgctxt "#30003" msgid "Username" @@ -46,7 +46,7 @@ msgctxt "#30100" msgid "Tvheadend transcoding settings" -msgstr "Tvheadend Transkodierungseinstellungen" +msgstr "Tvheadend-Transkodierungseinstellungen" msgctxt "#30101" msgid "Transcoding settings" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/addon/resources/language/Hebrew/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/addon/resources/language/Hebrew/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/addon/resources/language/Hebrew/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/addon/resources/language/Hebrew/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -22,11 +22,11 @@ msgctxt "#30001" msgid "HTTP port" -msgstr "HTTP port" +msgstr "יציאת HTTP" msgctxt "#30002" msgid "HTSP port" -msgstr "HTSP port" +msgstr "יציאת HTSP" msgctxt "#30003" msgid "Username" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/addon/resources/language/Icelandic/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/addon/resources/language/Icelandic/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/addon/resources/language/Icelandic/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/addon/resources/language/Icelandic/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -16,6 +16,10 @@ "Language: is\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgctxt "#30000" +msgid "Tvheadend hostname or IP address" +msgstr "Nafn eða IP tala Tvheadend" + msgctxt "#30001" msgid "HTTP port" msgstr "HTTP gátt" @@ -32,13 +36,33 @@ msgid "Password" msgstr "Lykilorð" +msgctxt "#30006" +msgid "Connect timeout in seconds" +msgstr "Tímatakmörk tengingar í sekúndum" + +msgctxt "#30007" +msgid "Response timeout in seconds" +msgstr "Tímatakmörk svartíma í sekúndum" + +msgctxt "#30100" +msgid "Tvheadend transcoding settings" +msgstr "Stillingar umkóðara Tvheadend" + +msgctxt "#30101" +msgid "Transcoding settings" +msgstr "Stillingar umkóðara" + +msgctxt "#30102" +msgid "Enable transcoding" +msgstr "Virkja umkóðun" + msgctxt "#30103" msgid "Audio codec" -msgstr "Hljóðkótari" +msgstr "Hljóðkóðari" msgctxt "#30104" msgid "Video codec" -msgstr "Myndkótari" +msgstr "Myndkóðari" msgctxt "#30105" msgid "Resolution" @@ -50,4 +74,4 @@ msgctxt "#30501" msgid "Reconnected to '%s'" -msgstr "Tengdur við '%s'" +msgstr "Endurtengdur við '%s'" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/addon/resources/language/Polish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/addon/resources/language/Polish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/addon/resources/language/Polish/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/addon/resources/language/Polish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -18,7 +18,7 @@ msgctxt "#30000" msgid "Tvheadend hostname or IP address" -msgstr "Nazwa hosta lub IP" +msgstr "Nazwa hosta lub adres IP" msgctxt "#30001" msgid "HTTP port" @@ -30,7 +30,7 @@ msgctxt "#30003" msgid "Username" -msgstr "Nazwa użytkownika" +msgstr "Użytkownik" msgctxt "#30004" msgid "Password" @@ -54,7 +54,7 @@ msgctxt "#30102" msgid "Enable transcoding" -msgstr "Włącz transkodowanie" +msgstr "Aktywuj transkodowanie" msgctxt "#30103" msgid "Audio codec" @@ -70,7 +70,7 @@ msgctxt "#30500" msgid "Disconnected from '%s'" -msgstr "Odłączono od '%s'" +msgstr "Rozłączono z '%s'" msgctxt "#30501" msgid "Reconnected to '%s'" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/addon/resources/language/Sinhala/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/addon/resources/language/Sinhala/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/addon/resources/language/Sinhala/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/addon/resources/language/Sinhala/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,37 @@ +# XBMC Media Center language file +# Addon Name: Tvheadend HTSP Client +# Addon id: pvr.hts +# Addon Provider: Lars Op den Kamp, Team XBMC +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Sinhala (http://www.transifex.com/projects/p/xbmc-main/language/si/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: si\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30001" +msgid "HTTP port" +msgstr "HTTP තිර්ථය" + +msgctxt "#30002" +msgid "HTSP port" +msgstr "HTSP තිර්ථය" + +msgctxt "#30003" +msgid "Username" +msgstr "පරිශීලක නම" + +msgctxt "#30004" +msgid "Password" +msgstr "මුරපදය" + +msgctxt "#30105" +msgid "Resolution" +msgstr "සම්මතකරනය" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/addon/resources/language/Tamil (India)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/addon/resources/language/Tamil (India)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/addon/resources/language/Tamil (India)/strings.po 2014-05-04 06:40:42.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/addon/resources/language/Tamil (India)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -34,7 +34,7 @@ msgctxt "#30004" msgid "Password" -msgstr "அடையாளச் சொல்" +msgstr "கடவுச்சொல்" msgctxt "#30006" msgid "Connect timeout in seconds" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/project/VS2010Express/pvrclient_tvheadend.vcxproj xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/project/VS2010Express/pvrclient_tvheadend.vcxproj --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/project/VS2010Express/pvrclient_tvheadend.vcxproj 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/project/VS2010Express/pvrclient_tvheadend.vcxproj 2014-07-18 06:05:30.000000000 +0000 @@ -1,5 +1,5 @@  - + Debug @@ -20,12 +20,14 @@ DynamicLibrary true MultiByte + v120 DynamicLibrary false true MultiByte + v120 diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/src/CircBuffer.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/src/CircBuffer.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/src/CircBuffer.cpp 2012-12-01 08:34:33.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/src/CircBuffer.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/src/CircBuffer.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/src/CircBuffer.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/src/CircBuffer.h 2012-12-01 08:34:33.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/src/CircBuffer.h 2014-07-18 06:05:30.000000000 +0000 @@ -16,7 +16,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/src/client.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/src/client.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/src/client.cpp 2014-03-04 10:06:13.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/src/client.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/src/client.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/src/client.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/src/client.h 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/src/client.h 2014-07-18 06:05:30.000000000 +0000 @@ -15,7 +15,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/src/GUIDialogTranscode.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/src/GUIDialogTranscode.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/src/GUIDialogTranscode.cpp 2014-03-04 10:06:13.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/src/GUIDialogTranscode.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/src/GUIDialogTranscode.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/src/GUIDialogTranscode.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/src/GUIDialogTranscode.h 2013-02-16 21:46:32.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/src/GUIDialogTranscode.h 2014-07-18 06:05:30.000000000 +0000 @@ -16,7 +16,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/src/HTSPConnection.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/src/HTSPConnection.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/src/HTSPConnection.cpp 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/src/HTSPConnection.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/src/HTSPConnection.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/src/HTSPConnection.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/src/HTSPConnection.h 2013-02-16 21:46:32.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/src/HTSPConnection.h 2014-07-18 06:05:30.000000000 +0000 @@ -16,7 +16,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/src/HTSPData.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/src/HTSPData.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/src/HTSPData.cpp 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/src/HTSPData.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/src/HTSPData.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/src/HTSPData.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/src/HTSPData.h 2014-03-04 10:06:13.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/src/HTSPData.h 2014-07-18 06:05:30.000000000 +0000 @@ -16,7 +16,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/src/HTSPDemux.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/src/HTSPDemux.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/src/HTSPDemux.cpp 2014-01-04 10:28:19.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/src/HTSPDemux.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/src/HTSPDemux.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/src/HTSPDemux.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/src/HTSPDemux.h 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/src/HTSPDemux.h 2014-07-18 06:05:30.000000000 +0000 @@ -16,7 +16,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/src/HTSPTypes.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/src/HTSPTypes.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.hts/src/HTSPTypes.h 2014-01-04 10:28:19.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.hts/src/HTSPTypes.h 2014-07-18 06:05:30.000000000 +0000 @@ -16,7 +16,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/addon.xml.in xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/addon.xml.in --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/addon.xml.in 2014-01-28 20:43:50.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/addon.xml.in 2014-07-18 06:05:30.000000000 +0000 @@ -1,12 +1,12 @@ - + + XBMC ПВР добавка за поддръжка на IPTV. https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + Complement d'XBMC PVR amb suport per IPTV https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + XBMC PVR addon for IPTV support. https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + XBMC PVR addon til IPTV support. https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + XBMC PVR Addon für IPTV Unterstützung. https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + Πρόσθετο του XBMC για PVR, με υποστήριξη IPTV. Για λεπτομέρειες επισκεφθείτε το: https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home XBMC PVR addon for IPTV support. https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + XBMC PVR addon for IPTV support. https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + XBMC PVR addon for IPTV support. https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + XBMC PVR addon para soporte IPTV. https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + XBMC PVR addon para soporte IPTV. https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + Extension PVR pour le support IPTV. https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + Addiciel de numériscope XBMC pour la prise en charge de IPTV https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + Complemento PVR do XBMC de soporte á IPTV. https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + תוסף XBMC PVR תמיכה עבור IPTV. https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + XBMC PVR dodatak za IPTV podršku. https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + XBMC PVR kiegészítő IPTV támogatással. https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + Pengaya PVR XBMC untuk dukungan IPTV. https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + XBMC upptökuviðbót fyrir stuðning við IPTV. https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + Addon PVR XBMC per il supporto IPTV. https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + IPTV をサポートする XBMC PVR アドオンです。 https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + IPTV 지원을 위한 XBMC PVR 애드온. https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + XBMC PVR priedas IPTV palaikymui. https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + XBMC PVR pielikums IPTV atbalstam. https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + Pasang-tambah PVR XBMC untuk sokongan IPTV https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + XBMC PVR add-on voor IPTV ondersteuning. https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + Klient XBMC wspierający IPTV. Więcej informacji o wtyczce: https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + Addon PVR do XBMC para suporte IPTV. https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + Addon de PVR no XBMC com suporte a IPTV. https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + Modulul XBMC PVR pentru suport IPTV. https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home XBMC PVR аддон для поддержки IPTV. https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + XBMC PVR doplnok umožňujúci IPTV podporu. https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + XBMC-jev dodatek PVR s podporo za IPTV. https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + PVR-tillägg med IPTV-support för XBMC. https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + IPTV desteği için XBMC PVR eklentisi. https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + XBMC PVR 插件需要 IPTV 支持。https://github.com/afedchin/xbmc-addon-iptvsimple/wiki/IPTV-Simple-Home + IPTV обикновен ПВР клиент. Поддържа m3u плейлисти, стрийминг на телевизия за мултикаст/уникаст източници, слушане на радио канали и електронен програмен справочник. + Client senzill per a IPTV PVR amb support per a llistes de reproducció m3u, streaming de TV en viu multicast/unicast, reproducció de canals de ràdio i EPG. + IPTV Simple PVR Client podporuje m3u playlisty, streemování TV pro multicast/unicast zdroje, poslouchání Radia a EPG. + IPTV Simpel PVR klient understøttelse M3U-afspilningslister, streaming af direkte tv til multicast/unicast kilder, lytte til radio kanaler og EPG. + IPTV Simple PVR Client unterstützt m3u Wiedergabelisten, Streaming von Live TV für Multicast/Unicast Quellen, Radiosender und EPG. + Απλός PVR Πελάτης του IPTV, με υποστήριξη λιστών αναπαραγωγής m3u, αναπαραγωγή ροών Live TV για πηγές πολλαπλής/μοναδικής διανομής, ακρόαση ραδιοφωνικών καναλιών και EPG. IPTV Simple PVR Client support m3u playlists, streaming of Live TV for multicast/unicast sources, listening to Radio channels and EPG. + IPTV Simple PVR Client support m3u playlists, streaming of Live TV for multicast/unicast sources, listening to Radio channels and EPG. + IPTV Simple PVR Client support m3u playlists, streaming of Live TV for multicast/unicast sources, listening to Radio channels and EPG. + El cliente PVR IPTV Simple soporta listas M3U, reproducción de TV en Vivo para origenes multicast/unicast, escucha de canales de radio y EPG + El cliente PVR IPTV Simple soporta listas M3U, reproducción de TV en Vivo para origenes multicast/unicast, escucha de canales de radio y GEP + Le client PVR IPTV Simple supporte les listes de lecture m3u, la diffusion en continu de la TV en direct en mono ou multi-diffusion, l'écoute des chaînes radio et l'EPG. + Client de numériscope simple pour IPTV, prenant en charge les listes de lecture m3u, la lecture en transit des télés en direct pour les sources de multidiffusion et de monodiffusion, l'écoute de chaînes radio, et le GÉP. + O cliente PVR simple de IPTV soporta listaxes m3u, transmisión de TV en directo para fontes multicast/unicast, escoita de canles de Radio e Guía. + IPTV Simple PVR Client support m3u playlists, streaming of Live TV for multicast/unicast sources, listening to Radio channels and EPG. + IPTV Simple PVR klijent podržava m3u popise izvođenja, streamanje TV programa s više ili jednog izvora, slušanje radio programa i elektronski programski vodič (EPG). + Az IPTV PVR kiegészítő támogatja m3u listák lejátszását, élő TV adások hálózati streamelését, rádióadók hallgatását EPG adatok kezelésével. + IPTV, klien PTV sederhana yang mendukung playlist m3u, pengaliran siaran TV langsung untuk sumber multicast/unicast, mendengarkan radio dan EPG. + Einfaldur upptökubiðlari fyrir IPTV sem styður m3u spilunarlista, streymingu af beinum atburðum frá multicast/unicast þjónustum, hlustun á útvarpsrásir og rafræna dagskrárvísa + Il client IPTV Simple PVR supporta playlist m3u, streaming della Live TV per sorgenti multicast/unicast e ascoltare canali Radio ed EPG. + IPTV シンプル PVR クライアントは、m3u プレイリスト、マルチキャスト/ユニキャストのライブ TV ストリーミング、ラジオチャンネルや EPG の視聴をサポートしています。 + IPTV Simple PVR 클라이언트는 m3u 재생목록, 스트리밍, 멀티캐스트/유니캐스트 소스의 TV 시청, 라디오 채널과 EPG를 통한 청취를 지원합니다. + IPTV Simple PVR klientas palaiko m3u grojaraščius, TV transliacijas iš multicast/unicast šaltinių, radijo stočių transliacijas ir EPG. + IPTV vienkāršais PVR klients atbalsta m3u spēļsarakstus, tiešraides TV straumēšanu multiraides/uniraides avotiem, radio kanālu klausīšanos un EPG. + IPTV Simple PVR Client menyokong senarai audio visual m3u, penstriman Live TV untuk + IPTV simpele PVR cliënt ondersteunt m3u afspeellijsten, streaming van live TV voor multicast/unicast bronnen, luisteren naar radiozenders en EPG. + Klient IPTV Simple wspiera listy odtwarzania m3u, strumieniowanie kanałów radiowych i telewizyjnych ze źródeł pojedynczych i grupowych oraz funkcje przewodnika TV. + Cliente PVR IPTV com suporte para listas de reprodução m3u, transmissões de TV ao Vivo de fontes multidifusão/unidifusão, ouvir estações de Rádio e EPG. + O cliente de PVR IPTV Simple possuí suporte para listas m3u, streaming de tv ao vivo de fontes multicast/unicast, ouvir rádios e ainda possuí suporte a guia de programação eletrônica - EPG. + PVR Client IPTV suporta liste m3u, redare TV în direct pentru surse de multicast/unicast, ascultare canale radio si EPG. Интерфейс для IPTV. Поддерживает просмотр потокового ТВ для юникаст/мультикаст источников, прослушивание радиоканалов и работу с электронным телегидом. + Jednoduchý IPTV PVR klient podporuje mp3 zoznamy súborov, streamovanie živého televízneho vysielania ako multicast/unicast zdroje, počúvanie rozhlasových kanálov a EPG. + IPTV Simple odjemalec PVR podpira sezname m3u, pretakanja TV v živo za vire multicast/unicast, poslušenje radijskih postaj in EPG. + IPTV Simple PVR Client stöder m3u-spellistor, strömmande Live-TV för multicast/unicast-källor, radiolyssning och EPG. + IPTV Basit PVR İstemcisi m3u çalma listeleri, multicast/unicast kaynaklar için Canlı TV akışı, radyo kanallarını dinleme ve EPG destekler. + IPTV 简单 PVR 前端支持 m3u 播放列表、多播/单播源直播电视、收听电台和电子节目单。 + Тази програма е нестабилна! Авторите не носят отговорност за неуспешно възпроизвеждане, некоректно време на ЕПС, пропиляното време и други нежелани ефекти. + Aquest programari és inestable! Els autors no es fan responsables de reproduccions fallides, horaris incorrectes a l'EPG, hores perdudes o qualsevol altre efecte no desitjat. + Tento software není stabilní. Autoři nejsou žádným způsobem zodpovědní za selhání při nahrávání, neplatné časovače, ztracený čas, či jakékoliv jiné nežádoucí události... + Dette er ustabil software! Ophavsmændene er på ingen måde ansvarlig for mislykkede afspilninger, forkerte EPG tider, spildte timer, eller andre bivirkninger. + Dies ist instabile Software! Die Autoren sind in keiner Weise verantwortlich für fehlgeschlagene Wiedergaben, falsche EPG Zeiten, verschwendete Zeit oder unerwünschte Effekte jeglicher Art. + Ασταθές πρόγραμμα! Οι δημιουργοί δεν είναι σε καμία περίπτωση υπεύθυνοι για αποτυχημένες εγγραφές, λανθασμένους χρονοδιακόπτες, χαμένες ώρες, ή κάθε είδους ανεπιθύμητα αποτελέσματα. This is unstable software! The authors are in no way responsible for failed playings, incorrect EPG times, wasted hours, or any other undesirable effects. + This is unstable software! The authors are in no way responsible for failed playings, incorrect EPG times, wasted hours, or any other undesirable effects. + This is unstable software! The authors are in no way responsible for failed playings, incorrect EPG times, wasted hours, or any other undesirable effects. + Este es un software inestable. El autor no se hace responsable por reproducciones fallidas, datos de EPG incorrectos, horas perdidas o cualquier otro efecto indeseable. + Este es un software inestable. El autor no se hace responsable por reproducciones fallidas, datos de GEP incorrectos, horas perdidas o cualquier otro efecto indeseable. + Ce logiciel est en cours de développement. Les auteurs ne sont en aucun cas responsables de l'échec des lectures, horaires EPG, temps perdu et autres effets indésirables. + Ce logiciel est instable! Les auteurs ne sont aucunement responsables des lectures défaillantes, d'horaires erronés du GÉP, des heures perdues ou tout autre effet indésirable. + Este software non é estábel! Os autores non se fan responsábeis dos erros na reproducción, horarios incorrectos na Guía, horas vencidas, e otros efectos non desexados. + זוהי תוכנה לא יציבה! המחברים אינם אחראים בשום דרך במקרה של הפעלות כושלות, זמנים לא נכונים במדריך, שעות מבוזבזות או כל תופעה לא רצויה אחרת. + Ovo je nestabilan softver! Autori nisu ni na koji način odgovorani za neuspjelo snimanje, netočna zakazana snimanja, izgubjene sate, ili bilo koje druge neželjene učinke... + Ez nem stabil szoftver! A készítők nem vállalnak felelősséget, a hibás felvételért, rossz időzítésért, elvesztegetett időért... + Perangkat lunak ini belum stabil. Penulis tidak akan bertanggung-jawa untuk kegagalan penyetelan, waktu EPG yang tidak tepat, Waktu yang terbuang dan efek yang tidak diinginkan lainnya. + Þetta er óstöðugur hugbúnaður! Höfundarnir eru á engan hátt ábyrgir fyrir misheppnuðum spilunum, röngum upptökutímum, klukkustundum sem að fóru í súginn eða nokkrum öðrum óæskilegum áhrifum. + Questo software è instabile! Gli autori non sono in alcun modo responsabili per registrazioni fallite, timers incorretti, ore perse, o qualsiasi altro effetto indesiderato. + これは不安定なソフトウェアです!本プログラムの作者は、再生の失敗、EPG 時刻のずれ、無駄にした時間、その他あらゆる好ましくない結果について責任を負わないものとします。 + 이 소프트웨어는 불안정합니다! 재생 실패, 정확하지 않은 EPG 시각, 시간 낭비, 의도하지 않은 현상에 대해 제작자는 어떤 책임도 지지 않습니다. + Tai yra nestabili programinė įranga! Autoriai nėra atsakingi dėl nepavykusio atkūrimo, klaidingo EPG laiko, prarastų valandų ar kito nepageidaujamo poveikio. + Šī ir nestabila programmatūra! Autori nav atbildīgi par neizdevušos atskaņošanu, nepareizu EPG laiku, iztērētām stundām vai jebkādiem citiem nevēlamiem efektiem. + Perisian ini tidak stabi! Pengarang tidak bertanggungjawab atas kegagalan memainkan, pemasa EPG yang tidak betul, pembaziran masa atau sebarang kesan tidak diingini. + Deze software is niet 100% stabiel! De auteurs zijn op geen enkele wijze aansprakelijk voor mislukte opnames, incorrecte EPG tijden, verspilde uren, of enig ander ongewild neveneffect.. + Oprogramowanie nadal jest w fazie rozwoju i jest niestabilne! Autorzy w żaden sposób nie są odpowiedzialni za nieudane nagrania, błędy w planie nagrań, zmarnowany czas ani jakiekolwiek inne niepożądane efekty. + Este software é instável! Os autores não se responsabilizam por falhas nas reproduções, horários do EPG incorrectos, ou outro qualquer efeito não desejado. + Este é um software instável! OS autories não são responsáveis por falhas nas reproduções, horários incorretos no EPG, horas perdidas, ou quaisquer outros efeitos indesejáveis. + Acest software este instabil! Autorii nu sunt responsabili în nici un fel pentru înregistrări eșuate, cronometrări EPG incorecte, ore pierdute sau orice alte efecte nedorite. Это нестабильная программа! Авторы не несут ответственности за неудачные воспроизведение, неверные время EPG, потраченное время и прочие нежелательные эффекты. + Toto je nestabilný softvér! Autori nie sú v žiadnom prípade zodpovední za chybné prehrávanie, nesprávne časy EPG, premrhané hodiny alebo akékoľvek iné nežiadúce účinky. + To je nestabilna programska oprema! Avtorji niso odgovorni za neuspela predvajanja, nepravilne čase v EPG, zapravljen čas in katerikoli drug neželen učinek. + Denna mjukvara är ostabil! Författarna kan inte på något sätt hållas ansvariga för felaktiga uppspelningar, EPG-tider, bortslösade timmar eller andra oönskade effekter. + Bu kararsız bir yazılımdır! Yazanlar oynatma hatası, yanlış EPG zamanları, harcanmış saatler ya da diğer etkilerden sorumlu değiller. + 这是不稳定版的软件!作者不对录像失败、错误定时造成时间浪费或其它不良影响负责。 @OS@ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Afrikaans/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Afrikaans/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Afrikaans/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Afrikaans/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Afrikaans (http://www.transifex.com/projects/p/xbmc-main/language/af/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: af\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Ligging" + +msgctxt "#30010" +msgid "General" +msgstr "Algemeen" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Albanian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Albanian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Albanian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Albanian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Albanian (http://www.transifex.com/projects/p/xbmc-main/language/sq/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sq\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Lokalizimi" + +msgctxt "#30010" +msgid "General" +msgstr "Të përgjithshëm" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Amharic/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Amharic/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Amharic/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Amharic/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Amharic (http://www.transifex.com/projects/p/xbmc-main/language/am/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: am\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "አካባቢ " + +msgctxt "#30010" +msgid "General" +msgstr "ባጠቃላይ" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Arabic/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Arabic/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Arabic/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Arabic/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Arabic (http://www.transifex.com/projects/p/xbmc-main/language/ar/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ar\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" + +msgctxt "#30000" +msgid "Location" +msgstr "الموقع" + +msgctxt "#30010" +msgid "General" +msgstr "عام" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Armenian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Armenian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Armenian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Armenian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Armenian (http://www.transifex.com/projects/p/xbmc-main/language/hy/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hy\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Տեղը" + +msgctxt "#30010" +msgid "General" +msgstr "Գլխավոր" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Basque/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Basque/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Basque/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Basque/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Basque (http://www.transifex.com/projects/p/xbmc-main/language/eu/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: eu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Kokalekua" + +msgctxt "#30010" +msgid "General" +msgstr "Orokorra" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Belarusian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Belarusian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Belarusian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Belarusian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Belarusian (http://www.transifex.com/projects/p/xbmc-main/language/be/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: be\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Location" + +msgctxt "#30010" +msgid "General" +msgstr "General" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Bosnian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Bosnian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Bosnian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Bosnian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,21 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Bosnian (http://www.transifex.com/projects/p/xbmc-main/language/bs/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: bs\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +msgctxt "#30010" +msgid "General" +msgstr "Opšte" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Bulgarian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Bulgarian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Bulgarian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Bulgarian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,85 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Bulgarian (http://www.transifex.com/projects/p/xbmc-main/language/bg/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: bg\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Локация" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "Локален път (включва локалната мрежа)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "Отдалечен път (интернет адрес)" + +msgctxt "#30010" +msgid "General" +msgstr "Основни" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "Път до M3U плейлист" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "Връзка до M3U плейлист" + +msgctxt "#30013" +msgid "Numbering channels starts at" +msgstr "Започни номерирането на каналите от" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "ЕПС настройки" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "Път до XMLTV" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "Връзка до XMLTV" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "Приложи времевото отместване за всички канали" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "ЕПС времево отместване (часове)" + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "Кеширай m3u в локално хранилище" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "Кеширай XMLTV в локално хранилище" + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "Лога на каналите" + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "Папка с логата на каналите" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "Връзка към базата с логата на каналите" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Burmese/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Burmese/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Burmese/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Burmese/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Burmese (http://www.transifex.com/projects/p/xbmc-main/language/my/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: my\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30000" +msgid "Location" +msgstr "တည်နေရာ" + +msgctxt "#30010" +msgid "General" +msgstr "ယေဘုယျ" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Catalan/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Catalan/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Catalan/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Catalan/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,85 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Catalan (http://www.transifex.com/projects/p/xbmc-main/language/ca/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ca\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Ubicació" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "Camí local (inclou xarxa local)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "Camí remot (Adreça d'Internet)" + +msgctxt "#30010" +msgid "General" +msgstr "General" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "Camí de llista de reproducció M3U" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "URL de llista de reproducció M3U" + +msgctxt "#30013" +msgid "Numbering channels starts at" +msgstr "La numeració de canals comença al" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "Configuració de l'EPG" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "Camí de XMLTV" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "URL de XMLTV" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "Aplicar Time Shift a tots els canals" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "Time Shift de l'EPG (en hores)" + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "Fer servir el disc local com a memòria cau per a m3u" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "Fer servir el disc local com a memòria cau per a XMLTV" + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "Logos dels canals" + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "Carpeta de logos de canals" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "URL base per a logos de canals" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Chinese (Simple)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Chinese (Simple)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Chinese (Simple)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Chinese (Simple)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,85 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Chinese (Simple) (http://www.transifex.com/projects/p/xbmc-main/language/zh/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30000" +msgid "Location" +msgstr "位置" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "本地路径(包含局域网)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "远程路径(互联网地址)" + +msgctxt "#30010" +msgid "General" +msgstr "常规" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "M3U 播放列表路径" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "M3U 播放列表 URL" + +msgctxt "#30013" +msgid "Numbering channels starts at" +msgstr "频道编号起始于" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "电子节目单设置" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "XMLTV 路径" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "XMLTV URL" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "应用时光平移到所有频道" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "电子节目单时光平移(小时)" + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "缓存 m3u 到本地储存" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "缓存 XMLTV 到本地储存" + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "频道图标" + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "频道图标文件夹" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "频道图标基础 URL" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Chinese (Traditional)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Chinese (Traditional)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Chinese (Traditional)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Chinese (Traditional)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Chinese (Traditional) (http://www.transifex.com/projects/p/xbmc-main/language/zh_TW/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_TW\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30000" +msgid "Location" +msgstr "位置" + +msgctxt "#30010" +msgid "General" +msgstr "一般設定" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Croatian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Croatian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Croatian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Croatian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,85 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Croatian (http://www.transifex.com/projects/p/xbmc-main/language/hr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hr\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Lokacija" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "Lokalna putanja (uključuje lokalnu mrežu)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "Udaljena putanja (Internet adresa)" + +msgctxt "#30010" +msgid "General" +msgstr "Općenito" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "M3U putanja popisa izvođenja" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "M3U URL popisa izvođenja" + +msgctxt "#30013" +msgid "Numbering channels starts at" +msgstr "Brojanje programa počinje kod" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "EPG postavke" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "XMLTV putanja" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "XMLTV URL" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "Primjeni premotavanje na sve programe" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "EPG vremensko premotavanje (sati)" + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "M3U predmemorija na lokalnoj pohrani" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "XMLTV predmemorija na lokalnoj pohrani" + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "Logotipovi programa" + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "Mapa logotipova programa" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "Osnovni URL logotipova programa" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Czech/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Czech/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Czech/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Czech/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,85 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Czech (http://www.transifex.com/projects/p/xbmc-main/language/cs/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: cs\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Umístění" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "Místní cesta (včetně LAN)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "Vzdálená cesta (internetová adresa)" + +msgctxt "#30010" +msgid "General" +msgstr "Obecné" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "Cesta k M3U playlistu" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "URL pro M3U playlist" + +msgctxt "#30013" +msgid "Numbering channels starts at" +msgstr "Číslování programů začíná na" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "Nastavení EPG" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "Cesta k XMLTV" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "XMLTV URL" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "Použij Time Shift na všechny programy" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "EPG Time Shift (hodiny)" + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "Vytvoř cache pro m3u na místním disku." + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "Vytvoř cache pro XMLTV na místním disku." + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "Loga programů" + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "Složka pro loga programů" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "URL pro přístup k logům programů" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Danish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Danish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Danish/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Danish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,85 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Danish (http://www.transifex.com/projects/p/xbmc-main/language/da/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: da\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Lokalitet" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "Lokale sti (inkluderer Lokalt Network)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "Fjern Sti (internetadresse)" + +msgctxt "#30010" +msgid "General" +msgstr "Generelt" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "M3U-afspilningsliste Sti" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "M3U-afspilningsliste URL" + +msgctxt "#30013" +msgid "Numbering channels starts at" +msgstr "Nummerering kanaler starter ved" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "EPG-indstillinger" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "XMLTV Sti" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "XMLTV URL" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "Anvend Time Shift Til Alle Kanaler" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "EPG Tidsforskydning (timer)" + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "Cache m3u ved lokal lagring" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "Cache XMLTV ved lokal lagring" + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "Kanals Logoer" + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "Kanals Logos Mappe" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "Kanals Logos Base URL" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Dutch/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Dutch/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Dutch/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Dutch/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,85 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Dutch (http://www.transifex.com/projects/p/xbmc-main/language/nl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Locatie" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "Lokale locatie (inclusief lokaal netwerk)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "Lokatie op afstand (Internet adres)" + +msgctxt "#30010" +msgid "General" +msgstr "Algemeen" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "M3U afspeellijstlocatie" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "M3U afspeellijst URL" + +msgctxt "#30013" +msgid "Numbering channels starts at" +msgstr "Nummeren kanalen start op" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "EPG instellingen" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "XMLTV locatie" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "XMLTV URL" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "Voer tijdsprong toe aan alle kanalen" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "EPG tijdsprong (uren)" + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "Buffer m3u op lokale opslag" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "buffer XMLTV op lokale opslag" + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "Kanalen logo`s" + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "Kanalen logo`s map" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "Kanalen logo`s basis URL" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/English/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/English/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/English/strings.po 2014-01-28 20:43:50.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/English/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -1,16 +1,15 @@ # XBMC Media Center language file -# Addon Name: PVR IP-TV Simple Client +# Addon Name: PVR IPTV Simple Client # Addon id: pvr.iptvsimple -# Addon version: 0.1.0 # Addon Provider: nightik msgid "" msgstr "" -"Project-Id-Version: XBMC Main Translation Project (Frodo)\n" +"Project-Id-Version: XBMC Main\n" "Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: XBMC Translation Team\n" -"Language-Team: English (http://www.transifex.com/projects/p/XBMC-Main-Frodo/language/en/)\n" +"Language-Team: English (http://www.transifex.com/projects/p/xbmc-main/language/en/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -31,6 +30,8 @@ msgid "Remote Path (Internet address)" msgstr "" +#empty strings from id 30003 to 30009 + msgctxt "#30010" msgid "General" msgstr "" @@ -47,6 +48,8 @@ msgid "Numbering channels starts at" msgstr "" +#empty strings from id 30014 to 30019 + msgctxt "#30020" msgid "EPG Settings" msgstr "" @@ -75,6 +78,8 @@ msgid "Cache XMLTV at local storage" msgstr "" +#empty strings from id 30027 to 30029 + msgctxt "#30030" msgid "Channels Logos" msgstr "" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/English (Australia)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/English (Australia)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/English (Australia)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/English (Australia)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: English (Australia) (http://www.transifex.com/projects/p/xbmc-main/language/en_AU/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: en_AU\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Location" + +msgctxt "#30010" +msgid "General" +msgstr "General" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/English (New Zealand)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/English (New Zealand)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/English (New Zealand)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/English (New Zealand)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,85 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: English (New Zealand) (http://www.transifex.com/projects/p/xbmc-main/language/en_NZ/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: en_NZ\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Location" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "Local Path (include Local Network)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "Remote Path (Internet address)" + +msgctxt "#30010" +msgid "General" +msgstr "General" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "M3U Play List Path" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "M3U Play List URL" + +msgctxt "#30013" +msgid "Numbering channels starts at" +msgstr "Numbering channels starts at" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "EPG Settings" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "XMLTV Path" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "XMLTV URL" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "Apply Time Shift To All Channels" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "EPG Time Shift (hours)" + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "Cache m3u at local storage" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "Cache XMLTV at local storage" + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "Channels Logos" + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "Channels Logos Folder" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "Channels Logos Base URL" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/English (US)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/English (US)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/English (US)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/English (US)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,85 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: English (US) (http://www.transifex.com/projects/p/xbmc-main/language/en_US/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: en_US\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Location" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "Local Path (include Local Network)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "Remote Path (Internet address)" + +msgctxt "#30010" +msgid "General" +msgstr "General" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "M3U Playlist Path" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "M3U Playlist URL" + +msgctxt "#30013" +msgid "Numbering channels starts at" +msgstr "Numbering channels starts at" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "EPG Settings" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "XMLTV Path" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "XMLTV URL" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "Apply Time Shift To All Channels" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "EPG Time Shift (hours)" + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "Cache m3u at local storage" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "Cache XMLTV at local storage" + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "Channels Logos" + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "Channels Logos Folder" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "Channels Logos Base URL" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Esperanto/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Esperanto/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Esperanto/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Esperanto/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,21 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Esperanto (http://www.transifex.com/projects/p/xbmc-main/language/eo/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: eo\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30010" +msgid "General" +msgstr "Generalo" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Estonian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Estonian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Estonian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Estonian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Estonian (http://www.transifex.com/projects/p/xbmc-main/language/et/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: et\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Asukoht" + +msgctxt "#30010" +msgid "General" +msgstr "Üldine" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Faroese/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Faroese/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Faroese/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Faroese/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Faroese (http://www.transifex.com/projects/p/xbmc-main/language/fo/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fo\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Stað" + +msgctxt "#30010" +msgid "General" +msgstr "Vanligt" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Filipino/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Filipino/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Filipino/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Filipino/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,21 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Filipino (http://www.transifex.com/projects/p/xbmc-main/language/fil/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fil\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Lokasyon" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Finnish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Finnish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Finnish/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Finnish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Finnish (http://www.transifex.com/projects/p/xbmc-main/language/fi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Sijainti" + +msgctxt "#30010" +msgid "General" +msgstr "Yleiset" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/French/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/French/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/French/strings.po 2013-10-31 06:59:44.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/French/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -1,17 +1,15 @@ # XBMC Media Center language file -# Addon Name: PVR IP-TV Simple Client +# Addon Name: PVR IPTV Simple Client # Addon id: pvr.iptvsimple -# Addon version: 0.1.2 # Addon Provider: nightik -# Translators: msgid "" msgstr "" -"Project-Id-Version: PVR-IPTV Simple\n" +"Project-Id-Version: XBMC Main\n" "Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2013-02-27 06:56+0000\n" -"Last-Translator: numa001 \n" -"Language-Team: English (http://www.transifex.com/projects/p/XBMC-Main-Frodo/language/en/)\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: French (http://www.transifex.com/projects/p/xbmc-main/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -19,8 +17,8 @@ "Plural-Forms: nplurals=2; plural=(n > 1);\n" msgctxt "#30000" -msgid "File Location" -msgstr "Emplacement du fichier" +msgid "Location" +msgstr "Emplacement" msgctxt "#30001" msgid "Local Path (include Local Network)" @@ -66,6 +64,14 @@ msgid "EPG Time Shift (hours)" msgstr "Décalage horaire de l'EPG (heures)" +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "Cacher le m3u sur le stockage local" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "Cacher le XMLTV sur le stockage local" + msgctxt "#30030" msgid "Channels Logos" msgstr "Logos des chaînes" @@ -73,3 +79,7 @@ msgctxt "#30031" msgid "Channels Logos Folder" msgstr "Répertoire des Logos de chaînes" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "URL de base des Logos de chaînes" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/French (Canada)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/French (Canada)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/French (Canada)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/French (Canada)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,85 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: French (Canada) (http://www.transifex.com/projects/p/xbmc-main/language/fr_CA/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr_CA\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Emplacement" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "Chemin local (inclure le réseau local)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "Chemin distant (adresse Internet)" + +msgctxt "#30010" +msgid "General" +msgstr "Général" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "Chemin de la liste de lecture m3u" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "URL de la liste de lecture m3u" + +msgctxt "#30013" +msgid "Numbering channels starts at" +msgstr "Les numéros de chaînes commencent à" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "Paramètres du GÉP" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "Chemin de XMLTV" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "URL de XMLTV" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "Appliquer le décalage temporel à toutes les chaînes" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "Décalage temporel du GÉP (heures)" + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "Cache m3u sur stockage local" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "Cache XMLTV sur stockage local" + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "Logos de chaînes" + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "Dossier des logos de chaînes" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "URL de base des logos de chaînes" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Galician/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Galician/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Galician/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Galician/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,85 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Galician (http://www.transifex.com/projects/p/xbmc-main/language/gl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: gl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Localización" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "Camiño Local (inclúe Rede Local)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "Camiño Remoto (Enderezo de Internet)" + +msgctxt "#30010" +msgid "General" +msgstr "Xeral" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "Camiño da Listaxe M3U" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "URL da Listaxe M3U" + +msgctxt "#30013" +msgid "Numbering channels starts at" +msgstr "A numeración das canles comenza no" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "Configuración da Guía" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "Camiño do XMLTV" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "URL do XMLTV" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "Aplicar Desprazamento no Tempo a Todas as Canles" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "Desprazamento no Tempo da Guía (horas)" + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "Gardar a caché do m3u localmente" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "Gardar a caché do XMLTV localmente" + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "Logos das Canles" + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "Cartafol dos Logos das Canles" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "URL base dos Logos das Canles" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Georgian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Georgian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Georgian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Georgian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,21 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Georgian (http://www.transifex.com/projects/p/xbmc-main/language/ka/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ka\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30010" +msgid "General" +msgstr "მთავარი" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/German/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/German/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/German/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/German/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,85 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: German (http://www.transifex.com/projects/p/xbmc-main/language/de/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Ort" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "Lokaler Pfad (einschließlich lokales Netzwerk)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "Remote-Pfad (Internetadresse)" + +msgctxt "#30010" +msgid "General" +msgstr "Allgemein" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "M3U Wiedergabelistenpfad" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "M3U Wiedergabelisten-URL" + +msgctxt "#30013" +msgid "Numbering channels starts at" +msgstr "Kanalnummerierung beginnt bei" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "EPG-Einstellungen" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "XMLTV-Pfad" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "XMLTV URL" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "Zeitversetzung für alle Kanäle übernehmen" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "EPG Zeitversetzung (Stunden)" + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "M3U auf lokalen Speicher cachen" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "XMLTV auf lokalen Speicher cachen" + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "Senderlogos" + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "Senderlogoordner" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "Basis-URL der Senderlogos" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Greek/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Greek/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Greek/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Greek/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,85 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Greek (http://www.transifex.com/projects/p/xbmc-main/language/el/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: el\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Τοποθεσία" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "Τοπική Διαδρομή (περιλαμβάνεται το Τοπικό Δίκτυο)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "Απομακρυσμένη Διαδρομή (διαδίκτυο)" + +msgctxt "#30010" +msgid "General" +msgstr "Γενικά" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "Διαδρομή Λιστών Αναπ/γής M3U" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "URL Λιστών Αναπ/γής M3U" + +msgctxt "#30013" +msgid "Numbering channels starts at" +msgstr "Η αρίθμηση των καναλιών αρχίζει από το" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "Ρυθμίσεις EPG" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "Διαδρομή XMLTV" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "URL XMLTV" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "Εφαρμογή TimeShift Σε Όλα Τα Κανάλια" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "TimeShift του EPG (ώρες)" + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "Προσωρινή αποθήκευση αρχείων M3U τοπικά" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "Προσωρινή αποθήκευση αρχείων XMLTV τοπικά" + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "Λογότυπα Καναλιών" + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "Φάκελος Λογότυπων Καναλιών" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "Βασική URL Λογότυπων Καναλιών" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Hebrew/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Hebrew/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Hebrew/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Hebrew/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,85 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Hebrew (http://www.transifex.com/projects/p/xbmc-main/language/he/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: he\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "מיקום" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "נתיב מקומי (כלול רשת מקומית)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "הסרת נתיב (כתובת אינטרנט)" + +msgctxt "#30010" +msgid "General" +msgstr "כללי" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "נתיב רשימת ניגון M3U" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "כתובת URL רשימת ניגון M3U" + +msgctxt "#30013" +msgid "Numbering channels starts at" +msgstr "מספור ערוצים מתחיל ב" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "הגדרות לוח שידורים" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "נתיב XMLTV" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "כתובת URL XMLTV" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "החל היסט זמן על כל הערוצים" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "תזמון לוח שידורים (שעות)" + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "מטמון M3U בחסון מקומי" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "מטמון XMLTV באחסון מקומי" + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "סמלי ערוצים" + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "תיקיית סמלי ערוצים" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "נתיב בסיסי של סמלי ערוצים" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Hindi (Devanagiri)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Hindi (Devanagiri)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Hindi (Devanagiri)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Hindi (Devanagiri)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,21 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Hindi (Devanagiri) (http://www.transifex.com/projects/p/xbmc-main/language/hi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30010" +msgid "General" +msgstr "सामान्य" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Hungarian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Hungarian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Hungarian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Hungarian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,85 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Hungarian (http://www.transifex.com/projects/p/xbmc-main/language/hu/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Hely" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "Helyi elérési út (beleértve a helyi hálózatokat)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "Távoli elérési út (Internet cím)" + +msgctxt "#30010" +msgid "General" +msgstr "Általános" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "M3U lejátszási lista elérési útvonal" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "M3U lejátszási lista URL" + +msgctxt "#30013" +msgid "Numbering channels starts at" +msgstr "A csatornaszámozás innen kezdődik" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "EPG beállítások" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "XMLTV elérési út" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "XMLTV URL" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "Időeltolás alkalmazása minden csatornánál" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "EPG időeltolás (óra)" + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "M3U gyorsítótárazása a helyi tárolón" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "XMLTV gyorsítótárazása a helyi tárolón" + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "Csatorna ikonok" + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "Csatorna ikonok mappája" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "Csatorna ikonok alap URL" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Icelandic/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Icelandic/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Icelandic/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Icelandic/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,85 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Icelandic (http://www.transifex.com/projects/p/xbmc-main/language/is/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: is\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Staðsetning" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "Staðvær slóð (nærnet innifalið)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "Fjarlæg slóð (Internet netfang)" + +msgctxt "#30010" +msgid "General" +msgstr "Almennt" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "Slóð að M3U spilunarlista" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "Veffang á M3U spilunarlista" + +msgctxt "#30013" +msgid "Numbering channels starts at" +msgstr "Númeraðar stöðvar byrja á" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "Stillingar fyrir rafræna dagskrárvísa (EPG)" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "XMLTV Slóð" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "XMLTV Netfang" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "Setja tímahliðrun á allar rásir" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "Tímahliðrun rafrænna dagskrárvísa (klukkutímar)" + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "Setja m3u í staðvært flýtiminni" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "Setja XMLTV í staðvært flýtiminni" + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "Merki Rása" + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "Mappa fyrir Merki Rása" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "Netfang fyrir Merki Rása" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Indonesian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Indonesian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Indonesian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Indonesian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,85 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Indonesian (http://www.transifex.com/projects/p/xbmc-main/language/id/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: id\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Lokasi" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "Path lokal (Termasuk jaringan lokal)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "Path remote (Alamat Internet)" + +msgctxt "#30010" +msgid "General" +msgstr "Umum" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "Path playlist M3U" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "URL playlist M3U" + +msgctxt "#30013" +msgid "Numbering channels starts at" +msgstr "Penomoran kanal dimulai dari" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "Setelan EPG" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "Path XMLTV" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "URL XMLTV" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "Terapkan Timeshift untuk semua kanal" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "Timeshift EPG (jam)" + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "Cache m3u pada penyimpanan lokal" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "Cache XMLTV pada penyimpanan lokal" + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "Logo Kanal" + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "Folder Logo Kanal" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "Basis URL Logo Kanal" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Italian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Italian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Italian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Italian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,85 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Italian (http://www.transifex.com/projects/p/xbmc-main/language/it/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: it\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Posizione" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "Destinazione locale (rete locale inclusa)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "Destinazione remota ( indirizzo internet )" + +msgctxt "#30010" +msgid "General" +msgstr "Generale" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "Path della playlist M3U" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "URL playlist M3U" + +msgctxt "#30013" +msgid "Numbering channels starts at" +msgstr "Numerazione canali inizia a" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "Impostazioni EPG" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "Percorso XMLTV" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "URL XMLTV" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "Applica Time Shift a tutti i canali" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "Time Shift EPG (ore)" + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "Fai cache M3U nel disco locale" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "Fai cache XMLTV nel disco locale" + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "Loghi canali" + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "Cartella loghi canali" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "URL base loghi canali" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Japanese/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Japanese/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Japanese/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Japanese/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,85 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Japanese (http://www.transifex.com/projects/p/xbmc-main/language/ja/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ja\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30000" +msgid "Location" +msgstr "ロケーション" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "ローカルパス (ローカルネットワークを含む)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "リモートパス (インターネットアドレス)" + +msgctxt "#30010" +msgid "General" +msgstr "一般" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "M3U プレイリストのパス" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "M3U プレイリストの URL" + +msgctxt "#30013" +msgid "Numbering channels starts at" +msgstr "チャンネルの開始番号" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "EPG 設定" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "XMLTV パス" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "XMLTV URL" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "全チャンネルにタイムシフトを適用" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "EPG タイムシフト (時)" + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "m3u をローカルディスクにキャッシュ" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "XMLTV をローカルディスクにキャッシュ" + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "チャンネルのロゴ" + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "チャンネルロゴのフォルダー" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "チャンネルロゴのベースURL" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Korean/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Korean/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Korean/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Korean/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,81 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Korean (http://www.transifex.com/projects/p/xbmc-main/language/ko/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ko\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30000" +msgid "Location" +msgstr "위치" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "로컬 경로 (로컬 네트워크 포함)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "원격 경로 (인터넷 주소)" + +msgctxt "#30010" +msgid "General" +msgstr "일반" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "M3U 재생 목록 경로" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "M3U 재생 목록 URL" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "EPG 설정" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "XMLTV 경로" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "XMLTV URL" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "모든 채널에 타임 시프트 적용" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "EPG 타임 시프트 (시간)" + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "로컬 저장소에 m3u 캐시" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "로컬 저장소에 XMLTV 캐시" + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "채널 로고" + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "채널 로고 폴더" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "채널 로고 기본 URL" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Latvian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Latvian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Latvian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Latvian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,85 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Latvian (http://www.transifex.com/projects/p/xbmc-main/language/lv/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lv\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Lokācija" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "Lokālais ceļš (iekļaujot lokālo tīklu)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "Attālinātais ceļš (interneta adrese)" + +msgctxt "#30010" +msgid "General" +msgstr "Vispārīgi" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "M3U spēļsaraksta ceļš" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "M3U spēļsaraksta URL" + +msgctxt "#30013" +msgid "Numbering channels starts at" +msgstr "Kanālu numerācija sākas ar" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "EPG iestatījumi" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "XMLTV ceļš" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "XMLTV URL" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "Pielietot laika nobīdi visiem kanāliem" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "EPG laika nobīde (stundas)" + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "Kešot m3u lokālajā krātuvē" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "Kešot XMLTV lokālajā krātuvē" + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "Kanālu logotipi" + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "Kanālu logotipu mape" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "Kanālu logotipu bāzes URL" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Lithuanian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Lithuanian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Lithuanian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Lithuanian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,85 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Lithuanian (http://www.transifex.com/projects/p/xbmc-main/language/lt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lt\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Vieta" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "Vietinis kelias (įskaitant vietinį tinklą)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "Nuotolinis kelias (interneto adresas)" + +msgctxt "#30010" +msgid "General" +msgstr "Pagrindinis" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "M3U grojaraščio kelias" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "M3U grojaraščio adresas" + +msgctxt "#30013" +msgid "Numbering channels starts at" +msgstr "Kanalų numeracija prasideda nuo" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "EPG nustatymai" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "XMLTV kelias" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "XMLTV adresas" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "Pritaikyti laiko poslinkį visiems kanalams" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "EPG laiko poslinkis (valandomis)" + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "Laikinai saugoti m3u vietiniame diske" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "Laikinai saugoti XMLTV vietiniame diske" + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "Kanalų logotipai" + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "Kanalų logotipų aplankas" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "Kanalų logotipų adreso bazė" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Macedonian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Macedonian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Macedonian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Macedonian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Macedonian (http://www.transifex.com/projects/p/xbmc-main/language/mk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: mk\n" +"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Локација" + +msgctxt "#30010" +msgid "General" +msgstr "Општо" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Malay/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Malay/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Malay/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Malay/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Malay (http://www.transifex.com/projects/p/xbmc-main/language/ms/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ms\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Kedudukan" + +msgctxt "#30010" +msgid "General" +msgstr "Am" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Malayalam/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Malayalam/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Malayalam/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Malayalam/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,21 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Malayalam (http://www.transifex.com/projects/p/xbmc-main/language/ml/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ml\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30010" +msgid "General" +msgstr "പോതുവായത്" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Maltese/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Maltese/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Maltese/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Maltese/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,21 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Maltese (http://www.transifex.com/projects/p/xbmc-main/language/mt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: mt\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n==0 || ( n%100>1 && n%100<11) ? 1 : (n%100>10 && n%100<20 ) ? 2 : 3);\n" + +msgctxt "#30010" +msgid "General" +msgstr "Ġenerali" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Maori/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Maori/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Maori/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Maori/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Maori (http://www.transifex.com/projects/p/xbmc-main/language/mi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: mi\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Tauwāhi" + +msgctxt "#30010" +msgid "General" +msgstr "Āhuawhānui" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Norwegian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Norwegian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Norwegian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Norwegian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Norwegian (http://www.transifex.com/projects/p/xbmc-main/language/no/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: no\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Lokasjon" + +msgctxt "#30010" +msgid "General" +msgstr "Generelt" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Ossetic/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Ossetic/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Ossetic/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Ossetic/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,21 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Ossetic (http://www.transifex.com/projects/p/xbmc-main/language/os/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: os\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30010" +msgid "General" +msgstr "Сӕйраг" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Persian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Persian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Persian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Persian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,21 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Persian (http://www.transifex.com/projects/p/xbmc-main/language/fa/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fa\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30010" +msgid "General" +msgstr "عمومی" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Persian (Iran)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Persian (Iran)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Persian (Iran)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Persian (Iran)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,21 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Persian (Iran) (http://www.transifex.com/projects/p/xbmc-main/language/fa_IR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fa_IR\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30010" +msgid "General" +msgstr "عمومی" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Polish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Polish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Polish/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Polish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,85 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Polish (http://www.transifex.com/projects/p/xbmc-main/language/pl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pl\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Lokalizacja " + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "Ścieżka lokalna (obejmuje lokalną sieć)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "Ścieżka zdalna (adres internetowy)" + +msgctxt "#30010" +msgid "General" +msgstr "Ogólne " + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "Ścieżka listy odtwarzania m3u" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "Adres URL listy odtwarzania m3u" + +msgctxt "#30013" +msgid "Numbering channels starts at" +msgstr "Numeracja kanałów zaczyna się od" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "Ustawienia przewodnika TV" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "Ścieżka XMLTV " + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "Adres URL XMLTV" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "Zastosuj przesunięcie czasowe dla wszystkich kanałów " + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "Przesunięcie czasowe Przewodnika TV (godziny) " + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "Buforuj lokalnie m3u" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "Buforuj lokalnie XMLTV " + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "Logo kanałów " + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "Folder logo kanałów " + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "Bazowy adres URL logo kanałów " diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Portuguese/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Portuguese/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Portuguese/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Portuguese/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,85 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Portuguese (http://www.transifex.com/projects/p/xbmc-main/language/pt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Localização" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "Localização no Sistema (incluir Rede Local)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "Localização Remota (endereço da internet)" + +msgctxt "#30010" +msgid "General" +msgstr "Geral" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "Localização da Lista Reprodução M3U" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "Endereço da Lista Reprodução M3U" + +msgctxt "#30013" +msgid "Numbering channels starts at" +msgstr "Numeração dos canais começa em" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "Definições EPG" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "Localização XMLTV" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "Endereço XMLTV" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "Aplicar Deslocamento no Tempo a Todos os Canais" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "Deslocamento no Tempo do EPG (horas)" + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "Cache de m3u em armazenamento local" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "Cache de XMLTV em armazenamento local" + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "Logotipos de Canais" + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "Localização dos Logotipos de Canais" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "Endereço dos Logotipos de Canais" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Portuguese (Brazil)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Portuguese (Brazil)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Portuguese (Brazil)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Portuguese (Brazil)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,85 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/xbmc-main/language/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Local" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "Caminho Local (inclui Rede Local)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "Caminho Remoto (endereço internet)" + +msgctxt "#30010" +msgid "General" +msgstr "Geral" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "Caminho para lista de reprodução M3U" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "URL para lista de reprodução M3U" + +msgctxt "#30013" +msgid "Numbering channels starts at" +msgstr "Numeração dos canais inicia em" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "Ajustes EPG" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "Caminho XMLTV" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "URL XMLTV" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "Aplicar correção de horário para todos os canais" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "Alterar horário EPG (horas)" + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "Armazene cache m3u localmente" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "Armazene cache XMLTV localmente" + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "Logos dos Canais" + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "Pasta com os Logos dos Canais" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "URL Básica com os Logos do Canais" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Romanian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Romanian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Romanian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Romanian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Romanian (http://www.transifex.com/projects/p/xbmc-main/language/ro/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ro\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Locație" + +msgctxt "#30010" +msgid "General" +msgstr "General" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Romansh/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Romansh/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Romansh/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Romansh/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,21 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Romansh (http://www.transifex.com/projects/p/xbmc-main/language/rm/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: rm\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Liug" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Russian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Russian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Russian/strings.po 2013-10-31 06:59:44.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Russian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -1,16 +1,15 @@ # XBMC Media Center language file -# Addon Name: PVR IP-TV Simple Client +# Addon Name: PVR IPTV Simple Client # Addon id: pvr.iptvsimple -# Addon version: 0.1.0 # Addon Provider: nightik msgid "" msgstr "" -"Project-Id-Version: XBMC Main Translation Project (Frodo)\n" +"Project-Id-Version: XBMC Main\n" "Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: XBMC Translation Team\n" -"Language-Team: Russian (http://www.transifex.com/projects/p/XBMC-Main-Frodo/language/ru/)\n" +"Language-Team: Russian (http://www.transifex.com/projects/p/xbmc-main/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -18,8 +17,8 @@ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" msgctxt "#30000" -msgid "File Location" -msgstr "Расположение файла" +msgid "Location" +msgstr "Расположение" msgctxt "#30001" msgid "Local Path (include Local Network)" @@ -65,6 +64,14 @@ msgid "EPG Time Shift (hours)" msgstr "Сдвиг по времени для EPG (часов)" +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "Кэшировать m3u в локальное хранилище" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "Кэшировать XMLTV в локальное хранилище" + msgctxt "#30030" msgid "Channels Logos" msgstr "Логотипы каналов" @@ -72,3 +79,7 @@ msgctxt "#30031" msgid "Channels Logos Folder" msgstr "Папка с логотипами каналов" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "Основной URL для логитипов каналов" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Serbian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Serbian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Serbian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Serbian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Serbian (http://www.transifex.com/projects/p/xbmc-main/language/sr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Lokacija" + +msgctxt "#30010" +msgid "General" +msgstr "Opšte" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Serbian (Cyrillic)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Serbian (Cyrillic)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Serbian (Cyrillic)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Serbian (Cyrillic)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Serbian (Cyrillic) (http://www.transifex.com/projects/p/xbmc-main/language/sr_RS/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr_RS\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Локација" + +msgctxt "#30010" +msgid "General" +msgstr "Опште" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Sinhala/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Sinhala/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Sinhala/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Sinhala/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,57 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Sinhala (http://www.transifex.com/projects/p/xbmc-main/language/si/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: si\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "පරිස්ථානය" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "ස්ථානීය පෙත (ස්ථානීය ජාලය අන්තර්ගතයි)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "දුරස්ථ පෙත (අන්තර්ජාල ලිපිනය)" + +msgctxt "#30010" +msgid "General" +msgstr "සාමාන්‍ය" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "M3U වාදන ලැයිස්තු පෙත" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "M3U වාදන ලැයිස්තු ලින්කුව" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "EPG කට්ටල අංග" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "XMLTV පෙත" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "XMLTV ලිනුකුව" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "EPG කාල-මාරු (පැයවලින්)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Slovak/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Slovak/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Slovak/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Slovak/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,85 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Slovak (http://www.transifex.com/projects/p/xbmc-main/language/sk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sk\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Umiestnenie" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "Miestna cesta (vrátane miestnej LAN siete)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "Vzdialená cesta (internetový prístup)" + +msgctxt "#30010" +msgid "General" +msgstr "Hlavné" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "Cesta k M3U zoznamu skladieb" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "URL adresa M3U zoznamu skladieb" + +msgctxt "#30013" +msgid "Numbering channels starts at" +msgstr "Číslovanie kanálov začína na" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "Nastavenia EPG" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "Cesta k XMLTV" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "URL adresa XMLTV" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "Použiť časový posun pre všetky kanály" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "Časový posun EPG (hodiny)" + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "Ukladať do vyrovnávacej pamäte m3u v lokálnom úložisku" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "Ukladať do vyrovnávacej pamäte XMLTV v lokálnom úložisku" + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "Logá staníc" + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "Priečinok s logami staníc" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "Základná URL adresa log staníc" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Slovenian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Slovenian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Slovenian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Slovenian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,85 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Slovenian (http://www.transifex.com/projects/p/xbmc-main/language/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Lokacija" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "Krajevna pot (vključuje krajevno omrežje)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "Oddaljena pot (internetni naslov)" + +msgctxt "#30010" +msgid "General" +msgstr "Splošno" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "Pot seznama M3U" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "URL seznama M3U" + +msgctxt "#30013" +msgid "Numbering channels starts at" +msgstr "Številčenje programov se začne z" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "Nastavitve EPG" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "Pot do XMLTV" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "URL do XMLTV" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "Omogoči časovni zamik za vse programe" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "Časovni zamik EPG (ure)" + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "Krajevno predpomni m3u" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "Krajevno predpomni XMLTV" + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "Logotipi programov" + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "Mapa logotipov programov" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "Korenski URL logotipov kanalov" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Spanish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Spanish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Spanish/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Spanish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,85 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Spanish (http://www.transifex.com/projects/p/xbmc-main/language/es/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Ubicación" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "Ruta local (incluye la red local)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "Ruta remota (dirección de internet)" + +msgctxt "#30010" +msgid "General" +msgstr "General" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "Ruta a la lista M3U" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "URL a la lista M3U" + +msgctxt "#30013" +msgid "Numbering channels starts at" +msgstr "La numeración comienza en el" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "Opciones EPG" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "Ruta XMLTV" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "URL XMLTV" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "Aplicar TimeShift a todos los canales" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "TimeShift en EPG (horas)" + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "Cachear M3U localmente" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "Cachear XMLTV localmente" + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "Logotipos de Canales" + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "Carpeta de Logotipos de Canales" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "URL de la Base de Logotipos de Canales" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Spanish (Argentina)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Spanish (Argentina)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Spanish (Argentina)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Spanish (Argentina)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,85 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/xbmc-main/language/es_AR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es_AR\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Ubicación" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "Ruta local (incluida red local)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "Ruta Remota (Dirección de Internet)" + +msgctxt "#30010" +msgid "General" +msgstr "General" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "Ruta de la Lista de Reproducción M3U" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "URL de la Lista de Reproducción M3U" + +msgctxt "#30013" +msgid "Numbering channels starts at" +msgstr "Numeración de canales empieza en" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "Configuración de la GEP" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "Ruta de XMLTV" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "URL de XMLTV" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "Aplicar TimeShift a todos los canales" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "TimeShift en GEP (horas)" + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "Cachear M3U localmente " + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "Cachear XMLTV localmente" + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "Logotipos de canales" + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "Carpeta de Logotipos de Canales" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "URL de la Base de Logotipos de Canales" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Spanish (Mexico)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Spanish (Mexico)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Spanish (Mexico)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Spanish (Mexico)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/xbmc-main/language/es_MX/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es_MX\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Ubicación" + +msgctxt "#30010" +msgid "General" +msgstr "General" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Spanish (Venezuela)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Spanish (Venezuela)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Spanish (Venezuela)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Spanish (Venezuela)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,21 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Spanish (Venezuela) (http://www.transifex.com/projects/p/xbmc-main/language/es_VE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es_VE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Ubicación" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Swedish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Swedish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Swedish/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Swedish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,85 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Swedish (http://www.transifex.com/projects/p/xbmc-main/language/sv/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sv\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Plats" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "Lokal sökväg (inklusive lokalt nätverk)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "Fjärrsökväg (Internet adress)" + +msgctxt "#30010" +msgid "General" +msgstr "Allmänt" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "Sökväg till M3U-spellista" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "URL till M3U-spellista" + +msgctxt "#30013" +msgid "Numbering channels starts at" +msgstr "Börja kanalnumrering på" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "EPG-inställningar" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "Sökväg till XMLTV" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "URL till XMLTV" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "Aktivera tidsförskjutning för alla kanaler" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "Tidsförskjutning för EPG (timmar)" + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "Buffra m3u på lokalt utrymme" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "Buffra XMLTV på lokalt utrymme" + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "Kanalloggor" + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "Mapp för kanalloggor" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "Bas-URL för kanalloggor" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Tajik/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Tajik/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Tajik/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Tajik/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Tajik (http://www.transifex.com/projects/p/xbmc-main/language/tg/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: tg\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Ҷойгиршавӣ" + +msgctxt "#30010" +msgid "General" +msgstr "Умумӣ" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Tamil (India)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Tamil (India)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Tamil (India)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Tamil (India)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Tamil (India) (http://www.transifex.com/projects/p/xbmc-main/language/ta_IN/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ta_IN\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "இருப்பிடம்" + +msgctxt "#30010" +msgid "General" +msgstr "பொதுவானது" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Telugu/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Telugu/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Telugu/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Telugu/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,21 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Telugu (http://www.transifex.com/projects/p/xbmc-main/language/te/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: te\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30010" +msgid "General" +msgstr "సాధారణం" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Thai/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Thai/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Thai/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Thai/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Thai (http://www.transifex.com/projects/p/xbmc-main/language/th/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: th\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30000" +msgid "Location" +msgstr "ที่ตั้ง" + +msgctxt "#30010" +msgid "General" +msgstr "ทั่วไป" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Turkish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Turkish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Turkish/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Turkish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,85 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Turkish (http://www.transifex.com/projects/p/xbmc-main/language/tr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: tr\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Konum" + +msgctxt "#30001" +msgid "Local Path (include Local Network)" +msgstr "Yerel Yol (Yerel Ağ Dahil)" + +msgctxt "#30002" +msgid "Remote Path (Internet address)" +msgstr "Uzak Yol (İnternet adresi)" + +msgctxt "#30010" +msgid "General" +msgstr "Genel" + +msgctxt "#30011" +msgid "M3U Play List Path" +msgstr "M3U Çalma Listesi Yolu" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "M3U Çalma Listesi URL'si" + +msgctxt "#30013" +msgid "Numbering channels starts at" +msgstr "Kanal numaralandırma başlangıcı" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "EPG Ayarları" + +msgctxt "#30021" +msgid "XMLTV Path" +msgstr "XMLTV Yolu" + +msgctxt "#30022" +msgid "XMLTV URL" +msgstr "XMLTV URL'si" + +msgctxt "#30023" +msgid "Apply Time Shift To All Channels" +msgstr "Süre Değiştirmeyi Bütün Kanallara Uygula" + +msgctxt "#30024" +msgid "EPG Time Shift (hours)" +msgstr "EPG Süre Değiştirme (saat)" + +msgctxt "#30025" +msgid "Cache m3u at local storage" +msgstr "m3u'yu yerel depoda önbelleğe al" + +msgctxt "#30026" +msgid "Cache XMLTV at local storage" +msgstr "XMLTV'yi yerel depoda önbelleğe al" + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "Kanal Logoları" + +msgctxt "#30031" +msgid "Channels Logos Folder" +msgstr "Kanal Logoları Klasörü" + +msgctxt "#30032" +msgid "Channels Logos Base URL" +msgstr "Kanal Logoları Taban URL'si" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Ukrainian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Ukrainian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Ukrainian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Ukrainian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Ukrainian (http://www.transifex.com/projects/p/xbmc-main/language/uk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: uk\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Розташування" + +msgctxt "#30010" +msgid "General" +msgstr "Загальні" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Uzbek/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Uzbek/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Uzbek/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Uzbek/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,21 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Uzbek (http://www.transifex.com/projects/p/xbmc-main/language/uz/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: uz\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30010" +msgid "General" +msgstr "Umumiy" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Vietnamese/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Vietnamese/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Vietnamese/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Vietnamese/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,37 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Vietnamese (http://www.transifex.com/projects/p/xbmc-main/language/vi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: vi\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Đường dẫn" + +msgctxt "#30010" +msgid "General" +msgstr "Tổng Quan" + +msgctxt "#30012" +msgid "M3U Play List URL" +msgstr "Danh sách đường dẫn M3U" + +msgctxt "#30020" +msgid "EPG Settings" +msgstr "Tùy chọn Thông tin kênh" + +msgctxt "#30030" +msgid "Channels Logos" +msgstr "Biểu tượng kênh" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Vietnamese (Viet Nam)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Vietnamese (Viet Nam)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Vietnamese (Viet Nam)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Vietnamese (Viet Nam)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,21 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/projects/p/xbmc-main/language/vi_VN/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: vi_VN\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30010" +msgid "General" +msgstr "Chung" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Welsh/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Welsh/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/addon/resources/language/Welsh/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/addon/resources/language/Welsh/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: PVR IPTV Simple Client +# Addon id: pvr.iptvsimple +# Addon Provider: nightik +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Welsh (http://www.transifex.com/projects/p/xbmc-main/language/cy/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: cy\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\n" + +msgctxt "#30000" +msgid "Location" +msgstr "Lleoliad" + +msgctxt "#30010" +msgid "General" +msgstr "Cyffredinol" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/project/VS2010Express/pvr.iptvsimple.vcxproj xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/project/VS2010Express/pvr.iptvsimple.vcxproj --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/project/VS2010Express/pvr.iptvsimple.vcxproj 2013-10-31 06:59:44.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/project/VS2010Express/pvr.iptvsimple.vcxproj 2014-07-18 06:05:30.000000000 +0000 @@ -1,5 +1,5 @@  - + Debug @@ -20,12 +20,14 @@ DynamicLibrary true MultiByte + v120 DynamicLibrary false true MultiByte + v120 diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/src/client.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/src/client.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/src/client.cpp 2014-01-28 20:43:50.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/src/client.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -17,7 +17,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/src/client.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/src/client.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/src/client.h 2014-01-28 20:43:50.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/src/client.h 2014-07-18 06:05:30.000000000 +0000 @@ -18,7 +18,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/src/PVRIptvData.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/src/PVRIptvData.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/src/PVRIptvData.cpp 2014-01-28 20:43:50.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/src/PVRIptvData.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -17,7 +17,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/src/PVRIptvData.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/src/PVRIptvData.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.iptvsimple/src/PVRIptvData.h 2014-01-28 20:43:50.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.iptvsimple/src/PVRIptvData.h 2014-07-18 06:05:30.000000000 +0000 @@ -18,7 +18,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/addon.xml.in xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/addon.xml.in --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/addon.xml.in 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/addon.xml.in 2014-07-18 06:05:30.000000000 +0000 @@ -1,12 +1,12 @@ - + Frontend του XBMC για το διακομιστή MediaPortal TV (έκδοση ffmpeg + tsreader) XBMC frontend for the MediaPortal TV Server (ffmpeg + tsreader version) XBMC frontend for the MediaPortal TV Server (ffmpeg + tsreader version) + XBMC frontend for the MediaPortal TV Server (FFmpeg + TSReader version) Interfaz XBMC para el MediaPortal TV Server (versión ffmpeg + tsreader) Interfaz XBMC para el MediaPortal TV Server (versión ffmpeg + tsreader) XBMC esi MediaPortal TV serverile (ffmpeg + tsreader versioon) XBMC frontend MediaPortal TV-serverille (ffmpeg + tsreader) - Applicatif XBMC pour le serveur TV de MediaPortal (version ffmpeg + tsreader) + Interface logicielle pour le serveur TV de MediaPortal (version ffmpeg + tsreader) Frontal XBMC pour le serveur MediaPortal TV (version ffmpeg + tsreader) - O Interface do XBMC para o Servidor de TV de MediaPortal (versión de ffmpeg +tsreader) + O Interface do XBMC para o Servidor de TV de MediaPortal (versión de ffmpeg + tsreader) ממשק משתמש XBMC לשרת טלוויזיה MediaPortal (גרסת ffmpeg + tsreader ) XBMC sučelje za MediaPortal TV poslužitelj (ffmpeg + tsreader inačica) XBMC Médiaportal előtér-kiszolgáló (ffmpeg + tsreader) Frontend XBMC untuk Server TV MediaPortal (versi ffmpeg + tsreader) + Framendi fyrir XBMC til að nota MediaPortal TV Server (ffmpeg + tsreader version) Frontend XBMC per il server MediaPortal TV (version ffmpeg + tsreader) MediaPortal TV サーバー (ffmpeg + tsreader バージョン) の XBMC フロントエンド XBMC სამომხმარებლო მხარე MediaPortal TV Server-თვის (ffmpeg + tsreader ვერსია) @@ -50,7 +52,7 @@ MediaPortal TV Server အတွက် XBMC frontend (ffmpeg + tsreader version) XBMC frontend voor de Mediaportal TV Server (ffmmpeg + tsreader versie) XBMC skall for MediaPortal TV Server (ffmpeg + tsreader versjon) - Interfejs XBMC dla serwera MediaPortal TV (wersja ffmpeg + tsreader) + Klient XBMC dla serwera MediaPortal TV (wersja ffmpeg + tsreader) Frontend XBMC para o MediaPortal TV Server (ffmpeg + versão tsreader) Frontend do XBMC para Servidor de TV MediaPortal (ffmpeg + versão tsreader) Interfața XBMC pentru MediaPortal TV Server (versiunea ffmpeg + tsreader) @@ -59,6 +61,7 @@ XBMC-jev vmesnik za MediaPortal TV strežnik (ffmpeg + tsreader) XBMC frontend för MediaPortal TV-server (ffmpeg + tsreader versionen) MediaPortal டிவி சேவையகம் (ffmpeg + tsreader பதிப்பு) க்கான XBMC முன்நிலை + MediaPortal TV Sunucusu için XBMC ön ucu (ffmpeg + tsreader sürümü) Накладка XBMC для сервера ТВ MediaPortal'у (версія ffmpeg + tsreader) Giao tiếp XBMC cho MediaPortal TV Server (phiên bản ffmpeg + tsreader) XBMC 的 MediaPortal TV 服务器前端(ffmpeg + tsreader版) @@ -74,28 +77,30 @@ Frontend για το διακομιστή MediaPortal TV. Υποστηρίζει ροές Live TV & Εγγραφές, ακρόαση Ραδιοφώνου, EPG και Χρονοδιακόπτες. Αυτό το πρόσθετο συνδυάζει τα προηγούμενα πρόσθετα ffmpeg και tsreader. MediaPortal TV Server frontend. Supports streaming of Live TV & Recordings, listening to Radio channels, EPG and Timers. This addon combines the former ffmpeg and tsreader addons. MediaPortal TV Server frontend. Supports streaming of Live TV & Recordings, listening to Radio channels, EPG and Timers. This addon combines the former ffmpeg and tsreader addons. + MediaPortal TV Server frontend. Supports streaming of Live TV & Recordings, listening to Radio channels, EPG and Timers. This addon combines the former FFmpeg and TSReader addons. Interfaz MediaPortal TV Server. Soporta transmisión de TV en vivo y grabaciones, escuchar canales de radio, EPG y temporizadores. Este complemento combina los anteriores ffmpeg y tsreader. - Interfaz MediaPortal TV Server. Soporta transmisión de TV en vivo y grabaciones, escuchar canales de radio, EPG y temporizadores. Este complemento combina los anteriores ffmpeg y tsreader. + Interfaz MediaPortal TV Server. Soporta transmisión de TV en vivo y grabaciones, escuchar canales de radio, GEP y temporizadores. Este complemento combina los anteriores ffmpeg y tsreader. MediaPortal TV serveri esi. Toetab telekanalite striimimist ja salvestamist, raadio kuulamist ja elektroonilist saatekava. See lisa kombineerib endas endised ffmpeg ja tsreader lisad. MediaPortal TV-palvelimen frontend. Tukee livelähetysten sekä tallenteiden virtaustoista, radiokanavia, ohjelmaopasta sekä ajastuksia. Tämä lisäosa yhdistää aikaisemmat ffmpeg- ja tsreader-lisäosat. - Applicatif Serveur TV MediaPortal. Il supporte la lecture en continu de direct télévision et enregistrement, l'écoute de radios, guide de programmes et minuteries. Cette extension combine les existants ffmpeg et tsreader. + Interface logicielle pour le serveur TV de MediaPortal. Il supporte la lecture en continu de direct télévision et enregistrement, l'écoute de radios, guide de programmes et minuteries. Cette extension combine les existants ffmpeg et tsreader. Frontal pour le serveur MediaPortal TV, prenant en charge la lecture en transit des télés en direct & les enregistrements, l'écoute de chaînes radio, le GÉP et les minuteries. Cet addiciel combines les anciens addiciels ffmpeg et tsreader. - Interface do Servidor de TV de MediaPortal. Soporta transmisión de TV ao vivo e Gravacións, escoita dos canles da radio, Guía e programacións. Este engadido combina o antigo ffmpeg e os engadidos tsreader. + Interface do Servidor de TV de MediaPortal. Soporta transmisión de TV en directo e Gravacións, escoita de canles de radio, Guía e programacións. Este complemento combina o antigo ffmpeg e os complementos tsreader. ממשק משתמש לשרת טלוויזיה MediaPortal.תומך בהזרמת שידורי טלוויזיה ורדיו חיים והקלטתם,לוח שידורים ומתזמני הקלטות.תוסף זה משלב בתוכו את התוספים של ffmpeg וtsreader. MediaPortal TV poslužitelj sučelje. Podržava stremanje i snimanje TV programa, slušanje radio programa, elektronski programski vodič (EPG) i vremenski zadano snimanje. Ovaj dodatak objedinjuje nekadašnje ffmpeg i tsreader dodatke. Médiaportal előtér-kiszolgáló. Élő adások, felvételek,és rádió adások sugárzásának támogatása EPG-vel és időzítéssel. Ez a kiegészítő egyesíti az ffmpeg, és a tsreader kiegészítőket. Frontend Server TV MediaPortal. Mendukung pengaliran TV dan Rekaman langsung, mendengarkan kanal radio, EPG dan Timer. Pengaya ini mengkombinasikan penggaya ffmeg dan tsreader yang lama. + Framendi fyrir MediaPortal TV. Styður streymingu á Live TV og upptökum, hlustun á útvarpsrásum, rafrænum sjónvarpsvísum (EPG) og tímatöku. Þessi viðbók sameinar fyrri viðbætur fyrir ffmpeg og tsreader Frontend del server MediaPortal TV. Supporta lo streaming di Live TV e le registrazioni, l'ascolto dei canali radio, EPG e i timer. Questo addon combina gli addon ffmpeg e tsreaded. MediaPortal TV サーバーのフロントエンドです。ライブテレビのストリーミングや録画、ラジオチャンネルの視聴、EPG、タイマーなどをサポートしています。以前の ffmpeg アドオンと tsreader アドオンを組み合わせたものです。 MediaPortal TV Server სამომხმარებლო მხარე მხარს უჭერს Live TV სტრიმინგსა და ჩანაწერებს, Radio არხების მოსმენას, EPG-სა და თაიმერებს. ეს ჩადგმა აერთიანებს ძვე ffmpeg და tsreader ჩადგმებს. - MediaPortal TV Server 프론트엔드. TV 시청 & 녹화, 라디오 채널 청취, EPG 및 타이머 지원. 이 추가기능은 이전의 ffmpeg 과 tsreader 추가기능을 합친 것입니다. + MediaPortal TV Server 프론트엔드. TV 시청 & 녹화, 라디오 채널 청취, EPG 및 타이머 지원. 이 애드온은 이전의 ffmpeg 과 tsreader 애드온을 합친 것입니다. MediaPortal TV Serverio sąsaja. Palaiko transliacijos Live TV & Įrašus , klausytis radijo kanalus, EPG ir laikmačius. Šis priedas vienija buvusius ffmpeg ir TSreader priedus. - MediaPortal TV Server galasistēma. Atbalsta tiešraides TV un ierakstu straumēšanu, radio kanālu klaudīšanos, EPG un taimerus. Šis pielikums kombinē senākos ffmpeg un tsreader pielikumus. + MediaPortal TV Server galasistēma. Atbalsta tiešraides TV un ierakstu straumēšanu, radio kanālu klausīšanos, EPG un taimerus. Šis pielikums kombinē senākos ffmpeg un tsreader pielikumus. MediaPortal TV Server frontend. Supports streaming of Live TV & Recordings, listening to Radio channels, EPG and Timers. This addon combines the former ffmpeg and tsreader addons. Bahagian hadapan Pelayan TV MediaPortal; menyokong penstirman TV Langsung & Rakaman, mendengar saluran Radio, EPG dan Pemasa. Tambahan ini gabungkan tambahan ffmpef fan tsreader terdahulu. MediaPortal TV Server frontend. Ondersteunt het bekijken van Live TV en opnames, het luisteren van radio zenders, het tonen van de EPG en het inplannen/beheren van nieuwe opnames (Timers). Deze addon combineert de voorgaande "ffmpeg" en "tsreader" addons. MediaPortal TV Server skall. Støtter streaming av Live TV og opptak, Lytte til Radio kanaler, EPG og Timere. Dette tillegget kombinererer de tidligere ffmpeg og tsreader tilleggene. - Interfejs serwera TV MediaPortal. Wspiera strumieniowanie TV na żywo i nagrywanie, słuchanie radia, EPG oraz wyłączniki czasu. Ten dodatek łączy dodatki ffmpeg i tsreader. + Klient serwera TV MediaPortal wspiera strumieniowanie kanałów radiowych i telewizyjnych, nagrywanie, planowanie nagrań oraz funkcje przewodnika TV. Ten klient łączy w sobie funkcje wcześniejszych klientów ffmpeg i tsreader. Frontend para o MediaPortal TV Server. Suporta transmissão de TV em Directo e Gravações, ouvir estações de Rádio, EPG e Temporizadores. Este addon combina os antigos addons ffmpeg e tsreader. Frontend do Servidor de TV do MediaPortal. Suporta streaming de TV Ao Vivo e Gravações, escutar canais de rádio, EPG e Agendamentos. Este addon combina os antigos addons ffmpeg e tsreader Interfața MediaPortal TV Server. Suportă streaming TV live & Înregistrări, ascultarea posturilor de radio, EPG și Înregistrare programată. Acest plugin combină ex addons ffmpeg si tsreader. @@ -104,6 +109,7 @@ Vmesnik za MediaPortal TV strežnik. Podpira pretakanje televizije v živo & posnetkov, poslušanje radia, EPG in časovnike. Ta dodatek združuje prejšnja dodatka ffmpeg in tsreader. MediaPortal TV-server frontend. Stödjer strömning av direktsänd TV & inspelningar, lyssna på radiokanaler, EPG och timers. Detta tillägg kombinerar dom tidigare ffmpeg och tsreader tilläggen. MediaPortal TV Server முன்நிலை. லைவ் டிவி & பதிவுகளின் ஸ்ட்ரீமிங் செய்யவும், ரேடியோ சேனல்கள் கேட்கவும் மற்றும் EPG, துணைபுரிகிறது. இந்த துனைபயன் முன்னாள் ffmpeg மற்றும் tsreader துணை நிரல்கள் ஒருங்கிணைக்கிறது. + MediaPortal TV Sunucusu ön ucu. Canlı TV akışı ve kayıt yapabilme, radyo kanalları dinleme, EPG ve zamanlayıcıları destekler. Bu eklenti eski ffmpeg ve tsreader eklentilerini birleştirir. Накладка для сервера ТВ MediaPortal. Підтримує потокове Live TV і запис, прослуховування радіо каналів, телегід та планування. Цей додаток сполучає колишні додатки ffmpeg і tsreader. Giao tiếp cho MediaPortal TV Server. Hỗ trợ truyền phát và thu chương trình Live TV, nghe Radio, hẹn giờ và hiển thị lịch trình chiếu (EPG). Addon này kết hợp cho các addon cũ của ffmpeg và tsreader. MediaPortal TV 服务器前端。支持直播电视和录像流媒体、收听电台、电子节目单和定时器。这个插件结合了之前的 ffmpeg 和 tsreader 插件。 @@ -119,6 +125,7 @@ Ασταθές πρόγραμμα! Οι δημιουργοί δεν είναι σε καμία περίπτωση υπεύθυνοι για αποτυχημένες εγγραφές, λανθασμένους χρονοδιακόπτες, χαμένες ώρες, ή κάθε είδους ανεπιθύμητα αποτελέσματα.. This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects.. This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects.. + This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects.. ¡Este es un software inestable! Los autores no son de ninguna manera responsables de las grabaciones fallidas o incorrectas, las temporizadores perdidas, ni otros efectos no deseables.. ¡Este software es inestable! Los autores no se responsabilizan por grabaciones fallidas, temporizadores incorrectos, horas perdidas, o cualquier otro efecto no deseado.. ¡Esto es software inestable! Los autores no son de ninguna manera responsables por grabaciones fallidas, temporizadores incorrectos, horas perdidas o cualquier otro efecto no deseado... @@ -126,10 +133,11 @@ Tämä on epävakaa ohjelmisto! Tekijät eivät ole millään muotoa vastuussa epäonnistuneista tallennuksista, virheellisistä ajastuksia, haaskatusta ajasta, verenpaineen noususta tai mistään muusta epäsuotuisasta vaikutuksesta. Cet applicatif est instable ! Les auteurs ne sont en aucun cas responsables d'échec d'enregistrements, minuteries erronées, temps perdu et autres résultats indésirables.. Ce logiciel est instable! Les auteurs ne sont aucunement responsables des enregistrements défaillants, des minuteries erronées, des heures perdues ou tout autre effet indésirable. - Este é software non estable, os autores non se fan responsábeis dos erros na gravacións, temporizadores incorrectos, e outros efectos non desexados. + Software non estable, os autores non se fan responsábeis dos erros na gravacións, temporizadores incorrectos, e outros efectos non desexados. זוהי תוכנה בלתי יציבה!מחברי התכנה אינם אחראים להקלטות כושלות,מתזמני הקלטות שגויים,שעות מבוזבזות,או כל תוצאה בלתי רצויה... Ovo je nestabilan softver! Autori nisu ni na koji način odgovorni za neuspjelo snimanje, netočna vremena snimanja, izgubljene sate, ili bilo koje druge nepoželjne učinke... Ez nem stabil szoftver! A készítők nem vállalnak felelősséget, a hibás felvételért, rossz időzítésért, elvesztegetett időért... + Սա անկայուն ծրագրային ապահովում է: Հեղինակները պատասխանատու չեն վատ ձայնագրումների, սխալ ժամանակացույցերի, կորած ժամանակի կամ այլ ոչ ցանկալի երևույթների համար: Ini merupakan software yang tidak stabil! Penulis tidak bertanggung jawab untuk rekaman gagal, timer salah, waktu terbuang, atau efek tak diinginkan lainnya... Þetta er óstöðugur hugbúnaður! Höfundarnir eru á engann hátt ábyrgir fyrir misheppnuðum upptökum, röngum upptökutímum, klukkustundum sem að fóru í súginn eða nokkrum öðrum óæskilegum áhrifum. Questo software non è stabile! Gli autori non sono responsabili per registrazioni fallite, timer non corretti, ore perse, o altri effetti indesiderati... @@ -137,16 +145,17 @@ ეს არის არასტაბილური პროგრამული უზრუნველყოფა! ავტორები არ არიან პასუხისმგებელი შეცდომებზე, არასწორ EPG-ზე, დაკარგულ დროზე ან სხვა ხარვეზებზე 이 소프트웨어는 불안정합니다! 제작자는 녹화 실패, 부정확한 타이머, 시간 낭비 및 기타 예상하지 못한 결과에 대해 책임지지 않습니다.. Tai yra nestabili programinė įranga! Autorius jokiu būdu neatsakingas už nepavykusius įrašus, neteisingus laikmačius, iššvaistytas valandas, ar nutikus kitiems nepageidaujamiems poveikiams ...[COLOR=red](xbmc.lt siūlo/rekomenduoja testuojant šį priedą persijungti į Anglų [orinali] kalbą)[/COLOR] - Šī ir nestabila programmatūra! Autori nav nekādā vaidā atbildīgi par nesanākušiem ierakstiem, nepareiziem taimeriem, iztērētām stundām vai jebkādiem citiem nevēlamiem efektiem.. + Šī ir nestabila programmatūra! Autori nav atbildīgi par nesanākušiem ierakstiem, nepareiziem taimeriem, iztērētām stundām vai jebkādiem citiem nevēlamiem efektiem.. Ова е нестабилен софтвер! Авторите на ниту еден начин не одговараат за неуспешни снимки, неточни тајмери, потрошени часови, или било кои други несакани ефекти. Ini merupakan perisian tidak stabil! Pengarang tidak bertanggungjawab atas kegagalan rakaman, pemasa tidak betul, masa yang dibazirkan, atau apa jua kesan yang tidak dikehendaki.. Deze software is niet 100% stabiel! De auteurs zijn op geen enkele wijze aansprakelijk voor mislukte opnames, verspilde tijd, of enig ander ongewild neveneffect.. Dette er ustabilt programvare! Forfatterne er ikke ansvarlig på noen måte for ødelagte opptak, feile timere, bortkastede timer, eller andre uønskede hendinger... - To oprogramowanie jest niestabilne! Autorzy w żaden sposób nie odpowiadają za nieudane nagrania, źle działające wyłączniki czasowe, stracone godziny czy też jakiekolwiek inne niepożądane efekty. + Oprogramowanie nadal jest w fazie rozwoju i jest niestabilne! Autorzy w żaden sposób nie są odpowiedzialni za nieudane nagrania, błędy w planie nagrań, zmarnowany czas ani jakiekolwiek inne niepożądane efekty. Este é um software instável! Os autores não se responsabilizam por falhas nas gravações, temporizadores incorrectos, ou qualquer outro efeito não desejado... Este é um software instável! Os autores não são responsáveis por falhas de gravações, agendamentos incorretos, horas desperdiçadas, ou quaisquer outros efeitos indesejados. Acesta nu este o aplicație definitivă! Autorii nu sunt în nici un fel responsabili pentru înregistrări eșuate, cronometre incorecte, ore pierdute, sau orice alte efecte nedorite... Это нестабильная программа! Авторы не несут ответственности за неудачную запись, неправильные таймеры, потраченное время и другие нежелательные последствия. + මෙය අස්ථිර මෘදුකාංගයකි! මෙහි සිදුවන පටිගත කිරීම් අසාර්ථක වීම්, සාවද්‍ය මුහුර්තක, නාස්ති වූ කාලයන්, හෝ වෙනත් යමිකිසි නුසුදුසු බලපෑම් සඳහා කතෘ වග කියනු නොලැබේ. Tento softvér nie je stabilný! Autori nenesú žiadnu zodpovednosť za chybné nahrávky vysielania, nesprávne časovače alebo iné neželané udalosti spôsobené týmto softvérom.. To je nestabilna programska oprema! Avtorji niso odgovorni za neuspela snemanja, nepravilne časovnike, zapravljen čas in katerikoli drug neželen učinek... Ky program nuk është ende stabil! Autorët së këtij programi nuk janë në as një menyr përgjegjës për rregistrime të gabuara, timer të pasaktë, kohë të humbur ose efekte të tillë të padëshirueshëm. diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/changelog.txt xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/changelog.txt --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/changelog.txt 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/changelog.txt 2014-07-18 06:05:30.000000000 +0000 @@ -1,3 +1,10 @@ +v1.9.15 +- Added: Series recording support (requires skin specific dialog) +- Fixed: [TSReader] Direct playback of recordings that are stored on a network share + +v1.9.14 +- Updated language files from Transifex + v1.9.13 - Added: Live TV/Recordings: Report "permission denied" errors on SMB access failures - Changed: [Settings] enable fast channel switching by default diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/LICENSE.txt xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/LICENSE.txt --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/LICENSE.txt 2012-11-15 21:18:19.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/LICENSE.txt 2014-07-18 06:05:30.000000000 +0000 @@ -1,13 +1,12 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. - Preamble + Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public @@ -16,7 +15,7 @@ General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to +the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not @@ -56,8 +55,8 @@ The precise terms and conditions for copying, distribution and modification follow. - - GNU GENERAL PUBLIC LICENSE + + GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains @@ -111,7 +110,7 @@ License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) - + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in @@ -169,7 +168,7 @@ access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. - + 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is @@ -226,7 +225,7 @@ This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. - + 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License @@ -256,7 +255,7 @@ of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. - NO WARRANTY + NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN @@ -278,5 +277,63 @@ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - END OF TERMS AND CONDITIONS -------------------------------------------------------------------------- + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/language/Armenian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/language/Armenian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/language/Armenian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/language/Armenian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,21 @@ +# XBMC Media Center language file +# Addon Name: MediaPortal PVR Client +# Addon id: pvr.mediaportal.tvserver +# Addon Provider: Marcel Groothuis +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Armenian (http://www.transifex.com/projects/p/xbmc-main/language/hy/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hy\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30003" +msgid "Include Radio" +msgstr "Ռադիոն ներառյալ" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/language/Bulgarian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/language/Bulgarian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/language/Bulgarian/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/language/Bulgarian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -74,7 +74,7 @@ msgctxt "#30018" msgid "Use RTSP streaming" -msgstr "Използвай RTSP стрийминг" +msgstr "Ползвай RTSP стрийминг" msgctxt "#30040" msgid "Connection" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/language/Croatian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/language/Croatian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/language/Croatian/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/language/Croatian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -54,7 +54,7 @@ msgctxt "#30009" msgid "EPG: Read genre strings (slow)" -msgstr "EPG: čitaj nizove žanra (sporije)" +msgstr "EPG: čitaj slogove žanra (sporije)" msgctxt "#30010" msgid "Wait time after tuning a channel (ms)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/language/English/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/language/English/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/language/English/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/language/English/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -176,3 +176,98 @@ msgctxt "#30075" msgid "No PMT found" msgstr "" + +#empty strings from id 30076 to 30099 + +# Schedule settings dialog +msgctxt "#30100" +msgid "Schedule settings" +msgstr "" + +msgctxt "#30101" +msgid "Frequency" +msgstr "" + +msgctxt "#30102" +msgid "Airtime" +msgstr "" + +msgctxt "#30103" +msgid "Channels" +msgstr "" + +msgctxt "#30104" +msgid "Keep" +msgstr "" + +msgctxt "#30105" +msgid "Record minutes before start" +msgstr "" + +msgctxt "#30106" +msgid "Record minutes after end" +msgstr "" + +# Frequency: +msgctxt "#30110" +msgid "Record Once" +msgstr "" + +msgctxt "#30111" +msgid "Record Daily (This program)" +msgstr "" + +msgctxt "#30112" +msgid "Record Weekly" +msgstr "" + +msgctxt "#30113" +msgid "Record Weekends" +msgstr "" + +msgctxt "#30114" +msgid "Record Week Days" +msgstr "" + +# Airtime: +msgctxt "#30120" +msgid "This time" +msgstr "" + +msgctxt "#30121" +msgid "Anytime" +msgstr "" + +# Channel: +msgctxt "#30125" +msgid "This Channel" +msgstr "" + +msgctxt "#30126" +msgid "Any Channel" +msgstr "" + +# Keep: +msgctxt "#30130" +msgid "Until space needed" +msgstr "" + +msgctxt "#30131" +msgid "Until Watched" +msgstr "" + +msgctxt "#30132" +msgid "Days" +msgstr "" + +msgctxt "#30133" +msgid "Always" +msgstr "" + +msgctxt "#30135" +msgid "Backend default" +msgstr "" + +msgctxt "#30136" +msgid "XBMC default" +msgstr "" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/language/English (US)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/language/English (US)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/language/English (US)/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/language/English (US)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -16,6 +16,150 @@ "Language: en_US\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgctxt "#30000" +msgid "Mediaportal Hostname" +msgstr "MediaPortal Hostname" + +msgctxt "#30001" +msgid "Mediaportal XBMC plugin Port" +msgstr "MediaPortal XBMC plugin Port" + +msgctxt "#30002" +msgid "Free-to-air only" +msgstr "Free-to-air only" + +msgctxt "#30003" +msgid "Include Radio" +msgstr "Include Radio" + +msgctxt "#30004" +msgid "Fast channel switching (don't stop timeshift)" +msgstr "Fast channel switching (don't stop timeshift)" + +msgctxt "#30005" +msgid "Connect timeout (s)" +msgstr "Connect timeout (s)" + +msgctxt "#30006" +msgid "Import only TV Channels from group" +msgstr "Import only TV Channels from group" + +msgctxt "#30007" +msgid "Import only Radio Channels from group" +msgstr "Import only Radio Channels from group" + +msgctxt "#30008" +msgid "Convert hostname to IP-adress" +msgstr "Convert hostname to IP-address" + +msgctxt "#30009" +msgid "EPG: Read genre strings (slow)" +msgstr "EPG: Read genre strings (slow)" + +msgctxt "#30010" +msgid "Wait time after tuning a channel (ms)" +msgstr "Wait time after tuning a channel (ms)" + +msgctxt "#30015" +msgid "Streaming method" +msgstr "Streaming method" + +msgctxt "#30016" +msgid "Windows user account (SMB)" +msgstr "Windows user account (SMB)" + +msgctxt "#30017" +msgid "Windows password (SMB)" +msgstr "Windows password (SMB)" + +msgctxt "#30018" +msgid "Use RTSP streaming" +msgstr "Use RTSP streaming" + +msgctxt "#30040" +msgid "Connection" +msgstr "Connection" + +msgctxt "#30041" +msgid "MediaPortal" +msgstr "MediaPortal" + msgctxt "#30042" msgid "Playback" msgstr "Playback" + +msgctxt "#30050" +msgid "Your TVServerXBMC version '%s' is too old. Please upgrade to '%s' or higher!" +msgstr "Your TVServerXBMC version '%s' is too old. Please upgrade to '%s' or higher!" + +msgctxt "#30051" +msgid "Your TVServerXBMC version is too old. Please upgrade to '%s' or higher!" +msgstr "Your TVServerXBMC version is too old. Please upgrade to '%s' or higher!" + +msgctxt "#30052" +msgid "Recording playback failed. Empty URL of filename." +msgstr "Recording playback failed. Empty URL of filename." + +msgctxt "#30060" +msgid "All cards are busy" +msgstr "All cards are busy" + +msgctxt "#30061" +msgid "Channel is scrambled" +msgstr "Channel is scrambled" + +msgctxt "#30062" +msgid "No video or audio detected" +msgstr "No video or audio detected" + +msgctxt "#30063" +msgid "No signal detected" +msgstr "No signal detected" + +msgctxt "#30064" +msgid "Unknown error" +msgstr "Unknown error" + +msgctxt "#30065" +msgid "Unable to start graph" +msgstr "Unable to start graph" + +msgctxt "#30066" +msgid "Unknown channel" +msgstr "Unknown channel" + +msgctxt "#30067" +msgid "No tuning details" +msgstr "No tuning details" + +msgctxt "#30068" +msgid "Channel is not mapped to any card" +msgstr "Channel is not mapped to any card" + +msgctxt "#30069" +msgid "Card is disabled" +msgstr "Card is disabled" + +msgctxt "#30070" +msgid "Connection to slave failed" +msgstr "Connection to slave failed" + +msgctxt "#30071" +msgid "Not the owner" +msgstr "Not the owner" + +msgctxt "#30072" +msgid "Graph building failed" +msgstr "Graph building failed" + +msgctxt "#30073" +msgid "SW Encoder missing" +msgstr "SW Encoder missing" + +msgctxt "#30074" +msgid "No free disk space" +msgstr "No free disk space" + +msgctxt "#30075" +msgid "No PMT found" +msgstr "No PMT found" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/language/Galician/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/language/Galician/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/language/Galician/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/language/Galician/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -18,15 +18,15 @@ msgctxt "#30000" msgid "Mediaportal Hostname" -msgstr "Nome de host do Mediaportal" +msgstr "Nome do host de Mediaportal" msgctxt "#30001" msgid "Mediaportal XBMC plugin Port" -msgstr "Extensión para o porto de XBMC de Mediaportal" +msgstr "Extensión para o porto do XBMC de Mediaportal" msgctxt "#30002" msgid "Free-to-air only" -msgstr "Só emisión libre" +msgstr "Só emisións en aberto" msgctxt "#30003" msgid "Include Radio" @@ -46,7 +46,7 @@ msgctxt "#30007" msgid "Import only Radio Channels from group" -msgstr "Importar só os canles de Radio dende o grupo" +msgstr "Importar só as canles de Radio dende o grupo" msgctxt "#30008" msgid "Convert hostname to IP-adress" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/language/Icelandic/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/language/Icelandic/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/language/Icelandic/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/language/Icelandic/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -16,6 +16,150 @@ "Language: is\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgctxt "#30000" +msgid "Mediaportal Hostname" +msgstr "Hýsingarnafn Mediaportal" + +msgctxt "#30001" +msgid "Mediaportal XBMC plugin Port" +msgstr "Gátt fyrir Mediaportal XBMC viðbót" + +msgctxt "#30002" +msgid "Free-to-air only" +msgstr "Aðeins Fríar útsendingar" + +msgctxt "#30003" +msgid "Include Radio" +msgstr "Hafa úrvarp með" + +msgctxt "#30004" +msgid "Fast channel switching (don't stop timeshift)" +msgstr "Hröð skipting á milli rása (Stöðvar ekki tímahliðrun)" + +msgctxt "#30005" +msgid "Connect timeout (s)" +msgstr "Tengitími útrennur (ms)" + +msgctxt "#30006" +msgid "Import only TV Channels from group" +msgstr "Flytja aðeins inn Sjónvarpsrásir frá hópi" + +msgctxt "#30007" +msgid "Import only Radio Channels from group" +msgstr "Flytja aðeins inn Útvarpsrásir frá hópi" + +msgctxt "#30008" +msgid "Convert hostname to IP-adress" +msgstr "Breyta Hýsingarnafni í IP-vistfang" + +msgctxt "#30009" +msgid "EPG: Read genre strings (slow)" +msgstr "Rafrænir sjónvarpsvísar (EPG): Lesa flokkunarstreng (hægvirkt)" + +msgctxt "#30010" +msgid "Wait time after tuning a channel (ms)" +msgstr "Biðtími eftir rásaval (ms)" + +msgctxt "#30015" +msgid "Streaming method" +msgstr "Hamur straums" + +msgctxt "#30016" +msgid "Windows user account (SMB)" +msgstr "Windows notandanafn (SMB)" + +msgctxt "#30017" +msgid "Windows password (SMB)" +msgstr "Windows lykilorð (SMB)" + +msgctxt "#30018" +msgid "Use RTSP streaming" +msgstr "Nota RTSP straum" + +msgctxt "#30040" +msgid "Connection" +msgstr "Tenging" + +msgctxt "#30041" +msgid "MediaPortal" +msgstr "MediaPortal" + msgctxt "#30042" msgid "Playback" -msgstr "Spila" +msgstr "Afspilun" + +msgctxt "#30050" +msgid "Your TVServerXBMC version '%s' is too old. Please upgrade to '%s' or higher!" +msgstr "TVServerXBMC útgáfa '%s' er of gömul. Vinsamlega uppfærðu í '%s' eða nýrra!" + +msgctxt "#30051" +msgid "Your TVServerXBMC version is too old. Please upgrade to '%s' or higher!" +msgstr "TVServerXBMC útgáfan er of gömul. Vinsamlega uppfærðu í '%s' eða nýrra!" + +msgctxt "#30052" +msgid "Recording playback failed. Empty URL of filename." +msgstr "Afskilun upptöku mistókst. Tómt netfang á skráarnafn. " + +msgctxt "#30060" +msgid "All cards are busy" +msgstr "Öll kort eru upptekin" + +msgctxt "#30061" +msgid "Channel is scrambled" +msgstr "Rás er rugluð" + +msgctxt "#30062" +msgid "No video or audio detected" +msgstr "Finnst hvorki hljóð né mynd." + +msgctxt "#30063" +msgid "No signal detected" +msgstr "Ekkert merki fannst" + +msgctxt "#30064" +msgid "Unknown error" +msgstr "Óþekkt villa" + +msgctxt "#30065" +msgid "Unable to start graph" +msgstr "Gat ekki ræst graf" + +msgctxt "#30066" +msgid "Unknown channel" +msgstr "Óþekkt rás" + +msgctxt "#30067" +msgid "No tuning details" +msgstr "Engar upplýsingar um rásastillingu" + +msgctxt "#30068" +msgid "Channel is not mapped to any card" +msgstr "Rás er ekki möppuð við neitt kort" + +msgctxt "#30069" +msgid "Card is disabled" +msgstr "Kort er óvirkt" + +msgctxt "#30070" +msgid "Connection to slave failed" +msgstr "Tenging við þjón mistókst" + +msgctxt "#30071" +msgid "Not the owner" +msgstr "Ekki eigandi" + +msgctxt "#30072" +msgid "Graph building failed" +msgstr "Ekki tókst að byggja graf" + +msgctxt "#30073" +msgid "SW Encoder missing" +msgstr "Vantar hugbúnaðarkóðara" + +msgctxt "#30074" +msgid "No free disk space" +msgstr "Ekkert diskapláss" + +msgctxt "#30075" +msgid "No PMT found" +msgstr "Engin PMT fannst" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/language/Latvian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/language/Latvian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/language/Latvian/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/language/Latvian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -20,14 +20,62 @@ msgid "Mediaportal Hostname" msgstr "Mediaportal saimniekvārds" +msgctxt "#30001" +msgid "Mediaportal XBMC plugin Port" +msgstr "Mediaportal XBMC spraudņa ports" + +msgctxt "#30002" +msgid "Free-to-air only" +msgstr "Tikai bezmaksas pārraides" + msgctxt "#30003" msgid "Include Radio" msgstr "Iekļaut radio" +msgctxt "#30004" +msgid "Fast channel switching (don't stop timeshift)" +msgstr "Ātrā kanāu pārslēgšana (neaptur laika nobīdi)" + +msgctxt "#30005" +msgid "Connect timeout (s)" +msgstr "Savienojuma noilgums" + +msgctxt "#30006" +msgid "Import only TV Channels from group" +msgstr "Importēt tikai TV kanālus no grupas" + +msgctxt "#30007" +msgid "Import only Radio Channels from group" +msgstr "Importēt tikai radio kanālus no grupas" + msgctxt "#30008" msgid "Convert hostname to IP-adress" msgstr "Pārvērst saimniekvārdu uz IP adresi" +msgctxt "#30009" +msgid "EPG: Read genre strings (slow)" +msgstr "EPG: Lasa žanru virknes (lēns)" + +msgctxt "#30010" +msgid "Wait time after tuning a channel (ms)" +msgstr "Gaidīšanas laiks pēc kanāla uztveršanas (ms)" + +msgctxt "#30015" +msgid "Streaming method" +msgstr "Straumēšanas metode" + +msgctxt "#30016" +msgid "Windows user account (SMB)" +msgstr "Windows lietotāja konts (SMB)" + +msgctxt "#30017" +msgid "Windows password (SMB)" +msgstr "Windows parole (SMB)" + +msgctxt "#30018" +msgid "Use RTSP streaming" +msgstr "Izmantot RTSP straumēšanu" + msgctxt "#30040" msgid "Connection" msgstr "Savienojums" @@ -40,10 +88,30 @@ msgid "Playback" msgstr "Atskaņošana" +msgctxt "#30050" +msgid "Your TVServerXBMC version '%s' is too old. Please upgrade to '%s' or higher!" +msgstr "Jūsu TVServerXBMC versija '%s' ir pārāk veca. Lūdzu, uzlabojiet to uz '%s' vai jaunāku!" + +msgctxt "#30051" +msgid "Your TVServerXBMC version is too old. Please upgrade to '%s' or higher!" +msgstr "Jūsu TVServerXBMC versija ir pārāk veca. Lūdzu, uzlabojiet to uz '%s' vai jaunāku!" + +msgctxt "#30052" +msgid "Recording playback failed. Empty URL of filename." +msgstr "Ieraksta atskaņošana neizdevās. Tuksšs URL vai faila nosaukums." + msgctxt "#30060" msgid "All cards are busy" msgstr "Visas kartes ir aizņemtas" +msgctxt "#30061" +msgid "Channel is scrambled" +msgstr "Kanāls ir šifrēts" + +msgctxt "#30062" +msgid "No video or audio detected" +msgstr "Video un audio signāls nav atrasts" + msgctxt "#30063" msgid "No signal detected" msgstr "Signāls nav atrasts" @@ -52,6 +120,10 @@ msgid "Unknown error" msgstr "Nezināma kļūda" +msgctxt "#30065" +msgid "Unable to start graph" +msgstr "Nevar sākt grafiku" + msgctxt "#30066" msgid "Unknown channel" msgstr "Nezināms kanāls" @@ -60,14 +132,34 @@ msgid "No tuning details" msgstr "Nav uztveršanas detaļas" +msgctxt "#30068" +msgid "Channel is not mapped to any card" +msgstr "Kanāls nav piekartēts nevienai kartei." + msgctxt "#30069" msgid "Card is disabled" msgstr "Karte ir izslēgta" +msgctxt "#30070" +msgid "Connection to slave failed" +msgstr "Neizdevās pieslēgties sekotājam" + msgctxt "#30071" msgid "Not the owner" msgstr "Nav īpašnieks" +msgctxt "#30072" +msgid "Graph building failed" +msgstr "Grafika būvēšana neizdevās" + +msgctxt "#30073" +msgid "SW Encoder missing" +msgstr "Trūkst SW kodētājs" + msgctxt "#30074" msgid "No free disk space" msgstr "Diskā nav brīvas vietas" + +msgctxt "#30075" +msgid "No PMT found" +msgstr "PMT nav atrasts" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/language/Polish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/language/Polish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/language/Polish/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/language/Polish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -22,47 +22,47 @@ msgctxt "#30001" msgid "Mediaportal XBMC plugin Port" -msgstr "Port dodatku Mediaportal XBMC" +msgstr "Port wtyczki" msgctxt "#30002" msgid "Free-to-air only" -msgstr "Tylko niekodowane (Free-to-air)" +msgstr "Tylko niekodowane" msgctxt "#30003" msgid "Include Radio" -msgstr "Uwzględnij Radio" +msgstr "Uwzględniaj kanały radiowe" msgctxt "#30004" msgid "Fast channel switching (don't stop timeshift)" -msgstr "Szybka zmiana kanałów (nie przerywaj timeshift'u)" +msgstr "Szybka zmiana kanału (nie zatrzymuj przesunięcia czasowego)" msgctxt "#30005" msgid "Connect timeout (s)" -msgstr "Upłynął limit czasu (s)" +msgstr "Limit czasu połączenia (s)" msgctxt "#30006" msgid "Import only TV Channels from group" -msgstr "Importuj jedynie kanały TV z grupy" +msgstr "Importuj tylko kanały telewizyjne z grupy" msgctxt "#30007" msgid "Import only Radio Channels from group" -msgstr "Importuj jedynie kanały Radiowe z grupy" +msgstr "Importuj tylko kanały radiowe z grupy" msgctxt "#30008" msgid "Convert hostname to IP-adress" -msgstr "Rozwijaj nazwę hosta na IP" +msgstr "Rozwiązuj nazwę hosta na adres IP" msgctxt "#30009" msgid "EPG: Read genre strings (slow)" -msgstr "EPG: odczytuj gatunek (powolne)" +msgstr "Przewodnik TV: wczytuj gatunki (powolne)" msgctxt "#30010" msgid "Wait time after tuning a channel (ms)" -msgstr "Czas czekania po dostrojeniu kanału (ms)" +msgstr "Czas oczekiwania po dostrojeniu kanału (ms)" msgctxt "#30015" msgid "Streaming method" -msgstr "Metoda streamingu" +msgstr "Metoda streamieniowania" msgctxt "#30016" msgid "Windows user account (SMB)" @@ -74,11 +74,11 @@ msgctxt "#30018" msgid "Use RTSP streaming" -msgstr "Używaj streamingu RTSP" +msgstr "Używaj strumieniowania RTSP" msgctxt "#30040" msgid "Connection" -msgstr "Połącznie" +msgstr "Połączenie" msgctxt "#30041" msgid "MediaPortal" @@ -90,11 +90,11 @@ msgctxt "#30050" msgid "Your TVServerXBMC version '%s' is too old. Please upgrade to '%s' or higher!" -msgstr "Twoja wersja TVServerXBMC '%s' jest zbyt stara. Zaktualizują ją do '%s' lub wyższej!" +msgstr "Wtyczka TVServerXBMC '%s' jest w za starej wersji. Zaktualizują ją do wersji '%s' lub nowszej!" msgctxt "#30051" msgid "Your TVServerXBMC version is too old. Please upgrade to '%s' or higher!" -msgstr "Twoja wersja TVServerXBMC jest zbyt stara. Zaktualizują ją do '%s' lub wyższej!" +msgstr "Wtyczka TVServerXBMC jest w za starej wersji. Zaktualizują ją do wersji '%s' lub nowszej!" msgctxt "#30052" msgid "Recording playback failed. Empty URL of filename." @@ -110,7 +110,7 @@ msgctxt "#30062" msgid "No video or audio detected" -msgstr "Nie wykryto fonii ani wizji" +msgstr "Brak strumieni wideo i dźwięku" msgctxt "#30063" msgid "No signal detected" @@ -122,7 +122,7 @@ msgctxt "#30065" msgid "Unable to start graph" -msgstr "Nie powiodło się uruchomienie grafiki" +msgstr "Nie powiodło się uruchomienie diagramu" msgctxt "#30066" msgid "Unknown channel" @@ -142,7 +142,7 @@ msgctxt "#30070" msgid "Connection to slave failed" -msgstr "Połączenie do slave'a nie powiodło się" +msgstr "Połączenie do usługi podrzędnej nie powiodło się" msgctxt "#30071" msgid "Not the owner" @@ -150,7 +150,7 @@ msgctxt "#30072" msgid "Graph building failed" -msgstr "Budowanie grafiki nie powiodło się" +msgstr "Budowanie diagramu nie powiodło się" msgctxt "#30073" msgid "SW Encoder missing" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/language/Sinhala/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/language/Sinhala/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/language/Sinhala/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/language/Sinhala/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,29 @@ +# XBMC Media Center language file +# Addon Name: MediaPortal PVR Client +# Addon id: pvr.mediaportal.tvserver +# Addon Provider: Marcel Groothuis +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Sinhala (http://www.transifex.com/projects/p/xbmc-main/language/si/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: si\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30003" +msgid "Include Radio" +msgstr "ගුවන් විදුලිය ඇතුළත් කරන්න" + +msgctxt "#30005" +msgid "Connect timeout (s)" +msgstr "සම්බන්ධවීමේ කාලය(න්) ඉවරයි. " + +msgctxt "#30042" +msgid "Playback" +msgstr "නැවත වාදනය " diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/language/Spanish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/language/Spanish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/language/Spanish/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/language/Spanish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -74,7 +74,7 @@ msgctxt "#30018" msgid "Use RTSP streaming" -msgstr "Utilizar RTSP streaming" +msgstr "Utilizar transmisión RTSP" msgctxt "#30040" msgid "Connection" @@ -90,7 +90,7 @@ msgctxt "#30050" msgid "Your TVServerXBMC version '%s' is too old. Please upgrade to '%s' or higher!" -msgstr "Su versión TVServerXBMC '%s' es demasiado antigua. ¡Por favor actualice a '%s' o superior!" +msgstr "La versión '%s' de TVServerXBMC es demasiado antigua. ¡Por favor actualice a '%s' o superior!" msgctxt "#30051" msgid "Your TVServerXBMC version is too old. Please upgrade to '%s' or higher!" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/language/Spanish (Argentina)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/language/Spanish (Argentina)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/language/Spanish (Argentina)/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/language/Spanish (Argentina)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -54,7 +54,7 @@ msgctxt "#30009" msgid "EPG: Read genre strings (slow)" -msgstr "EPG: Leer cadenas de género (lento)" +msgstr "GEP: Leer cadenas de género (lento)" msgctxt "#30010" msgid "Wait time after tuning a channel (ms)" @@ -90,11 +90,11 @@ msgctxt "#30050" msgid "Your TVServerXBMC version '%s' is too old. Please upgrade to '%s' or higher!" -msgstr "Tu versión TVServerXBMC '%s' es demasiado antigua. ¡Por favor actualiza a '%s' o superior!" +msgstr "Su versión TVServerXBMC '%s' es demasiado antigua. ¡Por favor actualiza a '%s' o superior!" msgctxt "#30051" msgid "Your TVServerXBMC version is too old. Please upgrade to '%s' or higher!" -msgstr "Tu versión TVServerXBMC es demasiado antigua. ¡Por favor actualiza a '%s' o superior!" +msgstr "Su versión TVServerXBMC es demasiado antigua. ¡Por favor actualiza a '%s' o superior!" msgctxt "#30052" msgid "Recording playback failed. Empty URL of filename." diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/language/Thai/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/language/Thai/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/language/Thai/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/language/Thai/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -16,6 +16,10 @@ "Language: th\n" "Plural-Forms: nplurals=1; plural=0;\n" +msgctxt "#30005" +msgid "Connect timeout (s)" +msgstr "ระยะเวลาหยุดการเชื่อมต่อ (วิ)" + msgctxt "#30042" msgid "Playback" msgstr "เล่นเพลง" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/language/Turkish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/language/Turkish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/language/Turkish/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/language/Turkish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -16,13 +16,29 @@ "Language: tr\n" "Plural-Forms: nplurals=1; plural=0;\n" +msgctxt "#30000" +msgid "Mediaportal Hostname" +msgstr "Mediaportal Ana Bilgisayar Adı" + +msgctxt "#30001" +msgid "Mediaportal XBMC plugin Port" +msgstr "Mediaportal XBMC eklentisi Bağlantı noktası" + +msgctxt "#30002" +msgid "Free-to-air only" +msgstr "Sadece şifresiz" + msgctxt "#30003" msgid "Include Radio" -msgstr "Radyoları içe aktar" +msgstr "Radyoyu dahil et" + +msgctxt "#30004" +msgid "Fast channel switching (don't stop timeshift)" +msgstr "Hızlı kanal değiştirme (Zaman kaydırma bitmiyor)" msgctxt "#30005" msgid "Connect timeout (s)" -msgstr "Bağlantı süresi doldu (s)" +msgstr "Bağlantı zaman aşımı (s)" msgctxt "#30006" msgid "Import only TV Channels from group" @@ -36,6 +52,14 @@ msgid "Convert hostname to IP-adress" msgstr "Ana bilgisayar adını IP adresine çevir" +msgctxt "#30009" +msgid "EPG: Read genre strings (slow)" +msgstr "EPG: Tarz dizelerini oku (yavaş)" + +msgctxt "#30010" +msgid "Wait time after tuning a channel (ms)" +msgstr "Bir kanal ayarlama sonrası için bekleme zamanı (ms)" + msgctxt "#30015" msgid "Streaming method" msgstr "Akış yöntemi" @@ -56,6 +80,10 @@ msgid "Connection" msgstr "Bağlantı" +msgctxt "#30041" +msgid "MediaPortal" +msgstr "MediaPortal" + msgctxt "#30042" msgid "Playback" msgstr "Oynatım" @@ -64,10 +92,22 @@ msgid "Your TVServerXBMC version '%s' is too old. Please upgrade to '%s' or higher!" msgstr "TVServerXBMC '%s' sürümünüz çok eski. Lütfen '%s' veya üstüne güncelleyin!" +msgctxt "#30051" +msgid "Your TVServerXBMC version is too old. Please upgrade to '%s' or higher!" +msgstr "TVServerXBMC sürümünüz çok eski. Lütfen '%s' veya üstüne güncelleyin!" + +msgctxt "#30052" +msgid "Recording playback failed. Empty URL of filename." +msgstr "Kayıt oynatma başarısız oldu. Dosya boş/URL." + msgctxt "#30060" msgid "All cards are busy" msgstr "Tüm kartlar meşgul" +msgctxt "#30061" +msgid "Channel is scrambled" +msgstr "Kanal şifreli" + msgctxt "#30062" msgid "No video or audio detected" msgstr "Video veya ses tespit edilmedi" @@ -80,17 +120,41 @@ msgid "Unknown error" msgstr "Bilinmeyen hata" +msgctxt "#30065" +msgid "Unable to start graph" +msgstr "Grafik başlatma yetersiz" + msgctxt "#30066" msgid "Unknown channel" msgstr "Bilinmeyen kanal" +msgctxt "#30067" +msgid "No tuning details" +msgstr "Başarısız ayarlama detayları" + +msgctxt "#30068" +msgid "Channel is not mapped to any card" +msgstr "Kanal, kart ile eşleşmedi." + msgctxt "#30069" msgid "Card is disabled" msgstr "Kart devre dışı" +msgctxt "#30070" +msgid "Connection to slave failed" +msgstr "Bağlantı başarısız" + +msgctxt "#30071" +msgid "Not the owner" +msgstr "Sahipsiz" + +msgctxt "#30072" +msgid "Graph building failed" +msgstr "Grafik bina başarısız oldu" + msgctxt "#30073" msgid "SW Encoder missing" -msgstr "SW Encoder eksik" +msgstr "SW Kodlayıcı bulunamadı" msgctxt "#30074" msgid "No free disk space" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/skins/skin.ace/720p/DialogRecordSettings.xml xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/skins/skin.ace/720p/DialogRecordSettings.xml --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/skins/skin.ace/720p/DialogRecordSettings.xml 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/skins/skin.ace/720p/DialogRecordSettings.xml 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,207 @@ + + 10 + + 1 + + + + Animation_DialogPopup + + + 110 + 0 + 30 + 720 + shadow.png + C3FFFFFF + + + 1140 + 0 + 30 + 720 + shadow.png + C3FFFFFF + + + 140 + 0 + 1000 + 720 + darkgrey.png + $VAR[value_texturecolor] + Animation_DefaultGlass + + + 140 + 0 + 1000 + 80 + black.png + 90FFFFFF + + + + header label + 215 + 23 + 852 + 30 + Font_32 + + FFFFFAF0 + center + center + Animation_Fade + + + 215 + 130 + 825 + 2 + left + divider.png + + + + + 215 + 90 + 852 + 30 + center + center + $VAR[value_headercolor] + Font_30 + + true + + + 215 + 143 + + 0 + 0 + 852 + 25 + Font_19 + + center + center + FFFFFAF0 + + + 0 + 35 + 852 + 25 + Font_19 + + center + center + FFFFFAF0 + + + + 215 + 200 + 825 + 2 + left + divider.png + + + 140 + 210 + 0 + 1000 + 290 + 9001 + 9001 + + + Frequency + + 10 + 10 + + + + Airtime + + 11 + 11 + + + + Channels + + 12 + 12 + + + + Separator + left + divider.png + + + + Keep + + 13 + 13 + + + + Record minutes before start + + 14 + 14 + + + + Record minutes after end + + 15 + 15 + + + + + + 140 + 600 + 40 + 1000 + black.png + 90FFFFFF + + + 140 + 600 + 15 + 10 + horizontal + 0 + + Ok Button + 500 + SettingsBottomButton + + 2 + 2 + + + Cancel Button + 500 + SettingsBottomButton + + font12_title + 1 + 1 + + + + + diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/skins/skin.aeonmq5/720p/DialogRecordSettings.xml xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/skins/skin.aeonmq5/720p/DialogRecordSettings.xml --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/skins/skin.aeonmq5/720p/DialogRecordSettings.xml 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/skins/skin.aeonmq5/720p/DialogRecordSettings.xml 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,208 @@ + + + 10 + + 1 + + + + Animation_DialogPopup + + + 110 + 0 + 30 + 720 + shadow.png + C3FFFFFF + + + 1140 + 0 + 30 + 720 + shadow.png + C3FFFFFF + + + 140 + 0 + 1000 + 720 + darkgrey.png + $VAR[value_texturecolor] + Animation_DefaultGlass + + + 140 + 0 + 1000 + 80 + black.png + 90FFFFFF + + + + header label + 215 + 23 + 852 + 30 + Font_32 + + FFFFFAF0 + center + center + Animation_Fade + + + 215 + 130 + 825 + 2 + left + divider.png + + + + + 215 + 90 + 852 + 30 + center + center + $VAR[value_headercolor] + Font_30 + + true + + + 215 + 143 + + 0 + 0 + 852 + 25 + Font_19 + + center + center + FFFFFAF0 + + + 0 + 35 + 852 + 25 + Font_19 + + center + center + FFFFFAF0 + + + + 215 + 200 + 825 + 2 + left + divider.png + + + 140 + 210 + 0 + 1000 + 290 + 9001 + 9001 + + + Frequency + + 10 + 10 + + + + Airtime + + 11 + 11 + + + + Channels + + 12 + 12 + + + + Separator + left + divider.png + + + + Keep + + 13 + 13 + + + + Record minutes before start + + 14 + 14 + + + + Record minutes after end + + 15 + 15 + + + + + + 140 + 600 + 40 + 1000 + black.png + 90FFFFFF + + + 140 + 600 + 15 + 10 + horizontal + 0 + + Ok Button + 500 + SettingsBottomButton + + 2 + 2 + + + Cancel Button + 500 + SettingsBottomButton + + font12_title + 1 + 1 + + + + + diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/skins/skin.aeon.nox.5/1080i/DialogRecordSettings.xml xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/skins/skin.aeon.nox.5/1080i/DialogRecordSettings.xml --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/skins/skin.aeon.nox.5/1080i/DialogRecordSettings.xml 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/skins/skin.aeon.nox.5/1080i/DialogRecordSettings.xml 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,173 @@ + + + 10 + + 1 + 399 + 210 + + dialogeffect + + + background image + 0 + 0 + 1172 + 660 + dialogs/default/bg.png + + + + header label + 30 + 32 + 1112 + 40 + font15_title + + center + dialogheader + + + 30 + 86 + 790 + 542 + dialogs/default/inner.png + + + + + + + 45 + 100 + + 0 + 0 + 738 + 30 + grey + font14 + + true + + + 0 + 45 + 738 + 25 + font14 + + grey + selected + + + 0 + 90 + 738 + 25 + font14 + + grey + selected + + + + + 31 + 230 + 789 + 2 + left + separator2.png + + + 31 + 245 + 0 + 6 + 789 + 540 + 23 + 23 + 9001 + 9001 + + + Frequency + + 789 + + + + Airtime + + 789 + + + + Channels + + 789 + + + + Separator + 789 + 2 + left + separator2.png + + + + Keep + + 789 + + + + Record minutes before start + + 789 + + + + Record minutes after end + + 789 + + + + + + 824 + 88 + + -1 + -2 + 312 + 542 + dialogs/default/inner.png + + + + 9001 + 23 + 23 + 9001 + + Ok Button + 310 + + + + Cancel Button + 310 + + + + + + + diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/skins/skin.amber/1080i/DialogRecordSettings.xml xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/skins/skin.amber/1080i/DialogRecordSettings.xml --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/skins/skin.amber/1080i/DialogRecordSettings.xml 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/skins/skin.amber/1080i/DialogRecordSettings.xml 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,157 @@ + + + 10 + + 1 + + OpenClose + + DimBG + + DialogOpenClose + + + 300 + 100 + 1220 + 880 + dialogs/DialogBG.png + + + + header label + 396 + 145 + 1005 + + Orange + center + InfoTitle + + + + + 396 + 220 + + 0 + 0 + 1005 + 36 + center + center + White2 + Details + + true + + + 0 + 40 + 1005 + 36 + Details + + center + center + White2 + + + 0 + 80 + 1005 + 36 + Details + + center + center + White2 + + + + 396 + 360 + 0 + 1005 + 900 + 9001 + 9001 + + + Frequency + + 10 + 10 + + + + Airtime + + 11 + 11 + + + + Channels + + 12 + 12 + + + + Separator + 20 + + + + Keep + + 13 + 13 + + + + Record minutes before start + + 14 + 14 + + + + Record minutes after end + + 15 + 15 + + + + + + 590 + 850 + 15 + 10 + horizontal + 0 + + Ok Button + 300 + + center + center + 2 + 2 + + + Cancel Button + 300 + + center + center + 1 + 1 + + + + + diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/skins/skin.confluence/720p/DialogRecordSettings.xml xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/skins/skin.confluence/720p/DialogRecordSettings.xml --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/skins/skin.confluence/720p/DialogRecordSettings.xml 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/skins/skin.confluence/720p/DialogRecordSettings.xml 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,191 @@ + + 10 + + 1 + 240 + 100 + + dialogeffect + + + + background image + 0 + 0 + 800 + 500 + DialogBack.png + + + Dialog Header image + 40 + 16 + 720 + 40 + dialogheader.png + + + header label + 40 + 20 + 720 + 30 + font13_title + + center + center + selected + black + + + Close Window button + 710 + 15 + 64 + 32 + + - + PreviousMenu + DialogCloseButton-focus.png + DialogCloseButton.png + 10 + 10 + 10 + 10 + system.getbool(input.enablemouse) + + + + + 40 + 100 + 720 + 30 + font12_title + + left + center + white + + + 40 + 60 + 355 + 30 + font12_title + + left + center + white + + + 400 + 60 + 355 + 30 + font12_title + + left + center + white + + + 40 + 140 + 5 + 720 + 290 + 9001 + 9001 + + + Frequency + 720 + 40 + + 10 + 10 + + + + Airtime + 720 + 40 + + 11 + 11 + + + + Channels + 720 + 40 + + 12 + 12 + + + + Separator + 2 + 720 + stretch + separator2.png + + + + Keep + 720 + 40 + + 13 + 13 + + + + Record minutes before start + 720 + 40 + + 14 + 14 + + + + Record minutes after end + 720 + 40 + + 15 + 15 + + + + + + 190 + 435 + 15 + 10 + horizontal + + Ok Button + 200 + center + center + + 2 + 2 + + + Cancel Button + 200 + center + center + + 1 + 1 + + + + Binary files /tmp/UcvNg8jDVY/xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/skins/skin.confluence/media/DialogBack.png and /tmp/oKs4Tf_q_0/xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/skins/skin.confluence/media/DialogBack.png differ Binary files /tmp/UcvNg8jDVY/xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/skins/skin.confluence/media/dialogheader.png and /tmp/oKs4Tf_q_0/xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/skins/skin.confluence/media/dialogheader.png differ Binary files /tmp/UcvNg8jDVY/xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/skins/skin.confluence/media/separator2.png and /tmp/oKs4Tf_q_0/xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/skins/skin.confluence/media/separator2.png differ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/skins/skin.transparency/720p/DialogRecordSettings.xml xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/skins/skin.transparency/720p/DialogRecordSettings.xml --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/addon/resources/skins/skin.transparency/720p/DialogRecordSettings.xml 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/addon/resources/skins/skin.transparency/720p/DialogRecordSettings.xml 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,221 @@ + + 10 + + 1 + 240 + 60 + + dialogeffect + + + + 0 + 0 + 800 + 540 + dialog.png + + + + + header label + 40 + 30 + 720 + 30 + + center + center + font-32 + blue + + + 40 + 70 + 720 + 2 + separator.png + + + dialogeffect4 + + 730 + 37 + 20 + 20 + close-window-focus.png + close-window-nofocus.png + Dialog.Close(pvrtimersetting) + Skin.HasSetting(TouchScreenMode) + + + + + + 40 + 70 + + 0 + 0 + 720 + 30 + Font_19 + + center + center + white + + + 0 + 30 + 720 + 30 + Font_19 + + center + center + white + + + 0 + 60 + 720 + 30 + Font_19 + + center + center + white + + + + 40 + 160 + 720 + 1 + separator.png + + + + 40 + 170 + 5 + 720 + 290 + 9001 + 9001 + + + Frequency + 720 + 40 + + 10 + 10 + + + + Airtime + 720 + 40 + + 11 + 11 + + + + Channels + 720 + 40 + + 12 + 12 + + + + Separator + 720 + 1 + separator.png + + + + Keep + 720 + 40 + + 13 + 13 + + + + Record minutes before start + 720 + 40 + + 14 + 14 + + + + Record minutes after end + 720 + 40 + + 15 + 15 + + + + + + 190 + 465 + 15 + 10 + horizontal + + Ok Button + 200 + 35 + font-20 + white + white + black + center + center + button-nofocus.png + button-nofocus.png + + 2 + 2 + + + Cancel Button + 200 + 35 + font-20 + white + white + black + center + center + button-nofocus.png + button-nofocus.png + + 1 + 1 + + + + 190 + 465 + 200 + 35 + button-focus.png + Conditional + Conditional + Control.HasFocus(1) | Control.HasFocus(2) + + + diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/Makefile.am xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/Makefile.am --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/Makefile.am 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/Makefile.am 2014-07-18 06:05:30.000000000 +0000 @@ -19,8 +19,10 @@ libmediaportal_addon_la_SOURCES = src/Cards.cpp \ src/channels.cpp \ src/client.cpp \ + src/DateTime.cpp \ src/epg.cpp \ src/GenreTable.cpp \ + src/GUIDialogRecordSettings.cpp \ src/pvrclient-mediaportal.cpp \ src/recordings.cpp \ src/Socket.cpp \ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/project/VS2010Express/XBMC_MediaportalTVserver.vcxproj xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/project/VS2010Express/XBMC_MediaportalTVserver.vcxproj --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/project/VS2010Express/XBMC_MediaportalTVserver.vcxproj 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/project/VS2010Express/XBMC_MediaportalTVserver.vcxproj 2014-07-18 06:05:30.000000000 +0000 @@ -1,5 +1,5 @@  - + Debug @@ -21,10 +21,12 @@ DynamicLibrary MultiByte true + v120 DynamicLibrary MultiByte + v120 @@ -39,7 +41,6 @@ - <_ProjectFileVersion>10.0.30319.1 ..\..\addon\ $(Configuration)\ false @@ -121,8 +122,10 @@ + + @@ -149,9 +152,11 @@ + + diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/project/VS2010Express/XBMC_MediaportalTVserver.vcxproj.filters xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/project/VS2010Express/XBMC_MediaportalTVserver.vcxproj.filters --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/project/VS2010Express/XBMC_MediaportalTVserver.vcxproj.filters 2013-12-13 13:17:21.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/project/VS2010Express/XBMC_MediaportalTVserver.vcxproj.filters 2014-07-18 06:05:30.000000000 +0000 @@ -107,6 +107,12 @@ Source Files\lib%255ctsreader + + Source Files + + + Source Files + @@ -115,9 +121,6 @@ Header Files - - Header Files - Header Files @@ -193,5 +196,14 @@ Header Files + + Header Files + + + Header Files + + + Header Files + \ No newline at end of file diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/Cards.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/Cards.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/Cards.cpp 2013-12-13 13:17:21.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/Cards.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -22,6 +22,7 @@ #include "uri.h" #include "utils.h" #include "client.h" +#include "DateTime.h" using namespace ADDON; @@ -71,7 +72,7 @@ card.Name = fields[2]; card.Priority = atoi(fields[3].c_str()); card.GrabEPG = stringtobool(fields[4]); - card.LastEpgGrab = DateTimeToTimeT(fields[5]); + card.LastEpgGrab.SetFromDateTime(fields[5]); card.RecordingFolder = fields[6]; card.IdServer = atoi(fields[7].c_str()); card.Enabled = stringtobool(fields[8]); diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/Cards.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/Cards.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/Cards.h 2012-11-15 21:18:19.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/Cards.h 2014-07-18 06:05:30.000000000 +0000 @@ -20,7 +20,7 @@ #include #include -#include +#include "DateTime.h" using namespace std; @@ -29,25 +29,25 @@ */ typedef struct Card { - int IdCard; - string DevicePath; - string Name; - int Priority; - bool GrabEPG; - time_t LastEpgGrab; - string RecordingFolder; - string RecordingFolderUNC; - int IdServer; - bool Enabled; - int CamType; - string TimeshiftFolder; - string TimeshiftFolderUNC; - int RecordingFormat; - int DecryptLimit; - bool Preload; - bool CAM; - int NetProvider; - bool StopGraph; + int IdCard; + string DevicePath; + string Name; + int Priority; + bool GrabEPG; + MPTV::CDateTime LastEpgGrab; + string RecordingFolder; + string RecordingFolderUNC; + int IdServer; + bool Enabled; + int CamType; + string TimeshiftFolder; + string TimeshiftFolderUNC; + int RecordingFormat; + int DecryptLimit; + bool Preload; + bool CAM; + int NetProvider; + bool StopGraph; } Card; class CCards: public vector diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/channels.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/channels.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/channels.h 2013-03-12 10:51:22.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/channels.h 2014-07-18 06:05:30.000000000 +0000 @@ -15,7 +15,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/client.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/client.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/client.cpp 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/client.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -54,6 +54,7 @@ std::string g_szClientPath = ""; CHelper_libXBMC_addon *XBMC = NULL; CHelper_libXBMC_pvr *PVR = NULL; +CHelper_libXBMC_gui *GUI = NULL; extern "C" { @@ -89,6 +90,15 @@ return ADDON_STATUS_PERMANENT_FAILURE; } + GUI = new CHelper_libXBMC_gui; + if (!GUI->RegisterMe(hdl)) + { + SAFE_DELETE(GUI); + SAFE_DELETE(PVR); + SAFE_DELETE(XBMC); + return ADDON_STATUS_PERMANENT_FAILURE; + } + XBMC->Log(LOG_INFO, "Creating MediaPortal PVR-Client"); m_CurStatus = ADDON_STATUS_UNKNOWN; @@ -104,6 +114,7 @@ if (m_CurStatus != ADDON_STATUS_OK) { SAFE_DELETE(g_client); + SAFE_DELETE(GUI); SAFE_DELETE(PVR); SAFE_DELETE(XBMC); } @@ -118,6 +129,7 @@ void ADDON_Destroy() { SAFE_DELETE(g_client); + SAFE_DELETE(GUI); SAFE_DELETE(PVR); SAFE_DELETE(XBMC); diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/client.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/client.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/client.h 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/client.h 2014-07-18 06:05:30.000000000 +0000 @@ -15,7 +15,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ @@ -73,6 +74,7 @@ extern ADDON::CHelper_libXBMC_addon *XBMC; extern CHelper_libXBMC_pvr *PVR; +extern CHelper_libXBMC_gui *GUI; extern int g_iTVServerXBMCBuild; diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/DateTime.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/DateTime.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/DateTime.cpp 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/DateTime.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,200 @@ +/* + * Copyright (C) 2005-2013 Team XBMC + * http://www.xbmc.org + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include +#include +#include +#include +#include "DateTime.h" + +namespace MPTV +{ + +void CDateTime::InitLocale(void) +{ + // Follow system default for date and time formatting + // because we cannot access XBMC's locale settings from the PVR addon + setlocale(LC_ALL, ""); +} + +CDateTime::CDateTime() +{ + InitLocale(); + memset(&m_time, 0, sizeof(m_time)); +} + +CDateTime::CDateTime(const time_t& dateTime) +{ + InitLocale(); + SetFromTime(dateTime); +} + +CDateTime::CDateTime(const struct tm& dateTime) +{ + InitLocale(); + m_time = dateTime; +} + +CDateTime::~CDateTime() +{} + +int CDateTime::GetDay() const +{ + return m_time.tm_mday; +} + +int CDateTime::GetMonth() const +{ + return (m_time.tm_mon + 1); +} + +int CDateTime::GetYear() const +{ + return (m_time.tm_year + 1900); +} + +int CDateTime::GetHour() const +{ + return (m_time.tm_hour); +} + +int CDateTime::GetMinute() const +{ + return (m_time.tm_min); +} + +int CDateTime::GetSecond() const +{ + return (m_time.tm_sec); +} + +int CDateTime::GetDayOfWeek() const +{ + return (m_time.tm_wday); +} + +time_t CDateTime::GetAsTime() const +{ + time_t retval; + struct tm tm_time = m_time; + retval = mktime (&tm_time); + + if(retval < 0) + retval = 0; + + return retval; +} + +bool CDateTime::SetFromDateTime(const std::string& dateTime) +{ + int year, month ,day; + int hour, minute, second; + int count; + + count = sscanf(dateTime.c_str(), "%4d-%2d-%2d %2d:%2d:%2d", &year, &month, &day, &hour, &minute, &second); + + if(count != 6) + return false; + + m_time.tm_hour = hour; + m_time.tm_min = minute; + m_time.tm_sec = second; + m_time.tm_year = year - 1900; + m_time.tm_mon = month - 1; + m_time.tm_mday = day; + // Make the other fields empty: + m_time.tm_isdst = -1; + m_time.tm_wday = 0; + m_time.tm_yday = 0; + + return true; +} + +void CDateTime::SetFromTime(const time_t& time) +{ + m_time = *localtime( &time ); +} + +void CDateTime::SetFromTM(const struct tm& time) +{ + m_time = time; +} + +void CDateTime::GetAsLocalizedDate(std::string & strDate) const +{ + const unsigned int bufSize = 64; + char buffer[bufSize]; + + strftime(buffer, bufSize, "%x", &m_time); + strDate = buffer; +} + +void CDateTime::GetAsLocalizedTime(std::string & strTime) const +{ + const unsigned int bufSize = 64; + char buffer[bufSize]; + + strftime(buffer, bufSize, "%H:%M", &m_time); + strTime = buffer; +} + +int CDateTime::operator -(const CDateTime& right) const +{ + time_t leftTime = GetAsTime(); + time_t rightTime = right.GetAsTime(); + + return (int) (leftTime-rightTime); +} + +const CDateTime& CDateTime::operator =(const time_t& right) +{ + SetFromTime(right); + return *this; +} + +const CDateTime& CDateTime::operator =(const tm& right) +{ + m_time = right; + return *this; +} + +bool CDateTime::operator ==(const time_t& right) const +{ + time_t left = GetAsTime(); + return (left == right); +} + +const CDateTime& CDateTime::operator +=(const int seconds) +{ + time_t left = GetAsTime(); + left += seconds; + SetFromTime(left); + return *this; +} + +time_t CDateTime::Now() +{ + time_t now; + + time(&now); + + return now; +} + +} // namespace MPTV diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/DateTime.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/DateTime.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/DateTime.h 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/DateTime.h 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,83 @@ +#pragma once +/* + * Copyright (C) 2005-2013 Team XBMC + * http://www.xbmc.org + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include +#include + +namespace MPTV +{ + +class CDateTime +{ +public: + CDateTime(); + CDateTime(const struct tm& time); + CDateTime(const time_t& time); + virtual ~CDateTime(); + + int GetDay() const; + int GetMonth() const; + int GetYear() const; + int GetHour() const; + int GetMinute() const; + int GetSecond() const; + int GetDayOfWeek() const; + int GetMinuteOfDay() const; + + time_t GetAsTime(void) const; + + /** + * @brief Converts the stored datetime value to a string with the date representation for current locale + * @param strDate the date string (return value) + */ + void GetAsLocalizedDate(std::string& strDate) const; + + /** + * @brief Converts the stored datetime value to a string with the time representation for current locale + * @param strDate the date string (return value) + */ + void GetAsLocalizedTime(std::string& strTime) const; + + /** + * @brief Sets the date and time from a C# DateTime string + * Assumes the usage of somedatetimeval.ToString("u") in C# + */ + bool SetFromDateTime(const std::string& dateTime); + + /** + * @brief Sets the date and time from a time_t value + */ + void SetFromTime(const time_t& time); + void SetFromTM(const struct tm& time); + + int operator -(const CDateTime& right) const; + const CDateTime& operator =(const time_t& right); + const CDateTime& operator =(const tm& right); + bool operator ==(const time_t& right) const; + const CDateTime& operator +=(const int seconds); + + static time_t Now(); +private: + void InitLocale(void); + + struct tm m_time; +}; + +} // namespace MPTV diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/epg.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/epg.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/epg.cpp 2012-11-15 21:18:19.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/epg.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -26,6 +26,7 @@ #include "epg.h" #include "utils.h" #include "client.h" +#include "DateTime.h" using namespace ADDON; @@ -48,10 +49,8 @@ m_episodePart.clear(); m_uid = 0; - m_StartTime = 0; - m_EndTime = 0; m_originalAirDate = 0; - m_Duration = 0; + m_duration = 0; m_genre_type = 0; m_genre_subtype = 0; m_seriesNumber = 0; @@ -87,23 +86,19 @@ // field 13 = starRating (int) // field 14 = parentalRating (int) - m_StartTime = DateTimeToTimeT(epgfields[0]); - - if(m_StartTime < 0) + if( m_startTime.SetFromDateTime(epgfields[0]) == false ) { XBMC->Log(LOG_ERROR, "cEpg::ParseLine: Unable to convert start time '%s' into date+time", epgfields[0].c_str()); return false; } - m_EndTime = DateTimeToTimeT(epgfields[1]); - - if( m_EndTime < 0) + if( m_endTime.SetFromDateTime(epgfields[1]) == false ) { XBMC->Log(LOG_ERROR, "cEpg::ParseLine: Unable to convert end time '%s' into date+time", epgfields[1].c_str()); return false; } - m_Duration = m_EndTime - m_StartTime; + m_duration = m_endTime - m_startTime; m_title = epgfields[2]; m_description = epgfields[3]; @@ -123,9 +118,7 @@ m_parentalRating = atoi(epgfields[14].c_str()); //originalAirDate - m_originalAirDate = DateTimeToTimeT(epgfields[11]); - - if( m_originalAirDate < 0) + if( m_originalAirDate.SetFromDateTime(epgfields[11]) == false ) { XBMC->Log(LOG_ERROR, "cEpg::ParseLine: Unable to convert original air date '%s' into date+time", epgfields[11].c_str()); return false; @@ -147,3 +140,21 @@ { m_genretable = genretable; } + +time_t cEpg::StartTime(void) const +{ + time_t retval = m_startTime.GetAsTime(); + return retval; +} + +time_t cEpg::EndTime(void) const +{ + time_t retval = m_endTime.GetAsTime(); + return retval; +} + +time_t cEpg::OriginalAirDate(void) const +{ + time_t retval = m_endTime.GetAsTime(); + return retval; +} diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/epg.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/epg.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/epg.h 2012-11-15 21:18:19.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/epg.h 2014-07-18 06:05:30.000000000 +0000 @@ -15,7 +15,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ @@ -28,6 +29,7 @@ #include "libXBMC_addon.h" #include "libXBMC_pvr.h" #include "GenreTable.h" +#include "DateTime.h" using namespace std; @@ -38,10 +40,10 @@ string m_title; string m_shortText; string m_description; - time_t m_StartTime; - time_t m_EndTime; - time_t m_originalAirDate; - int m_Duration; + MPTV::CDateTime m_startTime; + MPTV::CDateTime m_endTime; + MPTV::CDateTime m_originalAirDate; + int m_duration; string m_genre; int m_genre_type; int m_genre_subtype; @@ -60,10 +62,10 @@ bool ParseLine(string& data); int UniqueId(void) const { return m_uid; } - time_t StartTime(void) const { return m_StartTime; } - time_t EndTime(void) const { return m_EndTime; } - time_t Duration(void) const { return m_Duration; } - time_t OriginalAirDate(void) const { return m_originalAirDate; } + time_t StartTime(void) const; + time_t EndTime(void) const; + time_t Duration(void) const { return m_duration; } + time_t OriginalAirDate(void) const; const char *Title(void) const { return m_title.c_str(); } const char *ShortText(void) const { return m_shortText.c_str(); } const char *Description(void) const { return m_description.c_str(); } diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/GUIDialogRecordSettings.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/GUIDialogRecordSettings.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/GUIDialogRecordSettings.cpp 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/GUIDialogRecordSettings.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,361 @@ +/* + * Copyright (C) 2005-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * http://www.gnu.org/copyleft/gpl.html + * + */ + +#include "client.h" +#include "GUIDialogRecordSettings.h" +#include "libXBMC_gui.h" +#include "timers.h" +#include "utils.h" +#include "DateTime.h" + +/* Dialog item identifiers */ +#define BUTTON_OK 1 +#define BUTTON_CANCEL 2 + +#define SPIN_CONTROL_FREQUENCY 10 +#define SPIN_CONTROL_AIRTIME 11 +#define SPIN_CONTROL_CHANNELS 12 +#define SPIN_CONTROL_KEEP 13 +#define SPIN_CONTROL_PRERECORD 14 +#define SPIN_CONTROL_POSTRECORD 15 + +#define LABEL_PROGRAM_TITLE 20 +#define LABEL_PROGRAM_START_TIME 21 +#define LABEL_PROGRAM_CHANNEL 22 + +using namespace std; +using namespace MPTV; + +CGUIDialogRecordSettings::CGUIDialogRecordSettings(const PVR_TIMER &timerinfo, cTimer& timer, const std::string& channelName) : + m_spinFrequency(NULL), + m_spinAirtime(NULL), + m_spinChannels(NULL), + m_spinKeep(NULL), + m_spinPreRecord(NULL), + m_spinPostRecord(NULL), + m_frequency(Once), + m_airtime(ThisTime), + m_channels(ThisChannel), + m_timerinfo(timerinfo), + m_timer(timer) +{ + CDateTime startTime(m_timerinfo.startTime); + CDateTime endTime(m_timerinfo.endTime); + startTime.GetAsLocalizedTime(m_startTime); + startTime.GetAsLocalizedDate(m_startDate); + endTime.GetAsLocalizedTime(m_endTime); + + m_title = m_timerinfo.strTitle; + m_channel = channelName; + + // needed for every dialog + m_retVal = -1; // init to failed load value (due to xml file not being found) + // Default skin should actually be "skin.confluence", but the fallback mechanism will only + // find the xml file and not the used image files. This will result in a transparent window + // which is basically useless. Therefore, it is better to let the dialog fail by using the + // incorrect fallback skin name "Confluence" + m_window = GUI->Window_create("DialogRecordSettings.xml", "Confluence", false, true); + if (m_window) + { + m_window->m_cbhdl = this; + m_window->CBOnInit = OnInitCB; + m_window->CBOnFocus = OnFocusCB; + m_window->CBOnClick = OnClickCB; + m_window->CBOnAction = OnActionCB; + } +} + +CGUIDialogRecordSettings::~CGUIDialogRecordSettings() +{ + GUI->Window_destroy(m_window); +} + + +bool CGUIDialogRecordSettings::OnInit() +{ + // Display the recording details in the window + m_window->SetControlLabel(LABEL_PROGRAM_TITLE, m_title.c_str()); + string strTimeSlot = m_startDate + " " + m_startTime + " - " + m_endTime; + m_window->SetControlLabel(LABEL_PROGRAM_START_TIME, strTimeSlot.c_str()); + m_window->SetControlLabel(LABEL_PROGRAM_CHANNEL, m_channel.c_str()); + + // Init spin controls + m_spinFrequency = GUI->Control_getSpin(m_window, SPIN_CONTROL_FREQUENCY); + m_spinAirtime = GUI->Control_getSpin(m_window, SPIN_CONTROL_AIRTIME); + m_spinChannels = GUI->Control_getSpin(m_window, SPIN_CONTROL_CHANNELS); + m_spinKeep = GUI->Control_getSpin(m_window, SPIN_CONTROL_KEEP); + m_spinPreRecord = GUI->Control_getSpin(m_window, SPIN_CONTROL_PRERECORD); + m_spinPostRecord = GUI->Control_getSpin(m_window, SPIN_CONTROL_POSTRECORD); + + if (!m_spinFrequency || !m_spinAirtime || !m_spinChannels || !m_spinKeep || !m_spinPreRecord || !m_spinPostRecord) + return false; + + // Populate Frequency spin control + for (int i = 0; i < 5; i++) + { // show localized recording options + m_spinFrequency->AddLabel(XBMC->GetLocalizedString(30110 + i), i); + } + // set the default value + m_spinFrequency->SetValue(CGUIDialogRecordSettings::Once); + + // Populate Airtime spin control + string strThisTime = XBMC->GetLocalizedString(30120); + strThisTime += "(" + m_startTime + ")"; + m_spinAirtime->AddLabel(strThisTime.c_str(), CGUIDialogRecordSettings::ThisTime); + m_spinAirtime->AddLabel(XBMC->GetLocalizedString(30121), CGUIDialogRecordSettings::AnyTime); + // Set the default values + m_spinAirtime->SetValue(CGUIDialogRecordSettings::ThisTime); + m_spinAirtime->SetVisible(false); + + // Populate Channels spin control + for (int i = 0; i < 2; i++) + { // show localized recording options + m_spinChannels->AddLabel(XBMC->GetLocalizedString(30125 + i), i); + } + // Set the default values + m_spinChannels->SetValue(CGUIDialogRecordSettings::ThisChannel); + m_spinChannels->SetVisible(false); + + // Populate Keep spin control + for (int i = 0; i < 4; i++) + { // show localized recording options + m_spinKeep->AddLabel(XBMC->GetLocalizedString(30130 + i), i); + } + // Set the default values + m_spinKeep->SetValue(TvDatabase::Always); + + // Populate PreRecord spin control + CStdString marginStart; + marginStart.Format("%d (%s)", m_timerinfo.iMarginStart, XBMC->GetLocalizedString(30136)); + m_spinPreRecord->AddLabel(XBMC->GetLocalizedString(30135), -1); + m_spinPreRecord->AddLabel(marginStart.c_str(), m_timerinfo.iMarginStart); //value from XBMC + m_spinPreRecord->SetValue(m_timerinfo.iMarginStart); // Set the default value + m_spinPreRecord->AddLabel("0", 0); + m_spinPreRecord->AddLabel("3", 3); + m_spinPreRecord->AddLabel("5", 5); + m_spinPreRecord->AddLabel("7", 7); + m_spinPreRecord->AddLabel("10", 10); + m_spinPreRecord->AddLabel("15", 15); + + // Populate PostRecord spin control + CStdString marginEnd; + marginEnd.Format("%d (%s)", m_timerinfo.iMarginEnd, XBMC->GetLocalizedString(30136)); + m_spinPostRecord->AddLabel(XBMC->GetLocalizedString(30135), -1); + m_spinPostRecord->AddLabel(marginEnd.c_str(), m_timerinfo.iMarginEnd); //value from XBMC + m_spinPostRecord->SetValue(m_timerinfo.iMarginEnd); // Set the default value + m_spinPostRecord->AddLabel("0", 0); + m_spinPostRecord->AddLabel("3", 3); + m_spinPostRecord->AddLabel("5", 5); + m_spinPostRecord->AddLabel("7", 7); + m_spinPostRecord->AddLabel("10", 10); + m_spinPostRecord->AddLabel("15", 15); + m_spinPostRecord->AddLabel("20", 20); + m_spinPostRecord->AddLabel("30", 30); + m_spinPostRecord->AddLabel("45", 45); + m_spinPostRecord->AddLabel("60", 60); + + return true; +} + +bool CGUIDialogRecordSettings::OnClick(int controlId) +{ + switch(controlId) + { + case BUTTON_OK: // save value from GUI, then FALLS THROUGH TO CANCEL + m_frequency = (RecordingFrequency) m_spinFrequency->GetValue(); + m_airtime = (RecordingAirtime) m_spinAirtime->GetValue(); + m_channels = (RecordingChannels) m_spinChannels->GetValue(); + + /* Update the Timer settings */ + UpdateTimerSettings(); + + m_retVal = 1; + Close(); + break; + case BUTTON_CANCEL: + m_retVal = 0; + Close(); + break; + /* Limit the available options based on the SPIN settings + * MediaPortal does not support all combinations + */ + case SPIN_CONTROL_FREQUENCY: + m_frequency = (RecordingFrequency) m_spinFrequency->GetValue(); + + switch (m_frequency) + { + case Once: + case Weekends: + case WeekDays: + m_spinAirtime->SetVisible(false); + m_spinChannels->SetVisible(false); + break; + case Weekly: + m_spinAirtime->SetVisible(true); + m_spinChannels->SetVisible(false); + break; + case Daily: + m_spinAirtime->SetVisible(true); + m_spinChannels->SetVisible(true); + break; + } + break; + case SPIN_CONTROL_CHANNELS: + m_channels = (RecordingChannels) m_spinChannels->GetValue(); + + //switch (m_frequency) + //{ + // case Once: + // case Weekends: + // case WeekDays: + // case Weekly: + // m_channels = ThisChannel; + // m_spinChannels->SetValue(m_channels); + // break; + //} + + /* This time on any channel is not supported by MediaPortal */ + if (m_channels == AnyChannel) + m_spinAirtime->SetValue(AnyTime); + break; + case SPIN_CONTROL_AIRTIME: + m_airtime = (RecordingAirtime) m_spinAirtime->GetValue(); + + if (m_airtime == ThisTime) + m_spinChannels->SetValue(ThisChannel); + break; + } + + return true; +} + +bool CGUIDialogRecordSettings::OnInitCB(GUIHANDLE cbhdl) +{ + CGUIDialogRecordSettings* dialog = static_cast(cbhdl); + return dialog->OnInit(); +} + +bool CGUIDialogRecordSettings::OnClickCB(GUIHANDLE cbhdl, int controlId) +{ + CGUIDialogRecordSettings* dialog = static_cast(cbhdl); + return dialog->OnClick(controlId); +} + +bool CGUIDialogRecordSettings::OnFocusCB(GUIHANDLE cbhdl, int controlId) +{ + CGUIDialogRecordSettings* dialog = static_cast(cbhdl); + return dialog->OnFocus(controlId); +} + +bool CGUIDialogRecordSettings::OnActionCB(GUIHANDLE cbhdl, int actionId) +{ + CGUIDialogRecordSettings* dialog = static_cast(cbhdl); + return dialog->OnAction(actionId); +} + +bool CGUIDialogRecordSettings::Show() +{ + if (m_window) + return m_window->Show(); + + return false; +} + +void CGUIDialogRecordSettings::Close() +{ + if (m_window) + { + GUI->Control_releaseSpin(m_spinFrequency); + GUI->Control_releaseSpin(m_spinAirtime); + GUI->Control_releaseSpin(m_spinChannels); + GUI->Control_releaseSpin(m_spinKeep); + GUI->Control_releaseSpin(m_spinPreRecord); + GUI->Control_releaseSpin(m_spinPostRecord); + m_window->Close(); + } +} + +int CGUIDialogRecordSettings::DoModal() +{ + if (m_window) + m_window->DoModal(); + return m_retVal; +} + + +bool CGUIDialogRecordSettings::OnFocus(int controlId) +{ + return true; +} + +/* + * This callback is called by XBMC before executing its internal OnAction() function + * Returning "true" tells XBMC that we already handled the action, returing "false" + * passes action to the XBMC internal OnAction() function + */ +bool CGUIDialogRecordSettings::OnAction(int actionId) +{ + //XBMC->Log(ADDON::LOG_DEBUG, "%s: action = %i\n", __FUNCTION__, actionId); + if (actionId == ADDON_ACTION_CLOSE_DIALOG || actionId == ADDON_ACTION_PREVIOUS_MENU || actionId == 92 /* Back */) + return OnClick(BUTTON_CANCEL); + else + /* return false to tell XBMC that it should take over */ + return false; +} + +void CGUIDialogRecordSettings::UpdateTimerSettings(void) +{ + switch(m_frequency) + { + case Once: + m_timer.SetScheduleRecordingType(TvDatabase::Once); + break; + case Weekends: + m_timer.SetScheduleRecordingType(TvDatabase::Weekends); + break; + case WeekDays: + m_timer.SetScheduleRecordingType(TvDatabase::WorkingDays); + break; + case Weekly: + if (m_airtime == ThisTime) + m_timer.SetScheduleRecordingType(TvDatabase::Weekly); + else + m_timer.SetScheduleRecordingType(TvDatabase::WeeklyEveryTimeOnThisChannel); + break; + case Daily: + switch (m_airtime) + { + case ThisTime: + m_timer.SetScheduleRecordingType(TvDatabase::Daily); + break; + case AnyTime: + if (m_channels == ThisChannel) + m_timer.SetScheduleRecordingType(TvDatabase::EveryTimeOnThisChannel); + else + m_timer.SetScheduleRecordingType(TvDatabase::EveryTimeOnEveryChannel); + break; + } + } + + m_timer.SetKeepMethod((TvDatabase::KeepMethodType) m_spinKeep->GetValue()); + m_timer.SetPreRecordInterval(m_spinPreRecord->GetValue()); + m_timer.SetPostRecordInterval(m_spinPostRecord->GetValue()); +} diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/GUIDialogRecordSettings.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/GUIDialogRecordSettings.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/GUIDialogRecordSettings.h 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/GUIDialogRecordSettings.h 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,99 @@ +#pragma once + +/* + * Copyright (C) 2013 Marcel Groothuis + * Copyright (C) 2005-2013 Team XBMC + * http://www.xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * http://www.gnu.org/copyleft/gpl.html + * + */ + +#include "client.h" +#include "timers.h" + +class CGUIDialogRecordSettings +{ +public: + CGUIDialogRecordSettings(const PVR_TIMER &timerinfo, cTimer& timer, const std::string& channelName); + virtual ~CGUIDialogRecordSettings(); + + bool Show(); + void Close(); + int DoModal(); // returns -1 => load failed, 0 => cancel, 1 => ok + +private: + // Following is needed for every dialog: + CAddonGUIWindow* m_window; + int m_retVal; // -1 => load failed, 0 => cancel, 1 => ok + + bool OnClick(int controlId); + bool OnFocus(int controlId); + bool OnInit(); + bool OnAction(int actionId); + + static bool OnClickCB(GUIHANDLE cbhdl, int controlId); + static bool OnFocusCB(GUIHANDLE cbhdl, int controlId); + static bool OnInitCB(GUIHANDLE cbhdl); + static bool OnActionCB(GUIHANDLE cbhdl, int actionId); + + // Specific for this dialog: + CAddonGUISpinControl* m_spinFrequency; + CAddonGUISpinControl* m_spinAirtime; + CAddonGUISpinControl* m_spinChannels; + CAddonGUISpinControl* m_spinKeep; + CAddonGUISpinControl* m_spinPreRecord; + CAddonGUISpinControl* m_spinPostRecord; + + void UpdateTimerSettings(void); + + /* Enumerated types corresponding with the spincontrol values */ + enum RecordingFrequency + { + Once = 0, + Daily = 1, + Weekly = 2, + Weekends = 3, + WeekDays = 4 + }; + + enum RecordingAirtime + { + ThisTime = 0, + AnyTime = 1 + }; + + enum RecordingChannels + { + ThisChannel = 0, + AnyChannel = 1 + }; + + /* Private members */ + std::string m_channel; + std::string m_startTime; + std::string m_startDate; + std::string m_endTime; + std::string m_title; + + RecordingFrequency m_frequency; + RecordingAirtime m_airtime; + RecordingChannels m_channels; + + const PVR_TIMER &m_timerinfo; + cTimer& m_timer; +}; + diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/ChannelInfo.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/ChannelInfo.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/ChannelInfo.cpp 2013-12-13 13:17:21.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/ChannelInfo.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/ChannelInfo.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/ChannelInfo.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/ChannelInfo.h 2013-12-13 13:17:21.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/ChannelInfo.h 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/DvbUtil.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/DvbUtil.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/DvbUtil.cpp 2013-12-13 13:17:21.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/DvbUtil.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/DvbUtil.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/DvbUtil.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/DvbUtil.h 2013-12-13 13:17:21.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/DvbUtil.h 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PacketSync.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PacketSync.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PacketSync.cpp 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PacketSync.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PacketSync.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PacketSync.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PacketSync.h 2013-12-13 13:17:21.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PacketSync.h 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PatParser.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PatParser.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PatParser.cpp 2013-12-13 13:17:21.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PatParser.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PatParser.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PatParser.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PatParser.h 2013-12-13 13:17:21.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PatParser.h 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PidTable.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PidTable.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PidTable.cpp 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PidTable.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PidTable.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PidTable.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PidTable.h 2013-12-13 13:17:21.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PidTable.h 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PmtParser.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PmtParser.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PmtParser.cpp 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PmtParser.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with GNU Make; see the file COPYING. If not, write to -* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +* the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, +* MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PmtParser.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PmtParser.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PmtParser.h 2013-12-13 13:17:21.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/PmtParser.h 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/Section.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/Section.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/Section.cpp 2013-12-13 13:17:21.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/Section.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/SectionDecoder.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/SectionDecoder.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/SectionDecoder.cpp 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/SectionDecoder.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/SectionDecoder.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/SectionDecoder.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/SectionDecoder.h 2013-12-13 13:17:21.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/SectionDecoder.h 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/Section.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/Section.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/Section.h 2013-12-13 13:17:21.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/Section.h 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/TSHeader.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/TSHeader.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/TSHeader.cpp 2013-12-13 13:17:21.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/TSHeader.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/TSHeader.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/TSHeader.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/lib/tsreader/TSHeader.h 2013-12-13 13:17:21.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/lib/tsreader/TSHeader.h 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/pvrclient-mediaportal.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/pvrclient-mediaportal.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/pvrclient-mediaportal.cpp 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/pvrclient-mediaportal.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -34,6 +34,7 @@ #ifdef TARGET_WINDOWS #include "FileUtils.h" #endif +#include "GUIDialogRecordSettings.h" using namespace std; using namespace ADDON; @@ -42,7 +43,7 @@ int g_iTVServerXBMCBuild = 0; /* PVR client version (don't forget to update also the addon.xml and the Changelog.txt files) */ -#define PVRCLIENT_MEDIAPORTAL_VERSION_STRING "1.9.13" +#define PVRCLIENT_MEDIAPORTAL_VERSION_STRING "1.9.15" /* TVServerXBMC plugin supported versions */ #define TVSERVERXBMC_MIN_VERSION_STRING "1.1.7.107" @@ -243,6 +244,9 @@ LoadGenreTable(); LoadCardSettings(); + /* The pvr addon cannot access XBMC's current locale settings, so just use the system default */ + setlocale(LC_ALL, ""); + return ADDON_STATUS_OK; } @@ -652,6 +656,11 @@ cChannel channel; if( channel.Parse(data) ) { + // Cache this channel in our local uid-channel list + // This cache is used for the GUIDialogRecordSettings + m_channelNames[channel.UID()] = channel.Name(); + + // Prepare the PVR_CHANNEL struct to transfer this channel to XBMC tag.iUniqueId = channel.UID(); tag.iChannelNumber = channel.ExternalID(); PVR_STRCPY(tag.strChannelName, channel.Name()); @@ -981,7 +990,7 @@ if ( (g_bUseRTSP == false) && (recording.IsRecording() == false) && (OS::CFile::Exists( recording.FilePath() ))) { // Direct access. Bypass the PVR addon completely (both ffmpeg and TSReader mode; Windows only) - PVR_STRCPY(tag.strStreamURL, recording.FilePath()); + PVR_STRCPY(tag.strStreamURL, ToXBMCPath(recording.FilePath()).c_str()); } else #endif @@ -1241,6 +1250,24 @@ cTimer timer(timerinfo); + if ((timerinfo.startTime > 0) && (timerinfo.iEpgUid != -1)) + { + /* New scheduled recording, not an instant or manual recording + * Present a custom dialog with advanced recording settings + */ + std::string strChannelName; + if (timerinfo.iClientChannelUid >= 0) + { + strChannelName = m_channelNames[timerinfo.iClientChannelUid]; + } + CGUIDialogRecordSettings dlgRecSettings( timerinfo, timer, strChannelName); + + int dlogResult = dlgRecSettings.DoModal(); + + if (dlogResult == 0) + return PVR_ERROR_NO_ERROR; // user canceled timer in dialog + } + result = SendCommand(timer.AddScheduleCommand()); if(result.find("True") == string::npos) diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/pvrclient-mediaportal.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/pvrclient-mediaportal.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/pvrclient-mediaportal.h 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/pvrclient-mediaportal.h 2014-07-18 06:05:30.000000000 +0000 @@ -129,6 +129,7 @@ PLATFORM::CMutex m_mutex; int64_t m_iLastRecordingUpdate; CTsReader* m_tsreader; + std::map m_channelNames; int m_signalStateCounter; int m_iSignal; int m_iSNR; diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/recordings.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/recordings.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/recordings.cpp 2013-12-13 13:17:21.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/recordings.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -26,13 +26,13 @@ #include "utils.h" #include "timers.h" #include "client.h" +#include "DateTime.h" using namespace ADDON; cRecording::cRecording() { - m_StartTime = 0; - m_Duration = 0; + m_duration = 0; m_Index = -1; m_cardSettings = NULL; m_channelID = 0; @@ -58,8 +58,6 @@ bool cRecording::ParseLine(const std::string& data) { - time_t endtime; - vector fields; Tokenize(data, fields, "|"); @@ -89,23 +87,20 @@ //[20] stopTime (int) m_Index = atoi(fields[0].c_str()); - m_StartTime = DateTimeToTimeT(fields[1]); - if (m_StartTime < 0) + if ( m_startTime.SetFromDateTime(fields[1]) == false ) { XBMC->Log(LOG_ERROR, "%s: Unable to convert start time '%s' into date+time", __FUNCTION__, fields[1].c_str()); return false; } - endtime = DateTimeToTimeT(fields[2]); - - if (endtime < 0) + if ( m_endTime.SetFromDateTime(fields[2]) == false ) { XBMC->Log(LOG_ERROR, "%s: Unable to convert end time '%s' into date+time", __FUNCTION__, fields[2].c_str()); return false; } - m_Duration = endtime - m_StartTime; + m_duration = m_endTime - m_startTime; m_channelName = fields[3]; m_title = fields[4]; @@ -124,9 +119,7 @@ // low disk space. The special value 99 means that this recording will live // forever, and a value of 0 means that this recording can be deleted any // time if a recording with a higher priority needs disk space." - m_keepUntilDate = DateTimeToTimeT(fields[8]); - - if (m_keepUntilDate < 0) + if ( m_keepUntilDate.SetFromDateTime(fields[8]) == false ) { // invalid date (or outside time_t boundaries) m_keepUntilDate = cUndefinedDate; @@ -227,7 +220,7 @@ break; case TvDatabase::TillDate: //until keepdate { - double diffseconds = difftime(m_keepUntilDate, m_StartTime); + int diffseconds = m_keepUntilDate - m_startTime; int daysremaining = (int)(diffseconds / cSecsInDay); // Calculate value in the range 1...98, based on m_keepdate if ((daysremaining < MAXLIFETIME) && (daysremaining >= 0)) @@ -302,3 +295,14 @@ { m_genretable = genretable; } + +time_t cRecording::StartTime(void) const +{ + time_t time = m_startTime.GetAsTime(); + return time; +} + +int cRecording::Duration(void) const +{ + return m_duration; +} diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/recordings.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/recordings.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/recordings.h 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/recordings.h 2014-07-18 06:05:30.000000000 +0000 @@ -22,6 +22,7 @@ #include "libXBMC_pvr.h" #include "Cards.h" #include "GenreTable.h" +#include "DateTime.h" using namespace std; @@ -41,8 +42,9 @@ string m_fileName; ///< The recording filename without path string m_stream; string m_originalurl; - time_t m_StartTime; - int m_Duration; + MPTV::CDateTime m_startTime; + MPTV::CDateTime m_endTime; + int m_duration; string m_title; // Title of this event string m_description; // Description of this event string m_episodeName; // Short description of this event (typically the episode name in case of a series) @@ -51,8 +53,8 @@ string m_episodePart; int m_scheduleID; int m_keepUntil; - time_t m_keepUntilDate; ///< MediaPortal keepUntilDate - CCards* m_cardSettings; ///< Pointer to the MediaPortal card settings. Will be used to determine the base path of the recordings + MPTV::CDateTime m_keepUntilDate; ///< MediaPortal keepUntilDate + CCards* m_cardSettings; ///< Pointer to the MediaPortal card settings. Will be used to determine the base path of the recordings string m_genre; int m_genre_type; int m_genre_subtype; @@ -68,8 +70,8 @@ bool ParseLine(const std::string& data); const char *ChannelName(void) const { return m_channelName.c_str(); } int Index(void) const { return m_Index; } - time_t StartTime(void) const { return m_StartTime; } - time_t Duration(void) const { return m_Duration; } + time_t StartTime(void) const; + int Duration(void) const; const char *Title(void) const { return m_title.c_str(); } const char *Description(void) const { return m_description.c_str(); } const char *EpisodeName(void) const { return m_episodeName.c_str(); } diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/timers.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/timers.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/timers.cpp 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/timers.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -27,23 +27,23 @@ #include "client.h" #include "timers.h" #include "utils.h" +#include "DateTime.h" using namespace ADDON; +using namespace MPTV; -cTimer::cTimer() +cTimer::cTimer() : + m_keepDate(cUndefinedDate), + m_canceled(cUndefinedDate) { m_index = -1; m_active = true; m_channel = 0; m_schedtype = TvDatabase::Once; - m_starttime = 0; - m_endtime = 0; m_priority = 0; m_keepmethod = TvDatabase::UntilSpaceNeeded; - m_keepdate = cUndefinedDate; m_prerecordinterval = -1; // Use MediaPortal setting instead m_postrecordinterval = -1; // Use MediaPortal setting instead - m_canceled = cUndefinedDate; m_series = false; m_done = false; m_ismanual = false; @@ -79,7 +79,7 @@ if (!m_active) { - m_canceled = Now(); + m_canceled = CDateTime::Now(); } else { @@ -96,16 +96,16 @@ if (timerinfo.startTime <= 0) { // Instant timer has starttime = 0, so set current time as starttime. - m_starttime = Now(); + m_startTime = CDateTime::Now(); m_ismanual = true; } else { - m_starttime = timerinfo.startTime; + m_startTime = timerinfo.startTime; m_ismanual = false; } - m_endtime = timerinfo.endTime; + m_endTime = timerinfo.endTime; //m_firstday = timerinfo.firstday; m_isrecording = (timerinfo.state == PVR_TIMER_STATE_RECORDING); m_priority = XBMC2MepoPriority(timerinfo.iPriority); @@ -167,14 +167,14 @@ tag.state = PVR_TIMER_STATE_CANCELLED; tag.iClientChannelUid = m_channel; PVR_STRCPY(tag.strTitle, m_title.c_str()); - tag.startTime = m_starttime ; - tag.endTime = m_endtime ; + tag.startTime = m_startTime.GetAsTime(); + tag.endTime = m_endTime.GetAsTime(); // From the VDR manual // firstday: The date of the first day when this timer shall start recording // (only available for repeating timers). if(Repeat()) { - tag.firstDay = m_starttime; + tag.firstDay = m_startTime.GetAsTime(); } else { tag.firstDay = 0; } @@ -190,12 +190,14 @@ time_t cTimer::StartTime(void) const { - return m_starttime; + time_t retVal = m_startTime.GetAsTime(); + return retVal; } time_t cTimer::EndTime(void) const { - return m_endtime; + time_t retVal = m_endTime.GetAsTime(); + return retVal; } bool cTimer::ParseLine(const char *s) @@ -228,14 +230,11 @@ // field 17 = isrecording (True/False) // field 18 = program id (EPG) m_index = atoi(schedulefields[0].c_str()); - m_starttime = DateTimeToTimeT(schedulefields[1]); - if( m_starttime < 0) + if ( m_startTime.SetFromDateTime(schedulefields[1]) == false ) return false; - m_endtime = DateTimeToTimeT(schedulefields[2]); - - if( m_endtime < 0) + if ( m_endTime.SetFromDateTime(schedulefields[2]) == false ) return false; m_channel = atoi(schedulefields[3].c_str()); @@ -252,9 +251,7 @@ { //TVServerXBMC build >= 100 m_keepmethod = (TvDatabase::KeepMethodType) atoi(schedulefields[11].c_str()); - m_keepdate = DateTimeToTimeT(schedulefields[12]); - - if( m_keepdate < 0) + if ( m_keepDate.SetFromDateTime(schedulefields[12]) == false ) return false; m_prerecordinterval = atoi(schedulefields[13].c_str()); @@ -263,12 +260,12 @@ // The DateTime value 2000-01-01 00:00:00 means: active in MediaPortal if(schedulefields[15].compare("2000-01-01 00:00:00Z")==0) { - m_canceled = cUndefinedDate; + m_canceled.SetFromTime(cUndefinedDate); m_active = true; } else { - m_canceled = DateTimeToTimeT(schedulefields[15]); + m_canceled.SetFromDateTime(schedulefields[15]); m_active = false; } @@ -279,7 +276,7 @@ else { m_keepmethod = TvDatabase::UntilSpaceNeeded; - m_keepdate = cUndefinedDate; + m_keepDate = cUndefinedDate; m_prerecordinterval = -1; m_postrecordinterval = -1; m_canceled = cUndefinedDate; @@ -324,11 +321,7 @@ // Not sure what to do with this MediaPortal option... // Assumption: record once a week, on the same day and time // => determine weekday and set the corresponding bit - struct tm timeinfo; - - timeinfo = *localtime( &m_starttime ); - - int weekday = timeinfo.tm_wday; //days since Sunday [0-6] + int weekday = m_startTime.GetDayOfWeek(); //days since Sunday [0-6] // bit 0 = monday, need to convert weekday value to bitnumber: if (weekday == 0) weekday = 6; // sunday 0100 0000 @@ -400,26 +393,24 @@ std::string cTimer::AddScheduleCommand() { char command[1024]; - struct tm starttime; - struct tm endtime; - struct tm keepdate; - - starttime = *localtime( &m_starttime ); - XBMC->Log(LOG_DEBUG, "Start time: %s, marginstart: %i min earlier", asctime(&starttime), m_prerecordinterval); - endtime = *localtime( &m_endtime ); - XBMC->Log(LOG_DEBUG, "End time: %s, marginstop: %i min later", asctime(&endtime), m_postrecordinterval); - keepdate = *localtime( &m_keepdate ); + string startTime; + string endTime; + + m_startTime.GetAsLocalizedTime(startTime); + m_endTime.GetAsLocalizedTime(endTime); + XBMC->Log(LOG_DEBUG, "Start time: %s, marginstart: %i min earlier", startTime.c_str(), m_prerecordinterval); + XBMC->Log(LOG_DEBUG, "End time: %s, marginstop: %i min later", endTime.c_str(), m_postrecordinterval); snprintf(command, 1023, "AddSchedule:%i|%s|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i\n", m_channel, //Channel number [0] uri::encode(uri::PATH_TRAITS, m_title).c_str(), //Program title [1] - starttime.tm_year + 1900, starttime.tm_mon + 1, starttime.tm_mday, //Start date [2..4] - starttime.tm_hour, starttime.tm_min, starttime.tm_sec, //Start time [5..7] - endtime.tm_year + 1900, endtime.tm_mon + 1, endtime.tm_mday, //End date [8..10] - endtime.tm_hour, endtime.tm_min, endtime.tm_sec, //End time [11..13] + m_startTime.GetYear(), m_startTime.GetMonth(), m_startTime.GetDay(), //Start date [2..4] + m_startTime.GetHour(), m_startTime.GetMinute(), m_startTime.GetSecond(), //Start time [5..7] + m_endTime.GetYear(), m_endTime.GetMonth(), m_endTime.GetDay(), //End date [8..10] + m_endTime.GetHour(), m_endTime.GetMinute(), m_endTime.GetSecond(), //End time [11..13] (int) m_schedtype, m_priority, (int) m_keepmethod, //SchedType, Priority, keepMethod [14..16] - keepdate.tm_year + 1900, keepdate.tm_mon + 1, keepdate.tm_mday, //Keepdate [17..19] - keepdate.tm_hour, keepdate.tm_min, keepdate.tm_sec, //Keeptime [20..22] + m_keepDate.GetYear(), m_keepDate.GetMonth(), m_keepDate.GetDay(), //Keepdate [17..19] + m_keepDate.GetHour(), m_keepDate.GetMinute(), m_keepDate.GetSecond(), //Keeptime [20..22] m_prerecordinterval, m_postrecordinterval); //Prerecord,postrecord [23,24] return command; @@ -428,28 +419,26 @@ std::string cTimer::UpdateScheduleCommand() { char command[1024]; - struct tm starttime; - struct tm endtime; - struct tm keepdate; - - starttime = *localtime( &m_starttime ); - XBMC->Log(LOG_DEBUG, "Start time: %s, marginstart: %i min earlier", asctime(&starttime), m_prerecordinterval); - endtime = *localtime( &m_endtime ); - XBMC->Log(LOG_DEBUG, "End time: %s, marginstop: %i min later", asctime(&endtime), m_postrecordinterval); - keepdate = *localtime( &m_keepdate ); + string startTime; + string endTime; + + m_startTime.GetAsLocalizedTime(startTime); + m_endTime.GetAsLocalizedTime(endTime); + XBMC->Log(LOG_DEBUG, "Start time: %s, marginstart: %i min earlier", startTime.c_str(), m_prerecordinterval); + XBMC->Log(LOG_DEBUG, "End time: %s, marginstop: %i min later", endTime.c_str(), m_postrecordinterval); snprintf(command, 1024, "UpdateSchedule:%i|%i|%i|%s|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i\n", m_index, //Schedule index [0] m_active, //Active [1] m_channel, //Channel number [2] uri::encode(uri::PATH_TRAITS,m_title).c_str(), //Program title [3] - starttime.tm_year + 1900, starttime.tm_mon + 1, starttime.tm_mday, //Start date [4..6] - starttime.tm_hour, starttime.tm_min, starttime.tm_sec, //Start time [7..9] - endtime.tm_year + 1900, endtime.tm_mon + 1, endtime.tm_mday, //End date [10..12] - endtime.tm_hour, endtime.tm_min, endtime.tm_sec, //End time [13..15] + m_startTime.GetYear(), m_startTime.GetMonth(), m_startTime.GetDay(), //Start date [4..6] + m_startTime.GetHour(), m_startTime.GetMinute(), m_startTime.GetSecond(), //Start time [7..9] + m_endTime.GetYear(), m_endTime.GetMonth(), m_endTime.GetDay(), //End date [10..12] + m_endTime.GetHour(), m_endTime.GetMinute(), m_endTime.GetSecond(), //End time [13..15] (int) m_schedtype, m_priority, (int) m_keepmethod, //SchedType, Priority, keepMethod [16..18] - keepdate.tm_year + 1900, keepdate.tm_mon + 1, keepdate.tm_mday, //Keepdate [19..21] - keepdate.tm_hour, keepdate.tm_min, keepdate.tm_sec, //Keeptime [22..24] + m_keepDate.GetYear(), m_keepDate.GetMonth(), m_keepDate.GetDay(), //Keepdate [19..21] + m_keepDate.GetHour(), m_keepDate.GetMinute(), m_keepDate.GetSecond(), //Keeptime [22..24] m_prerecordinterval, m_postrecordinterval, m_progid); //Prerecord,postrecord,program_id [25,26,27] return command; @@ -487,17 +476,18 @@ if (lifetime == 0) { m_keepmethod = TvDatabase::UntilSpaceNeeded; - m_keepdate = cUndefinedDate; + m_keepDate = cUndefinedDate; } else if (lifetime == 99) { m_keepmethod = TvDatabase::Always; - m_keepdate = cUndefinedDate; + m_keepDate = cUndefinedDate; } else { m_keepmethod = TvDatabase::TillDate; - m_keepdate = m_starttime + (lifetime * cSecsInDay); + m_keepDate = m_startTime; + m_keepDate += (lifetime * cSecsInDay); } } @@ -521,7 +511,7 @@ break; case TvDatabase::TillDate: //until keepdate { - double diffseconds = difftime(m_keepdate, m_starttime); + int diffseconds = m_keepDate - m_startTime; int daysremaining = (int)(diffseconds / cSecsInDay); // Calculate value in the range 1...98, based on m_keepdate if (daysremaining < 99) @@ -542,11 +532,22 @@ } } -time_t cTimer::Now() +void cTimer::SetScheduleRecordingType(TvDatabase::ScheduleRecordingType schedType) { - time_t now; + m_schedtype = schedType; +} - time(&now); +void cTimer::SetKeepMethod(TvDatabase::KeepMethodType keepmethod) +{ + m_keepmethod = keepmethod; +} + +void cTimer::SetPreRecordInterval(int minutes) +{ + m_prerecordinterval = minutes; +} - return now; +void cTimer::SetPostRecordInterval(int minutes) +{ + m_postrecordinterval = minutes; } diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/timers.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/timers.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/timers.h 2013-12-13 13:17:21.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/timers.h 2014-07-18 06:05:30.000000000 +0000 @@ -15,7 +15,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ @@ -26,7 +27,7 @@ #include "libXBMC_pvr.h" #include #include -#include +#include "DateTime.h" /* VDR: enum eTimerFlags { tfNone = 0x0000, @@ -65,6 +66,9 @@ }; +const time_t cUndefinedDate = 946681200; ///> 01-01-2000 00:00:00 in time_t +const int cSecsInDay = 86400; ///> Amount of seconds in one day + class cTimer { public: @@ -87,11 +91,15 @@ bool Repeat() const { return (m_schedtype == TvDatabase::Once ? false : true); }; bool Done() const { return m_done; }; bool IsManual() const { return m_ismanual; }; - bool IsActive() const { return !m_canceled; }; + bool IsActive() const { return (m_canceled==cUndefinedDate); }; bool IsRecording() const { return m_isrecording; }; TvDatabase::ScheduleRecordingType RepeatFlags2SchedRecType(int repeatflags); std::string AddScheduleCommand(); std::string UpdateScheduleCommand(); + void SetScheduleRecordingType(TvDatabase::ScheduleRecordingType schedType); + void SetKeepMethod(TvDatabase::KeepMethodType keepmethod); + void SetPreRecordInterval(int minutes); + void SetPostRecordInterval(int minutes); private: int SchedRecType2RepeatFlags(TvDatabase::ScheduleRecordingType schedtype); @@ -105,24 +113,23 @@ int GetLifetime(void); int XBMC2MepoPriority(int xbmcprio); int Mepo2XBMCPriority(int mepoprio); - time_t Now(); // MediaPortal database fields: int m_index; ///> MediaPortal id_Schedule int m_channel; ///> MediaPortal idChannel TvDatabase::ScheduleRecordingType m_schedtype; ///> MediaPortal scheduleType std::string m_title; ///> MediaPortal programName - time_t m_starttime; ///> MediaPortal startTime - time_t m_endtime; ///> MediaPortal endTime + MPTV::CDateTime m_startTime; ///> MediaPortal startTime + MPTV::CDateTime m_endTime; ///> MediaPortal endTime // skipped: maxAirings field int m_priority; ///> MediaPortal priority (not the XBMC one!!!) std::string m_directory; ///> MediaPortal directory // skipped: quality field TvDatabase::KeepMethodType m_keepmethod; ///> MediaPortal keepMethod - time_t m_keepdate; ///> MediaPortal keepDate + MPTV::CDateTime m_keepDate; ///> MediaPortal keepDate int m_prerecordinterval; ///> MediaPortal preRecordInterval int m_postrecordinterval; ///> MediaPortal postRecordInterval - time_t m_canceled; ///> MediaPortal canceled (date + time) + MPTV::CDateTime m_canceled; ///> MediaPortal canceled (date + time) // skipped: recommendedCard bool m_series; ///> MediaPortal series // skipped: idParentSchedule: not yet supported in XBMC @@ -136,7 +143,4 @@ int m_progid; ///> MediaPortal Program ID }; -const time_t cUndefinedDate = 946681200; ///> 01-01-2000 00:00:00 in time_t -const int cSecsInDay = 86400; ///> Amount of seconds in one day - #endif //__TIMERS_H diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/utils.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/utils.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/utils.cpp 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/utils.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -91,38 +91,6 @@ return (b==true) ? "True" : "False"; } -time_t DateTimeToTimeT(const std::string& datetime) -{ - struct tm timeinfo; - int year, month ,day; - int hour, minute, second; - int count; - time_t retval; - - count = sscanf(datetime.c_str(), "%4d-%2d-%2d %2d:%2d:%2d", &year, &month, &day, &hour, &minute, &second); - - if(count != 6) - return -1; - - timeinfo.tm_hour = hour; - timeinfo.tm_min = minute; - timeinfo.tm_sec = second; - timeinfo.tm_year = year - 1900; - timeinfo.tm_mon = month - 1; - timeinfo.tm_mday = day; - // Make the other fields empty: - timeinfo.tm_isdst = -1; - timeinfo.tm_wday = 0; - timeinfo.tm_yday = 0; - - retval = mktime (&timeinfo); - - if(retval < 0) - retval = 0; - - return retval; -} - std::string ToThumbFileName(const char* strChannelName) { CStdString strThumbName = strChannelName; diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/utils.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/utils.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mediaportal.tvserver/src/utils.h 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mediaportal.tvserver/src/utils.h 2014-07-18 06:05:30.000000000 +0000 @@ -42,12 +42,6 @@ const char* booltostring(const bool b); /** - * @brief Converts a C# DateTime string into a time_t value - * Assumes the usage of somedatetimeval.ToString("u") in C# - */ -time_t DateTimeToTimeT(const std::string& datetime); - -/** * @brief Filters forbidden filename characters from channel name and replaces them with _ ) */ std::string ToThumbFileName(const char* strChannelName); diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/addon.xml.in xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/addon.xml.in --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/addon.xml.in 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/addon.xml.in 2014-07-18 06:05:30.000000000 +0000 @@ -1,12 +1,12 @@ - + XBMC voorprogram vir MythTV (gebruik libcmyth) XBMC frontend for MythTV (using libcmyth) - XBMC клиент за MythTV (използва libcmyth) + XBMC клиент за MythTV (ползва libcmyth) Frontal de l'XBMC pel MythTV (utilitzant libcmyth) Rozhraní XBMC pro MythTV (používající libcmyth) Blaen XBMC ar gyfer MythTV (defmyddio libcmyth) @@ -29,38 +29,40 @@ XBMC frontend for MythTV (using libcmyth) XBMC frontend for MythTV (using libcmyth) XBMC frontend for MythTV (using libcmyth) + XBMC frontend for MythTV (using libcmyth) Front-end de XBMC para MythTV (usando libcmyth) Front-end de XBMC para MythTV (usando libcmyth) XBMC frontend para MythTV (usando libmyth) XBMC MythTV esi (kasutab libcmyth) - Applicatif XBMC pour MythTV (utilise libcmyth) + Interface logicielle pour MythTV (utilise libcmyth) Frontal XBMC pour MythTV (utilisant libcnyth) Interface de XBMC para MythTV (usando libcmyth) ממשק משתמש XBMC לMythTV (משתמש בlibcmyth) XBMC pozadinski softver za MythTV (koristi libcmyth) XBMC MythTV előtér-kiszolgáló (libcmyth használatával) Frontend XBMC untuk MythTV (Menggunakan libcmuth) + Framendi fyrir XBMC fyrir MythTV (notar libcmyth) Frontend di XBMC per MythTV (utilizzando libcmyth) MythTV 用 XBMC フロントエンド (libcmyth 使用) XBMC სამომხმარებლო მხარე MythTV-თვის (გამოყენება libcmyth) MythTV XBMC 프론트엔드 (libcmyth 사용) - XBMC sąsaja į MythTV (naudojant libcmyth) + XBMC naudotojo sąsaja skirta MythTV (naudojant libcmyth) XBMC galasistēma MythTV (izmanto libcmyth) XBMC интерфејс за MythTV (со користење libcmyth) Bahagian hadapan XBMC untuk MythTV (menggunakan libcmyth) MythTV အတွက် XBMC frontend (libcmythသုံးပြီး) XBMC frontend voor MythTV (maakt gebruik van libcmyth) XBMC fremvisning for MythTV(bruker libcmyth) - Interfejs XBMC dla MythTV (przy użyciu libcmyth) + Klient XBMC dla MythTV (przy użyciu libcmyth) Frontend XBMC para MythTV (usando libcmyth) XBMC frontend para MythTV (usando libcmyth) - Frontend XBMC pentru MythTV (folosind libcmyth) + XBMC interfață pentru MythTV (folosind libcmyth) Фронтэнд XBMC для MythTV (с использованием libcmyth) XBMC rozhranie pre MythTV (používa knižnicu 'libcmyth') XBMC-jev vmesnik za MythTV (z uporabo libcmyth) XBMC gränssnitt till MythTV (via libcmyth) MythTV உடைய XBMC முன்னிலை (libcmyth பயன்படுத்தபட்டுள்ளது) - XBMC için MythTV (libcmyth kullanır) + MythTV için XBMC ön ucu (libcmyth kullanır) Накладка XBMC для MythTV (з використанням libcmyth) Giao tiếp XBMC cho MythTV (sử dụng libcmyth) XBMC 的 MythTV 前端(使用 libcmyth) @@ -76,33 +78,36 @@ MythTV frontend (up to MythTV 0.27). Supports streaming of Live TV & Recordings, listening to Radio channels, EPG and Timers. MythTV frontend (up to MythTV 0.27). Supports streaming of Live TV & Recordings, listening to Radio channels, EPG and Timers. MythTV frontend (up to MythTV 0.27). Supports streaming of Live TV & Recordings, listening to Radio channels, EPG and Timers. + MythTV frontend (up to MythTV 0.27). Supports streaming of Live TV & Recordings, listening to Radio channels, EPG and Timers. Front-end de MythTV (hasta MythTV 0.27). Soporte de transmisiones de TV en Vivo y Grabaciones, escuchar canales de Radio, Guía Electrónica de Programas (EPG) y Temporizadores. - Front-end de MythTV (hasta MythTV 0.27). Soporte de transmisiones de TV en Vivo y Grabaciones, escuchar canales de Radio, Guía Electrónica de Programas (EPG) y Temporizadores. + Front-end de MythTV (hasta MythTV 0.27). Soporte de transmisiones de TV en Vivo y Grabaciones, escuchar canales de Radio, Guía Electrónica de Programas (GEP) y Temporizadores. MythTV esi (kuni MythTV 0.27). Toetab telekanalite edastamist ja salvestamist, raadio kuulamist, elektroonilist saatekava ja ajamõõtjaid. - Applicatif MythTV (jusqu'à la version 0.27). Permet la diffusion de la télévision en direct, des enregistrements, des stations de radios, ainsi que le guide des programmes et les minuteries. + Interface logicielle pour MythTV (jusqu'à la version 0.27). Permet la diffusion de la télévision en direct, des enregistrements, des stations de radios, ainsi que le guide des programmes et les minuteries. Frontal de MythTV (jusqu'à MythTV 0.27) prenant en charge la lecture en transit des télés en direct & les enregistrements, l'écoute de chaînes radio, le GÉP et les minuteries. - Interface de MythTV (maior da MythTV 0.27). Compatíbel coa transmisión de TV ao vivo, gravacións e escoita de canles de Radio, Guía e temporizadores. + Interface de MythTV (superior á MythTV 0.27). Compatíbel coa transmisión de TV en directo, gravacións e escoita de canles de Radio, Guía e temporizadores. ממשק קדמי MythTV (עד MythTV 0.27). תומך בשידור ממשק טלוויזיה והקלטה, האזנה לערוצי רדיו, לוח שידורים ותזמוני הקלטה. MythTV pozadinski softver (do MythTV 0.27). Podržava streamanje i snimanje TV programa, slušanje radio programa, elektronski programski vodič (EPG) i zakazana snimanja. MythTV előtér-kiszolgáló (MythTv 0.27 verzióig). Élő adások, felvételek,és rádió adások sugárzásának támogatása EPG-vel és időzítéssel. Frontend MythTV (hingga MythTV 0.27). Mendukung pengaliran Siaran TV Langsung dan perekaman, mendengarkan radio, EPG dan Timer. + MythTV framendi (upp að MythTV 0.27). Styður straum frá Live TV og upptökur, hlustun á útvarpsrásir, rafræna sjónvarpsvísa (EPG) og tímatöku. Frontend MythTV (compatibile fino a MythTV 0.27). Supporta lo streaming di Live TV, le registrazioni, l'ascolto dei canali radio, EPG e i timer. MythTV (バージョン 0.27 まで) のフロントエンドです。ライブ TV ストリーミング、録画、ラジオ放送の視聴、EPG、タイマーをサポートしています。 MythTV სამომხმარებლო მხარე (MythTV 0.27-მდე). მხარს უჭერს Live TV სტრიმინგსა და ჩანაწერებს, Radio არხების მოსმენას, EPG-სა და თაიმერებს. MythTV 프론트엔드 (up to MythTV 0.27). 라이브 TV 스트리밍, 녹화, 라디오 채널 청취, EPG, 예약 지원. - MythTV sąsaja (kelias iki MythTV 0.27). Palaiko duomenų srautams pritaikyta(-as) Live TV & Recordings + MythTV naudotojo sąsaja (iki MythTV 0.27). Leidžia stebėti TV transliacijas ir įirašyti, klausytis radijo stočių bei palaiko EPG ir laikmačius. MythTV galasistēma (līdz MythTV 0.27). Atbalsta tiešraides TV un ierakstu straumēšanu, radio kanālu klausīšanos, EPG un taimerus. MythTV интерфејс (се до MythTV 0.27). Подржува стриминг на Live TV & Снимки, слушање на радио канали, EPG и тајмери. Bahagian hadapan MythTV (sehingga MythTV 0.27). Menyokong penstirman TV Langsung & Rakaman, mendengar saluran Radio, EPG dan Pemasa. MythTV frontend (tot MythTV 0.27). Ondersteunt streaming van Live TV & opnames, luisteren naar radiokanalen, EPG en Timers. - Interfejs MythTV (do MythTV 0.27). Obsługuje strumieniowe przesyłanie TV na żywo oraz nagrań, pozwala na słuchanie kanałów radiowych, przeglądanie EPG i harmonogramów. + Klient MythTV (do MythTV 0.27) wspiera strumieniowanie kanałów radiowych i telewizyjnych, nagrywanie, planowanie nagrań oraz funkcje przewodnika TV. Frontend MythTV (até MythTV 0.27). Permite transmissão ao vivo de Live Tv e gravações, ouvir estações de rádio, EPG e temporizadores. MythTV frontend (up para MythTV 0.27). Suporta streaming de TV ao Vivo & Gravações, Escutar canais de rádios, EPG e Agendamentos. - Frontend MythTV (până la MythTV 0.27). Suportă difuzare în flux a televiziunii în direct și a înregistrăriilor, ascultarea posturilor de radio, EPG și Cronometre. + Interfața MythTV (până la MythTV 0.27). Suportă difuzare în flux a televiziunii în direct și a înregistrăriilor, ascultarea posturilor de radio, EPG și Cronometre. Фронтэнд MythTV (вплоть до MythTV 0.27). Поддерживает поточное ТВ и записи, прослушивание радио-каналов, ЕПГ и таймеры. MythTV rozhranie (až do verzie MythTV 0.27). Podporuje streamovanie živého TV vysielania a nahrávok, počúvanie rozhlasových kanálov, EPG a časovače. Vmesnik za MythTV (do vključno MythTV 0.27). Podpira pretakanje televizije v živo & posnetkov, poslušanje radia, EPG in časovnike. MythTV frontend (upp till MythTV 0.27). Stödjer strömmning av direktsänd TV & inspelningar, radiolyssning, EPG och timers. + MythTV ön ucu (MythTV 0.27'ye kadar). Canlı TV akışı ve kayıt yapabilme, radyo kanalları dinleme, EPG ve zamanlayıcıları destekler. MythTV 前端 ( MythTV 0.27 及之后版本) 。支持直播电视和录像流媒体、收听广播、电子节目单及定时器功能。 Hierdie is onstabiele sagteware! Die outeurs is op geen manier verantwoordelik vir gefaalde opnames, inkorrekte tydhouers, vermorsde ure, of enige ander ongewensde effekte. This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects. @@ -115,26 +120,29 @@ This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects. This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects. This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects. + This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects. ¡Este software es inestable! Los autores no son en ningún caso responsables por grabaciones fallidas, temporizadores incorrectos, horas desperdiciadas o cualquier otro efecto indeseable. ¡Este software es inestable! Los autores no se responsabilizan por grabaciones fallidas, temporizadores incorrectos, horas perdidas, o cualquier otro efecto no deseado.. See on ebastabiilne tarkvara! Autorid ei ole kuidagi moodi vastutavad nurjunud salvestiste, ebaõige aegrelee, raisatud tundide ega muude soovimatute asjade eest. Ce logiciel est en cours de développement. Les auteurs ne sont en aucun cas responsables de l'échec des enregistrements, minuteries erronées, temps perdu et autres effets indésirables. Ce logiciel est instable! Les auteurs ne sont aucunement responsables des enregistrements défaillants, des minuteries erronées, des heures perdues ou tout autre effet indésirable. - Este é software non estable, os autores non se fan responsábeis dos erros na gravacións, temporizadores incorrectos, e outros efectos non desexados. + Software non estable, os autores non se fan responsábeis dos erros na gravacións, temporizadores incorrectos, e outros efectos non desexados. זוהי תוכנה בלתי יציבה! מחברי התכנה אינם אחראים להקלטות כושלות,מתזמני הקלטות שגויים,שעות מבוזבזות,או כל תוצאה בלתי רצויה... Ovo je nestabilan softver! Autori nisu ni na koji način odgovorani za neuspjelo snimanje, netočna zakazana snimanja, izgubjene sate, ili bilo koje druge neželjene učinke... Ez nem stabil szoftver! A készítők nem vállalnak felelősséget, a hibás felvételért, rossz időzítésért, elvesztegetett időért... Ini merupakan perangkat-lunak yang belum stabil. Penulis tidak bertanggung jawab untuk rekaman yang gagal, timer yang salah, waktu terbuang atau efek yang tidak diinginkan lainya. + Þetta er óstöðugur hugbúnaður! Höfundarnir eru á engan hátt ábyrgir fyrir misheppnuðum upptökum, röngum upptökutímum, klukkustundum sem að fóru í súginn eða nokkrum öðrum óæskilegum áhrifum. Questo software è instabile! Gli autori non sono in alcun modo responsabili per registrazioni fallite, timers incorretti, ore perse, o qualsiasi altro effetto indesiderato. これは不安定なソフトウェアです!本プログラムの作者は、録画の失敗、正確に作動しなかったタイマー、無駄にした時間、その他あらゆる好ましくない結果について責任を負わないものとします。 ეს არის არასტაბილური პროგრამული უზრუნველყოფა! ავტორები არ არიან პასუხისმგებელი შეცდომებზე, არასწორ EPG-ზე, დაკარგულ დროზე ან სხვა ხარვეზებზე 완성되지 않은 소프트웨어입니다. 개발자는 녹화와 예약의 실패, 시간 허비나 다른 의도하지 않은 결과에 대한 책임을 지지 않습니다. - Tai yra nestabili programinė įranga! Autorius jokiu būdu neatsako už nepavykusius įrašus, neteisingus laikmačius, iššvaistytas valandas, ar nutikus kitiems nepageidaujamiems poveikiams ...[COLOR=red](xbmc.lt rekomenduoja/siūlo testuojant šį priedą persijungti į Anglų [orinali] kalbą)[/COLOR] + Tai yra nestabili programinė įranga! Autorius jokiu būdu neatsako už nepavykusius įrašus, neteisingus laikmačius, iššvaistytas valandas ar kitą nepageidaujamą poveikį. [COLOR=red](xbmc.lt rekomenduoja testuojant šį priedą persijungti į Anglų [orinaliąją] kalbą)[/COLOR] + Šī ir nestabila programmatūra! Autori nav nekādā vaidā atbildīgi par nesanākušiem ierakstiem, nepareiziem taimeriem, iztērētām stundām vai jebkādiem citiem nevēlamiem efektiem. Ова е нестабилен софтвер! Авторите на ниту еден начин не одговараат за неуспешни снимки, неточни тајмери, потрошени часови, или било кои други несакани ефекти. Ini merupakan perisian tidak stabil! Pengarang tidak bertanggungjawab atas kegagalan rakaman, pemasa tidak betul, masa yang dibazirkan, atau apa jua kesan yang tidak dikehendaki.. Dit is onstabiele software! De auteurs zijn op geen enkele wijze verantwoordelijk voor mislukte opnames, timers, verspilde tijd of enig ander ongewild bijeffect. Dette er ustabil programvare! Forfatterene er på ingen måte ansvarlige for feilaktig opptak, ukorrekte timere, bortkastet tid, eller alle andre uønskede følger. - Oprogramowanie nadal jest w fazie rozwoju i jest niestabilne! Autorzy w żaden sposób nie są odpowiedzialni za nieudane nagrania, nieprawidłowe czasy EPG czy też jakiekolwiek inne niepożądane efekty oraz za Twój zmarnowany czas. + Oprogramowanie nadal jest w fazie rozwoju i jest niestabilne! Autorzy w żaden sposób nie są odpowiedzialni za nieudane nagrania, błędy w planie nagrań, zmarnowany czas ani jakiekolwiek inne niepożądane efekty. Este software é instável! Os autores não se responsabilizam por falhas nas gravações, temporizadores incorrectos, horas perdidas ou outro qualquer efeito não desejado... Este é um software instável! Os autores não são responsáveis por falhas nas gravações, agendamentos incorretos, horas dispendidas, ou quaisquer outro efeito indesejado. Acest software nu este stabil! Autorii nu sunt responsabili în niciun caz pentru înregistrările eșuate, cronometre incorecte, ore pierdute sau orice alt efect nedorit. diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/changelog.txt xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/changelog.txt --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/changelog.txt 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/changelog.txt 2014-07-18 06:05:30.000000000 +0000 @@ -1,3 +1,6 @@ +v1.9.17 +- Updated language files from Transifex + v1.9.16 - Updated language files from Transifex diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Armenian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Armenian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Armenian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Armenian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: MythTV cmyth PVR Client +# Addon id: pvr.mythtv.cmyth +# Addon Provider: Christian Fetzer, Jean-Luc Barrière, Tonny Petersen +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Armenian (http://www.transifex.com/projects/p/xbmc-main/language/hy/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hy\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30019" +msgid "General" +msgstr "Գլխավոր" + +msgctxt "#30310" +msgid "Enabled" +msgstr "Միացված" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Bosnian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Bosnian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Bosnian/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Bosnian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -20,6 +20,10 @@ msgid "General" msgstr "Opšte" +msgctxt "#30305" +msgid "Channel unavailable" +msgstr "Kanal nedostupan" + msgctxt "#30310" msgid "Enabled" msgstr "Omogućeno" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Czech/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Czech/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Czech/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Czech/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -64,6 +64,10 @@ msgid "Prefer Live TV and cancel conflicting recording" msgstr "Upřednostnit živé vysílání a zrušit konfliktní nahrávku" +msgctxt "#30012" +msgid "MythTV Backend Ethernet address (WOL)" +msgstr "MythTV Backend Ethernetová adresa (WOL)" + msgctxt "#30019" msgid "General" msgstr "Obecné" @@ -128,6 +132,10 @@ msgid "Advanced" msgstr "Pokročilé" +msgctxt "#30052" +msgid "Enable demuxing MPEG-TS" +msgstr "Zvol demuxování MPEG-TS" + msgctxt "#30100" msgid "Protocol version: %i - Database version: %i" msgstr "Verze protokolu: %i - Verze databáze: %i" @@ -168,6 +176,10 @@ msgid "Stopping Live TV due to conflicting recording: %s" msgstr "Zastavuji živé vysílání kvůli konfliktu s nahrávkou: %s" +msgctxt "#30309" +msgid "Not recording" +msgstr "Nenahrávat" + msgctxt "#30310" msgid "Enabled" msgstr "Povoleno" @@ -175,3 +187,39 @@ msgctxt "#30311" msgid "Disabled" msgstr "Zakázáno" + +msgctxt "#30312" +msgid "No broadcast found" +msgstr "Nenalezeno žádné vysílání" + +msgctxt "#30411" +msgid "Delete and re-record" +msgstr "Smaž a znovu nahrej" + +msgctxt "#30412" +msgid "Keep LiveTV recording" +msgstr "Pokračuj v nahrávání" + +msgctxt "#30421" +msgid "Show/hide rules with status 'Not Recording'" +msgstr "Ukaž/Schovej pravidla se statusem 'Nenahrávat'" + +msgctxt "#30431" +msgid "Record all showings (this channel)" +msgstr "Nahraj všechny pořady (tento program)" + +msgctxt "#30432" +msgid "Record this showing every week" +msgstr "Nahrej tento pořad každý týden" + +msgctxt "#30433" +msgid "Record this showing every day" +msgstr "Nahrej tento pořad každý den" + +msgctxt "#30434" +msgid "Record one showing (all channels)" +msgstr "Nahrej jeden pořad (všechny programy)" + +msgctxt "#30435" +msgid "Record all new episodes (this channel)" +msgstr "Nahrej všechny nové epizody (tento program)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Danish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Danish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Danish/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Danish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -64,6 +64,10 @@ msgid "Prefer Live TV and cancel conflicting recording" msgstr "Foretræk Live TV og aflys modstridende optagelser" +msgctxt "#30012" +msgid "MythTV Backend Ethernet address (WOL)" +msgstr "MythTV Backend Ethernet-adressen (WOL)" + msgctxt "#30019" msgid "General" msgstr "Generelt" @@ -128,6 +132,10 @@ msgid "Advanced" msgstr "Udvidet" +msgctxt "#30052" +msgid "Enable demuxing MPEG-TS" +msgstr "Aktiver demuxing MPEG-TS" + msgctxt "#30100" msgid "Protocol version: %i - Database version: %i" msgstr "Protokolversion: %i - Databaseversion: %i" @@ -180,6 +188,10 @@ msgid "Disabled" msgstr "Deaktiveret" +msgctxt "#30312" +msgid "No broadcast found" +msgstr "Ingen udsendelse fundet" + msgctxt "#30411" msgid "Delete and re-record" msgstr "Slet og optag på ny" @@ -187,3 +199,27 @@ msgctxt "#30412" msgid "Keep LiveTV recording" msgstr "Gem LiveTV optagelse" + +msgctxt "#30421" +msgid "Show/hide rules with status 'Not Recording'" +msgstr "Vis/skjul regler med status 'Ikke Optagelse'" + +msgctxt "#30431" +msgid "Record all showings (this channel)" +msgstr "Optag alle fremvisninger (denne kanal)" + +msgctxt "#30432" +msgid "Record this showing every week" +msgstr "Optag denne udsendelse hver uge" + +msgctxt "#30433" +msgid "Record this showing every day" +msgstr "Optag denne udsendelse hver dag" + +msgctxt "#30434" +msgid "Record one showing (all channels)" +msgstr "Optag en udsendelse (alle kanaler)" + +msgctxt "#30435" +msgid "Record all new episodes (this channel)" +msgstr "Optag alle nye episoder (denne kanal)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/English (New Zealand)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/English (New Zealand)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/English (New Zealand)/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/English (New Zealand)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -196,6 +196,10 @@ msgid "Delete and re-record" msgstr "Delete and re-record" +msgctxt "#30412" +msgid "Keep LiveTV recording" +msgstr "Keep LiveTV recording" + msgctxt "#30421" msgid "Show/hide rules with status 'Not Recording'" msgstr "Show/hide rules with status 'Not Recording'" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/English (US)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/English (US)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/English (US)/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/English (US)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -16,18 +16,170 @@ "Language: en_US\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgctxt "#30000" +msgid "MythTV Backend Hostname or IP" +msgstr "MythTV Backend Hostname or IP" + +msgctxt "#30001" +msgid "MythTV Backend Port" +msgstr "MythTV Backend Port" + +msgctxt "#30002" +msgid "MythTV Database Username" +msgstr "MythTV Database Username" + +msgctxt "#30003" +msgid "MythTV Database Password" +msgstr "MythTV Database Password" + +msgctxt "#30004" +msgid "MythTV Database Databasename" +msgstr "MythTV Database Databasename" + +msgctxt "#30005" +msgid "Include more debug information in the log file" +msgstr "Include more debug information in the log file" + +msgctxt "#30006" +msgid "Enable Live TV" +msgstr "Enable Live TV" + +msgctxt "#30007" +msgid "Allow Live TV to move scheduled shows" +msgstr "Allow Live TV to move scheduled shows" + +msgctxt "#30008" +msgid "Conflict handling" +msgstr "Conflict handling" + +msgctxt "#30009" +msgid "Prefer Live TV when recording has later slot" +msgstr "Prefer Live TV when recording has later slot" + +msgctxt "#30010" +msgid "Prefer recording and stop Live TV" +msgstr "Prefer recording and stop Live TV" + +msgctxt "#30011" +msgid "Prefer Live TV and cancel conflicting recording" +msgstr "Prefer Live TV and cancel conflicting recording" + +msgctxt "#30012" +msgid "MythTV Backend Ethernet address (WOL)" +msgstr "MythTV Backend Ethernet address (WOL)" + msgctxt "#30019" msgid "General" msgstr "General" +msgctxt "#30020" +msgid "Template provider" +msgstr "Template provider" + +msgctxt "#30021" +msgid "Internal" +msgstr "Internal" + +msgctxt "#30022" +msgid "MythTV" +msgstr "MythTV" + +msgctxt "#30025" +msgid "Internal template" +msgstr "Internal template" + +msgctxt "#30026" +msgid "Automatically Look Up Metadata" +msgstr "Automatically Look Up Metadata" + +msgctxt "#30027" +msgid "Commercial Flag new recordings" +msgstr "Commercial Flag new recordings" + +msgctxt "#30028" +msgid "Transcode new recordings" +msgstr "Transcode new recordings" + +msgctxt "#30029" +msgid "Run User Job #1" +msgstr "Run User Job #1" + +msgctxt "#30030" +msgid "Run User Job #2" +msgstr "Run User Job #2" + +msgctxt "#30031" +msgid "Run User Job #3" +msgstr "Run User Job #3" + +msgctxt "#30032" +msgid "Run User Job #4" +msgstr "Run User Job #4" + +msgctxt "#30033" +msgid "Transcoder" +msgstr "Transcoder" + +msgctxt "#30034" +msgid "Allow recordings to expire?" +msgstr "Allow recordings to expire?" + +msgctxt "#30049" +msgid "Recording template" +msgstr "Recording template" + msgctxt "#30050" msgid "Advanced" msgstr "Advanced" +msgctxt "#30052" +msgid "Enable demuxing MPEG-TS" +msgstr "Enable demuxing MPEG-TS" + +msgctxt "#30100" +msgid "Protocol version: %i - Database version: %i" +msgstr "Protocol version: %i - Database version: %i" + +msgctxt "#30300" +msgid "Failed to connect to MythTV backend" +msgstr "Failed to connect to MythTV backend" + +msgctxt "#30301" +msgid "Failed to connect to MythTV database" +msgstr "Failed to connect to MythTV database" + +msgctxt "#30302" +msgid "Connection to MythTV backend lost" +msgstr "Connection to MythTV backend lost" + +msgctxt "#30303" +msgid "Connection to MythTV restored" +msgstr "Connection to MythTV restored" + +msgctxt "#30304" +msgid "No response from MythTV backend" +msgstr "No response from MythTV backend" + msgctxt "#30305" msgid "Channel unavailable" msgstr "Channel unavailable" +msgctxt "#30306" +msgid "Recorder unavailable" +msgstr "Recorder unavailable" + +msgctxt "#30307" +msgid "Canceling conflicting recording: %s" +msgstr "Canceling conflicting recording: %s" + +msgctxt "#30308" +msgid "Stopping Live TV due to conflicting recording: %s" +msgstr "Stopping Live TV due to conflicting recording: %s" + +msgctxt "#30309" +msgid "Not recording" +msgstr "Not recording" + msgctxt "#30310" msgid "Enabled" msgstr "Enabled" @@ -35,3 +187,39 @@ msgctxt "#30311" msgid "Disabled" msgstr "Disabled" + +msgctxt "#30312" +msgid "No broadcast found" +msgstr "No broadcast found" + +msgctxt "#30411" +msgid "Delete and re-record" +msgstr "Delete and re-record" + +msgctxt "#30412" +msgid "Keep LiveTV recording" +msgstr "Keep LiveTV recording" + +msgctxt "#30421" +msgid "Show/hide rules with status 'Not Recording'" +msgstr "Show/hide rules with status 'Not Recording'" + +msgctxt "#30431" +msgid "Record all showings (this channel)" +msgstr "Record all showings (this channel)" + +msgctxt "#30432" +msgid "Record this showing every week" +msgstr "Record this showing every week" + +msgctxt "#30433" +msgid "Record this showing every day" +msgstr "Record this showing every day" + +msgctxt "#30434" +msgid "Record one showing (all channels)" +msgstr "Record one showing (all channels)" + +msgctxt "#30435" +msgid "Record all new episodes (this channel)" +msgstr "Record all new episodes (this channel)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Galician/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Galician/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Galician/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Galician/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -42,11 +42,11 @@ msgctxt "#30006" msgid "Enable Live TV" -msgstr "Habilitar TV ao vivo" +msgstr "Activar TV en directo" msgctxt "#30007" msgid "Allow Live TV to move scheduled shows" -msgstr "Permitir á TV ao vivo mover as series programadas." +msgstr "Permitir á TV en directo mover as series programadas." msgctxt "#30008" msgid "Conflict handling" @@ -204,6 +204,22 @@ msgid "Show/hide rules with status 'Not Recording'" msgstr "Amosar/Agochar regras co estado 'Sen Gravar'" +msgctxt "#30431" +msgid "Record all showings (this channel)" +msgstr "Gravar todas as emisións (esta canle)" + +msgctxt "#30432" +msgid "Record this showing every week" +msgstr "Gravar esta emisión cada semana" + +msgctxt "#30433" +msgid "Record this showing every day" +msgstr "Gravar esta emisión cada día" + +msgctxt "#30434" +msgid "Record one showing (all channels)" +msgstr "Gravar unha emisión (todas as canles)" + msgctxt "#30435" msgid "Record all new episodes (this channel)" -msgstr "Gravar todos os novos episodios (esta canle)" +msgstr "Gravar todos os episodios novos (esta canle)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Hebrew/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Hebrew/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Hebrew/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Hebrew/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -64,6 +64,10 @@ msgid "Prefer Live TV and cancel conflicting recording" msgstr "העדף שידור חי ובטל התנגשויות הקלטה" +msgctxt "#30012" +msgid "MythTV Backend Ethernet address (WOL)" +msgstr "MythTV כתובת רשת ממשק אחרוי (WOL)" + msgctxt "#30019" msgid "General" msgstr "כללי" @@ -128,6 +132,10 @@ msgid "Advanced" msgstr "מתקדם" +msgctxt "#30052" +msgid "Enable demuxing MPEG-TS" +msgstr "הפעל demuxing MPEG-TS" + msgctxt "#30100" msgid "Protocol version: %i - Database version: %i" msgstr "גרסת פרוטוקול: %i - גרסת מסד נתונים: %i" @@ -192,6 +200,26 @@ msgid "Keep LiveTV recording" msgstr "השאר הקלטה" +msgctxt "#30421" +msgid "Show/hide rules with status 'Not Recording'" +msgstr "הצג/הסתר כללים עם סטאטוס 'לא מקליט'" + +msgctxt "#30431" +msgid "Record all showings (this channel)" +msgstr "הקלטת כל התוכניות (ערוץ זה)" + +msgctxt "#30432" +msgid "Record this showing every week" +msgstr "הקלט תוכנית זו בכל שבוע" + +msgctxt "#30433" +msgid "Record this showing every day" +msgstr "הקלט תוכנית זו בכל יום" + +msgctxt "#30434" +msgid "Record one showing (all channels)" +msgstr "הקלט תוכנית אחת (בכל הערוצים)" + msgctxt "#30435" msgid "Record all new episodes (this channel)" msgstr "הקליטו את כל הפרקים החדשים (ערוץ זה)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Icelandic/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Icelandic/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Icelandic/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Icelandic/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -16,18 +16,170 @@ "Language: is\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgctxt "#30000" +msgid "MythTV Backend Hostname or IP" +msgstr "Hýsilnafn MythTV bakenda eða IP" + +msgctxt "#30001" +msgid "MythTV Backend Port" +msgstr "Gátt MythTV bakenda" + +msgctxt "#30002" +msgid "MythTV Database Username" +msgstr "Notandanafn MythTV gagnagrunns" + +msgctxt "#30003" +msgid "MythTV Database Password" +msgstr "Lykilorð MythTV gagnagrunns" + +msgctxt "#30004" +msgid "MythTV Database Databasename" +msgstr "Nafn MythTV gangagrunns" + +msgctxt "#30005" +msgid "Include more debug information in the log file" +msgstr "Ítarlegri villukemdiupplýsingar í atvikaskránni" + msgctxt "#30006" msgid "Enable Live TV" -msgstr "Virkja beina útsendingu" +msgstr "Virkja Live TV" + +msgctxt "#30007" +msgid "Allow Live TV to move scheduled shows" +msgstr "Leyfa Live TV að færa sýningar sem eru komnar á dagskrá" + +msgctxt "#30008" +msgid "Conflict handling" +msgstr "Höndla árekstra" + +msgctxt "#30009" +msgid "Prefer Live TV when recording has later slot" +msgstr "Kjósa frekar Live TV þegar upptaka á seinni tíma" + +msgctxt "#30010" +msgid "Prefer recording and stop Live TV" +msgstr "Kjósa upptöku og stöðva Live TV" + +msgctxt "#30011" +msgid "Prefer Live TV and cancel conflicting recording" +msgstr "Kjósa Live TV og hætta við upptöku sem rekst á" + +msgctxt "#30012" +msgid "MythTV Backend Ethernet address (WOL)" +msgstr "Ethernet vistfang MythTV bakenda (WOL)" msgctxt "#30019" msgid "General" msgstr "Almennt" +msgctxt "#30020" +msgid "Template provider" +msgstr "Veita sniðmáts" + +msgctxt "#30021" +msgid "Internal" +msgstr "Innbyggt" + msgctxt "#30022" msgid "MythTV" msgstr "MythTV" +msgctxt "#30025" +msgid "Internal template" +msgstr "Innbyggt sniðmát" + +msgctxt "#30026" +msgid "Automatically Look Up Metadata" +msgstr "Leita sjálfvirkt að lýsigögnum" + +msgctxt "#30027" +msgid "Commercial Flag new recordings" +msgstr "Auglýsinga-merkja nýjar upptökur" + +msgctxt "#30028" +msgid "Transcode new recordings" +msgstr "Umkóða nýjar upptökur" + +msgctxt "#30029" +msgid "Run User Job #1" +msgstr "Keyra Notandaverk #1" + +msgctxt "#30030" +msgid "Run User Job #2" +msgstr "Keyra Notandaverk #2" + +msgctxt "#30031" +msgid "Run User Job #3" +msgstr "Keyra Notandaverk #3" + +msgctxt "#30032" +msgid "Run User Job #4" +msgstr "Keyra Notandaverk #4" + +msgctxt "#30033" +msgid "Transcoder" +msgstr "Umkóðari" + +msgctxt "#30034" +msgid "Allow recordings to expire?" +msgstr "Leyfa upptökum að renna út?" + +msgctxt "#30049" +msgid "Recording template" +msgstr "Sniðmát upptakna" + +msgctxt "#30050" +msgid "Advanced" +msgstr "Ítarlegt" + +msgctxt "#30052" +msgid "Enable demuxing MPEG-TS" +msgstr "Virkja MPEG-TS demuxing" + +msgctxt "#30100" +msgid "Protocol version: %i - Database version: %i" +msgstr "Útgáfa samskiptareglna: %i - Útgáfa gagnagrunns: %i" + +msgctxt "#30300" +msgid "Failed to connect to MythTV backend" +msgstr "Tókst ekki að tengjast bakenda MythTV" + +msgctxt "#30301" +msgid "Failed to connect to MythTV database" +msgstr "Tókst ekki að tengjast MythTV gagnagrunni" + +msgctxt "#30302" +msgid "Connection to MythTV backend lost" +msgstr "Tenging við MythTV bakenda rofnaði" + +msgctxt "#30303" +msgid "Connection to MythTV restored" +msgstr "Tenging við MythTV bakenda endurheimt" + +msgctxt "#30304" +msgid "No response from MythTV backend" +msgstr "Engin svörun frá M;ythTV bakenda" + +msgctxt "#30305" +msgid "Channel unavailable" +msgstr "Rás ekki tiltæk" + +msgctxt "#30306" +msgid "Recorder unavailable" +msgstr "Upptökutæki ekki tiltækt" + +msgctxt "#30307" +msgid "Canceling conflicting recording: %s" +msgstr "Hætta við upptöku sem rekst á: " + +msgctxt "#30308" +msgid "Stopping Live TV due to conflicting recording: %s" +msgstr "Stöðva Live TV vegna upptöku sem rekst á: %s" + +msgctxt "#30309" +msgid "Not recording" +msgstr "Ekki að taka upp" + msgctxt "#30310" msgid "Enabled" msgstr "Virkt" @@ -35,3 +187,39 @@ msgctxt "#30311" msgid "Disabled" msgstr "Óvirkt" + +msgctxt "#30312" +msgid "No broadcast found" +msgstr "Engin útsending fannst" + +msgctxt "#30411" +msgid "Delete and re-record" +msgstr "Eyða og taka upp aftur" + +msgctxt "#30412" +msgid "Keep LiveTV recording" +msgstr "Halda Live TV í upptöku" + +msgctxt "#30421" +msgid "Show/hide rules with status 'Not Recording'" +msgstr "Sýna/Fela reglur með stöðu 'Ekki að taka upp'" + +msgctxt "#30431" +msgid "Record all showings (this channel)" +msgstr "Taka upp alla þætti (þessi rás)" + +msgctxt "#30432" +msgid "Record this showing every week" +msgstr "Taka upp þessa sýningu í hverri viku" + +msgctxt "#30433" +msgid "Record this showing every day" +msgstr "Taka upp þennan þátt daglega" + +msgctxt "#30434" +msgid "Record one showing (all channels)" +msgstr "Taka upp einn þátt (allar rásir)" + +msgctxt "#30435" +msgid "Record all new episodes (this channel)" +msgstr "Taka upp allar nýjar þáttaraður (þessi rás)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Italian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Italian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Italian/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Italian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -64,9 +64,13 @@ msgid "Prefer Live TV and cancel conflicting recording" msgstr "Preferisci Live TV e cancella le registrazioni incompatibili" +msgctxt "#30012" +msgid "MythTV Backend Ethernet address (WOL)" +msgstr "Indirizzo ethernet backend MythTV (WOL)" + msgctxt "#30019" msgid "General" -msgstr "Menu" +msgstr "Generale" msgctxt "#30020" msgid "Template provider" @@ -128,6 +132,10 @@ msgid "Advanced" msgstr "Avanzate" +msgctxt "#30052" +msgid "Enable demuxing MPEG-TS" +msgstr "Abilita demuxing MPEG-TS" + msgctxt "#30100" msgid "Protocol version: %i - Database version: %i" msgstr "Versione Protocollo: %i - Versione Database: %i" @@ -180,6 +188,10 @@ msgid "Disabled" msgstr "Disabilitato" +msgctxt "#30312" +msgid "No broadcast found" +msgstr "Nessuna trasmissione trovata" + msgctxt "#30411" msgid "Delete and re-record" msgstr "Elimina e registra di nuovo" @@ -187,3 +199,27 @@ msgctxt "#30412" msgid "Keep LiveTV recording" msgstr "Mantieni le registrazioni della LiveTV" + +msgctxt "#30421" +msgid "Show/hide rules with status 'Not Recording'" +msgstr "Mostra/nascondi le regole con stato 'Non registrare'" + +msgctxt "#30431" +msgid "Record all showings (this channel)" +msgstr "Registra tutte le trasmissioni (questo canale)" + +msgctxt "#30432" +msgid "Record this showing every week" +msgstr "Registra questa trasmissione ogni settimana" + +msgctxt "#30433" +msgid "Record this showing every day" +msgstr "Registra questa trasmissione ogni giorno" + +msgctxt "#30434" +msgid "Record one showing (all channels)" +msgstr "Registra una trasmissione (tutti i canali)" + +msgctxt "#30435" +msgid "Record all new episodes (this channel)" +msgstr "Registra tutti i nuovi episodi (questo canale)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Japanese/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Japanese/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Japanese/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Japanese/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -42,16 +42,28 @@ msgctxt "#30006" msgid "Enable Live TV" -msgstr "Live TV を有効に" +msgstr "ライブTV を有効に" msgctxt "#30007" msgid "Allow Live TV to move scheduled shows" -msgstr "Live Tvがスケジュールされたショーの移動を許可する" +msgstr "ライブTV がスケジュールされたショーの移動を許可する" msgctxt "#30008" msgid "Conflict handling" msgstr "コンフリクトの処理" +msgctxt "#30010" +msgid "Prefer recording and stop Live TV" +msgstr "ライブTV を停止して録画する" + +msgctxt "#30011" +msgid "Prefer Live TV and cancel conflicting recording" +msgstr "競合する録画をキャンセルしてライブTV を視聴する" + +msgctxt "#30012" +msgid "MythTV Backend Ethernet address (WOL)" +msgstr "MythTV バックエンドのイーサネットアドレス (WOL)" + msgctxt "#30019" msgid "General" msgstr "一般" @@ -108,6 +120,10 @@ msgid "Advanced" msgstr "高度な設定" +msgctxt "#30052" +msgid "Enable demuxing MPEG-TS" +msgstr "MPEG-TS 分離を有効" + msgctxt "#30100" msgid "Protocol version: %i - Database version: %i" msgstr "プロトコルのバージョン: %i - データベースのバージョン: %i" @@ -140,6 +156,18 @@ msgid "Recorder unavailable" msgstr "レコーダーが使用できない" +msgctxt "#30307" +msgid "Canceling conflicting recording: %s" +msgstr "競合する録画をキャンセルしました : %s" + +msgctxt "#30308" +msgid "Stopping Live TV due to conflicting recording: %s" +msgstr "録画と競合するためライブTV を視聴停止しました : %s" + +msgctxt "#30309" +msgid "Not recording" +msgstr "録画しません" + msgctxt "#30310" msgid "Enabled" msgstr "LCD有効" @@ -147,3 +175,31 @@ msgctxt "#30311" msgid "Disabled" msgstr "無効" + +msgctxt "#30411" +msgid "Delete and re-record" +msgstr "削除して再録画" + +msgctxt "#30412" +msgid "Keep LiveTV recording" +msgstr "ライブTV の録画を保つ" + +msgctxt "#30431" +msgid "Record all showings (this channel)" +msgstr "すべてを録画する (このチャンネル)" + +msgctxt "#30432" +msgid "Record this showing every week" +msgstr "毎週録画する" + +msgctxt "#30433" +msgid "Record this showing every day" +msgstr "毎日録画する" + +msgctxt "#30434" +msgid "Record one showing (all channels)" +msgstr "すべてを録画する (すべてのチャンネル)" + +msgctxt "#30435" +msgid "Record all new episodes (this channel)" +msgstr "すべてを新しいエピソードを録画する (このチャンネル)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Korean/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Korean/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Korean/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Korean/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -67,3 +67,15 @@ msgctxt "#30311" msgid "Disabled" msgstr "사용 안 함" + +msgctxt "#30432" +msgid "Record this showing every week" +msgstr "이 프로그램 매 주 녹화" + +msgctxt "#30433" +msgid "Record this showing every day" +msgstr "이 프로그램 매일 녹화 " + +msgctxt "#30435" +msgid "Record all new episodes (this channel)" +msgstr "모든 새 에피소드 녹화 (이 채널)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Latvian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Latvian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Latvian/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Latvian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -20,6 +20,26 @@ msgid "MythTV Backend Hostname or IP" msgstr "MythTV aizmugursistēmas saimniekvārds vai IP" +msgctxt "#30001" +msgid "MythTV Backend Port" +msgstr "MythTV aizmugursistēmas ports" + +msgctxt "#30002" +msgid "MythTV Database Username" +msgstr "MythTV datubāzes lietotājvārds" + +msgctxt "#30003" +msgid "MythTV Database Password" +msgstr "MythTV datubāzes parole" + +msgctxt "#30004" +msgid "MythTV Database Databasename" +msgstr "MythTV datubāzes nosaukums" + +msgctxt "#30005" +msgid "Include more debug information in the log file" +msgstr "Iekļaut vairāk atkļūdošanas informācijas žurnāla failā" + msgctxt "#30006" msgid "Enable Live TV" msgstr "Ieslēgt tiešraides TV" @@ -44,10 +64,18 @@ msgid "Prefer Live TV and cancel conflicting recording" msgstr "Dot priekšroku tiešraides TV un atcelt konfliktējošo ierakstu" +msgctxt "#30012" +msgid "MythTV Backend Ethernet address (WOL)" +msgstr "MythTV aizmugursistēmas datortīkla adrese (WOL)" + msgctxt "#30019" msgid "General" msgstr "Vispārīgi" +msgctxt "#30020" +msgid "Template provider" +msgstr "Veidnes piegādātājs" + msgctxt "#30021" msgid "Internal" msgstr "Iekšējs" @@ -56,21 +84,77 @@ msgid "MythTV" msgstr "MythTV" +msgctxt "#30025" +msgid "Internal template" +msgstr "Iekšējā veidne" + +msgctxt "#30026" +msgid "Automatically Look Up Metadata" +msgstr "Automātiski uzmeklēt metadatus" + +msgctxt "#30027" +msgid "Commercial Flag new recordings" +msgstr "Komerciālais karogs jauniem ierakstiem" + +msgctxt "#30028" +msgid "Transcode new recordings" +msgstr "Transkodēt jaunos ierakstus" + +msgctxt "#30029" +msgid "Run User Job #1" +msgstr "Darbināt lietotāja uzdevumu #1" + +msgctxt "#30030" +msgid "Run User Job #2" +msgstr "Darbināt lietotāja uzdevumu #2" + +msgctxt "#30031" +msgid "Run User Job #3" +msgstr "Darbināt lietotāja uzdevumu #3" + +msgctxt "#30032" +msgid "Run User Job #4" +msgstr "Darbināt lietotāja uzdevumu #4" + msgctxt "#30033" msgid "Transcoder" msgstr "Pārkodētājs" +msgctxt "#30034" +msgid "Allow recordings to expire?" +msgstr "Vai atļaut beigties ierakstu termiņam?" + +msgctxt "#30049" +msgid "Recording template" +msgstr "Ierakstīšanas veidne" + msgctxt "#30050" msgid "Advanced" msgstr "Papildus" +msgctxt "#30052" +msgid "Enable demuxing MPEG-TS" +msgstr "Ieslēgt MPEG-TS demultipleksu" + +msgctxt "#30100" +msgid "Protocol version: %i - Database version: %i" +msgstr "Protokola versija: %i - Datubāzes versija: %i" + +msgctxt "#30300" +msgid "Failed to connect to MythTV backend" +msgstr "Neizdevās pieslēgties MythTV aizmugursistēmai" + +msgctxt "#30301" +msgid "Failed to connect to MythTV database" +msgstr "Neizdevās pieslēgties MythTV datubāzei" + msgctxt "#30302" msgid "Connection to MythTV backend lost" -msgstr "Zudis savienojums ar MythTV aizmugursistēmu" +msgstr "Zudis MythTV aizmugursistēmas pieslēgums" msgctxt "#30303" msgid "Connection to MythTV restored" -msgstr "Savienojums ar MythTV atjaunots" +msgstr "MythTV pieslēgums atjaunots" msgctxt "#30304" msgid "No response from MythTV backend" @@ -80,6 +164,14 @@ msgid "Channel unavailable" msgstr "Kanāls nav pieejams" +msgctxt "#30306" +msgid "Recorder unavailable" +msgstr "Ierakstītājs nepieejams" + +msgctxt "#30307" +msgid "Canceling conflicting recording: %s" +msgstr "Atceļ konfliktējošo ierakstīšanu: %s" + msgctxt "#30308" msgid "Stopping Live TV due to conflicting recording: %s" msgstr "Aptur tiešraides TV, jo konfliktē ar ierakstu: %s" @@ -96,6 +188,38 @@ msgid "Disabled" msgstr "Izslēgts" +msgctxt "#30312" +msgid "No broadcast found" +msgstr "Pārraide nav atrasta" + +msgctxt "#30411" +msgid "Delete and re-record" +msgstr "Dzēst un ierakstīt no jauna" + msgctxt "#30412" msgid "Keep LiveTV recording" msgstr "Paturēt tiešraides TV ierakstu" + +msgctxt "#30421" +msgid "Show/hide rules with status 'Not Recording'" +msgstr "Rādīt/slēpt kārtulas ar statusu 'neieraksta'" + +msgctxt "#30431" +msgid "Record all showings (this channel)" +msgstr "Ierakstīt visus raidījumus (šis kanāls)" + +msgctxt "#30432" +msgid "Record this showing every week" +msgstr "Ierakstīt šo raidījumu katru nedēļu" + +msgctxt "#30433" +msgid "Record this showing every day" +msgstr "Ierakstīt šo raidījumu katru dienu" + +msgctxt "#30434" +msgid "Record one showing (all channels)" +msgstr "Ierakstīt vienu raidījumu (visi kanāli)" + +msgctxt "#30435" +msgid "Record all new episodes (this channel)" +msgstr "Ierakstīt visas jaunās sērijas (šis kanāls)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Lithuanian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Lithuanian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Lithuanian/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Lithuanian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -18,27 +18,27 @@ msgctxt "#30000" msgid "MythTV Backend Hostname or IP" -msgstr "MythTV galinės sąsajos serverio pavadinimas arba IP" +msgstr "MythTV posistemės serverio pavadinimas arba IP" msgctxt "#30001" msgid "MythTV Backend Port" -msgstr "MythTV galinės sąsajos portas" +msgstr "MythTV posistemės prievadas" msgctxt "#30002" msgid "MythTV Database Username" -msgstr "MythTV galinės sąsajos naudotojo vardas" +msgstr "MythTV duomenų bazės vartotojo vardas" msgctxt "#30003" msgid "MythTV Database Password" -msgstr "MythTV galinės sąsajos slaptažodis" +msgstr "MythTV duomenų bazės slaptažodis" msgctxt "#30004" msgid "MythTV Database Databasename" -msgstr "MythTV galinės sąsajos duomenų bazės pavadinimas" +msgstr "MythTV duomenų bazės pavadinimas" msgctxt "#30005" msgid "Include more debug information in the log file" -msgstr "Įtraukti derinimo informaciją žurnalo faile" +msgstr "Įtraukti daugiau derinimo informacijos į žurnalo failą" msgctxt "#30006" msgid "Enable Live TV" @@ -46,20 +46,132 @@ msgctxt "#30007" msgid "Allow Live TV to move scheduled shows" -msgstr "Leisti Live TV perkelti į oficialų sąrašą rodymui/naudojimui" +msgstr "Leisti Live TV perkelti suplanuotas laidas" + +msgctxt "#30008" +msgid "Conflict handling" +msgstr "Konfliktų valdymas" + +msgctxt "#30009" +msgid "Prefer Live TV when recording has later slot" +msgstr "Teikti pirmenybę TV transliacijai, kai yra vėliau suplanuotas įrašymas" + +msgctxt "#30010" +msgid "Prefer recording and stop Live TV" +msgstr "Teikti pirmenybę įrašymui ir stabdyti TV transliaciją" + +msgctxt "#30011" +msgid "Prefer Live TV and cancel conflicting recording" +msgstr "Teikti pirmenybę TV transliacijai ir atšaukti konfliktuojantį įrašą" + +msgctxt "#30012" +msgid "MythTV Backend Ethernet address (WOL)" +msgstr "MythTV posistemės laidinio tinklo adresas (WOL)" msgctxt "#30019" msgid "General" msgstr "Pagrindinis" +msgctxt "#30020" +msgid "Template provider" +msgstr "Šablono tiekėjas" + +msgctxt "#30021" +msgid "Internal" +msgstr "Vidinis" + +msgctxt "#30022" +msgid "MythTV" +msgstr "MythTV" + +msgctxt "#30025" +msgid "Internal template" +msgstr "Vidinis šablonas" + +msgctxt "#30026" +msgid "Automatically Look Up Metadata" +msgstr "Automatiškai ieškoti metaduomenų" + +msgctxt "#30028" +msgid "Transcode new recordings" +msgstr "Perkoduoti naujus įrašus" + +msgctxt "#30029" +msgid "Run User Job #1" +msgstr "Paleisti vartotojo darbą #1" + +msgctxt "#30030" +msgid "Run User Job #2" +msgstr "Paleisti vartotojo darbą #2" + +msgctxt "#30031" +msgid "Run User Job #3" +msgstr "Paleisti vartotojo darbą #3" + +msgctxt "#30032" +msgid "Run User Job #4" +msgstr "Paleisti vartotojo darbą #4" + +msgctxt "#30033" +msgid "Transcoder" +msgstr "Perkodavimas" + +msgctxt "#30034" +msgid "Allow recordings to expire?" +msgstr "Leisti baigtis įrašų galiojimui?" + +msgctxt "#30049" +msgid "Recording template" +msgstr "Įrašo šablonas" + msgctxt "#30050" msgid "Advanced" msgstr "Pažangus" +msgctxt "#30100" +msgid "Protocol version: %i - Database version: %i" +msgstr "Protokolo versija: %i - Duomenų bazės versija: %i" + +msgctxt "#30300" +msgid "Failed to connect to MythTV backend" +msgstr "Nepavyko prisijungti prie MythTV posistemės" + +msgctxt "#30301" +msgid "Failed to connect to MythTV database" +msgstr "Nepavyko prisijungti prie MythTV duomenų bazės" + +msgctxt "#30302" +msgid "Connection to MythTV backend lost" +msgstr "Atsijungta nuo MythTV posistemės" + +msgctxt "#30303" +msgid "Connection to MythTV restored" +msgstr "Prisijungimas prie MythTV atkurtas" + +msgctxt "#30304" +msgid "No response from MythTV backend" +msgstr "Nėra atsako iš MythTV posistemės" + msgctxt "#30305" msgid "Channel unavailable" msgstr "Kanalas nepasiekiamas" +msgctxt "#30306" +msgid "Recorder unavailable" +msgstr "Įrašo įrenginys nepasiekiamas" + +msgctxt "#30307" +msgid "Canceling conflicting recording: %s" +msgstr "Atšaukiamas konfliktuojantis įrašymas: %s" + +msgctxt "#30308" +msgid "Stopping Live TV due to conflicting recording: %s" +msgstr "Stabdoma TV transliacija dėl konfliktuojančio įrašymo: %s" + +msgctxt "#30309" +msgid "Not recording" +msgstr "Neįrašoma" + msgctxt "#30310" msgid "Enabled" msgstr "Įjungta" @@ -67,3 +179,31 @@ msgctxt "#30311" msgid "Disabled" msgstr "Atjungta" + +msgctxt "#30312" +msgid "No broadcast found" +msgstr "Nerasta transliacijų" + +msgctxt "#30411" +msgid "Delete and re-record" +msgstr "Ištrinti ir įrašyti iš naujo" + +msgctxt "#30421" +msgid "Show/hide rules with status 'Not Recording'" +msgstr "Rodyti/slėpti taisykles su būsena 'Neįrašoma'" + +msgctxt "#30431" +msgid "Record all showings (this channel)" +msgstr "Įrašyti visas laidas (šio kanalo)" + +msgctxt "#30432" +msgid "Record this showing every week" +msgstr "Įrašyti šią laidą kiekvieną savaitę" + +msgctxt "#30433" +msgid "Record this showing every day" +msgstr "Įrašyti šią laidą kiekvieną dieną" + +msgctxt "#30435" +msgid "Record all new episodes (this channel)" +msgstr "Įrašyti visus naujus epizodus (šiame kanale)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Polish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Polish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Polish/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Polish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -18,7 +18,7 @@ msgctxt "#30000" msgid "MythTV Backend Hostname or IP" -msgstr "IP lub nazwa hosta serwera MythTV" +msgstr "Nazwa hosta lub adres IP serwera MythTV" msgctxt "#30001" msgid "MythTV Backend Port" @@ -26,11 +26,11 @@ msgctxt "#30002" msgid "MythTV Database Username" -msgstr "Nazwa użytkownika do bazy danych MythTV" +msgstr "Nazwa użytkownika bazy danych MythTV" msgctxt "#30003" msgid "MythTV Database Password" -msgstr "Hasło do bazy danych MythTV" +msgstr "Hasło użytkownika bazy danych MythTV" msgctxt "#30004" msgid "MythTV Database Databasename" @@ -38,15 +38,15 @@ msgctxt "#30005" msgid "Include more debug information in the log file" -msgstr "Umieść więcej szczegółowych informacji w logach (debug)" +msgstr "Rejestruj szczegółowe informacje diagnostyczne" msgctxt "#30006" msgid "Enable Live TV" -msgstr "Włącz TV na żywo" +msgstr "Aktywuj funkcje odtwarzania i nagrywania telewizji" msgctxt "#30007" msgid "Allow Live TV to move scheduled shows" -msgstr "Pozwól TV na żywo na przesuwanie zaplanowanych programów" +msgstr "Zezwalaj na przesuwanie zaplanowanych programów" msgctxt "#30008" msgid "Conflict handling" @@ -54,15 +54,15 @@ msgctxt "#30009" msgid "Prefer Live TV when recording has later slot" -msgstr "Preferuj TV gdy nagranie jest później" +msgstr "Preferuj odtwarzanie zamiast nagrywania, gdy nie koliduje" msgctxt "#30010" msgid "Prefer recording and stop Live TV" -msgstr "Preferuj nagranie i zatrzymuj TV" +msgstr "Preferuj nagrywanie zatrzymując odtwarzanie" msgctxt "#30011" msgid "Prefer Live TV and cancel conflicting recording" -msgstr "Preferuj TV i anuluj nagranie" +msgstr "Preferuj odtwarzanie anulując kolidujące nagrywanie" msgctxt "#30012" msgid "MythTV Backend Ethernet address (WOL)" @@ -90,31 +90,31 @@ msgctxt "#30026" msgid "Automatically Look Up Metadata" -msgstr "Automatyczne wyszukiwanie etykiet" +msgstr "Automatyczne wyszukiwanie metadanych" msgctxt "#30027" msgid "Commercial Flag new recordings" -msgstr "Wskaźnik reklam nowych nagrań" +msgstr "Znacznik reklam nowych nagrań" msgctxt "#30028" msgid "Transcode new recordings" -msgstr "Przekoduj nowe nagrania" +msgstr "Transkoduj nowe nagrania" msgctxt "#30029" msgid "Run User Job #1" -msgstr "Uruchom zadanie 1" +msgstr "Uruchom zadanie nr 1" msgctxt "#30030" msgid "Run User Job #2" -msgstr "Uruchom zadanie 2" +msgstr "Uruchom zadanie nr 2" msgctxt "#30031" msgid "Run User Job #3" -msgstr "Uruchom zadanie 3" +msgstr "Uruchom zadanie nr 3" msgctxt "#30032" msgid "Run User Job #4" -msgstr "Uruchom zadanie 4" +msgstr "Uruchom zadanie nr 4" msgctxt "#30033" msgid "Transcoder" @@ -122,7 +122,7 @@ msgctxt "#30034" msgid "Allow recordings to expire?" -msgstr "Nagrania przedawniają się?" +msgstr "Zezwalać na przedawnienie nagrań?" msgctxt "#30049" msgid "Recording template" @@ -134,7 +134,7 @@ msgctxt "#30052" msgid "Enable demuxing MPEG-TS" -msgstr "Włącz demukser MPEG-TS" +msgstr "Używaj demuksera MPEG-TS" msgctxt "#30100" msgid "Protocol version: %i - Database version: %i" @@ -142,11 +142,11 @@ msgctxt "#30300" msgid "Failed to connect to MythTV backend" -msgstr "Nie można połączyć się z serwerem MythTV" +msgstr "Nieudane połączenie z serwerem MythTV" msgctxt "#30301" msgid "Failed to connect to MythTV database" -msgstr "Nie można połączyć się z bazą danych MythTV" +msgstr "Nieudane połączenie z bazą danych MythTV" msgctxt "#30302" msgid "Connection to MythTV backend lost" @@ -154,7 +154,7 @@ msgctxt "#30303" msgid "Connection to MythTV restored" -msgstr "Przywrócone połączenie z MythTV" +msgstr "Przywrócono połączenie z MythTV" msgctxt "#30304" msgid "No response from MythTV backend" @@ -170,11 +170,11 @@ msgctxt "#30307" msgid "Canceling conflicting recording: %s" -msgstr "Anulowanie nagrania powodującego konflikt: %s" +msgstr "Anulowanie kolidującego nagrania: %s" msgctxt "#30308" msgid "Stopping Live TV due to conflicting recording: %s" -msgstr "Zatrzymywanie TV z powodu konfliktu nagrania: %s" +msgstr "Zatrzymywanie odtwarzania z powodu kolidującego nagrania: %s" msgctxt "#30309" msgid "Not recording" @@ -182,11 +182,11 @@ msgctxt "#30310" msgid "Enabled" -msgstr "Włączone" +msgstr "Aktywowane" msgctxt "#30311" msgid "Disabled" -msgstr "Wyłączony" +msgstr "Wyłączone" msgctxt "#30312" msgid "No broadcast found" @@ -198,11 +198,11 @@ msgctxt "#30412" msgid "Keep LiveTV recording" -msgstr "Nagrywaj TV na żywo" +msgstr "Zachowuj nagranie telewizji" msgctxt "#30421" msgid "Show/hide rules with status 'Not Recording'" -msgstr "Pokaż/Ukryj status \"Nie nagrywa\"" +msgstr "Pokazuj/Ukrywaj reguły ze stanem \"Nie nagrywa\"" msgctxt "#30431" msgid "Record all showings (this channel)" @@ -222,4 +222,4 @@ msgctxt "#30435" msgid "Record all new episodes (this channel)" -msgstr "Nagrywaj wszystkie nowe epizody (na tym kanale) " +msgstr "Nagrywaj wszystkie nowe odcinki (na tym kanale) " diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Portuguese (Brazil)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Portuguese (Brazil)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Portuguese (Brazil)/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Portuguese (Brazil)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -194,7 +194,7 @@ msgctxt "#30411" msgid "Delete and re-record" -msgstr "Deletar e regravar" +msgstr "Excluir e regravar" msgctxt "#30412" msgid "Keep LiveTV recording" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Romanian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Romanian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Romanian/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Romanian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -18,51 +18,55 @@ msgctxt "#30000" msgid "MythTV Backend Hostname or IP" -msgstr "Nume gazdă sau IP pentru backend MythTV" +msgstr "MythTV Nume host sau IP " msgctxt "#30001" msgid "MythTV Backend Port" -msgstr "Port backend MythTV" +msgstr "MythTV Port conexiune" msgctxt "#30002" msgid "MythTV Database Username" -msgstr "Utilizator bază de date MythTV" +msgstr "MythTV Nume utilizator bază de date " msgctxt "#30003" msgid "MythTV Database Password" -msgstr "Parolă bază de date MythTV" +msgstr "MythTV Parolă bază de date " msgctxt "#30004" msgid "MythTV Database Databasename" -msgstr "Nume bază de date MythTV" +msgstr "MythTV Nume bază de date " msgctxt "#30005" msgid "Include more debug information in the log file" -msgstr "Include mai multe informații de depanare în fișierul jurnal" +msgstr "Include mai multe informații de depanare în fișierul de log" msgctxt "#30006" msgid "Enable Live TV" -msgstr "Activează Live TV" +msgstr "Live TV Activează " msgctxt "#30007" msgid "Allow Live TV to move scheduled shows" -msgstr "Permite Live TV să mute serialele planificate" +msgstr " Live TV Permite mutarea serialele planificate" msgctxt "#30008" msgid "Conflict handling" -msgstr "Conflict" +msgstr "Manevrarea confictelor" msgctxt "#30009" msgid "Prefer Live TV when recording has later slot" -msgstr "Prefera Live TV atunci când înregistrarea are slot pentru mai târziu" +msgstr "Live TV Prioritar atunci când înregistrarea are slot pentru mai târziu" msgctxt "#30010" msgid "Prefer recording and stop Live TV" -msgstr "Prefera înregistrarea și oprește Live TV " +msgstr "Prioritar înregistrarea și oprește Live TV " msgctxt "#30011" msgid "Prefer Live TV and cancel conflicting recording" -msgstr "Prefera Live TV și anulează înregistrările conflictuale " +msgstr "Prioritar Live TV și anulează înregistrările conflictuale " + +msgctxt "#30012" +msgid "MythTV Backend Ethernet address (WOL)" +msgstr "MythTV Adresă Ethernet (WOL) " msgctxt "#30019" msgid "General" @@ -70,7 +74,7 @@ msgctxt "#30020" msgid "Template provider" -msgstr "Folosește format predefinit" +msgstr "Format predefinit" msgctxt "#30021" msgid "Internal" @@ -86,71 +90,75 @@ msgctxt "#30026" msgid "Automatically Look Up Metadata" -msgstr "Caută automat metadata" +msgstr "Cautare automată meta-date" msgctxt "#30027" msgid "Commercial Flag new recordings" -msgstr "Marchează înregistrările noi" +msgstr "Marchează înregistrările noi drept comerciale" msgctxt "#30028" msgid "Transcode new recordings" -msgstr "Transcode înregistrările noi" +msgstr "Codifică înregistrările noi" msgctxt "#30029" msgid "Run User Job #1" -msgstr "Rulează jobul utilizatorului # 1" +msgstr "Rulează jobul # 1" msgctxt "#30030" msgid "Run User Job #2" -msgstr "Rulează jobul utilizatorului # 2" +msgstr "Rulează jobul # 2" msgctxt "#30031" msgid "Run User Job #3" -msgstr "Rulează jobul utilizatorului # 3" +msgstr "Rulează jobul # 3" msgctxt "#30032" msgid "Run User Job #4" -msgstr "Rulează jobul utilizatorului # 4" +msgstr "Rulează jobul # 4" msgctxt "#30033" msgid "Transcoder" -msgstr "Transcoder" +msgstr "Aparat de codificare" msgctxt "#30034" msgid "Allow recordings to expire?" -msgstr "Permite expirarea înregistrării?" +msgstr "Permiteți expirarea înregistrărilor?" msgctxt "#30049" msgid "Recording template" -msgstr "Inregistrare în format predefinit" +msgstr "Format predefinit pentru înregistrare" msgctxt "#30050" msgid "Advanced" msgstr "Avansat" +msgctxt "#30052" +msgid "Enable demuxing MPEG-TS" +msgstr "Activează demultiplicarea MPEG-TS" + msgctxt "#30100" msgid "Protocol version: %i - Database version: %i" -msgstr "Versiunea protocolului: %i - Versiunea bazei de date: %i" +msgstr "Versiune protocol: %i - Versiune bază de date: %i" msgctxt "#30300" msgid "Failed to connect to MythTV backend" -msgstr "Conexiunea la MythTV backend eșuată" +msgstr "MythTV Conexiunea a eșuat" msgctxt "#30301" msgid "Failed to connect to MythTV database" -msgstr "Conexiunea la baza de date MythTV eșuată" +msgstr "MythTV Conexiunea la baza de date a eșuat" msgctxt "#30302" msgid "Connection to MythTV backend lost" -msgstr "Conexiunea la MythTV backend pierdută " +msgstr "MythTV Conexiunea s-a pierdut" msgctxt "#30303" msgid "Connection to MythTV restored" -msgstr "Conexiunea la MythTV backend restabilită " +msgstr "MythTV Conexiunea a fost restaurată" msgctxt "#30304" msgid "No response from MythTV backend" -msgstr "Nici un răspuns de la MythTV backend" +msgstr "Nici un răspuns de la aplicația MythTV " msgctxt "#30305" msgid "Channel unavailable" @@ -180,10 +188,38 @@ msgid "Disabled" msgstr "Dezactivat" +msgctxt "#30312" +msgid "No broadcast found" +msgstr "Nu a fost găsit un canal de transmisie" + msgctxt "#30411" msgid "Delete and re-record" -msgstr "Sterge si reinregistraza" +msgstr "Șterge și reînregistrează" msgctxt "#30412" msgid "Keep LiveTV recording" -msgstr "Pastreaza inregistrarea TV" +msgstr "Păstreză înregistrarea Live TV" + +msgctxt "#30421" +msgid "Show/hide rules with status 'Not Recording'" +msgstr "Afișează/Ascunde regulile cu status 'Nu se înregistreză'" + +msgctxt "#30431" +msgid "Record all showings (this channel)" +msgstr "Înregistra toate emisiunile (acest canal)" + +msgctxt "#30432" +msgid "Record this showing every week" +msgstr "Înregistrează această emisiune în fiecare săptămână" + +msgctxt "#30433" +msgid "Record this showing every day" +msgstr "Înregistrează această emisiune în fiecare zi" + +msgctxt "#30434" +msgid "Record one showing (all channels)" +msgstr "Înregistrează o emisiune (toate canalele)" + +msgctxt "#30435" +msgid "Record all new episodes (this channel)" +msgstr "Înregistrează toate episoadele noi (acest canal)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Sinhala/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Sinhala/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Sinhala/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Sinhala/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,33 @@ +# XBMC Media Center language file +# Addon Name: MythTV cmyth PVR Client +# Addon id: pvr.mythtv.cmyth +# Addon Provider: Christian Fetzer, Jean-Luc Barrière, Tonny Petersen +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Sinhala (http://www.transifex.com/projects/p/xbmc-main/language/si/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: si\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30019" +msgid "General" +msgstr "සාමාන්‍ය" + +msgctxt "#30050" +msgid "Advanced" +msgstr "උසස්" + +msgctxt "#30310" +msgid "Enabled" +msgstr "ක්‍රියාත්මක කලා" + +msgctxt "#30311" +msgid "Disabled" +msgstr "අක්‍රිය කර ඇත." diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Slovak/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Slovak/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Slovak/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Slovak/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -64,6 +64,10 @@ msgid "Prefer Live TV and cancel conflicting recording" msgstr "Uprednostniť živé TV vysielanie a zrušiť konfliktné plánované nahrávania" +msgctxt "#30012" +msgid "MythTV Backend Ethernet address (WOL)" +msgstr "Ethernetová adresa backendu MythTV (WOL)" + msgctxt "#30019" msgid "General" msgstr "Všeobecné" @@ -128,6 +132,10 @@ msgid "Advanced" msgstr "Pokročilé" +msgctxt "#30052" +msgid "Enable demuxing MPEG-TS" +msgstr "Povoliť demultiplexovanie MPEG-TS" + msgctxt "#30100" msgid "Protocol version: %i - Database version: %i" msgstr "Verzia protokolu: %i - Verzia databázy: %i" @@ -168,6 +176,10 @@ msgid "Stopping Live TV due to conflicting recording: %s" msgstr "Zastavuje sa živé TV vysielanie z dôvodu konfliktu s nahrávaním: %s" +msgctxt "#30309" +msgid "Not recording" +msgstr "Nenahráva sa" + msgctxt "#30310" msgid "Enabled" msgstr "Aktívne" @@ -176,6 +188,38 @@ msgid "Disabled" msgstr "Zakázaný" +msgctxt "#30312" +msgid "No broadcast found" +msgstr "Nenašlo sa žiadne vysielanie" + msgctxt "#30411" msgid "Delete and re-record" msgstr "Vymazať a znova nahrať" + +msgctxt "#30412" +msgid "Keep LiveTV recording" +msgstr "Ponechať nahrávky LiveTV" + +msgctxt "#30421" +msgid "Show/hide rules with status 'Not Recording'" +msgstr "Zobraziť/skryť pravidlá so stavom 'Nenahráva sa'" + +msgctxt "#30431" +msgid "Record all showings (this channel)" +msgstr "Nahrať všetky predstavenia (na tomto kanáli)" + +msgctxt "#30432" +msgid "Record this showing every week" +msgstr "Nahrať toto predstavenie každý týždeň" + +msgctxt "#30433" +msgid "Record this showing every day" +msgstr "Nahrať toto predstavenie každý deň" + +msgctxt "#30434" +msgid "Record one showing (all channels)" +msgstr "Nahrať jedno predstavenie (na všetkých kanáloch)" + +msgctxt "#30435" +msgid "Record all new episodes (this channel)" +msgstr "Nahrať všetky nové epizódy (na tomto kanáli)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Slovenian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Slovenian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Slovenian/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Slovenian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -90,7 +90,7 @@ msgctxt "#30026" msgid "Automatically Look Up Metadata" -msgstr "Samodejno poizvedi metapodatke" +msgstr "Samodejno poizvedi za metapodatke" msgctxt "#30027" msgid "Commercial Flag new recordings" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Spanish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Spanish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Spanish/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Spanish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -54,19 +54,19 @@ msgctxt "#30009" msgid "Prefer Live TV when recording has later slot" -msgstr "Prefiero TV en vivo y dejar la grabación para mas tarde" +msgstr "Preferir TV en vivo si la grabación es más adelante" msgctxt "#30010" msgid "Prefer recording and stop Live TV" -msgstr "Prefiero grabación y parar TV en vivo" +msgstr "Preferir grabación y parar TV en vivo" msgctxt "#30011" msgid "Prefer Live TV and cancel conflicting recording" -msgstr "Prefiero TV en vivo y cancelar la grabación en conflictivo" +msgstr "Prefiero TV en vivo y cancelar la grabación conflictiva" msgctxt "#30012" msgid "MythTV Backend Ethernet address (WOL)" -msgstr "Dirección IP MythTV Backend (WOL)" +msgstr "Dirección IP MythTV Back-end (WOL)" msgctxt "#30019" msgid "General" @@ -142,23 +142,23 @@ msgctxt "#30300" msgid "Failed to connect to MythTV backend" -msgstr "Falló conexión con backend de MythTV" +msgstr "Falló la conexión con Back-end de MythTV" msgctxt "#30301" msgid "Failed to connect to MythTV database" -msgstr "Falló conexión con base de datos de MythTV" +msgstr "Falló la conexión con base de datos de MythTV" msgctxt "#30302" msgid "Connection to MythTV backend lost" -msgstr "Conexión con backend de MythTV perdida" +msgstr "Conexión con Back-end de MythTV perdida" msgctxt "#30303" msgid "Connection to MythTV restored" -msgstr "Conexión con backend de MythTV restaurada" +msgstr "Conexión con Back-end de MythTV restaurada" msgctxt "#30304" msgid "No response from MythTV backend" -msgstr "No hay respuesta del backend de MythTV" +msgstr "No hay respuesta del Back-end de MythTV" msgctxt "#30305" msgid "Channel unavailable" @@ -174,11 +174,11 @@ msgctxt "#30308" msgid "Stopping Live TV due to conflicting recording: %s" -msgstr "Detención de TV en vivo debido a la grabación en conflicto: %s" +msgstr "Detención de TV en vivo debido a grabación en conflicto: %s" msgctxt "#30309" msgid "Not recording" -msgstr "No se esta grabando" +msgstr "No se está grabando" msgctxt "#30310" msgid "Enabled" @@ -186,11 +186,11 @@ msgctxt "#30311" msgid "Disabled" -msgstr "Deshabilitado" +msgstr "Desactivado" msgctxt "#30312" msgid "No broadcast found" -msgstr "No se ha encontrado broadcast" +msgstr "No se ha encontrado emisión" msgctxt "#30411" msgid "Delete and re-record" @@ -206,19 +206,19 @@ msgctxt "#30431" msgid "Record all showings (this channel)" -msgstr "Grabar todos los show (de este canal)" +msgstr "Grabar todos los programas (de este canal)" msgctxt "#30432" msgid "Record this showing every week" -msgstr "Grabar este show todas las semanas" +msgstr "Grabar este programa todas las semanas" msgctxt "#30433" msgid "Record this showing every day" -msgstr "Grabar este show todos los dias" +msgstr "Grabar este programa todos los dias" msgctxt "#30434" msgid "Record one showing (all channels)" -msgstr "Grabar un solo show (en todos los canales)" +msgstr "Grabar un programa (en todos los canales)" msgctxt "#30435" msgid "Record all new episodes (this channel)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Spanish (Argentina)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Spanish (Argentina)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Spanish (Argentina)/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Spanish (Argentina)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -64,6 +64,10 @@ msgid "Prefer Live TV and cancel conflicting recording" msgstr "Preferir TV en vivo y cancelar la grabación en conflicto" +msgctxt "#30012" +msgid "MythTV Backend Ethernet address (WOL)" +msgstr "Dirección Ethernet del MythTV de fondo (WOL)" + msgctxt "#30019" msgid "General" msgstr "General" @@ -128,6 +132,10 @@ msgid "Advanced" msgstr "Avanzado" +msgctxt "#30052" +msgid "Enable demuxing MPEG-TS" +msgstr "Habilitar desmultiplexación MPEG-TS" + msgctxt "#30100" msgid "Protocol version: %i - Database version: %i" msgstr "Versión de protocolo: %i - Versión de base de datos: %i" @@ -168,6 +176,10 @@ msgid "Stopping Live TV due to conflicting recording: %s" msgstr "Deteniendo TV en vivo debido a la grabación en conflicto: %s" +msgctxt "#30309" +msgid "Not recording" +msgstr "No está grabando" + msgctxt "#30310" msgid "Enabled" msgstr "Activado" @@ -175,3 +187,39 @@ msgctxt "#30311" msgid "Disabled" msgstr "Deshabilitado" + +msgctxt "#30312" +msgid "No broadcast found" +msgstr "No se encontró difusión" + +msgctxt "#30411" +msgid "Delete and re-record" +msgstr "Eliminar y volver a grabar" + +msgctxt "#30412" +msgid "Keep LiveTV recording" +msgstr "Seguir grabando LiveTV" + +msgctxt "#30421" +msgid "Show/hide rules with status 'Not Recording'" +msgstr "Mostrar/ocultar reglas con estado \"No grabando\"" + +msgctxt "#30431" +msgid "Record all showings (this channel)" +msgstr "Grabar todos los programas (este canal)" + +msgctxt "#30432" +msgid "Record this showing every week" +msgstr "Grabar este programa todas las semanas" + +msgctxt "#30433" +msgid "Record this showing every day" +msgstr "Grabar este programa todos los dias" + +msgctxt "#30434" +msgid "Record one showing (all channels)" +msgstr "Grabar un programa (todos los canales)" + +msgctxt "#30435" +msgid "Record all new episodes (this channel)" +msgstr "Grabar todos los episodios nuevos (este canal)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Tamil (India)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Tamil (India)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Tamil (India)/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Tamil (India)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -126,7 +126,7 @@ msgctxt "#30050" msgid "Advanced" -msgstr "மேம்பட்ட" +msgstr "மேம்பட்டது" msgctxt "#30100" msgid "Protocol version: %i - Database version: %i" @@ -174,4 +174,4 @@ msgctxt "#30311" msgid "Disabled" -msgstr "முடக்கப்பட்டன" +msgstr "முடக்கப்பட்டது" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Turkish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Turkish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/addon/resources/language/Turkish/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/addon/resources/language/Turkish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -40,6 +40,10 @@ msgid "Enable Live TV" msgstr "Canlı TV aktifleştir" +msgctxt "#30010" +msgid "Prefer recording and stop Live TV" +msgstr "Kaydı tercih et ve Live TV durdur" + msgctxt "#30019" msgid "General" msgstr "Genel" @@ -60,14 +64,58 @@ msgid "Internal template" msgstr "Dahili görünüm" +msgctxt "#30028" +msgid "Transcode new recordings" +msgstr "Yeni dönüştürücü kayıtları" + +msgctxt "#30029" +msgid "Run User Job #1" +msgstr "Kullanıcı çalışmaları #1" + +msgctxt "#30030" +msgid "Run User Job #2" +msgstr "Kullanıcı çalışmaları #2" + +msgctxt "#30031" +msgid "Run User Job #3" +msgstr "Kullanıcı çalışmaları #3" + +msgctxt "#30032" +msgid "Run User Job #4" +msgstr "Kullanıcı çalışmaları #4" + +msgctxt "#30033" +msgid "Transcoder" +msgstr "Dönüştürücü" + +msgctxt "#30049" +msgid "Recording template" +msgstr "Şablon kaydedildi." + msgctxt "#30050" msgid "Advanced" msgstr "Gelişmiş" +msgctxt "#30301" +msgid "Failed to connect to MythTV database" +msgstr "MythTV veritabanı ile bağlantı başarısız" + +msgctxt "#30303" +msgid "Connection to MythTV restored" +msgstr "Bağlantı düzenlendi." + msgctxt "#30305" msgid "Channel unavailable" msgstr "Kanal kullanılamıyor" +msgctxt "#30306" +msgid "Recorder unavailable" +msgstr "Kaydedici kullanılamıyor." + +msgctxt "#30309" +msgid "Not recording" +msgstr "Kaydedilemedi." + msgctxt "#30310" msgid "Enabled" msgstr "Etkin" @@ -76,6 +124,38 @@ msgid "Disabled" msgstr "Devre dışı" +msgctxt "#30312" +msgid "No broadcast found" +msgstr "Hiçbir yayın bulunamadı" + msgctxt "#30411" msgid "Delete and re-record" msgstr "Sil ve yeniden kaydet" + +msgctxt "#30412" +msgid "Keep LiveTV recording" +msgstr "LiveTV kaydını devam ettir" + +msgctxt "#30421" +msgid "Show/hide rules with status 'Not Recording'" +msgstr "'Kaydedilemeyenler' durumu için kuralları Göster/Gizle" + +msgctxt "#30431" +msgid "Record all showings (this channel)" +msgstr "Tüm kayıtları göster (bu kanal için)" + +msgctxt "#30432" +msgid "Record this showing every week" +msgstr "Tüm Hafta kayıtlarını göster" + +msgctxt "#30433" +msgid "Record this showing every day" +msgstr "Hergün kaydı höster" + +msgctxt "#30434" +msgid "Record one showing (all channels)" +msgstr "Kayıt göster (Tüm Kanallar)" + +msgctxt "#30435" +msgid "Record all new episodes (this channel)" +msgstr "Tüm bölümleri göster (nu kanal için)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/project/VS2010Express/pvr.mythtv.cmyth.vcxproj xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/project/VS2010Express/pvr.mythtv.cmyth.vcxproj --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/project/VS2010Express/pvr.mythtv.cmyth.vcxproj 2014-01-28 20:43:50.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/project/VS2010Express/pvr.mythtv.cmyth.vcxproj 2014-07-18 06:05:30.000000000 +0000 @@ -1,5 +1,5 @@  - + Debug @@ -103,12 +103,14 @@ DynamicLibrary true MultiByte + v120 DynamicLibrary false true MultiByte + v120 diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/src/categories.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/src/categories.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/src/categories.cpp 2012-11-15 21:18:19.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/src/categories.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/src/categories.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/src/categories.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/src/categories.h 2012-11-15 21:18:19.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/src/categories.h 2014-07-18 06:05:30.000000000 +0000 @@ -15,7 +15,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/src/client.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/src/client.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/src/client.cpp 2014-01-28 20:43:50.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/src/client.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/src/client.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/src/client.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/src/client.h 2014-01-28 20:43:50.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/src/client.h 2014-07-18 06:05:30.000000000 +0000 @@ -15,7 +15,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/src/demuxer/common.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/src/demuxer/common.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/src/demuxer/common.h 2014-01-28 20:43:50.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/src/demuxer/common.h 2014-07-18 06:05:30.000000000 +0000 @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/src/demuxer/debug.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/src/demuxer/debug.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/src/demuxer/debug.cpp 2014-01-28 20:43:50.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/src/demuxer/debug.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/src/demuxer/debug.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/src/demuxer/debug.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/src/demuxer/debug.h 2014-01-28 20:43:50.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/src/demuxer/debug.h 2014-07-18 06:05:30.000000000 +0000 @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/src/demuxer/elementaryStream.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/src/demuxer/elementaryStream.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/src/demuxer/elementaryStream.cpp 2014-01-28 20:43:50.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/src/demuxer/elementaryStream.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/src/demuxer/elementaryStream.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/src/demuxer/elementaryStream.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/src/demuxer/elementaryStream.h 2014-01-28 20:43:50.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/src/demuxer/elementaryStream.h 2014-07-18 06:05:30.000000000 +0000 @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/src/demuxer/tsDemuxer.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/src/demuxer/tsDemuxer.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/src/demuxer/tsDemuxer.cpp 2014-01-28 20:43:50.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/src/demuxer/tsDemuxer.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/src/demuxer/tsDemuxer.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/src/demuxer/tsDemuxer.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/src/demuxer/tsDemuxer.h 2014-01-28 20:43:50.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/src/demuxer/tsDemuxer.h 2014-07-18 06:05:30.000000000 +0000 @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/src/demuxer/tsPacket.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/src/demuxer/tsPacket.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/src/demuxer/tsPacket.h 2014-01-28 20:43:50.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/src/demuxer/tsPacket.h 2014-07-18 06:05:30.000000000 +0000 @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/src/demuxer/tsTable.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/src/demuxer/tsTable.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/src/demuxer/tsTable.h 2014-01-28 20:43:50.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/src/demuxer/tsTable.h 2014-07-18 06:05:30.000000000 +0000 @@ -13,7 +13,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/src/fileOps.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/src/fileOps.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/src/fileOps.h 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/src/fileOps.h 2014-07-18 06:05:30.000000000 +0000 @@ -15,7 +15,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/src/tools.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/src/tools.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.mythtv.cmyth/src/tools.h 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.mythtv.cmyth/src/tools.h 2014-07-18 06:05:30.000000000 +0000 @@ -15,7 +15,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/addon.xml.in xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/addon.xml.in --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/addon.xml.in 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/addon.xml.in 2014-07-18 06:05:30.000000000 +0000 @@ -1,12 +1,12 @@ - + - + Frontend του XBMC για το NextPVR XBMC frontend for the NextPVR XBMC frontend for the NextPVR + XBMC frontend for the NextPVR Front-end de XBMC para NextPVR Front-end de XBMC para NextPVR XBMC esi NextPVR'ile - Applicatif XBMC pour l'enregistreur NextPVR + Interface logicielle pour l'enregistreur NextPVR Frontal XBMC pour NextPVR Interface de XBMC para NextPVR ממשק קדמי XBMC עבור NextPVR XBMC sučelje za NextPVR XBMC NextPVR előtér-kiszolgáló Frontend XBMC untuk NextPVR + XBMC framendi fyrir NextPVR Frontend XBMC per NextPVR NextPVR 用 XBMC フロントエンド XBMC-ის სამომხმარებლო მხარე NextPVR-თვის @@ -58,6 +60,7 @@ XBMC-jev vmesnik za NextPVR XBMC-frontend för NextPVR NextPVR காண XBMC முன்நிலை + NextPVR için XBMC ön ucu Накладка XBMC для NextPVR Giao tiếp XBMC cho NextPVR XBMC 的 NextPVR 前端 @@ -73,16 +76,18 @@ Frontend για το NextPVR. Υποστηρίζει ροές Live TV & Εγγραφές, ακρόαση Ραδιοφώνου και EPG. NextPVR frontend. Supports streaming of Live TV & Recordings, listening to Radio channels and EPG. NextPVR frontend. Supports streaming of Live TV & Recordings, listening to Radio channels and EPG. + NextPVR frontend. Supports streaming of Live TV & Recordings, listening to Radio channels and EPG. Front-end de NextPVR. Soporta transmisiones de TV en Vivo y Grabaciones, escuchar canales de Radio y Guía Electrónica de Programas (EPG). - Front-end de NextPVR. Soporta transmisiones de TV en Vivo y Grabaciones, escuchar canales de Radio y Guía Electrónica de Programas (EPG). + Front-end de NextPVR. Soporta transmisiones de TV en Vivo y Grabaciones, escuchar canales de Radio y Guía Electrónica de Programas (GEP). NextPVR esi. Toetab telekanalite striimimist ja salvestamist, raadio kuulamist ja elektroonilist saatekava. - Applicatif XBMC pour NextPVR. Supporte la lecture en continu de direct TV et l'enregistrement, l'écoute de radios et les guides de programmes. - Frontal de numériscope pour NextPVR, prenant en charge les télés en direct & les enregistrements, l'écoute de chaînes radio, et le GÉP. - Interface de NextPVR. Compatíbel coa transmisión de TV ao vivo, gravacións e escoita de canles de radio e Guía. + Interface logicielle pour l'enregistreur NextPVR. Supporte la lecture en continu de direct TV et l'enregistrement, l'écoute de radios et les guides de programmes. + Frontal de numériscope pour NextPVR, prenant en charge la lecture en transit des télés en direct & les enregistrements, l'écoute de chaînes radio, et le GÉP. + Interface de NextPVR. Compatíbel coa transmisión de TV en directo, gravacións, escoita de canles de radio e Guía. ממשק קדמי NextPVR.תומך בשידורים חיים והקלטות של טלוויזיה ורדיו ולוחות שידורים NextPVR sučelje. Podržava stremanje i snimanje TV programa, slušanje radio programa i elektronski programski vodič (EPG). NextPVR előtér-kiszolgáló. Élő adások, felvételek és rádió csatornák sugárzásának támogatása EPG-vel Frontend NextPVR. Mendukung pengaliran Siaran TV langsung dan perekaman, mendengarkan radio dan EPG. + Framendi fyrir NextPVR. Styður straum á Live TV og upptökum, hlustun á útvarpsrásir og rafræna sjónvarpsvísa. (EGP). Frontend NextPVR. Supporta lo streaming di Live TV, le registrazioni, l'ascolto dei canali radio e l'EPG. NextPVR フロントエンドです。Live TV や録画番組のストリーミング、ラジオチャンネルの視聴、EPG をサポートしています。 NextPVR სამომხმარებლო მხარე მხარს უჭერს Live TV-ის და ჩანაწერებს, რადიოს და EPG. @@ -94,22 +99,23 @@ NextPVR frontend. Live TV နှင့် Recordings ၊ ရေဒီယိုလှိုင်းများကို နားဆင်ခြင်း ၊ EPG စသည်တို့ကို ထောက်ပံ့ပေးသည်။ NextPVR frontend. Ondersteunt streaming van Live TV & Recordings, het luisteren naar Radio kanalen en EPG. NextPVR frontend. Støtter visning av direkte TV og opptak, lytting til radiokanaler og EPG. - Klient NextPVR. Wspiera strumieniowanie telewizji i nagrywanie, słuchanie radia oraz funkcje Przewodnika TV. + Klient NextPVR wspiera strumieniowanie kanałów radiowych i telewizyjnych, nagrywanie oraz funkcje przewodnika TV. Frontend NextPVR. Suporta transmissão de Live TV e Gravações, ouvir estações de Rádio e EPG. NextPVR Frontend. Suporta streaming de TV ao Vivo e Gravações, ouvir canais de rádio e EPG. - Interfața NextPVR. Suporta streaming Live TV, inregistrari, radio și gid electronic de programe + Interfața NextPVR. Suporta streaming Live TV și inregistrari, radio și ghid electronic de programe (EPG) Интерфейс для NextPVR. Поддерживает просмотр и запись ТВ, прослушивание радио и EPG. NextPVR rozhranie. Podporuje streamovanie živého televízneho vysielania a nahrávok, počúvanie rozhlasových kanálov a EPG. Vmesnik za NextPVR; podpira pretakanje televizije v živo & posnetkov, poslušanje radia in EPG. NextPVR-frontend. Stödjer strömning av direktsänd TV & inspelningar, lyssna på radiokanaler och EPG. NextPVR முன்நிலை. லைவ் டிவி & பதிவுகளின் ஸ்ட்ரீமிங் செய்யவும், ரேடியோ சேனல்கள் கேட்கவும் மற்றும் EPG, துணைபுரிகிறது. + NextPVR ön ucu. Canlı TV akışı ve kayıt yapabilme, radyo kanallarını dinleme ve EPG destekler. Накладка для NextPVR. Підтримує потокове Live TV & запис, прослуховування радіо каналів і телегід. Giao tiếp NextPVR. Hỗ trợ truyền phát và thu chương trình Live TV, nghe Radio và hiển thị lịch trình chiếu (EPG). NextPVR 前端。支持直播电视和录像流媒体、收听电台和电子节目单。 NextPVR前端。支援的串流媒體包括有:直播電視和錄影,收聽廣播頻道和電子節目表。 Hierdie is werk in vordering. Gebruik op jou eie risiko. This is a work in progress. Use at your own risk. - Разработката на програмата не е завършена. Използвайте на свой собствен риск. + Разработката на програмата не е завършена. Ползвайте на своя отговорност. Això és un treball en curs. Utilitzeu-lo sota la vostra responsabilitat. Práce na tomto rozhraní stále probíhají. Používejte na vlastní nebezpečí. Mae hwn i gyd ar waith. Ar eich menter eich hun. @@ -118,36 +124,40 @@ Έργο υπό ανάπτυξη. Χρησιμοποιήστε το υπ' ευθύνη σας. This is a work in progress. Use at your own risk. This is a work in progress. Use at your own risk. + This is a work in progress. Use at your own risk. Este es un trabajo en desarrollo. Úsalo bajo tu responsabilidad. Este es un trabajo en desarrollo. Usarlo bajo propio riesgo. Este es un trabajo en curso. Úsalo bajo tu propio riesgo. See on pooleliolev töö. Kasutada omal vastutusel. Logiciel en cours d'élaboration. À utiliser à vos risques et périls. - Ceci est un travail en cours. Utiliser à vos propres risques. - Aínda se está no desenvolvemento. Usar baixo o seu propio risco. + Ceci est un travail en cours. Utilisez à vos propres risques. + Aínda está en desenvolvemento. Usar baixo o seu propio risco. פרויקט זה הנו בתהליך מתמשך.השתמש על אחריותך בלבד. NextPVR PVR klijent je je još uvijek pod razvojem. Koristite ga na vlastitu odgovornost. Fejlesztés alatt! A saját felelősségére használja! Ini adalah proyek yang masih berjalan. Resiko ditanggung sendiri. + Þetta er í vinnslu. Notist á eigin ábyrgð. Questo è un lavoro in corso d'opera. Utilizzalo a tuo rischio e pericolo. これは現在開発中のプログラムです。利用は自己責任でお願いします。 ჩადგმა დამუშავების პროცესშია, გამოიყენეთ საკუთარი რისკის ფასად 아직 개발 진행중입니다. 부족한 부분이 있을 수 있습니다. Tai yra nestabili programinė įranga! Autorius jokiu būdu neatsakingas už nepavykusius įrašus, neteisingus laikmačius, iššvaistytas valandas, ar nutikus kitiems nepageidaujamiems poveikiams ...[COLOR=red](xbmc.lt siūlo/rekomenduoja testuojant šį priedą persijungti į Anglų [orinali] kalbą)[/COLOR] + Šis darbs ir procesā. Izmantojiet paši uz savu risku. Ова е работа која се извршува. Користи на сопствен ризик. Ia masih dalam pembangunan. Guna atas risiko sendiri. အသုံးပြုရန် လုပ်ဆောင်နေခြင်းဖြစ်သည်။ ကိုယ့်တာဝန်ကိုယ်ယူပြီး အသုံးပြုပါ။ Hier wordt aan gewerkt, Gebruik op eigen risico. Dette er fortsatt under utvikling. Bruk på eget ansvar. - Ten projekt jest w trakcie realizacji. Używasz go na własne ryzyko. + Oprogramowanie nadal jest w fazie rozwoju i jest niestabilne! Autorzy w żaden sposób nie są odpowiedzialni za nieudane nagrania, błędy w planie nagrań, zmarnowany czas ani jakiekolwiek inne niepożądane efekty. Isto é um projecto em curso. Use-o por sua conta e risco. Este é um trabalho em progresso. Use a seu próprio risco - Această este un proiect în lucru. Utilizați pe propriul risc. + Aceasta este un proiect în lucru. Utilizați pe propriul risc. Разработка программы не окончена. Используйте на свой страх и риск. Práca na tomto rozhraní stále prebieha. Používajte ho preto na vlastné riziko. Dodatek je še v izdelavi. Uporaba na lastno odgovornost. Detta är ett pågående arbete. Använd på egen risk. இன்னும் வேலை நடந்துகொண்டு இருக்கிறது. உங்கள் சொந்த ஆபத்தில் பயன்படுத்தவும். + Bu devam eden bir çalışmadır. Kendiniz risk kullanın. Роботи все ще тривають. Використовуйте на власний розсуд. Đây là bản thử nghiệm. Bạn phải tự chịu trách nhiệm với nó 此插件仍在开发中,请自行把握试用风险。 diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/changelog.txt xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/changelog.txt --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/changelog.txt 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/changelog.txt 2014-07-18 06:05:30.000000000 +0000 @@ -1,3 +1,9 @@ +v1.9.9 +- updated language files from Transifex + +v1.9.8 +- fixed bug that could cause connection to close prematurely + v1.9.7 - updated language files from Transifex diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Afrikaans/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Afrikaans/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Afrikaans/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Afrikaans/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -56,6 +56,10 @@ msgid "Tuner no longer available" msgstr "Instemmer nie meer beskikbaar" +msgctxt "#30130" +msgid "Keep" +msgstr "Hou" + msgctxt "#30135" msgid "Default" msgstr "Verstek" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Amharic/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Amharic/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Amharic/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Amharic/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -32,6 +32,10 @@ msgid "Connection failed. Incorrect PIN?" msgstr "ግንኙነቱ አልተሳካም የተሳሳተ PIN?" +msgctxt "#30130" +msgid "Keep" +msgstr "ማስቀመጫ" + msgctxt "#30135" msgid "Default" msgstr "ነባር " diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Czech/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Czech/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Czech/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Czech/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -56,10 +56,66 @@ msgid "Tuner no longer available" msgstr "Tuner již není dostupný" +msgctxt "#30054" +msgid "[RECUR]" +msgstr "[OPAKOVAT]" + +msgctxt "#30100" +msgid "Add Timer" +msgstr "Přidat časovač" + +msgctxt "#30120" +msgid "Recording Type" +msgstr "Typ nahrávání" + +msgctxt "#30121" +msgid "Record Once" +msgstr "Nahrát jednou" + +msgctxt "#30122" +msgid "Record Season (NEW episodes on this channel)" +msgstr "Nahrej sezonu (NOVÉ epizody na tomto kanálu)" + +msgctxt "#30123" +msgid "Record Season (All episodes on this channel)" +msgstr "Nahrej sezonu (VŠECHNY epizody na tomto kanálu)" + +msgctxt "#30124" +msgid "Record Season (Daily, this timeslot)" +msgstr "Nahrej sezonu (Denně, v tomto čase)" + +msgctxt "#30125" +msgid "Record Season (Weekly, this timeslot)" +msgstr "Nahrej sezonu (Týdně, v tomto čase)" + +msgctxt "#30126" +msgid "Record Season (Monday-Friday, this timeslot)" +msgstr "Nahrej sezonu (Pondělí - Pátek, v tomto čase)" + +msgctxt "#30127" +msgid "Record Season (Weekends, this timeslot)" +msgstr "Nahrej sezonu (Víkendy, v tomto čase)" + msgctxt "#30130" msgid "Keep" msgstr "Ponechat" +msgctxt "#30131" +msgid "All Recordings" +msgstr "Všechny nahrávky" + +msgctxt "#30132" +msgid "Pre-Padding (minutes)" +msgstr "Začít nahrávání dříve (minuty)" + +msgctxt "#30133" +msgid "Pre-Padding (minutes)" +msgstr "Ukončit nahrávání později (minuty)" + +msgctxt "#30134" +msgid "Recording Directory" +msgstr "Adresář nahrávek" + msgctxt "#30135" msgid "Default" msgstr "Výchozí" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Danish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Danish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Danish/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Danish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -56,10 +56,66 @@ msgid "Tuner no longer available" msgstr "Tuneren er ikke længere tilgængelig" +msgctxt "#30054" +msgid "[RECUR]" +msgstr "[RECUR]" + +msgctxt "#30100" +msgid "Add Timer" +msgstr "Tilføj Timer" + +msgctxt "#30120" +msgid "Recording Type" +msgstr "Optagelses Type" + +msgctxt "#30121" +msgid "Record Once" +msgstr "Optag en gang" + +msgctxt "#30122" +msgid "Record Season (NEW episodes on this channel)" +msgstr "Optag Sæson (Nye episoder på denne kanal)" + +msgctxt "#30123" +msgid "Record Season (All episodes on this channel)" +msgstr "Optag Season (Alle episoder på denne kanal)" + +msgctxt "#30124" +msgid "Record Season (Daily, this timeslot)" +msgstr "Optag Sæson (Dagligt, dette tidsinterval)" + +msgctxt "#30125" +msgid "Record Season (Weekly, this timeslot)" +msgstr "Optag Sæson (Ugentligt, dette tidsinterval)" + +msgctxt "#30126" +msgid "Record Season (Monday-Friday, this timeslot)" +msgstr "Optag Sæson (Mandag-fredag​​, dette tidsinterval)" + +msgctxt "#30127" +msgid "Record Season (Weekends, this timeslot)" +msgstr "Optag Sæson (weekender, dette tidsinterval)" + msgctxt "#30130" msgid "Keep" msgstr "Behold" +msgctxt "#30131" +msgid "All Recordings" +msgstr "Alle Optagelser" + +msgctxt "#30132" +msgid "Pre-Padding (minutes)" +msgstr "Før-Fyld (minutter)" + +msgctxt "#30133" +msgid "Pre-Padding (minutes)" +msgstr "Før-Fyld (minutter)" + +msgctxt "#30134" +msgid "Recording Directory" +msgstr "Optagelses Mappe" + msgctxt "#30135" msgid "Default" msgstr "Standard" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/English (US)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/English (US)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/English (US)/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/English (US)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -16,10 +16,106 @@ "Language: en_US\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgctxt "#30000" +msgid "NextPVR Hostname" +msgstr "NextPVR Hostname" + +msgctxt "#30001" +msgid "NextPVR Port (usually 8866 or 7799)" +msgstr "NextPVR Port (usually 8866 or 7799)" + +msgctxt "#30002" +msgid "NextPVR PinCode" +msgstr "NextPVR PinCode" + +msgctxt "#30003" +msgid "Enable TimeShift with Live TV" +msgstr "Enable TimeShift with Live TV" + +msgctxt "#30040" +msgid "Connection" +msgstr "Connection" + msgctxt "#30041" msgid "Advanced" msgstr "Advanced" +msgctxt "#30050" +msgid "NextPVR server is too old." +msgstr "NextPVR server is too old." + +msgctxt "#30051" +msgid "Upgrade to '%s' or higher!" +msgstr "Upgrade to '%s' or higher!" + +msgctxt "#30052" +msgid "Connection failed. Incorrect PIN?" +msgstr "Connection failed. Incorrect PIN?" + +msgctxt "#30053" +msgid "Tuner no longer available" +msgstr "Tuner no longer available" + +msgctxt "#30054" +msgid "[RECUR]" +msgstr "[RECUR]" + +msgctxt "#30100" +msgid "Add Timer" +msgstr "Add Timer" + +msgctxt "#30120" +msgid "Recording Type" +msgstr "Recording Type" + +msgctxt "#30121" +msgid "Record Once" +msgstr "Record Once" + +msgctxt "#30122" +msgid "Record Season (NEW episodes on this channel)" +msgstr "Record Season (NEW episodes on this channel)" + +msgctxt "#30123" +msgid "Record Season (All episodes on this channel)" +msgstr "Record Season (All episodes on this channel)" + +msgctxt "#30124" +msgid "Record Season (Daily, this timeslot)" +msgstr "Record Season (Daily, this timeslot)" + +msgctxt "#30125" +msgid "Record Season (Weekly, this timeslot)" +msgstr "Record Season (Weekly, this timeslot)" + +msgctxt "#30126" +msgid "Record Season (Monday-Friday, this timeslot)" +msgstr "Record Season (Monday-Friday, this timeslot)" + +msgctxt "#30127" +msgid "Record Season (Weekends, this timeslot)" +msgstr "Record Season (Weekends, this timeslot)" + +msgctxt "#30130" +msgid "Keep" +msgstr "Keep" + +msgctxt "#30131" +msgid "All Recordings" +msgstr "All Recordings" + +msgctxt "#30132" +msgid "Pre-Padding (minutes)" +msgstr "Pre-Padding (minutes)" + +msgctxt "#30133" +msgid "Pre-Padding (minutes)" +msgstr "Pre-Padding (minutes)" + +msgctxt "#30134" +msgid "Recording Directory" +msgstr "Recording Directory" + msgctxt "#30135" msgid "Default" msgstr "Default" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Galician/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Galician/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Galician/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Galician/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -30,7 +30,7 @@ msgctxt "#30003" msgid "Enable TimeShift with Live TV" -msgstr "Habilitar TimeShift na TV ao vivo" +msgstr "Activar TimeShift na TV en directo" msgctxt "#30040" msgid "Connection" @@ -104,6 +104,14 @@ msgid "All Recordings" msgstr "Todas as gravacións" +msgctxt "#30132" +msgid "Pre-Padding (minutes)" +msgstr "Atraso na gravación (minutos)" + +msgctxt "#30133" +msgid "Pre-Padding (minutes)" +msgstr "Atraso na gravación (minutos)" + msgctxt "#30134" msgid "Recording Directory" msgstr "Cartafol das Gravacións" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Hebrew/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Hebrew/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Hebrew/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Hebrew/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -56,10 +56,66 @@ msgid "Tuner no longer available" msgstr "מקלט אינו זמין יותר" +msgctxt "#30054" +msgid "[RECUR]" +msgstr "[RECUR]" + +msgctxt "#30100" +msgid "Add Timer" +msgstr "הוסף תזמון" + +msgctxt "#30120" +msgid "Recording Type" +msgstr "סוג הקלטה" + +msgctxt "#30121" +msgid "Record Once" +msgstr "הקלט פעם אחת" + +msgctxt "#30122" +msgid "Record Season (NEW episodes on this channel)" +msgstr "הקלטת עונה (פרקים חדשים בערוץ זה)" + +msgctxt "#30123" +msgid "Record Season (All episodes on this channel)" +msgstr "הקלטת עונה (כל הפרקים בערוץ זה)" + +msgctxt "#30124" +msgid "Record Season (Daily, this timeslot)" +msgstr "הקלטת עונה (יומי, במשבצת זמן זו)" + +msgctxt "#30125" +msgid "Record Season (Weekly, this timeslot)" +msgstr "הקלטת עונה (שבועי, במשבצת זמן זו)" + +msgctxt "#30126" +msgid "Record Season (Monday-Friday, this timeslot)" +msgstr "הקלטת עונה (שני-שישי, במשבצת זמן זו)" + +msgctxt "#30127" +msgid "Record Season (Weekends, this timeslot)" +msgstr "הקלטת עונה (סופי שבוע, במשבצת זמן זו)" + msgctxt "#30130" msgid "Keep" msgstr "שמור" +msgctxt "#30131" +msgid "All Recordings" +msgstr "כל ההקלטות" + +msgctxt "#30132" +msgid "Pre-Padding (minutes)" +msgstr "Pre-Padding (דקות)" + +msgctxt "#30133" +msgid "Pre-Padding (minutes)" +msgstr "Pre-Padding (דקות)" + +msgctxt "#30134" +msgid "Recording Directory" +msgstr "תיקית הקלטות" + msgctxt "#30135" msgid "Default" msgstr "ברירת מחדל" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Icelandic/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Icelandic/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Icelandic/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Icelandic/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -16,10 +16,106 @@ "Language: is\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgctxt "#30000" +msgid "NextPVR Hostname" +msgstr "Hýsingarnafn NextPVR" + +msgctxt "#30001" +msgid "NextPVR Port (usually 8866 or 7799)" +msgstr "Gátt fyrir NextPVR (vanalega 8866 eða 7799)" + +msgctxt "#30002" +msgid "NextPVR PinCode" +msgstr "NextPVR Pinkóði" + +msgctxt "#30003" +msgid "Enable TimeShift with Live TV" +msgstr "Virkja Tímahliðrun með Live TV" + +msgctxt "#30040" +msgid "Connection" +msgstr "Tenging" + +msgctxt "#30041" +msgid "Advanced" +msgstr "Ítarlegt" + +msgctxt "#30050" +msgid "NextPVR server is too old." +msgstr "NextPVR miðlari er of gamall." + +msgctxt "#30051" +msgid "Upgrade to '%s' or higher!" +msgstr "Uppfærðu uppí '%s' eða nýrri!" + +msgctxt "#30052" +msgid "Connection failed. Incorrect PIN?" +msgstr "Tenging mistókst. Rangt PIN?" + +msgctxt "#30053" +msgid "Tuner no longer available" +msgstr "Móttakari ekki lengur tiltækur" + +msgctxt "#30054" +msgid "[RECUR]" +msgstr "[RECUR]" + +msgctxt "#30100" +msgid "Add Timer" +msgstr "Bæta við Tímatöku" + +msgctxt "#30120" +msgid "Recording Type" +msgstr "Gerð Upptöku" + +msgctxt "#30121" +msgid "Record Once" +msgstr "Taka upp einu sinni" + +msgctxt "#30122" +msgid "Record Season (NEW episodes on this channel)" +msgstr "Taka upp Þáttaröð (NÝJA þætti á þessari rás)" + +msgctxt "#30123" +msgid "Record Season (All episodes on this channel)" +msgstr "Taka upp Þáttaröð (Alla þætti á þessari rás)" + +msgctxt "#30124" +msgid "Record Season (Daily, this timeslot)" +msgstr "Taka upp Þáttaröð (Daglega, innan tímaramma)" + +msgctxt "#30125" +msgid "Record Season (Weekly, this timeslot)" +msgstr "Taka upp Þáttaröð (Vikulega, innan tímaramma)" + +msgctxt "#30126" +msgid "Record Season (Monday-Friday, this timeslot)" +msgstr "Taka upp Þáttaröð (Mánudaga-föstudaga, innan tímaramma)" + +msgctxt "#30127" +msgid "Record Season (Weekends, this timeslot)" +msgstr "Taka upp Þáttaröð (Helgar, innan tímaramma)" + msgctxt "#30130" msgid "Keep" msgstr "Halda" +msgctxt "#30131" +msgid "All Recordings" +msgstr "Allar Upptökur" + +msgctxt "#30132" +msgid "Pre-Padding (minutes)" +msgstr "For-upptaka (mínútur)" + +msgctxt "#30133" +msgid "Pre-Padding (minutes)" +msgstr "For-upptaka (mínútur)" + +msgctxt "#30134" +msgid "Recording Directory" +msgstr "Upptökumappa" + msgctxt "#30135" msgid "Default" msgstr "Sjálfgefið" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Italian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Italian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Italian/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Italian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -56,10 +56,66 @@ msgid "Tuner no longer available" msgstr "Il tuner non è più disponibile" +msgctxt "#30054" +msgid "[RECUR]" +msgstr "[RECUR]" + +msgctxt "#30100" +msgid "Add Timer" +msgstr "Aggiungi timer" + +msgctxt "#30120" +msgid "Recording Type" +msgstr "Tipo di registrazione" + +msgctxt "#30121" +msgid "Record Once" +msgstr "Registra una volta" + +msgctxt "#30122" +msgid "Record Season (NEW episodes on this channel)" +msgstr "Registra stagione (Nuovi episodi su questo canale)" + +msgctxt "#30123" +msgid "Record Season (All episodes on this channel)" +msgstr "Registra stagioni (Tutti gli episodi su questo canale)" + +msgctxt "#30124" +msgid "Record Season (Daily, this timeslot)" +msgstr "Registra stagione (Giornalmente, questa fascia temporale)" + +msgctxt "#30125" +msgid "Record Season (Weekly, this timeslot)" +msgstr "Registra stagione (Settimanalmente, questa fascia temporale)" + +msgctxt "#30126" +msgid "Record Season (Monday-Friday, this timeslot)" +msgstr "Registra stagione (Lunedì-Venerdì, questa fascia temporale)" + +msgctxt "#30127" +msgid "Record Season (Weekends, this timeslot)" +msgstr "Registra stagione (Weekend, questa fascia temporale)" + msgctxt "#30130" msgid "Keep" msgstr "Mantieni" +msgctxt "#30131" +msgid "All Recordings" +msgstr "Tutte le registrazioni" + +msgctxt "#30132" +msgid "Pre-Padding (minutes)" +msgstr "Anticipo registrazione (minuti)" + +msgctxt "#30133" +msgid "Pre-Padding (minutes)" +msgstr "Anticipo registrazione (minuti)" + +msgctxt "#30134" +msgid "Recording Directory" +msgstr "Directory di registrazione" + msgctxt "#30135" msgid "Default" msgstr "Predefinito" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Japanese/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Japanese/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Japanese/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Japanese/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -26,7 +26,7 @@ msgctxt "#30002" msgid "NextPVR PinCode" -msgstr "NextPVR PinCode" +msgstr "NextPVR Pinコード" msgctxt "#30003" msgid "Enable TimeShift with Live TV" @@ -56,6 +56,50 @@ msgid "Tuner no longer available" msgstr "チューナーがみつかりません" +msgctxt "#30100" +msgid "Add Timer" +msgstr "タイマーを追加" + +msgctxt "#30120" +msgid "Recording Type" +msgstr "録画タイプ" + +msgctxt "#30121" +msgid "Record Once" +msgstr "一回だけ録画" + +msgctxt "#30122" +msgid "Record Season (NEW episodes on this channel)" +msgstr "連ドラ録画 (このチャンネルの新エピソード)" + +msgctxt "#30123" +msgid "Record Season (All episodes on this channel)" +msgstr "連ドラ録画 (このチャンネルの全エピソード)" + +msgctxt "#30124" +msgid "Record Season (Daily, this timeslot)" +msgstr "連ドラ録画 (毎日、この時間帯)" + +msgctxt "#30125" +msgid "Record Season (Weekly, this timeslot)" +msgstr "連ドラ録画 (毎週、この時間帯)" + +msgctxt "#30126" +msgid "Record Season (Monday-Friday, this timeslot)" +msgstr "連ドラ録画 (月曜〜金曜、この時間帯)" + +msgctxt "#30127" +msgid "Record Season (Weekends, this timeslot)" +msgstr "連ドラ録画 (週末、この時間帯)" + +msgctxt "#30131" +msgid "All Recordings" +msgstr "全録画" + +msgctxt "#30134" +msgid "Recording Directory" +msgstr "録画ディレクトリ" + msgctxt "#30135" msgid "Default" msgstr "デフォルト" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Latvian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Latvian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Latvian/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Latvian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -20,6 +20,18 @@ msgid "NextPVR Hostname" msgstr "NextPVR saimniekvārds" +msgctxt "#30001" +msgid "NextPVR Port (usually 8866 or 7799)" +msgstr "NextPVR ports (parasti 8866 vai 7799)" + +msgctxt "#30002" +msgid "NextPVR PinCode" +msgstr "NextPVR pinkods" + +msgctxt "#30003" +msgid "Enable TimeShift with Live TV" +msgstr "Ieslēgt laika nobīdi ar tiešraides TV" + msgctxt "#30040" msgid "Connection" msgstr "Savienojums" @@ -38,16 +50,72 @@ msgctxt "#30052" msgid "Connection failed. Incorrect PIN?" -msgstr "Savienojums neizdevās. VAi nepareizs PIN?" +msgstr "Savienojums neizdevās. Vai nepareizs PIN?" msgctxt "#30053" msgid "Tuner no longer available" msgstr "Uztvērējs vairs nav pieejams" +msgctxt "#30054" +msgid "[RECUR]" +msgstr "[RECUR]" + +msgctxt "#30100" +msgid "Add Timer" +msgstr "Uzlikt taimeri" + +msgctxt "#30120" +msgid "Recording Type" +msgstr "Ierakstīšanas veids" + +msgctxt "#30121" +msgid "Record Once" +msgstr "Ierakstīt vienreiz" + +msgctxt "#30122" +msgid "Record Season (NEW episodes on this channel)" +msgstr "Ierakstīt sezonu (JAUNAS sērijas šajā kanālā)" + +msgctxt "#30123" +msgid "Record Season (All episodes on this channel)" +msgstr "Ierakstīt sezonu (visas sērijas šajā kanālā)" + +msgctxt "#30124" +msgid "Record Season (Daily, this timeslot)" +msgstr "Ierakstīt sezonu (katru dienu šajā laikā)" + +msgctxt "#30125" +msgid "Record Season (Weekly, this timeslot)" +msgstr "Ierakstīt sezonu (katru nedēļu šajā laikā)" + +msgctxt "#30126" +msgid "Record Season (Monday-Friday, this timeslot)" +msgstr "Ierakstīt sezonu (pirmdien-piektdien šajā laikā)" + +msgctxt "#30127" +msgid "Record Season (Weekends, this timeslot)" +msgstr "Ierakstīt sezonu (brīvdienās šajā laikā)" + msgctxt "#30130" msgid "Keep" msgstr "Paturēt" +msgctxt "#30131" +msgid "All Recordings" +msgstr "Visi ieraksti" + +msgctxt "#30132" +msgid "Pre-Padding (minutes)" +msgstr "Pirms-papildinājums (minūtes)" + +msgctxt "#30133" +msgid "Pre-Padding (minutes)" +msgstr "Pirms-papildinājums (minūtes)" + +msgctxt "#30134" +msgid "Recording Directory" +msgstr "Ierakstīšanas direktorija" + msgctxt "#30135" msgid "Default" msgstr "Noklusējums" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Lithuanian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Lithuanian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Lithuanian/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Lithuanian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -56,10 +56,54 @@ msgid "Tuner no longer available" msgstr "Imtuvas nebepasiekiamas" +msgctxt "#30100" +msgid "Add Timer" +msgstr "Pridėti laikmatį" + +msgctxt "#30120" +msgid "Recording Type" +msgstr "Įrašo tipas" + +msgctxt "#30121" +msgid "Record Once" +msgstr "Įrašyti tik kartą" + +msgctxt "#30122" +msgid "Record Season (NEW episodes on this channel)" +msgstr "Įrašyti sezoną (Nauji epzodai šiuo kanalu)" + +msgctxt "#30123" +msgid "Record Season (All episodes on this channel)" +msgstr "Įrašyti sezoną (Visi epzodai šiuo kanalu)" + +msgctxt "#30124" +msgid "Record Season (Daily, this timeslot)" +msgstr "Įrašyti sezoną (Kas dieną, šiuo metu)" + +msgctxt "#30125" +msgid "Record Season (Weekly, this timeslot)" +msgstr "Įrašyti sezoną (Kas savaitę, šiuo metu)" + +msgctxt "#30126" +msgid "Record Season (Monday-Friday, this timeslot)" +msgstr "Įrašyti sezoną (Pirmadienį - penktadienį, šiuo metu)" + +msgctxt "#30127" +msgid "Record Season (Weekends, this timeslot)" +msgstr "Įrašyti sezoną (Savaitgaliais, šiuo metu)" + msgctxt "#30130" msgid "Keep" msgstr "Išlaikyti" +msgctxt "#30131" +msgid "All Recordings" +msgstr "Visi įrašai" + +msgctxt "#30134" +msgid "Recording Directory" +msgstr "Įrašų aplankas" + msgctxt "#30135" msgid "Default" msgstr "Numatytas" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Polish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Polish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Polish/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Polish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -26,11 +26,11 @@ msgctxt "#30002" msgid "NextPVR PinCode" -msgstr "Kod pin NextPVR " +msgstr "Kod PIN NextPVR " msgctxt "#30003" msgid "Enable TimeShift with Live TV" -msgstr "Włącz funkcję przesunięcia czasowego dla programów telewizyjnych" +msgstr "Aktywuj funkcję przesunięcia czasowego" msgctxt "#30040" msgid "Connection" @@ -50,11 +50,11 @@ msgctxt "#30052" msgid "Connection failed. Incorrect PIN?" -msgstr "Problem z połączeniem. Nieprawidłowy PIN?" +msgstr "Nieudane połączenie. Nieprawidłowy PIN?" msgctxt "#30053" msgid "Tuner no longer available" -msgstr "Tuner niedostępny" +msgstr "Tuner nie jest niedostępny" msgctxt "#30054" msgid "[RECUR]" @@ -62,11 +62,11 @@ msgctxt "#30100" msgid "Add Timer" -msgstr "Zaplanuj" +msgstr "Zaplanuj nagranie" msgctxt "#30120" msgid "Recording Type" -msgstr "Rodzaj nagrania" +msgstr "Typ nagrania" msgctxt "#30121" msgid "Record Once" @@ -98,7 +98,7 @@ msgctxt "#30130" msgid "Keep" -msgstr "Zatrzymaj" +msgstr "Zachowaj" msgctxt "#30131" msgid "All Recordings" @@ -106,11 +106,11 @@ msgctxt "#30132" msgid "Pre-Padding (minutes)" -msgstr "Rozpoczęcie nagrywania (minuty)" +msgstr "Nagrywaj przed planowanym czasem (minuty)" msgctxt "#30133" msgid "Pre-Padding (minutes)" -msgstr "Rozpoczęcie nagrywania (minuty)" +msgstr "Nagrywaj po planowanym czasie (minuty)" msgctxt "#30134" msgid "Recording Directory" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Portuguese/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Portuguese/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Portuguese/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Portuguese/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -18,7 +18,7 @@ msgctxt "#30000" msgid "NextPVR Hostname" -msgstr "Hostname do NextPVR" +msgstr "Nome do servidor NextPVR" msgctxt "#30001" msgid "NextPVR Port (usually 8866 or 7799)" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Romanian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Romanian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Romanian/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Romanian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -56,6 +56,66 @@ msgid "Tuner no longer available" msgstr "Tuner-ul nu mai este disponibil" +msgctxt "#30054" +msgid "[RECUR]" +msgstr "[RECURENT]" + +msgctxt "#30100" +msgid "Add Timer" +msgstr "Adaugă timp" + +msgctxt "#30120" +msgid "Recording Type" +msgstr "Tip înregistrare" + +msgctxt "#30121" +msgid "Record Once" +msgstr "Înregistrează o dată" + +msgctxt "#30122" +msgid "Record Season (NEW episodes on this channel)" +msgstr "Sesiune de înregistrări (episoade NOI pe acest canal)" + +msgctxt "#30123" +msgid "Record Season (All episodes on this channel)" +msgstr "Sesiune de înregistrări (toate episoadele de pe acest canal)" + +msgctxt "#30124" +msgid "Record Season (Daily, this timeslot)" +msgstr "Sesiune de înregistrări (zilnic, acest slot)" + +msgctxt "#30125" +msgid "Record Season (Weekly, this timeslot)" +msgstr "Sesiune de înregistrări (săptămânal, acest slot)" + +msgctxt "#30126" +msgid "Record Season (Monday-Friday, this timeslot)" +msgstr "Sesiune de înregistrări (luni-vineri, acest slot)" + +msgctxt "#30127" +msgid "Record Season (Weekends, this timeslot)" +msgstr "Sesiune de înregistrări (weekend, acest slot)" + +msgctxt "#30130" +msgid "Keep" +msgstr "Păstrează" + +msgctxt "#30131" +msgid "All Recordings" +msgstr "Toate înregistrările" + +msgctxt "#30132" +msgid "Pre-Padding (minutes)" +msgstr "Spațiere înainte (minute)" + +msgctxt "#30133" +msgid "Pre-Padding (minutes)" +msgstr "Spațiere înainte (minute)" + +msgctxt "#30134" +msgid "Recording Directory" +msgstr "Director pentru înregistrări" + msgctxt "#30135" msgid "Default" msgstr "Standard" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Sinhala/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Sinhala/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Sinhala/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Sinhala/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: NextPVR PVR Client +# Addon id: pvr.nextpvr +# Addon Provider: Graeme Blackley +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Sinhala (http://www.transifex.com/projects/p/xbmc-main/language/si/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: si\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30041" +msgid "Advanced" +msgstr "උසස්" + +msgctxt "#30135" +msgid "Default" +msgstr "නියත " diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Slovak/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Slovak/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Slovak/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Slovak/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -56,10 +56,66 @@ msgid "Tuner no longer available" msgstr "Tuner už nie je k dispozícii" +msgctxt "#30054" +msgid "[RECUR]" +msgstr "[OPAK.]" + +msgctxt "#30100" +msgid "Add Timer" +msgstr "Pridať časovač" + +msgctxt "#30120" +msgid "Recording Type" +msgstr "Typ nahrávania" + +msgctxt "#30121" +msgid "Record Once" +msgstr "Nahrať raz" + +msgctxt "#30122" +msgid "Record Season (NEW episodes on this channel)" +msgstr "Nahrať sériu (NOVÉ epizódy na tomto kanáli)" + +msgctxt "#30123" +msgid "Record Season (All episodes on this channel)" +msgstr "Nahrať sériu (všetky epizódy na tomto kanáli)" + +msgctxt "#30124" +msgid "Record Season (Daily, this timeslot)" +msgstr "Nahrať sériu (denne, o tomto čase)" + +msgctxt "#30125" +msgid "Record Season (Weekly, this timeslot)" +msgstr "Nahrať sériu (týždenne, o tomto čase)" + +msgctxt "#30126" +msgid "Record Season (Monday-Friday, this timeslot)" +msgstr "Nahrať sériu (pondelok až piatok, o tomto čase)" + +msgctxt "#30127" +msgid "Record Season (Weekends, this timeslot)" +msgstr "Nahrať sériu (víkend, o tomto čase)" + msgctxt "#30130" msgid "Keep" msgstr "Ponechať" +msgctxt "#30131" +msgid "All Recordings" +msgstr "Všetky nahrávky" + +msgctxt "#30132" +msgid "Pre-Padding (minutes)" +msgstr "Doba nahrávania pred stanoveným časom (minúty)" + +msgctxt "#30133" +msgid "Pre-Padding (minutes)" +msgstr "Doba nahrávania pred stanoveným časom začiatku (minúty)" + +msgctxt "#30134" +msgid "Recording Directory" +msgstr "Adresár pre nahrávky" + msgctxt "#30135" msgid "Default" msgstr "Predvolené" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Spanish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Spanish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Spanish/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Spanish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -22,7 +22,7 @@ msgctxt "#30001" msgid "NextPVR Port (usually 8866 or 7799)" -msgstr "Puerto NextPVR (usualmente 8866 o 7799)" +msgstr "Puerto NextPVR (normalmente 8866 o 7799)" msgctxt "#30002" msgid "NextPVR PinCode" @@ -82,7 +82,7 @@ msgctxt "#30124" msgid "Record Season (Daily, this timeslot)" -msgstr "Grabar la temporada (diariamente , en este horario)" +msgstr "Grabar la temporada (diariamente, en este horario)" msgctxt "#30125" msgid "Record Season (Weekly, this timeslot)" @@ -90,7 +90,7 @@ msgctxt "#30126" msgid "Record Season (Monday-Friday, this timeslot)" -msgstr "rabar la temporada (de Lunes a Viernes, en este horario)" +msgstr "Grabar la temporada (de Lunes a Viernes, en este horario)" msgctxt "#30127" msgid "Record Season (Weekends, this timeslot)" @@ -106,11 +106,11 @@ msgctxt "#30132" msgid "Pre-Padding (minutes)" -msgstr "Pre-Padding (minutos)" +msgstr "Margen (minutos)" msgctxt "#30133" msgid "Pre-Padding (minutes)" -msgstr "Pre-Padding (minutos)" +msgstr "Margen (minutos)" msgctxt "#30134" msgid "Recording Directory" @@ -118,4 +118,4 @@ msgctxt "#30135" msgid "Default" -msgstr "Default" +msgstr "Por defecto" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Spanish (Argentina)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Spanish (Argentina)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Spanish (Argentina)/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Spanish (Argentina)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -56,6 +56,66 @@ msgid "Tuner no longer available" msgstr "Sintonizador ya no está disponible" +msgctxt "#30054" +msgid "[RECUR]" +msgstr "[RECUR]" + +msgctxt "#30100" +msgid "Add Timer" +msgstr "Agregar temporalizador" + +msgctxt "#30120" +msgid "Recording Type" +msgstr "Tipos de grabado" + +msgctxt "#30121" +msgid "Record Once" +msgstr "Grabar una vez" + +msgctxt "#30122" +msgid "Record Season (NEW episodes on this channel)" +msgstr "Grabar temporada (nuevos episodios en este canal)" + +msgctxt "#30123" +msgid "Record Season (All episodes on this channel)" +msgstr "Grabar temporada (todos los espisodios en este canal)" + +msgctxt "#30124" +msgid "Record Season (Daily, this timeslot)" +msgstr "Grabar temporada (Diario, este intervalo de tiempo)" + +msgctxt "#30125" +msgid "Record Season (Weekly, this timeslot)" +msgstr "Grabar temporada (Semanal, este intervalo de tiempo)" + +msgctxt "#30126" +msgid "Record Season (Monday-Friday, this timeslot)" +msgstr "Grabar temporada (Lunes a Viernes, este intervalo de tiempo)" + +msgctxt "#30127" +msgid "Record Season (Weekends, this timeslot)" +msgstr "Grabar temporada (Fines de semana, este intervalo de tiempo)" + +msgctxt "#30130" +msgid "Keep" +msgstr "Mantener" + +msgctxt "#30131" +msgid "All Recordings" +msgstr "Todas las grabaciones" + +msgctxt "#30132" +msgid "Pre-Padding (minutes)" +msgstr "Relleno previo (minutos)" + +msgctxt "#30133" +msgid "Pre-Padding (minutes)" +msgstr "Relleno previo (minutos)" + +msgctxt "#30134" +msgid "Recording Directory" +msgstr "Directorio de grabaciones" + msgctxt "#30135" msgid "Default" msgstr "Por defecto" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Turkish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Turkish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/addon/resources/language/Turkish/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/addon/resources/language/Turkish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -16,6 +16,10 @@ "Language: tr\n" "Plural-Forms: nplurals=1; plural=0;\n" +msgctxt "#30000" +msgid "NextPVR Hostname" +msgstr "NextPVR Ana makine adı" + msgctxt "#30001" msgid "NextPVR Port (usually 8866 or 7799)" msgstr "NextPVR Portu (genellikle 8866 veya 7799'dur)" @@ -24,6 +28,10 @@ msgid "NextPVR PinCode" msgstr "NextPVR Pin Kodu" +msgctxt "#30003" +msgid "Enable TimeShift with Live TV" +msgstr "Live TV için zaman kaydırma aktif" + msgctxt "#30040" msgid "Connection" msgstr "Bağlantı" @@ -44,10 +52,62 @@ msgid "Connection failed. Incorrect PIN?" msgstr "Bağlantı başarısız. PIN doğru mu?" +msgctxt "#30053" +msgid "Tuner no longer available" +msgstr "Radyo mevcut değil." + +msgctxt "#30054" +msgid "[RECUR]" +msgstr "[RECUR]" + +msgctxt "#30100" +msgid "Add Timer" +msgstr "Zamanlayıcı ekle" + +msgctxt "#30120" +msgid "Recording Type" +msgstr "Kayıt tipi" + +msgctxt "#30121" +msgid "Record Once" +msgstr "Tek kayıt" + +msgctxt "#30122" +msgid "Record Season (NEW episodes on this channel)" +msgstr "Kayot Sezonu (Bu kanal için yeni bölümler mevcut.)" + +msgctxt "#30123" +msgid "Record Season (All episodes on this channel)" +msgstr "Kayıt Sezonu (Bu kanal için tüm bölümler mevcut)" + +msgctxt "#30124" +msgid "Record Season (Daily, this timeslot)" +msgstr "Kayıt Sezonu (Günlük zaman dilimi)" + +msgctxt "#30125" +msgid "Record Season (Weekly, this timeslot)" +msgstr "Kayıt Sezonu (Haftalık zaman dilimi)" + +msgctxt "#30126" +msgid "Record Season (Monday-Friday, this timeslot)" +msgstr "Kayıt Sezonu (Pazartesi - Cuma zaman dilimi)" + +msgctxt "#30127" +msgid "Record Season (Weekends, this timeslot)" +msgstr "Kayot Sezonu (Hafta sonları zaman dilimi)" + msgctxt "#30130" msgid "Keep" msgstr "Sakla" +msgctxt "#30131" +msgid "All Recordings" +msgstr "Bütün kayıtlar" + +msgctxt "#30134" +msgid "Recording Directory" +msgstr "Kayıt dizini" + msgctxt "#30135" msgid "Default" msgstr "Varsayılan" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/project/VS2010Express/XBMC_NextPVR.vcxproj xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/project/VS2010Express/XBMC_NextPVR.vcxproj --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/project/VS2010Express/XBMC_NextPVR.vcxproj 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/project/VS2010Express/XBMC_NextPVR.vcxproj 2014-07-18 06:05:30.000000000 +0000 @@ -1,5 +1,5 @@  - + Debug @@ -21,10 +21,12 @@ DynamicLibrary MultiByte true + v120 DynamicLibrary MultiByte + v120 @@ -39,7 +41,6 @@ - <_ProjectFileVersion>10.0.30319.1 ..\..\addon\ $(Configuration)\ false diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/src/client.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/src/client.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/src/client.h 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/src/client.h 2014-07-18 06:05:30.000000000 +0000 @@ -15,7 +15,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/src/DialogRecordPref.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/src/DialogRecordPref.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/src/DialogRecordPref.cpp 2014-01-04 10:28:19.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/src/DialogRecordPref.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/src/DialogRecordPref.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/src/DialogRecordPref.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/src/DialogRecordPref.h 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/src/DialogRecordPref.h 2014-07-18 06:05:30.000000000 +0000 @@ -16,7 +16,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/src/liveshift.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/src/liveshift.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/src/liveshift.cpp 2013-12-12 13:29:52.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/src/liveshift.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/src/liveshift.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/src/liveshift.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/src/liveshift.h 2013-12-12 13:29:52.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/src/liveshift.h 2014-07-18 06:05:30.000000000 +0000 @@ -15,7 +15,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/src/md5.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/src/md5.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/src/md5.cpp 2012-11-15 21:18:19.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/src/md5.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/src/md5.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/src/md5.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/src/md5.h 2012-11-15 21:18:19.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/src/md5.h 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/src/pvrclient-nextpvr.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/src/pvrclient-nextpvr.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/src/pvrclient-nextpvr.cpp 2014-01-04 10:28:19.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/src/pvrclient-nextpvr.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -1345,11 +1345,14 @@ } // is it taking too long? - if (read_timeouts > 100) + if (read_timeouts > 200) { - m_streamingclient->close(); + char *str = XBMC->GetLocalizedString(30053); bufferMore = false; - XBMC->QueueNotification(QUEUE_ERROR, XBMC->GetLocalizedString(30053)); + if (str != NULL) + { + XBMC->QueueNotification(QUEUE_ERROR, str); + } return -1; } } diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/src/RingBuffer.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/src/RingBuffer.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/src/RingBuffer.cpp 2012-11-15 21:18:19.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/src/RingBuffer.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/src/RingBuffer.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/src/RingBuffer.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.nextpvr/src/RingBuffer.h 2012-11-15 21:18:19.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.nextpvr/src/RingBuffer.h 2014-07-18 06:05:30.000000000 +0000 @@ -15,7 +15,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.njoy/addon/addon.xml.in xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.njoy/addon/addon.xml.in --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.njoy/addon/addon.xml.in 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.njoy/addon/addon.xml.in 2014-07-18 06:05:30.000000000 +0000 @@ -1,12 +1,12 @@ - + Πελάτης PVR Njoy N7 Njoy N7 PVR Client Njoy N7 PVR Client + Njoy N7 PVR Client Cliente PVR Njoy N7 Cliente PVR Njoy N7 Cliente Njoy N7 PVR @@ -38,10 +39,12 @@ Njoy N7 PVR klijent Njoy N7 PVR ügyfél Klien Njoy N7 PVR + Njoy N7 Upptökubiðlari (PVR Client) Client PVR Njoy N7 Njoy N7 PVR クライアント Njoy N7 PVR კლიენტი Njoy N7 PVR 클라이언트 + Njoy N7 PVR klientas Njoy N7 PVR klients Njoy N7 PVR клиент Klien PVR Njoy N7 @@ -53,12 +56,14 @@ Cliente de PVR Njoy N7 Client PVR Njoy N7 Njoy N7 PVR Клиент + Njoy N7 PVR සේවාග්‍රාහකයා Njoy N7 PVR Klient Odjemalec PVR Njoy N7 PVR клијент Njoy N7 Njoy N7 PVR Klient Njoy N7 PVR கிளையன் Муштарии Njoy N7 PVR + Njoy N7 PVR Client Njoy N7 PVR İstemcisi Клієнт Njoy N7 для PVR Phần mềm PVR cho Njoy N7 diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.njoy/addon/resources/language/English (US)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.njoy/addon/resources/language/English (US)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.njoy/addon/resources/language/English (US)/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.njoy/addon/resources/language/English (US)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: Njoy N7 PVR Client +# Addon id: pvr.njoy +# Addon Provider: Team XBMC +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: English (US) (http://www.transifex.com/projects/p/xbmc-main/language/en_US/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: en_US\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "N7 IP" +msgstr "N7 IP" + +msgctxt "#30001" +msgid "N7 Port" +msgstr "N7 Port" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.njoy/addon/resources/language/Hebrew/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.njoy/addon/resources/language/Hebrew/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.njoy/addon/resources/language/Hebrew/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.njoy/addon/resources/language/Hebrew/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -22,4 +22,4 @@ msgctxt "#30001" msgid "N7 Port" -msgstr "N7 Port" +msgstr "יציאת N7" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.njoy/addon/resources/language/Icelandic/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.njoy/addon/resources/language/Icelandic/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.njoy/addon/resources/language/Icelandic/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.njoy/addon/resources/language/Icelandic/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: Njoy N7 PVR Client +# Addon id: pvr.njoy +# Addon Provider: Team XBMC +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Icelandic (http://www.transifex.com/projects/p/xbmc-main/language/is/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: is\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "N7 IP" +msgstr "N7 IP" + +msgctxt "#30001" +msgid "N7 Port" +msgstr "N7 Gátt" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.njoy/addon/resources/language/Lithuanian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.njoy/addon/resources/language/Lithuanian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.njoy/addon/resources/language/Lithuanian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.njoy/addon/resources/language/Lithuanian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: Njoy N7 PVR Client +# Addon id: pvr.njoy +# Addon Provider: Team XBMC +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Lithuanian (http://www.transifex.com/projects/p/xbmc-main/language/lt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lt\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +msgctxt "#30000" +msgid "N7 IP" +msgstr "N7 IP" + +msgctxt "#30001" +msgid "N7 Port" +msgstr "N7 portas" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.njoy/addon/resources/language/Polish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.njoy/addon/resources/language/Polish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.njoy/addon/resources/language/Polish/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.njoy/addon/resources/language/Polish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -18,8 +18,8 @@ msgctxt "#30000" msgid "N7 IP" -msgstr "N7 IP" +msgstr "Adres Ip N7" msgctxt "#30001" msgid "N7 Port" -msgstr "N7 Port" +msgstr "Port N7" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.njoy/addon/resources/language/Sinhala/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.njoy/addon/resources/language/Sinhala/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.njoy/addon/resources/language/Sinhala/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.njoy/addon/resources/language/Sinhala/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: Njoy N7 PVR Client +# Addon id: pvr.njoy +# Addon Provider: Team XBMC +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Sinhala (http://www.transifex.com/projects/p/xbmc-main/language/si/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: si\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30000" +msgid "N7 IP" +msgstr "N7 IP" + +msgctxt "#30001" +msgid "N7 Port" +msgstr "N7 තිර්ථය " diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.njoy/addon/resources/language/Thai/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.njoy/addon/resources/language/Thai/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.njoy/addon/resources/language/Thai/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.njoy/addon/resources/language/Thai/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: Njoy N7 PVR Client +# Addon id: pvr.njoy +# Addon Provider: Team XBMC +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Thai (http://www.transifex.com/projects/p/xbmc-main/language/th/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: th\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgctxt "#30000" +msgid "N7 IP" +msgstr "ไอพี N7" + +msgctxt "#30001" +msgid "N7 Port" +msgstr "พอร์ต N7" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.njoy/addon/resources/language/Turkish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.njoy/addon/resources/language/Turkish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.njoy/addon/resources/language/Turkish/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.njoy/addon/resources/language/Turkish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -22,4 +22,4 @@ msgctxt "#30001" msgid "N7 Port" -msgstr "N7 Portu" +msgstr "N7 Bağlantı noktası" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.njoy/project/VS2010Express/pvrclient_njoy.vcxproj xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.njoy/project/VS2010Express/pvrclient_njoy.vcxproj --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.njoy/project/VS2010Express/pvrclient_njoy.vcxproj 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.njoy/project/VS2010Express/pvrclient_njoy.vcxproj 2014-07-18 06:05:30.000000000 +0000 @@ -1,5 +1,5 @@  - + Debug @@ -20,12 +20,14 @@ DynamicLibrary true MultiByte + v120 DynamicLibrary false true MultiByte + v120 diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.njoy/src/client.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.njoy/src/client.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.njoy/src/client.cpp 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.njoy/src/client.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.njoy/src/client.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.njoy/src/client.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.njoy/src/client.h 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.njoy/src/client.h 2014-07-18 06:05:30.000000000 +0000 @@ -15,7 +15,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/addon.xml.in xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/addon.xml.in --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/addon.xml.in 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/addon.xml.in 2014-07-18 06:05:30.000000000 +0000 @@ -1,12 +1,12 @@ - + @@ -30,6 +30,7 @@ Πελάτης PVR για σύνδεση του VDR στο XBMC διαμέσου του VNSI PVR client to connect VDR to XBMC over the VNSI interface PVR client to connect VDR to XBMC over the VNSI interface + PVR client to connect VDR to XBMC over the VNSI interface Cliente PVR para conectar VDR a XBMC sobre la interfaz VNSI Cliente PVR para conectar VDR a XBMC sobre la interfaz VNSI PVR-asiakas, joka kytkee VDR:n XBMC:iin VNSI:n avulla @@ -40,15 +41,17 @@ PVR klijent za povezivanje VDR na XBMC preko VNSI sučelja PVR ügyfél a VDR és az XBMC VNSI interfészen keresztüli csatlakoztatásához Klien PVR untuk mengkoneksikan VDR dengan XBMC melalui antarmuka VNSI + Upptökuþjónn til að tengja VDR við XBMC í gegnum VNSI viðmót Cliente PVR per connettere VDR a XBMC attraverso l'interfaccia VNSI VNSIインタフェース上でVDRをXBMCに接続するためのPVRクライアント PVR client to connect VDR to XBMC over the VNSI interface - PVR kliento prisijungimas VDR prie XBMC per VNSI sąsaja + PVR klientas, skirtas prijungti VDR prie XBMC per VNSI sąsają + PVR klients, lai pieslēgtu VDR pie XBMC, izmantojot VNSI saskarni PVR клиент за поврзување со XBMC преку VNSI интерфејс Klin PVR untuk sambungkan VDR ke XBMC menerusi antaramuka VNSI PVR client om VDR te verbinden met XBMC op de VNSI-interface PVR-klient for å koble VDR til XBMC over VNSI-grensesnittet - Klient PVR do podłączenia VDR do XBMC przez interfejs VNSI + Klient PVR XBMC dla VDR wykorzystujący interfejs VNSI Cliente PVR para ligar VDR ao XBMC através da interface VNSI Cliente PVR para conectar VDR ao XBMC sobre interface VNSI Client PVR pentru conectare VDR la XBMC folosind interfaţa VNSI @@ -69,39 +72,42 @@ Rozhraní VDR. Podporuje proudové vysílání živého vysílání a nahrávek, poslech kanálů rádia, EPG, a časovače skrze modul VNSI Blaen VDR; cynnal ffrydio Teledu Byw, Recordio, Amserlenni, Amseryddion dros ategyn VNSI VDR frontend; understøtter streaming af TV og Optagelser, EPG og Timere over VNSI-addon - VDR-Oberfläche: Erlaubt die Wiedergabe von Live TV und Aufnahmen sowie die Anzeige des EPG, die Kanalsuche und die Programmierung von Timer über das VNSI Plugin. + VDR-Oberfläche: Erlaubt die Wiedergabe von Live-TV und Aufnahmen sowie die Anzeige des EPG, die Kanalsuche und die Programmierung von Timern über das VNSI-Plugin. Frontend για το VDR. Υποστηρίζει ροές Live TV & Εγγραφές, Χρονοδιακόπτες διαμέσου του plugin VNSI VDR frontend; supporting streaming of Live TV & Recordings, EPG, Timers over the VNSI plugin VDR frontend; supporting streaming of Live TV & Recordings, EPG, Timers over the VNSI plugin + VDR frontend; supporting streaming of Live TV & Recordings, EPG, Timers over the VNSI plugin Front-end VDR, soporte de streaming de televisión en vivo y grabaciones, EPG, temporizador con el plugin VNSI - Front-end VDR, soporte de streaming de televisión en vivo y grabaciones, EPG, temporizador con el plugin VNSI + Front-end VDR, soporte de streaming de televisión en vivo y grabaciones, GEP, temporizador con el plugin VNSI VDR-frontend; tukee livelähetyksiä sekä tallenteita, ohjelmaopasta, ajastuksia ja VNSI-lisäosia - Applicatif d'Enregistreur de Disque Vidéo. Il Supporte la lecture en continu de flux direct télévision et l'enregistrement, les guides de programmes, les minuteries via les routines d'enregistrement de flux réseau vidéo + Interface logicielle pour VDR. Il Supporte la lecture en continu de flux direct télévision et l'enregistrement, les guides de programmes, les minuteries via les routines d'enregistrement de flux réseau vidéo Frontal VDR, prenant en charge la lecture en transit des télés en direct & les enregistrements, le GÉP et les minuteries avec le plugiciel VNSI. - Interface VDR; soporta a transmisión de TV ao vivo e gravacións, Guía de programación e temporizadores mediante o engadido de VNSI + Interface VDR; soporta a transmisión de TV en directo e gravacións, Guía de programación e temporizadores mediante o engadido de VNSI ממשק קדמי של VDR;תומך בזרימת שידורי טלוויזיה חיה והקלטה,רשימות שידורים ומתזמני הקלטות דרך תוסף VNSI VDR pozadinski softver; podržava streamanje televizije, snimanje, EPG, zakazania snimanja preko VNSI dodatka VDR előtér-kiszolgáló. Élő adások és felvételek sugárzásának támogatása EPG-vel és időzítéssel a VNSI kiegészítőn keresztül Frontend VDR; Mendukung pengaliran Siaran TV langsung dan Rekaman, EPG, Timer melalui plugin VNSI + VDR framendi; styður straum frá Live TV og upptökur, rafræna sjónvarpsvísa (EPG), tímatöku í gegnum VNSI viðbótina Frontend VDR; supporta lo streaming di Live TV e le registrazioni, EPG e timer sul plugin VNSI VU+ フロントエンド:ライブテレビのストリーミングや録画、EPG、タイマーをサポートしています。 VDR 프론트엔드; TV 시청 & 녹화, EPG, VNSI 플러그인을 통한 타이머 지원 - VDR sąsaja, remti transliacijos Live TV & įrašai, EPG, Laikmačiai ir VNSI įskiepiai + VDR naudotojo sąsaja; palaiko TV transliacijas ir laidų įrašymą, EPG ir laikmačiius per VNSI įskiepį VDR galasistēma; atbalsta tiešraides TV un ierakstu straumēšanu, EPG, taimerus no VNSI spraudņa VDR интерфејс; подржува стриминг на Live TV и снимки, EPG тајмери преку VNSI додаток Bahagian hadapan VDR; menyokong penstirman TV Langsung & Rakaman, EPG, Pemasa menerusi pemalam VNSI VDR frontend: ondersteunt streaming van Live TV & Recordings, EPG, Timers over de VNSI plugin VDR frontend; støtte for visning av direkte TV og opptak, EPG og tidtakere over VNSI-tillegget - Interfejs VDR; wspiera strumieniowanie TV na żywo i nagrywanie, przewodnik TV - EPG oraz harmonogramy przez plugin VNSI + Klient VDR wspiera strumieniowanie kanałów telewizyjnych, nagrywanie, planowanie nagrań oraz funkcje przewodnika TV przy wykorzystaniu wtyczki VNSI Frontend VDR; suporta transmissão de Live TV e Gravações, EPG e Temporizadores através do plugin VNSI Frontend VDR; suporta streaming de TV ao vivo e gravações, EPG, agendamentos sobre o plugin VNSI - Frontend VDRş suportă streaming de TV Live & Înregistrări, EPG, Cronometre folosind pluginul VNSI + Frontend VDR; suportă streaming de TV Live & Înregistrări, EPG, Cronometre folosind pluginul VNSI VDR фронтэнд; поддерживает потоковое TV, запись, ЕПГ, таймеры через VNSI плагин VDR rozhranie; je podporované streamovanie živého televízneho vysielania a nahrávok, EPG, časovačov prostredníctvom modulu VNSI Vmesnik za VDR; podpira pretakanje televizije v živo & posnetkov, EPG, časovnike preko vtičnika VNSI VDR frontend, që lejon transmetimin e Live TV'së & Regjistrime, EPG, Timer, nëpërmes shtesës VNSI VDR frontend; stödjer strömning av direktsänd TV & inspelningar, EPG, timers över VNSI-tillägget VDR முன்நிலை: VNSI இடைமுகம் மேல் லைவ் டிவி & பதிவுகளின் ஸ்ட்ரீமிங், EPG கேட்கவும் துணைபுரிகிறது. + VDR ön ucu; Canlı TV akışı ve kayıt yapabilme, EPG, VNSI eklentisi üzerinden zamanlayıcıları destekler. Надстройка над VDR; підтримує потік TV і записів, EPG, таймерів через додаток VNSI Giao tiếp cho VDR; hỗ trợ truyền phát và thu chương trình Live TV, hẹn giờ và hiển thị lịch trình chiếu (EPG) thông qua plugin VNSI VDR 前端,通过 VNSI 插件支持直播电视和录像流媒体、电子节目单、定时器 @@ -117,6 +123,7 @@ Ασταθές πρόγραμμα! Οι δημιουργοί δεν είναι σε καμία περίπτωση υπεύθυνοι για αποτυχημένες εγγραφές, λανθασμένους χρονοδιακόπτες, χαμένες ώρες, ή κάθε είδους ανεπιθύμητα αποτελέσματα.. This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects.. This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects.. + This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects.. ¡Este software es aún inestable! Los autores no son responsables en forma alguna por grabaciones fallidas, temporizaciones incorrectas, tiempo perdido o ningún otro efecto no deseado. ¡Este software es inestable! Los autores no se responsabilizan por grabaciones fallidas, temporizadores incorrectos, horas perdidas, o cualquier otro efecto no deseado.. ¡Esto es software inestable! Los autores no son de ninguna manera responsables por grabaciones fallidas, temporizadores incorrectos, horas perdidas o cualquier otro efecto no deseado... @@ -124,10 +131,11 @@ Tämä on epävakaa ohjelmisto! Ohjelmiston tekijät eivät ole millään muotoa vastuussa epäonnistuneista tallennuksista, virheellisistä ajastuksista, haaskatusta ajasta, verenpaineen noususta eikä mistään muusta epäsuotuisasta vaikutuksesta. Applicatif en cours de réalisation ! Les auteurs ne sont en aucun cas responsables d'enregistrements défaillants, de minuteries erronées, de temps perdu ou tout autre effet indésirable.. Ce logiciel est instable! Les auteurs ne sont aucunement responsables des enregistrements défaillants, des minuteries erronées, des heures perdues ou tout autre effet indésirable. - Este é software non estable, os autores non se fan responsábeis dos erros na gravacións, temporizadores incorrectos, e outros efectos non desexados. + Software non estable, os autores non se fan responsábeis dos erros na gravacións, temporizadores incorrectos, e outros efectos non desexados. זו היא תוכנה בלתי יציבה בעליל! המחברים אינם אחראים בשום דרך להקלטות כושלות או תיזמוני הקלטות לא מדויקים , אובדן של של שעות או כל אפקט בלתי רצוי אחר.... Ovo je nestabilan softver! Autori nisu na koji način odgovorani za neuspjele snimke, netočna vremena, izgubjene sate, ili bilo koje druge neželjene učinke... Ez nem stabil szoftver! A készítők nem vállalnak felelősséget, a hibás felvételért, rossz időzítésért, elvesztegetett időért... + Սա անկայուն ծրագրային ապահովում է: Հեղինակները պատասխանատու չեն վատ ձայնագրումների, սխալ ժամանակացույցերի, կորած ժամանակի կամ այլ ոչ ցանկալի երևույթների համար: Ini merupakan software yang tidak stabil! Penulis tidak bertanggung jawab untuk rekaman gagal, timer salah, waktu terbuang, atau efek tak diinginkan lainnya... Þetta er óstöðugur hugbúnaður! Höfundarnir eru á engann hátt ábyrgir fyrir misheppnuðum upptökum, röngum upptökutímum, klukkustundum sem að fóru í súginn eða nokkrum öðrum óæskilegum áhrifum. Questo programma non è stabile! Gli autori non sono in alcun modo responsabili per registrazioni fallite, timer non corretti, ore perse, o altri effetti indesiderati.. @@ -135,16 +143,17 @@ ეს არის არასტაბილური პროგრამული უზრუნველყოფა! ავტორები არ არიან პასუხისმგებელი შეცდომებზე, არასწორ EPG-ზე, დაკარგულ დროზე ან სხვა ხარვეზებზე 이 소프트웨어는 불안정합니다! 제작자는 녹화 실패, 부정확한 타이머, 시간 낭비 및 기타 예상하지 못한 결과에 대해 책임지지 않습니다.. Tai yra nestabili programinė įranga! Autorius jokiu būdu neatsakingas už nepavykusius įrašus, neteisingus laikmačius, iššvaistytas valandas, ar nutikus kitiems nepageidaujamiems poveikiams ...[COLOR=red](xbmc.lt siūlo/rekomenduoja testuojant šį priedą persijungti į Anglų [orinali] kalbą)[/COLOR] - Šī ir nestabila programmatūra! Autori nav nekādā vaidā atbildīgi par nesanākušiem ierakstiem, nepareiziem taimeriem, iztērētām stundām vai jebkādiem citiem nevēlamiem efektiem.. + Šī ir nestabila programmatūra! Autori nav atbildīgi par nesanākušiem ierakstiem, nepareiziem taimeriem, iztērētām stundām vai jebkādiem citiem nevēlamiem efektiem.. Ова е нестабилен софтвер! Ауторите не се во никој случај одговорни за неуспешни снимања, грешни тајмери, други непосакувани ефекти... Ini merupakan perisian tidak stabil! Pengarang tidak bertanggungjawab atas kegagalan rakaman, pemasa tidak betul, masa yang dibazirkan, atau apa jua kesan yang tidak dikehendaki.. - Dit is onstabiele software! De auteurs zijn op geen enkele wijze verantwoordelijk voor mislukte opnames, onjuiste timers, verspilde uren, of andere ongewenste effecten .. + Dit is instabiele software! De auteurs zijn op geen enkele wijze verantwoordelijk voor mislukte opnames, onjuiste timers, verspilde uren, of andere ongewenste effecten .. Dette er ustabilt programvare! Forfatterne er ikke ansvarlig på noen måte for ødelagte opptak, feile timere, bortkastede timer, eller andre uønskede hendinger... - To oprogramowanie jest niestabilne! Autorzy w żaden sposób nie są odpowiedzialni za nieudane nagrania, nieprawidłowe czasy EPG, czy też jakiekolwiek inne niepożądane efekty oraz za Twój zmarnowany czas. + Oprogramowanie nadal jest w fazie rozwoju i jest niestabilne! Autorzy w żaden sposób nie są odpowiedzialni za nieudane nagrania, błędy w planie nagrań, zmarnowany czas ani jakiekolwiek inne niepożądane efekty. Este software é instável! Os autores não são responsáveis por falhas na gravação, temporizadores incorrectos, horas perdidas ou outro qualquer efeito não desejado... Este é um software instável! Os autores não são responsáveis por gravações com falhas, agendamentos incorretos, tempo desperdiçado, ou quaisquer outros efeitos indesejáveis... Acesta nu este o aplicație definitivă! Autorii nu sunt în nici un fel responsabili pentru înregistrări eșuate, cronometre incorecte, ore pierdute, sau orice alte efecte nedorite... Это тестовая программа! Авторы не несут никакой ответственности за испорченные записи, неверные таймеры, потраченное время и прочие нежелательные эффекты.. + මෙය අස්ථිර මෘදුකාංගයකි! මෙහි සිදුවන පටිගත කිරීම් අසාර්ථක වීම්, සාවද්‍ය මුහුර්තක, නාස්ති වූ කාලයන්, හෝ වෙනත් යමිකිසි නුසුදුසු බලපෑම් සඳහා කතෘ වග කියනු නොලැබේ. Tento softvér nie je stabilný! Autori nenesú žiadnu zodpovednosť za chybné nahrávky vysielania, nesprávne časovače alebo iné neželané udalosti spôsobené týmto softvérom.. To je nestabilna programska oprema! Avtorji niso odgovorni za neuspela snemanja, nepravilne časovnike, zapravljen čas in katerikoli drug neželen učinek... Ky program nuk është ende stabil! Autorët e këtij programi nuk janë në as një menyr përgjegjës për rregistrime të gabuara, timer të pasaktë, kohë të humbur ose efekte të tilla të padëshirueshme. diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Armenian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Armenian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Armenian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Armenian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: VDR VNSI Client +# Addon id: pvr.vdr.vnsi +# Addon Provider: FernetMenta, Team XBMC +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Armenian (http://www.transifex.com/projects/p/xbmc-main/language/hy/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hy\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30017" +msgid "Country" +msgstr "Երկիր" + +msgctxt "#30026" +msgid "Type:" +msgstr "Տեսակ." diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Czech/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Czech/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Czech/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Czech/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -243,3 +243,27 @@ msgctxt "#30108" msgid "Channels" msgstr "Kanály" + +msgctxt "#30109" +msgid "Provider whitelist" +msgstr "Povolení poskytovatelé" + +msgctxt "#30110" +msgid "Channel blacklist" +msgstr "Ignorované programy" + +msgctxt "#30111" +msgid "Channel filters" +msgstr "Filtr programů" + +msgctxt "#30112" +msgid "Radio Channels" +msgstr "Rádiové kanály" + +msgctxt "#30113" +msgid "Save filters" +msgstr "Ulož filtry" + +msgctxt "#30114" +msgid "Provider Unknown" +msgstr "Neznámy poskytovatel" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Danish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Danish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Danish/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Danish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -243,3 +243,27 @@ msgctxt "#30108" msgid "Channels" msgstr "Kanaler" + +msgctxt "#30109" +msgid "Provider whitelist" +msgstr "Udbyder whitelist" + +msgctxt "#30110" +msgid "Channel blacklist" +msgstr "Kanal sortliste" + +msgctxt "#30111" +msgid "Channel filters" +msgstr "Kanalfiltre" + +msgctxt "#30112" +msgid "Radio Channels" +msgstr "Radiokanaler" + +msgctxt "#30113" +msgid "Save filters" +msgstr "Gem filtre" + +msgctxt "#30114" +msgid "Provider Unknown" +msgstr "Udbyder Ukendt" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Dutch/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Dutch/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Dutch/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Dutch/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -30,11 +30,11 @@ msgctxt "#30003" msgid "Character Set Conversion" -msgstr "Characterset Conversie" +msgstr "Karaktersetconversie" msgctxt "#30004" msgid "Connect timeout (s)" -msgstr "Connectie timeout (s)" +msgstr "Connectietimeout (s)" msgctxt "#30005" msgid "Allow VDR Messages" @@ -46,7 +46,7 @@ msgctxt "#30007" msgid "VDR recordings directory" -msgstr "VDR opname directory" +msgstr "VDR opnamemap" msgctxt "#30008" msgid "Channel search" @@ -54,15 +54,15 @@ msgctxt "#30009" msgid "Channel search - Settings" -msgstr "Kanalen scan - Settings" +msgstr "Kanalenscan - Instellingen" msgctxt "#30010" msgid "Start Channel search" -msgstr "kanalen scan starten" +msgstr "Kanalenscan starten" msgctxt "#30011" msgid "Source Type" -msgstr "Bron Type" +msgstr "Brontype" msgctxt "#30012" msgid "TV channels" @@ -70,7 +70,7 @@ msgctxt "#30013" msgid "Radio channels" -msgstr "Radio kanalen" +msgstr "Radiokanalen" msgctxt "#30014" msgid "FTA channels" @@ -90,27 +90,27 @@ msgctxt "#30018" msgid "Cable Inversion" -msgstr "Kabel Inversion" +msgstr "Kabelinversie" msgctxt "#30019" msgid "Cable Symbolrate" -msgstr "Kabel Symbolrate" +msgstr "Kabelsymboolrate" msgctxt "#30020" msgid "Cable modulation" -msgstr "Kabel modulation" +msgstr "Kabelmodulatie" msgctxt "#30021" msgid "Terr Inversion" -msgstr "Antenne Inversion" +msgstr "Antenneinversie" msgctxt "#30022" msgid "Satellite" -msgstr "Sateliet" +msgstr "Satelliet" msgctxt "#30023" msgid "ATSC Type" -msgstr "ATSC type" +msgstr "ATSCtype" msgctxt "#30024" msgid "Back" @@ -126,7 +126,7 @@ msgctxt "#30027" msgid "Device:" -msgstr "Device:" +msgstr "Apparaat:" msgctxt "#30028" msgid "Scan: %i" @@ -166,7 +166,7 @@ msgctxt "#30037" msgid "No device available - exiting" -msgstr "Geen device beschikbaar - exiting" +msgstr "Geen device beschikbaar - afsluiten" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" @@ -186,23 +186,23 @@ msgctxt "#30042" msgid "Channel search - Canceled" -msgstr "Kanalen scan - Geanuleerd" +msgstr "Kanalenscan - Geannuleerd" msgctxt "#30043" msgid "Channel search - Error" -msgstr "Kanalen scan - Fout" +msgstr "Kanalenscan - Fout" msgctxt "#30044" msgid "Lost connection to VDR Server" -msgstr "Connectie naar VDR Server Verloren" +msgstr "Connectie naar VDR Server verloren" msgctxt "#30045" msgid "Connection to VDR Server restored" -msgstr "Connectie naar VDR Server Hervat" +msgstr "Connectie naar VDR Server hervat" msgctxt "#30046" msgid "Create channel groups automatically on the server" -msgstr "Automatisch Kanaal Groepen maken op de server" +msgstr "Automatisch kanaalgroepen maken op de server" msgctxt "#30047" msgid "Request Timeshift" @@ -218,7 +218,7 @@ msgctxt "#30102" msgid "Controlling OSD - press info to exit" -msgstr "OSD Beheren - Druk info om te sluiten" +msgstr "OSD Beheren - druk op info om te sluiten" msgctxt "#30103" msgid "Select to control OSD" @@ -226,15 +226,15 @@ msgctxt "#30104" msgid "Timeshift Mode" -msgstr "Timeshift modus" +msgstr "Timeshiftmodus" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" -msgstr "Timeshift Buffer (RAM)x100 MB" +msgstr "Timeshiftbuffer (RAM)x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" -msgstr "Timeshift Buffer (Bestand) x1 GB" +msgstr "Timeshiftbuffer (Bestand) x1 GB" msgctxt "#30107" msgid "VDR Admin" @@ -246,19 +246,19 @@ msgctxt "#30109" msgid "Provider whitelist" -msgstr "Provider Whitelist" +msgstr "Providerwhitelist" msgctxt "#30110" msgid "Channel blacklist" -msgstr "Kanaal blacklijst" +msgstr "Kanaalblacklijst" msgctxt "#30111" msgid "Channel filters" -msgstr "Kanalen filters" +msgstr "Kanaalfilters" msgctxt "#30112" msgid "Radio Channels" -msgstr "Radio kanalen" +msgstr "Radiokanalen" msgctxt "#30113" msgid "Save filters" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/English/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/English/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/English/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/English/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -210,7 +210,11 @@ msgid "Request Timeshift" msgstr "" -#empty strings from id 30048 to 30099 +msgctxt "#30048" +msgid "Path to channel icons" +msgstr "" + +#empty strings from id 30049 to 30099 msgctxt "#30100" msgid "VDR OSD" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/English (US)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/English (US)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/English (US)/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/English (US)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -16,6 +16,54 @@ "Language: en_US\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgctxt "#30000" +msgid "VDR Hostname or IP" +msgstr "VDR Hostname or IP" + +msgctxt "#30001" +msgid "VNSI Port" +msgstr "VNSI Port" + +msgctxt "#30002" +msgid "Priority" +msgstr "Priority" + +msgctxt "#30003" +msgid "Character Set Conversion" +msgstr "Character Set Conversion" + +msgctxt "#30004" +msgid "Connect timeout (s)" +msgstr "Connect timeout (s)" + +msgctxt "#30005" +msgid "Allow VDR Messages" +msgstr "Allow VDR Messages" + +msgctxt "#30006" +msgid "Read recordings from directory" +msgstr "Read recordings from directory" + +msgctxt "#30007" +msgid "VDR recordings directory" +msgstr "VDR recordings directory" + +msgctxt "#30008" +msgid "Channel search" +msgstr "Channel search" + +msgctxt "#30009" +msgid "Channel search - Settings" +msgstr "Channel search - Settings" + +msgctxt "#30010" +msgid "Start Channel search" +msgstr "Start Channel search" + +msgctxt "#30011" +msgid "Source Type" +msgstr "Source Type" + msgctxt "#30012" msgid "TV channels" msgstr "TV channels" @@ -24,18 +72,198 @@ msgid "Radio channels" msgstr "Radio channels" +msgctxt "#30014" +msgid "FTA channels" +msgstr "FTA channels" + +msgctxt "#30015" +msgid "Scrambled channels" +msgstr "Scrambled channels" + +msgctxt "#30016" +msgid "HD channels" +msgstr "HD channels" + msgctxt "#30017" msgid "Country" msgstr "Country" +msgctxt "#30018" +msgid "Cable Inversion" +msgstr "Cable Inversion" + +msgctxt "#30019" +msgid "Cable Symbolrate" +msgstr "Cable Symbolrate" + +msgctxt "#30020" +msgid "Cable modulation" +msgstr "Cable modulation" + +msgctxt "#30021" +msgid "Terr Inversion" +msgstr "Terr Inversion" + +msgctxt "#30022" +msgid "Satellite" +msgstr "Satellite" + +msgctxt "#30023" +msgid "ATSC Type" +msgstr "ATSC Type" + +msgctxt "#30024" +msgid "Back" +msgstr "Back" + +msgctxt "#30025" +msgid "Channel search - running... %i %%" +msgstr "Channel search - running... %i %%" + msgctxt "#30026" msgid "Type:" msgstr "Type:" +msgctxt "#30027" +msgid "Device:" +msgstr "Device:" + +msgctxt "#30028" +msgid "Scan: %i" +msgstr "Scan: %i" + +msgctxt "#30029" +msgid "Signal: %i %%" +msgstr "Signal: %i %%" + +msgctxt "#30030" +msgid "New channels: %i" +msgstr "New channels: %i" + +msgctxt "#30031" +msgid "All channels: %i" +msgstr "All channels: %i" + +msgctxt "#30032" +msgid "Analog TV" +msgstr "Analog TV" + +msgctxt "#30033" +msgid "Analog Radio" +msgstr "Analog Radio" + +msgctxt "#30034" +msgid "Transponder:" +msgstr "Transponder:" + +msgctxt "#30035" +msgid "New channels" +msgstr "New channels" + +msgctxt "#30036" +msgid "Channel search - Finished" +msgstr "Channel search - Finished" + +msgctxt "#30037" +msgid "No device available - exiting" +msgstr "No device available - exiting" + +msgctxt "#30038" +msgid "No DVB-S2 device available - trying fallback to DVB-S" +msgstr "No DVB-S2 device available - trying fallback to DVB-S" + msgctxt "#30039" msgid "Running" msgstr "Running" +msgctxt "#30040" +msgid "Stopped" +msgstr "Stopped" + +msgctxt "#30041" +msgid "Finished" +msgstr "Finished" + +msgctxt "#30042" +msgid "Channel search - Canceled" +msgstr "Channel search - Canceled" + +msgctxt "#30043" +msgid "Channel search - Error" +msgstr "Channel search - Error" + +msgctxt "#30044" +msgid "Lost connection to VDR Server" +msgstr "Lost connection to VDR Server" + +msgctxt "#30045" +msgid "Connection to VDR Server restored" +msgstr "Connection to VDR Server restored" + +msgctxt "#30046" +msgid "Create channel groups automatically on the server" +msgstr "Create channel groups automatically on the server" + +msgctxt "#30047" +msgid "Request Timeshift" +msgstr "Request Timeshift" + +msgctxt "#30100" +msgid "VDR OSD" +msgstr "VDR OSD" + +msgctxt "#30101" +msgid "Setup" +msgstr "Setup" + +msgctxt "#30102" +msgid "Controlling OSD - press info to exit" +msgstr "Controlling OSD - press info to exit" + +msgctxt "#30103" +msgid "Select to control OSD" +msgstr "Select to control OSD" + +msgctxt "#30104" +msgid "Timeshift Mode" +msgstr "Timeshift Mode" + +msgctxt "#30105" +msgid "Timeshift Buffer (RAM) x100 MB" +msgstr "Timeshift Buffer (RAM) x100 MB" + +msgctxt "#30106" +msgid "Timeshift Buffer (File) x1 GB" +msgstr "Timeshift Buffer (File) x1 GB" + +msgctxt "#30107" +msgid "VDR Admin" +msgstr "VDR Admin" + msgctxt "#30108" msgid "Channels" msgstr "Channels" + +msgctxt "#30109" +msgid "Provider whitelist" +msgstr "Provider whitelist" + +msgctxt "#30110" +msgid "Channel blacklist" +msgstr "Channel blacklist" + +msgctxt "#30111" +msgid "Channel filters" +msgstr "Channel filters" + +msgctxt "#30112" +msgid "Radio Channels" +msgstr "Radio Channels" + +msgctxt "#30113" +msgid "Save filters" +msgstr "Save filters" + +msgctxt "#30114" +msgid "Provider Unknown" +msgstr "Provider Unknown" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/French (Canada)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/French (Canada)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/French (Canada)/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/French (Canada)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -100,6 +100,10 @@ msgid "Cable modulation" msgstr "Modulation du câble" +msgctxt "#30021" +msgid "Terr Inversion" +msgstr "Inversion DVB-T" + msgctxt "#30022" msgid "Satellite" msgstr "Satellite" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Hebrew/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Hebrew/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Hebrew/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Hebrew/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -243,3 +243,27 @@ msgctxt "#30108" msgid "Channels" msgstr "ערוצים" + +msgctxt "#30109" +msgid "Provider whitelist" +msgstr "רשימת ספקים בטוחים" + +msgctxt "#30110" +msgid "Channel blacklist" +msgstr "רשימת ערוצים לא בטוחים" + +msgctxt "#30111" +msgid "Channel filters" +msgstr "מסנני ערוץ" + +msgctxt "#30112" +msgid "Radio Channels" +msgstr "ערוצי רדיו" + +msgctxt "#30113" +msgid "Save filters" +msgstr "שם מסננים" + +msgctxt "#30114" +msgid "Provider Unknown" +msgstr "ספק לא ידוע" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Icelandic/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Icelandic/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Icelandic/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Icelandic/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -16,6 +16,54 @@ "Language: is\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgctxt "#30000" +msgid "VDR Hostname or IP" +msgstr "Hýsilnafn VDR eða IP tala" + +msgctxt "#30001" +msgid "VNSI Port" +msgstr "Gátt fyrir VNSI" + +msgctxt "#30002" +msgid "Priority" +msgstr "Forgangur" + +msgctxt "#30003" +msgid "Character Set Conversion" +msgstr "Stafasett fyrir umbreytingu" + +msgctxt "#30004" +msgid "Connect timeout (s)" +msgstr "Tengitími útrennur (ms)" + +msgctxt "#30005" +msgid "Allow VDR Messages" +msgstr "Leyfa VDR skilaboð" + +msgctxt "#30006" +msgid "Read recordings from directory" +msgstr "Lesa upptökur frá skráasafni" + +msgctxt "#30007" +msgid "VDR recordings directory" +msgstr "Upptökuskráasafn VDR" + +msgctxt "#30008" +msgid "Channel search" +msgstr "Rásaleit" + +msgctxt "#30009" +msgid "Channel search - Settings" +msgstr "Rásaleit - Stillingar" + +msgctxt "#30010" +msgid "Start Channel search" +msgstr "Hefja Rásaleit" + +msgctxt "#30011" +msgid "Source Type" +msgstr "Gerð uppsprettu" + msgctxt "#30012" msgid "TV channels" msgstr "Sjónvarpsrásir" @@ -24,30 +72,198 @@ msgid "Radio channels" msgstr "Útvarpsrásir" +msgctxt "#30014" +msgid "FTA channels" +msgstr "Fríar rásir" + +msgctxt "#30015" +msgid "Scrambled channels" +msgstr "Ruglaðar rásir" + +msgctxt "#30016" +msgid "HD channels" +msgstr "HD rásir" + msgctxt "#30017" msgid "Country" msgstr "Land" +msgctxt "#30018" +msgid "Cable Inversion" +msgstr "Kapal-umsnúningur" + +msgctxt "#30019" +msgid "Cable Symbolrate" +msgstr "Merkjahraði kapals" + +msgctxt "#30020" +msgid "Cable modulation" +msgstr "Kapalmótun" + +msgctxt "#30021" +msgid "Terr Inversion" +msgstr "Umsnúningur Jarðlægs merkis (Terr Inv)" + +msgctxt "#30022" +msgid "Satellite" +msgstr "Gerfihnöttur" + +msgctxt "#30023" +msgid "ATSC Type" +msgstr "ATSC gerð" + msgctxt "#30024" msgid "Back" msgstr "Til baka" +msgctxt "#30025" +msgid "Channel search - running... %i %%" +msgstr "Rásaleit - í gangi... %i %%" + msgctxt "#30026" msgid "Type:" msgstr "Tegund:" +msgctxt "#30027" +msgid "Device:" +msgstr "Tæki:" + +msgctxt "#30028" +msgid "Scan: %i" +msgstr "Skönnun: %i" + +msgctxt "#30029" +msgid "Signal: %i %%" +msgstr "Merki: %i %%" + +msgctxt "#30030" +msgid "New channels: %i" +msgstr "Nýjar rásir: %i" + +msgctxt "#30031" +msgid "All channels: %i" +msgstr "Allar rásir: %i" + +msgctxt "#30032" +msgid "Analog TV" +msgstr "Hliðrænt sjónvarp" + +msgctxt "#30033" +msgid "Analog Radio" +msgstr "Hliðrænt útvarp" + +msgctxt "#30034" +msgid "Transponder:" +msgstr "Endurvarpi:" + +msgctxt "#30035" +msgid "New channels" +msgstr "Nýjar rásir" + +msgctxt "#30036" +msgid "Channel search - Finished" +msgstr "Rásaleit - Lokið" + +msgctxt "#30037" +msgid "No device available - exiting" +msgstr "Ekkert tæki tiltækt - hætti við" + +msgctxt "#30038" +msgid "No DVB-S2 device available - trying fallback to DVB-S" +msgstr "Ekkert DVB-S2 tæki tiltækt - reyna að nota DVB-S" + msgctxt "#30039" msgid "Running" -msgstr "Keyrir" +msgstr "Í gangi" + +msgctxt "#30040" +msgid "Stopped" +msgstr "Stöðvað" msgctxt "#30041" msgid "Finished" msgstr "Búið" +msgctxt "#30042" +msgid "Channel search - Canceled" +msgstr "Rásaleit - Hætt við" + +msgctxt "#30043" +msgid "Channel search - Error" +msgstr "Rásaleit - Villa" + +msgctxt "#30044" +msgid "Lost connection to VDR Server" +msgstr "Missti tenginguna við VDR miðlara" + +msgctxt "#30045" +msgid "Connection to VDR Server restored" +msgstr "Tenging endurheimt við VDR miðlara" + +msgctxt "#30046" +msgid "Create channel groups automatically on the server" +msgstr "Búa sjálfvirkt til rásahópa á miðlaranum" + +msgctxt "#30047" +msgid "Request Timeshift" +msgstr "Biðja um Tímahliðrun" + +msgctxt "#30100" +msgid "VDR OSD" +msgstr "Skjátexti VDR" + msgctxt "#30101" msgid "Setup" msgstr "Uppsetning" +msgctxt "#30102" +msgid "Controlling OSD - press info to exit" +msgstr "Stjórna Skjátexta - Ýttu á upplýsingar til að hætta" + +msgctxt "#30103" +msgid "Select to control OSD" +msgstr "Valið að stjórna Skjátexta" + +msgctxt "#30104" +msgid "Timeshift Mode" +msgstr "Tímahliðrunarhamur" + +msgctxt "#30105" +msgid "Timeshift Buffer (RAM) x100 MB" +msgstr "Flýtiminni Tímahriðrunar (RAM) x100 MB" + +msgctxt "#30106" +msgid "Timeshift Buffer (File) x1 GB" +msgstr "Flýtiminni Tímahliðrunar (Skrá) x1 GB" + +msgctxt "#30107" +msgid "VDR Admin" +msgstr "VDR Stjórnandi" + msgctxt "#30108" msgid "Channels" msgstr "Rásir" + +msgctxt "#30109" +msgid "Provider whitelist" +msgstr "Hvítlisti Veitna" + +msgctxt "#30110" +msgid "Channel blacklist" +msgstr "Bannlisti Rása" + +msgctxt "#30111" +msgid "Channel filters" +msgstr "Rásasía" + +msgctxt "#30112" +msgid "Radio Channels" +msgstr "'Utvarpsrásir" + +msgctxt "#30113" +msgid "Save filters" +msgstr "Vista síur" + +msgctxt "#30114" +msgid "Provider Unknown" +msgstr "Veita Óþekkt" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Italian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Italian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Italian/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Italian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -243,3 +243,27 @@ msgctxt "#30108" msgid "Channels" msgstr "Canali" + +msgctxt "#30109" +msgid "Provider whitelist" +msgstr "Lista provider permessi " + +msgctxt "#30110" +msgid "Channel blacklist" +msgstr "Canali non permessi" + +msgctxt "#30111" +msgid "Channel filters" +msgstr "Filtri canale" + +msgctxt "#30112" +msgid "Radio Channels" +msgstr "Canali radio" + +msgctxt "#30113" +msgid "Save filters" +msgstr "Salva filtri" + +msgctxt "#30114" +msgid "Provider Unknown" +msgstr "Provider sconosciuti" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Japanese/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Japanese/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Japanese/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Japanese/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -223,3 +223,11 @@ msgctxt "#30108" msgid "Channels" msgstr "チャンネル" + +msgctxt "#30110" +msgid "Channel blacklist" +msgstr "チャンネルのブラックリスト" + +msgctxt "#30112" +msgid "Radio Channels" +msgstr "ラジオチャンネル" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Latvian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Latvian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Latvian/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Latvian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -20,10 +20,50 @@ msgid "VDR Hostname or IP" msgstr "VDR saimniekvārds vai IP" +msgctxt "#30001" +msgid "VNSI Port" +msgstr "VNSI ports" + msgctxt "#30002" msgid "Priority" msgstr "Prioritāte" +msgctxt "#30003" +msgid "Character Set Conversion" +msgstr "Rakstzīmju kopas konversija" + +msgctxt "#30004" +msgid "Connect timeout (s)" +msgstr "Savienojuma noilgums" + +msgctxt "#30005" +msgid "Allow VDR Messages" +msgstr "Atļaut VDR ziņojumus" + +msgctxt "#30006" +msgid "Read recordings from directory" +msgstr "Lasīt ierakstus no direktorijas" + +msgctxt "#30007" +msgid "VDR recordings directory" +msgstr "VDR ierakstu direktorija" + +msgctxt "#30008" +msgid "Channel search" +msgstr "Kanāla meklēšana" + +msgctxt "#30009" +msgid "Channel search - Settings" +msgstr "Kanāla meklēšana - iestatījumi" + +msgctxt "#30010" +msgid "Start Channel search" +msgstr "Sākt kanāla meklēšanu" + +msgctxt "#30011" +msgid "Source Type" +msgstr "Avota veids" + msgctxt "#30012" msgid "TV channels" msgstr "TV kanāli" @@ -32,6 +72,14 @@ msgid "Radio channels" msgstr "Radio kanāli" +msgctxt "#30014" +msgid "FTA channels" +msgstr "Bezmaksas kanāli" + +msgctxt "#30015" +msgid "Scrambled channels" +msgstr "Maksas kanāli" + msgctxt "#30016" msgid "HD channels" msgstr "HD kanāli" @@ -40,6 +88,22 @@ msgid "Country" msgstr "Valsts" +msgctxt "#30018" +msgid "Cable Inversion" +msgstr "Kabeļa inversija" + +msgctxt "#30019" +msgid "Cable Symbolrate" +msgstr "Kabeļa simbolbiežums" + +msgctxt "#30020" +msgid "Cable modulation" +msgstr "Kabeļa modulācija" + +msgctxt "#30021" +msgid "Terr Inversion" +msgstr "Terr inversija" + msgctxt "#30022" msgid "Satellite" msgstr "Satelīts" @@ -52,6 +116,10 @@ msgid "Back" msgstr "Atpakaļ" +msgctxt "#30025" +msgid "Channel search - running... %i %%" +msgstr "Kanāla meklēšana - darbojas... %i %%" + msgctxt "#30026" msgid "Type:" msgstr "Tips:" @@ -60,14 +128,50 @@ msgid "Device:" msgstr "Ierīce:" +msgctxt "#30028" +msgid "Scan: %i" +msgstr "Skenēt: %i" + +msgctxt "#30029" +msgid "Signal: %i %%" +msgstr "Signāls: %i %%" + +msgctxt "#30030" +msgid "New channels: %i" +msgstr "Jauni kanāli: %i" + +msgctxt "#30031" +msgid "All channels: %i" +msgstr "Visi kanāli: %i" + msgctxt "#30032" msgid "Analog TV" msgstr "Analogā TV" +msgctxt "#30033" +msgid "Analog Radio" +msgstr "Analogais radio" + msgctxt "#30034" msgid "Transponder:" msgstr "Nesējfrekvence:" +msgctxt "#30035" +msgid "New channels" +msgstr "Jauni kanāli" + +msgctxt "#30036" +msgid "Channel search - Finished" +msgstr "Kanāla meklēšana - pabeigta" + +msgctxt "#30037" +msgid "No device available - exiting" +msgstr "Neviena ierīce nav pieejama - iziet" + +msgctxt "#30038" +msgid "No DVB-S2 device available - trying fallback to DVB-S" +msgstr "Neviena DVB-S2 ierīce nav pieejama - mēģina atgriesties pie DVB-S" + msgctxt "#30039" msgid "Running" msgstr "Darbojas" @@ -80,6 +184,30 @@ msgid "Finished" msgstr "Pabeigts" +msgctxt "#30042" +msgid "Channel search - Canceled" +msgstr "Kanāla meklēšana - atcelta" + +msgctxt "#30043" +msgid "Channel search - Error" +msgstr "Kanāla meklēšana - kļūda" + +msgctxt "#30044" +msgid "Lost connection to VDR Server" +msgstr "Zudis VDR servera pieslēgums" + +msgctxt "#30045" +msgid "Connection to VDR Server restored" +msgstr "VDR servera pieslēgums atjaunots" + +msgctxt "#30046" +msgid "Create channel groups automatically on the server" +msgstr "Izveidot kanālu grupas serverī automātiski" + +msgctxt "#30047" +msgid "Request Timeshift" +msgstr "Pieprasīt laika nobīdi" + msgctxt "#30100" msgid "VDR OSD" msgstr "VDR OSD" @@ -88,6 +216,26 @@ msgid "Setup" msgstr "Iestatīšana" +msgctxt "#30102" +msgid "Controlling OSD - press info to exit" +msgstr "OSD kontrolēšana - iziet spiežot info" + +msgctxt "#30103" +msgid "Select to control OSD" +msgstr "Atlasiet OSD kontrolei" + +msgctxt "#30104" +msgid "Timeshift Mode" +msgstr "Laika nobīdes režīms" + +msgctxt "#30105" +msgid "Timeshift Buffer (RAM) x100 MB" +msgstr "Laika nobīdes buferis (RAM) x100 MB" + +msgctxt "#30106" +msgid "Timeshift Buffer (File) x1 GB" +msgstr "Laika nobīdes buferis (fails) x1 GB" + msgctxt "#30107" msgid "VDR Admin" msgstr "VDR admins" @@ -95,3 +243,27 @@ msgctxt "#30108" msgid "Channels" msgstr "Kanāli" + +msgctxt "#30109" +msgid "Provider whitelist" +msgstr "Atļautie piegādātāji " + +msgctxt "#30110" +msgid "Channel blacklist" +msgstr "Aizliegtie kanāli" + +msgctxt "#30111" +msgid "Channel filters" +msgstr "Kanālu filtri" + +msgctxt "#30112" +msgid "Radio Channels" +msgstr "Radio kanāli" + +msgctxt "#30113" +msgid "Save filters" +msgstr "Saglabāt filtrus" + +msgctxt "#30114" +msgid "Provider Unknown" +msgstr "Nezināms piegādātājs" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Lithuanian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Lithuanian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Lithuanian/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Lithuanian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -30,11 +30,11 @@ msgctxt "#30003" msgid "Character Set Conversion" -msgstr "Konversijos simbolių rinkinys" +msgstr "Simbolių rinkinio konvertavimas" msgctxt "#30004" msgid "Connect timeout (s)" -msgstr "Prisijungimui skyrtas laikas (s)" +msgstr "Prisijungimui skirtas laikas (s)" msgctxt "#30005" msgid "Allow VDR Messages" @@ -106,7 +106,7 @@ msgctxt "#30022" msgid "Satellite" -msgstr "Palydovas (Satellite)" +msgstr "Palydovas" msgctxt "#30023" msgid "ATSC Type" @@ -126,7 +126,7 @@ msgctxt "#30027" msgid "Device:" -msgstr "prietaisas:" +msgstr "Įrenginys:" msgctxt "#30028" msgid "Scan: %i" @@ -150,7 +150,7 @@ msgctxt "#30033" msgid "Analog Radio" -msgstr "Analoginė Radija" +msgstr "Analoginis radijas" msgctxt "#30034" msgid "Transponder:" @@ -162,19 +162,19 @@ msgctxt "#30036" msgid "Channel search - Finished" -msgstr "Kanalų paieška - Baigta(-s)" +msgstr "Kanalų paieška - Baigta" msgctxt "#30037" msgid "No device available - exiting" -msgstr "Negalimi jokie prietaisai - nutraukimas" +msgstr "Nėra galimų įrenginių - išeinama" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" -msgstr "Nėra DVB-S2 - Bandomas atsarginis DVB-S" +msgstr "Nėra DVB-S2 įrenginio - bandomas atsarginis DVB-S" msgctxt "#30039" msgid "Running" -msgstr "Paleisti" +msgstr "Veikia" msgctxt "#30040" msgid "Stopped" @@ -186,7 +186,7 @@ msgctxt "#30042" msgid "Channel search - Canceled" -msgstr "Kanalų paieška - Atšauktas" +msgstr "Kanalų paieška - Atšaukta" msgctxt "#30043" msgid "Channel search - Error" @@ -204,10 +204,66 @@ msgid "Create channel groups automatically on the server" msgstr "Serveryje sukurti kanalų grupes automatiškai" +msgctxt "#30047" +msgid "Request Timeshift" +msgstr "Užklausti laiko poslinkio" + +msgctxt "#30100" +msgid "VDR OSD" +msgstr "VDR OSD" + msgctxt "#30101" msgid "Setup" -msgstr "Sąrankos" +msgstr "Sąranka" + +msgctxt "#30102" +msgid "Controlling OSD - press info to exit" +msgstr "Kontroliuojamas OSD - spauskite info, norėdami išeiti" + +msgctxt "#30103" +msgid "Select to control OSD" +msgstr "Pasirinkite, norėdami kontroliuoti OSD" + +msgctxt "#30104" +msgid "Timeshift Mode" +msgstr "Laiko poslinkio būdas" + +msgctxt "#30105" +msgid "Timeshift Buffer (RAM) x100 MB" +msgstr "Laiko poslinkio buferis (RAM) x100 MB" + +msgctxt "#30106" +msgid "Timeshift Buffer (File) x1 GB" +msgstr "Laiko poslinkio buferis (Failas) x1 GB" + +msgctxt "#30107" +msgid "VDR Admin" +msgstr "VDR administratorius" msgctxt "#30108" msgid "Channels" msgstr "Kanalai" + +msgctxt "#30109" +msgid "Provider whitelist" +msgstr "Tiekėjų baltasis sąrašas" + +msgctxt "#30110" +msgid "Channel blacklist" +msgstr "Tiekėjų juodasis sąrašas" + +msgctxt "#30111" +msgid "Channel filters" +msgstr "Kanalų filtrai" + +msgctxt "#30112" +msgid "Radio Channels" +msgstr "Radijo kanalai" + +msgctxt "#30113" +msgid "Save filters" +msgstr "Išsaugoti filtrus" + +msgctxt "#30114" +msgid "Provider Unknown" +msgstr "Tiekėjas nežinomas" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Macedonian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Macedonian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Macedonian/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Macedonian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -211,3 +211,11 @@ msgctxt "#30108" msgid "Channels" msgstr "Канали" + +msgctxt "#30112" +msgid "Radio Channels" +msgstr "Радио Канали" + +msgctxt "#30113" +msgid "Save filters" +msgstr "Зачувај филтри" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Norwegian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Norwegian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Norwegian/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Norwegian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -208,10 +208,34 @@ msgid "Setup" msgstr "Konfigurasjon" +msgctxt "#30107" +msgid "VDR Admin" +msgstr "VDR Administrator" + msgctxt "#30108" msgid "Channels" msgstr "Kanaler" +msgctxt "#30109" +msgid "Provider whitelist" +msgstr "leverandør hvitliste " + +msgctxt "#30110" +msgid "Channel blacklist" +msgstr "Kanal svarteliste" + +msgctxt "#30111" +msgid "Channel filters" +msgstr "Kanal filtre " + msgctxt "#30112" msgid "Radio Channels" msgstr "Radio Channels" + +msgctxt "#30113" +msgid "Save filters" +msgstr "Lagre filtre" + +msgctxt "#30114" +msgid "Provider Unknown" +msgstr "Leverandør Ukjent" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Polish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Polish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Polish/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Polish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -18,7 +18,7 @@ msgctxt "#30000" msgid "VDR Hostname or IP" -msgstr "IP lub nazwa hosta VDR" +msgstr "Nazwa hosta lub adres IPVDR" msgctxt "#30001" msgid "VNSI Port" @@ -30,7 +30,7 @@ msgctxt "#30003" msgid "Character Set Conversion" -msgstr "Konwersja zestaw kodowania znaków" +msgstr "Konwersja kodowania znaków" msgctxt "#30004" msgid "Connect timeout (s)" @@ -42,11 +42,11 @@ msgctxt "#30006" msgid "Read recordings from directory" -msgstr "Wczytaj nagrania z folderu" +msgstr "Wczytuj nagrania z folderu" msgctxt "#30007" msgid "VDR recordings directory" -msgstr "Katalog nagrań VDR" +msgstr "Folder nagrań VDR" msgctxt "#30008" msgid "Channel search" @@ -66,7 +66,7 @@ msgctxt "#30012" msgid "TV channels" -msgstr "Kanały TV" +msgstr "Kanały telewizyjne" msgctxt "#30013" msgid "Radio channels" @@ -74,7 +74,7 @@ msgctxt "#30014" msgid "FTA channels" -msgstr "Kanały FTA" +msgstr "Kanały niekodowane" msgctxt "#30015" msgid "Scrambled channels" @@ -90,19 +90,19 @@ msgctxt "#30018" msgid "Cable Inversion" -msgstr "Inwersja TV kablowej" +msgstr "Inwersja telewizji kablowej" msgctxt "#30019" msgid "Cable Symbolrate" -msgstr "Szybkość transmisji symboli TV kablowej" +msgstr "Szybkość transmisji telewizji kablowej" msgctxt "#30020" msgid "Cable modulation" -msgstr "Modulacja TV kablowej" +msgstr "Modulacja telewizji kablowej" msgctxt "#30021" msgid "Terr Inversion" -msgstr "Inwersja TV naziemnej" +msgstr "Inwersja telewizji naziemnej" msgctxt "#30022" msgid "Satellite" @@ -110,7 +110,7 @@ msgctxt "#30023" msgid "ATSC Type" -msgstr "Typ ATSC" +msgstr "Typ telewizji naziemnej ATSC" msgctxt "#30024" msgid "Back" @@ -146,7 +146,7 @@ msgctxt "#30032" msgid "Analog TV" -msgstr "TV analogowa" +msgstr "Telewizja analogowa" msgctxt "#30033" msgid "Analog Radio" @@ -166,11 +166,11 @@ msgctxt "#30037" msgid "No device available - exiting" -msgstr "Brak dostępnych urządzeń - Kończenie" +msgstr "Brak dostępnych urządzeń - zamykanie" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" -msgstr "Brak urządzenia DVB-S2 - próba powrotu do DVB-S" +msgstr "Brak dostępnych urządzeń DVB-S2 - testowanie awaryjnie DVB-S" msgctxt "#30039" msgid "Running" @@ -202,47 +202,47 @@ msgctxt "#30046" msgid "Create channel groups automatically on the server" -msgstr "Utwórz automatycznie grupy kanałów na serwerze" +msgstr "Utwórz grupy kanałów automatycznie na serwerze" msgctxt "#30047" msgid "Request Timeshift" -msgstr "Zapytaj o funkcję pauzowania" +msgstr "Zapytaj o funkcję przesunięcia czasowego" msgctxt "#30100" msgid "VDR OSD" -msgstr "menu ekranowe VDR" +msgstr "Menu ekranowe VDR" msgctxt "#30101" msgid "Setup" -msgstr "Setup" +msgstr "Ustawienie" msgctxt "#30102" msgid "Controlling OSD - press info to exit" -msgstr "Sterowanie OSD - aby wyjść naciśnij Info " +msgstr "Sterowanie menu ekranowym - naciśnij Info aby wyjść" msgctxt "#30103" msgid "Select to control OSD" -msgstr "Zaznacz aby mieć kontrolę OSD" +msgstr "Zaznacz, aby kontrolować menu ekranowe" msgctxt "#30104" msgid "Timeshift Mode" -msgstr "Tryb funkcji pauzowania" +msgstr "Tryb przesunięcia czasowego" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" -msgstr "Wielkość bufora funkcji pauzowania (RAM) x100 MB " +msgstr "Rozmiar bufora przesunięcia czasowego (RAM) x100 MB " msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" -msgstr "Wielkość bufora funkcji pauzowania (Plik) x1 GB" +msgstr "Rozmiar bufora przesunięcia czasowego (Plik) x1 GB" msgctxt "#30107" msgid "VDR Admin" -msgstr "Usługa VDR Admin " +msgstr "Administracja VDR" msgctxt "#30108" msgid "Channels" -msgstr "Kanałów" +msgstr "Kanały" msgctxt "#30109" msgid "Provider whitelist" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Portuguese/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Portuguese/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Portuguese/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Portuguese/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -18,7 +18,7 @@ msgctxt "#30000" msgid "VDR Hostname or IP" -msgstr "Hostname ou IP VDR" +msgstr "Nome do servidor ou IP VDR" msgctxt "#30001" msgid "VNSI Port" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Romanian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Romanian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Romanian/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Romanian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -30,7 +30,7 @@ msgctxt "#30003" msgid "Character Set Conversion" -msgstr "Conversie caracter set" +msgstr "Conversie set de caractere" msgctxt "#30004" msgid "Connect timeout (s)" @@ -90,11 +90,11 @@ msgctxt "#30018" msgid "Cable Inversion" -msgstr "Inversare cablu" +msgstr "Inversiune cablu" msgctxt "#30019" msgid "Cable Symbolrate" -msgstr "Symbolrate cablu" +msgstr "Simbol Rate cablu" msgctxt "#30020" msgid "Cable modulation" @@ -102,11 +102,11 @@ msgctxt "#30021" msgid "Terr Inversion" -msgstr "Inversie Terr" +msgstr "Inversiune Terr" msgctxt "#30022" msgid "Satellite" -msgstr "Sateliţi" +msgstr "Satelit" msgctxt "#30023" msgid "ATSC Type" @@ -130,7 +130,7 @@ msgctxt "#30028" msgid "Scan: %i" -msgstr "Scan: %i" +msgstr "Scanare: %i" msgctxt "#30029" msgid "Signal: %i %%" @@ -146,11 +146,11 @@ msgctxt "#30032" msgid "Analog TV" -msgstr "TV Analogic" +msgstr "TV analogic" msgctxt "#30033" msgid "Analog Radio" -msgstr "Radio analog" +msgstr "Radio analogic" msgctxt "#30034" msgid "Transponder:" @@ -162,7 +162,7 @@ msgctxt "#30036" msgid "Channel search - Finished" -msgstr "Căutare canale - terminată" +msgstr "Căutare canale - Finalizat" msgctxt "#30037" msgid "No device available - exiting" @@ -182,15 +182,15 @@ msgctxt "#30041" msgid "Finished" -msgstr "Terminat" +msgstr "Finalizat" msgctxt "#30042" msgid "Channel search - Canceled" -msgstr "Căutare canale - anulată" +msgstr "Căutare canale - Anulată" msgctxt "#30043" msgid "Channel search - Error" -msgstr "Căutare canale - eroare" +msgstr "Căutare canale - Eroare" msgctxt "#30044" msgid "Lost connection to VDR Server" @@ -202,11 +202,11 @@ msgctxt "#30046" msgid "Create channel groups automatically on the server" -msgstr "Creează grupuri canale automat pe server" +msgstr "Creează automat grupuri de canale pe server" msgctxt "#30047" msgid "Request Timeshift" -msgstr "Cere programarea timpului de inregistrare" +msgstr "Cere inregistrare temporară" msgctxt "#30100" msgid "VDR OSD" @@ -214,11 +214,11 @@ msgctxt "#30101" msgid "Setup" -msgstr "Configurație" +msgstr "Configurare" msgctxt "#30102" msgid "Controlling OSD - press info to exit" -msgstr "Controlul OSD - apasa info ca pentru iesire" +msgstr "Controlul OSD - apasa info pentru iesire" msgctxt "#30103" msgid "Select to control OSD" @@ -226,20 +226,44 @@ msgctxt "#30104" msgid "Timeshift Mode" -msgstr "Modul de programare inregistrare" +msgstr "Mod înregistrare temporară" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" -msgstr "Tamponul programarii temporare (RAM) x 100MB" +msgstr "Înregistrare temporară (RAM) x 100MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" -msgstr "Tamponul programarii temporare (fisier) x 1GB" +msgstr "Înregistrare temporară (fisier) x 1GB" msgctxt "#30107" msgid "VDR Admin" -msgstr "Programare VDR" +msgstr "Administrare VDR" msgctxt "#30108" msgid "Channels" msgstr "Canale" + +msgctxt "#30109" +msgid "Provider whitelist" +msgstr "Listă furnizori acceptați" + +msgctxt "#30110" +msgid "Channel blacklist" +msgstr "Listă canale respinse " + +msgctxt "#30111" +msgid "Channel filters" +msgstr "Filtre canale" + +msgctxt "#30112" +msgid "Radio Channels" +msgstr "Filtre radio" + +msgctxt "#30113" +msgid "Save filters" +msgstr "Salvează filtrele" + +msgctxt "#30114" +msgid "Provider Unknown" +msgstr "Furnizor necunoscut" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Sinhala/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Sinhala/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Sinhala/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Sinhala/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,29 @@ +# XBMC Media Center language file +# Addon Name: VDR VNSI Client +# Addon id: pvr.vdr.vnsi +# Addon Provider: FernetMenta, Team XBMC +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Sinhala (http://www.transifex.com/projects/p/xbmc-main/language/si/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: si\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30004" +msgid "Connect timeout (s)" +msgstr "සම්බන්ධවීමේ කාලය(න්) ඉවරයි. " + +msgctxt "#30017" +msgid "Country" +msgstr "රට " + +msgctxt "#30026" +msgid "Type:" +msgstr "සටහන් කරන්න:" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Slovak/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Slovak/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Slovak/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Slovak/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -243,3 +243,27 @@ msgctxt "#30108" msgid "Channels" msgstr "Kanály" + +msgctxt "#30109" +msgid "Provider whitelist" +msgstr "Zoznam povolených poskytovateľov" + +msgctxt "#30110" +msgid "Channel blacklist" +msgstr "Zoznam zakázaných kanálov" + +msgctxt "#30111" +msgid "Channel filters" +msgstr "Filtre kanálov" + +msgctxt "#30112" +msgid "Radio Channels" +msgstr "Rozhlasové kanály" + +msgctxt "#30113" +msgid "Save filters" +msgstr "Uložiť filtre" + +msgctxt "#30114" +msgid "Provider Unknown" +msgstr "Neznámy poskytovateľ" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Spanish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Spanish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Spanish/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Spanish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -34,7 +34,7 @@ msgctxt "#30004" msgid "Connect timeout (s)" -msgstr "Tiempo para conectar excedido" +msgstr "Tiempo de espera de conexión (s)" msgctxt "#30005" msgid "Allow VDR Messages" @@ -46,15 +46,15 @@ msgctxt "#30007" msgid "VDR recordings directory" -msgstr "Directorio de grabación para VDR" +msgstr "Carpeta para grabaciones de VDR" msgctxt "#30008" msgid "Channel search" -msgstr "Buscar canal" +msgstr "Buscar canales" msgctxt "#30009" msgid "Channel search - Settings" -msgstr "Búsqueda de canales - Ajustes" +msgstr "Buscar canales - Ajustes" msgctxt "#30010" msgid "Start Channel search" @@ -62,7 +62,7 @@ msgctxt "#30011" msgid "Source Type" -msgstr "Tipo de fuente" +msgstr "Tipo de origen" msgctxt "#30012" msgid "TV channels" @@ -74,7 +74,7 @@ msgctxt "#30014" msgid "FTA channels" -msgstr "Canales FTA" +msgstr "Canales en abierto" msgctxt "#30015" msgid "Scrambled channels" @@ -94,7 +94,7 @@ msgctxt "#30019" msgid "Cable Symbolrate" -msgstr "Símbolo de cable" +msgstr "Tasa de símbolos del cable" msgctxt "#30020" msgid "Cable modulation" @@ -102,7 +102,7 @@ msgctxt "#30021" msgid "Terr Inversion" -msgstr "Inversión Terr" +msgstr "Inversión TDT" msgctxt "#30022" msgid "Satellite" @@ -154,7 +154,7 @@ msgctxt "#30034" msgid "Transponder:" -msgstr "Transponder:" +msgstr "Transpondedor:" msgctxt "#30035" msgid "New channels" @@ -206,7 +206,7 @@ msgctxt "#30047" msgid "Request Timeshift" -msgstr "Requerir TimeShift" +msgstr "Solicitar TimeShift" msgctxt "#30100" msgid "VDR OSD" @@ -218,7 +218,7 @@ msgctxt "#30102" msgid "Controlling OSD - press info to exit" -msgstr "Controlando OSD, pulsa info para salir" +msgstr "Controlando OSD - pulsa info para salir" msgctxt "#30103" msgid "Select to control OSD" @@ -262,7 +262,7 @@ msgctxt "#30113" msgid "Save filters" -msgstr "Filtros guardados" +msgstr "Guardar filtros" msgctxt "#30114" msgid "Provider Unknown" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Spanish (Argentina)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Spanish (Argentina)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Spanish (Argentina)/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Spanish (Argentina)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -243,3 +243,27 @@ msgctxt "#30108" msgid "Channels" msgstr "Canales" + +msgctxt "#30109" +msgid "Provider whitelist" +msgstr "Lista blanca de proveedores" + +msgctxt "#30110" +msgid "Channel blacklist" +msgstr "Lista negra de canales" + +msgctxt "#30111" +msgid "Channel filters" +msgstr "Filtros de canal" + +msgctxt "#30112" +msgid "Radio Channels" +msgstr "Canales de radio" + +msgctxt "#30113" +msgid "Save filters" +msgstr "Guardar filtros" + +msgctxt "#30114" +msgid "Provider Unknown" +msgstr "Proveedor desconocido" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Tamil (India)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Tamil (India)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Tamil (India)/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Tamil (India)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -18,7 +18,7 @@ msgctxt "#30000" msgid "VDR Hostname or IP" -msgstr "VDR பின்தள புரவலன் பெயர் அல்லது ஐபி" +msgstr "VDR பின்தள பெயர் அல்லது ஐபி" msgctxt "#30001" msgid "VNSI Port" @@ -102,7 +102,7 @@ msgctxt "#30021" msgid "Terr Inversion" -msgstr "எதிர்மறை Terr" +msgstr "Terr எதிர்மறை" msgctxt "#30022" msgid "Satellite" @@ -243,3 +243,27 @@ msgctxt "#30108" msgid "Channels" msgstr "சேனல்கள்" + +msgctxt "#30109" +msgid "Provider whitelist" +msgstr "வழங்குநர் வெள்ளை பட்டியல்" + +msgctxt "#30110" +msgid "Channel blacklist" +msgstr "சேனல் கருப்பு பட்டியல்" + +msgctxt "#30111" +msgid "Channel filters" +msgstr "சேனல் வடிகட்டிகள்" + +msgctxt "#30112" +msgid "Radio Channels" +msgstr "வானொலி சேனல்கள்" + +msgctxt "#30113" +msgid "Save filters" +msgstr "வடிகட்டிகளை சேமி" + +msgctxt "#30114" +msgid "Provider Unknown" +msgstr "அறியாத வழங்குநர்" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Thai/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Thai/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Thai/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Thai/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -16,6 +16,42 @@ "Language: th\n" "Plural-Forms: nplurals=1; plural=0;\n" +msgctxt "#30002" +msgid "Priority" +msgstr "ความสำคัญ" + +msgctxt "#30004" +msgid "Connect timeout (s)" +msgstr "ระยะเวลาหยุดการเชื่อมต่อ (วิ)" + +msgctxt "#30005" +msgid "Allow VDR Messages" +msgstr "อนุญาตข้อความ VDR" + +msgctxt "#30006" +msgid "Read recordings from directory" +msgstr "อ่านบันทึกจากไดเร็กทอรี่" + +msgctxt "#30007" +msgid "VDR recordings directory" +msgstr "ไดเร็กทอรี่บันทึก VDR" + +msgctxt "#30008" +msgid "Channel search" +msgstr "ค้นหาช่องรายการ" + +msgctxt "#30009" +msgid "Channel search - Settings" +msgstr "ค้นหาช่องรายการ - ตั้งค่า" + +msgctxt "#30010" +msgid "Start Channel search" +msgstr "เริ่มค้นหาช่องรายการ" + +msgctxt "#30011" +msgid "Source Type" +msgstr "ชนิดแหล่งที่มา" + msgctxt "#30012" msgid "TV channels" msgstr "ช่อง ทีวี" @@ -24,6 +60,18 @@ msgid "Radio channels" msgstr "ช่อง วิทยุ" +msgctxt "#30014" +msgid "FTA channels" +msgstr "ช่องรายการ FTA" + +msgctxt "#30015" +msgid "Scrambled channels" +msgstr "ช่องรายการผสม" + +msgctxt "#30016" +msgid "HD channels" +msgstr "ช่องรายการความละเอียดสูง" + msgctxt "#30017" msgid "Country" msgstr "ประเทศ" @@ -36,10 +84,78 @@ msgid "Type:" msgstr "ชนิด:" +msgctxt "#30027" +msgid "Device:" +msgstr "อุปกรณ์:" + +msgctxt "#30028" +msgid "Scan: %i" +msgstr "ค้นหา: %i" + +msgctxt "#30029" +msgid "Signal: %i %%" +msgstr "สัญญาณ: %i %%" + +msgctxt "#30030" +msgid "New channels: %i" +msgstr "ช่องใหม่: %i" + +msgctxt "#30031" +msgid "All channels: %i" +msgstr "ทุกช่อง: %i" + +msgctxt "#30032" +msgid "Analog TV" +msgstr "ทีวีอนาล็อก" + +msgctxt "#30033" +msgid "Analog Radio" +msgstr "วิทยุอนาล็อก" + +msgctxt "#30034" +msgid "Transponder:" +msgstr " เครื่องรับส่งสัญญาณ" + +msgctxt "#30035" +msgid "New channels" +msgstr "ช่องรายการใหม่" + +msgctxt "#30036" +msgid "Channel search - Finished" +msgstr "การค้นหารายการ - เสร็จสิ้น" + +msgctxt "#30037" +msgid "No device available - exiting" +msgstr "ไม่มีอุปกรณ์ที่ใช้ได้ - กำลังออก" + +msgctxt "#30038" +msgid "No DVB-S2 device available - trying fallback to DVB-S" +msgstr "ไม่มีอุปกรณ์ DVB-S2 ที่ใช้ได้ - กำลังเปลี่ยนไปเป็น DVB-S" + msgctxt "#30039" msgid "Running" msgstr "กำลังดำเนินการ" +msgctxt "#30040" +msgid "Stopped" +msgstr "หยุด" + +msgctxt "#30041" +msgid "Finished" +msgstr "สำเร็จ" + +msgctxt "#30042" +msgid "Channel search - Canceled" +msgstr "การค้นหารายการ - ยกเลิก" + +msgctxt "#30043" +msgid "Channel search - Error" +msgstr "การค้นหารายการ - ผิดพลาด" + +msgctxt "#30044" +msgid "Lost connection to VDR Server" +msgstr "สูญเสียการเชื่อมต่อกับเซิร์ฟเวอร์ VDR" + msgctxt "#30101" msgid "Setup" msgstr "ตั้งค่า" @@ -47,3 +163,15 @@ msgctxt "#30108" msgid "Channels" msgstr "ช่องสัญญาณ" + +msgctxt "#30112" +msgid "Radio Channels" +msgstr "รายการวิทยุ" + +msgctxt "#30113" +msgid "Save filters" +msgstr "บันทึกตัวกรอง" + +msgctxt "#30114" +msgid "Provider Unknown" +msgstr "ไม่ทราบผู้จัดหา" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Turkish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Turkish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Turkish/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Turkish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -16,6 +16,10 @@ "Language: tr\n" "Plural-Forms: nplurals=1; plural=0;\n" +msgctxt "#30000" +msgid "VDR Hostname or IP" +msgstr "VDR Ana makine adı veya IP" + msgctxt "#30001" msgid "VNSI Port" msgstr "VNSI Portu" @@ -48,6 +52,10 @@ msgid "Start Channel search" msgstr "Kanal aramayı başlat" +msgctxt "#30011" +msgid "Source Type" +msgstr "Kaynak tipi" + msgctxt "#30012" msgid "TV channels" msgstr "TV kanalları" @@ -60,6 +68,10 @@ msgid "FTA channels" msgstr "FTA kanalları" +msgctxt "#30015" +msgid "Scrambled channels" +msgstr "Şifreli Kanallar" + msgctxt "#30016" msgid "HD channels" msgstr "HD kanallar" @@ -68,6 +80,10 @@ msgid "Country" msgstr "Ülke" +msgctxt "#30018" +msgid "Cable Inversion" +msgstr "Kabloluya çevir" + msgctxt "#30022" msgid "Satellite" msgstr "Uydu" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Vietnamese/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Vietnamese/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/language/Vietnamese/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/language/Vietnamese/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -204,6 +204,26 @@ msgid "Create channel groups automatically on the server" msgstr "Tạo các nhóm kênh tự động trên máy chủ" +msgctxt "#30101" +msgid "Setup" +msgstr "Cài đặt" + msgctxt "#30108" msgid "Channels" msgstr "Kênh" + +msgctxt "#30110" +msgid "Channel blacklist" +msgstr "Danh sách kênh bị cấm" + +msgctxt "#30111" +msgid "Channel filters" +msgstr "Bộ lọc kênh" + +msgctxt "#30112" +msgid "Radio Channels" +msgstr "Kênh Radio" + +msgctxt "#30113" +msgid "Save filters" +msgstr "Lưu bộ lọc" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/settings.xml xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/settings.xml --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/settings.xml 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/settings.xml 2014-07-18 06:05:30.000000000 +0000 @@ -8,4 +8,5 @@ + diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/skins/skin.confluence/720p/Admin.xml xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/skins/skin.confluence/720p/Admin.xml --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/addon/resources/skins/skin.confluence/720p/Admin.xml 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/addon/resources/skins/skin.confluence/720p/Admin.xml 2014-07-18 06:05:30.000000000 +0000 @@ -68,9 +68,9 @@ 1 10 - 90 + 82 260 - 481 + 541 10 11 10 @@ -86,9 +86,9 @@ MenuItemNF.png - 250 + 10 0 - 380 + 240 55 font24_title grey2 @@ -106,9 +106,9 @@ MenuItemFO.png - 250 + 10 0 - 380 + 240 55 font24_title white diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/project/VS2010Express/pvrclient_vdr_vnsi.vcxproj xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/project/VS2010Express/pvrclient_vdr_vnsi.vcxproj --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/project/VS2010Express/pvrclient_vdr_vnsi.vcxproj 2014-01-04 10:28:19.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/project/VS2010Express/pvrclient_vdr_vnsi.vcxproj 2014-07-18 06:05:30.000000000 +0000 @@ -1,5 +1,5 @@  - + Debug @@ -20,12 +20,14 @@ DynamicLibrary true MultiByte + v120 DynamicLibrary false true MultiByte + v120 @@ -86,7 +88,6 @@ - diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/project/VS2010Express/pvrclient_vdr_vnsi.vcxproj.filters xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/project/VS2010Express/pvrclient_vdr_vnsi.vcxproj.filters --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/project/VS2010Express/pvrclient_vdr_vnsi.vcxproj.filters 2014-01-04 10:28:19.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/project/VS2010Express/pvrclient_vdr_vnsi.vcxproj.filters 2014-07-18 06:05:30.000000000 +0000 @@ -24,9 +24,6 @@ Source Files - - Source Files - Source Files diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/client.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/client.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/client.cpp 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/client.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ @@ -49,6 +50,7 @@ int g_iPriority = DEFAULT_PRIORITY; ///< The Priority this client have in response to other clients bool g_bAutoChannelGroups = DEFAULT_AUTOGROUPS; int g_iTimeshift = 1; +std::string g_szIconPath = ""; CHelper_libXBMC_addon *XBMC = NULL; CHelper_libXBMC_codec *CODEC = NULL; @@ -178,6 +180,20 @@ g_bAutoChannelGroups = DEFAULT_AUTOGROUPS; } + /* Read setting "iconpath" from settings.xml */ + buffer = (char*) malloc(512); + buffer[0] = 0; /* Set the end of string */ + + if (XBMC->GetSetting("iconpath", buffer)) + g_szIconPath = buffer; + else + { + /* If setting is unknown fallback to defaults */ + XBMC->Log(LOG_ERROR, "Couldn't get 'iconpath' setting"); + g_szHostname = ""; + } + free(buffer); + VNSIData = new cVNSIData; if (!VNSIData->Open(g_szHostname, g_iPort)) { @@ -279,7 +295,7 @@ else if (str == "timeshift") { XBMC->Log(LOG_INFO, "Changed Setting 'timeshift' from %u to %u", g_iTimeshift, *(int*) settingValue); - g_iPriority = *(int*) settingValue; + g_iTimeshift = *(int*) settingValue; } else if (str == "convertchar") { diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/client.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/client.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/client.h 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/client.h 2014-07-18 06:05:30.000000000 +0000 @@ -15,7 +15,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ @@ -41,6 +42,7 @@ extern bool g_bCharsetConv; ///< Convert VDR's incoming strings to UTF8 character set extern bool g_bHandleMessages; ///< Send VDR's OSD status messages to XBMC OSD extern int g_iTimeshift; +extern std::string g_szIconPath; ///< path to channel icons extern ADDON::CHelper_libXBMC_addon *XBMC; extern CHelper_libXBMC_codec *CODEC; diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/requestpacket.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/requestpacket.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/requestpacket.cpp 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/requestpacket.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/requestpacket.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/requestpacket.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/requestpacket.h 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/requestpacket.h 2014-07-18 06:05:30.000000000 +0000 @@ -15,7 +15,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/responsepacket.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/responsepacket.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/responsepacket.cpp 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/responsepacket.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/responsepacket.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/responsepacket.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/responsepacket.h 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/responsepacket.h 2014-07-18 06:05:30.000000000 +0000 @@ -15,7 +15,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/tools.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/tools.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/tools.cpp 2012-11-15 21:18:19.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/tools.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/tools.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/tools.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/tools.h 2014-01-04 10:28:19.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/tools.h 2014-07-18 06:05:30.000000000 +0000 @@ -15,7 +15,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ @@ -23,8 +24,10 @@ #include #include "client.h" +#ifndef TARGET_WINDOWS uint64_t ntohll(uint64_t a); uint64_t htonll(uint64_t a); +#endif #include "libXBMC_codec.h" #include "xbmc_codec_descriptor.hpp" \ No newline at end of file diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/VNSIAdmin.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/VNSIAdmin.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/VNSIAdmin.cpp 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/VNSIAdmin.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -1069,7 +1069,7 @@ m_spinTimeshiftBufferRam = GUI->Control_getSpin(m_window, CONTROL_SPIN_TIMESHIFT_BUFFER_RAM); m_spinTimeshiftBufferRam->Clear(); char buffer[8]; - for (int i = 1; i <= 40; i++) + for (int i = 1; i <= 80; i++) { sprintf(buffer, "%d", i); m_spinTimeshiftBufferRam->AddLabel(buffer, i); @@ -1427,11 +1427,15 @@ char *strChannelName = vresp->extract_String(); channel.m_name = strChannelName; char *strProviderName = vresp->extract_String(); - channel.m_provider = strProviderName; + channel.m_provider = strProviderName; channel.m_id = vresp->extract_U32(); vresp->extract_U32(); // first caid char *strCaids = vresp->extract_String(); channel.SetCaids(strCaids); + if (m_protocol >= 6) + { + std::string ref = vresp->extract_String(); + } channel.m_radio = radio; delete[] strChannelName; diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/VNSIChannelScan.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/VNSIChannelScan.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/VNSIChannelScan.cpp 2014-01-04 10:28:19.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/VNSIChannelScan.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ @@ -58,6 +59,25 @@ using namespace ADDON; cVNSIChannelScan::cVNSIChannelScan() + : m_running(false), + m_stopped(false), + m_Canceled(false), + m_window(NULL), + m_spinSourceType(NULL), + m_spinCountries(NULL), + m_spinSatellites(NULL), + m_spinDVBCInversion(NULL), + m_spinDVBCSymbolrates(NULL), + m_spinDVBCqam(NULL), + m_spinDVBTInversion(NULL), + m_spinATSCType(NULL), + m_radioButtonTV(NULL), + m_radioButtonRadio(NULL), + m_radioButtonFTA(NULL), + m_radioButtonScrambled(NULL), + m_radioButtonHD(NULL), + m_progressDone(NULL), + m_progressSignal(NULL) { } diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/VNSIChannelScan.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/VNSIChannelScan.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/VNSIChannelScan.h 2012-11-15 21:18:19.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/VNSIChannelScan.h 2014-07-18 06:05:30.000000000 +0000 @@ -15,7 +15,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/vnsicommand.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/vnsicommand.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/vnsicommand.h 2014-01-28 20:43:50.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/vnsicommand.h 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ @@ -23,7 +24,10 @@ #define VNSI_COMMAND_H /** Current VNSI Protocol Version number */ -#define VNSI_PROTOCOLVERSION 5 +#define VNSI_PROTOCOLVERSION 6 + +/** Minimum VNSI Protocol Version number */ +#define VNSI_MIN_PROTOCOLVERSION 5 /** Packet types */ #define VNSI_CHANNEL_REQUEST_RESPONSE 1 diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/VNSIData.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/VNSIData.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/VNSIData.cpp 2014-01-04 10:28:19.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/VNSIData.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ @@ -235,6 +236,19 @@ tag.iUniqueId = vresp->extract_U32(); tag.iEncryptionSystem = vresp->extract_U32(); char *strCaids = vresp->extract_String(); + if (m_protocol >= 6) + { + std::string path = g_szIconPath; + std::string ref = vresp->extract_String(); + if (!path.empty()) + { + if (path[path.length()-1] != '/') + path += '/'; + path += ref; + path += ".png"; + strncpy(tag.strIconPath, path.c_str(), sizeof(tag.strIconPath) - 1); + } + } tag.bIsRadio = radio; PVR->TransferChannelEntry(handle, &tag); diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/VNSIData.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/VNSIData.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/VNSIData.h 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/VNSIData.h 2014-07-18 06:05:30.000000000 +0000 @@ -15,7 +15,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/VNSIDemux.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/VNSIDemux.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/VNSIDemux.cpp 2014-01-04 10:28:19.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/VNSIDemux.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/VNSIDemux.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/VNSIDemux.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/VNSIDemux.h 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/VNSIDemux.h 2014-07-18 06:05:30.000000000 +0000 @@ -15,7 +15,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/VNSIRecording.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/VNSIRecording.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/VNSIRecording.cpp 2014-01-28 20:43:50.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/VNSIRecording.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/VNSIRecording.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/VNSIRecording.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/VNSIRecording.h 2014-01-28 20:43:50.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/VNSIRecording.h 2014-07-18 06:05:30.000000000 +0000 @@ -15,7 +15,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/VNSISession.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/VNSISession.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/VNSISession.cpp 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/VNSISession.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ @@ -44,8 +45,8 @@ using namespace PLATFORM; cVNSISession::cVNSISession() - : m_socket(NULL) - , m_protocol(0) + : m_protocol(0) + , m_socket(NULL) , m_connectionLost(false) { } @@ -131,7 +132,7 @@ m_version = ServerVersion; m_protocol = (int)protocol; - if (m_protocol < VNSI_PROTOCOLVERSION) + if (m_protocol < VNSI_MIN_PROTOCOLVERSION) throw "Protocol versions do not match"; if (m_name.empty()) diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/VNSISession.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/VNSISession.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/src/VNSISession.h 2012-11-15 21:18:19.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/src/VNSISession.h 2014-07-18 06:05:30.000000000 +0000 @@ -15,7 +15,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ @@ -70,6 +71,9 @@ int m_port; std::string m_name; PLATFORM::CMutex m_mutex; + int m_protocol; + std::string m_server; + std::string m_version; private: @@ -77,8 +81,5 @@ PLATFORM::CTcpConnection *m_socket; PLATFORM::CMutex m_readMutex; - int m_protocol; - std::string m_server; - std::string m_version; bool m_connectionLost; }; diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/bitstream.c xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/bitstream.c --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/bitstream.c 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/bitstream.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,147 +0,0 @@ -/* - * vdr-plugin-vnsi - XBMC server plugin for VDR - * - * Copyright (C) 2010 Alwin Esch (Team XBMC) - * - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ - -#include -#include -#include "bitstream.h" - -cBitstream::cBitstream(uint8_t *data, int bits) -{ - m_data = data; - m_offset = 0; - m_len = bits; - m_error = false; -} - -void cBitstream::setBitstream(uint8_t *data, int bits) -{ - m_data = data; - m_offset = 0; - m_len = bits; - m_error = false; -} - -void cBitstream::skipBits(int num) -{ - m_offset += num; -} - -unsigned int cBitstream::readBits(int num) -{ - int r = 0; - - while(num > 0) - { - if(m_offset >= m_len) - { - m_error = true; - return 0; - } - - num--; - - if(m_data[m_offset / 8] & (1 << (7 - (m_offset & 7)))) - r |= 1 << num; - - m_offset++; - } - return r; -} - -unsigned int cBitstream::showBits(int num) -{ - int r = 0; - int offs = m_offset; - - while(num > 0) - { - if(offs >= m_len) - { - m_error = true; - return 0; - } - - num--; - - if(m_data[offs / 8] & (1 << (7 - (offs & 7)))) - r |= 1 << num; - - offs++; - } - return r; -} - -unsigned int cBitstream::readGolombUE(int maxbits) -{ - int lzb = -1; - int bits = 0; - - for(int b = 0; !b; lzb++, bits++) - { - if (bits > maxbits) - return 0; - b = readBits1(); - } - - return (1 << lzb) - 1 + readBits(lzb); -} - -signed int cBitstream::readGolombSE() -{ - int v, pos; - v = readGolombUE(); - if(v == 0) - return 0; - - pos = (v & 1); - v = (v + 1) >> 1; - return pos ? v : -v; -} - - -unsigned int cBitstream::remainingBits() -{ - return m_len - m_offset; -} - - -void cBitstream::putBits(int val, int num) -{ - while(num > 0) { - if(m_offset >= m_len) - { - m_error = true; - return; - } - - num--; - - if(val & (1 << num)) - m_data[m_offset / 8] |= 1 << (7 - (m_offset & 7)); - else - m_data[m_offset / 8] &= ~(1 << (7 - (m_offset & 7))); - - m_offset++; - } -} diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/bitstream.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/bitstream.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/bitstream.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/bitstream.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,52 +0,0 @@ -/* - * vdr-plugin-vnsi - XBMC server plugin for VDR - * - * Copyright (C) 2010 Alwin Esch (Team XBMC) - * - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ - -#ifndef VNSI_BITSTREAM_H -#define VNSI_BITSTREAM_H - -class cBitstream -{ -private: - uint8_t *m_data; - int m_offset; - int m_len; - bool m_error; - -public: - cBitstream(uint8_t *data, int bits); - - void setBitstream(uint8_t *data, int bits); - void skipBits(int num); - unsigned int readBits(int num); - unsigned int showBits(int num); - unsigned int readBits1() { return readBits(1); } - unsigned int readGolombUE(int maxbits = 32); - signed int readGolombSE(); - unsigned int remainingBits(); - void putBits(int val, int num); - int length() { return m_len; } - bool isError() { return m_error; } -}; - -#endif // VNSI_BITSTREAM_H diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/channelfilter.c xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/channelfilter.c --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/channelfilter.c 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/channelfilter.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,332 +0,0 @@ -/* - * Copyright (C) 2005-2013 Team XBMC - * http://xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - */ - -#include "channelfilter.h" -#include "config.h" -#include "hash.h" -#include -#include -#include -#include -#include - -cVNSIProvider::cVNSIProvider() - :m_name(""), m_caid(0) -{ - -} - -cVNSIProvider::cVNSIProvider(std::string name, int caid) - :m_name(name), m_caid(caid) -{ -}; - -bool cVNSIProvider::operator==(const cVNSIProvider &rhs) -{ - if (rhs.m_caid != m_caid) - return false; - if (rhs.m_name.compare(m_name) != 0) - return false; - return true; -} - - -bool cVNSIChannelFilter::IsRadio(const cChannel* channel) -{ - bool isRadio = false; - - // assume channels without VPID & APID are video channels - if (channel->Vpid() == 0 && channel->Apid(0) == 0) - isRadio = false; - // channels without VPID are radio channels (channels with VPID 1 are encrypted radio channels) - else if (channel->Vpid() == 0 || channel->Vpid() == 1) - isRadio = true; - - return isRadio; -} - -void cVNSIChannelFilter::Load() -{ - cMutexLock lock(&m_Mutex); - - cString filename; - std::string line; - std::ifstream rfile; - cVNSIProvider provider; - std::vector::iterator p_it; - - filename = cString::sprintf("%s/videowhitelist.vnsi", *VNSIServerConfig.ConfigDirectory); - m_providersVideo.clear(); - rfile.open(filename); - if (rfile.is_open()) - { - while(std::getline(rfile,line)) - { - size_t pos = line.find("|"); - if(pos == line.npos) - { - provider.m_name = line; - provider.m_caid = 0; - } - else - { - provider.m_name = line.substr(0, pos); - std::string tmp = line.substr(pos+1); - char *pend; - provider.m_caid = strtol(tmp.c_str(), &pend, 10); - } - p_it = std::find(m_providersVideo.begin(), m_providersVideo.end(), provider); - if(p_it == m_providersVideo.end()) - { - m_providersVideo.push_back(provider); - } - } - rfile.close(); - } - - filename = cString::sprintf("%s/radiowhitelist.vnsi", *VNSIServerConfig.ConfigDirectory); - rfile.open(filename); - m_providersRadio.clear(); - if (rfile.is_open()) - { - while(std::getline(rfile,line)) - { - unsigned int pos = line.find("|"); - if(pos == line.npos) - { - provider.m_name = line; - provider.m_caid = 0; - } - else - { - provider.m_name = line.substr(0, pos); - std::string tmp = line.substr(pos+1); - char *pend; - provider.m_caid = strtol(tmp.c_str(), &pend, 10); - } - p_it = std::find(m_providersRadio.begin(), m_providersRadio.end(), provider); - if(p_it == m_providersRadio.end()) - { - m_providersRadio.push_back(provider); - } - } - rfile.close(); - } - - filename = cString::sprintf("%s/videoblacklist.vnsi", *VNSIServerConfig.ConfigDirectory); - rfile.open(filename); - m_channelsVideo.clear(); - if (rfile.is_open()) - { - while(getline(rfile,line)) - { - char *pend; - int id = strtol(line.c_str(), &pend, 10); - m_channelsVideo.push_back(id); - } - rfile.close(); - } - - filename = cString::sprintf("%s/radioblacklist.vnsi", *VNSIServerConfig.ConfigDirectory); - rfile.open(filename); - m_channelsRadio.clear(); - if (rfile.is_open()) - { - while(getline(rfile,line)) - { - char *pend; - int id = strtol(line.c_str(), &pend, 10); - m_channelsRadio.push_back(id); - } - rfile.close(); - } -} - -void cVNSIChannelFilter::StoreWhitelist(bool radio) -{ - cMutexLock lock(&m_Mutex); - - cString filename; - std::ofstream wfile; - cVNSIProvider provider; - std::vector::iterator p_it; - std::vector *whitelist; - - if (radio) - { - filename = cString::sprintf("%s/radiowhitelist.vnsi", *VNSIServerConfig.ConfigDirectory); - whitelist = &m_providersRadio; - } - else - { - filename = cString::sprintf("%s/videowhitelist.vnsi", *VNSIServerConfig.ConfigDirectory); - whitelist = &m_providersVideo; - } - - wfile.open(filename); - if(wfile.is_open()) - { - std::string tmp; - char buf[16]; - for(p_it=whitelist->begin(); p_it!=whitelist->end(); ++p_it) - { - tmp = p_it->m_name; - tmp += "|"; - sprintf(buf, "%d\n", p_it->m_caid); - tmp += buf; - wfile << tmp; - } - wfile.close(); - } - - SortChannels(); -} - -void cVNSIChannelFilter::StoreBlacklist(bool radio) -{ - cMutexLock lock(&m_Mutex); - - cString filename; - std::ofstream wfile; - cVNSIProvider provider; - std::vector::iterator it; - std::vector *blacklist; - - if (radio) - { - filename = cString::sprintf("%s/radioblacklist.vnsi", *VNSIServerConfig.ConfigDirectory); - blacklist = &m_channelsRadio; - } - else - { - filename = cString::sprintf("%s/videoblacklist.vnsi", *VNSIServerConfig.ConfigDirectory); - blacklist = &m_channelsVideo; - } - - wfile.open(filename); - if(wfile.is_open()) - { - std::string tmp; - char buf[16]; - for(it=blacklist->begin(); it!=blacklist->end(); ++it) - { - sprintf(buf, "%d\n", *it); - tmp = buf; - wfile << tmp; - } - wfile.close(); - } - - SortChannels(); -} - -bool cVNSIChannelFilter::IsWhitelist(const cChannel &channel) -{ - cVNSIProvider provider; - std::vector::iterator p_it; - std::vector *providers; - provider.m_name = channel.Provider(); - - if (IsRadio(&channel)) - providers = &m_providersRadio; - else - providers = &m_providersVideo; - - if(providers->empty()) - return true; - - if (channel.Ca(0) == 0) - { - provider.m_caid = 0; - p_it = std::find(providers->begin(), providers->end(), provider); - if(p_it!=providers->end()) - return true; - else - return false; - } - - int caid; - int idx = 0; - while((caid = channel.Ca(idx)) != 0) - { - provider.m_caid = caid; - p_it = std::find(providers->begin(), providers->end(), provider); - if(p_it!=providers->end()) - return true; - - idx++; - } - return false; -} - -bool cVNSIChannelFilter::PassFilter(const cChannel &channel) -{ - cMutexLock lock(&m_Mutex); - - if(channel.GroupSep()) - return true; - - if (!IsWhitelist(channel)) - return false; - - std::vector::iterator it; - if (IsRadio(&channel)) - { - it = std::find(m_channelsRadio.begin(), m_channelsRadio.end(), CreateChannelUID(&channel)); - if(it!=m_channelsRadio.end()) - return false; - } - else - { - it = std::find(m_channelsVideo.begin(), m_channelsVideo.end(), CreateChannelUID(&channel)); - if(it!=m_channelsVideo.end()) - return false; - } - - return true; -} - -void cVNSIChannelFilter::SortChannels() -{ - Channels.IncBeingEdited(); - Channels.Lock(true); - - for (cChannel *channel = Channels.First(); channel; channel = Channels.Next(channel)) - { - if(!PassFilter(*channel)) - { - for (cChannel *whitechan = Channels.Next(channel); whitechan; whitechan = Channels.Next(whitechan)) - { - if(PassFilter(*whitechan)) - { - Channels.Move(whitechan, channel); - channel = whitechan; - break; - } - } - } - } - - Channels.SetModified(true); - Channels.Unlock(); - Channels.DecBeingEdited(); -} - -cVNSIChannelFilter VNSIChannelFilter; diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/channelfilter.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/channelfilter.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/channelfilter.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/channelfilter.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,55 +0,0 @@ -/* - * Copyright (C) 2005-2013 Team XBMC - * http://xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - */ - -#pragma once - -#include -#include -#include -#include - -class cVNSIProvider -{ -public: - cVNSIProvider(); - cVNSIProvider(std::string name, int caid); - bool operator==(const cVNSIProvider &rhs); - std::string m_name; - int m_caid; -}; - -class cVNSIChannelFilter -{ -public: - void Load(); - void StoreWhitelist(bool radio); - void StoreBlacklist(bool radio); - bool IsWhitelist(const cChannel &channel); - bool PassFilter(const cChannel &channel); - void SortChannels(); - static bool IsRadio(const cChannel* channel); - std::vector m_providersVideo; - std::vector m_providersRadio; - std::vector m_channelsVideo; - std::vector m_channelsRadio; - cMutex m_Mutex; -}; - -extern cVNSIChannelFilter VNSIChannelFilter; diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/config.c xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/config.c --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/config.c 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/config.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,42 +0,0 @@ -/* - * vdr-plugin-vnsi - XBMC server plugin for VDR - * - * Copyright (C) 2010 Alwin Esch (Team XBMC) - * Copyright (C) 2010, 2011 Alexander Pipelka - * - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ - -#include -#include -#include - -#include - -#include "config.h" - -cVNSIServerConfig::cVNSIServerConfig() -{ - listen_port = LISTEN_PORT; - ConfigDirectory = NULL; - stream_timeout = 10; -} - -/* Global instance */ -cVNSIServerConfig VNSIServerConfig; diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/config.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/config.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/config.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/config.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,87 +0,0 @@ -/* - * vdr-plugin-vnsi - XBMC server plugin for VDR - * - * Copyright (C) 2010 Alwin Esch (Team XBMC) - * Copyright (C) 2010, 2011 Alexander Pipelka - * - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ - -#ifndef VNSI_CONFIG_H -#define VNSI_CONFIG_H - -#include -#include - -#include - -// log output configuration - -#ifdef CONSOLEDEBUG -#define DEBUGLOG(x...) printf("VNSI: "x) -#elif defined DEBUG -#define DEBUGLOG(x...) dsyslog("VNSI: "x) -#else -#define DEBUGLOG(x...) -#endif - -#ifdef CONSOLEDEBUG -#define INFOLOG(x...) printf("VNSI: "x) -#define ERRORLOG(x...) printf("VNSI-Error: "x) -#else -#define INFOLOG(x...) isyslog("VNSI: "x) -#define ERRORLOG(x...) esyslog("VNSI-Error: "x) -#endif - -// default settings - -#define ALLOWED_HOSTS_FILE "allowed_hosts.conf" -#define FRONTEND_DEVICE "/dev/dvb/adapter%d/frontend%d" - -#define LISTEN_PORT 34890 -#define LISTEN_PORT_S "34890" -#define DISCOVERY_PORT 34890 - -// backward compatibility - -#if APIVERSNUM < 10701 -#define FOLDERDELIMCHAR '~' -#endif - -// Error flags -#define ERROR_PES_GENERAL 0x01 -#define ERROR_PES_SCRAMBLE 0x02 -#define ERROR_PES_STARTCODE 0x04 -#define ERROR_DEMUX_NODATA 0x10 - -class cVNSIServerConfig -{ -public: - cVNSIServerConfig(); - - // Remote server settings - cString ConfigDirectory; // config directory path - uint16_t listen_port; // Port of remote server - uint16_t stream_timeout; // timeout in seconds for stream data -}; - -// Global instance -extern cVNSIServerConfig VNSIServerConfig; - -#endif // VNSI_CONFIG_H diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/COPYING xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/COPYING --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/COPYING 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/COPYING 1970-01-01 00:00:00.000000000 +0000 @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/cxsocket.c xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/cxsocket.c --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/cxsocket.c 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/cxsocket.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,200 +0,0 @@ -/* - * vdr-plugin-vnsi - XBMC server plugin for VDR - * - * Copyright (C) 2003-2006 Petri Hintukainen - * Copyright (C) 2010 Alwin Esch (Team XBMC) - * Copyright (C) 2011 Alexander Pipelka - * - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ - -/* - * Socket wrapper classes - * - * Code is taken from xineliboutput plugin. - * - */ - -#define __STDC_FORMAT_MACROS -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "config.h" -#include "cxsocket.h" - -#ifndef MSG_MORE -#define MSG_MORE 0 -#endif - -cxSocket::~cxSocket() -{ - close(); - delete m_pollerRead; - delete m_pollerWrite; -} - -void cxSocket::close() { - if(m_fd >= 0) { - ::close(m_fd); - m_fd=-1; - } -} - -void cxSocket::Shutdown() -{ - if(m_fd >= 0) - { - ::shutdown(m_fd, SHUT_RD); - } -} - -void cxSocket::LockWrite() -{ - m_MutexWrite.Lock(); -} - -void cxSocket::UnlockWrite() -{ - m_MutexWrite.Unlock(); -} - -ssize_t cxSocket::write(const void *buffer, size_t size, int timeout_ms, bool more_data) -{ - cMutexLock CmdLock(&m_MutexWrite); - - if(m_fd == -1) - return -1; - - ssize_t written = (ssize_t)size; - const unsigned char *ptr = (const unsigned char *)buffer; - - while (size > 0) - { - if(!m_pollerWrite->Poll(timeout_ms)) - { - ERRORLOG("cxSocket::write: poll() failed"); - return written-size; - } - - ssize_t p = ::send(m_fd, ptr, size, (more_data ? MSG_MORE : 0)); - - if (p <= 0) - { - if (errno == EINTR || errno == EAGAIN) - { - DEBUGLOG("cxSocket::write: EINTR during write(), retrying"); - continue; - } - else if (errno != EPIPE) - ERRORLOG("cxSocket::write: write() error"); - return p; - } - - ptr += p; - size -= p; - } - - return written; -} - -ssize_t cxSocket::read(void *buffer, size_t size, int timeout_ms) -{ - int retryCounter = 0; - - if(m_fd == -1) - return -1; - - ssize_t missing = (ssize_t)size; - unsigned char *ptr = (unsigned char *)buffer; - - while (missing > 0) - { - if(!m_pollerRead->Poll(timeout_ms)) - { - ERRORLOG("cxSocket::read: poll() failed at %d/%d", (int)(size-missing), (int)size); - return size-missing; - } - - ssize_t p = ::read(m_fd, ptr, missing); - - if (p < 0) - { - if (retryCounter < 10 && (errno == EINTR || errno == EAGAIN)) - { - DEBUGLOG("cxSocket::read: EINTR/EAGAIN during read(), retrying"); - retryCounter++; - continue; - } - ERRORLOG("cxSocket::read: read() error at %d/%d", (int)(size-missing), (int)size); - return 0; - } - else if (p == 0) - { - INFOLOG("cxSocket::read: eof, connection closed"); - return 0; - } - - retryCounter = 0; - ptr += p; - missing -= p; - } - - return size; -} - -void cxSocket::SetHandle(int h) { - if(h != m_fd) { - close(); - m_fd = h; - delete m_pollerRead; - delete m_pollerWrite; - m_pollerRead = new cPoller(m_fd); - m_pollerWrite = new cPoller(m_fd, true); - } -} - -char *cxSocket::ip2txt(uint32_t ip, unsigned int port, char *str) -{ - // inet_ntoa is not thread-safe (?) - if(str) { - unsigned int iph =(unsigned int)ntohl(ip); - unsigned int porth =(unsigned int)ntohs(port); - if(!porth) - sprintf(str, "%d.%d.%d.%d", - ((iph>>24)&0xff), ((iph>>16)&0xff), - ((iph>>8)&0xff), ((iph)&0xff)); - else - sprintf(str, "%u.%u.%u.%u:%u", - ((iph>>24)&0xff), ((iph>>16)&0xff), - ((iph>>8)&0xff), ((iph)&0xff), - porth); - } - return str; -} diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/cxsocket.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/cxsocket.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/cxsocket.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/cxsocket.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,61 +0,0 @@ -/* - * vdr-plugin-vnsi - XBMC server plugin for VDR - * - * Copyright (C) 2003-2006 Petri Hintukainen - * Copyright (C) 2010 Alwin Esch (Team XBMC) - * Copyright (C) 2011 Alexander Pipelka - * - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ - -#ifndef VNSI_CXSOCKET_H -#define VNSI_CXSOCKET_H - -#ifdef __FreeBSD__ -#include -#endif - -#include -#include -#include -#include -#include - -class cxSocket -{ - private: - int m_fd; - cMutex m_MutexWrite; - cPoller *m_pollerRead; - cPoller *m_pollerWrite; - - public: - cxSocket() : m_fd(-1), m_pollerRead(NULL), m_pollerWrite(NULL) {} - ~cxSocket(); - void SetHandle(int h); - void close(void); - void Shutdown(void); - void LockWrite(); - void UnlockWrite(); - ssize_t read(void *buffer, size_t size, int timeout_ms = -1); - ssize_t write(const void *buffer, size_t size, int timeout_ms = -1, bool more_data = false); - static char *ip2txt(uint32_t ip, unsigned int port, char *str); -}; - -#endif // VNSI_CXSOCKET_H diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/demuxer.c xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/demuxer.c --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/demuxer.c 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/demuxer.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,652 +0,0 @@ -/* - * Copyright (C) 2005-2012 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - */ - - -#include "config.h" -#include "demuxer.h" -#include "parser.h" -#include "videobuffer.h" - -#include -#include - -cVNSIDemuxer::cVNSIDemuxer() -{ - m_OldPmtVersion = -1; -} - -cVNSIDemuxer::~cVNSIDemuxer() -{ - -} - -void cVNSIDemuxer::Open(const cChannel &channel, cVideoBuffer *videoBuffer) -{ - cMutexLock lock(&m_Mutex); - - m_CurrentChannel = channel; - m_VideoBuffer = videoBuffer; - m_OldPmtVersion = -1; - - if (m_CurrentChannel.Vpid()) - m_WaitIFrame = true; - else - m_WaitIFrame = false; - - m_FirstFramePTS = 0; - - m_PtsWrap.m_Wrap = false; - m_PtsWrap.m_NoOfWraps = 0; - m_PtsWrap.m_ConfirmCount = 0; - m_MuxPacketSerial = 0; - m_Error = ERROR_DEMUX_NODATA; - m_SetRefTime = true; -} - -void cVNSIDemuxer::Close() -{ - cMutexLock lock(&m_Mutex); - - for (std::list::iterator it = m_Streams.begin(); it != m_Streams.end(); ++it) - { - DEBUGLOG("Deleting stream parser for pid=%i and type=%i", (*it)->GetPID(), (*it)->Type()); - delete (*it); - } - m_Streams.clear(); - m_StreamInfos.clear(); -} - -int cVNSIDemuxer::Read(sStreamPacket *packet) -{ - uint8_t *buf; - int len; - cTSStream *stream; - - cMutexLock lock(&m_Mutex); - - // clear packet - if (!packet) - return -1; - packet->data = NULL; - packet->streamChange = false; - packet->pmtChange = false; - - // read TS Packet from buffer - len = m_VideoBuffer->Read(&buf, TS_SIZE, m_endTime, m_wrapTime); - // eof - if (len == -2) - return -2; - else if (len != TS_SIZE) - return -1; - - m_Error &= ~ERROR_DEMUX_NODATA; - - int ts_pid = TsPid(buf); - - // parse PAT/PMT - if (ts_pid == PATPID) - { - m_PatPmtParser.ParsePat(buf, TS_SIZE); - } -#if APIVERSNUM >= 10733 - else if (m_PatPmtParser.IsPmtPid(ts_pid)) -#else - else if (ts_pid == m_PatPmtParser.PmtPid()) -#endif - { - int patVersion, pmtVersion; - m_PatPmtParser.ParsePmt(buf, TS_SIZE); - if (m_PatPmtParser.GetVersions(patVersion, pmtVersion)) - { - if (pmtVersion != m_OldPmtVersion) - { - cChannel pmtChannel(m_CurrentChannel); - SetChannelPids(&pmtChannel, &m_PatPmtParser); - SetChannelStreams(&pmtChannel); - m_PatPmtParser.Reset(); - m_OldPmtVersion = pmtVersion; - if (EnsureParsers()) - { - packet->pmtChange = true; - return 1; - } - } - } - } - else if (stream = FindStream(ts_pid)) - { - int error = stream->ProcessTSPacket(buf, packet, m_WaitIFrame); - if (error == 0) - { - if (m_WaitIFrame) - { - if (packet->pts != DVD_NOPTS_VALUE) - m_FirstFramePTS = packet->pts; - m_WaitIFrame = false; - } - - if (packet->pts < m_FirstFramePTS) - return 0; - - packet->serial = m_MuxPacketSerial; - if (m_SetRefTime) - { - m_refTime = m_VideoBuffer->GetRefTime(); - packet->reftime = m_refTime; - m_SetRefTime = false; - } - return 1; - } - else if (error < 0) - { - m_Error |= abs(error); - } - } - - return 0; -} - -bool cVNSIDemuxer::SeekTime(int64_t time) -{ - off_t pos, pos_min, pos_max, pos_limit, start_pos; - int64_t ts, ts_min, ts_max, last_ts; - int no_change; - - if (!m_VideoBuffer->HasBuffer()) - return false; - - cMutexLock lock(&m_Mutex); - -// INFOLOG("----- seek to time: %ld", time); - - // rescale to 90khz - time = cTSStream::Rescale(time, 90000, DVD_TIME_BASE); - - m_VideoBuffer->GetPositions(&pos, &pos_min, &pos_max); - -// INFOLOG("----- seek to time: %ld", time); -// INFOLOG("------pos: %ld, pos min: %ld, pos max: %ld", pos, pos_min, pos_max); - - if (!GetTimeAtPos(&pos_min, &ts_min)) - { - ResetParsers(); - m_WaitIFrame = true; - return false; - } - -// INFOLOG("----time at min: %ld", ts_min); - - if (ts_min >= time) - { - m_VideoBuffer->SetPos(pos_min); - ResetParsers(); - m_WaitIFrame = true; - m_MuxPacketSerial++; - return true; - } - - int64_t timecur; - GetTimeAtPos(&pos, &timecur); - - // get time at end of buffer - unsigned int step= 1024; - bool gotTime; - do - { - pos_max -= step; - gotTime = GetTimeAtPos(&pos_max, &ts_max); - step += step; - } while (!gotTime && pos_max >= step); - - if (!gotTime) - { - ResetParsers(); - m_WaitIFrame = true; - return false; - } - - if (ts_max <= time) - { - ResetParsers(); - m_WaitIFrame = true; - m_MuxPacketSerial++; - return true; - } - -// INFOLOG(" - time in buffer: %ld", cTSStream::Rescale(ts_max-ts_min, DVD_TIME_BASE, 90000)/1000000); - - // bisect seek - if(ts_min > ts_max) - { - ResetParsers(); - m_WaitIFrame = true; - return false; - } - else if (ts_min == ts_max) - { - pos_limit = pos_min; - } - else - pos_limit = pos_max; - - no_change = 0; - ts = time; - last_ts = 0; - while (pos_min < pos_limit) - { - if (no_change==0) - { - // interpolate position - pos = cTSStream::Rescale(time - ts_min, pos_max - pos_min, ts_max - ts_min) - + pos_min - (pos_max - pos_limit); - } - else if (no_change==1) - { - // bisection, if interpolation failed to change min or max pos last time - pos = (pos_min + pos_limit) >> 1; - } - else - { - // linear search if bisection failed - pos = pos_min; - } - - // clamp calculated pos into boundaries - if( pos <= pos_min) - pos = pos_min + 1; - else if (pos > pos_limit) - pos = pos_limit; - start_pos = pos; - - // get time stamp at pos - if (!GetTimeAtPos(&pos, &ts)) - { - ResetParsers(); - m_WaitIFrame = true; - return false; - } - pos = m_VideoBuffer->GetPosCur(); - - // determine method for next calculation of pos - if ((last_ts == ts) || (pos >= pos_max)) - no_change++; - else - no_change=0; - -// INFOLOG("--- pos: %ld, \t time: %ld, diff time: %ld", pos, ts, time-ts); - - // 0.4 sec is close enough - if (abs(time - ts) <= 36000) - { - break; - } - // target is to the left - else if (time <= ts) - { - pos_limit = start_pos - 1; - pos_max = pos; - ts_max = ts; - } - // target is to the right - if (time >= ts) - { - pos_min = pos; - ts_min = ts; - } - last_ts = ts; - } - -// INFOLOG("----pos found: %ld", pos); -// INFOLOG("----time at pos: %ld, diff time: %ld", ts, cTSStream::Rescale(timecur-ts, DVD_TIME_BASE, 90000)); - - m_VideoBuffer->SetPos(pos); - - ResetParsers(); - m_WaitIFrame = true; - m_MuxPacketSerial++; - return true; -} - -void cVNSIDemuxer::BufferStatus(bool ×hift, uint32_t &start, uint32_t &end) -{ - timeshift = m_VideoBuffer->HasBuffer(); - - if (timeshift) - { - if (!m_wrapTime) - { - start = m_refTime; - } - else - { - start = m_endTime - (m_wrapTime - m_refTime); - } - end = m_endTime; - } - else - { - start = 0; - end = 0; - } -} - -cTSStream *cVNSIDemuxer::GetFirstStream() -{ - m_StreamsIterator = m_Streams.begin(); - if (m_StreamsIterator != m_Streams.end()) - return *m_StreamsIterator; - else - return NULL; -} - -cTSStream *cVNSIDemuxer::GetNextStream() -{ - ++m_StreamsIterator; - if (m_StreamsIterator != m_Streams.end()) - return *m_StreamsIterator; - else - return NULL; -} - -cTSStream *cVNSIDemuxer::FindStream(int Pid) -{ - for (std::list::iterator it = m_Streams.begin(); it != m_Streams.end(); ++it) - { - if (Pid == (*it)->GetPID()) - return *it; - } - return NULL; -} - -void cVNSIDemuxer::ResetParsers() -{ - for (std::list::iterator it = m_Streams.begin(); it != m_Streams.end(); ++it) - { - (*it)->ResetParser(); - } -} - -void cVNSIDemuxer::AddStreamInfo(sStreamInfo &stream) -{ - m_StreamInfos.push_back(stream); -} - -bool cVNSIDemuxer::EnsureParsers() -{ - bool streamChange = false; - - std::list::iterator it = m_Streams.begin(); - while (it != m_Streams.end()) - { - std::list::iterator its; - for (its = m_StreamInfos.begin(); its != m_StreamInfos.end(); ++its) - { - if ((its->pID == (*it)->GetPID()) && (its->type == (*it)->Type())) - { - break; - } - } - if (its == m_StreamInfos.end()) - { - INFOLOG("Deleting stream for pid=%i and type=%i", (*it)->GetPID(), (*it)->Type()); - m_Streams.erase(it); - it = m_Streams.begin(); - streamChange = true; - } - else - ++it; - } - - for (std::list::iterator it = m_StreamInfos.begin(); it != m_StreamInfos.end(); ++it) - { - cTSStream *stream = FindStream(it->pID); - if (stream) - { - // TODO: check for change in lang - stream->SetLanguage(it->language); - continue; - } - - if (it->type == stH264) - { - stream = new cTSStream(stH264, it->pID, &m_PtsWrap); - } - else if (it->type == stMPEG2VIDEO) - { - stream = new cTSStream(stMPEG2VIDEO, it->pID, &m_PtsWrap); - } - else if (it->type == stMPEG2AUDIO) - { - stream = new cTSStream(stMPEG2AUDIO, it->pID, &m_PtsWrap); - stream->SetLanguage(it->language); - } - else if (it->type == stAACADTS) - { - stream = new cTSStream(stAACADTS, it->pID, &m_PtsWrap); - stream->SetLanguage(it->language); - } - else if (it->type == stAACLATM) - { - stream = new cTSStream(stAACLATM, it->pID, &m_PtsWrap); - stream->SetLanguage(it->language); - } - else if (it->type == stAC3) - { - stream = new cTSStream(stAC3, it->pID, &m_PtsWrap); - stream->SetLanguage(it->language); - } - else if (it->type == stEAC3) - { - stream = new cTSStream(stEAC3, it->pID, &m_PtsWrap); - stream->SetLanguage(it->language); - } - else if (it->type == stDVBSUB) - { - stream = new cTSStream(stDVBSUB, it->pID, &m_PtsWrap); - stream->SetLanguage(it->language); -#if APIVERSNUM >= 10709 - stream->SetSubtitlingDescriptor(it->subtitlingType, it->compositionPageId, it->ancillaryPageId); -#endif - } - else if (it->type == stTELETEXT) - { - stream = new cTSStream(stTELETEXT, it->pID, &m_PtsWrap); - } - else - continue; - - m_Streams.push_back(stream); - INFOLOG("Created stream for pid=%i and type=%i", stream->GetPID(), stream->Type()); - streamChange = true; - } - m_StreamInfos.clear(); - - return streamChange; -} - -void cVNSIDemuxer::SetChannelStreams(const cChannel *channel) -{ - sStreamInfo newStream; - int index = 0; - if (channel->Vpid()) - { - newStream.pID = channel->Vpid(); -#if APIVERSNUM >= 10701 - if (channel->Vtype() == 0x1B) - newStream.type = stH264; - else -#endif - newStream.type = stMPEG2VIDEO; - - AddStreamInfo(newStream); - } - - const int *DPids = channel->Dpids(); - index = 0; - for ( ; *DPids; DPids++) - { - if (!FindStream(*DPids)) - { - newStream.pID = *DPids; - newStream.type = stAC3; -#if APIVERSNUM >= 10715 - if (channel->Dtype(index) == SI::EnhancedAC3DescriptorTag) - newStream.type = stEAC3; -#endif - newStream.SetLanguage(channel->Dlang(index)); - AddStreamInfo(newStream); - } - index++; - } - - const int *APids = channel->Apids(); - index = 0; - for ( ; *APids; APids++) - { - if (!FindStream(*APids)) - { - newStream.pID = *APids; - newStream.type = stMPEG2AUDIO; -#if APIVERSNUM >= 10715 - if (channel->Atype(index) == 0x0F) - newStream.type = stAACADTS; - else if (channel->Atype(index) == 0x11) - newStream.type = stAACLATM; -#endif - newStream.SetLanguage(channel->Alang(index)); - AddStreamInfo(newStream); - } - index++; - } - - const int *SPids = channel->Spids(); - if (SPids) - { - index = 0; - for ( ; *SPids; SPids++) - { - if (!FindStream(*SPids)) - { - newStream.pID = *SPids; - newStream.type = stDVBSUB; - newStream.SetLanguage(channel->Slang(index)); -#if APIVERSNUM >= 10709 - newStream.subtitlingType = channel->SubtitlingType(index); - newStream.compositionPageId = channel->CompositionPageId(index); - newStream.ancillaryPageId = channel->AncillaryPageId(index); -#endif - AddStreamInfo(newStream); - } - index++; - } - } - - if (channel->Tpid()) - { - newStream.pID = channel->Tpid(); - newStream.type = stTELETEXT; - AddStreamInfo(newStream); - } -} - -void cVNSIDemuxer::SetChannelPids(cChannel *channel, cPatPmtParser *patPmtParser) -{ - int Apids[MAXAPIDS + 1] = { 0 }; - int Atypes[MAXAPIDS + 1] = { 0 }; - int Dpids[MAXDPIDS + 1] = { 0 }; - int Dtypes[MAXDPIDS + 1] = { 0 }; - int Spids[MAXSPIDS + 1] = { 0 }; - char ALangs[MAXAPIDS][MAXLANGCODE2] = { "" }; - char DLangs[MAXDPIDS][MAXLANGCODE2] = { "" }; - char SLangs[MAXSPIDS][MAXLANGCODE2] = { "" }; - int index = 0; - - const int *aPids = patPmtParser->Apids(); - index = 0; - for ( ; *aPids; aPids++) - { - Apids[index] = patPmtParser->Apid(index); - Atypes[index] = patPmtParser->Atype(index); - strn0cpy(ALangs[index], patPmtParser->Alang(index), MAXLANGCODE2); - index++; - } - - const int *dPids = patPmtParser->Dpids(); - index = 0; - for ( ; *dPids; dPids++) - { - Dpids[index] = patPmtParser->Dpid(index); - Dtypes[index] = patPmtParser->Dtype(index); - strn0cpy(DLangs[index], patPmtParser->Dlang(index), MAXLANGCODE2); - index++; - } - - const int *sPids = patPmtParser->Spids(); - index = 0; - for ( ; *sPids; sPids++) - { - Spids[index] = patPmtParser->Spid(index); - strn0cpy(SLangs[index], patPmtParser->Slang(index), MAXLANGCODE2); - index++; - } - - int Vpid = patPmtParser->Vpid(); - int Ppid = patPmtParser->Ppid(); - int VType = patPmtParser->Vtype(); - int Tpid = m_CurrentChannel.Tpid(); - channel->SetPids(Vpid, Ppid, VType, - Apids, Atypes, ALangs, - Dpids, Dtypes, DLangs, - Spids, SLangs, - Tpid); -} - -bool cVNSIDemuxer::GetTimeAtPos(off_t *pos, int64_t *time) -{ - uint8_t *buf; - int len; - cTSStream *stream; - int ts_pid; - - m_VideoBuffer->SetPos(*pos); - ResetParsers(); - while (len = m_VideoBuffer->Read(&buf, TS_SIZE, m_endTime, m_wrapTime) == TS_SIZE) - { - ts_pid = TsPid(buf); - if (stream = FindStream(ts_pid)) - { - // only consider video or audio streams - if ((stream->Content() == scVIDEO || stream->Content() == scAUDIO) && - stream->ReadTime(buf, time)) - { - return true; - } - } - } - return false; -} - -uint16_t cVNSIDemuxer::GetError() -{ - uint16_t ret = m_Error; - m_Error = ERROR_DEMUX_NODATA; - return ret; -} - diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/demuxer.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/demuxer.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/demuxer.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/demuxer.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,89 +0,0 @@ -/* - * Copyright (C) 2005-2012 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - */ - -#pragma once - -#include -#include "parser.h" - -struct sStreamPacket; -class cTSStream; -class cChannel; -class cPatPmtParser; -class cVideoBuffer; - -struct sStreamInfo -{ - int pID; - eStreamType type; - eStreamContent content; - char language[MAXLANGCODE2]; - int subtitlingType; - int compositionPageId; - int ancillaryPageId; - void SetLanguage(const char* lang) - { - language[0] = lang[0]; - language[1] = lang[1]; - language[2] = lang[2]; - language[3] = 0; - } -}; - -class cVNSIDemuxer -{ -public: - cVNSIDemuxer(); - virtual ~cVNSIDemuxer(); - int Read(sStreamPacket *packet); - cTSStream *GetFirstStream(); - cTSStream *GetNextStream(); - void Open(const cChannel &channel, cVideoBuffer *videoBuffer); - void Close(); - bool SeekTime(int64_t time); - uint32_t GetSerial() { return m_MuxPacketSerial; } - void SetSerial(uint32_t serial) { m_MuxPacketSerial = serial; } - void BufferStatus(bool ×hift, uint32_t &start, uint32_t &end); - uint16_t GetError(); - -protected: - bool EnsureParsers(); - void ResetParsers(); - void SetChannelStreams(const cChannel *channel); - void SetChannelPids(cChannel *channel, cPatPmtParser *patPmtParser); - cTSStream *FindStream(int Pid); - void AddStreamInfo(sStreamInfo &stream); - bool GetTimeAtPos(off_t *pos, int64_t *time); - std::list m_Streams; - std::list::iterator m_StreamsIterator; - std::list m_StreamInfos; - cChannel m_CurrentChannel; - cPatPmtParser m_PatPmtParser; - int m_OldPmtVersion; - bool m_WaitIFrame; - int64_t m_FirstFramePTS; - cVideoBuffer *m_VideoBuffer; - cMutex m_Mutex; - uint32_t m_MuxPacketSerial; - sPtsWrap m_PtsWrap; - uint16_t m_Error; - bool m_SetRefTime; - time_t m_refTime, m_endTime, m_wrapTime; -}; diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/hash.c xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/hash.c --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/hash.c 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/hash.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,111 +0,0 @@ -/* - * vdr-plugin-vnsi - XBMC server plugin for VDR - * - * Copyright (C) 1986 Gary S. Brown (CRC32 code) - * Copyright (C) 2011 Alexander Pipelka - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ - -#include -#include - -#include "hash.h" - -static uint32_t crc32_tab[] = { - 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, - 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, - 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, - 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, - 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, - 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, - 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, - 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, - 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, - 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, - 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106, - 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, - 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, - 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, - 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, - 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, - 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, - 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, - 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, - 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, - 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, - 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, - 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, - 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, - 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, - 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, - 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, - 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, - 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, - 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, - 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, - 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, - 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, - 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, - 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, - 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, - 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, - 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, - 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, - 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, - 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, - 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, - 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d -}; - -uint32_t crc32(const unsigned char *buf, size_t size) -{ - uint32_t crc = 0xFFFFFFFF; - const uint8_t *p = (uint8_t*)buf; - - while (size--) - crc = crc32_tab[(crc ^ *p++) & 0xFF] ^ (crc >> 8); - - return (crc ^ ~0U) & 0x7FFFFFFF; // channeluid is signed -} - -uint32_t CreateStringHash(const cString& string) { - const char* p = string; - int len = strlen(p); - - return crc32((const unsigned char*)p, len); -} - -uint32_t CreateChannelUID(const cChannel* channel) { - cString channelid = channel->GetChannelID().ToString(); - return CreateStringHash(channelid); -} - -const cChannel* FindChannelByUID(uint32_t channelUID) { - cChannel* result = NULL; - - // maybe we need to use a lookup table - for (cChannel *channel = Channels.First(); channel; channel = Channels.Next(channel)) { - cString channelid = channel->GetChannelID().ToString(); - if(channelUID == CreateStringHash(channelid)) { - result = channel; - break; - } - } - - return result; -} diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/hash.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/hash.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/hash.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/hash.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ -/* - * vdr-plugin-vnsi - XBMC server plugin for VDR - * - * Copyright (C) 1986 Gary S. Brown (CRC32 code) - * Copyright (C) 2011 Alexander Pipelka - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ - -#ifndef VNSI_HASH_H -#define VNSI_HASH_H - -#include -#include - -class cChannel; - -uint32_t CreateChannelUID(const cChannel* channel); -const cChannel* FindChannelByUID(uint32_t channelUID); - -uint32_t CreateStringHash(const cString& string); - -#endif // VNSI_HASH_H diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/HISTORY xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/HISTORY --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/HISTORY 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/HISTORY 1970-01-01 00:00:00.000000000 +0000 @@ -1,28 +0,0 @@ -VDR Plugin 'vnsiserver' Revision History ----------------------------------------- - -2010-03-23: Version 0.0.1 - -- Initial revision. - -2013-02-03: Version 0.9.1 - -- most parts of the plugin rewritten -- revised parsers -- proper handling of PMT changes -- suffix plugin with version of protocol: vnsiserver3 -- this version is compatible with XBMC 12.0 - -2013-12-04: Version 0.9.3 - -- add support for EDL (marks) -- add channel filter -- send buffer times for timeshift -- bump protocol to XBMC to 5 -- suffix plugin with version of protocol: vnsiserver5 -- this version is compatible with XBMC 13 - -2014-01-08: Version 0.9.4 - -- update length of recorings in progress - while playing \ No newline at end of file diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/Makefile xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/Makefile --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/Makefile 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,166 +0,0 @@ -# -# Makefile for a Video Disk Recorder plugin -# -# $Id$ - -# The official name of this plugin. -# This name will be used in the '-P...' option of VDR to load the plugin. -# By default the main source file also carries this name. - -PLUGIN = vnsiserver5 - -### The version number of this plugin (taken from the main source file): - -VERSION = $(shell grep 'static const char \*VERSION *=' vnsi.h | awk '{ print $$6 }' | sed -e 's/[";]//g') - -### The directory environment: - -# Use package data if installed...otherwise assume we're under the VDR source directory: -PKGCFG = $(if $(VDRDIR),$(shell pkg-config --variable=$(1) $(VDRDIR)/vdr.pc),$(shell pkg-config --variable=$(1) vdr || pkg-config --variable=$(1) ../../../vdr.pc)) -LIBDIR ?= $(call PKGCFG,libdir) -LOCDIR = $(call PKGCFG,locdir) -PLGCFG = $(call PKGCFG,plgcfg) -# -TMPDIR ?= /tmp - -### The compiler options: - -export CFLAGS = $(call PKGCFG,cflags) -export CXXFLAGS = $(call PKGCFG,cxxflags) - -### The version number of VDR's plugin API: - -APIVERSION = $(call PKGCFG,apiversion) -ifeq ($(strip $(APIVERSION)),) -APIVERSION = $(shell grep 'define APIVERSION ' $(VDRDIR)/config.h | awk '{ print $$3 }' | sed -e 's/"//g') -NOCONFIG := 1 -endif - -# backwards compatibility version < 1.7.34 -API1733 := $(shell if [ "$(APIVERSION)" \< "1.7.34" ]; then echo true; fi; ) - -ifdef API1733 - -VDRSRC = $(VDRDIR) -VDRSRC ?= ../../.. -ifeq ($(strip $(LIBDIR)),) -LIBDIR = $(VDRSRC)/PLUGINS/lib -endif - -ifndef NOCONFIG -CXXFLAGS = $(call PKGCFG,cflags) -CXXFLAGS += -fPIC -else --include $(VDRSRC)/Make.global --include $(VDRSRC)/Make.config -endif - -export CXXFLAGS -else - -### Allow user defined options to overwrite defaults: - --include $(PLGCFG) -endif - -### The name of the distribution archive: - -ARCHIVE = $(PLUGIN)-$(VERSION) -PACKAGE = vdr-$(ARCHIVE) - -### The name of the shared object file: - -SOFILE = libvdr-$(PLUGIN).so - -### Includes and Defines (add further entries here): - -ifdef API1733 -INCLUDES += -I$(VDRSRC)/include -endif - -DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"' -DVNSI_SERVER_VERSION='"$(VERSION)"' - -ifeq ($(DEBUG),1) -DEFINES += -DDEBUG -endif - -### The object files (add further files here): - -OBJS = vnsi.o bitstream.o vnsiclient.o config.o cxsocket.o parser.o parser_AAC.o \ - parser_AC3.o parser_DTS.o parser_h264.o parser_MPEGAudio.o parser_MPEGVideo.o \ - parser_Subtitle.o parser_Teletext.o streamer.o recplayer.o requestpacket.o responsepacket.o \ - vnsiserver.o hash.o recordingscache.o setup.o vnsiosd.o demuxer.o videobuffer.o \ - videoinput.o channelfilter.o status.o - -### The main target: - -ifdef API1733 -all: install-lib -else -all: $(SOFILE) -endif -# - -### Implicit rules: - -%.o: %.c - $(CXX) $(CXXFLAGS) -c $(DEFINES) $(INCLUDES) -o $@ $< - -### Dependencies: - -MAKEDEP = $(CXX) -MM -MG -DEPFILE = .dependencies -$(DEPFILE): Makefile - @$(MAKEDEP) $(CXXFLAGS) $(DEFINES) $(INCLUDES) $(OBJS:%.o=%.c) > $@ - --include $(DEPFILE) - -### Internationalization (I18N): - -PODIR = po -I18Npo = $(wildcard $(PODIR)/*.po) -I18Nmo = $(addsuffix .mo, $(foreach file, $(I18Npo), $(basename $(file)))) -I18Nmsgs = $(addprefix $(DESTDIR)$(LOCDIR)/, $(addsuffix /LC_MESSAGES/vdr-$(PLUGIN).mo, $(notdir $(foreach file, $(I18Npo), $(basename $(file)))))) -I18Npot = $(PODIR)/$(PLUGIN).pot - -%.mo: %.po - msgfmt -c -o $@ $< - -$(I18Npot): $(wildcard *.c) - xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --package-name=vdr-$(PLUGIN) --package-version=$(VERSION) --msgid-bugs-address='' -o $@ `ls $^` - -%.po: $(I18Npot) - msgmerge -U --no-wrap --no-location --backup=none -q -N $@ $< - @touch $@ - -$(I18Nmsgs): $(DESTDIR)$(LOCDIR)/%/LC_MESSAGES/vdr-$(PLUGIN).mo: $(PODIR)/%.mo - install -D -m644 $< $@ - -.PHONY: i18n -i18n: $(I18Nmo) $(I18Npot) - -install-i18n: $(I18Nmsgs) - -### Targets: - -$(SOFILE): $(OBJS) - $(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(OBJS) -o $@ - -install-lib: $(SOFILE) - install -D $^ $(DESTDIR)$(LIBDIR)/$^.$(APIVERSION) - -install: install-lib install-i18n - -dist: $(I18Npo) clean - @-rm -rf $(TMPDIR)/$(ARCHIVE) - @mkdir $(TMPDIR)/$(ARCHIVE) - @cp -a * $(TMPDIR)/$(ARCHIVE) - @tar czf $(PACKAGE).tgz -C $(TMPDIR) $(ARCHIVE) - @-rm -rf $(TMPDIR)/$(ARCHIVE) - @echo Distribution package created as $(PACKAGE).tgz - -clean: - @-rm -f $(PODIR)/*.mo $(PODIR)/*.pot - @-rm -f $(OBJS) $(DEPFILE) *.so *.tgz core* *~ - -compile: $(SOFILE) diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_AAC.c xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_AAC.c --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_AAC.c 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_AAC.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,276 +0,0 @@ -/* - * Copyright (C) 2005-2012 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - */ - -#include -#include -#include "config.h" - -#include "parser_AAC.h" - -static int aac_sample_rates[16] = -{ - 96000, 88200, 64000, 48000, 44100, 32000, - 24000, 22050, 16000, 12000, 11025, 8000, 7350 -}; - - -cParserAAC::cParserAAC(int pID, cTSStream *stream, sPtsWrap *ptsWrap, bool observePtsWraps) - : cParser(pID, stream, ptsWrap, observePtsWraps) -{ - m_Configured = false; - m_FrameLengthType = 0; - m_PTS = 0; - m_DTS = 0; - m_FrameSize = 0; - m_SampleRate = 0; - m_Channels = 0; - m_BitRate = 0; - m_PesBufferInitialSize = 1920*2; -} - -cParserAAC::~cParserAAC() -{ - -} - -void cParserAAC::Parse(sStreamPacket *pkt) -{ - int p = m_PesParserPtr; - int l; - while ((l = m_PesBufferPtr - p) > 8) - { - if (FindHeaders(m_PesBuffer + p, l) < 0) - break; - p++; - } - m_PesParserPtr = p; - - if (m_FoundFrame && l >= m_FrameSize) - { - bool streamChange = m_Stream->SetAudioInformation(m_Channels, m_SampleRate, m_BitRate, 0, 0); - pkt->id = m_pID; - pkt->data = &m_PesBuffer[p]; - pkt->size = m_FrameSize; - pkt->duration = 1024 * 90000 / m_SampleRate; - pkt->dts = m_DTS; - pkt->pts = m_PTS; - pkt->streamChange = streamChange; - - m_PesNextFramePtr = p + m_FrameSize; - m_PesParserPtr = 0; - m_FoundFrame = false; - } -} - -int cParserAAC::FindHeaders(uint8_t *buf, int buf_size) -{ - if (m_FoundFrame) - return -1; - - uint8_t *buf_ptr = buf; - - if (m_Stream->Type() == stAACLATM) - { - if ((buf_ptr[0] == 0x56 && (buf_ptr[1] & 0xE0) == 0xE0)) - { - // TODO - if (buf_size < 16) - return -1; - - cBitstream bs(buf_ptr, 16 * 8); - bs.skipBits(11); - m_FrameSize = bs.readBits(13) + 3; - if (!ParseLATMAudioMuxElement(&bs)) - return 0; - - m_FoundFrame = true; - m_DTS = m_curPTS; - m_PTS = m_curPTS; - m_curPTS += 90000 * 1024 / m_SampleRate; - return -1; - } - else if (buf_ptr[0] == 0xFF && (buf_ptr[1] & 0xF0) == 0xF0) - { - m_Stream->SetType(stAACADTS); - INFOLOG("cParserAAC::FindHeaders - detected ADTS muxing mode"); - return -1; - } - } - else if (m_Stream->Type() == stAACADTS) - { - if(buf_ptr[0] == 0xFF && (buf_ptr[1] & 0xF0) == 0xF0) - { - // need at least 7 bytes for header - if (buf_size < 7) - return -1; - - cBitstream bs(buf_ptr, 9 * 8); - bs.skipBits(15); - - // check if CRC is present, means header is 9 byte long - int noCrc = bs.readBits(1); - if (!noCrc && (buf_size < 9)) - return -1; - - bs.skipBits(2); // profile - int SampleRateIndex = bs.readBits(4); - bs.skipBits(1); // private - m_Channels = bs.readBits(3); - bs.skipBits(4); - - m_FrameSize = bs.readBits(13); - m_SampleRate = aac_sample_rates[SampleRateIndex & 0x0E]; - - m_FoundFrame = true; - m_DTS = m_curPTS; - m_PTS = m_curPTS; - m_curPTS += 90000 * 1024 / m_SampleRate; - return -1; - } - else if (buf_ptr[0] == 0x56 && (buf_ptr[1] & 0xE0) == 0xE0) - { - m_Stream->SetType(stAACLATM); - INFOLOG("cParserAAC::FindHeaders - detected LATM muxing mode"); - return -1; - } - } - return 0; -} - -bool cParserAAC::ParseLATMAudioMuxElement(cBitstream *bs) -{ - if (!bs->readBits1()) - ReadStreamMuxConfig(bs); - - if (!m_Configured) - return false; - - return true; -} - -void cParserAAC::ReadStreamMuxConfig(cBitstream *bs) -{ - int AudioMuxVersion = bs->readBits(1); - m_AudioMuxVersion_A = 0; - if (AudioMuxVersion) // audioMuxVersion - m_AudioMuxVersion_A = bs->readBits(1); - - if(m_AudioMuxVersion_A) - return; - - if (AudioMuxVersion) - LATMGetValue(bs); // taraFullness - - bs->skipBits(1); // allStreamSameTimeFraming = 1 - bs->skipBits(6); // numSubFrames = 0 - bs->skipBits(4); // numPrograms = 0 - - // for each program (which there is only on in DVB) - bs->skipBits(3); // numLayer = 0 - - // for each layer (which there is only on in DVB) - if (!AudioMuxVersion) - ReadAudioSpecificConfig(bs); - else - return; - - // these are not needed... perhaps - m_FrameLengthType = bs->readBits(3); - switch (m_FrameLengthType) - { - case 0: - bs->readBits(8); - break; - case 1: - bs->readBits(9); - break; - case 3: - case 4: - case 5: - bs->readBits(6); // celp_table_index - break; - case 6: - case 7: - bs->readBits(1); // hvxc_table_index - break; - } - - if (bs->readBits(1)) - { // other data? - if (AudioMuxVersion == 1) - { - LATMGetValue(bs); // other_data_bits - } - else - { - int esc; - do - { - esc = bs->readBits(1); - bs->skipBits(8); - } while (esc); - } - } - - if (bs->readBits(1)) // crc present? - bs->skipBits(8); // config_crc - m_Configured = true; -} - -void cParserAAC::ReadAudioSpecificConfig(cBitstream *bs) -{ - int aot = bs->readBits(5); - if (aot == 31) - aot = 32 + bs->readBits(6); - - int SampleRateIndex = bs->readBits(4); - - if (SampleRateIndex == 0xf) - m_SampleRate = bs->readBits(24); - else - m_SampleRate = aac_sample_rates[SampleRateIndex & 0xf]; - - m_Channels = bs->readBits(4); - - if (aot == 5) { // AOT_SBR - if (bs->readBits(4) == 0xf) { // extensionSamplingFrequencyIndex - bs->skipBits(24); - } - aot = bs->readBits(5); // this is the main object type (i.e. non-extended) - if (aot == 31) - aot = 32 + bs->readBits(6); - } - - if(aot != 2) - return; - - bs->skipBits(1); //framelen_flag - if (bs->readBits1()) // depends_on_coder - bs->skipBits(14); - - if (bs->readBits(1)) // ext_flag - bs->skipBits(1); // ext3_flag -} - -void cParserAAC::Reset() -{ - cParser::Reset(); - m_Configured = false; -} diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_AAC.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_AAC.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_AAC.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_AAC.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,57 +0,0 @@ -/* - * Copyright (C) 2005-2012 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - */ - -#ifndef VNSI_DEMUXER_AAC_H -#define VNSI_DEMUXER_AAC_H - -#include "parser.h" -#include "bitstream.h" - -// --- cParserAAC ------------------------------------------------- - -class cParserAAC : public cParser -{ -private: - int m_SampleRate; - int m_Channels; - int m_BitRate; - int m_FrameSize; - - int64_t m_PTS; /* pts of the current frame */ - int64_t m_DTS; /* dts of the current frame */ - - bool m_Configured; - int m_AudioMuxVersion_A; - int m_FrameLengthType; - - int FindHeaders(uint8_t *buf, int buf_size); - bool ParseLATMAudioMuxElement(cBitstream *bs); - void ReadStreamMuxConfig(cBitstream *bs); - void ReadAudioSpecificConfig(cBitstream *bs); - uint32_t LATMGetValue(cBitstream *bs) { return bs->readBits(bs->readBits(2) * 8); } - -public: - cParserAAC(int pID, cTSStream *stream, sPtsWrap *ptsWrap, bool observePtsWraps); - virtual ~cParserAAC(); - virtual void Parse(sStreamPacket *pkt); - virtual void Reset(); -}; - -#endif // VNSI_DEMUXER_AAC_H diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_AC3.c xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_AC3.c --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_AC3.c 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_AC3.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,250 +0,0 @@ -/* - * Copyright (C) 2005-2012 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - */ - -#include -#include -#include "config.h" - -#include "parser_AC3.h" -#include "bitstream.h" - -#define AC3_HEADER_SIZE 7 - -/** Channel mode (audio coding mode) */ -typedef enum -{ - AC3_CHMODE_DUALMONO = 0, - AC3_CHMODE_MONO, - AC3_CHMODE_STEREO, - AC3_CHMODE_3F, - AC3_CHMODE_2F1R, - AC3_CHMODE_3F1R, - AC3_CHMODE_2F2R, - AC3_CHMODE_3F2R -} AC3ChannelMode; - -/* possible frequencies */ -const uint16_t AC3SampleRateTable[3] = { 48000, 44100, 32000 }; - -/* possible bitrates */ -const uint16_t AC3BitrateTable[19] = { - 32, 40, 48, 56, 64, 80, 96, 112, 128, - 160, 192, 224, 256, 320, 384, 448, 512, 576, 640 -}; - -const uint8_t AC3ChannelsTable[8] = { - 2, 1, 2, 3, 3, 4, 4, 5 -}; - -const uint16_t AC3FrameSizeTable[38][3] = { - { 64, 69, 96 }, - { 64, 70, 96 }, - { 80, 87, 120 }, - { 80, 88, 120 }, - { 96, 104, 144 }, - { 96, 105, 144 }, - { 112, 121, 168 }, - { 112, 122, 168 }, - { 128, 139, 192 }, - { 128, 140, 192 }, - { 160, 174, 240 }, - { 160, 175, 240 }, - { 192, 208, 288 }, - { 192, 209, 288 }, - { 224, 243, 336 }, - { 224, 244, 336 }, - { 256, 278, 384 }, - { 256, 279, 384 }, - { 320, 348, 480 }, - { 320, 349, 480 }, - { 384, 417, 576 }, - { 384, 418, 576 }, - { 448, 487, 672 }, - { 448, 488, 672 }, - { 512, 557, 768 }, - { 512, 558, 768 }, - { 640, 696, 960 }, - { 640, 697, 960 }, - { 768, 835, 1152 }, - { 768, 836, 1152 }, - { 896, 975, 1344 }, - { 896, 976, 1344 }, - { 1024, 1114, 1536 }, - { 1024, 1115, 1536 }, - { 1152, 1253, 1728 }, - { 1152, 1254, 1728 }, - { 1280, 1393, 1920 }, - { 1280, 1394, 1920 }, -}; - -const uint8_t EAC3Blocks[4] = { - 1, 2, 3, 6 -}; - -typedef enum { - EAC3_FRAME_TYPE_INDEPENDENT = 0, - EAC3_FRAME_TYPE_DEPENDENT, - EAC3_FRAME_TYPE_AC3_CONVERT, - EAC3_FRAME_TYPE_RESERVED -} EAC3FrameType; - -cParserAC3::cParserAC3(int pID, cTSStream *stream, sPtsWrap *ptsWrap, bool observePtsWraps) - : cParser(pID, stream, ptsWrap, observePtsWraps) -{ - m_PTS = 0; - m_DTS = 0; - m_FrameSize = 0; - m_SampleRate = 0; - m_Channels = 0; - m_BitRate = 0; - m_PesBufferInitialSize = 1920*2; -} - -cParserAC3::~cParserAC3() -{ -} - -void cParserAC3::Parse(sStreamPacket *pkt) -{ - int p = m_PesParserPtr; - int l; - while ((l = m_PesBufferPtr - p) > 8) - { - if (FindHeaders(m_PesBuffer + p, l) < 0) - break; - p++; - } - m_PesParserPtr = p; - - if (m_FoundFrame && l >= m_FrameSize) - { - bool streamChange = m_Stream->SetAudioInformation(m_Channels, m_SampleRate, m_BitRate, 0, 0); - pkt->id = m_pID; - pkt->data = &m_PesBuffer[p]; - pkt->size = m_FrameSize; - pkt->duration = 90000 * 1536 / m_SampleRate; - pkt->dts = m_DTS; - pkt->pts = m_PTS; - pkt->streamChange = streamChange; - - m_PesNextFramePtr = p + m_FrameSize; - m_PesParserPtr = 0; - m_FoundFrame = false; - } -} - -int cParserAC3::FindHeaders(uint8_t *buf, int buf_size) -{ - if (m_FoundFrame) - return -1; - - if (buf_size < 9) - return -1; - - uint8_t *buf_ptr = buf; - - if ((buf_ptr[0] == 0x0b && buf_ptr[1] == 0x77)) - { - cBitstream bs(buf_ptr + 2, AC3_HEADER_SIZE * 8); - - // read ahead to bsid to distinguish between AC-3 and E-AC-3 - int bsid = bs.showBits(29) & 0x1F; - if (bsid > 16) - return 0; - - if (bsid <= 10) - { - // Normal AC-3 - bs.skipBits(16); - int fscod = bs.readBits(2); - int frmsizecod = bs.readBits(6); - bs.skipBits(5); // skip bsid, already got it - bs.skipBits(3); // skip bitstream mode - int acmod = bs.readBits(3); - - if (fscod == 3 || frmsizecod > 37) - return 0; - - if (acmod == AC3_CHMODE_STEREO) - { - bs.skipBits(2); // skip dsurmod - } - else - { - if ((acmod & 1) && acmod != AC3_CHMODE_MONO) - bs.skipBits(2); - if (acmod & 4) - bs.skipBits(2); - } - int lfeon = bs.readBits(1); - - int srShift = max(bsid, 8) - 8; - m_SampleRate = AC3SampleRateTable[fscod] >> srShift; - m_BitRate = (AC3BitrateTable[frmsizecod>>1] * 1000) >> srShift; - m_Channels = AC3ChannelsTable[acmod] + lfeon; - m_FrameSize = AC3FrameSizeTable[frmsizecod][fscod] * 2; - } - else - { - // Enhanced AC-3 - int frametype = bs.readBits(2); - if (frametype == EAC3_FRAME_TYPE_RESERVED) - return 0; - - bs.readBits(3); // int substreamid - - m_FrameSize = (bs.readBits(11) + 1) << 1; - if (m_FrameSize < AC3_HEADER_SIZE) - return 0; - - int numBlocks = 6; - int sr_code = bs.readBits(2); - if (sr_code == 3) - { - int sr_code2 = bs.readBits(2); - if (sr_code2 == 3) - return 0; - m_SampleRate = AC3SampleRateTable[sr_code2] / 2; - } - else - { - numBlocks = EAC3Blocks[bs.readBits(2)]; - m_SampleRate = AC3SampleRateTable[sr_code]; - } - - int channelMode = bs.readBits(3); - int lfeon = bs.readBits(1); - - m_BitRate = (uint32_t)(8.0 * m_FrameSize * m_SampleRate / (numBlocks * 256.0)); - m_Channels = AC3ChannelsTable[channelMode] + lfeon; - } - m_FoundFrame = true; - m_DTS = m_curPTS; - m_PTS = m_curPTS; - m_curPTS += 90000 * 1536 / m_SampleRate; - return -1; - } - return 0; -} - -void cParserAC3::Reset() -{ - cParser::Reset(); -} diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_AC3.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_AC3.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_AC3.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_AC3.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,50 +0,0 @@ -/* - * Copyright (C) 2005-2012 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - */ - -#ifndef VNSI_DEMUXER_AC3_H -#define VNSI_DEMUXER_AC3_H - -#include "parser.h" - -// --- cParserAC3 ------------------------------------------------- - -class cParserAC3 : public cParser -{ -private: - int m_SampleRate; - int m_Channels; - int m_BitRate; - int m_FrameSize; - - int64_t m_PTS; /* pts of the current frame */ - int64_t m_DTS; /* dts of the current frame */ - - int FindHeaders(uint8_t *buf, int buf_size); - -public: - cParserAC3(int pID, cTSStream *stream, sPtsWrap *ptsWrap, bool observePtsWraps); - virtual ~cParserAC3(); - - virtual void Parse(sStreamPacket *pkt); - virtual void Reset(); -}; - - -#endif // VNSI_DEMUXER_AC3_H diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser.c xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser.c --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser.c 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,715 +0,0 @@ -/* - * Copyright (C) 2005-2012 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - */ - -#include -#include -#include -#include -#include "config.h" -#include "parser.h" -#include "parser_AAC.h" -#include "parser_AC3.h" -#include "parser_DTS.h" -#include "parser_h264.h" -#include "parser_MPEGAudio.h" -#include "parser_MPEGVideo.h" -#include "parser_Subtitle.h" -#include "parser_Teletext.h" - -#define PTS_MASK 0x1ffffffffLL -//#define PTS_MASK 0x7ffffLL - -#ifndef INT64_MIN -#define INT64_MIN (-0x7fffffffffffffffLL-1) -#endif - -// --- cParser ------------------------------------------------- - -cParser::cParser(int pID, cTSStream *stream, sPtsWrap *ptsWrap, bool observePtsWraps) - : m_pID(pID), m_PtsWrap(ptsWrap), m_ObservePtsWraps(observePtsWraps) -{ - m_PesBuffer = NULL; - m_Stream = stream; - m_IsVideo = false; - m_PesBufferInitialSize = 1024; - Reset(); -} - -cParser::~cParser() -{ - if (m_PesBuffer) - free(m_PesBuffer); -} - -void cParser::Reset() -{ - m_curPTS = DVD_NOPTS_VALUE; - m_curDTS = DVD_NOPTS_VALUE; - m_prevDTS = DVD_NOPTS_VALUE; - m_PesBufferPtr = 0; - m_PesParserPtr = 0; - m_PesNextFramePtr = 0; - m_FoundFrame = false; - m_PesPacketLength = 0; - m_PesHeaderPtr = 0; - m_Error = ERROR_PES_GENERAL; -} -/* - * Extract DTS and PTS and update current values in stream - */ -int cParser::ParsePESHeader(uint8_t *buf, size_t len) -{ - m_PesPacketLength = buf[4] << 8 | buf[5]; - - if (!PesIsVideoPacket(buf) && !PesIsAudioPacket(buf)) - return 6; - - unsigned int hdr_len = PesHeaderLength(buf); - - if (m_PesPacketLength > 0) - m_PesPacketLength -= (hdr_len-6); - - // scrambled - if ((buf[6] & 0x30) != 0) - return hdr_len; - - // parse PTS - if ((hdr_len >= 13) && - ((((buf[7] & 0xC0) == 0x80) && ((buf[9] & 0xF0) == 0x20)) || - ((buf[7] & 0xC0) == 0xC0) && ((buf[9] & 0xF0) == 0x30))) - { - int64_t pts; - pts = ((int64_t)(buf[ 9] & 0x0E)) << 29 ; - pts |= ((int64_t) buf[10]) << 22 ; - pts |= ((int64_t)(buf[11] & 0xFE)) << 14 ; - pts |= ((int64_t) buf[12]) << 7 ; - pts |= ((int64_t)(buf[13] & 0xFE)) >> 1 ; - - int64_t bit32and31 = pts >> 31; - if (m_ObservePtsWraps) - { - if ((bit32and31 == 3) && !m_PtsWrap->m_Wrap) - { - m_PtsWrap->m_ConfirmCount++; - if (m_PtsWrap->m_ConfirmCount >= 2) - { - m_PtsWrap->m_Wrap = true; - } - } - else if ((bit32and31 == 1) && m_PtsWrap->m_Wrap) - { - m_PtsWrap->m_ConfirmCount++; - if (m_PtsWrap->m_ConfirmCount >= 2) - { - m_PtsWrap->m_Wrap = false; - m_PtsWrap->m_NoOfWraps++; - } - } - else - m_PtsWrap->m_ConfirmCount = 0; - } - - m_prevPTS = m_curPTS; - m_curPTS = pts; - m_PesTimePos = m_PesBufferPtr; - if (m_PtsWrap->m_Wrap && !(bit32and31)) - { - m_curPTS += 1LL<<33; - } - if (m_PtsWrap->m_NoOfWraps) - { - m_curPTS += ((int64_t)m_PtsWrap->m_NoOfWraps<<33); - } - } - else - return hdr_len; - - m_prevDTS = m_curDTS; - - // parse DTS - if ((hdr_len >= 18) && - ((buf[7] & 0xC0) == 0xC0) && ((buf[14] & 0xF0) == 0x10)) - { - int64_t dts; - dts = ((int64_t)( buf[14] & 0x0E)) << 29 ; - dts |= (int64_t)( buf[15] << 22 ); - dts |= (int64_t)((buf[16] & 0xFE) << 14 ); - dts |= (int64_t)( buf[17] << 7 ); - dts |= (int64_t)((buf[18] & 0xFE) >> 1 ); - m_curDTS = dts; - if (m_PtsWrap->m_Wrap && !(m_curDTS >> 31)) - { - m_curDTS += 1LL<<33; - } - if (m_PtsWrap->m_NoOfWraps) - { - m_curDTS += ((int64_t)m_PtsWrap->m_NoOfWraps<<33); - } - } - else - m_curDTS = DVD_NOPTS_VALUE; - - return hdr_len; -} - -int cParser::ParsePacketHeader(uint8_t *data) -{ - if (TsIsScrambled(data)) - { - m_Error = ERROR_PES_SCRAMBLE; - return -1; - } - - if (TsPayloadStart(data)) - { - m_IsPusi = true; - m_Error = 0; - } - - int bytes = TS_SIZE - TsPayloadOffset(data); - - if(bytes < 0 || bytes > TS_SIZE) - { - m_Error = ERROR_PES_GENERAL; - return -1; - } - - if (TsError(data)) - { - m_Error = ERROR_PES_GENERAL; - return -1; - } - - if (!TsHasPayload(data)) - { - DEBUGLOG("no payload, size %d", bytes); - return 0; - } - - /* drop broken PES packets */ - if (m_Error) - { - return -1; - } - - return bytes; -} - -bool cParser::AddPESPacket(uint8_t *data, int size) -{ - // check for beginning of a PES packet - if (m_IsPusi && m_IsVideo && !IsValidStartCode(data, 4)) - { - m_IsPusi = false; - } - if (m_IsPusi) - { - int hdr_len = 6; - if (m_PesHeaderPtr + size < hdr_len) - { - memcpy(m_PesHeader+m_PesHeaderPtr, data, size); - m_PesHeaderPtr += size; - return false; - } - else if (m_PesHeaderPtr) - { - int bytesNeeded = hdr_len-m_PesHeaderPtr; - if (bytesNeeded > 0) - { - memcpy(m_PesHeader+m_PesHeaderPtr, data, bytesNeeded); - m_PesHeaderPtr += bytesNeeded; - data += bytesNeeded; - size -= bytesNeeded; - } - if (!IsValidStartCode(m_PesHeader, hdr_len)) - { - Reset(); - m_Error |= ERROR_PES_STARTCODE; - return false; - } - if (PesIsVideoPacket(m_PesHeader) || PesIsAudioPacket(m_PesHeader)) - { - hdr_len = 9; - bytesNeeded = hdr_len-m_PesHeaderPtr; - if (size < bytesNeeded) - { - memcpy(m_PesHeader+m_PesHeaderPtr, data, size); - m_PesHeaderPtr += size; - return false; - } - else if (bytesNeeded > 0) - { - memcpy(m_PesHeader+m_PesHeaderPtr, data, bytesNeeded); - m_PesHeaderPtr += bytesNeeded; - data += bytesNeeded; - size -= bytesNeeded; - } - if ((m_PesHeader[6] & 0x30)) - { - Reset(); - m_Error |= ERROR_PES_SCRAMBLE; - return false; - } - hdr_len = PesHeaderLength(m_PesHeader); - if (hdr_len > PES_HEADER_LENGTH) - { - Reset(); - return false; - } - } - bytesNeeded = hdr_len-m_PesHeaderPtr; - if (size < bytesNeeded) - { - memcpy(m_PesHeader+m_PesHeaderPtr, data, size); - m_PesHeaderPtr += size; - return false; - } - else if (bytesNeeded > 0) - { - memcpy(m_PesHeader+m_PesHeaderPtr, data, bytesNeeded); - m_PesHeaderPtr += bytesNeeded; - data += bytesNeeded; - size -= bytesNeeded; - } - if (ParsePESHeader(m_PesHeader, hdr_len) < 0) - { - INFOLOG("error parsing pes packet error "); - Reset(); - return false; - } - m_PesHeaderPtr = 0; - m_IsPusi = false; - } - else if (!IsValidStartCode(data, size)) - { - Reset(); - m_Error |= ERROR_PES_STARTCODE; - return false; - } - else - { - if (PesIsVideoPacket(data) || PesIsAudioPacket(data)) - { - if (size < 9) - { - memcpy(m_PesHeader+m_PesHeaderPtr, data, size); - m_PesHeaderPtr += size; - return false; - } - if ((data[6] & 0x30)) - { - Reset(); - m_Error |= ERROR_PES_STARTCODE; - return false; - } - hdr_len = PesHeaderLength(data); - if (hdr_len > PES_HEADER_LENGTH) - { - Reset(); - return false; - } - } - if (size < hdr_len) - { - memcpy(m_PesHeader+m_PesHeaderPtr, data, size); - m_PesHeaderPtr += size; - return false; - } - if (ParsePESHeader(data, hdr_len) < 0) - { - INFOLOG("error parsing pes packet error 2"); - Reset(); - return false; - } - data += hdr_len; - size -= hdr_len; - m_IsPusi = false; - } - } - - if (m_PesBuffer == NULL) - { - m_PesBufferSize = m_PesBufferInitialSize; - m_PesBuffer = (uint8_t*)malloc(m_PesBufferSize); - if (m_PesBuffer == NULL) - { - ERRORLOG("cParser::AddPESPacket - malloc failed"); - Reset(); - return false; - } - } - - if (m_PesBufferPtr + size >= m_PesBufferSize) - { - if (m_PesBufferPtr + size >= 1000000) - { - ERRORLOG("cParser::AddPESPacket - max buffer size reached, pid: %d", m_pID); - Reset(); - return false; - } - m_PesBufferSize += m_PesBufferInitialSize / 10; - m_PesBuffer = (uint8_t*)realloc(m_PesBuffer, m_PesBufferSize); - if (m_PesBuffer == NULL) - { - ERRORLOG("cParser::AddPESPacket - realloc failed"); - Reset(); - return false; - } - } - - // copy first packet of new frame to front - if (m_PesNextFramePtr) - { - memmove(m_PesBuffer, m_PesBuffer+m_PesNextFramePtr, m_PesBufferPtr-m_PesNextFramePtr); - m_PesBufferPtr = m_PesBufferPtr-m_PesNextFramePtr; - m_PesTimePos -= m_PesNextFramePtr; - m_PesNextFramePtr = 0; - } - - // copy payload - memcpy(m_PesBuffer+m_PesBufferPtr, data, size); - m_PesBufferPtr += size; - - return true; -} - -inline bool cParser::IsValidStartCode(uint8_t *buf, int size) -{ - if (size < 4) - return false; - - uint32_t startcode = buf[0] << 24 | buf[1] << 16 | buf[2] << 8 | buf[3]; - if (m_Stream->Type() == stH264 || m_Stream->Type() == stMPEG2VIDEO) - { - if (startcode >= 0x000001e0 && startcode <= 0x000001ef) - return true; - } - else if (m_Stream->Type() == stAC3 || - m_Stream->Type() == stEAC3) - { - if (PesIsPS1Packet(buf)) - return true; - } - else if (m_Stream->Type() == stMPEG2AUDIO || - m_Stream->Type() == stAACADTS || - m_Stream->Type() == stAACLATM || - m_Stream->Type() == stDTS) - { - if (startcode >= 0x000001c0 && startcode <= 0x000001df) - return true; - } - else if (m_Stream->Type() == stTELETEXT) - { - if (PesIsPS1Packet(buf)) - return true; - } - else if (m_Stream->Type() == stDVBSUB || - m_Stream->Type() == stTEXTSUB) - { - if (startcode == 0x000001bd || - startcode == 0x000001bf || - (startcode >= 0x000001f0 && startcode <= 0x000001f9)) - return true; - } - return false; -} - -// --- cTSStream ---------------------------------------------------- - -cTSStream::cTSStream(eStreamType type, int pid, sPtsWrap *ptsWrap) - : m_streamType(type) - , m_pID(pid) -{ - m_pesError = false; - m_pesParser = NULL; - m_language[0] = 0; - m_FpsScale = 0; - m_FpsRate = 0; - m_Height = 0; - m_Width = 0; - m_Aspect = 0.0f; - m_Channels = 0; - m_SampleRate = 0; - m_BitRate = 0; - m_BitsPerSample = 0; - m_BlockAlign = 0; - m_IsStreamChange = false; - - if (m_streamType == stMPEG2VIDEO) - { - m_pesParser = new cParserMPEG2Video(m_pID, this, ptsWrap, true); - m_streamContent = scVIDEO; - } - else if (m_streamType == stH264) - { - m_pesParser = new cParserH264(m_pID, this, ptsWrap, true); - m_streamContent = scVIDEO; - } - else if (m_streamType == stMPEG2AUDIO) - { - m_pesParser = new cParserMPEG2Audio(m_pID, this, ptsWrap, true); - m_streamContent = scAUDIO; - } - else if (m_streamType == stAACADTS) - { - m_pesParser = new cParserAAC(m_pID, this, ptsWrap, true); - m_streamContent = scAUDIO; - } - else if (m_streamType == stAACLATM) - { - m_pesParser = new cParserAAC(m_pID, this, ptsWrap, true); - m_streamContent = scAUDIO; - } - else if (m_streamType == stAC3) - { - m_pesParser = new cParserAC3(m_pID, this, ptsWrap, true); - m_streamContent = scAUDIO; - } - else if (m_streamType == stEAC3) - { - m_pesParser = new cParserAC3(m_pID, this, ptsWrap, true); - m_streamContent = scAUDIO; - } - else if (m_streamType == stDTS) - { - m_pesParser = new cParserDTS(m_pID, this, ptsWrap, true); - m_streamContent = scAUDIO; - } - else if (m_streamType == stTELETEXT) - { - m_pesParser = new cParserTeletext(m_pID, this, ptsWrap, false); - m_streamContent = scTELETEXT; - } - else if (m_streamType == stDVBSUB) - { - m_pesParser = new cParserSubtitle(m_pID, this, ptsWrap, false); - m_streamContent = scSUBTITLE; - } - else - { - ERRORLOG("Unrecognised type %i inside stream %i", m_streamType, m_pID); - return; - } -} - -cTSStream::~cTSStream() -{ - if (m_pesParser) - { - delete m_pesParser; - m_pesParser = NULL; - } -} - -int cTSStream::ProcessTSPacket(uint8_t *data, sStreamPacket *pkt, bool iframe) -{ - if (!data) - return 1; - - if (!m_pesParser) - return 1; - - int payloadSize = m_pesParser->ParsePacketHeader(data); - if (payloadSize == 0) - return 1; - else if (payloadSize < 0) - { - return -m_pesParser->GetError(); - } - - if (!m_pesParser->AddPESPacket(data+TS_SIZE-payloadSize, payloadSize)) - { - return -m_pesParser->GetError(); - } - - m_pesParser->Parse(pkt); - if (iframe && !m_pesParser->IsVideo()) - return 1; - - if (pkt->data) - { - int64_t dts = pkt->dts; - int64_t pts = pkt->pts; - - // Rescale for XBMC - if (pkt->dts != DVD_NOPTS_VALUE) - pkt->dts = Rescale(dts, DVD_TIME_BASE, 90000); - if (pkt->pts != DVD_NOPTS_VALUE) - pkt->pts = Rescale(pts, DVD_TIME_BASE, 90000); - pkt->duration = Rescale(pkt->duration, DVD_TIME_BASE, 90000); - return 0; - } - - return 1; -} - -bool cTSStream::ReadTime(uint8_t *data, int64_t *dts) -{ - if (!data) - return false; - - if (!m_pesParser) - return false; - - int payloadSize = m_pesParser->ParsePacketHeader(data); - if (payloadSize < 0) - return false; - - if (m_pesParser->m_IsPusi) - { - data += TS_SIZE-payloadSize; - if (payloadSize >= 6 && m_pesParser->IsValidStartCode(data, payloadSize)) - { - m_pesParser->m_curPTS = DVD_NOPTS_VALUE; - m_pesParser->m_curDTS = DVD_NOPTS_VALUE; - m_pesParser->ParsePESHeader(data, payloadSize); - if (m_pesParser->m_curDTS != DVD_NOPTS_VALUE) - { - *dts = m_pesParser->m_curDTS; - return true; - } - else if (m_pesParser->m_curPTS != DVD_NOPTS_VALUE) - { - *dts = m_pesParser->m_curPTS; - return true; - } - } - m_pesParser->m_IsPusi = false; - } - return false; -} - -void cTSStream::ResetParser() -{ - if (m_pesParser) - m_pesParser->Reset(); -} - -int64_t cTSStream::Rescale(int64_t a, int64_t b, int64_t c) -{ - uint64_t r = c/2; - - if (b<=INT_MAX && c<=INT_MAX) - { - if (a<=INT_MAX) - return (a * b + r)/c; - else - return a/c*b + (a%c*b + r)/c; - } - else - { - uint64_t a0= a&0xFFFFFFFF; - uint64_t a1= a>>32; - uint64_t b0= b&0xFFFFFFFF; - uint64_t b1= b>>32; - uint64_t t1= a0*b1 + a1*b0; - uint64_t t1a= t1<<32; - - a0 = a0*b0 + t1a; - a1 = a1*b1 + (t1>>32) + (a0=0; i--) - { - a1+= a1 + ((a0>>i)&1); - t1+=t1; - if (c <= a1) - { - a1 -= c; - t1++; - } - } - return t1; - } -} - -void cTSStream::SetLanguage(const char *language) -{ - m_language[0] = language[0]; - m_language[1] = language[1]; - m_language[2] = language[2]; - m_language[3] = 0; -} - -bool cTSStream::SetVideoInformation(int FpsScale, int FpsRate, int Height, int Width, float Aspect) -{ - if ((m_FpsScale != FpsScale) || - (m_FpsRate != FpsRate) || - (m_Height != Height) || - (m_Width != Width) || - (m_Aspect != Aspect)) - m_IsStreamChange = true; - - m_FpsScale = FpsScale; - m_FpsRate = FpsRate; - m_Height = Height; - m_Width = Width; - m_Aspect = Aspect; - - return m_IsStreamChange; -} - -void cTSStream::GetVideoInformation(uint32_t &FpsScale, uint32_t &FpsRate, uint32_t &Height, uint32_t &Width, double &Aspect) -{ - FpsScale = m_FpsScale; - FpsRate = m_FpsRate; - Height = m_Height; - Width = m_Width; - Aspect = m_Aspect; - - m_IsStreamChange = false; -} - -bool cTSStream::SetAudioInformation(int Channels, int SampleRate, int BitRate, int BitsPerSample, int BlockAlign) -{ - if ((m_Channels != Channels) || - (m_SampleRate != SampleRate) || - (m_BlockAlign != BlockAlign) || - (m_BitRate != BitRate) || - (m_BitsPerSample != BitsPerSample)) - m_IsStreamChange = true; - - m_Channels = Channels; - m_SampleRate = SampleRate; - m_BlockAlign = BlockAlign; - m_BitRate = BitRate; - m_BitsPerSample = BitsPerSample; - - return m_IsStreamChange; -} - -void cTSStream::GetAudioInformation(uint32_t &Channels, uint32_t &SampleRate, uint32_t &BitRate, uint32_t &BitsPerSample, uint32_t &BlockAlign) -{ - Channels = m_Channels; - SampleRate = m_SampleRate; - BlockAlign = m_BlockAlign; - BitRate = m_BitRate; - BitsPerSample = m_BitsPerSample; - - m_IsStreamChange = false; -} - -void cTSStream::SetSubtitlingDescriptor(unsigned char SubtitlingType, uint16_t CompositionPageId, uint16_t AncillaryPageId) -{ - m_subtitlingType = SubtitlingType; - m_compositionPageId = CompositionPageId; - m_ancillaryPageId = AncillaryPageId; -} diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_DTS.c xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_DTS.c --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_DTS.c 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_DTS.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2005-2012 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - */ - -#include -#include -#include "config.h" - -#include "parser_DTS.h" -#include "bitstream.h" - -cParserDTS::cParserDTS(int pID, cTSStream *stream, sPtsWrap *ptsWrap, bool observePtsWraps) - : cParser(pID, stream, ptsWrap, observePtsWraps) -{ -} - -cParserDTS::~cParserDTS() -{ -} - -void cParserDTS::Parse(sStreamPacket *pkt) -{ - -} diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_DTS.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_DTS.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_DTS.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_DTS.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2005-2012 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - */ - -#ifndef VNSI_DEMUXER_DTS_H -#define VNSI_DEMUXER_DTS_H - -#include "parser.h" - -// --- cParserDTS ------------------------------------------------- - -class cParserDTS : public cParser -{ -private: - -public: - cParserDTS(int pID, cTSStream *stream, sPtsWrap *ptsWrap, bool observePtsWraps); - virtual ~cParserDTS(); - - virtual void Parse(sStreamPacket *pkt); -}; - - -#endif // VNSI_DEMUXER_DTS_H diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,248 +0,0 @@ -/* - * Copyright (C) 2005-2012 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - */ - -#ifndef VNSI_DEMUXER_H -#define VNSI_DEMUXER_H - -#include -#include - -#define DVD_TIME_BASE 1000000 -#define DVD_NOPTS_VALUE (-1LL<<52) // should be possible to represent in both double and __int64 - -/* PES PIDs */ -#define PRIVATE_STREAM1 0xBD -#define PADDING_STREAM 0xBE -#define PRIVATE_STREAM2 0xBF -#define PRIVATE_STREAM3 0xFD -#define AUDIO_STREAM_S 0xC0 /* 1100 0000 */ -#define AUDIO_STREAM_E 0xDF /* 1101 1111 */ -#define VIDEO_STREAM_S 0xE0 /* 1110 0000 */ -#define VIDEO_STREAM_E 0xEF /* 1110 1111 */ - -#define AUDIO_STREAM_MASK 0x1F /* 0001 1111 */ -#define VIDEO_STREAM_MASK 0x0F /* 0000 1111 */ -#define AUDIO_STREAM 0xC0 /* 1100 0000 */ -#define VIDEO_STREAM 0xE0 /* 1110 0000 */ - -#define ECM_STREAM 0xF0 -#define EMM_STREAM 0xF1 -#define DSM_CC_STREAM 0xF2 -#define ISO13522_STREAM 0xF3 -#define PROG_STREAM_DIR 0xFF - -inline bool PesIsHeader(const uchar *p) -{ - return !(p)[0] && !(p)[1] && (p)[2] == 1; -} - -inline int PesHeaderLength(const uchar *p) -{ - return 8 + (p)[8] + 1; -} - -inline bool PesIsVideoPacket(const uchar *p) -{ - return (((p)[3] & ~VIDEO_STREAM_MASK) == VIDEO_STREAM); -} - -inline bool PesIsMPEGAudioPacket(const uchar *p) -{ - return (((p)[3] & ~AUDIO_STREAM_MASK) == AUDIO_STREAM); -} - -inline bool PesIsPS1Packet(const uchar *p) -{ - return ((p)[3] == PRIVATE_STREAM1 || (p)[3] == PRIVATE_STREAM3 ); -} - -inline bool PesIsAudioPacket(const uchar *p) -{ - return (PesIsMPEGAudioPacket(p) || PesIsPS1Packet(p)); -} - -enum eStreamContent -{ - scVIDEO, - scAUDIO, - scSUBTITLE, - scTELETEXT, - scPROGRAMM -}; - -enum eStreamType -{ - stNone, - stAC3, - stMPEG2AUDIO, - stEAC3, - stAACADTS, - stAACLATM, - stDTS, - stMPEG2VIDEO, - stH264, - stDVBSUB, - stTEXTSUB, - stTELETEXT, -}; - -#define PKT_I_FRAME 1 -#define PKT_P_FRAME 2 -#define PKT_B_FRAME 3 -#define PKT_NTYPES 4 -struct sStreamPacket -{ - int64_t id; - int64_t dts; - int64_t pts; - int duration; - - uint8_t commercial; - uint8_t componentindex; - - uint8_t *data; - int size; - bool streamChange; - bool pmtChange; - uint32_t serial; - uint32_t reftime; -}; - -struct sPtsWrap -{ - bool m_Wrap; - int m_NoOfWraps; - int m_ConfirmCount; -}; - -class cTSStream; - -#define PES_HEADER_LENGTH 128 - -class cParser -{ -friend class cTSStream; -public: - cParser(int pID, cTSStream *stream, sPtsWrap *ptsWrap, bool observePtsWraps); - virtual ~cParser(); - - bool AddPESPacket(uint8_t *data, int size); - virtual void Parse(sStreamPacket *pkt) = 0; -// void ClearFrame() {m_PesBufferPtr = 0;} - int ParsePacketHeader(uint8_t *data); - int ParsePESHeader(uint8_t *buf, size_t len); - virtual void Reset(); - bool IsVideo() {return m_IsVideo; } - uint16_t GetError() { return m_Error; } - -protected: - virtual bool IsValidStartCode(uint8_t *buf, int size); - - uint8_t m_PesHeader[PES_HEADER_LENGTH]; - int m_PesHeaderPtr; - int m_PesPacketLength; - uint8_t *m_PesBuffer; - int m_PesBufferSize; - int m_PesBufferPtr; - size_t m_PesBufferInitialSize; - size_t m_PesParserPtr; - size_t m_PesNextFramePtr; - int m_PesTimePos; - - bool m_FoundFrame; - - int m_pID; - int64_t m_curPTS; - int64_t m_curDTS; - int64_t m_prevPTS; - int64_t m_prevDTS; - - bool m_IsPusi; - uint16_t m_Error; - - cTSStream *m_Stream; - bool m_IsVideo; - sPtsWrap *m_PtsWrap; - bool m_ObservePtsWraps; -}; - - -class cTSStream -{ -private: - eStreamType m_streamType; - const int m_pID; - eStreamContent m_streamContent; - bool m_IsStreamChange; - - bool m_pesError; - cParser *m_pesParser; - - char m_language[4]; // ISO 639 3-letter language code (empty string if undefined) - - int m_FpsScale; // scale of 1000 and a rate of 29970 will result in 29.97 fps - int m_FpsRate; - int m_Height; // height of the stream reported by the demuxer - int m_Width; // width of the stream reported by the demuxer - float m_Aspect; // display aspect of stream - - int m_Channels; - int m_SampleRate; - int m_BitRate; - int m_BitsPerSample; - int m_BlockAlign; - - unsigned char m_subtitlingType; - uint16_t m_compositionPageId; - uint16_t m_ancillaryPageId; - -public: - cTSStream(eStreamType type, int pid, sPtsWrap *ptsWrap); - virtual ~cTSStream(); - - int ProcessTSPacket(uint8_t *data, sStreamPacket *pkt, bool iframe); - bool ReadTime(uint8_t *data, int64_t *dts); - void ResetParser(); - - void SetLanguage(const char *language); - const char *GetLanguage() { return m_language; } - const eStreamContent Content() const { return m_streamContent; } - const eStreamType Type() const { return m_streamType; } - void SetType(eStreamType type) { m_streamType = type; } - const int GetPID() const { return m_pID; } - - /* Video Stream Information */ - bool SetVideoInformation(int FpsScale, int FpsRate, int Height, int Width, float Aspect); - void GetVideoInformation(uint32_t &FpsScale, uint32_t &FpsRate, uint32_t &Height, uint32_t &Width, double &Aspect); - - /* Audio Stream Information */ - bool SetAudioInformation(int Channels, int SampleRate, int BitRate, int BitsPerSample, int BlockAlign); - void GetAudioInformation(uint32_t &Channels, uint32_t &SampleRate, uint32_t &BitRate, uint32_t &BitsPerSample, uint32_t &BlockAlign); - - /* Subtitle related stream information */ - void SetSubtitlingDescriptor(unsigned char SubtitlingType, uint16_t CompositionPageId, uint16_t AncillaryPageId); - unsigned char SubtitlingType() const { return m_subtitlingType; } - uint16_t CompositionPageId() const { return m_compositionPageId; } - uint16_t AncillaryPageId() const { return m_ancillaryPageId; } - - static int64_t Rescale(int64_t a, int64_t b, int64_t c); -}; - -#endif // VNSI_DEMUXER_H diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_h264.c xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_h264.c --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_h264.c 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_h264.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,590 +0,0 @@ -/* - * Copyright (C) 2005-2012 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - */ - -#include -#include -#include "config.h" -#include "bitstream.h" - -#include "parser_h264.h" - -static const int h264_lev2cpbsize[][2] = -{ - {10, 175}, - {11, 500}, - {12, 1000}, - {13, 2000}, - {20, 2000}, - {21, 4000}, - {22, 4000}, - {30, 10000}, - {31, 14000}, - {32, 20000}, - {40, 25000}, - {41, 62500}, - {42, 62500}, - {50, 135000}, - {51, 240000}, - {-1, -1}, -}; - -cParserH264::cParserH264(int pID, cTSStream *stream, sPtsWrap *ptsWrap, bool observePtsWraps) - : cParser(pID, stream, ptsWrap, observePtsWraps) -{ - m_Height = 0; - m_Width = 0; - m_FPS = 25; - m_FpsScale = 0; - m_FrameDuration = 0; - m_vbvDelay = -1; - m_vbvSize = 0; - m_PixelAspect.den = 1; - m_PixelAspect.num = 0; - memset(&m_streamData, 0, sizeof(m_streamData)); - m_PesBufferInitialSize = 240000; - - m_IsVideo = true; - Reset(); -} - -cParserH264::~cParserH264() -{ -} - -void cParserH264::Parse(sStreamPacket *pkt) -{ - if (m_PesBufferPtr < 4) - return; - - int p = m_PesParserPtr; - uint32_t startcode = m_StartCode; - bool frameComplete = false; - int l; - while ((l = m_PesBufferPtr - p) > 3) - { - if ((startcode & 0xffffff00) == 0x00000100) - { - if (Parse_H264(startcode, p, frameComplete) < 0) - { - break; - } - } - startcode = startcode << 8 | m_PesBuffer[p++]; - } - m_PesParserPtr = p; - m_StartCode = startcode; - - if (frameComplete) - { - if (!m_NeedSPS && !m_NeedIFrame) - { - double PAR = (double)m_PixelAspect.num/(double)m_PixelAspect.den; - double DAR = (PAR * m_Width) / m_Height; - DEBUGLOG("H.264 SPS: PAR %i:%i", m_PixelAspect.num, m_PixelAspect.den); - DEBUGLOG("H.264 SPS: DAR %.2f", DAR); - - if (m_FpsScale == 0) - { - if (m_curDTS != DVD_NOPTS_VALUE && m_prevDTS != DVD_NOPTS_VALUE) - m_FpsScale = m_Stream->Rescale(m_curDTS - m_prevDTS, DVD_TIME_BASE, 90000); - else - m_FpsScale = 40000; - } - bool streamChange = m_Stream->SetVideoInformation(m_FpsScale, DVD_TIME_BASE, m_Height, m_Width, DAR); - - int duration; - if (m_curDTS != DVD_NOPTS_VALUE && m_prevDTS != DVD_NOPTS_VALUE) - duration = m_curDTS - m_prevDTS; - else - duration = m_Stream->Rescale(m_FpsScale, 90000, DVD_TIME_BASE); - - pkt->id = m_pID; - pkt->size = m_PesNextFramePtr; - pkt->data = m_PesBuffer; - pkt->dts = m_DTS; - pkt->pts = m_PTS; - pkt->duration = duration; - pkt->streamChange = streamChange; - } - m_StartCode = 0xffffffff; - m_PesParserPtr = 0; - m_FoundFrame = false; - } -} - -void cParserH264::Reset() -{ - cParser::Reset(); - m_StartCode = 0xffffffff; - m_NeedIFrame = true; - m_NeedSPS = true; - m_NeedPPS = true; - memset(&m_streamData, 0, sizeof(m_streamData)); -} - -int cParserH264::Parse_H264(uint32_t startcode, int buf_ptr, bool &complete) -{ - int len = m_PesBufferPtr - buf_ptr; - uint8_t *buf = m_PesBuffer + buf_ptr; - - switch(startcode & 0x9f) - { - case 1 ... 5: - { - if (m_NeedSPS || m_NeedPPS) - { - m_FoundFrame = true; - return 0; - } - // need at least 32 bytes for parsing nal - if (len < 32) - return -1; - h264_private::VCL_NAL vcl; - memset(&vcl, 0, sizeof(h264_private::VCL_NAL)); - vcl.nal_ref_idc = startcode & 0x60; - vcl.nal_unit_type = startcode & 0x1F; - if (!Parse_SLH(buf, len, vcl)) - return 0; - - // check for the beginning of a new access unit - if (m_FoundFrame && IsFirstVclNal(vcl)) - { - complete = true; - m_PesNextFramePtr = buf_ptr - 4; - return -1; - } - - if (!m_FoundFrame) - { - if (buf_ptr - 4 >= m_PesTimePos) - { - m_DTS = m_curDTS; - m_PTS = m_curPTS; - } - else - { - m_DTS = m_prevDTS; - m_PTS = m_prevPTS; - } - } - - m_streamData.vcl_nal = vcl; - m_FoundFrame = true; - break; - } - - case NAL_SEI: - if (m_FoundFrame) - { - complete = true; - m_PesNextFramePtr = buf_ptr - 4; - return -1; - } - break; - - case NAL_SPS: - { - if (m_FoundFrame) - { - complete = true; - m_PesNextFramePtr = buf_ptr - 4; - return -1; - } - // TODO: how big is SPS? - if (len < 256) - return -1; - if (!Parse_SPS(buf, len)) - return 0; - - m_NeedSPS = false; - break; - } - - case NAL_PPS: - { - if (m_FoundFrame) - { - complete = true; - m_PesNextFramePtr = buf_ptr - 4; - return -1; - } - // TODO: how big is PPS - if (len < 64) - return -1; - if (!Parse_PPS(buf, len)) - return 0; - m_NeedPPS = false; - break; - } - - case NAL_AUD: - if (m_FoundFrame && (m_prevPTS != DVD_NOPTS_VALUE)) - { - complete = true; - m_PesNextFramePtr = buf_ptr - 4; - return -1; - } - break; - - case NAL_END_SEQ: - if (m_FoundFrame) - { - complete = true; - m_PesNextFramePtr = buf_ptr; - return -1; - } - break; - - case 13 ... 18: - if (m_FoundFrame) - { - complete = true; - m_PesNextFramePtr = buf_ptr - 4; - return -1; - } - break; - - default: - break; - } - - return 0; -} - -bool cParserH264::Parse_PPS(uint8_t *buf, int len) -{ - cBitstream bs(buf, len*8); - - int pps_id = bs.readGolombUE(); - int sps_id = bs.readGolombUE(); - m_streamData.pps[pps_id].sps = sps_id; - bs.readBits1(); - m_streamData.pps[pps_id].pic_order_present_flag = bs.readBits1(); - return true; -} - -bool cParserH264::Parse_SLH(uint8_t *buf, int len, h264_private::VCL_NAL &vcl) -{ - cBitstream bs(buf, len*8); - - bs.readGolombUE(); /* first_mb_in_slice */ - int slice_type = bs.readGolombUE(); - - if (slice_type > 4) - slice_type -= 5; /* Fixed slice type per frame */ - - switch (slice_type) - { - case 0: - break; - case 1: - break; - case 2: - m_NeedIFrame = false; - break; - default: - return false; - } - - int pps_id = bs.readGolombUE(); - int sps_id = m_streamData.pps[pps_id].sps; - if (m_streamData.sps[sps_id].cbpsize == 0) - return false; - - m_vbvSize = m_streamData.sps[sps_id].cbpsize; - m_vbvDelay = -1; - - vcl.pic_parameter_set_id = pps_id; - vcl.frame_num = bs.readBits(m_streamData.sps[sps_id].log2_max_frame_num); - if (!m_streamData.sps[sps_id].frame_mbs_only_flag) - { - vcl.field_pic_flag = bs.readBits1(); - // interlaced -// if (vcl.field_pic_flag) -// m_FPS *= 2; - } - if (vcl.field_pic_flag) - vcl.bottom_field_flag = bs.readBits1(); - - if (vcl.nal_unit_type == 5) - vcl.idr_pic_id = bs.readGolombUE(); - if (m_streamData.sps[sps_id].pic_order_cnt_type == 0) - { - vcl.pic_order_cnt_lsb = bs.readBits(m_streamData.sps[sps_id].log2_max_pic_order_cnt_lsb); - if(m_streamData.pps[pps_id].pic_order_present_flag && !vcl.field_pic_flag) - vcl.delta_pic_order_cnt_bottom = bs.readGolombSE(); - } - if(m_streamData.sps[sps_id].pic_order_cnt_type == 1 && - !m_streamData.sps[sps_id].delta_pic_order_always_zero_flag ) - { - vcl.delta_pic_order_cnt_0 = bs.readGolombSE(); - if(m_streamData.pps[pps_id].pic_order_present_flag && !vcl.field_pic_flag ) - vcl.delta_pic_order_cnt_1 = bs.readGolombSE(); - } - - vcl.pic_order_cnt_type = m_streamData.sps[sps_id].pic_order_cnt_type; - - return true; -} - -bool cParserH264::Parse_SPS(uint8_t *buf, int len) -{ - cBitstream bs(buf, len*8); - unsigned int tmp, frame_mbs_only; - int cbpsize = -1; - - int profile_idc = bs.readBits(8); - /* constraint_set0_flag = bs.readBits1(); */ - /* constraint_set1_flag = bs.readBits1(); */ - /* constraint_set2_flag = bs.readBits1(); */ - /* constraint_set3_flag = bs.readBits1(); */ - /* reserved = bs.readBits(4); */ - bs.skipBits(8); - int level_idc = bs.readBits(8); - unsigned int seq_parameter_set_id = bs.readGolombUE(9); - - unsigned int i = 0; - while (h264_lev2cpbsize[i][0] != -1) - { - if (h264_lev2cpbsize[i][0] >= level_idc) - { - cbpsize = h264_lev2cpbsize[i][1]; - break; - } - i++; - } - if (cbpsize < 0) - return false; - - memset(&m_streamData.sps[seq_parameter_set_id], 0, sizeof(h264_private::SPS)); - m_streamData.sps[seq_parameter_set_id].cbpsize = cbpsize * 125; /* Convert from kbit to bytes */ - - if( profile_idc == 100 || profile_idc == 110 || - profile_idc == 122 || profile_idc == 244 || profile_idc == 44 || - profile_idc == 83 || profile_idc == 86 || profile_idc == 118 || - profile_idc == 128 ) - { - int chroma_format_idc = bs.readGolombUE(9); /* chroma_format_idc */ - if(chroma_format_idc == 3) - bs.skipBits(1); /* residual_colour_transform_flag */ - bs.readGolombUE(); /* bit_depth_luma - 8 */ - bs.readGolombUE(); /* bit_depth_chroma - 8 */ - bs.skipBits(1); /* transform_bypass */ - if (bs.readBits1()) /* seq_scaling_matrix_present */ - { - for (int i = 0; i < ((chroma_format_idc != 3) ? 8 : 12); i++) - { - if (bs.readBits1()) /* seq_scaling_list_present */ - { - int last = 8, next = 8, size = (i<6) ? 16 : 64; - for (int j = 0; j < size; j++) - { - if (next) - next = (last + bs.readGolombSE()) & 0xff; - last = !next ? last: next; - } - } - } - } - } - - int log2_max_frame_num_minus4 = bs.readGolombUE(); /* log2_max_frame_num - 4 */ - m_streamData.sps[seq_parameter_set_id].log2_max_frame_num = log2_max_frame_num_minus4 + 4; - int pic_order_cnt_type = bs.readGolombUE(9); - m_streamData.sps[seq_parameter_set_id].pic_order_cnt_type = pic_order_cnt_type; - if (pic_order_cnt_type == 0) - { - int log2_max_pic_order_cnt_lsb_minus4 = bs.readGolombUE(); /* log2_max_poc_lsb - 4 */ - m_streamData.sps[seq_parameter_set_id].log2_max_pic_order_cnt_lsb = log2_max_pic_order_cnt_lsb_minus4 + 4; - } - else if (pic_order_cnt_type == 1) - { - m_streamData.sps[seq_parameter_set_id].delta_pic_order_always_zero_flag = bs.readBits1(); - bs.readGolombSE(); /* offset_for_non_ref_pic */ - bs.readGolombSE(); /* offset_for_top_to_bottom_field */ - tmp = bs.readGolombUE(); /* num_ref_frames_in_pic_order_cnt_cycle */ - for (unsigned int i = 0; i < tmp; i++) - bs.readGolombSE(); /* offset_for_ref_frame[i] */ - } - else if(pic_order_cnt_type != 2) - { - /* Illegal poc */ - return false; - } - - bs.readGolombUE(9); /* ref_frames */ - bs.skipBits(1); /* gaps_in_frame_num_allowed */ - m_Width /* mbs */ = bs.readGolombUE() + 1; - m_Height /* mbs */ = bs.readGolombUE() + 1; - frame_mbs_only = bs.readBits1(); - m_streamData.sps[seq_parameter_set_id].frame_mbs_only_flag = frame_mbs_only; - DEBUGLOG("H.264 SPS: pic_width: %u mbs", (unsigned) m_Width); - DEBUGLOG("H.264 SPS: pic_height: %u mbs", (unsigned) m_Height); - DEBUGLOG("H.264 SPS: frame only flag: %d", frame_mbs_only); - - m_Width *= 16; - m_Height *= 16 * (2-frame_mbs_only); - - if (!frame_mbs_only) - { - if (bs.readBits1()) /* mb_adaptive_frame_field_flag */ - DEBUGLOG("H.264 SPS: MBAFF"); - } - bs.skipBits(1); /* direct_8x8_inference_flag */ - if (bs.readBits1()) /* frame_cropping_flag */ - { - uint32_t crop_left = bs.readGolombUE(); - uint32_t crop_right = bs.readGolombUE(); - uint32_t crop_top = bs.readGolombUE(); - uint32_t crop_bottom = bs.readGolombUE(); - DEBUGLOG("H.264 SPS: cropping %d %d %d %d", crop_left, crop_top, crop_right, crop_bottom); - - m_Width -= 2*(crop_left + crop_right); - if (frame_mbs_only) - m_Height -= 2*(crop_top + crop_bottom); - else - m_Height -= 4*(crop_top + crop_bottom); - } - - /* VUI parameters */ - m_PixelAspect.num = 0; - if (bs.readBits1()) /* vui_parameters_present flag */ - { - if (bs.readBits1()) /* aspect_ratio_info_present */ - { - uint32_t aspect_ratio_idc = bs.readBits(8); - DEBUGLOG("H.264 SPS: aspect_ratio_idc %d", aspect_ratio_idc); - - if (aspect_ratio_idc == 255 /* Extended_SAR */) - { - m_PixelAspect.num = bs.readBits(16); /* sar_width */ - m_PixelAspect.den = bs.readBits(16); /* sar_height */ - DEBUGLOG("H.264 SPS: -> sar %dx%d", m_PixelAspect.num, m_PixelAspect.den); - } - else - { - static const mpeg_rational_t aspect_ratios[] = - { /* page 213: */ - /* 0: unknown */ - {0, 1}, - /* 1...16: */ - { 1, 1}, {12, 11}, {10, 11}, {16, 11}, { 40, 33}, {24, 11}, {20, 11}, {32, 11}, - {80, 33}, {18, 11}, {15, 11}, {64, 33}, {160, 99}, { 4, 3}, { 3, 2}, { 2, 1} - }; - - if (aspect_ratio_idc < sizeof(aspect_ratios)/sizeof(aspect_ratios[0])) - { - memcpy(&m_PixelAspect, &aspect_ratios[aspect_ratio_idc], sizeof(mpeg_rational_t)); - DEBUGLOG("H.264 SPS: PAR %d / %d", m_PixelAspect.num, m_PixelAspect.den); - } - else - { - DEBUGLOG("H.264 SPS: aspect_ratio_idc out of range !"); - } - } - } - if (bs.readBits1()) // overscan - { - bs.readBits1(); // overscan_appropriate_flag - } - if (bs.readBits1()) // video_signal_type_present_flag - { - bs.readBits(3); // video_format - bs.readBits1(); // video_full_range_flag - if (bs.readBits1()) // colour_description_present_flag - { - bs.readBits(8); // colour_primaries - bs.readBits(8); // transfer_characteristics - bs.readBits(8); // matrix_coefficients - } - } - - if (bs.readBits1()) // chroma_loc_info_present_flag - { - bs.readGolombUE(); // chroma_sample_loc_type_top_field - bs.readGolombUE(); // chroma_sample_loc_type_bottom_field - } - - if (bs.readBits1()) // timing_info_present_flag - { -// uint32_t num_units_in_tick = bs.readBits(32); -// uint32_t time_scale = bs.readBits(32); -// int fixed_frame_rate = bs.readBits1(); -// if (num_units_in_tick > 0) -// m_FPS = time_scale / (num_units_in_tick * 2); - } - } - - DEBUGLOG("H.264 SPS: -> video size %dx%d, aspect %d:%d", m_Width, m_Height, m_PixelAspect.num, m_PixelAspect.den); - return true; -} - -bool cParserH264::IsFirstVclNal(h264_private::VCL_NAL &vcl) -{ - if (m_streamData.vcl_nal.frame_num != vcl.frame_num) - return true; - - if (m_streamData.vcl_nal.pic_parameter_set_id != vcl.pic_parameter_set_id) - return true; - - if (m_streamData.vcl_nal.field_pic_flag != vcl.field_pic_flag) - return true; - - if (m_streamData.vcl_nal.field_pic_flag && vcl.field_pic_flag) - { - if (m_streamData.vcl_nal.bottom_field_flag != vcl.bottom_field_flag) - return true; - } - - if (m_streamData.vcl_nal.nal_ref_idc == 0 || vcl.nal_ref_idc == 0) - { - if (m_streamData.vcl_nal.nal_ref_idc != vcl.nal_ref_idc) - return true; - } - - if (m_streamData.vcl_nal.pic_order_cnt_type == 0 && vcl.pic_order_cnt_type == 0) - { - if (m_streamData.vcl_nal.pic_order_cnt_lsb != vcl.pic_order_cnt_lsb) - return true; - if (m_streamData.vcl_nal.delta_pic_order_cnt_bottom != vcl.delta_pic_order_cnt_bottom) - return true; - } - - if (m_streamData.vcl_nal.pic_order_cnt_type == 1 && vcl.pic_order_cnt_type == 1) - { - if (m_streamData.vcl_nal.delta_pic_order_cnt_0 != vcl.delta_pic_order_cnt_0) - return true; - if (m_streamData.vcl_nal.delta_pic_order_cnt_1 != vcl.delta_pic_order_cnt_1) - return true; - } - - if (m_streamData.vcl_nal.nal_unit_type == 5 || vcl.nal_unit_type == 5) - { - if (m_streamData.vcl_nal.nal_unit_type != vcl.nal_unit_type) - return true; - } - - if (m_streamData.vcl_nal.nal_unit_type == 5 && vcl.nal_unit_type == 5) - { - if (m_streamData.vcl_nal.idr_pic_id != vcl.idr_pic_id) - return true; - } - return false; -} diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_h264.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_h264.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_h264.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_h264.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,116 +0,0 @@ -/* - * Copyright (C) 2005-2012 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - */ - -#ifndef VNSI_DEMUXER_H264_H -#define VNSI_DEMUXER_H264_H - -#include "parser.h" - -class cBitstream; - -// --- cParserH264 ------------------------------------------------- - -class cParserH264 : public cParser -{ -private: - typedef struct h264_private - { - struct SPS - { - int frame_duration; - int cbpsize; - int pic_order_cnt_type; - int frame_mbs_only_flag; - int log2_max_frame_num; - int log2_max_pic_order_cnt_lsb; - int delta_pic_order_always_zero_flag; - } sps[256]; - - struct PPS - { - int sps; - int pic_order_present_flag; - } pps[256]; - - struct VCL_NAL - { - int frame_num; // slice - int pic_parameter_set_id; // slice - int field_pic_flag; // slice - int bottom_field_flag; // slice - int delta_pic_order_cnt_bottom; // slice - int delta_pic_order_cnt_0; // slice - int delta_pic_order_cnt_1; // slice - int pic_order_cnt_lsb; // slice - int idr_pic_id; // slice - int nal_unit_type; - int nal_ref_idc; // start code - int pic_order_cnt_type; // sps - } vcl_nal; - - } h264_private_t; - - typedef struct mpeg_rational_s { - int num; - int den; - } mpeg_rational_t; - - enum - { - NAL_SLH = 0x01, // Slice Header - NAL_SEI = 0x06, // Supplemental Enhancement Information - NAL_SPS = 0x07, // Sequence Parameter Set - NAL_PPS = 0x08, // Picture Parameter Set - NAL_AUD = 0x09, // Access Unit Delimiter - NAL_END_SEQ = 0x0A // End of Sequence - }; - - uint32_t m_StartCode; - bool m_NeedIFrame; - bool m_NeedSPS; - bool m_NeedPPS; - int m_Width; - int m_Height; - int m_FPS; - int m_FpsScale; - mpeg_rational_t m_PixelAspect; - int m_FrameDuration; - h264_private m_streamData; - int m_vbvDelay; /* -1 if CBR */ - int m_vbvSize; /* Video buffer size (in bytes) */ - int64_t m_DTS; - int64_t m_PTS; - - int Parse_H264(uint32_t startcode, int buf_ptr, bool &complete); - bool Parse_PPS(uint8_t *buf, int len); - bool Parse_SLH(uint8_t *buf, int len, h264_private::VCL_NAL &vcl); - bool Parse_SPS(uint8_t *buf, int len); - bool IsFirstVclNal(h264_private::VCL_NAL &vcl); - -public: - cParserH264(int pID, cTSStream *stream, sPtsWrap *ptsWrap, bool observePtsWraps); - virtual ~cParserH264(); - - virtual void Parse(sStreamPacket *pkt); - virtual void Reset(); -}; - - -#endif // VNSI_DEMUXER_H264_H diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_MPEGAudio.c xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_MPEGAudio.c --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_MPEGAudio.c 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_MPEGAudio.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,146 +0,0 @@ -/* - * Copyright (C) 2005-2012 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - */ - -#include -#include -#include "config.h" - -#include "parser_MPEGAudio.h" -#include "bitstream.h" - -const uint16_t FrequencyTable[3] = { 44100, 48000, 32000 }; -const uint16_t BitrateTable[2][3][15] = -{ - { - {0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448 }, - {0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384 }, - {0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 } - }, - { - {0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256}, - {0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160}, - {0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160} - } -}; - -cParserMPEG2Audio::cParserMPEG2Audio(int pID, cTSStream *stream, sPtsWrap *ptsWrap, bool observePtsWraps) - : cParser(pID, stream, ptsWrap, observePtsWraps) -{ - m_PTS = 0; - m_DTS = 0; - m_FrameSize = 0; - m_SampleRate = 0; - m_Channels = 0; - m_BitRate = 0; - m_PesBufferInitialSize = 2048; -} - -cParserMPEG2Audio::~cParserMPEG2Audio() -{ -} - -void cParserMPEG2Audio::Parse(sStreamPacket *pkt) -{ - int p = m_PesParserPtr; - int l; - while ((l = m_PesBufferPtr - p) > 3) - { - if (FindHeaders(m_PesBuffer + p, l) < 0) - break; - p++; - } - m_PesParserPtr = p; - - if (m_FoundFrame && l >= m_FrameSize) - { - bool streamChange = m_Stream->SetAudioInformation(m_Channels, m_SampleRate, m_BitRate, 0, 0); - pkt->id = m_pID; - pkt->data = &m_PesBuffer[p]; - pkt->size = m_FrameSize; - pkt->duration = 90000 * 1152 / m_SampleRate; - pkt->dts = m_DTS; - pkt->pts = m_PTS; - pkt->streamChange = streamChange; - - m_PesNextFramePtr = p + m_FrameSize; - m_PesParserPtr = 0; - m_FoundFrame = false; - } -} - -int cParserMPEG2Audio::FindHeaders(uint8_t *buf, int buf_size) -{ - if (m_FoundFrame) - return -1; - - if (buf_size < 4) - return -1; - - uint8_t *buf_ptr = buf; - - if ((buf_ptr[0] == 0xFF && (buf_ptr[1] & 0xE0) == 0xE0)) - { - cBitstream bs(buf_ptr, 4 * 8); - bs.skipBits(11); // syncword - - int audioVersion = bs.readBits(2); - if (audioVersion == 1) - return 0; - int mpeg2 = !(audioVersion & 1); - int mpeg25 = !(audioVersion & 3); - - int layer = bs.readBits(2); - if (layer == 0) - return 0; - layer = 4 - layer; - - bs.skipBits(1); // protetion bit - int bitrate_index = bs.readBits(4); - if (bitrate_index == 15 || bitrate_index == 0) - return 0; - m_BitRate = BitrateTable[mpeg2][layer - 1][bitrate_index] * 1000; - - int sample_rate_index = bs.readBits(2); - if (sample_rate_index == 3) - return 0; - m_SampleRate = FrequencyTable[sample_rate_index] >> (mpeg2 + mpeg25); - - int padding = bs.readBits1(); - bs.skipBits(1); // private bit - int channel_mode = bs.readBits(2); - - if (channel_mode == 11) - m_Channels = 1; - else - m_Channels = 2; - - if (layer == 1) - m_FrameSize = (12 * m_BitRate / m_SampleRate + padding) * 4; - else - m_FrameSize = 144 * m_BitRate / m_SampleRate + padding; - - m_FoundFrame = true; - m_DTS = m_curPTS; - m_PTS = m_curPTS; - m_curPTS += 90000 * 1152 / m_SampleRate; - return -1; - } - return 0; -} diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_MPEGAudio.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_MPEGAudio.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_MPEGAudio.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_MPEGAudio.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -/* - * Copyright (C) 2005-2012 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - */ - -#ifndef VNSI_DEMUXER_MPEGAUDIO_H -#define VNSI_DEMUXER_MPEGAUDIO_H - -#include "parser.h" - -// --- cParserMPEG2Audio ------------------------------------------------- - -class cParserMPEG2Audio : public cParser -{ -private: - int m_SampleRate; - int m_Channels; - int m_BitRate; - int m_FrameSize; - - int64_t m_PTS; - int64_t m_DTS; - - int FindHeaders(uint8_t *buf, int buf_size); - -public: - cParserMPEG2Audio(int pID, cTSStream *stream, sPtsWrap *ptsWrap, bool observePtsWraps); - virtual ~cParserMPEG2Audio(); - - virtual void Parse(sStreamPacket *pkt); -}; - - -#endif // VNSI_DEMUXER_MPEGAUDIO_H diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_MPEGVideo.c xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_MPEGVideo.c --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_MPEGVideo.c 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_MPEGVideo.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,278 +0,0 @@ -/* - * Copyright (C) 2005-2012 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - */ - -#include -#include -#include "config.h" -#include "bitstream.h" - -#include "parser_MPEGVideo.h" - -using namespace std; - -#define MPEG_PICTURE_START 0x00000100 -#define MPEG_SEQUENCE_START 0x000001b3 -#define MPEG_SEQUENCE_EXTENSION 0x000001b5 -#define MPEG_SLICE_S 0x00000101 -#define MPEG_SLICE_E 0x000001af - -/** - * MPEG2VIDEO frame duration table (in 90kHz clock domain) - */ -const unsigned int mpeg2video_framedurations[16] = { - 0, - 3753, - 3750, - 3600, - 3003, - 3000, - 1800, - 1501, - 1500, -}; - -cParserMPEG2Video::cParserMPEG2Video(int pID, cTSStream *stream, sPtsWrap *ptsWrap, bool observePtsWraps) - : cParser(pID, stream, ptsWrap, observePtsWraps) -{ - m_FrameDuration = 0; - m_vbvDelay = -1; - m_vbvSize = 0; - m_Height = 0; - m_Width = 0; - m_Dar = 0.0; - m_FpsScale = 0; - m_PesBufferInitialSize = 80000; - m_IsVideo = true; - Reset(); -} - -cParserMPEG2Video::~cParserMPEG2Video() -{ -} - -void cParserMPEG2Video::Parse(sStreamPacket *pkt) -{ - if (m_PesBufferPtr < 4) - return; - - int p = m_PesParserPtr; - uint32_t startcode = m_StartCode; - bool frameComplete = false; - int l; - while ((l = m_PesBufferPtr - p) > 3) - { - if ((startcode & 0xffffff00) == 0x00000100) - { - if (Parse_MPEG2Video(startcode, p, frameComplete) < 0) - { - break; - } - } - startcode = startcode << 8 | m_PesBuffer[p++]; - } - m_PesParserPtr = p; - m_StartCode = startcode; - - if (frameComplete) - { - if (!m_NeedSPS && !m_NeedIFrame) - { - if (m_FpsScale == 0) - { - if (m_FrameDuration != DVD_NOPTS_VALUE) - m_FpsScale = m_Stream->Rescale(m_FrameDuration, DVD_TIME_BASE, 90000); - else - m_FpsScale = 40000; - } - bool streamChange = m_Stream->SetVideoInformation(m_FpsScale, DVD_TIME_BASE, m_Height, m_Width, m_Dar); - - pkt->id = m_pID; - pkt->size = m_PesNextFramePtr; - pkt->data = m_PesBuffer; - pkt->dts = m_DTS; - pkt->pts = m_PTS; - pkt->duration = m_FrameDuration; - pkt->streamChange = streamChange; - } - m_StartCode = 0xffffffff; - m_PesParserPtr = 0; - m_FoundFrame = false; - } -} - -void cParserMPEG2Video::Reset() -{ - cParser::Reset(); - m_StartCode = 0xffffffff; - m_NeedIFrame = true; - m_NeedSPS = true; -} - -int cParserMPEG2Video::Parse_MPEG2Video(uint32_t startcode, int buf_ptr, bool &complete) -{ - int len = m_PesBufferPtr - buf_ptr; - uint8_t *buf = m_PesBuffer + buf_ptr; - - switch (startcode & 0xFF) - { - case 0: // picture start - { - if (m_NeedSPS) - { - m_FoundFrame = true; - return 0; - } - if (m_FoundFrame) - { - complete = true; - m_PesNextFramePtr = buf_ptr - 4; - return -1; - } - if (len < 4) - return -1; - if (!Parse_MPEG2Video_PicStart(buf)) - return 0; - - if (!m_FoundFrame) - { - m_AuPrevDTS = m_AuDTS; - if (buf_ptr - 4 >= m_PesTimePos) - { - m_AuDTS = m_curDTS != DVD_NOPTS_VALUE ? m_curDTS : m_curPTS; - m_AuPTS = m_curPTS; - } - else - { - m_AuDTS = m_prevDTS != DVD_NOPTS_VALUE ? m_prevDTS : m_prevPTS;; - m_AuPTS = m_prevPTS; - } - } - if (m_AuPrevDTS == m_AuDTS) - { - m_DTS = m_AuDTS + m_PicNumber*m_FrameDuration; - m_PTS = m_AuPTS + (m_TemporalReference-m_TrLastTime)*m_FrameDuration; - } - else - { - m_PTS = m_AuPTS; - m_DTS = m_AuDTS; - m_PicNumber = 0; - m_TrLastTime = m_TemporalReference; - } - - m_PicNumber++; - m_FoundFrame = true; - break; - } - - case 0xb3: // Sequence start code - { - if (m_FoundFrame) - { - complete = true; - m_PesNextFramePtr = buf_ptr - 4; - return -1; - } - if (len < 8) - return -1; - if (!Parse_MPEG2Video_SeqStart(buf)) - return 0; - - break; - } - - case 0xb7: // sequence end - { - if (m_FoundFrame) - { - complete = true; - m_PesNextFramePtr = buf_ptr; - return -1; - } - break; - } - - default: - break; - } - - return 0; -} - -bool cParserMPEG2Video::Parse_MPEG2Video_SeqStart(uint8_t *buf) -{ - cBitstream bs(buf, 8 * 8); - - m_Width = bs.readBits(12); - m_Height = bs.readBits(12); - - // figure out Display Aspect Ratio - uint8_t aspect = bs.readBits(4); - - switch(aspect) - { - case 1: - m_Dar = 1.0; - break; - case 2: - m_Dar = 4.0/3.0; - break; - case 3: - m_Dar = 16.0/9.0; - break; - case 4: - m_Dar = 2.21; - break; - default: - ERRORLOG("invalid / forbidden DAR in sequence header !"); - return false; - } - - m_FrameDuration = mpeg2video_framedurations[bs.readBits(4)]; - bs.skipBits(18); - bs.skipBits(1); - - m_vbvSize = bs.readBits(10) * 16 * 1024 / 8; - m_NeedSPS = false; - - return true; -} - -bool cParserMPEG2Video::Parse_MPEG2Video_PicStart(uint8_t *buf) -{ - cBitstream bs(buf, 4 * 8); - - m_TemporalReference = bs.readBits(10); /* temporal reference */ - - int pct = bs.readBits(3); - if (pct < PKT_I_FRAME || pct > PKT_B_FRAME) - return true; /* Illegal picture_coding_type */ - - if (pct == PKT_I_FRAME) - m_NeedIFrame = false; - - int vbvDelay = bs.readBits(16); /* vbv_delay */ - if (vbvDelay == 0xffff) - m_vbvDelay = -1; - else - m_vbvDelay = vbvDelay; - - return true; -} diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_MPEGVideo.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_MPEGVideo.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_MPEGVideo.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_MPEGVideo.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,63 +0,0 @@ -/* - * Copyright (C) 2005-2012 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - */ - -#ifndef VNSI_DEMUXER_MPEGVIDEO_H -#define VNSI_DEMUXER_MPEGVIDEO_H - -#include -#include "parser.h" - -class cBitstream; - -// --- cParserMPEG2Video ------------------------------------------------- - -class cParserMPEG2Video : public cParser -{ -private: - uint32_t m_StartCode; - bool m_NeedIFrame; - bool m_NeedSPS; - int m_FrameDuration; - int m_vbvDelay; /* -1 if CBR */ - int m_vbvSize; /* Video buffer size (in bytes) */ - int m_Width; - int m_Height; - float m_Dar; - int64_t m_DTS; - int64_t m_PTS; - int64_t m_AuDTS, m_AuPTS, m_AuPrevDTS; - int m_TemporalReference; - int m_TrLastTime; - int m_PicNumber; - int m_FpsScale; - - int Parse_MPEG2Video(uint32_t startcode, int buf_ptr, bool &complete); - bool Parse_MPEG2Video_SeqStart(uint8_t *buf); - bool Parse_MPEG2Video_PicStart(uint8_t *buf); - -public: - cParserMPEG2Video(int pID, cTSStream *stream, sPtsWrap *ptsWrap, bool observePtsWraps); - virtual ~cParserMPEG2Video(); - - virtual void Parse(sStreamPacket *pkt); - virtual void Reset(); -}; - -#endif // VNSI_DEMUXER_MPEGVIDEO_H diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_Subtitle.c xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_Subtitle.c --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_Subtitle.c 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_Subtitle.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,62 +0,0 @@ -/* - * Copyright (C) 2005-2012 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - */ - -#include -#include -#include "config.h" - -#include "parser_Subtitle.h" - -cParserSubtitle::cParserSubtitle(int pID, cTSStream *stream, sPtsWrap *ptsWrap, bool observePtsWraps) - : cParser(pID, stream, ptsWrap, observePtsWraps) -{ - m_PesBufferInitialSize = 4000; -} - -cParserSubtitle::~cParserSubtitle() -{ - -} - -void cParserSubtitle::Parse(sStreamPacket *pkt) -{ - int l = m_PesBufferPtr; - - if (l >= m_PesPacketLength) - { - if (l < 2 || m_PesBuffer[0] != 0x20 || m_PesBuffer[1] != 0x00) - { - Reset(); - return; - } - - if(m_PesBuffer[m_PesPacketLength-1] == 0xff) - { - pkt->id = m_pID; - pkt->data = m_PesBuffer+2; - pkt->size = m_PesPacketLength-3; - pkt->duration = 0; - pkt->dts = m_curDTS; - pkt->pts = m_curPTS; - } - - m_PesBufferPtr = 0; - } -} diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_Subtitle.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_Subtitle.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_Subtitle.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_Subtitle.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,38 +0,0 @@ -/* - * Copyright (C) 2005-2012 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - */ - -#ifndef VNSI_DEMUXER_SUBTITLE_H -#define VNSI_DEMUXER_SUBTITLE_H - -#include "parser.h" - -// --- cParserSubtitle ------------------------------------------------- - -class cParserSubtitle : public cParser -{ -public: - cParserSubtitle(int pID, cTSStream *stream, sPtsWrap *ptsWrap, bool observePtsWraps); - virtual ~cParserSubtitle(); - - virtual void Parse(sStreamPacket *pkt); -}; - - -#endif // VNSI_DEMUXER_SUBTITLE_H diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_Teletext.c xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_Teletext.c --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_Teletext.c 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_Teletext.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,59 +0,0 @@ -/* - * Copyright (C) 2005-2012 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - */ - -#include -#include "config.h" - -#include "parser_Teletext.h" - -cParserTeletext::cParserTeletext(int pID, cTSStream *stream, sPtsWrap *ptsWrap, bool observePtsWraps) - : cParser(pID, stream, ptsWrap, observePtsWraps) -{ - m_PesBufferInitialSize = 4000; -} - -cParserTeletext::~cParserTeletext() -{ -} - -void cParserTeletext::Parse(sStreamPacket *pkt) -{ - int l = m_PesBufferPtr; - if (l < 1) - return; - - if (m_PesBuffer[0] < 0x10 || m_PesBuffer[0] > 0x1F) - { - Reset(); - return; - } - - if (l >= m_PesPacketLength) - { - pkt->id = m_pID; - pkt->data = m_PesBuffer; - pkt->size = m_PesPacketLength; - pkt->duration = 0; - pkt->dts = m_curDTS; - pkt->pts = m_curPTS; - - m_PesBufferPtr = 0; - } -} diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_Teletext.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_Teletext.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_Teletext.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/parser_Teletext.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,41 +0,0 @@ -/* - * Copyright (C) 2005-2012 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - */ - -#ifndef VNSI_DEMUXER_TELETEXT_H -#define VNSI_DEMUXER_TELETEXT_H - -#include "parser.h" - -// --- cParserTeletext ------------------------------------------------- - -class cParserTeletext : public cParser -{ -private: - int64_t m_lastDTS; - int64_t m_lastPTS; - -public: - cParserTeletext(int pID, cTSStream *stream, sPtsWrap *ptsWrap, bool observePtsWraps); - virtual ~cParserTeletext(); - - virtual void Parse(sStreamPacket *pkt); -}; - -#endif // VNSI_DEMUXER_TELETEXT_H diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/patches/vdr-wirbelscan-0.0.5-pre11e-AddServiceInterface.diff xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/patches/vdr-wirbelscan-0.0.5-pre11e-AddServiceInterface.diff --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/patches/vdr-wirbelscan-0.0.5-pre11e-AddServiceInterface.diff 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/patches/vdr-wirbelscan-0.0.5-pre11e-AddServiceInterface.diff 1970-01-01 00:00:00.000000000 +0000 @@ -1,426 +0,0 @@ -diff -NaurwB wirbelscan-0.0.5-pre11e/common.h wirbelscan-patched/common.h ---- wirbelscan-0.0.5-pre11e/common.h 2010-03-17 11:32:34.000000000 +0100 -+++ wirbelscan-patched/common.h 2010-04-19 00:55:36.000000000 +0200 -@@ -11,16 +11,7 @@ - - #include - #include -- --typedef enum scantype { -- DVB_TERR = 0, -- DVB_CABLE = 1, -- DVB_SAT = 2, -- PVRINPUT = 3, -- PVRINPUT_FM = 4, -- DVB_ATSC = 5, --} scantype_t; -- -+#include "wirbelscanservice.h" - - - /* generic functions */ -diff -NaurwB wirbelscan-0.0.5-pre11e/dvb_wrapper.c wirbelscan-patched/dvb_wrapper.c ---- wirbelscan-0.0.5-pre11e/dvb_wrapper.c 2010-03-18 11:06:33.000000000 +0100 -+++ wirbelscan-patched/dvb_wrapper.c 2010-04-23 03:59:28.000000000 +0200 -@@ -1,5 +1,4 @@ - --#include //either API version 3.2 or 5.0 - #include - #include - #include -diff -NaurwB wirbelscan-0.0.5-pre11e/menusetup.c wirbelscan-patched/menusetup.c ---- wirbelscan-0.0.5-pre11e/menusetup.c 2010-03-17 13:10:15.000000000 +0100 -+++ wirbelscan-patched/menusetup.c 2010-04-23 03:59:41.000000000 +0200 -@@ -7,7 +7,6 @@ - */ - - --#include - #include - #include - #include -@@ -39,6 +38,7 @@ - cOsdItem * ChanNew = NULL; - cOsdItem * ChanAll = NULL; - cOsdItem * ScanType = NULL; -+sRemoteMenuScanning * RemoteMenuScanning = NULL; - - #define LOGLEN 8 - cOsdItem * LogMsg[LOGLEN]; -diff -NaurwB wirbelscan-0.0.5-pre11e/menusetup.h wirbelscan-patched/menusetup.h ---- wirbelscan-0.0.5-pre11e/menusetup.h 2010-03-17 11:32:34.000000000 +0100 -+++ wirbelscan-patched/menusetup.h 2010-04-23 02:04:08.000000000 +0200 -@@ -49,6 +49,16 @@ - bool DoScan (int DVB_Type); - void DoStop (void); - -+struct sRemoteMenuScanning { -+ void (*SetPercentage)(int percent); -+ void (*SetSignalStrength)(int strenght, bool locked); -+ void (*SetDeviceInfo)(const char *Info); -+ void (*SetTransponder)(const char *Info); -+ void (*NewChannel)(const char *Name, bool isRadio, bool isEncrypted, bool isHD); -+ void (*IsFinished)(); -+ void (*SetStatus)(int status); -+}; -+ - class cWirbelscan { - private: - public: -@@ -91,5 +101,6 @@ - void AddLogMsg(const char * Msg); - }; - extern cMenuScanning * MenuScanning; -+extern sRemoteMenuScanning * RemoteMenuScanning; - - #endif -diff -NaurwB wirbelscan-0.0.5-pre11e/scanfilter.c wirbelscan-patched/scanfilter.c ---- wirbelscan-0.0.5-pre11e/scanfilter.c 2010-03-17 11:32:34.000000000 +0100 -+++ wirbelscan-patched/scanfilter.c 2010-04-23 01:55:30.000000000 +0200 -@@ -1000,6 +1000,8 @@ - dlog(4, " SDT: old %s", *PrintChannel(channel)); - channel->SetName(pn, ps, pp); - dlog(2, " Upd: %s", *PrintChannel(channel)); -+ if (RemoteMenuScanning) -+ RemoteMenuScanning->NewChannel(channel->Name(), (channel->Vpid() == 0 && (channel->Apid(0) != 0 || channel->Dpid(0) != 0)), channel->Ca() != 0, sd->getServiceType() == 0x19); - } - } - else { -@@ -1009,6 +1011,8 @@ - transponder->CopyTransponderData(Channel()); - dlog(3, " SDT: Add: %s", *PrintTransponder(transponder)); - NewTransponders.Add(transponder); -+ if (RemoteMenuScanning) -+ RemoteMenuScanning->NewChannel(channel->Name(), (channel->Vpid() == 0 && (channel->Apid(0) != 0 || channel->Dpid(0) != 0)), channel->Ca() != 0, sd->getServiceType() == 0x19); - } - dlog(2, " SDT: Add %s", *PrintChannel(channel)); - } -diff -NaurwB wirbelscan-0.0.5-pre11e/scanner.c wirbelscan-patched/scanner.c ---- wirbelscan-0.0.5-pre11e/scanner.c 2010-03-18 10:52:52.000000000 +0100 -+++ wirbelscan-patched/scanner.c 2010-04-23 04:04:27.000000000 +0200 -@@ -289,6 +289,8 @@ - } - - dlog(1, "%s", *PrintChannel(channel)); -+ if (RemoteMenuScanning) -+ RemoteMenuScanning->NewChannel(channel->Name(), false, false, false); - Channels.IncBeingEdited(); - Channels.Add(channel); - Channels.DecBeingEdited(); -@@ -358,6 +360,7 @@ - if ((dev = GetPreferredDevice(aChannel)) == NULL) { - dlog(0, "No device available - exiting!"); - if (MenuScanning) MenuScanning->SetStatus((status = 2)); -+ if (RemoteMenuScanning) RemoteMenuScanning->SetStatus((status = 2)); - DeleteAndNull(aChannel); - return; - } -@@ -366,6 +369,7 @@ - GetTerrCapabilities(dev->CardIndex(), &crAuto, &modAuto, &invAuto, &bwAuto, &hAuto, &tmAuto, &gAuto); - dlog(1, "frontend %s supports", *GetFeName(dev->CardIndex())); - if (MenuScanning) MenuScanning->SetDeviceInfo(cString::sprintf("%s", *GetFeName(dev->CardIndex()))); -+ if (RemoteMenuScanning) RemoteMenuScanning->SetDeviceInfo(*cString::sprintf("%s", *GetFeName(dev->CardIndex()))); - - if (invAuto) { - dlog(1, "INVERSION_AUTO"); -@@ -439,6 +443,7 @@ - if ((dev = GetPreferredDevice(aChannel)) == NULL) { - dlog(0, "No device available - exiting!"); - if (MenuScanning) MenuScanning->SetStatus((status = 2)); -+ if (RemoteMenuScanning) RemoteMenuScanning->SetStatus((status = 2)); - DeleteAndNull(aChannel); - return; - } -@@ -447,6 +452,7 @@ - GetCableCapabilities(dev->CardIndex(), &crAuto, &modAuto, &invAuto); - dlog(1, "frontend %s supports", *GetFeName(dev->CardIndex())); - if (MenuScanning) MenuScanning->SetDeviceInfo(cString::sprintf("%s", *GetFeName(dev->CardIndex()))); -+ if (RemoteMenuScanning) RemoteMenuScanning->SetDeviceInfo(*cString::sprintf("%s", *GetFeName(dev->CardIndex()))); - if (invAuto) { - dlog(1, "INVERSION_AUTO"); - caps_inversion = INVERSION_AUTO; -@@ -526,6 +532,7 @@ - #endif - dlog(0, "No DVB-S2 device available - trying fallback to DVB-S"); - if (MenuScanning) MenuScanning->SetStatus(3); -+ if (RemoteMenuScanning) RemoteMenuScanning->SetStatus(3); - // SetSatTransponderDataFromVDR(aChannel, cSource::FromString(sat_list[this_channellist].source_id), 11112, eHorizontal, 27500, eCoderate56, eSatModulationQpsk, eDvbs, eRolloff35); - SetSatTransponderDataFromDVB(aChannel, - cSource::FromString(sat_list[this_channellist].source_id), -@@ -536,6 +543,7 @@ - if ((dev = GetPreferredDevice(aChannel)) == NULL) { - dlog(0, "No device available - exiting!"); - if (MenuScanning) MenuScanning->SetStatus((status = 2)); -+ if (RemoteMenuScanning) RemoteMenuScanning->SetStatus((status = 2)); - DeleteAndNull(aChannel); - return; - } -@@ -545,6 +553,7 @@ - GetSatCapabilities(dev->CardIndex(), &crAuto, &modAuto, &roAuto, &s2Support); - dlog(1, "frontend %s supports", *GetFeName(dev->CardIndex())); - if (MenuScanning) MenuScanning->SetDeviceInfo(cString::sprintf("%s", *GetFeName(dev->CardIndex()))); -+ if (RemoteMenuScanning) RemoteMenuScanning->SetDeviceInfo(*cString::sprintf("%s", *GetFeName(dev->CardIndex()))); - caps_inversion = INVERSION_AUTO; - if (crAuto) { - dlog(1, "FEC_AUTO"); -@@ -578,6 +587,7 @@ - if ((dev = GetPreferredDevice(aChannel)) == NULL) { - dlog(0, "No device available - exiting!"); - if (MenuScanning) MenuScanning->SetStatus((status = 2)); -+ if (RemoteMenuScanning) RemoteMenuScanning->SetStatus((status = 2)); - DeleteAndNull(aChannel); - return; - } -@@ -586,6 +596,7 @@ - GetAtscCapabilities(dev->CardIndex(), &crAuto, &modAuto, &invAuto, &vsbSupport, &qamSupport); - dlog(1, "frontend %s supports", *GetFeName(dev->CardIndex())); - if (MenuScanning) MenuScanning->SetDeviceInfo(cString::sprintf("%s", *GetFeName(dev->CardIndex()))); -+ if (RemoteMenuScanning) RemoteMenuScanning->SetDeviceInfo(*cString::sprintf("%s", *GetFeName(dev->CardIndex()))); - if (invAuto) { - dlog(1, "INVERSION_AUTO\n"); - caps_inversion = INVERSION_AUTO; -@@ -660,6 +671,7 @@ - #endif - dlog(0, "No device available - exiting! (pvrinput not running?)"); - if (MenuScanning) MenuScanning->SetStatus((status = 2)); -+ if (RemoteMenuScanning) RemoteMenuScanning->SetStatus((status = 2)); - DeleteAndNull(aChannel); - return; - } -@@ -707,6 +719,8 @@ - } - if (MenuScanning) - MenuScanning->SetDeviceInfo(cString::sprintf("%s", vcap.card)); -+ if (RemoteMenuScanning) -+ RemoteMenuScanning->SetDeviceInfo(*cString::sprintf("%s", vcap.card)); - dev->DetachAllReceivers(); - break; - } -@@ -716,6 +730,7 @@ - } // end switch type - - if (MenuScanning) MenuScanning->SetStatus(1); -+ if (RemoteMenuScanning) RemoteMenuScanning->SetStatus(1); - - //count channels. - -@@ -933,6 +948,11 @@ - type, (lastChannel - thisChannel)); - MenuScanning->SetTransponder(aChannel); - } -+ if (RemoteMenuScanning) -+ { -+ RemoteMenuScanning->SetPercentage((int) (thisChannel * 100) / lastChannel); -+ RemoteMenuScanning->SetTransponder(*PrintTransponder(aChannel)); -+ } - dev->SwitchChannel(aChannel, false); - SwReceiver = new cSwReceiver::cSwReceiver(aChannel); - dev->AttachReceiver(SwReceiver); -@@ -952,6 +972,7 @@ - lock = false; - - if (MenuScanning) MenuScanning->SetStr(GetFrontendStrength(dev->CardIndex()), lock); -+ if (RemoteMenuScanning) RemoteMenuScanning->SetSignalStrength(GetFrontendStrength(dev->CardIndex()), lock); - if (! lock) { - continue; - } -@@ -971,6 +992,8 @@ - cChannel * newChannel = new cChannel; - if (MenuScanning) - MenuScanning->SetStr(s, true); -+ if (RemoteMenuScanning) -+ RemoteMenuScanning->SetSignalStrength(s, true); - - newChannel->Parse(*aChannel->ToText()); - newChannel->SetName(*channelname, *shortname, (const char *) "analog"); -@@ -988,6 +1011,8 @@ - else { - if (MenuScanning) - MenuScanning->SetStr(0, false); -+ if (RemoteMenuScanning) -+ RemoteMenuScanning->SetSignalStrength(0, false); - } - break; - } -@@ -1108,6 +1133,13 @@ - - stop: - if (MenuScanning) MenuScanning->SetStatus((status = 0)); -+ if (RemoteMenuScanning) -+ { -+ RemoteMenuScanning->SetStatus((status = 0)); -+ RemoteMenuScanning->IsFinished(); -+ delete RemoteMenuScanning; -+ RemoteMenuScanning = NULL; -+ } - dlog(3, "leaving scanner"); - Cancel(0); - } -diff -NaurwB wirbelscan-0.0.5-pre11e/statemachine.c wirbelscan-patched/statemachine.c ---- wirbelscan-0.0.5-pre11e/statemachine.c 2010-03-17 11:32:34.000000000 +0100 -+++ wirbelscan-patched/statemachine.c 2010-04-22 17:07:02.000000000 +0200 -@@ -129,6 +129,11 @@ - MenuScanning->SetTransponder(Transponder); - MenuScanning->SetProgress(-1, DVB_TERR, -1); - } -+ if (RemoteMenuScanning) -+ { -+ RemoteMenuScanning->SetPercentage(-1); -+ RemoteMenuScanning->SetTransponder(*PrintTransponder(Transponder)); -+ } - - ScannedTransponder = new cChannel(* Transponder); - ScannedTransponders.Add(ScannedTransponder); -@@ -143,6 +148,8 @@ - } - if (MenuScanning) - MenuScanning->SetStr(GetFrontendStrength(dev->CardIndex()), dev->HasLock(1)); -+ if (RemoteMenuScanning) -+ RemoteMenuScanning->SetSignalStrength(GetFrontendStrength(dev->CardIndex()), dev->HasLock(1)); - break; - - case eNextTransponder: -diff -NaurwB wirbelscan-0.0.5-pre11e/wirbelscan.c wirbelscan-patched/wirbelscan.c ---- wirbelscan-0.0.5-pre11e/wirbelscan.c 2010-03-17 11:32:34.000000000 +0100 -+++ wirbelscan-patched/wirbelscan.c 2010-04-23 03:17:50.000000000 +0200 -@@ -9,6 +9,8 @@ - #include - #include - #include "menusetup.h" -+#include "countries.h" -+#include "satellites.h" - #if VDRVERSNUM < 10507 - #include "i18n.h" - #endif -@@ -141,7 +143,69 @@ - - bool cPluginWirbelscan::Service(const char *Id, void *Data) - { -- // Handle custom service requests from other plugins -+ if (strcmp(Id,"WirbelScanService-DoScan-v1.0") == 0) -+ { -+ if (Data) -+ { -+ WirbelScanService_DoScan_v1_0 *svc = (WirbelScanService_DoScan_v1_0*)Data; -+ -+ Wirbelscan.scanflags = svc->scan_tv ? SCAN_TV : 0; -+ Wirbelscan.scanflags |= svc->scan_radio ? SCAN_RADIO : 0; -+ Wirbelscan.scanflags |= svc->scan_scrambled ? SCAN_SCRAMBLED : 0; -+ Wirbelscan.scanflags |= svc->scan_fta ? SCAN_FTA : 0; -+ Wirbelscan.scanflags |= svc->scan_hd ? SCAN_HD : 0; -+ Wirbelscan.CountryIndex = svc->CountryIndex; -+ Wirbelscan.DVBC_Inversion = svc->DVBC_Inversion; -+ Wirbelscan.DVBC_Symbolrate = svc->DVBC_Symbolrate; -+ Wirbelscan.DVBC_QAM = svc->DVBC_QAM; -+ Wirbelscan.DVBT_Inversion = svc->DVBT_Inversion; -+ Wirbelscan.SatIndex = svc->SatIndex; -+ Wirbelscan.ATSC_type = svc->ATSC_Type; -+ -+ RemoteMenuScanning = new sRemoteMenuScanning; -+ RemoteMenuScanning->SetPercentage = svc->SetPercentage; -+ RemoteMenuScanning->SetSignalStrength = svc->SetSignalStrength; -+ RemoteMenuScanning->SetDeviceInfo = svc->SetDeviceInfo; -+ RemoteMenuScanning->SetTransponder = svc->SetTransponder; -+ RemoteMenuScanning->NewChannel = svc->NewChannel; -+ RemoteMenuScanning->IsFinished = svc->IsFinished; -+ RemoteMenuScanning->SetStatus = svc->SetStatus; -+ -+ return DoScan(svc->type); -+ } -+ } -+ else if (strcmp(Id,"WirbelScanService-StopScan-v1.0") == 0) -+ { -+ DoStop(); -+ return true; -+ } -+ else if (strcmp(Id,"WirbelScanService-GetCountries-v1.0") == 0) -+ { -+ if (Data) -+ { -+ WirbelScanService_GetCountries_v1_0 SetCountry = (WirbelScanService_GetCountries_v1_0) Data; -+ for (int i=0; i < COUNTRY::country_count(); i++) -+ { -+ SetCountry(COUNTRY::country_list[i].id, COUNTRY::country_list[i].short_name, COUNTRY::country_list[i].full_name); -+ } -+ return true; -+ } -+ } -+ else if (strcmp(Id,"WirbelScanService-GetSatellites-v1.0") == 0) -+ { -+ if (Data) -+ { -+ WirbelScanService_GetSatellites_v1_0 SetSatellite = (WirbelScanService_GetSatellites_v1_0) Data; -+ for (int i=0; i < sat_count(); i++) -+ { -+ SetSatellite(sat_list[i].id, sat_list[i].short_name, sat_list[i].full_name); -+ } -+ return true; -+ } -+ -+ return true; -+ } -+ - return false; - } - -diff -NaurwB wirbelscan-0.0.5-pre11e/wirbelscanservice.h wirbelscan-patched/wirbelscanservice.h ---- wirbelscan-0.0.5-pre11e/wirbelscanservice.h 1970-01-01 01:00:00.000000000 +0100 -+++ wirbelscan-patched/wirbelscanservice.h 2010-04-23 02:03:56.000000000 +0200 -@@ -0,0 +1,57 @@ -+/* -+ * wirbelscan.c: A plugin for the Video Disk Recorder -+ * -+ * See the README file for copyright information and how to reach the author. -+ * -+ * $Id$ -+ */ -+ -+#ifndef __WIRBELSCAN_SERVICE_H -+#define __WIRBELSCAN_SERVICE_H -+ -+typedef enum scantype -+{ -+ DVB_TERR = 0, -+ DVB_CABLE = 1, -+ DVB_SAT = 2, -+ PVRINPUT = 3, -+ PVRINPUT_FM = 4, -+ DVB_ATSC = 5, -+} scantype_t; -+ -+typedef void (*WirbelScanService_GetCountries_v1_0)(int index, const char *isoName, const char *longName); -+typedef void (*WirbelScanService_GetSatellites_v1_0)(int index, const char *shortName, const char *longName); -+ -+struct WirbelScanService_DoScan_v1_0 -+{ -+ scantype_t type; -+ -+ bool scan_tv; -+ bool scan_radio; -+ bool scan_fta; -+ bool scan_scrambled; -+ bool scan_hd; -+ -+ int CountryIndex; -+ -+ int DVBC_Inversion; -+ int DVBC_Symbolrate; -+ int DVBC_QAM; -+ -+ int DVBT_Inversion; -+ -+ int SatIndex; -+ -+ int ATSC_Type; -+ -+ void (*SetPercentage)(int percent); -+ void (*SetSignalStrength)(int strenght, bool locked); -+ void (*SetDeviceInfo)(const char *Info); -+ void (*SetTransponder)(const char *Info); -+ void (*NewChannel)(const char *Name, bool isRadio, bool isEncrypted, bool isHD); -+ void (*IsFinished)(); -+ void (*SetStatus)(int status); -+}; -+ -+#endif //__WIRBELSCAN_SERVICE_H -+ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/README xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/README --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/README 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/README 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -This is a "plugin" for the Video Disk Recorder (VDR). - -Project's homepage: xbmc.org - -Latest version available at: -https://github.com/opdenkamp/xbmc-pvr-addons/tree/master/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. -See the file COPYING for more information. - - -Description: ------------- - -VDR plugin to handle XBMC clients. -The vdr-plugin-vnsiserver is able to handle serveral XBMC clients connecting via the VNSI addon. - -VNSI supports also dynamic PID switching of the received DVB-TS stream. Further it detect and demuxing several -not by VDR implemented Audio Streams, this are: -- Enhanced AC3 (not tested) -- Advanced Audio Coding (AAC) (not tested) -- DTS (demuxer not finished now, and does not work) diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/recordingscache.c xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/recordingscache.c --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/recordingscache.c 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/recordingscache.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,70 +0,0 @@ -/* - * vdr-plugin-vnsi - XBMC server plugin for VDR - * - * Copyright (C) 2011 Alexander Pipelka - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ - -#include "config.h" -#include "recordingscache.h" -#include "hash.h" - -cRecordingsCache::cRecordingsCache() { -} - -cRecordingsCache::~cRecordingsCache() { -} - -cRecordingsCache& cRecordingsCache::GetInstance() { - static cRecordingsCache singleton; - return singleton; -} - -uint32_t cRecordingsCache::Register(cRecording* recording) { - cString filename = recording->FileName(); - uint32_t uid = CreateStringHash(filename); - - m_mutex.Lock(); - if(m_recordings.find(uid) == m_recordings.end()) - { - DEBUGLOG("%s - uid: %08x '%s'", __FUNCTION__, uid, (const char*)filename); - m_recordings[uid] = filename; - } - m_mutex.Unlock(); - - return uid; -} - -cRecording* cRecordingsCache::Lookup(uint32_t uid) { - DEBUGLOG("%s - lookup uid: %08x", __FUNCTION__, uid); - - if(m_recordings.find(uid) == m_recordings.end()) { - DEBUGLOG("%s - not found !", __FUNCTION__); - return NULL; - } - - m_mutex.Lock(); - cString filename = m_recordings[uid]; - DEBUGLOG("%s - filename: %s", __FUNCTION__, (const char*)filename); - - cRecording* r = Recordings.GetByName(filename); - DEBUGLOG("%s - recording %s", __FUNCTION__, (r == NULL) ? "not found !" : "found"); - m_mutex.Unlock(); - - return r; -} diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/recordingscache.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/recordingscache.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/recordingscache.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/recordingscache.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,56 +0,0 @@ -/* - * vdr-plugin-vnsi - XBMC server plugin for VDR - * - * Copyright (C) 2011 Alexander Pipelka - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ - -#ifndef VNSI_RECORDINGSCACHE_H -#define VNSI_RECORDINGSCACHE_H - -#include -#include -#include -#include -#include - -class cRecordingsCache -{ -protected: - - cRecordingsCache(); - - virtual ~cRecordingsCache(); - -public: - - static cRecordingsCache& GetInstance(); - - uint32_t Register(cRecording* recording); - - cRecording* Lookup(uint32_t uid); - -private: - - std::map m_recordings; - - cMutex m_mutex; -}; - - -#endif // VNSI_RECORDINGSCACHE_H diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/recplayer.c xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/recplayer.c --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/recplayer.c 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/recplayer.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,347 +0,0 @@ -/* - * vdr-plugin-vnsi - XBMC server plugin for VDR - * - * Copyright (C) 2004-2005 Chris Tallon - * Copyright (C) 2010 Alwin Esch (Team XBMC) - * Copyright (C) 2010, 2011 Alexander Pipelka - * - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ - -/* - * This code is taken from VOMP for VDR plugin. - */ - -#include "recplayer.h" -#include -#include -#include -#include - -#ifndef O_NOATIME -#define O_NOATIME 0 -#endif - -cRecPlayer::cRecPlayer(cRecording* rec, bool inProgress) -{ - m_file = -1; - m_fileOpen = -1; - m_recordingFilename = strdup(rec->FileName()); - m_inProgress = inProgress; - - // FIXME find out max file path / name lengths -#if VDRVERSNUM < 10703 - m_pesrecording = true; - m_indexFile = new cIndexFile(m_recordingFilename, false); -#else - m_pesrecording = rec->IsPesRecording(); - if(m_pesrecording) INFOLOG("recording '%s' is a PES recording", m_recordingFilename); - m_indexFile = new cIndexFile(m_recordingFilename, false, m_pesrecording); -#endif - - scan(); -} - -void cRecPlayer::cleanup() { - for(int i = 0; i != m_segments.Size(); i++) { - delete m_segments[i]; - } - m_segments.Clear(); -} - -void cRecPlayer::scan() -{ - struct stat s; - - closeFile(); - - m_totalLength = 0; - m_fileOpen = -1; - m_totalFrames = 0; - - cleanup(); - - for(int i = 0; ; i++) // i think we only need one possible loop - { - fileNameFromIndex(i); - - if(stat(m_fileName, &s) == -1) { - break; - } - - cSegment* segment = new cSegment(); - segment->start = m_totalLength; - segment->end = segment->start + s.st_size; - - m_segments.Append(segment); - - m_totalLength += s.st_size; - INFOLOG("File %i found, size: %lu, totalLength now %lu", i, s.st_size, m_totalLength); - } - - m_totalFrames = m_indexFile->Last(); - INFOLOG("total frames: %u", m_totalFrames); -} - -void cRecPlayer::reScan() -{ - struct stat s; - - m_totalLength = 0; - - for(int i = 0; ; i++) // i think we only need one possible loop - { - fileNameFromIndex(i); - - if(stat(m_fileName, &s) == -1) { - break; - } - - cSegment* segment; - if (m_segments.Size() < i+1) - { - cSegment* segment = new cSegment(); - m_segments.Append(segment); - segment->start = m_totalLength; - } - else - segment = m_segments[i]; - - segment->end = segment->start + s.st_size; - - m_totalLength += s.st_size; - } - - m_totalFrames = m_indexFile->Last(); -} - - -cRecPlayer::~cRecPlayer() -{ - cleanup(); - closeFile(); - free(m_recordingFilename); -} - -char* cRecPlayer::fileNameFromIndex(int index) { - if (m_pesrecording) - snprintf(m_fileName, sizeof(m_fileName), "%s/%03i.vdr", m_recordingFilename, index+1); - else - snprintf(m_fileName, sizeof(m_fileName), "%s/%05i.ts", m_recordingFilename, index+1); - - return m_fileName; -} - -bool cRecPlayer::openFile(int index) -{ - if (index == m_fileOpen) return true; - closeFile(); - - fileNameFromIndex(index); - INFOLOG("openFile called for index %i string:%s", index, m_fileName); - - m_file = open(m_fileName, O_RDONLY); - if (m_file == -1) - { - INFOLOG("file failed to open"); - m_fileOpen = -1; - return false; - } - m_fileOpen = index; - return true; -} - -void cRecPlayer::closeFile() -{ - if(m_file == -1) { - return; - } - - INFOLOG("file closed"); - close(m_file); - - m_file = -1; - m_fileOpen = -1; -} - -uint64_t cRecPlayer::getLengthBytes() -{ - return m_totalLength; -} - -uint32_t cRecPlayer::getLengthFrames() -{ - return m_totalFrames; -} - -int cRecPlayer::getBlock(unsigned char* buffer, uint64_t position, int amount) -{ - // dont let the block be larger than 256 kb - if (amount > 512*1024) - amount = 512*1024; - - if ((uint64_t)amount > m_totalLength) - amount = m_totalLength; - - if (position >= m_totalLength) - { - reScan(); - if (position >= m_totalLength) - { - return 0; - } - } - - if ((position + amount) > m_totalLength) - amount = m_totalLength - position; - - // work out what block "position" is in - int segmentNumber = -1; - for(int i = 0; i < m_segments.Size(); i++) - { - if ((position >= m_segments[i]->start) && (position < m_segments[i]->end)) { - segmentNumber = i; - break; - } - } - - // segment not found / invalid position - if (segmentNumber == -1) - return 0; - - // open file (if not already open) - if (!openFile(segmentNumber)) - return 0; - - // work out position in current file - uint64_t filePosition = position - m_segments[segmentNumber]->start; - - // seek to position - if(lseek(m_file, filePosition, SEEK_SET) == -1) - { - ERRORLOG("unable to seek to position: %lu", filePosition); - return 0; - } - - // try to read the block - int bytes_read = read(m_file, buffer, amount); - - // we may got stuck at end of segment - if ((bytes_read == 0) && (position < m_totalLength)) - bytes_read += getBlock(buffer, position+1 , amount); - - if(bytes_read <= 0) - { - return 0; - } - - if (!m_inProgress) - { -#ifndef __FreeBSD__ - // Tell linux not to bother keeping the data in the FS cache - posix_fadvise(m_file, filePosition, bytes_read, POSIX_FADV_DONTNEED); -#endif - } - - return bytes_read; -} - -uint64_t cRecPlayer::positionFromFrameNumber(uint32_t frameNumber) -{ - if (!m_indexFile) - return 0; -#if VDRVERSNUM < 10703 - unsigned char retFileNumber; - int retFileOffset; - unsigned char retPicType; -#else - uint16_t retFileNumber; - off_t retFileOffset; - bool retPicType; -#endif - int retLength; - - - if (!m_indexFile->Get((int)frameNumber, &retFileNumber, &retFileOffset, &retPicType, &retLength)) - return 0; - - if (retFileNumber >= m_segments.Size()) - return 0; - - uint64_t position = m_segments[retFileNumber]->start + retFileOffset; - return position; -} - -uint32_t cRecPlayer::frameNumberFromPosition(uint64_t position) -{ - if (!m_indexFile) return 0; - - if (position >= m_totalLength) - { - DEBUGLOG("Client asked for data starting past end of recording!"); - return m_totalFrames; - } - - int segmentNumber = -1; - for(int i = 0; i < m_segments.Size(); i++) - { - if ((position >= m_segments[i]->start) && (position < m_segments[i]->end)) { - segmentNumber = i; - break; - } - } - - if(segmentNumber == -1) { - return m_totalFrames; - } - - uint32_t askposition = position - m_segments[segmentNumber]->start; - return m_indexFile->Get((int)segmentNumber, askposition); -} - - -bool cRecPlayer::getNextIFrame(uint32_t frameNumber, uint32_t direction, uint64_t* rfilePosition, uint32_t* rframeNumber, uint32_t* rframeLength) -{ - // 0 = backwards - // 1 = forwards - - if (!m_indexFile) return false; - -#if VDRVERSNUM < 10703 - unsigned char waste1; - int waste2; -#else - uint16_t waste1; - off_t waste2; -#endif - - int iframeLength; - int indexReturnFrameNumber; - - indexReturnFrameNumber = (uint32_t)m_indexFile->GetNextIFrame(frameNumber, (direction==1 ? true : false), &waste1, &waste2, &iframeLength); - DEBUGLOG("GNIF input framenumber:%u, direction=%u, output:framenumber=%i, framelength=%i", frameNumber, direction, indexReturnFrameNumber, iframeLength); - - if (indexReturnFrameNumber == -1) return false; - - *rfilePosition = positionFromFrameNumber(indexReturnFrameNumber); - *rframeNumber = (uint32_t)indexReturnFrameNumber; - *rframeLength = (uint32_t)iframeLength; - - return true; -} diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/recplayer.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/recplayer.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/recplayer.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/recplayer.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,82 +0,0 @@ -/* - * vdr-plugin-vnsi - XBMC server plugin for VDR - * - * Copyright (C) 2004-2005 Chris Tallon - * Copyright (C) 2010 Alwin Esch (Team XBMC) - * Copyright (C) 2010, 2011 Alexander Pipelka - * - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ - -/* - * This code is taken from VOMP for VDR plugin. - */ - -#ifndef VNSI_RECPLAYER_H -#define VNSI_RECPLAYER_H - -#include -#include -#include - -#include "config.h" - -class cSegment -{ - public: - uint64_t start; - uint64_t end; -}; - -class cRecPlayer -{ -public: - cRecPlayer(cRecording* rec, bool inProgress = false); - ~cRecPlayer(); - uint64_t getLengthBytes(); - uint32_t getLengthFrames(); - int getBlock(unsigned char* buffer, uint64_t position, int amount); - - bool openFile(int index); - void closeFile(); - - void scan(); - void reScan(); - uint64_t positionFromFrameNumber(uint32_t frameNumber); - uint32_t frameNumberFromPosition(uint64_t position); - bool getNextIFrame(uint32_t frameNumber, uint32_t direction, uint64_t* rfilePosition, uint32_t* rframeNumber, uint32_t* rframeLength); - -private: - void cleanup(); - char* fileNameFromIndex(int index); - void checkBufferSize(int s); - - char m_fileName[512]; - cIndexFile *m_indexFile; - int m_file; - int m_fileOpen; - cVector m_segments; - uint64_t m_totalLength; - uint32_t m_totalFrames; - char *m_recordingFilename; - bool m_pesrecording; - bool m_inProgress; -}; - -#endif // VNSI_RECPLAYER_H diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/requestpacket.c xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/requestpacket.c --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/requestpacket.c 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/requestpacket.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,147 +0,0 @@ -/* - * vdr-plugin-vnsi - XBMC server plugin for VDR - * - * Copyright (C) 2007 Chris Tallon - * Copyright (C) 2010 Alwin Esch (Team XBMC) - * Copyright (C) 2010, 2011 Alexander Pipelka - * - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ - -#include -#include -#include - -#ifndef __FreeBSD__ -#include -#else -#include -#define __be64_to_cpu be64toh -#define __cpu_to_be64 htobe64 -#endif - -#include "config.h" -#include "requestpacket.h" -#include "vnsicommand.h" - -cRequestPacket::cRequestPacket(uint32_t requestID, uint32_t opcode, uint8_t* data, uint32_t dataLength) - : userData(data), userDataLength(dataLength), opCode(opcode), requestID(requestID) -{ - packetPos = 0; - ownBlock = true; - channelID = 0; - streamID = 0; - flag = 0; -} - -cRequestPacket::~cRequestPacket() -{ - if (!ownBlock) return; // don't free if it's a getblock - - if (userData) free(userData); -} - -bool cRequestPacket::end() -{ - return (packetPos >= userDataLength); -} - -int cRequestPacket::serverError() -{ - if ((packetPos == 0) && (userDataLength == 4) && !ntohl(*(uint32_t*)userData)) return 1; - else return 0; -} - -char* cRequestPacket::extract_String() -{ - if (serverError()) return NULL; - - int length = strlen((char*)&userData[packetPos]); - if ((packetPos + length) > userDataLength) return NULL; - char* str = new char[length + 1]; - strcpy(str, (char*)&userData[packetPos]); - packetPos += length + 1; - return str; -} - -uint8_t cRequestPacket::extract_U8() -{ - if ((packetPos + sizeof(uint8_t)) > userDataLength) return 0; - uint8_t uc = userData[packetPos]; - packetPos += sizeof(uint8_t); - return uc; -} - -uint32_t cRequestPacket::extract_U32() -{ - if ((packetPos + sizeof(uint32_t)) > userDataLength) return 0; - uint32_t ul; - memcpy(&ul, &userData[packetPos], sizeof(uint32_t)); - ul = ntohl(ul); - packetPos += sizeof(uint32_t); - return ul; -} - -uint64_t cRequestPacket::extract_U64() -{ - if ((packetPos + sizeof(uint64_t)) > userDataLength) return 0; - uint64_t ull; - memcpy(&ull, &userData[packetPos], sizeof(uint64_t)); - ull = __be64_to_cpu(ull); - packetPos += sizeof(uint64_t); - return ull; -} - -int64_t cRequestPacket::extract_S64() -{ - if ((packetPos + sizeof(int64_t)) > userDataLength) return 0; - int64_t ll; - memcpy(&ll, &userData[packetPos], sizeof(int64_t)); - ll = __be64_to_cpu(ll); - packetPos += sizeof(int64_t); - return ll; -} - -double cRequestPacket::extract_Double() -{ - if ((packetPos + sizeof(uint64_t)) > userDataLength) return 0; - uint64_t ull; - memcpy(&ull, &userData[packetPos], sizeof(uint64_t)); - ull = __be64_to_cpu(ull); - double d; - memcpy(&d, &ull, sizeof(double)); - packetPos += sizeof(uint64_t); - return d; -} - -int32_t cRequestPacket::extract_S32() -{ - if ((packetPos + sizeof(int32_t)) > userDataLength) return 0; - int32_t l; - memcpy(&l, &userData[packetPos], sizeof(int32_t)); - l = ntohl(l); - packetPos += sizeof(int32_t); - return l; -} - -uint8_t* cRequestPacket::getData() -{ - ownBlock = false; - return userData; -} diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/requestpacket.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/requestpacket.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/requestpacket.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/requestpacket.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,74 +0,0 @@ -/* - * vdr-plugin-vnsi - XBMC server plugin for VDR - * - * Copyright (C) 2007 Chris Tallon - * Copyright (C) 2010 Alwin Esch (Team XBMC) - * Copyright (C) 2010, 2011 Alexander Pipelka - * - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ - -#ifndef VNSI_REQUESTPACKET_H -#define VNSI_REQUESTPACKET_H - -class cRequestPacket -{ -public: - cRequestPacket(uint32_t requestID, uint32_t opcode, uint8_t* data, uint32_t dataLength); - ~cRequestPacket(); - - int serverError(); - - uint32_t getDataLength() { return userDataLength; } - uint32_t getChannelID() { return channelID; } - uint32_t getRequestID() { return requestID; } - uint32_t getStreamID() { return streamID; } - uint32_t getFlag() { return flag; } - uint32_t getOpCode() { return opCode; } - - char* extract_String(); - uint8_t extract_U8(); - uint32_t extract_U32(); - uint64_t extract_U64(); - int64_t extract_S64(); - int32_t extract_S32(); - double extract_Double(); - - bool end(); - - // If you call this, the memory becomes yours. Free with free() - uint8_t* getData(); - -private: - uint8_t* userData; - uint32_t userDataLength; - uint32_t packetPos; - uint32_t opCode; - - uint32_t channelID; - - uint32_t requestID; - uint32_t streamID; - - uint32_t flag; // stream only - - bool ownBlock; -}; - -#endif // VNSI_REQUESTPACKET_H diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/responsepacket.c xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/responsepacket.c --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/responsepacket.c 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/responsepacket.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,294 +0,0 @@ -/* - * vdr-plugin-vnsi - XBMC server plugin for VDR - * - * Copyright (C) 2007 Chris Tallon - * Copyright (C) 2010 Alwin Esch (Team XBMC) - * Copyright (C) 2010, 2011 Alexander Pipelka - * - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ - -/* - * This code is taken from VOMP for VDR plugin. - */ - -#include -#include -#include -#include - -#ifndef __FreeBSD__ -#include -#else -#include -#define __be64_to_cpu be64toh -#define __cpu_to_be64 htobe64 -#endif - -#include "responsepacket.h" -#include "vnsicommand.h" -#include "config.h" - -/* Packet format for an RR channel response: - -4 bytes = channel ID = 1 (request/response channel) -4 bytes = request ID (from serialNumber) -4 bytes = length of the rest of the packet -? bytes = rest of packet. depends on packet -*/ - -cResponsePacket::cResponsePacket() -{ - buffer = NULL; - bufSize = 0; - bufUsed = 0; -} - -cResponsePacket::~cResponsePacket() -{ - if (buffer) free(buffer); -} - -void cResponsePacket::initBuffers() -{ - if (buffer == NULL) { - bufSize = 512; - buffer = (uint8_t*)malloc(bufSize); - } -} - -bool cResponsePacket::init(uint32_t requestID) -{ - initBuffers(); - - uint32_t ul; - - ul = htonl(VNSI_CHANNEL_REQUEST_RESPONSE); // RR channel - memcpy(&buffer[0], &ul, sizeof(uint32_t)); - ul = htonl(requestID); - memcpy(&buffer[4], &ul, sizeof(uint32_t)); - ul = 0; - memcpy(&buffer[userDataLenPos], &ul, sizeof(uint32_t)); - - bufUsed = headerLength; - - return true; -} - -bool cResponsePacket::initScan(uint32_t opCode) -{ - initBuffers(); - - uint32_t ul; - - ul = htonl(VNSI_CHANNEL_SCAN); // RR channel - memcpy(&buffer[0], &ul, sizeof(uint32_t)); - ul = htonl(opCode); - memcpy(&buffer[4], &ul, sizeof(uint32_t)); - ul = 0; - memcpy(&buffer[userDataLenPos], &ul, sizeof(uint32_t)); - - bufUsed = headerLength; - - return true; -} - -bool cResponsePacket::initStatus(uint32_t opCode) -{ - initBuffers(); - - uint32_t ul; - - ul = htonl(VNSI_CHANNEL_STATUS); // RR channel - memcpy(&buffer[0], &ul, sizeof(uint32_t)); - ul = htonl(opCode); - memcpy(&buffer[4], &ul, sizeof(uint32_t)); - ul = 0; - memcpy(&buffer[userDataLenPos], &ul, sizeof(uint32_t)); - - bufUsed = headerLength; - - return true; -} - -bool cResponsePacket::initStream(uint32_t opCode, uint32_t streamID, uint32_t duration, int64_t pts, int64_t dts, uint32_t serial) -{ - initBuffers(); - - uint32_t ul; - uint64_t ull; - - ul = htonl(VNSI_CHANNEL_STREAM); // stream channel - memcpy(&buffer[0], &ul, sizeof(uint32_t)); - ul = htonl(opCode); // Stream packet operation code - memcpy(&buffer[4], &ul, sizeof(uint32_t)); - ul = htonl(streamID); // Stream ID - memcpy(&buffer[8], &ul, sizeof(uint32_t)); - ul = htonl(duration); // Duration - memcpy(&buffer[12], &ul, sizeof(uint32_t)); - ull = __cpu_to_be64(pts); // PTS - memcpy(&buffer[16], &ull, sizeof(uint64_t)); - ull = __cpu_to_be64(dts); // DTS - memcpy(&buffer[24], &ull, sizeof(uint64_t)); - ul = htonl(serial); - memcpy(&buffer[32], &ul, sizeof(uint32_t)); - ul = 0; - memcpy(&buffer[userDataLenPosStream], &ul, sizeof(uint32_t)); - - bufUsed = headerLengthStream; - - return true; -} - -bool cResponsePacket::initOsd(uint32_t opCode, int32_t wnd, int32_t color, int32_t x0, int32_t y0, int32_t x1, int32_t y1) -{ - initBuffers(); - - uint32_t ul; - int32_t l; - - ul = htonl(VNSI_CHANNEL_OSD); // stream OSD - memcpy(&buffer[0], &ul, sizeof(uint32_t)); - ul = htonl(opCode); // OSD operation code - memcpy(&buffer[4], &ul, sizeof(uint32_t)); - l = htonl(wnd); // Window - memcpy(&buffer[8], &l, sizeof(int32_t)); - l = htonl(color); // Color - memcpy(&buffer[12], &l, sizeof(int32_t)); - l = htonl(x0); // x0 - memcpy(&buffer[16], &l, sizeof(int32_t)); - l = htonl(y0); // y0 - memcpy(&buffer[20], &l, sizeof(int32_t)); - l = htonl(x1); // x1 - memcpy(&buffer[24], &l, sizeof(int32_t)); - l = htonl(y1); // y1 - memcpy(&buffer[28], &l, sizeof(int32_t)); - ul = 0; - memcpy(&buffer[userDataLenPosOSD], &ul, sizeof(uint32_t)); - - bufUsed = headerLengthOSD; - - return true; -} - -void cResponsePacket::finalise() -{ - uint32_t ul = htonl(bufUsed - headerLength); - memcpy(&buffer[userDataLenPos], &ul, sizeof(uint32_t)); -} - -void cResponsePacket::finaliseStream() -{ - uint32_t ul = htonl(bufUsed - headerLengthStream); - memcpy(&buffer[userDataLenPosStream], &ul, sizeof(uint32_t)); -} - -void cResponsePacket::finaliseOSD() -{ - uint32_t ul = htonl(bufUsed - headerLengthOSD); - memcpy(&buffer[userDataLenPosOSD], &ul, sizeof(uint32_t)); -} - -bool cResponsePacket::copyin(const uint8_t* src, uint32_t len) -{ - if (!checkExtend(len)) return false; - memcpy(buffer + bufUsed, src, len); - bufUsed += len; - return true; -} - -uint8_t* cResponsePacket::reserve(uint32_t len) { - if (!checkExtend(len)) return false; - uint8_t* result = buffer + bufUsed; - bufUsed += len; - return result; -} - -bool cResponsePacket::unreserve(uint32_t len) { - if(bufUsed < len) return false; - bufUsed -= len; - return true; -} - -bool cResponsePacket::add_String(const char* string) -{ - uint32_t len = strlen(string) + 1; - if (!checkExtend(len)) return false; - memcpy(buffer + bufUsed, string, len); - bufUsed += len; - return true; -} - -bool cResponsePacket::add_U32(uint32_t ul) -{ - if (!checkExtend(sizeof(uint32_t))) return false; - uint32_t tmp = htonl(ul); - memcpy(&buffer[bufUsed], &tmp, sizeof(uint32_t)); - bufUsed += sizeof(uint32_t); - return true; -} - -bool cResponsePacket::add_U8(uint8_t c) -{ - if (!checkExtend(sizeof(uint8_t))) return false; - buffer[bufUsed] = c; - bufUsed += sizeof(uint8_t); - return true; -} - -bool cResponsePacket::add_S32(int32_t l) -{ - if (!checkExtend(sizeof(int32_t))) return false; - int32_t tmp = htonl(l); - memcpy(&buffer[bufUsed], &tmp, sizeof(int32_t)); - bufUsed += sizeof(int32_t); - return true; -} - -bool cResponsePacket::add_U64(uint64_t ull) -{ - if (!checkExtend(sizeof(uint64_t))) return false; - uint64_t tmp = __cpu_to_be64(ull); - memcpy(&buffer[bufUsed], &tmp, sizeof(uint64_t)); - bufUsed += sizeof(uint64_t); - return true; -} - -bool cResponsePacket::add_double(double d) -{ - if (!checkExtend(sizeof(double))) return false; - uint64_t ull; - memcpy(&ull, &d, sizeof(double)); - ull = __cpu_to_be64(ull); - memcpy(&buffer[bufUsed], &ull, sizeof(uint64_t)); - bufUsed += sizeof(uint64_t); - return true; -} - - -bool cResponsePacket::checkExtend(uint32_t by) -{ - if ((bufUsed + by) < bufSize) return true; - if (512 > by) by = 512; - uint8_t* newBuf = (uint8_t*)realloc(buffer, bufSize + by); - if (!newBuf) return false; - buffer = newBuf; - bufSize += by; - return true; -} diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/responsepacket.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/responsepacket.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/responsepacket.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/responsepacket.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,82 +0,0 @@ -/* - * vdr-plugin-vnsi - XBMC server plugin for VDR - * - * Copyright (C) 2007 Chris Tallon - * Copyright (C) 2010 Alwin Esch (Team XBMC) - * Copyright (C) 2010, 2011 Alexander Pipelka - * - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ - -/* - * This code is taken from VOMP for VDR plugin. - */ - -#ifndef VNSI_RESPONSEPACKET_H -#define VNSI_RESPONSEPACKET_H - -class cResponsePacket -{ -public: - cResponsePacket(); - ~cResponsePacket(); - - bool init(uint32_t requestID); - bool initScan(uint32_t opCode); - bool initStatus(uint32_t opCode); - bool initStream(uint32_t opCode, uint32_t streamID, uint32_t duration, int64_t pts, int64_t dts, uint32_t serial); - bool initOsd(uint32_t opCode, int32_t wnd, int32_t color, int32_t x0, int32_t y0, int32_t x1, int32_t y1); - void finalise(); - void finaliseStream(); - void finaliseOSD(); - bool copyin(const uint8_t* src, uint32_t len); - uint8_t* reserve(uint32_t len); - bool unreserve(uint32_t len); - - bool add_String(const char* string); - bool add_U32(uint32_t ul); - bool add_S32(int32_t l); - bool add_U8(uint8_t c); - bool add_U64(uint64_t ull); - bool add_double(double d); - - uint8_t* getPtr() { return buffer; } - uint32_t getLen() { return bufUsed; } - uint32_t getStreamHeaderLength() { return headerLengthStream; } ; - uint32_t getOSDHeaderLength() { return headerLengthOSD; } ; - void setLen(uint32_t len) { bufUsed = len; } - -private: - uint8_t* buffer; - uint32_t bufSize; - uint32_t bufUsed; - - void initBuffers(); - bool checkExtend(uint32_t by); - - const static uint32_t headerLength = 12; - const static uint32_t userDataLenPos = 8; - const static uint32_t headerLengthStream = 40; - const static uint32_t userDataLenPosStream = 36; - const static uint32_t headerLengthOSD = 36; - const static uint32_t userDataLenPosOSD = 32; -}; - -#endif // VNSI_RESPONSEPACKET_H - diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/setup.c xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/setup.c --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/setup.c 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/setup.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,72 +0,0 @@ -/* - * Copyright (C) 2005-2012 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - */ - -#include "setup.h" -#include "vnsicommand.h" - -int PmtTimeout = 5; -int TimeshiftMode = 0; -int TimeshiftBufferSize = 5; -int TimeshiftBufferFileSize = 6; -char TimeshiftBufferDir[PATH_MAX] = "\0"; - -cMenuSetupVNSI::cMenuSetupVNSI(void) -{ - newPmtTimeout = PmtTimeout; - Add(new cMenuEditIntItem( tr("PMT Timeout (0-10)"), &newPmtTimeout)); - - timeshiftModesTexts[0] = tr("Off"); - timeshiftModesTexts[1] = tr("RAM"); - timeshiftModesTexts[2] = tr("File"); - newTimeshiftMode = TimeshiftMode; - Add(new cMenuEditStraItem( tr("Time Shift Mode"), &newTimeshiftMode, 3, timeshiftModesTexts)); - - newTimeshiftBufferSize = TimeshiftBufferSize; - Add(new cMenuEditIntItem( tr("TS Buffersize (RAM) (1-20) x 100MB"), &newTimeshiftBufferSize)); - - newTimeshiftBufferFileSize = TimeshiftBufferFileSize; - Add(new cMenuEditIntItem( tr("TS Buffersize (File) (1-10) x 1GB"), &newTimeshiftBufferFileSize)); - - strn0cpy(newTimeshiftBufferDir, TimeshiftBufferDir, sizeof(newTimeshiftBufferDir)); - Add(new cMenuEditStrItem(tr("TS Buffer Directory"), newTimeshiftBufferDir, sizeof(newTimeshiftBufferDir))); -} - -void cMenuSetupVNSI::Store(void) -{ - if (newPmtTimeout > 10 || newPmtTimeout < 0) - newPmtTimeout = 2; - SetupStore(CONFNAME_PMTTIMEOUT, PmtTimeout = newPmtTimeout); - - SetupStore(CONFNAME_TIMESHIFT, TimeshiftMode = newTimeshiftMode); - - if (newTimeshiftBufferSize > 40) - newTimeshiftBufferSize = 40; - else if (newTimeshiftBufferSize < 1) - newTimeshiftBufferSize = 1; - SetupStore(CONFNAME_TIMESHIFTBUFFERSIZE, TimeshiftBufferSize = newTimeshiftBufferSize); - - if (newTimeshiftBufferFileSize > 20) - newTimeshiftBufferFileSize = 20; - else if (newTimeshiftBufferFileSize < 1) - newTimeshiftBufferFileSize = 1; - SetupStore(CONFNAME_TIMESHIFTBUFFERFILESIZE, TimeshiftBufferFileSize = newTimeshiftBufferFileSize); - - SetupStore(CONFNAME_TIMESHIFTBUFFERDIR, strn0cpy(TimeshiftBufferDir, newTimeshiftBufferDir, sizeof(TimeshiftBufferDir))); -} diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/setup.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/setup.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/setup.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/setup.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,41 +0,0 @@ -/* -* Copyright (C) 2005-2012 Team XBMC -* http://www.xbmc.org -* -* This Program is free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2, or (at your option) -* any later version. -* -* This Program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with XBMC; see the file COPYING. If not, see -* . -* -*/ - -#ifndef VNSI_SETUP_H -#define VNSI_SETUP_H - -#include - -class cMenuSetupVNSI : public cMenuSetupPage -{ -private: - int newPmtTimeout; - int newTimeshiftMode; - const char *timeshiftModesTexts[3]; - int newTimeshiftBufferSize; - int newTimeshiftBufferFileSize; - char newTimeshiftBufferDir[PATH_MAX]; -protected: - virtual void Store(void); -public: - cMenuSetupVNSI(void); -}; - -#endif // VNSI_SETUP_H diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/status.c xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/status.c --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/status.c 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/status.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,160 +0,0 @@ -/* - * Copyright (C) 2005-2014 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - */ - -#include "vnsi.h" -#include "status.h" -#include "vnsiclient.h" -#include -#include -#include -#include - -cVNSIStatus::~cVNSIStatus() -{ - Shutdown(); -} - -void cVNSIStatus::Shutdown() -{ - Cancel(5); - cMutexLock lock(&m_mutex); - for (ClientList::iterator i = m_clients.begin(); i != m_clients.end(); i++) - { - delete (*i); - } - m_clients.erase(m_clients.begin(), m_clients.end()); -} - -void cVNSIStatus::AddClient(cVNSIClient* client) -{ - cMutexLock lock(&m_mutex); - m_clients.push_back(client); -} - -void cVNSIStatus::Action(void) -{ - cTimeMs chanTimer(0); - - // get initial state of the recordings - int recState = -1; - Recordings.StateChanged(recState); - - // get initial state of the timers - int timerState = -1; - Timers.Modified(timerState); - - // last update of epg - time_t epgUpdate = cSchedules::Modified(); - - // delete old timeshift file - cString cmd; - struct stat sb; - if ((*TimeshiftBufferDir) && stat(TimeshiftBufferDir, &sb) == 0 && S_ISDIR(sb.st_mode)) - { - if (TimeshiftBufferDir[strlen(TimeshiftBufferDir)-1] == '/') - cmd = cString::sprintf("rm -f %s*.vnsi", TimeshiftBufferDir); - else - cmd = cString::sprintf("rm -f %s/*.vnsi", TimeshiftBufferDir); - } - else - { -#if VDRVERSNUM >= 20102 - cmd = cString::sprintf("rm -f %s/*.vnsi", cVideoDirectory::Name()); -#else - cmd = cString::sprintf("rm -f %s/*.vnsi", VideoDirectory); -#endif - } - int ret = system(cmd); - - // set thread priority - SetPriority(1); - - while (Running()) - { - m_mutex.Lock(); - - // remove disconnected clients - for (ClientList::iterator i = m_clients.begin(); i != m_clients.end();) - { - if (!(*i)->Active()) - { - INFOLOG("Client with ID %u seems to be disconnected, removing from client list", (*i)->GetID()); - delete (*i); - i = m_clients.erase(i); - } - else { - i++; - } - } - - // trigger clients to reload the modified channel list - if(m_clients.size() > 0 && chanTimer.TimedOut()) - { - int modified = Channels.Modified(); - if (modified) - { - Channels.SetModified((modified == CHANNELSMOD_USER) ? true : false); - INFOLOG("Requesting clients to reload channel list"); - for (ClientList::iterator i = m_clients.begin(); i != m_clients.end(); i++) - (*i)->ChannelsChange(); - } - chanTimer.Set(5000); - } - - // reset inactivity timeout as long as there are clients connected - if(m_clients.size() > 0) { - ShutdownHandler.SetUserInactiveTimeout(); - } - - // update recordings - if(Recordings.StateChanged(recState)) - { - INFOLOG("Recordings state changed (%i)", recState); - INFOLOG("Requesting clients to reload recordings list"); - for (ClientList::iterator i = m_clients.begin(); i != m_clients.end(); i++) - (*i)->RecordingsChange(); - } - - // update timers - if(Timers.Modified(timerState)) - { - INFOLOG("Timers state changed (%i)", timerState); - INFOLOG("Requesting clients to reload timers"); - for (ClientList::iterator i = m_clients.begin(); i != m_clients.end(); i++) - { - (*i)->TimerChange(); - } - } - - // update epg - if((cSchedules::Modified() > epgUpdate + 10) || time(NULL) > epgUpdate + 300) - { - for (ClientList::iterator i = m_clients.begin(); i != m_clients.end(); i++) - { - (*i)->EpgChange(); - } - epgUpdate = cSchedules::Modified(); - } - - m_mutex.Unlock(); - - usleep(250*1000); - } -} diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/status.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/status.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/status.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/status.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,42 +0,0 @@ -/* - * Copyright (C) 2005-2014 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - */ - -#pragma once - -#include -#include - -class cVNSIClient; - -typedef std::list ClientList; - -class cVNSIStatus : public cThread -{ -public: - virtual ~cVNSIStatus(); - void Shutdown(); - void AddClient(cVNSIClient* client); - -protected: - virtual void Action(void); - - ClientList m_clients; - cMutex m_mutex; -}; diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/streamer.c xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/streamer.c --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/streamer.c 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/streamer.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,670 +0,0 @@ -/* - * vdr-plugin-vnsi - XBMC server plugin for VDR - * - * Copyright (C) 2010 Alwin Esch (Team XBMC) - * Copyright (C) 2010, 2011 Alexander Pipelka - * - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ - -#include -#include -#include - -#include - -#include "config.h" -#include "streamer.h" -#include "cxsocket.h" -#include "vnsicommand.h" -#include "responsepacket.h" -#include "vnsi.h" -#include "videobuffer.h" - - -// --- cLiveStreamer ------------------------------------------------- - -cLiveStreamer::cLiveStreamer(int clientID, uint8_t timeshift, uint32_t timeout) - : cThread("cLiveStreamer stream processor") - , m_ClientID(clientID) - , m_scanTimeout(timeout) - , m_VideoInput(m_Event, m_Mutex, m_IsRetune) -{ - m_Channel = NULL; - m_Socket = NULL; - m_Frontend = -1; - m_IsAudioOnly = false; - m_IsMPEGPS = false; - m_startup = true; - m_SignalLost = false; - m_IFrameSeen = false; - m_VideoBuffer = NULL; - m_Timeshift = timeshift; - m_IsRetune = false; - - memset(&m_FrontendInfo, 0, sizeof(m_FrontendInfo)); - - if(m_scanTimeout == 0) - m_scanTimeout = VNSIServerConfig.stream_timeout; -} - -cLiveStreamer::~cLiveStreamer() -{ - DEBUGLOG("Started to delete live streamer"); - - Cancel(5); - Close(); - - DEBUGLOG("Finished to delete live streamer"); -} - -bool cLiveStreamer::Open(int serial) -{ - Close(); - -#if APIVERSNUM >= 10725 - m_Device = cDevice::GetDevice(m_Channel, m_Priority, true, true); -#else - m_Device = cDevice::GetDevice(m_Channel, m_Priority, true); -#endif - - if (!m_Device) - return false; - - bool recording = false; - if (0) // test harness - { - recording = true; - m_VideoBuffer = cVideoBuffer::Create("/home/xbmc/test.ts"); - } - else if (serial == -1) - { - for (cTimer *timer = Timers.First(); timer; timer = Timers.Next(timer)) - { - if (timer && - timer->Recording() && - timer->Channel() == m_Channel) - { - Recordings.Load(); - cRecording matchRec(timer, timer->Event()); - cRecording *rec; - { - cThreadLock RecordingsLock(&Recordings); - rec = Recordings.GetByName(matchRec.FileName()); - if (!rec) - { - return false; - } - } - m_VideoBuffer = cVideoBuffer::Create(rec); - recording = true; - break; - } - } - } - if (!recording) - { - m_VideoBuffer = cVideoBuffer::Create(m_ClientID, m_Timeshift); - } - - if (!m_VideoBuffer) - return false; - - if (!recording) - { - if (m_Channel && ((m_Channel->Source() >> 24) == 'V')) - m_IsMPEGPS = true; - - m_IsRetune = false; - if (!m_VideoInput.Open(m_Channel, m_Priority, m_VideoBuffer)) - { - ERRORLOG("Can't switch to channel %i - %s", m_Channel->Number(), m_Channel->Name()); - return false; - } - } - - m_Demuxer.Open(*m_Channel, m_VideoBuffer); - if (serial >= 0) - m_Demuxer.SetSerial(serial); - - return true; -} - -void cLiveStreamer::Close(void) -{ - INFOLOG("LiveStreamer::Close - close"); - m_VideoInput.Close(); - m_Demuxer.Close(); - if (m_VideoBuffer) - { - delete m_VideoBuffer; - m_VideoBuffer = NULL; - } - - if (m_Frontend >= 0) - { - close(m_Frontend); - m_Frontend = -1; - } -} - -void cLiveStreamer::Action(void) -{ - int ret; - sStreamPacket pkt; - memset(&pkt, 0, sizeof(sStreamPacket)); - bool requestStreamChange = false; - cTimeMs last_info(1000); - cTimeMs bufferStatsTimer(1000); - - while (Running()) - { - ret = m_Demuxer.Read(&pkt); - if (ret > 0) - { - if (pkt.pmtChange) - { - requestStreamChange = true; - } - if (pkt.data) - { - if (pkt.streamChange || requestStreamChange) - sendStreamChange(); - requestStreamChange = false; - if (pkt.reftime) - { - sendRefTime(&pkt); - pkt.reftime = 0; - } - sendStreamPacket(&pkt); - } - - // send signal info every 10 sec. - if(last_info.Elapsed() >= 10*1000) - { - last_info.Set(0); - sendSignalInfo(); - } - - // send buffer stats - if(bufferStatsTimer.TimedOut()) - { - sendBufferStatus(); - bufferStatsTimer.Set(1000); - } - } - else if (ret == -1) - { - // no data - { - cMutexLock lock(&m_Mutex); - if (m_IsRetune) - { - m_VideoInput.Close(); - m_VideoInput.Open(m_Channel, m_Priority, m_VideoBuffer); - m_IsRetune = false; - } - else - m_Event.TimedWait(m_Mutex, 10); - } - if(m_last_tick.Elapsed() >= (uint64_t)(m_scanTimeout*1000)) - { - sendStreamStatus(); - m_last_tick.Set(0); - m_SignalLost = true; - } - } - else if (ret == -2) - { - if (!Open(m_Demuxer.GetSerial())) - { - m_Socket->Shutdown(); - break; - } - } - } - INFOLOG("exit streamer thread"); -} - -bool cLiveStreamer::StreamChannel(const cChannel *channel, int priority, cxSocket *Socket, cResponsePacket *resp) -{ - if (channel == NULL) - { - ERRORLOG("Starting streaming of channel without valid channel"); - return false; - } - - m_Channel = channel; - m_Priority = priority; - m_Socket = Socket; - - if (!Open()) - return false; - - // Send the OK response here, that it is before the Stream end message - resp->add_U32(VNSI_RET_OK); - resp->finalise(); - m_Socket->write(resp->getPtr(), resp->getLen()); - - Activate(true); - - INFOLOG("Successfully switched to channel %i - %s", m_Channel->Number(), m_Channel->Name()); - return true; -} - -inline void cLiveStreamer::Activate(bool On) -{ - if (On) - { - DEBUGLOG("VDR active, sending stream start message"); - Start(); - } - else - { - DEBUGLOG("VDR inactive, sending stream end message"); - Cancel(5); - } -} - -void cLiveStreamer::sendStreamPacket(sStreamPacket *pkt) -{ - if(pkt == NULL) - return; - - if(pkt->size == 0) - return; - - if (!m_streamHeader.initStream(VNSI_STREAM_MUXPKT, pkt->id, pkt->duration, pkt->pts, pkt->dts, pkt->serial)) - { - ERRORLOG("stream response packet init fail"); - return; - } - m_streamHeader.setLen(m_streamHeader.getStreamHeaderLength() + pkt->size); - m_streamHeader.finaliseStream(); - - m_Socket->LockWrite(); - m_Socket->write(m_streamHeader.getPtr(), m_streamHeader.getStreamHeaderLength(), -1, true); - m_Socket->write(pkt->data, pkt->size); - m_Socket->UnlockWrite(); - - m_last_tick.Set(0); - m_SignalLost = false; -} - -void cLiveStreamer::sendStreamChange() -{ - cResponsePacket *resp = new cResponsePacket(); - if (!resp->initStream(VNSI_STREAM_CHANGE, 0, 0, 0, 0, 0)) - { - ERRORLOG("stream response packet init fail"); - delete resp; - return; - } - - uint32_t FpsScale, FpsRate, Height, Width; - double Aspect; - uint32_t Channels, SampleRate, BitRate, BitsPerSample, BlockAlign; - for (cTSStream* stream = m_Demuxer.GetFirstStream(); stream; stream = m_Demuxer.GetNextStream()) - { - resp->add_U32(stream->GetPID()); - if (stream->Type() == stMPEG2AUDIO) - { - stream->GetAudioInformation(Channels, SampleRate, BitRate, BitsPerSample, BlockAlign); - resp->add_String("MPEG2AUDIO"); - resp->add_String(stream->GetLanguage()); - resp->add_U32(Channels); - resp->add_U32(SampleRate); - resp->add_U32(BlockAlign); - resp->add_U32(BitRate); - resp->add_U32(BitsPerSample); - } - else if (stream->Type() == stMPEG2VIDEO) - { - stream->GetVideoInformation(FpsScale, FpsRate, Height, Width, Aspect); - resp->add_String("MPEG2VIDEO"); - resp->add_U32(FpsScale); - resp->add_U32(FpsRate); - resp->add_U32(Height); - resp->add_U32(Width); - resp->add_double(Aspect); - } - else if (stream->Type() == stAC3) - { - stream->GetAudioInformation(Channels, SampleRate, BitRate, BitsPerSample, BlockAlign); - resp->add_String("AC3"); - resp->add_String(stream->GetLanguage()); - resp->add_U32(Channels); - resp->add_U32(SampleRate); - resp->add_U32(BlockAlign); - resp->add_U32(BitRate); - resp->add_U32(BitsPerSample); - } - else if (stream->Type() == stH264) - { - stream->GetVideoInformation(FpsScale, FpsRate, Height, Width, Aspect); - resp->add_String("H264"); - resp->add_U32(FpsScale); - resp->add_U32(FpsRate); - resp->add_U32(Height); - resp->add_U32(Width); - resp->add_double(Aspect); - } - else if (stream->Type() == stDVBSUB) - { - resp->add_String("DVBSUB"); - resp->add_String(stream->GetLanguage()); - resp->add_U32(stream->CompositionPageId()); - resp->add_U32(stream->AncillaryPageId()); - } - else if (stream->Type() == stTELETEXT) - { - resp->add_String("TELETEXT"); - resp->add_String(stream->GetLanguage()); - resp->add_U32(stream->CompositionPageId()); - resp->add_U32(stream->AncillaryPageId()); - } - else if (stream->Type() == stAACADTS) - { - stream->GetAudioInformation(Channels, SampleRate, BitRate, BitsPerSample, BlockAlign); - resp->add_String("AAC"); - resp->add_String(stream->GetLanguage()); - resp->add_U32(Channels); - resp->add_U32(SampleRate); - resp->add_U32(BlockAlign); - resp->add_U32(BitRate); - resp->add_U32(BitsPerSample); - } - else if (stream->Type() == stAACLATM) - { - stream->GetAudioInformation(Channels, SampleRate, BitRate, BitsPerSample, BlockAlign); - resp->add_String("AAC_LATM"); - resp->add_String(stream->GetLanguage()); - resp->add_U32(Channels); - resp->add_U32(SampleRate); - resp->add_U32(BlockAlign); - resp->add_U32(BitRate); - resp->add_U32(BitsPerSample); - } - else if (stream->Type() == stEAC3) - { - stream->GetAudioInformation(Channels, SampleRate, BitRate, BitsPerSample, BlockAlign); - resp->add_String("EAC3"); - resp->add_String(stream->GetLanguage()); - resp->add_U32(Channels); - resp->add_U32(SampleRate); - resp->add_U32(BlockAlign); - resp->add_U32(BitRate); - resp->add_U32(BitsPerSample); - } - else if (stream->Type() == stDTS) - { - stream->GetAudioInformation(Channels, SampleRate, BitRate, BitsPerSample, BlockAlign); - resp->add_String("DTS"); - resp->add_String(stream->GetLanguage()); - resp->add_U32(Channels); - resp->add_U32(SampleRate); - resp->add_U32(BlockAlign); - resp->add_U32(BitRate); - resp->add_U32(BitsPerSample); - } - } - - resp->finaliseStream(); - m_Socket->write(resp->getPtr(), resp->getLen()); - delete resp; -} - -void cLiveStreamer::sendSignalInfo() -{ - /* If no frontend is found m_Frontend is set to -2, in this case - return a empty signalinfo package */ - if (m_Frontend == -2) - { - cResponsePacket *resp = new cResponsePacket(); - if (!resp->initStream(VNSI_STREAM_SIGNALINFO, 0, 0, 0, 0, 0)) - { - ERRORLOG("stream response packet init fail"); - delete resp; - return; - } - - resp->add_String(*cString::sprintf("Unknown")); - resp->add_String(*cString::sprintf("Unknown")); - resp->add_U32(0); - resp->add_U32(0); - resp->add_U32(0); - resp->add_U32(0); - - resp->finaliseStream(); - m_Socket->write(resp->getPtr(), resp->getLen()); - delete resp; - return; - } - - if (m_Channel && ((m_Channel->Source() >> 24) == 'V')) - { - if (m_Frontend < 0) - { - for (int i = 0; i < 8; i++) - { - m_DeviceString = cString::sprintf("/dev/video%d", i); - m_Frontend = open(m_DeviceString, O_RDONLY | O_NONBLOCK); - if (m_Frontend >= 0) - { - if (ioctl(m_Frontend, VIDIOC_QUERYCAP, &m_vcap) < 0) - { - ERRORLOG("cannot read analog frontend info."); - close(m_Frontend); - m_Frontend = -1; - memset(&m_vcap, 0, sizeof(m_vcap)); - continue; - } - break; - } - } - if (m_Frontend < 0) - m_Frontend = -2; - } - - if (m_Frontend >= 0) - { - cResponsePacket *resp = new cResponsePacket(); - if (!resp->initStream(VNSI_STREAM_SIGNALINFO, 0, 0, 0, 0, 0)) - { - ERRORLOG("stream response packet init fail"); - delete resp; - return; - } - resp->add_String(*cString::sprintf("Analog #%s - %s (%s)", *m_DeviceString, (char *) m_vcap.card, m_vcap.driver)); - resp->add_String(""); - resp->add_U32(0); - resp->add_U32(0); - resp->add_U32(0); - resp->add_U32(0); - - resp->finaliseStream(); - m_Socket->write(resp->getPtr(), resp->getLen()); - delete resp; - } - } - else - { - if (m_Frontend < 0) - { - m_DeviceString = cString::sprintf(FRONTEND_DEVICE, m_Device->CardIndex(), 0); - m_Frontend = open(m_DeviceString, O_RDONLY | O_NONBLOCK); - if (m_Frontend >= 0) - { - if (ioctl(m_Frontend, FE_GET_INFO, &m_FrontendInfo) < 0) - { - ERRORLOG("cannot read frontend info."); - close(m_Frontend); - m_Frontend = -2; - memset(&m_FrontendInfo, 0, sizeof(m_FrontendInfo)); - return; - } - } - } - - if (m_Frontend >= 0) - { - cResponsePacket *resp = new cResponsePacket(); - if (!resp->initStream(VNSI_STREAM_SIGNALINFO, 0, 0, 0, 0, 0)) - { - ERRORLOG("stream response packet init fail"); - delete resp; - return; - } - - fe_status_t status; - uint16_t fe_snr; - uint16_t fe_signal; - uint32_t fe_ber; - uint32_t fe_unc; - - memset(&status, 0, sizeof(status)); - ioctl(m_Frontend, FE_READ_STATUS, &status); - - if (ioctl(m_Frontend, FE_READ_SIGNAL_STRENGTH, &fe_signal) == -1) - fe_signal = -2; - if (ioctl(m_Frontend, FE_READ_SNR, &fe_snr) == -1) - fe_snr = -2; - if (ioctl(m_Frontend, FE_READ_BER, &fe_ber) == -1) - fe_ber = -2; - if (ioctl(m_Frontend, FE_READ_UNCORRECTED_BLOCKS, &fe_unc) == -1) - fe_unc = -2; - - switch (m_Channel->Source() & cSource::st_Mask) - { - case cSource::stSat: - resp->add_String(*cString::sprintf("DVB-S%s #%d - %s", (m_FrontendInfo.caps & 0x10000000) ? "2" : "", cDevice::ActualDevice()->CardIndex(), m_FrontendInfo.name)); - break; - case cSource::stCable: - resp->add_String(*cString::sprintf("DVB-C #%d - %s", cDevice::ActualDevice()->CardIndex(), m_FrontendInfo.name)); - break; - case cSource::stTerr: - resp->add_String(*cString::sprintf("DVB-T #%d - %s", cDevice::ActualDevice()->CardIndex(), m_FrontendInfo.name)); - break; - } - resp->add_String(*cString::sprintf("%s:%s:%s:%s:%s", (status & FE_HAS_LOCK) ? "LOCKED" : "-", (status & FE_HAS_SIGNAL) ? "SIGNAL" : "-", (status & FE_HAS_CARRIER) ? "CARRIER" : "-", (status & FE_HAS_VITERBI) ? "VITERBI" : "-", (status & FE_HAS_SYNC) ? "SYNC" : "-")); - resp->add_U32(fe_snr); - resp->add_U32(fe_signal); - resp->add_U32(fe_ber); - resp->add_U32(fe_unc); - - resp->finaliseStream(); - m_Socket->write(resp->getPtr(), resp->getLen()); - delete resp; - } - } -} - -void cLiveStreamer::sendStreamStatus() -{ - cResponsePacket *resp = new cResponsePacket(); - if (!resp->initStream(VNSI_STREAM_STATUS, 0, 0, 0, 0, 0)) - { - ERRORLOG("stream response packet init fail"); - delete resp; - return; - } - uint16_t error = m_Demuxer.GetError(); - if (error & ERROR_PES_SCRAMBLE) - { - INFOLOG("Channel: scrambled %d", error); - resp->add_String(cString::sprintf("Channel: scrambled (%d)", error)); - } - else if (error & ERROR_PES_STARTCODE) - { - INFOLOG("Channel: startcode %d", error); - resp->add_String(cString::sprintf("Channel: encrypted? (%d)", error)); - } - else if (error & ERROR_DEMUX_NODATA) - { - INFOLOG("Channel: no data %d", error); - resp->add_String(cString::sprintf("Channel: no data")); - } - else - { - INFOLOG("Channel: unknown error %d", error); - resp->add_String(cString::sprintf("Channel: unknown error (%d)", error)); - } - - resp->finaliseStream(); - m_Socket->write(resp->getPtr(), resp->getLen()); - delete resp; -} - -void cLiveStreamer::sendBufferStatus() -{ - cResponsePacket *resp = new cResponsePacket(); - if (!resp->initStream(VNSI_STREAM_BUFFERSTATS, 0, 0, 0, 0, 0)) - { - ERRORLOG("stream response packet init fail"); - delete resp; - return; - } - uint32_t start, end; - bool timeshift; - m_Demuxer.BufferStatus(timeshift, start, end); - resp->add_U8(timeshift); - resp->add_U32(start); - resp->add_U32(end); - resp->finaliseStream(); - m_Socket->write(resp->getPtr(), resp->getLen()); - delete resp; -} - -void cLiveStreamer::sendRefTime(sStreamPacket *pkt) -{ - if(pkt == NULL) - return; - - cResponsePacket *resp = new cResponsePacket(); - if (!resp->initStream(VNSI_STREAM_REFTIME, 0, 0, 0, 0, 0)) - { - ERRORLOG("stream response packet init fail"); - delete resp; - return; - } - - resp->add_U32(pkt->reftime); - resp->add_U64(pkt->pts); - resp->finaliseStream(); - m_Socket->write(resp->getPtr(), resp->getLen()); - delete resp; -} - -bool cLiveStreamer::SeekTime(int64_t time, uint32_t &serial) -{ - bool ret = m_Demuxer.SeekTime(time); - serial = m_Demuxer.GetSerial(); - return ret; -} - -void cLiveStreamer::RetuneChannel(const cChannel *channel) -{ - if (m_Channel != channel || !m_VideoInput.IsOpen()) - return; - - INFOLOG("re-tune to channel %s", m_Channel->Name()); - cMutexLock lock(&m_Mutex); - m_IsRetune = true; - m_Event.Broadcast(); -} diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/streamer.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/streamer.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/streamer.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/streamer.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,107 +0,0 @@ -/* - * vdr-plugin-vnsi - XBMC server plugin for VDR - * - * Copyright (C) 2010 Alwin Esch (Team XBMC) - * Copyright (C) 2010, 2011 Alexander Pipelka - * - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ - -#ifndef VNSI_RECEIVER_H -#define VNSI_RECEIVER_H - -#include -#include -#include -#include -#include -#include -#include - -#include "parser.h" -#include "responsepacket.h" -#include "demuxer.h" -#include "videoinput.h" - -class cxSocket; -class cChannel; -class cTSParser; -class cResponsePacket; -class cVideoBuffer; -class cVideoInput; - -class cLiveStreamer : public cThread -{ -private: - friend class cParser; - friend class cLivePatFilter; - friend class cLiveReceiver; - - void sendStreamPacket(sStreamPacket *pkt); - void sendStreamChange(); - void sendSignalInfo(); - void sendStreamStatus(); - void sendBufferStatus(); - void sendRefTime(sStreamPacket *pkt); - - int m_ClientID; - const cChannel *m_Channel; /*!> Channel to stream */ - cDevice *m_Device; - cxSocket *m_Socket; /*!> The socket class to communicate with client */ - int m_Frontend; /*!> File descriptor to access used receiving device */ - dvb_frontend_info m_FrontendInfo; /*!> DVB Information about the receiving device (DVB only) */ - v4l2_capability m_vcap; /*!> PVR Information about the receiving device (pvrinput only) */ - cString m_DeviceString; /*!> The name of the receiving device */ - bool m_startup; - bool m_IsAudioOnly; /*!> Set to true if streams contains only audio */ - bool m_IsMPEGPS; /*!> TS Stream contains MPEG PS data like from pvrinput */ - uint32_t m_scanTimeout; /*!> Channel scanning timeout (in seconds) */ - cTimeMs m_last_tick; - bool m_SignalLost; - bool m_IFrameSeen; - cResponsePacket m_streamHeader; - cVNSIDemuxer m_Demuxer; - cVideoBuffer *m_VideoBuffer; - cVideoInput m_VideoInput; - int m_Priority; - uint8_t m_Timeshift; - cCondVar m_Event; - cMutex m_Mutex; - bool m_IsRetune; - -protected: - virtual void Action(void); - bool Open(int serial = -1); - void Close(); - -public: - cLiveStreamer(int clientID, uint8_t timeshift, uint32_t timeout = 0); - virtual ~cLiveStreamer(); - - void Activate(bool On); - - bool StreamChannel(const cChannel *channel, int priority, cxSocket *Socket, cResponsePacket* resp); - bool IsStarting() { return m_startup; } - bool IsAudioOnly() { return m_IsAudioOnly; } - bool IsMPEGPS() { return m_IsMPEGPS; } - bool SeekTime(int64_t time, uint32_t &serial); - void RetuneChannel(const cChannel *channel); -}; - -#endif // VNSI_RECEIVER_H diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/videobuffer.c xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/videobuffer.c --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/videobuffer.c 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/videobuffer.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,961 +0,0 @@ -/* - * Copyright (C) 2005-2012 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - */ - -#include "videobuffer.h" -#include "config.h" -#include "vnsi.h" -#include "recplayer.h" - -#include -#include -#include -#include - -#include -#include -#include - -class cVideoBufferSimple : public cVideoBuffer -{ -friend class cVideoBuffer; -public: - virtual void Put(uint8_t *buf, unsigned int size); - virtual int ReadBlock(uint8_t **buf, unsigned int size, time_t &endTime, time_t &wrapTime); - -protected: - cVideoBufferSimple(); - virtual ~cVideoBufferSimple(); - cRingBufferLinear *m_Buffer; - int m_BytesConsumed; -}; - -cVideoBufferSimple::cVideoBufferSimple() -{ - m_Buffer = new cRingBufferLinear(MEGABYTE(3), TS_SIZE * 2, false); - m_Buffer->SetTimeouts(0, 100); - m_BytesConsumed = 0; -} - -cVideoBufferSimple::~cVideoBufferSimple() -{ - if (m_Buffer) - delete m_Buffer; -} - -void cVideoBufferSimple::Put(uint8_t *buf, unsigned int size) -{ - m_Buffer->Put(buf, size); -} - -int cVideoBufferSimple::ReadBlock(uint8_t **buf, unsigned int size, time_t &endTime, time_t &wrapTime) -{ - int readBytes; - if (m_BytesConsumed) - { - m_Buffer->Del(m_BytesConsumed); - } - m_BytesConsumed = 0; - *buf = m_Buffer->Get(readBytes); - if (!(*buf) || readBytes < TS_SIZE) - { - usleep(100); - return 0; - } - /* Make sure we are looking at a TS packet */ - while (readBytes > TS_SIZE) - { - if ((*buf)[0] == TS_SYNC_BYTE && (*buf)[TS_SIZE] == TS_SYNC_BYTE) - break; - m_BytesConsumed++; - (*buf)++; - readBytes--; - } - - if ((*buf)[0] != TS_SYNC_BYTE) - { - m_Buffer->Del(m_BytesConsumed); - m_BytesConsumed = 0; - return 0; - } - - m_BytesConsumed += TS_SIZE; - endTime = 0; - wrapTime = 0; - return TS_SIZE; -} - -//----------------------------------------------------------------------------- - -#define MARGIN 40000 - -class cVideoBufferTimeshift : public cVideoBuffer -{ -friend class cVideoBuffer; -public: - virtual off_t GetPosMin(); - virtual off_t GetPosMax(); - virtual off_t GetPosCur(); - virtual void GetPositions(off_t *cur, off_t *min, off_t *max); - virtual bool HasBuffer() { return true; }; - -protected: - cVideoBufferTimeshift(); - virtual bool Init() = 0; - virtual off_t Available(); - off_t m_BufferSize; - off_t m_WritePtr; - off_t m_ReadPtr; - bool m_BufferFull; - unsigned int m_Margin; - unsigned int m_BytesConsumed; - cMutex m_Mutex; -}; - -cVideoBufferTimeshift::cVideoBufferTimeshift() -{ - m_Margin = TS_SIZE*2; - m_BufferFull = false; - m_ReadPtr = 0; - m_WritePtr = 0; - m_BytesConsumed = 0; -} - -off_t cVideoBufferTimeshift::GetPosMin() -{ - off_t ret; - if (!m_BufferFull) - return 0; - - ret = m_WritePtr + MARGIN * 2; - if (ret >= m_BufferSize) - ret -= m_BufferSize; - - return ret; -} - -off_t cVideoBufferTimeshift::GetPosMax() -{ - off_t ret = m_WritePtr; - if (ret < GetPosMin()) - ret += m_BufferSize; - return ret; -} - -off_t cVideoBufferTimeshift::GetPosCur() -{ - off_t ret = m_ReadPtr; - if (ret < GetPosMin()) - ret += m_BufferSize; - return ret; -} - -void cVideoBufferTimeshift::GetPositions(off_t *cur, off_t *min, off_t *max) -{ - cMutexLock lock(&m_Mutex); - - *cur = GetPosCur(); - *min = GetPosMin(); - *min = (*min > *cur) ? *cur : *min; - *max = GetPosMax(); -} - -off_t cVideoBufferTimeshift::Available() -{ - cMutexLock lock(&m_Mutex); - - off_t ret; - if (m_ReadPtr <= m_WritePtr) - ret = m_WritePtr - m_ReadPtr; - else - ret = m_BufferSize - (m_ReadPtr - m_WritePtr); - - return ret; -} -//----------------------------------------------------------------------------- - -class cVideoBufferRAM : public cVideoBufferTimeshift -{ -friend class cVideoBuffer; -public: - virtual void Put(uint8_t *buf, unsigned int size); - virtual int ReadBlock(uint8_t **buf, unsigned int size, time_t &endTime, time_t &wrapTime); - virtual void SetPos(off_t pos); - -protected: - cVideoBufferRAM(); - virtual ~cVideoBufferRAM(); - virtual bool Init(); - uint8_t *m_Buffer; - uint8_t *m_BufferPtr; -}; - -cVideoBufferRAM::cVideoBufferRAM() -{ - m_Buffer = 0; -} - -cVideoBufferRAM::~cVideoBufferRAM() -{ - if (m_Buffer) - free(m_Buffer); -} - -bool cVideoBufferRAM::Init() -{ - m_BufferSize = (off_t)TimeshiftBufferSize*100*1000*1000; - INFOLOG("allocated timeshift buffer with size: %ld", m_BufferSize); - m_Buffer = (uint8_t*)malloc(m_BufferSize + m_Margin); - m_BufferPtr = m_Buffer + m_Margin; - if (!m_Buffer) - return false; - else - return true; -} - -void cVideoBufferRAM::SetPos(off_t pos) -{ - cMutexLock lock(&m_Mutex); - - m_ReadPtr = pos; - if (m_ReadPtr >= m_BufferSize) - m_ReadPtr -= m_BufferSize; - m_BytesConsumed = 0; -} - -void cVideoBufferRAM::Put(uint8_t *buf, unsigned int size) -{ - if (Available() + MARGIN >= m_BufferSize) - { - return; - } - - if ((m_BufferSize - m_WritePtr) <= size) - { - int bytes = m_BufferSize - m_WritePtr; - memcpy(m_BufferPtr+m_WritePtr, buf, bytes); - size -= bytes; - buf += bytes; - cMutexLock lock(&m_Mutex); - m_WritePtr = 0; - } - - memcpy(m_BufferPtr+m_WritePtr, buf, size); - - cMutexLock lock(&m_Mutex); - - m_WritePtr += size; - if (!m_BufferFull) - { - if ((m_WritePtr + 2*MARGIN) > m_BufferSize) - { - m_BufferFull = true; - time(&m_bufferWrapTime); - } - } - - time(&m_bufferEndTime); -} - -int cVideoBufferRAM::ReadBlock(uint8_t **buf, unsigned int size, time_t &endTime, time_t &wrapTime) -{ - // move read pointer - if (m_BytesConsumed) - { - cMutexLock lock(&m_Mutex); - m_ReadPtr += m_BytesConsumed; - if (m_ReadPtr >= m_BufferSize) - m_ReadPtr -= m_BufferSize; - - endTime = m_bufferEndTime; - wrapTime = m_bufferWrapTime; - } - m_BytesConsumed = 0; - - // check if we have anything to read - off_t readBytes = Available(); - if (readBytes < m_Margin) - { - return 0; - } - - // if we are close to end, copy margin to front - if (m_ReadPtr > (m_BufferSize - m_Margin)) - { - int bytesToCopy = m_BufferSize - m_ReadPtr; - memmove(m_Buffer + (m_Margin - bytesToCopy), m_Buffer + m_ReadPtr, bytesToCopy); - *buf = m_Buffer + (m_Margin - bytesToCopy); - } - else - *buf = m_BufferPtr + m_ReadPtr; - - // Make sure we are looking at a TS packet - while (readBytes > TS_SIZE) - { - if ((*buf)[0] == TS_SYNC_BYTE && (*buf)[TS_SIZE] == TS_SYNC_BYTE) - break; - m_BytesConsumed++; - (*buf)++; - readBytes--; - } - - if ((*buf)[0] != TS_SYNC_BYTE) - { - return 0; - } - - m_BytesConsumed += TS_SIZE; - return TS_SIZE; -} - -//----------------------------------------------------------------------------- - -class cVideoBufferFile : public cVideoBufferTimeshift -{ -friend class cVideoBuffer; -public: - virtual off_t GetPosMax(); - virtual void Put(uint8_t *buf, unsigned int size); - virtual int ReadBlock(uint8_t **buf, unsigned int size, time_t &endTime, time_t &wrapTime); - virtual void SetPos(off_t pos); - -protected: - cVideoBufferFile(); - cVideoBufferFile(int clientID); - virtual ~cVideoBufferFile(); - virtual bool Init(); - virtual int ReadBytes(uint8_t *buf, off_t pos, unsigned int size); - int m_ClientID; - cString m_Filename; - int m_Fd; - uint8_t *m_ReadCache; - unsigned int m_ReadCachePtr; - unsigned int m_ReadCacheSize; - unsigned int m_ReadCacheMaxSize; -}; - -cVideoBufferFile::cVideoBufferFile() -{ - -} - -cVideoBufferFile::cVideoBufferFile(int clientID) -{ - m_ClientID = clientID; - m_Fd = 0; - m_ReadCacheSize = 0; - m_ReadCache = 0; -} - -cVideoBufferFile::~cVideoBufferFile() -{ - if (m_Fd) - { - close(m_Fd); - unlink(m_Filename); - m_Fd = 0; - } - if (m_ReadCache) - free(m_ReadCache); -} - -bool cVideoBufferFile::Init() -{ - m_ReadCache = 0; - m_ReadCacheMaxSize = 32000; - - m_ReadCache = (uint8_t*)malloc(m_ReadCacheMaxSize); - if (!m_ReadCache) - return false; - - m_BufferSize = (off_t)TimeshiftBufferFileSize*1000*1000*1000; - - struct stat sb; - if ((*TimeshiftBufferDir) && stat(TimeshiftBufferDir, &sb) == 0 && S_ISDIR(sb.st_mode)) - { - if (TimeshiftBufferDir[strlen(TimeshiftBufferDir)-1] == '/') - m_Filename = cString::sprintf("%sTimeshift-%d.vnsi", TimeshiftBufferDir, m_ClientID); - else - m_Filename = cString::sprintf("%s/Timeshift-%d.vnsi", TimeshiftBufferDir, m_ClientID); - } - else -#if VDRVERSNUM >= 20102 - m_Filename = cString::sprintf("%s/Timeshift-%d.vnsi", cVideoDirectory::Name(), m_ClientID); -#else - m_Filename = cString::sprintf("%s/Timeshift-%d.vnsi", VideoDirectory, m_ClientID); -#endif - - m_Fd = open(m_Filename, O_RDWR | O_CREAT | O_TRUNC, S_IRWXU); - if (m_Fd == -1) - { - ERRORLOG("Could not open file: %s", (const char*)m_Filename); - return false; - } - m_WritePtr = lseek(m_Fd, m_BufferSize - 1, SEEK_SET); - if (m_WritePtr == -1) - { - ERRORLOG("(Init) Could not seek file: %s", (const char*)m_Filename); - return false; - } - char tmp = '0'; - if (safe_write(m_Fd, &tmp, 1) < 0) - { - ERRORLOG("(Init) Could not write to file: %s", (const char*)m_Filename); - return false; - } - - m_WritePtr = 0; - m_ReadPtr = 0; - m_ReadCacheSize = 0; - return true; -} - -void cVideoBufferFile::SetPos(off_t pos) -{ - cMutexLock lock(&m_Mutex); - - m_ReadPtr = pos; - if (m_ReadPtr >= m_BufferSize) - m_ReadPtr -= m_BufferSize; - m_BytesConsumed = 0; - m_ReadCacheSize = 0; -} - -off_t cVideoBufferFile::GetPosMax() -{ - off_t posMax = cVideoBufferTimeshift::GetPosMax(); - if (posMax >= m_ReadCacheMaxSize) - posMax -= m_ReadCacheMaxSize; - else - posMax = 0; - return posMax; -} - -void cVideoBufferFile::Put(uint8_t *buf, unsigned int size) -{ - if (Available() + MARGIN >= m_BufferSize) - { - return; - } - - if ((m_BufferSize - m_WritePtr) <= size) - { - int bytes = m_BufferSize - m_WritePtr; - - int p = 0; - off_t ptr = m_WritePtr; - while(bytes > 0) - { - p = pwrite(m_Fd, buf, bytes, ptr); - if (p < 0) - { - ERRORLOG("Could not write to file: %s", (const char*)m_Filename); - return; - } - size -= p; - bytes -= p; - buf += p; - ptr += p; - } - cMutexLock lock(&m_Mutex); - m_WritePtr = 0; - } - - off_t ptr = m_WritePtr; - int bytes = size; - int p; - while(bytes > 0) - { - p = pwrite(m_Fd, buf, bytes, ptr); - if (p < 0) - { - ERRORLOG("Could not write to file: %s", (const char*)m_Filename); - return; - } - bytes -= p; - buf += p; - ptr += p; - } - - cMutexLock lock(&m_Mutex); - - m_WritePtr += size; - if (!m_BufferFull) - { - if ((m_WritePtr + 2*MARGIN) > m_BufferSize) - { - m_BufferFull = true; - time(&m_bufferWrapTime); - } - } - - time(&m_bufferEndTime); -} - -int cVideoBufferFile::ReadBytes(uint8_t *buf, off_t pos, unsigned int size) -{ - int p; - for (;;) - { - p = pread(m_Fd, buf, size, pos); - if (p < 0 && errno == EINTR) - { - continue; - } - return p; - } -} - -int cVideoBufferFile::ReadBlock(uint8_t **buf, unsigned int size, time_t &endTime, time_t &wrapTime) -{ - // move read pointer - if (m_BytesConsumed) - { - cMutexLock lock(&m_Mutex); - m_ReadPtr += m_BytesConsumed; - if (m_ReadPtr >= m_BufferSize) - m_ReadPtr -= m_BufferSize; - m_ReadCachePtr += m_BytesConsumed; - - endTime = m_bufferEndTime; - wrapTime = m_bufferWrapTime; - } - m_BytesConsumed = 0; - - // check if we have anything to read - off_t readBytes; - if (m_ReadCacheSize && ((m_ReadCachePtr + m_Margin) <= m_ReadCacheSize)) - { - readBytes = m_ReadCacheSize - m_ReadCachePtr; - *buf = m_ReadCache + m_ReadCachePtr; - } - else if ((readBytes = Available()) >= m_ReadCacheMaxSize) - { - if (m_ReadPtr + m_ReadCacheMaxSize <= m_BufferSize) - { - m_ReadCacheSize = ReadBytes(m_ReadCache, m_ReadPtr, m_ReadCacheMaxSize); - if (m_ReadCacheSize < 0) - { - ERRORLOG("Could not read file: %s", (const char*)m_Filename); - return 0; - } - if (m_ReadCacheSize < m_Margin) - { - ERRORLOG("Could not read file (margin): %s , read: %d", (const char*)m_Filename, m_ReadCacheSize); - m_ReadCacheSize = 0; - return 0; - } - readBytes = m_ReadCacheSize; - *buf = m_ReadCache; - m_ReadCachePtr = 0; - } - else - { - m_ReadCacheSize = ReadBytes(m_ReadCache, m_ReadPtr, m_BufferSize - m_ReadPtr); - if ((m_ReadCacheSize < m_Margin) && (m_ReadCacheSize != (m_BufferSize - m_ReadPtr))) - { - ERRORLOG("Could not read file (end): %s", (const char*)m_Filename); - m_ReadCacheSize = 0; - return 0; - } - readBytes = ReadBytes(m_ReadCache + m_ReadCacheSize, 0, m_ReadCacheMaxSize - m_ReadCacheSize); - if (readBytes < 0) - { - ERRORLOG("Could not read file (end): %s", (const char*)m_Filename); - m_ReadCacheSize = 0; - return 0; - } - m_ReadCacheSize += readBytes; - if (m_ReadCacheSize < m_Margin) - { - ERRORLOG("Could not read file (margin): %s", (const char*)m_Filename); - m_ReadCacheSize = 0; - return 0; - } - readBytes = m_ReadCacheSize; - *buf = m_ReadCache; - m_ReadCachePtr = 0; - } - } - else - return 0; - - // Make sure we are looking at a TS packet - while (readBytes > TS_SIZE) - { - if ((*buf)[0] == TS_SYNC_BYTE && (*buf)[TS_SIZE] == TS_SYNC_BYTE) - break; - m_BytesConsumed++; - (*buf)++; - readBytes--; - } - - if ((*buf)[0] != TS_SYNC_BYTE) - { - return 0; - } - - m_BytesConsumed += TS_SIZE; - return TS_SIZE; -} - -//----------------------------------------------------------------------------- - -class cVideoBufferRecording : public cVideoBufferFile -{ -friend class cVideoBuffer; -public: - virtual off_t GetPosMax(); - virtual void Put(uint8_t *buf, unsigned int size); - virtual int ReadBlock(uint8_t **buf, unsigned int size, time_t &endTime, time_t &wrapTime); - virtual time_t GetRefTime(); - -protected: - cVideoBufferRecording(cRecording *rec); - virtual ~cVideoBufferRecording(); - virtual bool Init(); - virtual off_t Available(); - off_t GetPosEnd(); - cRecPlayer *m_RecPlayer; - cRecording *m_Recording; - cTimeMs m_ScanTimer; -}; - -cVideoBufferRecording::cVideoBufferRecording(cRecording *rec) -{ - m_Recording = rec; - m_ReadCacheSize = 0; - m_ReadCache = 0; -} - -cVideoBufferRecording::~cVideoBufferRecording() -{ - INFOLOG("delete cVideoBufferRecording"); - if (m_RecPlayer) - delete m_RecPlayer; -} - -off_t cVideoBufferRecording::GetPosMax() -{ - m_RecPlayer->reScan(); - m_WritePtr = m_RecPlayer->getLengthBytes(); - return cVideoBufferFile::GetPosMax(); -} - -void cVideoBufferRecording::Put(uint8_t *buf, unsigned int size) -{ - -} - -bool cVideoBufferRecording::Init() -{ - m_ReadCacheMaxSize = 32000; - - m_ReadCache = (uint8_t*)malloc(m_ReadCacheMaxSize); - if (!m_ReadCache) - return false; - - m_RecPlayer = new cRecPlayer(m_Recording, true); - if (!m_RecPlayer) - return false; - - m_WritePtr = 0; - m_ReadPtr = 0; - m_ReadCacheSize = 0; - m_InputAttached = false; - m_ScanTimer.Set(0); - - return true; -} - -time_t cVideoBufferRecording::GetRefTime() -{ - return m_Recording->Start(); -} - -off_t cVideoBufferRecording::Available() -{ - if (m_ScanTimer.TimedOut()) - { - m_RecPlayer->reScan(); - m_ScanTimer.Set(1000); - } - m_BufferSize = m_WritePtr = m_RecPlayer->getLengthBytes(); - return cVideoBufferTimeshift::Available(); -} - -int cVideoBufferRecording::ReadBlock(uint8_t **buf, unsigned int size, time_t &endTime, time_t &wrapTime) -{ - // move read pointer - if (m_BytesConsumed) - { - m_ReadPtr += m_BytesConsumed; - if (m_ReadPtr >= m_BufferSize) - { - m_ReadPtr -= m_BufferSize; - ERRORLOG("cVideoBufferRecording::ReadBlock - unknown error"); - } - m_ReadCachePtr += m_BytesConsumed; - } - m_BytesConsumed = 0; - - // check if we have anything to read - off_t readBytes; - if (m_ReadCacheSize && ((m_ReadCachePtr + m_Margin) <= m_ReadCacheSize)) - { - readBytes = m_ReadCacheSize - m_ReadCachePtr; - *buf = m_ReadCache + m_ReadCachePtr; - } - else if ((readBytes = Available()) >= m_ReadCacheMaxSize) - { - if (m_ReadPtr + m_ReadCacheMaxSize <= m_BufferSize) - { - m_ReadCacheSize = m_RecPlayer->getBlock(m_ReadCache, m_ReadPtr, m_ReadCacheMaxSize); - if (m_ReadCacheSize < 0) - { - ERRORLOG("Could not read file, size: %d", m_ReadCacheSize); - m_ReadCacheSize = 0; - return 0; - } - readBytes = m_ReadCacheSize; - *buf = m_ReadCache; - m_ReadCachePtr = 0; - } - else - { - ERRORLOG("cVideoBufferRecording::ReadBlock - unknown error"); - return 0; - } - } - else - return 0; - - // Make sure we are looking at a TS packet - while (readBytes > TS_SIZE) - { - if ((*buf)[0] == TS_SYNC_BYTE && (*buf)[TS_SIZE] == TS_SYNC_BYTE) - break; - m_BytesConsumed++; - (*buf)++; - readBytes--; - } - - if ((*buf)[0] != TS_SYNC_BYTE) - { - return 0; - } - - m_BytesConsumed += TS_SIZE; - time(&endTime); - wrapTime = 0; - return TS_SIZE; -} - -//----------------------------------------------------------------------------- - -class cVideoBufferTest : public cVideoBufferFile -{ -friend class cVideoBuffer; -public: - virtual off_t GetPosMax(); - virtual void Put(uint8_t *buf, unsigned int size); - -protected: - cVideoBufferTest(cString filename); - virtual ~cVideoBufferTest(); - virtual bool Init(); - virtual off_t Available(); - off_t GetPosEnd(); -}; - -cVideoBufferTest::cVideoBufferTest(cString filename) -{ - m_Filename = filename; - m_Fd = 0; - m_ReadCacheSize = 0; -} - -cVideoBufferTest::~cVideoBufferTest() -{ - if (m_Fd) - { - close(m_Fd); - m_Fd = 0; - } -} - -off_t cVideoBufferTest::GetPosMax() -{ - m_WritePtr = GetPosEnd(); - return cVideoBufferTimeshift::GetPosMax(); -} - -off_t cVideoBufferTest::GetPosEnd() -{ - off_t cur = lseek(m_Fd, 0, SEEK_CUR); - off_t end = lseek(m_Fd, 0, SEEK_END); - lseek(m_Fd, cur, SEEK_SET); - return end; -} - -void cVideoBufferTest::Put(uint8_t *buf, unsigned int size) -{ - -} - -bool cVideoBufferTest::Init() -{ - m_ReadCache = 0; - m_ReadCacheMaxSize = 8000; - - m_ReadCache = (uint8_t*)malloc(m_ReadCacheMaxSize); - if (!m_ReadCache) - return false; - - m_Fd = open(m_Filename, O_RDONLY); - if (m_Fd == -1) - { - ERRORLOG("Could not open file: %s", (const char*)m_Filename); - return false; - } - - m_WritePtr = 0; - m_ReadPtr = 0; - m_ReadCacheSize = 0; - m_InputAttached = false; - return true; -} - -off_t cVideoBufferTest::Available() -{ - m_BufferSize = m_WritePtr = GetPosEnd(); - return cVideoBufferTimeshift::Available(); -} - -//----------------------------------------------------------------------------- - -cVideoBuffer::cVideoBuffer() -{ - m_CheckEof = false; - m_InputAttached = true; - m_bufferEndTime = 0; - m_bufferWrapTime = 0; -} - -cVideoBuffer::~cVideoBuffer() -{ -} - -cVideoBuffer* cVideoBuffer::Create(int clientID, uint8_t timeshift) -{ - // no time shift - if (TimeshiftMode == 0 || timeshift == 0) - { - cVideoBufferSimple *buffer = new cVideoBufferSimple(); - return buffer; - } - // buffer in ram - else if (TimeshiftMode == 1) - { - cVideoBufferRAM *buffer = new cVideoBufferRAM(); - if (!buffer->Init()) - { - delete buffer; - return NULL; - } - else - return buffer; - } - // buffer in file - else if (TimeshiftMode == 2) - { - cVideoBufferFile *buffer = new cVideoBufferFile(clientID); - if (!buffer->Init()) - { - delete buffer; - return NULL; - } - else - return buffer; - } - else - return NULL; -} - -cVideoBuffer* cVideoBuffer::Create(cString filename) -{ - INFOLOG("Open recording: %s", (const char*)filename); - cVideoBufferTest *buffer = new cVideoBufferTest(filename); - if (!buffer->Init()) - { - delete buffer; - return NULL; - } - else - return buffer; -} - -cVideoBuffer* cVideoBuffer::Create(cRecording *rec) -{ - INFOLOG("Open recording: %s", rec->FileName()); - cVideoBufferRecording *buffer = new cVideoBufferRecording(rec); - if (!buffer->Init()) - { - delete buffer; - return NULL; - } - else - return buffer; -} - -int cVideoBuffer::Read(uint8_t **buf, unsigned int size, time_t &endTime, time_t &wrapTime) -{ - int count = ReadBlock(buf, size, endTime, wrapTime); - - // check for end of file - if (!m_InputAttached && count != TS_SIZE) - { - if (m_CheckEof && m_Timer.TimedOut()) - { - INFOLOG("Recoding - end of file"); - return -2; - } - else if (!m_CheckEof) - { - m_CheckEof = true; - m_Timer.Set(3000); - } - } - else - m_CheckEof = false; - - return count; -} - -void cVideoBuffer::AttachInput(bool attach) -{ - m_InputAttached = attach; -} - -time_t cVideoBuffer::GetRefTime() -{ - time_t t; - time(&t); - return t; -} diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/videobuffer.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/videobuffer.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/videobuffer.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/videobuffer.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,55 +0,0 @@ -/* - * Copyright (C) 2005-2012 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - */ - -#pragma once - -#include -#include -#include - -class cRecording; - -class cVideoBuffer -{ -public: - virtual ~cVideoBuffer(); - static cVideoBuffer* Create(int clientID, uint8_t timeshift); - static cVideoBuffer* Create(cString filename); - static cVideoBuffer* Create(cRecording *rec); - virtual void Put(uint8_t *buf, unsigned int size) = 0; - virtual int ReadBlock(uint8_t **buf, unsigned int size, time_t &endTime, time_t &wrapTime) = 0; - virtual off_t GetPosMin() { return 0; }; - virtual off_t GetPosMax() { return 0; }; - virtual off_t GetPosCur() { return 0; }; - virtual void GetPositions(off_t *cur, off_t *min, off_t *max) {}; - virtual void SetPos(off_t pos) {}; - virtual void SetCache(bool on) {}; - virtual bool HasBuffer() { return false; }; - virtual time_t GetRefTime(); - int Read(uint8_t **buf, unsigned int size, time_t &endTime, time_t &wrapTime); - void AttachInput(bool attach); -protected: - cVideoBuffer(); - cTimeMs m_Timer; - bool m_CheckEof; - bool m_InputAttached; - time_t m_bufferEndTime; - time_t m_bufferWrapTime; -}; diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/videoinput.c xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/videoinput.c --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/videoinput.c 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/videoinput.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,566 +0,0 @@ -/* - * Copyright (C) 2005-2012 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - * - */ - -#include "config.h" -#include "videoinput.h" -#include "videobuffer.h" -#include "vnsi.h" - -#include -#include -#include -#include -#include -#include - -// --- cLiveReceiver ------------------------------------------------- - -class cLiveReceiver: public cReceiver -{ -public: - cLiveReceiver(cVideoInput *VideoInput, const cChannel *Channel, int Priority); - virtual ~cLiveReceiver(); - cChannel m_PmtChannel; - -protected: - virtual void Activate(bool On); - virtual void Receive(uchar *Data, int Length); - - cVideoInput *m_VideoInput; -}; - -cLiveReceiver::cLiveReceiver(cVideoInput *VideoInput, const cChannel *Channel, int Priority) - : cReceiver(Channel, Priority) - , m_VideoInput(VideoInput) -{ - SetPids(NULL); -} - -cLiveReceiver::~cLiveReceiver() -{ - -} - -//void cLiveReceiver -void cLiveReceiver::Receive(uchar *Data, int Length) -{ - m_VideoInput->Receive(Data, Length); -} - -inline void cLiveReceiver::Activate(bool On) -{ - DEBUGLOG("activate live receiver: %d", On); - if (!On) - { - m_VideoInput->Retune(); - } -} - -// --- cLivePatFilter ---------------------------------------------------- - -class cLivePatFilter : public cFilter -{ -private: - int m_pmtPid; - int m_pmtSid; - int m_pmtVersion; - const cChannel *m_Channel; - cVideoInput *m_VideoInput; - - virtual void Process(u_short Pid, u_char Tid, const u_char *Data, int Length); - -public: - cLivePatFilter(cVideoInput *VideoInput, const cChannel *Channel); -}; - -cLivePatFilter::cLivePatFilter(cVideoInput *VideoInput, const cChannel *Channel) -{ - DEBUGLOG("cStreamdevPatFilter(\"%s\")", Channel->Name()); - m_Channel = Channel; - m_VideoInput = VideoInput; - m_pmtPid = 0; - m_pmtSid = 0; - m_pmtVersion = -1; - Set(0x00, 0x00); // PAT -} - -void cLivePatFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length) -{ - if (Pid == 0x00) - { - if (Tid == 0x00) - { - SI::PAT pat(Data, false); - if (!pat.CheckCRCAndParse()) - return; - SI::PAT::Association assoc; - for (SI::Loop::Iterator it; pat.associationLoop.getNext(assoc, it); ) - { - if (!assoc.isNITPid()) - { - const cChannel *Channel = Channels.GetByServiceID(Source(), Transponder(), assoc.getServiceId()); - if (Channel && (Channel == m_Channel)) - { - int prevPmtPid = m_pmtPid; - if (0 != (m_pmtPid = assoc.getPid())) - { - if (m_pmtPid != prevPmtPid) - { - m_pmtSid = assoc.getServiceId(); - Add(m_pmtPid, 0x02); - m_pmtVersion = -1; - break; - } - return; - } - } - } - } - } - } - else if (Pid == m_pmtPid && Tid == SI::TableIdPMT && Source() && Transponder()) - { - SI::PMT pmt(Data, false); - if (!pmt.CheckCRCAndParse()) - return; - if (pmt.getServiceId() != m_pmtSid) - return; // skip broken PMT records - if (m_pmtVersion != -1) - { - if (m_pmtVersion != pmt.getVersionNumber()) - { - cFilter::Del(m_pmtPid, 0x02); - m_pmtPid = 0; // this triggers PAT scan - } - return; - } - m_pmtVersion = pmt.getVersionNumber(); - - cChannel *Channel = Channels.GetByServiceID(Source(), Transponder(), pmt.getServiceId()); - if (Channel) { - // Scan the stream-specific loop: - SI::PMT::Stream stream; - int Vpid = 0; - int Ppid = 0; - int Vtype = 0; - int Apids[MAXAPIDS + 1] = { 0 }; // these lists are zero-terminated - int Atypes[MAXAPIDS + 1] = { 0 }; - int Dpids[MAXDPIDS + 1] = { 0 }; - int Dtypes[MAXDPIDS + 1] = { 0 }; - int Spids[MAXSPIDS + 1] = { 0 }; - uchar SubtitlingTypes[MAXSPIDS + 1] = { 0 }; - uint16_t CompositionPageIds[MAXSPIDS + 1] = { 0 }; - uint16_t AncillaryPageIds[MAXSPIDS + 1] = { 0 }; - char ALangs[MAXAPIDS][MAXLANGCODE2] = { "" }; - char DLangs[MAXDPIDS][MAXLANGCODE2] = { "" }; - char SLangs[MAXSPIDS][MAXLANGCODE2] = { "" }; - int Tpid = 0; - int NumApids = 0; - int NumDpids = 0; - int NumSpids = 0; - for (SI::Loop::Iterator it; pmt.streamLoop.getNext(stream, it); ) { - bool ProcessCaDescriptors = false; - int esPid = stream.getPid(); - switch (stream.getStreamType()) { - case 1: // STREAMTYPE_11172_VIDEO - case 2: // STREAMTYPE_13818_VIDEO - case 0x1B: // MPEG4 - Vpid = esPid; - Ppid = pmt.getPCRPid(); - Vtype = stream.getStreamType(); - ProcessCaDescriptors = true; - break; - case 3: // STREAMTYPE_11172_AUDIO - case 4: // STREAMTYPE_13818_AUDIO - case 0x0F: // ISO/IEC 13818-7 Audio with ADTS transport syntax - case 0x11: // ISO/IEC 14496-3 Audio with LATM transport syntax - { - if (NumApids < MAXAPIDS) { - Apids[NumApids] = esPid; - Atypes[NumApids] = stream.getStreamType(); - SI::Descriptor *d; - for (SI::Loop::Iterator it; (d = stream.streamDescriptors.getNext(it)); ) { - switch (d->getDescriptorTag()) { - case SI::ISO639LanguageDescriptorTag: { - SI::ISO639LanguageDescriptor *ld = (SI::ISO639LanguageDescriptor *)d; - SI::ISO639LanguageDescriptor::Language l; - char *s = ALangs[NumApids]; - int n = 0; - for (SI::Loop::Iterator it; ld->languageLoop.getNext(l, it); ) { - if (*ld->languageCode != '-') { // some use "---" to indicate "none" - if (n > 0) - *s++ = '+'; - strn0cpy(s, I18nNormalizeLanguageCode(l.languageCode), MAXLANGCODE1); - s += strlen(s); - if (n++ > 1) - break; - } - } - } - break; - default: ; - } - delete d; - } - NumApids++; - } - ProcessCaDescriptors = true; - } - break; - case 5: // STREAMTYPE_13818_PRIVATE - case 6: // STREAMTYPE_13818_PES_PRIVATE - //XXX case 8: // STREAMTYPE_13818_DSMCC - { - int dpid = 0; - int dtype = 0; - char lang[MAXLANGCODE1] = { 0 }; - SI::Descriptor *d; - for (SI::Loop::Iterator it; (d = stream.streamDescriptors.getNext(it)); ) { - switch (d->getDescriptorTag()) { - case SI::AC3DescriptorTag: - case SI::EnhancedAC3DescriptorTag: - dpid = esPid; - dtype = d->getDescriptorTag(); - ProcessCaDescriptors = true; - break; - case SI::SubtitlingDescriptorTag: - if (NumSpids < MAXSPIDS) { - Spids[NumSpids] = esPid; - SI::SubtitlingDescriptor *sd = (SI::SubtitlingDescriptor *)d; - SI::SubtitlingDescriptor::Subtitling sub; - char *s = SLangs[NumSpids]; - int n = 0; - for (SI::Loop::Iterator it; sd->subtitlingLoop.getNext(sub, it); ) { - if (sub.languageCode[0]) { - SubtitlingTypes[NumSpids] = sub.getSubtitlingType(); - CompositionPageIds[NumSpids] = sub.getCompositionPageId(); - AncillaryPageIds[NumSpids] = sub.getAncillaryPageId(); - if (n > 0) - *s++ = '+'; - strn0cpy(s, I18nNormalizeLanguageCode(sub.languageCode), MAXLANGCODE1); - s += strlen(s); - if (n++ > 1) - break; - } - } - NumSpids++; - } - break; - case SI::TeletextDescriptorTag: - Tpid = esPid; - break; - case SI::ISO639LanguageDescriptorTag: { - SI::ISO639LanguageDescriptor *ld = (SI::ISO639LanguageDescriptor *)d; - strn0cpy(lang, I18nNormalizeLanguageCode(ld->languageCode), MAXLANGCODE1); - } - break; - default: ; - } - delete d; - } - if (dpid) { - if (NumDpids < MAXDPIDS) { - Dpids[NumDpids] = dpid; - Dtypes[NumDpids] = dtype; - strn0cpy(DLangs[NumDpids], lang, MAXLANGCODE1); - NumDpids++; - } - } - } - break; - case 0x80: // STREAMTYPE_USER_PRIVATE -#if APIVERSNUM >= 10728 - if (Setup.StandardCompliance == STANDARD_ANSISCTE) -#endif - { // DigiCipher II VIDEO (ANSI/SCTE 57) - Vpid = esPid; - Ppid = pmt.getPCRPid(); - Vtype = 0x02; // compression based upon MPEG-2 - ProcessCaDescriptors = true; - break; - } - // fall through - case 0x81: // STREAMTYPE_USER_PRIVATE -#if APIVERSNUM >= 10728 - if (Setup.StandardCompliance == STANDARD_ANSISCTE) -#endif - { // ATSC A/53 AUDIO (ANSI/SCTE 57) - char lang[MAXLANGCODE1] = { 0 }; - SI::Descriptor *d; - for (SI::Loop::Iterator it; (d = stream.streamDescriptors.getNext(it)); ) { - switch (d->getDescriptorTag()) { - case SI::ISO639LanguageDescriptorTag: { - SI::ISO639LanguageDescriptor *ld = (SI::ISO639LanguageDescriptor *)d; - strn0cpy(lang, I18nNormalizeLanguageCode(ld->languageCode), MAXLANGCODE1); - } - break; - default: ; - } - delete d; - } - if (NumDpids < MAXDPIDS) { - Dpids[NumDpids] = esPid; - Dtypes[NumDpids] = SI::AC3DescriptorTag; - strn0cpy(DLangs[NumDpids], lang, MAXLANGCODE1); - NumDpids++; - } - ProcessCaDescriptors = true; - break; - } - // fall through - case 0x82: // STREAMTYPE_USER_PRIVATE -#if APIVERSNUM >= 10728 - if (Setup.StandardCompliance == STANDARD_ANSISCTE) -#endif - { // STANDARD SUBTITLE (ANSI/SCTE 27) - //TODO - break; - } - // fall through - case 0x83 ... 0xFF: // STREAMTYPE_USER_PRIVATE - { - char lang[MAXLANGCODE1] = { 0 }; - bool IsAc3 = false; - SI::Descriptor *d; - for (SI::Loop::Iterator it; (d = stream.streamDescriptors.getNext(it)); ) { - switch (d->getDescriptorTag()) { - case SI::RegistrationDescriptorTag: { - SI::RegistrationDescriptor *rd = (SI::RegistrationDescriptor *)d; - // http://www.smpte-ra.org/mpegreg/mpegreg.html - switch (rd->getFormatIdentifier()) { - case 0x41432D33: // 'AC-3' - IsAc3 = true; - break; - default: - //printf("Format identifier: 0x%08X (pid: %d)\n", rd->getFormatIdentifier(), esPid); - break; - } - } - break; - case SI::ISO639LanguageDescriptorTag: { - SI::ISO639LanguageDescriptor *ld = (SI::ISO639LanguageDescriptor *)d; - strn0cpy(lang, I18nNormalizeLanguageCode(ld->languageCode), MAXLANGCODE1); - } - break; - default: ; - } - delete d; - } - if (IsAc3) { - if (NumDpids < MAXDPIDS) { - Dpids[NumDpids] = esPid; - Dtypes[NumDpids] = SI::AC3DescriptorTag; - strn0cpy(DLangs[NumDpids], lang, MAXLANGCODE1); - NumDpids++; - } - ProcessCaDescriptors = true; - } - } - break; - default: ;//printf("PID: %5d %5d %2d %3d %3d\n", pmt.getServiceId(), stream.getPid(), stream.getStreamType(), pmt.getVersionNumber(), Channel->Number()); - } - } - DEBUGLOG("Pat/Pmt Filter received pmt change"); - cChannel *pmtChannel = m_VideoInput->PmtChannel(); - pmtChannel->Modification(); - pmtChannel->SetPids(Vpid, Ppid, Vtype, Apids, Atypes, ALangs, Dpids, Dtypes, DLangs, Spids, SLangs, Tpid); - pmtChannel->SetSubtitlingDescriptors(SubtitlingTypes, CompositionPageIds, AncillaryPageIds); - m_VideoInput->PmtChange(pmtChannel->Modification(CHANNELMOD_PIDS)); - } - } -} - -// ---------------------------------------------------------------------------- - -cVideoInput::cVideoInput(cCondVar &condVar, cMutex &mutex, bool &retune) : - m_Event(condVar), m_Mutex(mutex), m_IsRetune(retune) -{ - m_Device = NULL;; - m_PatFilter = NULL; - m_Receiver = NULL;; - m_Channel = NULL; - m_VideoBuffer = NULL; - m_Priority = 0; - m_PmtChange = false; -} - -cVideoInput::~cVideoInput() -{ - Close(); -} - -bool cVideoInput::Open(const cChannel *channel, int priority, cVideoBuffer *videoBuffer) -{ - m_VideoBuffer = videoBuffer; - m_Channel = channel; - m_Priority = priority; - m_Device = cDevice::GetDevice(m_Channel, m_Priority, false); - - if (m_Device != NULL) - { - DEBUGLOG("Successfully found following device: %p (%d) for receiving", m_Device, m_Device ? m_Device->CardIndex() + 1 : 0); - - if (m_Device->SwitchChannel(m_Channel, false)) - { - DEBUGLOG("Creating new live Receiver"); - m_SeenPmt = false; - m_PatFilter = new cLivePatFilter(this, m_Channel); - m_Receiver0 = new cLiveReceiver(this, m_Channel, m_Priority); - m_Receiver = new cLiveReceiver(this, m_Channel, m_Priority); - m_Device->AttachReceiver(m_Receiver0); - m_Device->AttachFilter(m_PatFilter); - m_VideoBuffer->AttachInput(true); - Start(); - return true; - } - } - return false; -} - -void cVideoInput::Close() -{ - Cancel(5); - - if (m_Device) - { - if (m_Receiver) - { - DEBUGLOG("Detaching Live Receiver"); - m_Device->Detach(m_Receiver); - } - else - { - DEBUGLOG("No live receiver present"); - } - - if (m_Receiver0) - { - DEBUGLOG("Detaching Live Receiver0"); - m_Device->Detach(m_Receiver0); - } - else - { - DEBUGLOG("No live receiver present"); - } - - if (m_PatFilter) - { - DEBUGLOG("Detaching Live Filter"); - m_Device->Detach(m_PatFilter); - } - else - { - DEBUGLOG("No live filter present"); - } - - if (m_Receiver) - { - DEBUGLOG("Deleting Live Receiver"); - DELETENULL(m_Receiver); - } - - if (m_Receiver0) - { - DEBUGLOG("Deleting Live Receiver0"); - DELETENULL(m_Receiver0); - } - - if (m_PatFilter) - { - DEBUGLOG("Deleting Live Filter"); - DELETENULL(m_PatFilter); - } - } - m_Channel = NULL; - if (m_VideoBuffer) - { - m_VideoBuffer->AttachInput(false); - } -} - -bool cVideoInput::IsOpen() -{ - if (m_Channel) - return true; - else - return false; -} - -cChannel *cVideoInput::PmtChannel() -{ - return &m_Receiver->m_PmtChannel; -} - -void cVideoInput::PmtChange(int pidChange) -{ - if (pidChange) - { - INFOLOG("Video Input - new pmt, attaching receiver"); - m_Device->Detach(m_Receiver); - m_Receiver->SetPids(NULL); - m_Receiver->SetPids(&m_Receiver->m_PmtChannel); - m_Receiver->AddPid(m_Receiver->m_PmtChannel.Tpid()); - m_PmtChange = true; - m_Device->AttachReceiver(m_Receiver); - m_SeenPmt = true; - } -} - -inline void cVideoInput::Receive(uchar *data, int length) -{ - if (m_PmtChange) - { - // generate pat/pmt so we can configure parsers later - cPatPmtGenerator patPmtGenerator(&m_Receiver->m_PmtChannel); - m_VideoBuffer->Put(patPmtGenerator.GetPat(), TS_SIZE); - int Index = 0; - while (uchar *pmt = patPmtGenerator.GetPmt(Index)) - m_VideoBuffer->Put(pmt, TS_SIZE); - m_PmtChange = false; - } - m_VideoBuffer->Put(data, length); -} - -void cVideoInput::Retune() -{ - cMutexLock lock(&m_Mutex); - m_IsRetune = true; - m_Event.Broadcast(); -} - -void cVideoInput::Action() -{ - cTimeMs starttime; - - while (Running()) - { - if (starttime.Elapsed() > (unsigned int)PmtTimeout*1000) - { - INFOLOG("VideoInput: no pat/pmt within timeout, falling back to channel pids"); - m_Receiver->m_PmtChannel = *m_Channel; - PmtChange(true); - } - if (m_SeenPmt) - break; - - usleep(1000); - } -} diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/videoinput.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/videoinput.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/videoinput.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/videoinput.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,60 +0,0 @@ -/* - * Copyright (C) 2005-2012 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - */ - -#pragma once - -#include - -class cLivePatFilter; -class cLiveReceiver; -class cVideoBuffer; -class cChannel; -class cDevice; - -class cVideoInput : public cThread -{ -friend class cLivePatFilter; -friend class cLiveReceiver; -public: - cVideoInput(cCondVar &condVar, cMutex &mutex, bool &retune); - virtual ~cVideoInput(); - bool Open(const cChannel *channel, int priority, cVideoBuffer *videoBuffer); - void Close(); - bool IsOpen(); - -protected: - virtual void Action(void); - void PmtChange(int pidChange); - cChannel *PmtChannel(); - void Receive(uchar *data, int length); - void Retune(); - cDevice *m_Device; - cLivePatFilter *m_PatFilter; - cLiveReceiver *m_Receiver; - cLiveReceiver *m_Receiver0; - const cChannel *m_Channel; - cVideoBuffer *m_VideoBuffer; - int m_Priority; - bool m_PmtChange; - bool m_SeenPmt; - cCondVar &m_Event; - cMutex &m_Mutex; - bool &m_IsRetune; -}; diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsi.c xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsi.c --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsi.c 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsi.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,169 +0,0 @@ -/* - * vdr-plugin-vnsi - XBMC server plugin for VDR - * - * Copyright (C) 2010 Alwin Esch (Team XBMC) - * Copyright (C) 2010, 2011 Alexander Pipelka - * - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ - -#include -#include -#include "vnsi.h" -#include "vnsicommand.h" -#include "setup.h" - -cPluginVNSIServer* cPluginVNSIServer::VNSIServer = NULL; - -cPluginVNSIServer::cPluginVNSIServer(void) -{ - Server = NULL; - VNSIServer = NULL; -} - -cPluginVNSIServer::~cPluginVNSIServer() -{ - // Clean up after yourself! -} - -const char *cPluginVNSIServer::CommandLineHelp(void) -{ - return " -t n, --timeout=n stream data timeout in seconds (default: 10)\n"; -} - -bool cPluginVNSIServer::ProcessArgs(int argc, char *argv[]) -{ - // Implement command line argument processing here if applicable. - static struct option long_options[] = { - { "timeout", required_argument, NULL, 't' }, - { NULL, no_argument, NULL, 0 } - }; - - int c; - - while ((c = getopt_long(argc, argv, "t:", long_options, NULL)) != -1) { - switch (c) { - case 't': if(optarg != NULL) VNSIServerConfig.stream_timeout = atoi(optarg); - break; - default: return false; - } - } - return true; -} - -bool cPluginVNSIServer::Initialize(void) -{ - // Initialize any background activities the plugin shall perform. - VNSIServerConfig.ConfigDirectory = ConfigDirectory(PLUGIN_NAME_I18N); - - VNSIServer = this; - return true; -} - -bool cPluginVNSIServer::Start(void) -{ - Server = new cVNSIServer(VNSIServerConfig.listen_port); - - return true; -} - -void cPluginVNSIServer::Stop(void) -{ - delete Server; - Server = NULL; -} - -void cPluginVNSIServer::Housekeeping(void) -{ - // Perform any cleanup or other regular tasks. -} - -void cPluginVNSIServer::MainThreadHook(void) -{ - // Perform actions in the context of the main program thread. - // WARNING: Use with great care - see PLUGINS.html! -} - -cString cPluginVNSIServer::Active(void) -{ - // Return a message string if shutdown should be postponed - return NULL; -} - -time_t cPluginVNSIServer::WakeupTime(void) -{ - // Return custom wakeup time for shutdown script - return 0; -} - -cMenuSetupPage *cPluginVNSIServer::SetupMenu(void) -{ - // Return a setup menu in case the plugin supports one. - return new cMenuSetupVNSI; -} - -bool cPluginVNSIServer::SetupParse(const char *Name, const char *Value) -{ - // Parse your own setup parameters and store their values. - if (!strcasecmp(Name, CONFNAME_PMTTIMEOUT)) - PmtTimeout = atoi(Value); - else if (!strcasecmp(Name, CONFNAME_TIMESHIFT)) - TimeshiftMode = atoi(Value); - else if (!strcasecmp(Name, CONFNAME_TIMESHIFTBUFFERSIZE)) - TimeshiftBufferSize = atoi(Value); - else if (!strcasecmp(Name, CONFNAME_TIMESHIFTBUFFERFILESIZE)) - TimeshiftBufferFileSize = atoi(Value); - else if (!strcasecmp(Name, CONFNAME_TIMESHIFTBUFFERDIR)) - strn0cpy(TimeshiftBufferDir, Value, sizeof(TimeshiftBufferDir)); - else - return false; - return true; -} - -bool cPluginVNSIServer::Service(const char *Id, void *Data) -{ - // Handle custom service requests from other plugins - return false; -} - -const char **cPluginVNSIServer::SVDRPHelpPages(void) -{ - // Return help text for SVDRP commands this plugin implements - return NULL; -} - -cString cPluginVNSIServer::SVDRPCommand(const char *Command, const char *Option, int &ReplyCode) -{ - // Process SVDRP commands this plugin implements - return NULL; -} - -void cPluginVNSIServer::StoreSetup(const char *Name, int Value) -{ - if (VNSIServer) - { - if (VNSIServer->SetupParse(Name, itoa(Value))) - { - VNSIServer->SetupStore(Name, Value); - Setup.Save(); - } - } -} - -VDRPLUGINCREATOR(cPluginVNSIServer); // Don't touch this! diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsiclient.c xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsiclient.c --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsiclient.c 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsiclient.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,2280 +0,0 @@ -/* - * vdr-plugin-vnsi - XBMC server plugin for VDR - * - * Copyright (C) 2010 Alwin Esch (Team XBMC) - * Copyright (C) 2010, 2011 Alexander Pipelka - * - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include "vnsi.h" -#include "config.h" -#include "vnsicommand.h" -#include "recordingscache.h" -#include "vnsiclient.h" -#include "streamer.h" -#include "vnsiserver.h" -#include "recplayer.h" -#include "vnsiosd.h" -#include "requestpacket.h" -#include "responsepacket.h" -#include "hash.h" -#include "channelfilter.h" -#include "wirbelscanservice.h" /// copied from modified wirbelscan plugin - /// must be hold up to date with wirbelscan - - -cMutex cVNSIClient::m_timerLock; - -cVNSIClient::cVNSIClient(int fd, unsigned int id, const char *ClientAdr) -{ - m_Id = id; - m_Streamer = NULL; - m_isStreaming = false; - m_ClientAddress = ClientAdr; - m_StatusInterfaceEnabled = false; - m_RecPlayer = NULL; - m_req = NULL; - m_resp = NULL; - m_processSCAN_Response = NULL; - m_processSCAN_Socket = NULL; - m_Osd = NULL; - - m_socket.SetHandle(fd); - - Start(); -} - -cVNSIClient::~cVNSIClient() -{ - DEBUGLOG("%s", __FUNCTION__); - StopChannelStreaming(); - m_socket.close(); // force closing connection - Cancel(10); - DEBUGLOG("done"); -} - -void cVNSIClient::Action(void) -{ - uint32_t channelID; - uint32_t requestID; - uint32_t opcode; - uint32_t dataLength; - uint8_t* data; - - while (Running()) - { - if (!m_socket.read((uint8_t*)&channelID, sizeof(uint32_t))) break; - channelID = ntohl(channelID); - - if (channelID == 1) - { - if (!m_socket.read((uint8_t*)&requestID, sizeof(uint32_t), 10000)) break; - requestID = ntohl(requestID); - - if (!m_socket.read((uint8_t*)&opcode, sizeof(uint32_t), 10000)) break; - opcode = ntohl(opcode); - - if (!m_socket.read((uint8_t*)&dataLength, sizeof(uint32_t), 10000)) break; - dataLength = ntohl(dataLength); - if (dataLength > 200000) // a random sanity limit - { - ERRORLOG("dataLength > 200000!"); - break; - } - - if (dataLength) - { - data = (uint8_t*)malloc(dataLength); - if (!data) - { - ERRORLOG("Extra data buffer malloc error"); - break; - } - - if (!m_socket.read(data, dataLength, 10000)) - { - ERRORLOG("Could not read data"); - free(data); - break; - } - } - else - { - data = NULL; - } - - DEBUGLOG("Received chan=%u, ser=%u, op=%u, edl=%u", channelID, requestID, opcode, dataLength); - - if (!m_loggedIn && (opcode != VNSI_LOGIN)) - { - ERRORLOG("Clients must be logged in before sending commands! Aborting."); - if (data) free(data); - break; - } - - cRequestPacket* req = new cRequestPacket(requestID, opcode, data, dataLength); - - processRequest(req); - } - else - { - ERRORLOG("Incoming channel number unknown"); - break; - } - } - - /* If thread is ended due to closed connection delete a - possible running stream here */ - StopChannelStreaming(); - - // Shutdown OSD - if (m_Osd) - { - delete m_Osd; - m_Osd = NULL; - } -} - -bool cVNSIClient::StartChannelStreaming(const cChannel *channel, int32_t priority, uint8_t timeshift, uint32_t timeout) -{ - m_Streamer = new cLiveStreamer(m_Id, timeshift, timeout); - m_isStreaming = m_Streamer->StreamChannel(channel, priority, &m_socket, m_resp); - return m_isStreaming; -} - -void cVNSIClient::StopChannelStreaming() -{ - m_isStreaming = false; - if (m_Streamer) - { - delete m_Streamer; - m_Streamer = NULL; - } -} - -void cVNSIClient::TimerChange(const cTimer *Timer, eTimerChange Change) -{ - TimerChange(); -} - -void cVNSIClient::TimerChange() -{ - cMutexLock lock(&m_msgLock); - - if (m_StatusInterfaceEnabled) - { - cResponsePacket *resp = new cResponsePacket(); - if (!resp->initStatus(VNSI_STATUS_TIMERCHANGE)) - { - delete resp; - return; - } - - resp->finalise(); - m_socket.write(resp->getPtr(), resp->getLen()); - delete resp; - } -} - -void cVNSIClient::ChannelsChange() -{ - cMutexLock lock(&m_msgLock); - - if (!m_StatusInterfaceEnabled) - return; - - cResponsePacket *resp = new cResponsePacket(); - if (!resp->initStatus(VNSI_STATUS_CHANNELCHANGE)) - { - delete resp; - return; - } - - resp->finalise(); - m_socket.write(resp->getPtr(), resp->getLen()); - delete resp; -} - -void cVNSIClient::RecordingsChange() -{ - cMutexLock lock(&m_msgLock); - - if (!m_StatusInterfaceEnabled) - return; - - cResponsePacket *resp = new cResponsePacket(); - if (!resp->initStatus(VNSI_STATUS_RECORDINGSCHANGE)) - { - delete resp; - return; - } - - resp->finalise(); - m_socket.write(resp->getPtr(), resp->getLen()); - delete resp; -} - -void cVNSIClient::EpgChange() -{ - cMutexLock lock(&m_msgLock); - - if (!m_StatusInterfaceEnabled) - return; - - cSchedulesLock MutexLock; - const cSchedules *schedules = cSchedules::Schedules(MutexLock); - if (!schedules) - return; - - std::map::iterator it; - for (const cSchedule *schedule = schedules->First(); schedule; schedule = schedules->Next(schedule)) - { - cEvent *lastEvent = schedule->Events()->Last(); - if (!lastEvent) - continue; - - Channels.Lock(false); - const cChannel *channel = Channels.GetByChannelID(schedule->ChannelID()); - Channels.Unlock(); - - if (!channel) - continue; - - if (!VNSIChannelFilter.PassFilter(*channel)) - continue; - - uint32_t channelId = CreateStringHash(schedule->ChannelID().ToString()); - it = m_epgUpdate.find(channelId); - if (it != m_epgUpdate.end() && it->second >= lastEvent->StartTime()) - { - continue; - } - - INFOLOG("Trigger EPG update for channel %s, id: %d", channel->Name(), channelId); - - cResponsePacket *resp = new cResponsePacket(); - if (!resp->initStatus(VNSI_STATUS_EPGCHANGE)) - { - delete resp; - return; - } - resp->add_U32(channelId); - resp->finalise(); - m_socket.write(resp->getPtr(), resp->getLen()); - delete resp; - } -} - -void cVNSIClient::Recording(const cDevice *Device, const char *Name, const char *FileName, bool On) -{ - cMutexLock lock(&m_msgLock); - - if (m_StatusInterfaceEnabled) - { - cResponsePacket *resp = new cResponsePacket(); - if (!resp->initStatus(VNSI_STATUS_RECORDING)) - { - delete resp; - return; - } - - resp->add_U32(Device->CardIndex()); - resp->add_U32(On); - if (Name) - resp->add_String(Name); - else - resp->add_String(""); - - if (FileName) - resp->add_String(FileName); - else - resp->add_String(""); - - resp->finalise(); - m_socket.write(resp->getPtr(), resp->getLen()); - delete resp; - } -} - -void cVNSIClient::OsdStatusMessage(const char *Message) -{ - cMutexLock lock(&m_msgLock); - - if (m_StatusInterfaceEnabled && Message) - { - /* Ignore this messages */ - if (strcasecmp(Message, trVDR("Channel not available!")) == 0) return; - else if (strcasecmp(Message, trVDR("Delete timer?")) == 0) return; - else if (strcasecmp(Message, trVDR("Delete recording?")) == 0) return; - else if (strcasecmp(Message, trVDR("Press any key to cancel shutdown")) == 0) return; - else if (strcasecmp(Message, trVDR("Press any key to cancel restart")) == 0) return; - else if (strcasecmp(Message, trVDR("Editing - shut down anyway?")) == 0) return; - else if (strcasecmp(Message, trVDR("Recording - shut down anyway?")) == 0) return; - else if (strcasecmp(Message, trVDR("shut down anyway?")) == 0) return; - else if (strcasecmp(Message, trVDR("Recording - restart anyway?")) == 0) return; - else if (strcasecmp(Message, trVDR("Editing - restart anyway?")) == 0) return; - else if (strcasecmp(Message, trVDR("Delete channel?")) == 0) return; - else if (strcasecmp(Message, trVDR("Timer still recording - really delete?")) == 0) return; - else if (strcasecmp(Message, trVDR("Delete marks information?")) == 0) return; - else if (strcasecmp(Message, trVDR("Delete resume information?")) == 0) return; - else if (strcasecmp(Message, trVDR("CAM is in use - really reset?")) == 0) return; - else if (strcasecmp(Message, trVDR("Really restart?")) == 0) return; - else if (strcasecmp(Message, trVDR("Stop recording?")) == 0) return; - else if (strcasecmp(Message, trVDR("Cancel editing?")) == 0) return; - else if (strcasecmp(Message, trVDR("Cutter already running - Add to cutting queue?")) == 0) return; - else if (strcasecmp(Message, trVDR("No index-file found. Creating may take minutes. Create one?")) == 0) return; - - cResponsePacket *resp = new cResponsePacket(); - if (!resp->initStatus(VNSI_STATUS_MESSAGE)) - { - delete resp; - return; - } - - resp->add_U32(0); - resp->add_String(Message); - resp->finalise(); - m_socket.write(resp->getPtr(), resp->getLen()); - delete resp; - } -} - -void cVNSIClient::ChannelChange(const cChannel *Channel) -{ - cMutexLock lock(&m_msgLock); - if (m_isStreaming && m_Streamer) - { - m_Streamer->RetuneChannel(Channel); - } -} - -bool cVNSIClient::processRequest(cRequestPacket* req) -{ - cMutexLock lock(&m_msgLock); - - m_req = req; - m_resp = new cResponsePacket(); - if (!m_resp->init(m_req->getRequestID())) - { - ERRORLOG("Response packet init fail"); - delete m_resp; - delete m_req; - m_resp = NULL; - m_req = NULL; - return false; - } - - bool result = false; - switch(m_req->getOpCode()) - { - /** OPCODE 1 - 19: VNSI network functions for general purpose */ - case VNSI_LOGIN: - result = process_Login(); - break; - - case VNSI_GETTIME: - result = process_GetTime(); - break; - - case VNSI_ENABLESTATUSINTERFACE: - result = process_EnableStatusInterface(); - break; - - case VNSI_PING: - result = process_Ping(); - break; - - case VNSI_GETSETUP: - result = process_GetSetup(); - break; - - case VNSI_STORESETUP: - result = process_StoreSetup(); - break; - - /** OPCODE 20 - 39: VNSI network functions for live streaming */ - case VNSI_CHANNELSTREAM_OPEN: - result = processChannelStream_Open(); - break; - - case VNSI_CHANNELSTREAM_CLOSE: - result = processChannelStream_Close(); - break; - - case VNSI_CHANNELSTREAM_SEEK: - result = processChannelStream_Seek(); - break; - - /** OPCODE 40 - 59: VNSI network functions for recording streaming */ - case VNSI_RECSTREAM_OPEN: - result = processRecStream_Open(); - break; - - case VNSI_RECSTREAM_CLOSE: - result = processRecStream_Close(); - break; - - case VNSI_RECSTREAM_GETBLOCK: - result = processRecStream_GetBlock(); - break; - - case VNSI_RECSTREAM_POSTOFRAME: - result = processRecStream_PositionFromFrameNumber(); - break; - - case VNSI_RECSTREAM_FRAMETOPOS: - result = processRecStream_FrameNumberFromPosition(); - break; - - case VNSI_RECSTREAM_GETIFRAME: - result = processRecStream_GetIFrame(); - break; - - case VNSI_RECSTREAM_GETLENGTH: - result = processRecStream_GetLength(); - break; - - - /** OPCODE 60 - 79: VNSI network functions for channel access */ - case VNSI_CHANNELS_GETCOUNT: - result = processCHANNELS_ChannelsCount(); - break; - - case VNSI_CHANNELS_GETCHANNELS: - result = processCHANNELS_GetChannels(); - break; - - case VNSI_CHANNELGROUP_GETCOUNT: - result = processCHANNELS_GroupsCount(); - break; - - case VNSI_CHANNELGROUP_LIST: - result = processCHANNELS_GroupList(); - break; - - case VNSI_CHANNELGROUP_MEMBERS: - result = processCHANNELS_GetGroupMembers(); - break; - - case VNSI_CHANNELS_GETCAIDS: - result = processCHANNELS_GetCaids(); - break; - - case VNSI_CHANNELS_GETWHITELIST: - result = processCHANNELS_GetWhitelist(); - break; - - case VNSI_CHANNELS_GETBLACKLIST: - result = processCHANNELS_GetBlacklist(); - break; - - case VNSI_CHANNELS_SETWHITELIST: - result = processCHANNELS_SetWhitelist(); - break; - - case VNSI_CHANNELS_SETBLACKLIST: - result = processCHANNELS_SetBlacklist(); - break; - - /** OPCODE 80 - 99: VNSI network functions for timer access */ - case VNSI_TIMER_GETCOUNT: - result = processTIMER_GetCount(); - break; - - case VNSI_TIMER_GET: - result = processTIMER_Get(); - break; - - case VNSI_TIMER_GETLIST: - result = processTIMER_GetList(); - break; - - case VNSI_TIMER_ADD: - result = processTIMER_Add(); - break; - - case VNSI_TIMER_DELETE: - result = processTIMER_Delete(); - break; - - case VNSI_TIMER_UPDATE: - result = processTIMER_Update(); - break; - - - /** OPCODE 100 - 119: VNSI network functions for recording access */ - case VNSI_RECORDINGS_DISKSIZE: - result = processRECORDINGS_GetDiskSpace(); - break; - - case VNSI_RECORDINGS_GETCOUNT: - result = processRECORDINGS_GetCount(); - break; - - case VNSI_RECORDINGS_GETLIST: - result = processRECORDINGS_GetList(); - break; - - case VNSI_RECORDINGS_RENAME: - result = processRECORDINGS_Rename(); - break; - - case VNSI_RECORDINGS_DELETE: - result = processRECORDINGS_Delete(); - break; - - case VNSI_RECORDINGS_GETEDL: - result = processRECORDINGS_GetEdl(); - break; - - /** OPCODE 120 - 139: VNSI network functions for epg access and manipulating */ - case VNSI_EPG_GETFORCHANNEL: - result = processEPG_GetForChannel(); - break; - - - /** OPCODE 140 - 159: VNSI network functions for channel scanning */ - case VNSI_SCAN_SUPPORTED: - result = processSCAN_ScanSupported(); - break; - - case VNSI_SCAN_GETCOUNTRIES: - result = processSCAN_GetCountries(); - break; - - case VNSI_SCAN_GETSATELLITES: - result = processSCAN_GetSatellites(); - break; - - case VNSI_SCAN_START: - result = processSCAN_Start(); - break; - - case VNSI_SCAN_STOP: - result = processSCAN_Stop(); - break; - - /** OPCODE 160 - 179: VNSI network functions for OSD */ - case VNSI_OSD_CONNECT: - result = processOSD_Connect(); - break; - - case VNSI_OSD_DISCONNECT: - result = processOSD_Disconnect(); - break; - - case VNSI_OSD_HITKEY: - result = processOSD_Hitkey(); - break; - } - - delete m_resp; - m_resp = NULL; - - delete m_req; - m_req = NULL; - - return result; -} - - -/** OPCODE 1 - 19: VNSI network functions for general purpose */ - -bool cVNSIClient::process_Login() /* OPCODE 1 */ -{ - if (m_req->getDataLength() <= 4) return false; - - m_protocolVersion = m_req->extract_U32(); - m_req->extract_U8(); - const char *clientName = m_req->extract_String(); - - INFOLOG("Welcome client '%s' with protocol version '%u'", clientName, m_protocolVersion); - - // Send the login reply - time_t timeNow = time(NULL); - struct tm* timeStruct = localtime(&timeNow); - int timeOffset = timeStruct->tm_gmtoff; - - m_resp->add_U32(VNSI_PROTOCOLVERSION); - m_resp->add_U32(timeNow); - m_resp->add_S32(timeOffset); - m_resp->add_String("VDR-Network-Streaming-Interface (VNSI) Server"); - m_resp->add_String(VNSI_SERVER_VERSION); - m_resp->finalise(); - - if (m_protocolVersion != VNSI_PROTOCOLVERSION) - ERRORLOG("Client '%s' have a not allowed protocol version '%u', terminating client", clientName, m_protocolVersion); - else - SetLoggedIn(true); - - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - - delete[] clientName; - - return true; -} - -bool cVNSIClient::process_GetTime() /* OPCODE 2 */ -{ - time_t timeNow = time(NULL); - struct tm* timeStruct = localtime(&timeNow); - int timeOffset = timeStruct->tm_gmtoff; - - m_resp->add_U32(timeNow); - m_resp->add_S32(timeOffset); - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; -} - -bool cVNSIClient::process_EnableStatusInterface() -{ - bool enabled = m_req->extract_U8(); - - SetStatusInterface(enabled); - SetPriority(1); - - m_resp->add_U32(VNSI_RET_OK); - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; -} - -bool cVNSIClient::process_Ping() /* OPCODE 7 */ -{ - m_resp->add_U32(1); - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; -} - -bool cVNSIClient::process_GetSetup() /* OPCODE 8 */ -{ - char* name = m_req->extract_String(); - if (!strcasecmp(name, CONFNAME_PMTTIMEOUT)) - m_resp->add_U32(PmtTimeout); - else if (!strcasecmp(name, CONFNAME_TIMESHIFT)) - m_resp->add_U32(TimeshiftMode); - else if (!strcasecmp(name, CONFNAME_TIMESHIFTBUFFERSIZE)) - m_resp->add_U32(TimeshiftBufferSize); - else if (!strcasecmp(name, CONFNAME_TIMESHIFTBUFFERFILESIZE)) - m_resp->add_U32(TimeshiftBufferFileSize); - - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; -} - -bool cVNSIClient::process_StoreSetup() /* OPCODE 9 */ -{ - char* name = m_req->extract_String(); - - if (!strcasecmp(name, CONFNAME_PMTTIMEOUT)) - { - int value = m_req->extract_U32(); - cPluginVNSIServer::StoreSetup(CONFNAME_PMTTIMEOUT, value); - } - else if (!strcasecmp(name, CONFNAME_TIMESHIFT)) - { - int value = m_req->extract_U32(); - cPluginVNSIServer::StoreSetup(CONFNAME_TIMESHIFT, value); - } - else if (!strcasecmp(name, CONFNAME_TIMESHIFTBUFFERSIZE)) - { - int value = m_req->extract_U32(); - cPluginVNSIServer::StoreSetup(CONFNAME_TIMESHIFTBUFFERSIZE, value); - } - else if (!strcasecmp(name, CONFNAME_TIMESHIFTBUFFERFILESIZE)) - { - int value = m_req->extract_U32(); - cPluginVNSIServer::StoreSetup(CONFNAME_TIMESHIFTBUFFERFILESIZE, value); - } - - m_resp->add_U32(VNSI_RET_OK); - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; -} - -/** OPCODE 20 - 39: VNSI network functions for live streaming */ - -bool cVNSIClient::processChannelStream_Open() /* OPCODE 20 */ -{ - uint32_t uid = m_req->extract_U32(); - int32_t priority = m_req->extract_S32(); - uint8_t timeshift = m_req->extract_U8(); - uint32_t timeout = m_req->extract_U32(); - - if(timeout == 0) - timeout = VNSIServerConfig.stream_timeout; - - if (m_isStreaming) - StopChannelStreaming(); - - Channels.Lock(false); - const cChannel *channel = NULL; - - // try to find channel by uid first - channel = FindChannelByUID(uid); - Channels.Unlock(); - - // try channelnumber - if (channel == NULL) - channel = Channels.GetByNumber(uid); - - if (channel == NULL) { - ERRORLOG("Can't find channel %08x", uid); - m_resp->add_U32(VNSI_RET_DATAINVALID); - } - else - { - if (StartChannelStreaming(channel, priority, timeshift, timeout)) - { - INFOLOG("Started streaming of channel %s (timeout %i seconds)", channel->Name(), timeout); - // return here without sending the response - // (was already done in cLiveStreamer::StreamChannel) - return true; - } - - DEBUGLOG("Can't stream channel %s", channel->Name()); - m_resp->add_U32(VNSI_RET_DATALOCKED); - } - - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - - return false; -} - -bool cVNSIClient::processChannelStream_Close() /* OPCODE 21 */ -{ - if (m_isStreaming) - StopChannelStreaming(); - - return true; -} - -bool cVNSIClient::processChannelStream_Seek() /* OPCODE 22 */ -{ - uint32_t serial = 0; - if (m_isStreaming && m_Streamer) - { - int64_t time = m_req->extract_S64(); - if (m_Streamer->SeekTime(time, serial)) - m_resp->add_U32(VNSI_RET_OK); - else - m_resp->add_U32(VNSI_RET_ERROR); - } - else - m_resp->add_U32(VNSI_RET_ERROR); - - m_resp->add_U32(serial); - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; -} - -/** OPCODE 40 - 59: VNSI network functions for recording streaming */ - -bool cVNSIClient::processRecStream_Open() /* OPCODE 40 */ -{ - cRecording *recording = NULL; - - uint32_t uid = m_req->extract_U32(); - recording = cRecordingsCache::GetInstance().Lookup(uid); - - if (recording && m_RecPlayer == NULL) - { - m_RecPlayer = new cRecPlayer(recording); - - m_resp->add_U32(VNSI_RET_OK); - m_resp->add_U32(m_RecPlayer->getLengthFrames()); - m_resp->add_U64(m_RecPlayer->getLengthBytes()); - -#if VDRVERSNUM < 10703 - m_resp->add_U8(true);//added for TS -#else - m_resp->add_U8(recording->IsPesRecording());//added for TS -#endif - } - else - { - m_resp->add_U32(VNSI_RET_DATAUNKNOWN); - ERRORLOG("%s - unable to start recording !", __FUNCTION__); - } - - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - - return true; -} - -bool cVNSIClient::processRecStream_Close() /* OPCODE 41 */ -{ - if (m_RecPlayer) - { - delete m_RecPlayer; - m_RecPlayer = NULL; - } - - m_resp->add_U32(VNSI_RET_OK); - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; -} - -bool cVNSIClient::processRecStream_GetBlock() /* OPCODE 42 */ -{ - if (m_isStreaming) - { - ERRORLOG("Get block called during live streaming"); - return false; - } - - if (!m_RecPlayer) - { - ERRORLOG("Get block called when no recording open"); - return false; - } - - uint64_t position = m_req->extract_U64(); - uint32_t amount = m_req->extract_U32(); - - uint8_t* p = m_resp->reserve(amount); - uint32_t amountReceived = m_RecPlayer->getBlock(p, position, amount); - - if(amount > amountReceived) m_resp->unreserve(amount - amountReceived); - - if (!amountReceived) - { - m_resp->add_U32(0); - DEBUGLOG("written 4(0) as getblock got 0"); - } - - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; -} - -bool cVNSIClient::processRecStream_PositionFromFrameNumber() /* OPCODE 43 */ -{ - uint64_t retval = 0; - uint32_t frameNumber = m_req->extract_U32(); - - if (m_RecPlayer) - retval = m_RecPlayer->positionFromFrameNumber(frameNumber); - - m_resp->add_U64(retval); - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - - DEBUGLOG("Wrote posFromFrameNum reply to client"); - return true; -} - -bool cVNSIClient::processRecStream_FrameNumberFromPosition() /* OPCODE 44 */ -{ - uint32_t retval = 0; - uint64_t position = m_req->extract_U64(); - - if (m_RecPlayer) - retval = m_RecPlayer->frameNumberFromPosition(position); - - m_resp->add_U32(retval); - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - - DEBUGLOG("Wrote frameNumFromPos reply to client"); - return true; -} - -bool cVNSIClient::processRecStream_GetIFrame() /* OPCODE 45 */ -{ - bool success = false; - uint32_t frameNumber = m_req->extract_U32(); - uint32_t direction = m_req->extract_U32(); - uint64_t rfilePosition = 0; - uint32_t rframeNumber = 0; - uint32_t rframeLength = 0; - - if (m_RecPlayer) - success = m_RecPlayer->getNextIFrame(frameNumber, direction, &rfilePosition, &rframeNumber, &rframeLength); - - // returns file position, frame number, length - if (success) - { - m_resp->add_U64(rfilePosition); - m_resp->add_U32(rframeNumber); - m_resp->add_U32(rframeLength); - } - else - { - m_resp->add_U32(0); - } - - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - - DEBUGLOG("Wrote GNIF reply to client %lu %u %u", rfilePosition, rframeNumber, rframeLength); - return true; -} - -bool cVNSIClient::processRecStream_GetLength() /* OPCODE 46 */ -{ - uint64_t length = 0; - - if (m_RecPlayer) - { - m_RecPlayer->reScan(); - length = m_RecPlayer->getLengthBytes(); - } - - m_resp->add_U64(length); - - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - - return true; -} - -/** OPCODE 60 - 79: VNSI network functions for channel access */ - -bool cVNSIClient::processCHANNELS_ChannelsCount() /* OPCODE 61 */ -{ - Channels.Lock(false); - int count = Channels.MaxNumber(); - Channels.Unlock(); - - m_resp->add_U32(count); - - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; -} - -bool cVNSIClient::processCHANNELS_GetChannels() /* OPCODE 63 */ -{ - if (m_req->getDataLength() != 5) return false; - - bool radio = m_req->extract_U32(); - bool filter = m_req->extract_U8(); - - Channels.Lock(false); - - cString caids; - int caid; - int caid_idx; - for (cChannel *channel = Channels.First(); channel; channel = Channels.Next(channel)) - { - if (radio != cVNSIChannelFilter::IsRadio(channel)) - continue; - - // skip invalid channels - if (channel->Sid() == 0) - continue; - - // check filter - if (filter && !VNSIChannelFilter.PassFilter(*channel)) - continue; - - m_resp->add_U32(channel->Number()); - m_resp->add_String(m_toUTF8.Convert(channel->Name())); - m_resp->add_String(m_toUTF8.Convert(channel->Provider())); - m_resp->add_U32(CreateChannelUID(channel)); - m_resp->add_U32(channel->Ca(0)); - caid_idx = 0; - caids = "caids:"; - while((caid = channel->Ca(caid_idx)) != 0) - { - caids = cString::sprintf("%s%d;", (const char*)caids, caid); - caid_idx++; - } - m_resp->add_String((const char*)caids); - } - - Channels.Unlock(); - - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - - return true; -} - -bool cVNSIClient::processCHANNELS_GroupsCount() -{ - uint32_t type = m_req->extract_U32(); - - Channels.Lock(false); - - m_channelgroups[0].clear(); - m_channelgroups[1].clear(); - - switch(type) - { - // get groups defined in channels.conf - default: - case 0: - CreateChannelGroups(false); - break; - // automatically create groups - case 1: - CreateChannelGroups(true); - break; - } - - Channels.Unlock(); - - uint32_t count = m_channelgroups[0].size() + m_channelgroups[1].size(); - - m_resp->add_U32(count); - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; -} - -bool cVNSIClient::processCHANNELS_GroupList() -{ - uint32_t radio = m_req->extract_U8(); - std::map::iterator i; - - for(i = m_channelgroups[radio].begin(); i != m_channelgroups[radio].end(); i++) - { - m_resp->add_String(i->second.name.c_str()); - m_resp->add_U8(i->second.radio); - } - - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; -} - -bool cVNSIClient::processCHANNELS_GetGroupMembers() -{ - char* groupname = m_req->extract_String(); - uint32_t radio = m_req->extract_U8(); - bool filter = m_req->extract_U8(); - int index = 0; - - // unknown group - if(m_channelgroups[radio].find(groupname) == m_channelgroups[radio].end()) - { - delete[] groupname; - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; - } - - bool automatic = m_channelgroups[radio][groupname].automatic; - std::string name; - - Channels.Lock(false); - - for (cChannel *channel = Channels.First(); channel; channel = Channels.Next(channel)) - { - - if(automatic && !channel->GroupSep()) - name = channel->Provider(); - else - { - if(channel->GroupSep()) - { - name = channel->Name(); - continue; - } - } - - if(name.empty()) - continue; - - if(cVNSIChannelFilter::IsRadio(channel) != radio) - continue; - - // check filter - if (filter && !VNSIChannelFilter.PassFilter(*channel)) - continue; - - if(name == groupname) - { - m_resp->add_U32(CreateChannelUID(channel)); - m_resp->add_U32(++index); - } - } - - Channels.Unlock(); - - delete[] groupname; - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; -} - -bool cVNSIClient::processCHANNELS_GetCaids() -{ - uint32_t uid = m_req->extract_U32(); - - Channels.Lock(false); - const cChannel *channel = NULL; - channel = FindChannelByUID(uid); - Channels.Unlock(); - - if (channel != NULL) - { - int caid; - int idx = 0; - while((caid = channel->Ca(idx)) != 0) - { - m_resp->add_U32(caid); - idx++; - } - } - - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - - return true; -} - -bool cVNSIClient::processCHANNELS_GetWhitelist() -{ - bool radio = m_req->extract_U8(); - std::vector *providers; - - if(radio) - providers = &VNSIChannelFilter.m_providersRadio; - else - providers = &VNSIChannelFilter.m_providersVideo; - - VNSIChannelFilter.m_Mutex.Lock(); - for(unsigned int i=0; isize(); i++) - { - m_resp->add_String((*providers)[i].m_name.c_str()); - m_resp->add_U32((*providers)[i].m_caid); - } - VNSIChannelFilter.m_Mutex.Unlock(); - - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; -} - -bool cVNSIClient::processCHANNELS_GetBlacklist() -{ - bool radio = m_req->extract_U8(); - std::vector *channels; - - if(radio) - channels = &VNSIChannelFilter.m_channelsRadio; - else - channels = &VNSIChannelFilter.m_channelsVideo; - - VNSIChannelFilter.m_Mutex.Lock(); - for(unsigned int i=0; isize(); i++) - { - m_resp->add_U32((*channels)[i]); - } - VNSIChannelFilter.m_Mutex.Unlock(); - - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; -} - -bool cVNSIClient::processCHANNELS_SetWhitelist() -{ - bool radio = m_req->extract_U8(); - cVNSIProvider provider; - std::vector *providers; - - if(radio) - providers = &VNSIChannelFilter.m_providersRadio; - else - providers = &VNSIChannelFilter.m_providersVideo; - - VNSIChannelFilter.m_Mutex.Lock(); - providers->clear(); - - while(!m_req->end()) - { - char *str = m_req->extract_String(); - provider.m_name = str; - provider.m_caid = m_req->extract_U32(); - delete [] str; - providers->push_back(provider); - } - VNSIChannelFilter.StoreWhitelist(radio); - VNSIChannelFilter.m_Mutex.Unlock(); - - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; -} - -bool cVNSIClient::processCHANNELS_SetBlacklist() -{ - bool radio = m_req->extract_U8(); - cVNSIProvider provider; - std::vector *channels; - - if(radio) - channels = &VNSIChannelFilter.m_channelsRadio; - else - channels = &VNSIChannelFilter.m_channelsVideo; - - VNSIChannelFilter.m_Mutex.Lock(); - channels->clear(); - - int id; - while(!m_req->end()) - { - id = m_req->extract_U32(); - channels->push_back(id); - } - VNSIChannelFilter.StoreBlacklist(radio); - VNSIChannelFilter.m_Mutex.Unlock(); - - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; -} - -void cVNSIClient::CreateChannelGroups(bool automatic) -{ - std::string groupname; - - for (cChannel *channel = Channels.First(); channel; channel = Channels.Next(channel)) - { - bool isRadio = cVNSIChannelFilter::IsRadio(channel); - - if(automatic && !channel->GroupSep()) - groupname = channel->Provider(); - else if(!automatic && channel->GroupSep()) - groupname = channel->Name(); - - if(groupname.empty()) - continue; - - if(m_channelgroups[isRadio].find(groupname) == m_channelgroups[isRadio].end()) - { - ChannelGroup group; - group.name = groupname; - group.radio = isRadio; - group.automatic = automatic; - m_channelgroups[isRadio][groupname] = group; - } - } -} - -/** OPCODE 80 - 99: VNSI network functions for timer access */ - -bool cVNSIClient::processTIMER_GetCount() /* OPCODE 80 */ -{ - cMutexLock lock(&m_timerLock); - - int count = Timers.Count(); - - m_resp->add_U32(count); - - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; -} - -bool cVNSIClient::processTIMER_Get() /* OPCODE 81 */ -{ - cMutexLock lock(&m_timerLock); - - uint32_t number = m_req->extract_U32(); - - int numTimers = Timers.Count(); - if (numTimers > 0) - { - cTimer *timer = Timers.Get(number-1); - if (timer) - { - m_resp->add_U32(VNSI_RET_OK); - - m_resp->add_U32(timer->Index()+1); - m_resp->add_U32(timer->HasFlags(tfActive)); - m_resp->add_U32(timer->Recording()); - m_resp->add_U32(timer->Pending()); - m_resp->add_U32(timer->Priority()); - m_resp->add_U32(timer->Lifetime()); - m_resp->add_U32(timer->Channel()->Number()); - m_resp->add_U32(CreateChannelUID(timer->Channel())); - m_resp->add_U32(timer->StartTime()); - m_resp->add_U32(timer->StopTime()); - m_resp->add_U32(timer->Day()); - m_resp->add_U32(timer->WeekDays()); - m_resp->add_String(m_toUTF8.Convert(timer->File())); - } - else - m_resp->add_U32(VNSI_RET_DATAUNKNOWN); - } - else - m_resp->add_U32(VNSI_RET_DATAUNKNOWN); - - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; -} - -bool cVNSIClient::processTIMER_GetList() /* OPCODE 82 */ -{ - cMutexLock lock(&m_timerLock); - - cTimer *timer; - int numTimers = Timers.Count(); - - m_resp->add_U32(numTimers); - - for (int i = 0; i < numTimers; i++) - { - timer = Timers.Get(i); - if (!timer) - continue; - - m_resp->add_U32(timer->Index()+1); - m_resp->add_U32(timer->HasFlags(tfActive)); - m_resp->add_U32(timer->Recording()); - m_resp->add_U32(timer->Pending()); - m_resp->add_U32(timer->Priority()); - m_resp->add_U32(timer->Lifetime()); - m_resp->add_U32(timer->Channel()->Number()); - m_resp->add_U32(CreateChannelUID(timer->Channel())); - m_resp->add_U32(timer->StartTime()); - m_resp->add_U32(timer->StopTime()); - m_resp->add_U32(timer->Day()); - m_resp->add_U32(timer->WeekDays()); - m_resp->add_String(m_toUTF8.Convert(timer->File())); - } - - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; -} - -bool cVNSIClient::processTIMER_Add() /* OPCODE 83 */ -{ - cMutexLock lock(&m_timerLock); - - uint32_t flags = m_req->extract_U32() > 0 ? tfActive : tfNone; - uint32_t priority = m_req->extract_U32(); - uint32_t lifetime = m_req->extract_U32(); - uint32_t channelid = m_req->extract_U32(); - time_t startTime = m_req->extract_U32(); - time_t stopTime = m_req->extract_U32(); - time_t day = m_req->extract_U32(); - uint32_t weekdays = m_req->extract_U32(); - const char *file = m_req->extract_String(); - const char *aux = m_req->extract_String(); - - // handle instant timers - if(startTime == -1 || startTime == 0) - { - startTime = time(NULL); - } - - struct tm tm_r; - struct tm *time = localtime_r(&startTime, &tm_r); - if (day <= 0) - day = cTimer::SetTime(startTime, 0); - int start = time->tm_hour * 100 + time->tm_min; - time = localtime_r(&stopTime, &tm_r); - int stop = time->tm_hour * 100 + time->tm_min; - - cString buffer; - const cChannel* channel = FindChannelByUID(channelid); - if(channel != NULL) - { - buffer = cString::sprintf("%u:%s:%s:%04d:%04d:%d:%d:%s:%s\n", flags, (const char*)channel->GetChannelID().ToString(), *cTimer::PrintDay(day, weekdays, true), start, stop, priority, lifetime, file, aux); - } - - delete[] file; - delete[] aux; - - cTimer *timer = new cTimer; - if (timer->Parse(buffer)) - { - cTimer *t = Timers.GetTimer(timer); - if (!t) - { - Timers.Add(timer); - Timers.SetModified(); - INFOLOG("Timer %s added", *timer->ToDescr()); - m_resp->add_U32(VNSI_RET_OK); - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; - } - else - { - ERRORLOG("Timer already defined: %d %s", t->Index() + 1, *t->ToText()); - m_resp->add_U32(VNSI_RET_DATALOCKED); - } - } - else - { - ERRORLOG("Error in timer settings"); - m_resp->add_U32(VNSI_RET_DATAINVALID); - } - - delete timer; - - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; -} - -bool cVNSIClient::processTIMER_Delete() /* OPCODE 84 */ -{ - cMutexLock lock(&m_timerLock); - - uint32_t number = m_req->extract_U32(); - bool force = m_req->extract_U32(); - - if (number <= 0 || number > (uint32_t)Timers.Count()) - { - ERRORLOG("Unable to delete timer - invalid timer identifier"); - m_resp->add_U32(VNSI_RET_DATAINVALID); - } - else - { - cTimer *timer = Timers.Get(number-1); - if (timer) - { - if (!Timers.BeingEdited()) - { - if (timer->Recording()) - { - if (force) - { - timer->Skip(); - cRecordControls::Process(time(NULL)); - } - else - { - ERRORLOG("Timer \"%i\" is recording and can be deleted (use force=1 to stop it)", number); - m_resp->add_U32(VNSI_RET_RECRUNNING); - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; - } - } - INFOLOG("Deleting timer %s", *timer->ToDescr()); - Timers.Del(timer); - Timers.SetModified(); - m_resp->add_U32(VNSI_RET_OK); - } - else - { - ERRORLOG("Unable to delete timer - timers being edited at VDR"); - m_resp->add_U32(VNSI_RET_DATALOCKED); - } - } - else - { - ERRORLOG("Unable to delete timer - invalid timer identifier"); - m_resp->add_U32(VNSI_RET_DATAINVALID); - } - } - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; -} - -bool cVNSIClient::processTIMER_Update() /* OPCODE 85 */ -{ - cMutexLock lock(&m_timerLock); - - int length = m_req->getDataLength(); - uint32_t index = m_req->extract_U32(); - bool active = m_req->extract_U32(); - - cTimer *timer = Timers.Get(index - 1); - if (!timer) - { - ERRORLOG("Timer \"%u\" not defined", index); - m_resp->add_U32(VNSI_RET_DATAUNKNOWN); - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; - } - - cTimer t = *timer; - - if (length == 8) - { - if (active) - t.SetFlags(tfActive); - else - t.ClrFlags(tfActive); - } - else - { - uint32_t flags = active ? tfActive : tfNone; - uint32_t priority = m_req->extract_U32(); - uint32_t lifetime = m_req->extract_U32(); - uint32_t channelid = m_req->extract_U32(); - time_t startTime = m_req->extract_U32(); - time_t stopTime = m_req->extract_U32(); - time_t day = m_req->extract_U32(); - uint32_t weekdays = m_req->extract_U32(); - const char *file = m_req->extract_String(); - const char *aux = m_req->extract_String(); - - struct tm tm_r; - struct tm *time = localtime_r(&startTime, &tm_r); - if (day <= 0) - day = cTimer::SetTime(startTime, 0); - int start = time->tm_hour * 100 + time->tm_min; - time = localtime_r(&stopTime, &tm_r); - int stop = time->tm_hour * 100 + time->tm_min; - - cString buffer; - const cChannel* channel = FindChannelByUID(channelid); - if(channel != NULL) - { - buffer = cString::sprintf("%u:%s:%s:%04d:%04d:%d:%d:%s:%s\n", flags, (const char*)channel->GetChannelID().ToString(), *cTimer::PrintDay(day, weekdays, true), start, stop, priority, lifetime, file, aux); - } - - delete[] file; - delete[] aux; - - if (!t.Parse(buffer)) - { - ERRORLOG("Error in timer settings"); - m_resp->add_U32(VNSI_RET_DATAINVALID); - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; - } - } - - *timer = t; - Timers.SetModified(); - - m_resp->add_U32(VNSI_RET_OK); - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; -} - - -/** OPCODE 100 - 119: VNSI network functions for recording access */ - -bool cVNSIClient::processRECORDINGS_GetDiskSpace() /* OPCODE 100 */ -{ - int FreeMB; -#if VDRVERSNUM >= 20102 - int Percent = cVideoDirectory::VideoDiskSpace(&FreeMB); -#else - int Percent = VideoDiskSpace(&FreeMB); -#endif - int Total = (FreeMB / (100 - Percent)) * 100; - - m_resp->add_U32(Total); - m_resp->add_U32(FreeMB); - m_resp->add_U32(Percent); - - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; -} - -bool cVNSIClient::processRECORDINGS_GetCount() /* OPCODE 101 */ -{ - Recordings.Load(); - m_resp->add_U32(Recordings.Count()); - - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; -} - -bool cVNSIClient::processRECORDINGS_GetList() /* OPCODE 102 */ -{ - cMutexLock lock(&m_timerLock); - cThreadLock RecordingsLock(&Recordings); - - for (cRecording *recording = Recordings.First(); recording; recording = Recordings.Next(recording)) - { -#if APIVERSNUM >= 10705 - const cEvent *event = recording->Info()->GetEvent(); -#else - const cEvent *event = NULL; -#endif - - time_t recordingStart = 0; - int recordingDuration = 0; - if (event) - { - recordingStart = event->StartTime(); - recordingDuration = event->Duration(); - } - else - { - cRecordControl *rc = cRecordControls::GetRecordControl(recording->FileName()); - if (rc) - { - recordingStart = rc->Timer()->StartTime(); - recordingDuration = rc->Timer()->StopTime() - recordingStart; - } - else - { -#if APIVERSNUM >= 10727 - recordingStart = recording->Start(); -#else - recordingStart = recording->start; -#endif - } - } - DEBUGLOG("GRI: RC: recordingStart=%lu recordingDuration=%i", recordingStart, recordingDuration); - - // recording_time - m_resp->add_U32(recordingStart); - - // duration - m_resp->add_U32(recordingDuration); - - // priority -#if APIVERSNUM >= 10727 - m_resp->add_U32(recording->Priority()); -#else - m_resp->add_U32(recording->priority); -#endif - - // lifetime -#if APIVERSNUM >= 10727 - m_resp->add_U32(recording->Lifetime()); -#else - m_resp->add_U32(recording->lifetime); -#endif - - // channel_name - m_resp->add_String(recording->Info()->ChannelName() ? m_toUTF8.Convert(recording->Info()->ChannelName()) : ""); - - char* fullname = strdup(recording->Name()); - char* recname = strrchr(fullname, FOLDERDELIMCHAR); - char* directory = NULL; - - if(recname == NULL) { - recname = fullname; - } - else { - *recname = 0; - recname++; - directory = fullname; - } - - // title - m_resp->add_String(m_toUTF8.Convert(recname)); - - // subtitle - if (!isempty(recording->Info()->ShortText())) - m_resp->add_String(m_toUTF8.Convert(recording->Info()->ShortText())); - else - m_resp->add_String(""); - - // description - if (!isempty(recording->Info()->Description())) - m_resp->add_String(m_toUTF8.Convert(recording->Info()->Description())); - else - m_resp->add_String(""); - - // directory - if(directory != NULL) { - char* p = directory; - while(*p != 0) { - if(*p == FOLDERDELIMCHAR) *p = '/'; - if(*p == '_') *p = ' '; - p++; - } - while(*directory == '/') directory++; - } - - m_resp->add_String((isempty(directory)) ? "" : m_toUTF8.Convert(directory)); - - // filename / uid of recording - uint32_t uid = cRecordingsCache::GetInstance().Register(recording); - m_resp->add_U32(uid); - - free(fullname); - } - - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; -} - -bool cVNSIClient::processRECORDINGS_Rename() /* OPCODE 103 */ -{ - uint32_t uid = m_req->extract_U32(); - char* newtitle = m_req->extract_String(); - cRecording* recording = cRecordingsCache::GetInstance().Lookup(uid); - int r = VNSI_RET_DATAINVALID; - - if(recording != NULL) { - // get filename and remove last part (recording time) - char* filename_old = strdup((const char*)recording->FileName()); - char* sep = strrchr(filename_old, '/'); - if(sep != NULL) { - *sep = 0; - } - - // replace spaces in newtitle - strreplace(newtitle, ' ', '_'); - char* filename_new = new char[1024]; - strncpy(filename_new, filename_old, 512); - sep = strrchr(filename_new, '/'); - if(sep != NULL) { - sep++; - *sep = 0; - } - strncat(filename_new, newtitle, 512); - - INFOLOG("renaming recording '%s' to '%s'", filename_old, filename_new); - r = rename(filename_old, filename_new); - Recordings.Update(); - - free(filename_old); - delete[] filename_new; - } - - m_resp->add_U32(r); - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - - return true; -} - -bool cVNSIClient::processRECORDINGS_Delete() /* OPCODE 104 */ -{ - cString recName; - cRecording* recording = NULL; - - uint32_t uid = m_req->extract_U32(); - recording = cRecordingsCache::GetInstance().Lookup(uid); - - if (recording) - { - DEBUGLOG("deleting recording: %s", recording->Name()); - - cRecordControl *rc = cRecordControls::GetRecordControl(recording->FileName()); - if (!rc) - { - if (recording->Delete()) - { - // Copy svdrdeveldevelp's way of doing this, see if it works - Recordings.DelByName(recording->FileName()); - INFOLOG("Recording \"%s\" deleted", recording->FileName()); - m_resp->add_U32(VNSI_RET_OK); - } - else - { - ERRORLOG("Error while deleting recording!"); - m_resp->add_U32(VNSI_RET_ERROR); - } - } - else - { - ERRORLOG("Recording \"%s\" is in use by timer %d", recording->Name(), rc->Timer()->Index() + 1); - m_resp->add_U32(VNSI_RET_DATALOCKED); - } - } - else - { - ERRORLOG("Error in recording name \"%s\"", (const char*)recName); - m_resp->add_U32(VNSI_RET_DATAUNKNOWN); - } - - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - - return true; -} - -bool cVNSIClient::processRECORDINGS_GetEdl() /* OPCODE 105 */ -{ - cString recName; - cRecording* recording = NULL; - - uint32_t uid = m_req->extract_U32(); - recording = cRecordingsCache::GetInstance().Lookup(uid); - - if (recording) - { - cMarks marks; - if(marks.Load(recording->FileName(), recording->FramesPerSecond(), recording->IsPesRecording())) - { -#if VDRVERSNUM >= 10732 - cMark* mark = NULL; - double fps = recording->FramesPerSecond(); - while((mark = marks.GetNextBegin(mark)) != NULL) - { - m_resp->add_U64(mark->Position() *1000 / fps); - m_resp->add_U64(mark->Position() *1000 / fps); - m_resp->add_S32(2); - } -#endif - } - } - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - - return true; -} - - -/** OPCODE 120 - 139: VNSI network functions for epg access and manipulating */ - -bool cVNSIClient::processEPG_GetForChannel() /* OPCODE 120 */ -{ - uint32_t channelUID = 0; - - channelUID = m_req->extract_U32(); - - uint32_t startTime = m_req->extract_U32(); - uint32_t duration = m_req->extract_U32(); - - Channels.Lock(false); - - const cChannel* channel = NULL; - - channel = FindChannelByUID(channelUID); - if(channel != NULL) - { - DEBUGLOG("get schedule called for channel '%s'", (const char*)channel->GetChannelID().ToString()); - } - - if (!channel) - { - m_resp->add_U32(0); - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - Channels.Unlock(); - - ERRORLOG("written 0 because channel = NULL"); - return true; - } - - cSchedulesLock MutexLock; - const cSchedules *Schedules = cSchedules::Schedules(MutexLock); - m_epgUpdate[channelUID] = 0; - if (!Schedules) - { - m_resp->add_U32(0); - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - Channels.Unlock(); - - DEBUGLOG("written 0 because Schedule!s! = NULL"); - return true; - } - - const cSchedule *Schedule = Schedules->GetSchedule(channel->GetChannelID()); - if (!Schedule) - { - m_resp->add_U32(0); - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - Channels.Unlock(); - - DEBUGLOG("written 0 because Schedule = NULL"); - return true; - } - - bool atLeastOneEvent = false; - - uint32_t thisEventID; - uint32_t thisEventTime; - uint32_t thisEventDuration; - uint32_t thisEventContent; - uint32_t thisEventRating; - const char* thisEventTitle; - const char* thisEventSubTitle; - const char* thisEventDescription; - - for (const cEvent* event = Schedule->Events()->First(); event; event = Schedule->Events()->Next(event)) - { - thisEventID = event->EventID(); - thisEventTitle = event->Title(); - thisEventSubTitle = event->ShortText(); - thisEventDescription = event->Description(); - thisEventTime = event->StartTime(); - thisEventDuration = event->Duration(); -#if defined(USE_PARENTALRATING) || defined(PARENTALRATINGCONTENTVERSNUM) - thisEventContent = event->Contents(); - thisEventRating = 0; -#elif APIVERSNUM >= 10711 - thisEventContent = event->Contents(); - thisEventRating = event->ParentalRating(); -#else - thisEventContent = 0; - thisEventRating = 0; -#endif - - //in the past filter - if ((thisEventTime + thisEventDuration) < (uint32_t)time(NULL)) continue; - - //start time filter - if ((thisEventTime + thisEventDuration) <= startTime) continue; - - //duration filter - if (duration != 0 && thisEventTime >= (startTime + duration)) continue; - - if (!thisEventTitle) thisEventTitle = ""; - if (!thisEventSubTitle) thisEventSubTitle = ""; - if (!thisEventDescription) thisEventDescription = ""; - - m_resp->add_U32(thisEventID); - m_resp->add_U32(thisEventTime); - m_resp->add_U32(thisEventDuration); - m_resp->add_U32(thisEventContent); - m_resp->add_U32(thisEventRating); - - m_resp->add_String(m_toUTF8.Convert(thisEventTitle)); - m_resp->add_String(m_toUTF8.Convert(thisEventSubTitle)); - m_resp->add_String(m_toUTF8.Convert(thisEventDescription)); - - atLeastOneEvent = true; - } - - Channels.Unlock(); - DEBUGLOG("Got all event data"); - - if (!atLeastOneEvent) - { - m_resp->add_U32(0); - DEBUGLOG("Written 0 because no data"); - } - - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - - cEvent *lastEvent = Schedule->Events()->Last(); - if (lastEvent) - { - m_epgUpdate[channelUID] = lastEvent->StartTime(); - } - DEBUGLOG("written schedules packet"); - - return true; -} - - -/** OPCODE 140 - 169: VNSI network functions for channel scanning */ - -bool cVNSIClient::processSCAN_ScanSupported() /* OPCODE 140 */ -{ - /** Note: Using "WirbelScanService-StopScan-v1.0" to detect - a present service interface in wirbelscan plugin, - it returns true if supported */ - cPlugin *p = cPluginManager::GetPlugin("wirbelscan"); - if (p && p->Service("WirbelScanService-StopScan-v1.0", NULL)) - m_resp->add_U32(VNSI_RET_OK); - else - m_resp->add_U32(VNSI_RET_NOTSUPPORTED); - - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; -} - -bool cVNSIClient::processSCAN_GetCountries() /* OPCODE 141 */ -{ - if (!m_processSCAN_Response) - { - m_processSCAN_Response = m_resp; - cPlugin *p = cPluginManager::GetPlugin("wirbelscan"); - if (p) - { - m_resp->add_U32(VNSI_RET_OK); - p->Service("WirbelScanService-GetCountries-v1.0", (void*) processSCAN_AddCountry); - } - else - { - m_resp->add_U32(VNSI_RET_NOTSUPPORTED); - } - m_processSCAN_Response = NULL; - } - else - { - m_resp->add_U32(VNSI_RET_DATALOCKED); - } - - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; -} - -bool cVNSIClient::processSCAN_GetSatellites() /* OPCODE 142 */ -{ - if (!m_processSCAN_Response) - { - m_processSCAN_Response = m_resp; - cPlugin *p = cPluginManager::GetPlugin("wirbelscan"); - if (p) - { - m_resp->add_U32(VNSI_RET_OK); - p->Service("WirbelScanService-GetSatellites-v1.0", (void*) processSCAN_AddSatellite); - } - else - { - m_resp->add_U32(VNSI_RET_NOTSUPPORTED); - } - m_processSCAN_Response = NULL; - } - else - { - m_resp->add_U32(VNSI_RET_DATALOCKED); - } - - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; -} - -bool cVNSIClient::processSCAN_Start() /* OPCODE 143 */ -{ - WirbelScanService_DoScan_v1_0 svc; - svc.type = (scantype_t)m_req->extract_U32(); - svc.scan_tv = (bool)m_req->extract_U8(); - svc.scan_radio = (bool)m_req->extract_U8(); - svc.scan_fta = (bool)m_req->extract_U8(); - svc.scan_scrambled = (bool)m_req->extract_U8(); - svc.scan_hd = (bool)m_req->extract_U8(); - svc.CountryIndex = (int)m_req->extract_U32(); - svc.DVBC_Inversion = (int)m_req->extract_U32(); - svc.DVBC_Symbolrate = (int)m_req->extract_U32(); - svc.DVBC_QAM = (int)m_req->extract_U32(); - svc.DVBT_Inversion = (int)m_req->extract_U32(); - svc.SatIndex = (int)m_req->extract_U32(); - svc.ATSC_Type = (int)m_req->extract_U32(); - svc.SetPercentage = processSCAN_SetPercentage; - svc.SetSignalStrength = processSCAN_SetSignalStrength; - svc.SetDeviceInfo = processSCAN_SetDeviceInfo; - svc.SetTransponder = processSCAN_SetTransponder; - svc.NewChannel = processSCAN_NewChannel; - svc.IsFinished = processSCAN_IsFinished; - svc.SetStatus = processSCAN_SetStatus; - m_processSCAN_Socket = &m_socket; - - cPlugin *p = cPluginManager::GetPlugin("wirbelscan"); - if (p) - { - if (p->Service("WirbelScanService-DoScan-v1.0", (void*) &svc)) - m_resp->add_U32(VNSI_RET_OK); - else - m_resp->add_U32(VNSI_RET_ERROR); - } - else - { - m_resp->add_U32(VNSI_RET_NOTSUPPORTED); - } - - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; -} - -bool cVNSIClient::processSCAN_Stop() /* OPCODE 144 */ -{ - cPlugin *p = cPluginManager::GetPlugin("wirbelscan"); - if (p) - { - p->Service("WirbelScanService-StopScan-v1.0", NULL); - m_resp->add_U32(VNSI_RET_OK); - } - else - { - m_resp->add_U32(VNSI_RET_NOTSUPPORTED); - } - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - return true; -} - -cResponsePacket *cVNSIClient::m_processSCAN_Response = NULL; -cxSocket *cVNSIClient::m_processSCAN_Socket = NULL; - -void cVNSIClient::processSCAN_AddCountry(int index, const char *isoName, const char *longName) -{ - m_processSCAN_Response->add_U32(index); - m_processSCAN_Response->add_String(isoName); - m_processSCAN_Response->add_String(longName); -} - -void cVNSIClient::processSCAN_AddSatellite(int index, const char *shortName, const char *longName) -{ - m_processSCAN_Response->add_U32(index); - m_processSCAN_Response->add_String(shortName); - m_processSCAN_Response->add_String(longName); -} - -void cVNSIClient::processSCAN_SetPercentage(int percent) -{ - cResponsePacket *resp = new cResponsePacket(); - if (!resp->initScan(VNSI_SCANNER_PERCENTAGE)) - { - delete resp; - return; - } - resp->add_U32(percent); - resp->finalise(); - m_processSCAN_Socket->write(resp->getPtr(), resp->getLen()); - delete resp; -} - -void cVNSIClient::processSCAN_SetSignalStrength(int strength, bool locked) -{ - cResponsePacket *resp = new cResponsePacket(); - if (!resp->initScan(VNSI_SCANNER_SIGNAL)) - { - delete resp; - return; - } - strength *= 100; - strength /= 0xFFFF; - resp->add_U32(strength); - resp->add_U32(locked); - resp->finalise(); - m_processSCAN_Socket->write(resp->getPtr(), resp->getLen()); - delete resp; -} - -void cVNSIClient::processSCAN_SetDeviceInfo(const char *Info) -{ - cResponsePacket *resp = new cResponsePacket(); - if (!resp->initScan(VNSI_SCANNER_DEVICE)) - { - delete resp; - return; - } - resp->add_String(Info); - resp->finalise(); - m_processSCAN_Socket->write(resp->getPtr(), resp->getLen()); - delete resp; -} - -void cVNSIClient::processSCAN_SetTransponder(const char *Info) -{ - cResponsePacket *resp = new cResponsePacket(); - if (!resp->initScan(VNSI_SCANNER_TRANSPONDER)) - { - delete resp; - return; - } - resp->add_String(Info); - resp->finalise(); - m_processSCAN_Socket->write(resp->getPtr(), resp->getLen()); - delete resp; -} - -void cVNSIClient::processSCAN_NewChannel(const char *Name, bool isRadio, bool isEncrypted, bool isHD) -{ - cResponsePacket *resp = new cResponsePacket(); - if (!resp->initScan(VNSI_SCANNER_NEWCHANNEL)) - { - delete resp; - return; - } - resp->add_U32(isRadio); - resp->add_U32(isEncrypted); - resp->add_U32(isHD); - resp->add_String(Name); - resp->finalise(); - m_processSCAN_Socket->write(resp->getPtr(), resp->getLen()); - delete resp; -} - -void cVNSIClient::processSCAN_IsFinished() -{ - cResponsePacket *resp = new cResponsePacket(); - if (!resp->initScan(VNSI_SCANNER_FINISHED)) - { - delete resp; - return; - } - resp->finalise(); - m_processSCAN_Socket->write(resp->getPtr(), resp->getLen()); - m_processSCAN_Socket = NULL; - delete resp; -} - -void cVNSIClient::processSCAN_SetStatus(int status) -{ - cResponsePacket *resp = new cResponsePacket(); - if (!resp->initScan(VNSI_SCANNER_STATUS)) - { - delete resp; - return; - } - resp->add_U32(status); - resp->finalise(); - m_processSCAN_Socket->write(resp->getPtr(), resp->getLen()); - delete resp; -} - -bool cVNSIClient::processOSD_Connect() /* OPCODE 160 */ -{ - m_Osd = new cVnsiOsdProvider(&m_socket); - int osdWidth, osdHeight; - double aspect; - cDevice::PrimaryDevice()->GetOsdSize(osdWidth, osdHeight, aspect); - m_resp->add_U32(osdWidth); - m_resp->add_U32(osdHeight); - m_resp->finalise(); - m_socket.write(m_resp->getPtr(), m_resp->getLen()); - - m_Osd = new cVnsiOsdProvider(&m_socket); - return true; -} - -bool cVNSIClient::processOSD_Disconnect() /* OPCODE 161 */ -{ - if (m_Osd) - { - delete m_Osd; - m_Osd = NULL; - } - return true; -} - -bool cVNSIClient::processOSD_Hitkey() /* OPCODE 162 */ -{ - if (m_Osd) - { - unsigned int key = m_req->extract_U32(); - cVnsiOsdProvider::SendKey(key); - } - return true; -} diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsiclient.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsiclient.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsiclient.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsiclient.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,186 +0,0 @@ -/* - * vdr-plugin-vnsi - XBMC server plugin for VDR - * - * Copyright (C) 2010 Alwin Esch (Team XBMC) - * Copyright (C) 2010, 2011 Alexander Pipelka - * - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ - -#ifndef VNSI_CLIENT_H -#define VNSI_CLIENT_H - -#include -#include -#include -#include - -#include "config.h" -#include "cxsocket.h" - -#include -#include - -class cChannel; -class cDevice; -class cLiveStreamer; -class cRequestPacket; -class cResponsePacket; -class cRecPlayer; -class cCmdControl; -class cVnsiOsdProvider; - -class cVNSIClient : public cThread - , public cStatus -{ -private: - - unsigned int m_Id; - cxSocket m_socket; - bool m_loggedIn; - bool m_StatusInterfaceEnabled; - cLiveStreamer *m_Streamer; - bool m_isStreaming; - cString m_ClientAddress; - cRecPlayer *m_RecPlayer; - cRequestPacket *m_req; - cResponsePacket *m_resp; - cCharSetConv m_toUTF8; - uint32_t m_protocolVersion; - cMutex m_msgLock; - static cMutex m_timerLock; - cVnsiOsdProvider *m_Osd; - std::map m_epgUpdate; - -protected: - - bool processRequest(cRequestPacket* req); - - virtual void Action(void); - - virtual void TimerChange(const cTimer *Timer, eTimerChange Change); - virtual void Recording(const cDevice *Device, const char *Name, const char *FileName, bool On); - virtual void OsdStatusMessage(const char *Message); - virtual void ChannelChange(const cChannel *Channel); - -public: - - cVNSIClient(int fd, unsigned int id, const char *ClientAdr); - virtual ~cVNSIClient(); - - void ChannelsChange(); - void RecordingsChange(); - void TimerChange(); - void EpgChange(); - - unsigned int GetID() { return m_Id; } - -protected: - - void SetLoggedIn(bool yesNo) { m_loggedIn = yesNo; } - void SetStatusInterface(bool yesNo) { m_StatusInterfaceEnabled = yesNo; } - bool StartChannelStreaming(const cChannel *channel, int32_t priority, uint8_t timeshift, uint32_t timeout); - void StopChannelStreaming(); - -private: - - typedef struct { - bool automatic; - bool radio; - std::string name; - } ChannelGroup; - - std::map m_channelgroups[2]; - - bool process_Login(); - bool process_GetTime(); - bool process_EnableStatusInterface(); - bool process_Ping(); - bool process_GetSetup(); - bool process_StoreSetup(); - - bool processChannelStream_Open(); - bool processChannelStream_Close(); - bool processChannelStream_Seek(); - - bool processRecStream_Open(); - bool processRecStream_Close(); - bool processRecStream_GetBlock(); - bool processRecStream_PositionFromFrameNumber(); - bool processRecStream_FrameNumberFromPosition(); - bool processRecStream_GetIFrame(); - bool processRecStream_GetLength(); - - bool processCHANNELS_GroupsCount(); - bool processCHANNELS_ChannelsCount(); - bool processCHANNELS_GroupList(); - bool processCHANNELS_GetChannels(); - bool processCHANNELS_GetGroupMembers(); - bool processCHANNELS_GetCaids(); - bool processCHANNELS_GetWhitelist(); - bool processCHANNELS_GetBlacklist(); - bool processCHANNELS_SetWhitelist(); - bool processCHANNELS_SetBlacklist(); - - void CreateChannelGroups(bool automatic); - - bool processTIMER_GetCount(); - bool processTIMER_Get(); - bool processTIMER_GetList(); - bool processTIMER_Add(); - bool processTIMER_Delete(); - bool processTIMER_Update(); - - bool processRECORDINGS_GetDiskSpace(); - bool processRECORDINGS_GetCount(); - bool processRECORDINGS_GetList(); - bool processRECORDINGS_GetInfo(); - bool processRECORDINGS_Rename(); - bool processRECORDINGS_Delete(); - bool processRECORDINGS_Move(); - bool processRECORDINGS_GetEdl(); - - bool processEPG_GetForChannel(); - - bool processSCAN_ScanSupported(); - bool processSCAN_GetCountries(); - bool processSCAN_GetSatellites(); - bool processSCAN_Start(); - bool processSCAN_Stop(); - - /** Static callback functions to interact with wirbelscan plugin over - the plugin service interface */ - static void processSCAN_AddCountry(int index, const char *isoName, const char *longName); - static void processSCAN_AddSatellite(int index, const char *shortName, const char *longName); - static void processSCAN_SetPercentage(int percent); - static void processSCAN_SetSignalStrength(int strength, bool locked); - static void processSCAN_SetDeviceInfo(const char *Info); - static void processSCAN_SetTransponder(const char *Info); - static void processSCAN_NewChannel(const char *Name, bool isRadio, bool isEncrypted, bool isHD); - static void processSCAN_IsFinished(); - static void processSCAN_SetStatus(int status); - static cResponsePacket *m_processSCAN_Response; - static cxSocket *m_processSCAN_Socket; - - bool processOSD_Connect(); - bool processOSD_Disconnect(); - bool processOSD_Hitkey(); -}; - -#endif // VNSI_CLIENT_H diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsicommand.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsicommand.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsicommand.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsicommand.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,158 +0,0 @@ -/* - * vdr-plugin-vnsi - XBMC server plugin for VDR - * - * Copyright (C) 2010 Alwin Esch (Team XBMC) - * Copyright (C) 2010, 2011 Alexander Pipelka - * - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ - -#ifndef VNSI_COMMAND_H -#define VNSI_COMMAND_H - -/** Current VNSI Protocol Version number */ -#define VNSI_PROTOCOLVERSION 5 - -/** Packet types */ -#define VNSI_CHANNEL_REQUEST_RESPONSE 1 -#define VNSI_CHANNEL_STREAM 2 -#define VNSI_CHANNEL_KEEPALIVE 3 -#define VNSI_CHANNEL_NETLOG 4 -#define VNSI_CHANNEL_STATUS 5 -#define VNSI_CHANNEL_SCAN 6 -#define VNSI_CHANNEL_OSD 7 - -/** Response packets operation codes */ - -#define CONFNAME_PMTTIMEOUT "PmtTimeout" -#define CONFNAME_TIMESHIFT "Timeshift" -#define CONFNAME_TIMESHIFTBUFFERSIZE "TimeshiftBufferSize" -#define CONFNAME_TIMESHIFTBUFFERFILESIZE "TimeshiftBufferFileSize" -#define CONFNAME_TIMESHIFTBUFFERDIR "TimeshiftBufferDir" - -/* OPCODE 1 - 19: VNSI network functions for general purpose */ -#define VNSI_LOGIN 1 -#define VNSI_GETTIME 2 -#define VNSI_ENABLESTATUSINTERFACE 3 -#define VNSI_PING 7 -#define VNSI_GETSETUP 8 -#define VNSI_STORESETUP 9 - -/* OPCODE 20 - 39: VNSI network functions for live streaming */ -#define VNSI_CHANNELSTREAM_OPEN 20 -#define VNSI_CHANNELSTREAM_CLOSE 21 -#define VNSI_CHANNELSTREAM_SEEK 22 - -/* OPCODE 40 - 59: VNSI network functions for recording streaming */ -#define VNSI_RECSTREAM_OPEN 40 -#define VNSI_RECSTREAM_CLOSE 41 -#define VNSI_RECSTREAM_GETBLOCK 42 -#define VNSI_RECSTREAM_POSTOFRAME 43 -#define VNSI_RECSTREAM_FRAMETOPOS 44 -#define VNSI_RECSTREAM_GETIFRAME 45 -#define VNSI_RECSTREAM_GETLENGTH 46 - -/* OPCODE 60 - 79: VNSI network functions for channel access */ -#define VNSI_CHANNELS_GETCOUNT 61 -#define VNSI_CHANNELS_GETCHANNELS 63 -#define VNSI_CHANNELGROUP_GETCOUNT 65 -#define VNSI_CHANNELGROUP_LIST 66 -#define VNSI_CHANNELGROUP_MEMBERS 67 -#define VNSI_CHANNELS_GETCAIDS 68 -#define VNSI_CHANNELS_GETWHITELIST 69 -#define VNSI_CHANNELS_GETBLACKLIST 70 -#define VNSI_CHANNELS_SETWHITELIST 71 -#define VNSI_CHANNELS_SETBLACKLIST 72 - -/* OPCODE 80 - 99: VNSI network functions for timer access */ -#define VNSI_TIMER_GETCOUNT 80 -#define VNSI_TIMER_GET 81 -#define VNSI_TIMER_GETLIST 82 -#define VNSI_TIMER_ADD 83 -#define VNSI_TIMER_DELETE 84 -#define VNSI_TIMER_UPDATE 85 - -/* OPCODE 100 - 119: VNSI network functions for recording access */ -#define VNSI_RECORDINGS_DISKSIZE 100 -#define VNSI_RECORDINGS_GETCOUNT 101 -#define VNSI_RECORDINGS_GETLIST 102 -#define VNSI_RECORDINGS_RENAME 103 -#define VNSI_RECORDINGS_DELETE 104 -#define VNSI_RECORDINGS_GETEDL 105 - -/* OPCODE 120 - 139: VNSI network functions for epg access and manipulating */ -#define VNSI_EPG_GETFORCHANNEL 120 - -/* OPCODE 140 - 159: VNSI network functions for channel scanning */ -#define VNSI_SCAN_SUPPORTED 140 -#define VNSI_SCAN_GETCOUNTRIES 141 -#define VNSI_SCAN_GETSATELLITES 142 -#define VNSI_SCAN_START 143 -#define VNSI_SCAN_STOP 144 - -/* OPCODE 160 - 179: VNSI network functions for channel scanning */ -#define VNSI_OSD_CONNECT 160 -#define VNSI_OSD_DISCONNECT 161 -#define VNSI_OSD_HITKEY 162 - -/** Stream packet types (server -> client) */ -#define VNSI_STREAM_CHANGE 1 -#define VNSI_STREAM_STATUS 2 -#define VNSI_STREAM_QUEUESTATUS 3 -#define VNSI_STREAM_MUXPKT 4 -#define VNSI_STREAM_SIGNALINFO 5 -#define VNSI_STREAM_CONTENTINFO 6 -#define VNSI_STREAM_BUFFERSTATS 7 -#define VNSI_STREAM_REFTIME 8 - -/** Scan packet types (server -> client) */ -#define VNSI_SCANNER_PERCENTAGE 1 -#define VNSI_SCANNER_SIGNAL 2 -#define VNSI_SCANNER_DEVICE 3 -#define VNSI_SCANNER_TRANSPONDER 4 -#define VNSI_SCANNER_NEWCHANNEL 5 -#define VNSI_SCANNER_FINISHED 6 -#define VNSI_SCANNER_STATUS 7 - -/** OSD packet types (server -> client) */ -#define VNSI_OSD_MOVEWINDOW 1 -#define VNSI_OSD_CLEAR 2 -#define VNSI_OSD_OPEN 3 -#define VNSI_OSD_CLOSE 4 -#define VNSI_OSD_SETPALETTE 5 -#define VNSI_OSD_SETBLOCK 6 - -/** Status packet types (server -> client) */ -#define VNSI_STATUS_TIMERCHANGE 1 -#define VNSI_STATUS_RECORDING 2 -#define VNSI_STATUS_MESSAGE 3 -#define VNSI_STATUS_CHANNELCHANGE 4 -#define VNSI_STATUS_RECORDINGSCHANGE 5 -#define VNSI_STATUS_EPGCHANGE 6 - -/** Packet return codes */ -#define VNSI_RET_OK 0 -#define VNSI_RET_RECRUNNING 1 -#define VNSI_RET_NOTSUPPORTED 995 -#define VNSI_RET_DATAUNKNOWN 996 -#define VNSI_RET_DATALOCKED 997 -#define VNSI_RET_DATAINVALID 998 -#define VNSI_RET_ERROR 999 - -#endif // VNSI_COMMAND_H diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsi.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsi.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsi.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsi.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,68 +0,0 @@ -/* - * vdr-plugin-vnsi - XBMC server plugin for VDR - * - * Copyright (C) 2010 Alwin Esch (Team XBMC) - * Copyright (C) 2010, 2011 Alexander Pipelka - * - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ - -#include -#include -#include "vnsiserver.h" - -static const char *VERSION = "0.9.4"; -static const char *DESCRIPTION = "VDR-Network-Streaming-Interface (VNSI) Server"; - -extern int PmtTimeout; -extern int TimeshiftMode; -extern int TimeshiftBufferSize; -extern int TimeshiftBufferFileSize; -extern char TimeshiftBufferDir[PATH_MAX]; - -class cPluginVNSIServer : public cPlugin { -private: - cVNSIServer *Server; - static cPluginVNSIServer *VNSIServer; - -public: - cPluginVNSIServer(void); - virtual ~cPluginVNSIServer(); - virtual const char *Version(void) { return VERSION; } - virtual const char *Description(void) { return DESCRIPTION; } - virtual const char *CommandLineHelp(void); - virtual bool ProcessArgs(int argc, char *argv[]); - virtual bool Initialize(void); - virtual bool Start(void); - virtual void Stop(void); - virtual void Housekeeping(void); - virtual void MainThreadHook(void); - virtual cString Active(void); - virtual time_t WakeupTime(void); - virtual const char *MainMenuEntry(void) { return NULL; } - virtual cOsdObject *MainMenuAction(void) { return NULL; } - virtual cMenuSetupPage *SetupMenu(void); - virtual bool SetupParse(const char *Name, const char *Value); - virtual bool Service(const char *Id, void *Data = NULL); - virtual const char **SVDRPHelpPages(void); - virtual cString SVDRPCommand(const char *Command, const char *Option, int &ReplyCode); - - static void StoreSetup(const char *Name, int Value); -}; - diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsiosd.c xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsiosd.c --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsiosd.c 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsiosd.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,337 +0,0 @@ -/* - * Copyright (C) 2005-2012 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - */ - -#include "config.h" -#include "vnsiosd.h" -#include "vnsicommand.h" -#include "responsepacket.h" -#include -#include -#include -#include -#include -#include "cxsocket.h" - -#define ACTION_NONE 0 -#define ACTION_MOVE_LEFT 1 -#define ACTION_MOVE_RIGHT 2 -#define ACTION_MOVE_UP 3 -#define ACTION_MOVE_DOWN 4 -#define ACTION_SELECT_ITEM 7 -#define ACTION_PREVIOUS_MENU 10 - -#define REMOTE_0 58 // remote keys 0-9. are used by multiple windows -#define REMOTE_1 59 // for example in videoFullScreen.xml window id=2005 you can -#define REMOTE_2 60 // enter time (mmss) to jump to particular point in the movie -#define REMOTE_3 61 -#define REMOTE_4 62 // with spincontrols you can enter 3digit number to quickly set -#define REMOTE_5 63 // spincontrol to desired value -#define REMOTE_6 64 -#define REMOTE_7 65 -#define REMOTE_8 66 -#define REMOTE_9 67 -#define ACTION_NAV_BACK 92 - -#define ACTION_TELETEXT_RED 215 // Teletext Color buttons to control TopText -#define ACTION_TELETEXT_GREEN 216 // " " " " " " -#define ACTION_TELETEXT_YELLOW 217 // " " " " " " -#define ACTION_TELETEXT_BLUE 218 // " " " " " " - - -// --- cVnsiOsd ----------------------------------------------------------- - -#define MAXNUMWINDOWS 16 // OSD windows are counted 0...15 -#define MAXOSDMEMORY 1024000 // number of bytes available to the OSD - -class cVnsiOsd : public cOsd -{ -private: - int osdMem; - bool shown; - void Cmd(int cmd, int wnd, int color = 0, int x0 = 0, int y0 = 0, int x1 = 0, int y1 = 0, const void *data = NULL, int size = 0); -protected: - virtual void SetActive(bool On); -public: - cVnsiOsd(int Left, int Top, uint Level); - virtual ~cVnsiOsd(); - virtual eOsdError CanHandleAreas(const tArea *Areas, int NumAreas); - virtual eOsdError SetAreas(const tArea *Areas, int NumAreas); - virtual void Flush(void); -}; - -cVnsiOsd::cVnsiOsd(int Left, int Top, uint Level) -:cOsd(Left, Top, Level) -{ - shown = false; - osdMem = MAXOSDMEMORY; - DEBUGLOG("osd created. left: %d, top: %d", Left, Top); -} - -cVnsiOsd::~cVnsiOsd() -{ - SetActive(false); -} - -void cVnsiOsd::SetActive(bool On) -{ - if (On != Active()) - { - cOsd::SetActive(On); - if (On) - { - // must clear all windows here to avoid flashing effects - doesn't work if done - // in Flush() only for the windows that are actually used... - for (int i = 0; i < MAXNUMWINDOWS; i++) - { - Cmd(VNSI_OSD_CLEAR, i); - } - if (GetBitmap(0)) // only flush here if there are already bitmaps - Flush(); - } - else if (shown) - { - for (int i = 0; GetBitmap(i); i++) - { - Cmd(VNSI_OSD_CLOSE, i); - } - shown = false; - } - } -} - -eOsdError cVnsiOsd::CanHandleAreas(const tArea *Areas, int NumAreas) -{ - eOsdError Result = cOsd::CanHandleAreas(Areas, NumAreas); - if (Result == oeOk) - { - if (NumAreas > MAXNUMWINDOWS) - return oeTooManyAreas; - int TotalMemory = 0; - for (int i = 0; i < NumAreas; i++) - { - if (Areas[i].bpp != 1 && Areas[i].bpp != 2 && Areas[i].bpp != 4 && Areas[i].bpp != 8) - return oeBppNotSupported; - if ((Areas[i].Width() & (8 / Areas[i].bpp - 1)) != 0) - return oeWrongAlignment; - if (Areas[i].Width() < 1 || Areas[i].Height() < 1 || Areas[i].Width() > 720 || Areas[i].Height() > 576) - return oeWrongAreaSize; - TotalMemory += Areas[i].Width() * Areas[i].Height() / (8 / Areas[i].bpp); - } - if (TotalMemory > osdMem) - return oeOutOfMemory; - } - return Result; -} - -eOsdError cVnsiOsd::SetAreas(const tArea *Areas, int NumAreas) -{ - if (shown) - { - for (int i = 0; GetBitmap(i); i++) - { - Cmd(VNSI_OSD_CLOSE, i); - } - shown = false; - } - return cOsd::SetAreas(Areas, NumAreas); -} - -void cVnsiOsd::Cmd(int cmd, int wnd, int color, int x0, int y0, int x1, int y1, const void *data, int size) -{ - DEBUGLOG("OSD: cmd: %d, wnd: %d, color: %d, x0: %d, y0: %d, x1: %d, y1: %d", - cmd, wnd, color, x0, y0, x1, y1); - cVnsiOsdProvider::SendOsdPacket(cmd, wnd, color, x0, y0, x1, y1, data, size); -} - -void cVnsiOsd::Flush(void) -{ - if (!Active()) - return; - cBitmap *Bitmap; - bool full = cVnsiOsdProvider::IsRequestFull(); - for (int i = 0; (Bitmap = GetBitmap(i)) != NULL; i++) - { - uint8_t reset = !shown || full; - Cmd(VNSI_OSD_OPEN, i, Bitmap->Bpp(), Left() + Bitmap->X0(), Top() + Bitmap->Y0(), Left() + Bitmap->X0() + Bitmap->Width() - 1, Top() + Bitmap->Y0() + Bitmap->Height() - 1, (void *)&reset, 1); - int x1 = 0, y1 = 0, x2 = 0, y2 = 0; - if (!shown || Bitmap->Dirty(x1, y1, x2, y2) || full) - { - if (!shown || full) - { - x1 = y1 = 0; - x2 = Bitmap->Width() - 1; - y2 = Bitmap->Height() - 1; - } - // commit colors: - int NumColors; - const tColor *Colors = Bitmap->Colors(NumColors); - if (Colors) - { - Cmd(VNSI_OSD_SETPALETTE, i, 0, NumColors, 0, 0, 0, Colors, NumColors*sizeof(tColor)); - } - // commit modified data: - int size = (y2-y1) * Bitmap->Width() + (x2-x1+1); - Cmd(VNSI_OSD_SETBLOCK, i, Bitmap->Width(), x1, y1, x2, y2, Bitmap->Data(x1, y1), size); - } - Bitmap->Clean(); - } - if (!shown) - { - // Showing the windows in a separate loop to avoid seeing them come up one after another - for (int i = 0; (Bitmap = GetBitmap(i)) != NULL; i++) - { - Cmd(VNSI_OSD_MOVEWINDOW, i, 0, Left() + Bitmap->X0(), Top() + Bitmap->Y0()); - } - shown = true; - } -} - -// --- cVnsiOsdProvider ------------------------------------------------------- - -cResponsePacket cVnsiOsdProvider::m_OsdPacket; -cxSocket *cVnsiOsdProvider::m_Socket; -cMutex cVnsiOsdProvider::m_Mutex; -bool cVnsiOsdProvider::m_RequestFull; - -cVnsiOsdProvider::cVnsiOsdProvider(cxSocket *socket) -{ - cMutexLock lock(&m_Mutex); - INFOLOG("new osd provider"); - m_Socket = socket; - m_RequestFull = true; -} - -cVnsiOsdProvider::~cVnsiOsdProvider() -{ - cMutexLock lock(&m_Mutex); - m_Socket = NULL; -} - -cOsd *cVnsiOsdProvider::CreateOsd(int Left, int Top, uint Level) -{ - cMutexLock lock(&m_Mutex); - return new cVnsiOsd(Left, Top, Level); -} - -void cVnsiOsdProvider::SendOsdPacket(int cmd, int wnd, int color, int x0, int y0, int x1, int y1, const void *data, int size) -{ - cMutexLock lock(&m_Mutex); - if (!m_Socket) - return; - - if (!m_OsdPacket.initOsd(cmd, wnd, color, x0, y0, x1, y1)) - { - ERRORLOG("OSD response packet init fail"); - return; - } - m_OsdPacket.setLen(m_OsdPacket.getOSDHeaderLength() + size); - m_OsdPacket.finaliseOSD(); - - m_Socket->LockWrite(); - m_Socket->write(m_OsdPacket.getPtr(), m_OsdPacket.getOSDHeaderLength(), -1, (size > 0) ? true: false); - if (size) - m_Socket->write(data, size); - m_Socket->UnlockWrite(); -} - -bool cVnsiOsdProvider::IsRequestFull() -{ - cMutexLock lock(&m_Mutex); - bool ret = m_RequestFull; - m_RequestFull = false; - return ret; -} - -void cVnsiOsdProvider::SendKey(unsigned int key) -{ - if (!cOsd::IsOpen()) - { - cRemote::Put(kMenu); - return; - } - switch (key) - { - case ACTION_MOVE_UP: - cRemote::Put(kUp); - break; - case ACTION_MOVE_DOWN: - cRemote::Put(kDown); - break; - case ACTION_MOVE_LEFT: - cRemote::Put(kLeft); - break; - case ACTION_MOVE_RIGHT: - cRemote::Put(kRight); - break; - case ACTION_PREVIOUS_MENU: - cRemote::Put(kMenu); - break; - case ACTION_NAV_BACK: - cRemote::Put(kBack); - break; - case ACTION_SELECT_ITEM: - cRemote::Put(kOk); - break; - case ACTION_TELETEXT_RED: - cRemote::Put(kRed); - break; - case ACTION_TELETEXT_BLUE: - cRemote::Put(kBlue); - break; - case ACTION_TELETEXT_YELLOW: - cRemote::Put(kYellow); - break; - case ACTION_TELETEXT_GREEN: - cRemote::Put(kGreen); - break; - case REMOTE_0: - cRemote::Put(k0); - break; - case REMOTE_1: - cRemote::Put(k1); - break; - case REMOTE_2: - cRemote::Put(k2); - break; - case REMOTE_3: - cRemote::Put(k3); - break; - case REMOTE_4: - cRemote::Put(k4); - break; - case REMOTE_5: - cRemote::Put(k5); - break; - case REMOTE_6: - cRemote::Put(k6); - break; - case REMOTE_7: - cRemote::Put(k7); - break; - case REMOTE_8: - cRemote::Put(k8); - break; - case REMOTE_9: - cRemote::Put(k9); - break; - default: - break; - } -} diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsiosd.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsiosd.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsiosd.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsiosd.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,41 +0,0 @@ -/* - * Copyright (C) 2005-2012 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, see - * . - * - */ - -#include -#include "responsepacket.h" - -class cxSocket; - -class cVnsiOsdProvider : public cOsdProvider -{ -public: - cVnsiOsdProvider(cxSocket *socket); - virtual ~cVnsiOsdProvider(); - virtual cOsd *CreateOsd(int Left, int Top, uint Level); - static void SendOsdPacket(int cmd, int wnd, int color = 0, int x0 = 0, int y0 = 0, int x1 = 0, int y1 = 0, const void *data = NULL, int size = 0); - static bool IsRequestFull(); - static void SendKey(unsigned int key); -private: - static cResponsePacket m_OsdPacket; - static cxSocket *m_Socket; - static cMutex m_Mutex; - static bool m_RequestFull; -}; - diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsiserver/allowed_hosts.conf xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsiserver/allowed_hosts.conf --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsiserver/allowed_hosts.conf 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsiserver/allowed_hosts.conf 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -# -# allowed_hosts.conf This file describes a number of host addresses that -# are allowed to connect to the streamdev server running -# with the Video Disk Recorder (VDR) on this system. -# Syntax: -# -# IP-Address[/Netmask] -# - -127.0.0.1 # always accept localhost -192.168.0.0/24 # any host on the local net -#204.152.189.113 # a specific host -#0.0.0.0/0 # any host on any net (USE THIS WITH CARE!) diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsiserver.c xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsiserver.c --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsiserver.c 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsiserver.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,215 +0,0 @@ -/* - * vdr-plugin-vnsi - XBMC server plugin for VDR - * - * Copyright (C) 2010 Alwin Esch (Team XBMC) - * Copyright (C) 2010, 2011 Alexander Pipelka - * - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "vnsi.h" -#include "vnsiserver.h" -#include "vnsiclient.h" -#include "channelfilter.h" - -unsigned int cVNSIServer::m_IdCnt = 0; - -class cAllowedHosts : public cSVDRPhosts -{ -public: - cAllowedHosts(const cString& AllowedHostsFile) - { - if (!Load(AllowedHostsFile, true, true)) - { - ERRORLOG("Invalid or missing '%s'. falling back to 'svdrphosts.conf'.", *AllowedHostsFile); - cString Base = cString::sprintf("%s/../svdrphosts.conf", *VNSIServerConfig.ConfigDirectory); - if (!Load(Base, true, true)) - { - ERRORLOG("Invalid or missing %s. Adding 127.0.0.1 to list of allowed hosts.", *Base); - cSVDRPhost *localhost = new cSVDRPhost; - if (localhost->Parse("127.0.0.1")) - Add(localhost); - else - delete localhost; - } - } - } -}; - -cVNSIServer::cVNSIServer(int listenPort) : cThread("VDR VNSI Server") -{ - m_ServerPort = listenPort; - - Start(); - - INFOLOG("VNSI Server started"); - INFOLOG("Channel streaming timeout: %i seconds", VNSIServerConfig.stream_timeout); - return; -} - -cVNSIServer::~cVNSIServer() -{ - m_Status.Shutdown(); - Cancel(); - INFOLOG("VNSI Server stopped"); -} - -void cVNSIServer::NewClientConnected(int fd) -{ - char buf[64]; - struct sockaddr_in sin; - socklen_t len = sizeof(sin); - - if (getpeername(fd, (struct sockaddr *)&sin, &len)) - { - ERRORLOG("getpeername() failed, dropping new incoming connection %d", m_IdCnt); - close(fd); - return; - } - - cAllowedHosts AllowedHosts(m_AllowedHostsFile); - if (!AllowedHosts.Acceptable(sin.sin_addr.s_addr)) - { - ERRORLOG("Address not allowed to connect (%s)", *m_AllowedHostsFile); - close(fd); - return; - } - - if (fcntl(fd, F_SETFL, fcntl (fd, F_GETFL) | O_NONBLOCK) == -1) - { - ERRORLOG("Error setting control socket to nonblocking mode"); - close(fd); - return; - } - - int val = 1; - setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &val, sizeof(val)); - -#ifdef SOL_TCP - val = 30; - setsockopt(fd, SOL_TCP, TCP_KEEPIDLE, &val, sizeof(val)); - - val = 15; - setsockopt(fd, SOL_TCP, TCP_KEEPINTVL, &val, sizeof(val)); - - val = 5; - setsockopt(fd, SOL_TCP, TCP_KEEPCNT, &val, sizeof(val)); - - val = 1; - setsockopt(fd, SOL_TCP, TCP_NODELAY, &val, sizeof(val)); -#endif - - INFOLOG("Client with ID %d connected: %s", m_IdCnt, cxSocket::ip2txt(sin.sin_addr.s_addr, sin.sin_port, buf)); - cVNSIClient *connection = new cVNSIClient(fd, m_IdCnt, cxSocket::ip2txt(sin.sin_addr.s_addr, sin.sin_port, buf)); - m_Status.AddClient(connection); - m_IdCnt++; -} - -void cVNSIServer::Action(void) -{ - fd_set fds; - struct timeval tv; - - if(*VNSIServerConfig.ConfigDirectory) - { - m_AllowedHostsFile = cString::sprintf("%s/" ALLOWED_HOSTS_FILE, *VNSIServerConfig.ConfigDirectory); - } - else - { - ERRORLOG("cVNSIServer: missing ConfigDirectory!"); - m_AllowedHostsFile = cString::sprintf("/video/" ALLOWED_HOSTS_FILE); - } - - VNSIChannelFilter.Load(); - VNSIChannelFilter.SortChannels(); - m_Status.Start(); - - m_ServerFD = socket(AF_INET, SOCK_STREAM, 0); - if(m_ServerFD == -1) - return; - - fcntl(m_ServerFD, F_SETFD, fcntl(m_ServerFD, F_GETFD) | FD_CLOEXEC); - - int one = 1; - setsockopt(m_ServerFD, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(int)); - - struct sockaddr_in s; - memset(&s, 0, sizeof(s)); - s.sin_family = AF_INET; - s.sin_port = htons(m_ServerPort); - - int x = bind(m_ServerFD, (struct sockaddr *)&s, sizeof(s)); - if (x < 0) - { - close(m_ServerFD); - INFOLOG("Unable to start VNSI Server, port already in use ?"); - m_ServerFD = -1; - return; - } - - listen(m_ServerFD, 10); - - while (Running()) - { - FD_ZERO(&fds); - FD_SET(m_ServerFD, &fds); - - tv.tv_sec = 0; - tv.tv_usec = 250*1000; - - int r = select(m_ServerFD + 1, &fds, NULL, NULL, &tv); - if (r == -1) - { - ERRORLOG("failed during select"); - continue; - } - if (r == 0) - { - continue; - } - - int fd = accept(m_ServerFD, 0, 0); - if (fd >= 0) - { - NewClientConnected(fd); - } - else - { - ERRORLOG("accept failed"); - } - } - return; -} diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsiserver.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsiserver.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsiserver.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/vnsiserver.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,55 +0,0 @@ -/* - * vdr-plugin-vnsi - XBMC server plugin for VDR - * - * Copyright (C) 2010 Alwin Esch (Team XBMC) - * Copyright (C) 2010, 2011 Alexander Pipelka - * - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ - -#ifndef VNSI_SERVER_H -#define VNSI_SERVER_H - -#include - -#include "config.h" -#include "status.h" - -class cVNSIClient; - -class cVNSIServer : public cThread -{ -protected: - - virtual void Action(void); - void NewClientConnected(int fd); - - int m_ServerPort; - int m_ServerFD; - cString m_AllowedHostsFile; - cVNSIStatus m_Status; - - static unsigned int m_IdCnt; - -public: - cVNSIServer(int listenPort); - virtual ~cVNSIServer(); -}; - -#endif // VNSI_SERVER_H diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/wirbelscanservice.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/wirbelscanservice.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/wirbelscanservice.h 2014-05-04 07:03:11.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vdr.vnsi/vdr-plugin-vnsiserver/wirbelscanservice.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,57 +0,0 @@ -/* - * wirbelscan.c: A plugin for the Video Disk Recorder - * - * See the README file for copyright information and how to reach the author. - * - * $Id$ - */ - -#ifndef __WIRBELSCAN_SERVICE_H -#define __WIRBELSCAN_SERVICE_H - -typedef enum scantype -{ - DVB_TERR = 0, - DVB_CABLE = 1, - DVB_SAT = 2, - PVRINPUT = 3, - PVRINPUT_FM = 4, - DVB_ATSC = 5, -} scantype_t; - -typedef void (*WirbelScanService_GetCountries_v1_0)(int index, const char *isoName, const char *longName); -typedef void (*WirbelScanService_GetSatellites_v1_0)(int index, const char *shortName, const char *longName); - -struct WirbelScanService_DoScan_v1_0 -{ - scantype_t type; - - bool scan_tv; - bool scan_radio; - bool scan_fta; - bool scan_scrambled; - bool scan_hd; - - int CountryIndex; - - int DVBC_Inversion; - int DVBC_Symbolrate; - int DVBC_QAM; - - int DVBT_Inversion; - - int SatIndex; - - int ATSC_Type; - - void (*SetPercentage)(int percent); - void (*SetSignalStrength)(int strenght, bool locked); - void (*SetDeviceInfo)(const char *Info); - void (*SetTransponder)(const char *Info); - void (*NewChannel)(const char *Name, bool isRadio, bool isEncrypted, bool isHD); - void (*IsFinished)(); - void (*SetStatus)(int status); -}; - -#endif //__WIRBELSCAN_SERVICE_H - diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/addon.xml.in xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/addon.xml.in --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/addon.xml.in 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/addon.xml.in 2014-07-18 06:05:30.000000000 +0000 @@ -1,12 +1,12 @@ - + Frontend του XBMC για αποκωδικοποιητές (settop box) τύπου VU+ / Enigma2 XBMC's frontend for VU+ / Enigma2 based settop boxes XBMC's frontend for VU+ / Enigma2 based settop boxes + XBMC's frontend for VU+ / Enigma2 based settop boxes Frontend XBMC para decodificadores basados en VU+/Enigma2 XBMC frontend para decodificadores equipados con VU+/Enigma2 XBMC esi VU+ / Enigma2 põhistele digiboksidele - Applicatif XBMC pour les enregistreurs VU+/Enigma2 + Interface logicielle pour les enregistreurs VU+/Enigma2 Frontal XBMC pour les boîtiers décodeurs basés sur VU+ / Enigma 2 Interface de XBMC para decodificadores equipados con VU+/Enigma2 XBMC's frontend for VU+ / Enigma2 based settop boxes XBMC sučelje za VU+ / Enigma2 set-top box temeljene uređaje XBMC VU+ és Enigma2 előtér-kiszolgáló settop boxokhoz Frontend XBMC untuk settop boxes berbasis VU+ / Enigma2 + XBMS framendi fyrir tengibox byggð á VU+ / Enigma2 Frontend con XBMC per i settop box basati su VU+ / Enigma2 VU+ / Enigma2 ベースのセットトップボックス用 XBMC フロントエンド VU+ / Enigma2 베이스 셋탑박스를 위한 XBMC 프론트엔드 @@ -46,7 +48,7 @@ Bahagian hadapan XBMC untuk kotak settop berasaskan VU+/Enigma2 XBMC's frontend voor op VU+ / Enigma2 gebaseerde settopboxen XBMC's frontend for VU+ / Enigma2-baserte set top bokser - Interfejs XBMC dla urządzeń typu VU+ / Enigma2 + Klient XBMC dla dekoderów VU+ / Enigma2 Frontend XBMC para caixas settop baseadas em VU+ / Enigma2 Frontend do XBMC para conversores baseados em VU+/Enigma2 Interfața XBMC pentru decodoare VU+ / Enigma2 @@ -56,6 +58,7 @@ Frontend i XBMC'së për Aparate VU+ / Enigma2 XBMC Frontend för VU+/Enigma2 baserade dekodrar VU+ / Enigma2 சார்ந்த செட்டாபு பெட்டிகளுக்கான XBMC முன்தோற்றம் + VU+ / Enigma2 alıcı kutuları için XBMC ön ucu Накладка VU+ / Enigma2 для XBMC Giao tiếp XBMC cho VU+ / Enigma2 dựa trên các bộ Settop Box 基于 VU+/Enigma2 的机顶盒的 XBMC 前端 @@ -70,16 +73,18 @@ Frontend για το VU+. Υποστηρίζει ροές Live TV & Εγγραφές, EPG, Χρονοδιακόπτες. VU+ frontend; supporting streaming of Live TV & Recordings, EPG, Timers. VU+ frontend; supporting streaming of Live TV & Recordings, EPG, Timers. + VU+ frontend; supporting streaming of Live TV & Recordings, EPG, Timers. Frontend VU+; soporta TV en vivo, grabaciones, guía de programación (EPG) y temporizadores. - VU+ frontend; soporta TV en vivo, grabaciones, guía de programación (EPG) y temporizadores. + VU+ frontend; soporta TV en vivo, grabaciones, guía de programación (GEP) y temporizadores. VU+ esi. Toetab telekanalite striimimist ja salvestamist ning elektroonilist saatekava. - Applicatif VU+. Supporte la lecture en continu de direct télévision et son enregistrement, guide de programme, minuteurs. + Interface logicielle pour enregistreur VU+. Supporte la lecture en continu de direct télévision et son enregistrement, guide de programme, minuteurs. Frontal VU+, prenant en charge la lecture en transit des télés en direct & les enregistrements, le GÉP et les minuteries. - Interface VU+; soporta TV ao vivo, gravacións, Guía de programación e temporizadores. + Interface VU+; soporta TV en directo, gravacións, Guía de programación e temporizadores. VU+ frontend; supporting streaming of Live TV & Recordings, EPG, Timers. VU+ sučelje; podržava stremanje i snimanje TV programa, elektronski programski vodič (EPG) i vremeski zadano snimanje. VU+ előtér-kiszolgáló. Élő adások és felvételek sugárzásának támogatása EPG-vel és időzítéssel. Frontend VU+. Mendukung pengaliran TV dan Rekaman langsung, EPG dan Timer. + VU+ framendi; styður streymingu á Beinum útsendingum og upptökum, rafrænum dagskrárvísum (EPG) og tímatöku. Frontend VU+; supporta EPG, i timer e lo streaming della TV dal vivo e delle registrazioni. VU+ フロントエンド。ライブテレビのストリーミングや録画、EPG、タイマーをサポート。 VU+ 프론트엔드; TV 시청 & 녹화, EPG, 타이머 지원 @@ -89,7 +94,7 @@ Bahagian hadapan VU+; menyokong penstirman Langsung & Rakaman, EPG, Pemasa TV VU+ frontend; ondersteunt het streamen van LiveTV & Opnames, EPG, Timers VU+ frontend; støtte for Live TV & Opptak, EPG, Timere. - Interfejs VU+; wspiera strumieniowanie TV na żywo i nagrań, EPG oraz planowanie nagrań. + Klient VU+ wspiera strumieniowanie kanałów telewizyjnych, nagrywanie, planowanie nagrań oraz funkcje przewodnika TV. Frontend VU+ ; suporta transmissão de TV em Directo e Gravações, EPG, Temporizadores. VU+ frontend; suporta streaming de TV Ao Vivo e Gravações, EPG, agendamentos. Interfața VU+; suportă streaming programe TV și înregistrare, program electronic, cronometre - înregistrare programată @@ -99,6 +104,7 @@ VU+ frontend, përkrahën transmetimin e Live TV's & Regjistrime, EPG, timer. VU+ frontend; stödjer strömning av direktsänd TV & inspelningar, EPG, timers. VU+ முன்நிலை. லைவ் டிவி & பதிவுகளின் ஸ்ட்ரீமிங், EPG கேட்கவும் துணைபுரிகிறது. + VU+ ön ucu; Canlı TV akışı ve kayıt yapabilme, EPG ve zamanlayıcıları destekler. Накладка VU+; підтримує потоки Live TV, запис, програму передач, таймери. Giao tiếp cho VU+; hỗ trợ truyền phát và thu chương trình Live TV, hẹn giờ và hiển thị lịch trình chiếu (EPG) VU+ 前端,支持直播电视播放和录像、电子节目单、定时器。 @@ -114,6 +120,7 @@ Ασταθές πρόγραμμα! Οι δημιουργοί δεν είναι σε καμία περίπτωση υπεύθυνοι για αποτυχημένες εγγραφές, λανθασμένους χρονοδιακόπτες, χαμένες ώρες, ή κάθε είδους ανεπιθύμητα αποτελέσματα.. This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects.. This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects.. + This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects.. ¡Este es un software inestable! Los autores no son de ninguna manera responsables de las grabaciones fallidas o incorrectas, las temporizadores perdidas, ni otros efectos no deseables.. ¡Este software es inestable! Los autores no se responsabilizan por grabaciones fallidas, temporizadores incorrectos, horas perdidas, o cualquier otro efecto no deseado.. ¡Esto es software inestable! Los autores no son de ninguna manera responsables por grabaciones fallidas, temporizadores incorrectos, horas perdidas o cualquier otro efecto no deseado... @@ -121,27 +128,29 @@ Tämä on epävakaa ohjelmisto! Tekijät eivät ole millään muotoa vastuussa epäonnistuneista tallennuksista, virheellisistä ajastuksia, haaskatusta ajasta, verenpaineen noususta tai mistään muusta epäsuotuisasta vaikutuksesta. Logiciel en cours d'élaboration ! Les auteurs ne sont en aucun cas responsables de l'échec des enregistrements, minuteries défectueuses, temps perdu ou autres effets indésirables.. Ce logiciel est instable! Les auteurs ne sont aucunement responsables des enregistrements défaillants, des minuteries erronées, des heures perdues ou tout autre effet indésirable. - Este é software non estable, os autores non se fan responsábeis dos erros na gravacións, temporizadores incorrectos, e outros efectos non desexados. + Software non estable, os autores non se fan responsábeis dos erros na gravacións, temporizadores incorrectos, e outros efectos non desexados. זוהי תוכנה בלתי יציבה!מחברי התכנה אינם אחראים להקלטות כושלות,מתזמני הקלטות שגויים,שעות מבוזבזות,או כל תוצאה בלתי רצויה... Ovo je nestabilan softver! Autori nisu ni na koji način odgovorni za neuspjelo snimanje, netočna vremena snimanja, izgubljene sate, ili bilo koje druge nepoželjne učinke... Ez nem stabil szoftver! A készítők nem vállalnak felelősséget, a hibás felvételért, rossz időzítésért, elvesztegetett időért... + Սա անկայուն ծրագրային ապահովում է: Հեղինակները պատասխանատու չեն վատ ձայնագրումների, սխալ ժամանակացույցերի, կորած ժամանակի կամ այլ ոչ ցանկալի երևույթների համար: Ini merupakan software yang tidak stabil! Penulis tidak bertanggung jawab untuk rekaman gagal, timer salah, waktu terbuang, atau efek tak diinginkan lainnya... - Þetta er óstöðugur hugbúnaður! Höfundarnir eru á engann hátt ábyrgir fyrir misheppnuðum upptökum, röngum upptökutímum, klukkustundum sem að fóru í súginn eða nokkrum öðrum óæskilegum áhrifum. + Þetta er óstöðugur hugbúnaður! Höfundarnir eru á engan hátt ábyrgir fyrir misheppnuðum upptökum, röngum upptökutímum, klukkustundum sem að fóru í súginn eða nokkrum öðrum óæskilegum áhrifum. Questo software è instabile! Gli autori non sono in alcun modo responsabile per le fallite registrazioni, timer non corretti, ore perse o qualsiasi altro effetto non desiderato... これは不安定なソフトウェアです!本プログラムの作者は、録画の失敗、正確に作動しなかったタイマー、無駄にした時間、その他あらゆる好ましくない結果について責任を負わないものとします。 ეს არის არასტაბილური პროგრამული უზრუნველყოფა! ავტორები არ არიან პასუხისმგებელი შეცდომებზე, არასწორ EPG-ზე, დაკარგულ დროზე ან სხვა ხარვეზებზე 이 소프트웨어는 불안정합니다! 제작자는 녹화 실패, 부정확한 타이머, 시간 낭비 및 기타 예상하지 못한 결과에 대해 책임지지 않습니다.. Tai yra nestabili programinė įranga! Autorius jokiu būdu neatsakingas už nepavykusius įrašus, neteisingus laikmačius, iššvaistytas valandas, ar nutikus kitiems nepageidaujamiems poveikiams ...[COLOR=red](xbmc.lt rekomenduoja/siūlo testuojant šį priedą persijungti į Anglų [orinali] kalbą)[/COLOR] - Šī ir nestabila programmatūra! Autori nav nekādā vaidā atbildīgi par nesanākušiem ierakstiem, nepareiziem taimeriem, iztērētām stundām vai jebkādiem citiem nevēlamiem efektiem.. + Šī ir nestabila programmatūra! Autori nav atbildīgi par nesanākušiem ierakstiem, nepareiziem taimeriem, iztērētām stundām vai jebkādiem citiem nevēlamiem efektiem.. Ова е нестабилен софтвер! Авторите на ниту еден начин не одговараат за неуспешни снимки, неточни тајмери, потрошени часови, или било кои други несакани ефекти. Ini merupakan perisian tidak stabil! Pengarang tidak bertanggungjawab atas kegagalan rakaman, pemasa tidak betul, masa yang dibazirkan, atau apa jua kesan yang tidak dikehendaki.. Dit is onstabiele software! De auteurs zijn op geen enkele manier verantwoordelijk voor mislukte opnames, incorrecte timers, verspilde uren of andere ongewenste effecten. Dette er ustabil programvare! Skaperen har ikke på noen måte ansvar for feilede opptak, feile timere, bortkastede timer, eller andre uønskede effekter.. - To oprogramowanie jest niestabilne! Autorzy w żaden sposób nie odpowiadają za nieudane nagrania, źle działające planowanie nagrań, stracone godziny czy też jakiekolwiek inne niepożądane efekty. + Oprogramowanie nadal jest w fazie rozwoju i jest niestabilne! Autorzy w żaden sposób nie są odpowiedzialni za nieudane nagrania, błędy w planie nagrań, zmarnowany czas ani jakiekolwiek inne niepożądane efekty. Este software é instável! Os autores não se responsabilizam por falhas nas gravações, temporizadores incorrectos, horas perdidas ou outro qualquer efeito não desejado... Este é um software instável! Os autores não são responsáveis por falhas nas gravações, agendamentos incorretos, horas dispendidas, ou quaisquer outros efeitos indesejáveis Acesta nu este o aplicație definitivă! Autorii nu sunt în nici un fel responsabili pentru înregistrări eșuate, cronometre incorecte, ore pierdute, sau orice alte efecte nedorite... Это тестовая программа! Авторы не несут ответственности за неудачные записи, неверные таймеры, потраченное время и прочие нежелательные эффекты.. + මෙය අස්ථිර මෘදුකාංගයකි! මෙහි සිදුවන පටිගත කිරීම් අසාර්ථක වීම්, සාවද්‍ය මුහුර්තක, නාස්ති වූ කාලයන්, හෝ වෙනත් යමිකිසි නුසුදුසු බලපෑම් සඳහා කතෘ වග කියනු නොලැබේ. Tento softvér nie je stabilný! Autori nenesú žiadnu zodpovednosť za chybné nahrávky vysielania, nesprávne časovače alebo iné neželané udalosti spôsobené týmto softvérom.. To je nestabilna programska oprema! Avtorji niso odgovorni za neuspela snemanja, nepravilne časovnike, zapravljen čas in katerikoli drug neželen učinek... Ky program nuk është ende stabël! Autorët e këtij programi nuk janë në as një menyr përgjegjës për rregistrime të gabuara, timer të pasaktë, kohë të humbur ose efekte të tilla të padëshirueshme. diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/changelog.txt xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/changelog.txt --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/changelog.txt 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/changelog.txt 2014-07-18 06:05:30.000000000 +0000 @@ -1,3 +1,15 @@ +1.9.14 +- remove: implementation for lastplayedposition (XBMC handles this now) +- remove: loading of channel data from HDD +- change: handling of EPG +- add: error message if username or password contain the @-sign + +1.9.13 +- sync with PVR API v1.9.1 + +1.9.12 +- updated language files from Transifex + 1.9.11 - updated language files from Transifex diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/Afrikaans/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/Afrikaans/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/Afrikaans/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/Afrikaans/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -108,6 +108,10 @@ msgid "TV-Bouquet" msgstr "TV-Boeket" +msgctxt "#30027" +msgid "Fetch picons from webinterface" +msgstr "Gaan haal picons vanaf webkoppelvlak" + msgctxt "#30500" msgid "Disconnected from '%s'" msgstr "Gediskonnekteer van '%s'" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/Armenian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/Armenian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/Armenian/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/Armenian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,25 @@ +# XBMC Media Center language file +# Addon Name: VU+ / Enigma2 Client +# Addon id: pvr.vuplus +# Addon Provider: Joerg Dembski +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Armenian (http://www.transifex.com/projects/p/xbmc-main/language/hy/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hy\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30004" +msgid "Password" +msgstr "Գաղտնաբառ" + +msgctxt "#30018" +msgid "General" +msgstr "Գլխավոր" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/Bulgarian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/Bulgarian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/Bulgarian/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/Bulgarian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -70,7 +70,7 @@ msgctxt "#30017" msgid "Use only the DVB boxes' current recording path" -msgstr "Използвай само за запис на зададения в DVB път" +msgstr "Ползвай само за запис на зададения в DVB път" msgctxt "#30018" msgid "General" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/Dutch/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/Dutch/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/Dutch/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/Dutch/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -22,7 +22,7 @@ msgctxt "#30002" msgid "Streaming Port" -msgstr "Streaming Poort" +msgstr "Streamingpoort" msgctxt "#30003" msgid "Username" @@ -38,7 +38,7 @@ msgctxt "#30008" msgid "Icon Path" -msgstr "Icoon Pad" +msgstr "Icoonpad" msgctxt "#30010" msgid "Update Interval in minutes" @@ -50,7 +50,7 @@ msgctxt "#30012" msgid "Webinterface Port" -msgstr "Webinterface poort" +msgstr "Webinterfacepoort" msgctxt "#30013" msgid "Zap before channelswitch (i.e. for Single Tuner boxes)" @@ -62,7 +62,7 @@ msgctxt "#30015" msgid "Check for bouquett updates" -msgstr "Controleer bouquet updates" +msgstr "Controleer bouquetupdates" msgctxt "#30016" msgid "Check for channel updates" @@ -102,7 +102,7 @@ msgctxt "#30025" msgid "Fetch only one TV bouquet" -msgstr "Haal slechts 1 TV bouquet op" +msgstr "Haal slechts 1 TV-bouquet op" msgctxt "#30026" msgid "TV-Bouquet" @@ -110,7 +110,7 @@ msgctxt "#30027" msgid "Fetch picons from webinterface" -msgstr "Haal picons op met de webinterface" +msgstr "Haal picons op van de webinterface" msgctxt "#30500" msgid "Disconnected from '%s'" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/English/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/English/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/English/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/English/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -120,7 +120,12 @@ msgid "Fetch picons from webinterface" msgstr "" -#empty strings from id 30028 to 30499 +msgctxt "#30028" +msgid "Use Secure HTTP (https)" +msgstr "" + + +#empty strings from id 30029 to 30499 #notifications msgctxt "#30500" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/English (US)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/English (US)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/English (US)/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/English (US)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -16,6 +16,14 @@ "Language: en_US\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgctxt "#30000" +msgid "VU+ hostname or IP address" +msgstr "VU+ hostname or IP address" + +msgctxt "#30002" +msgid "Streaming Port" +msgstr "Streaming Port" + msgctxt "#30003" msgid "Username" msgstr "Username" @@ -24,6 +32,46 @@ msgid "Password" msgstr "Password" +msgctxt "#30007" +msgid "Response timeout in seconds" +msgstr "Response timeout in seconds" + +msgctxt "#30008" +msgid "Icon Path" +msgstr "Icon Path" + +msgctxt "#30010" +msgid "Update Interval in minutes" +msgstr "Update Interval in minutes" + +msgctxt "#30011" +msgid "Automatic Timerlist Cleanup" +msgstr "Automatic Timerlist Cleanup" + +msgctxt "#30012" +msgid "Webinterface Port" +msgstr "Webinterface Port" + +msgctxt "#30013" +msgid "Zap before channelswitch (i.e. for Single Tuner boxes)" +msgstr "Zap before channelswitch (i.e. for Single Tuner boxes)" + +msgctxt "#30014" +msgid "Folder for channeldata" +msgstr "Folder for channeldata" + +msgctxt "#30015" +msgid "Check for bouquett updates" +msgstr "Check for bouquet updates" + +msgctxt "#30016" +msgid "Check for channel updates" +msgstr "Check for channel updates" + +msgctxt "#30017" +msgid "Use only the DVB boxes' current recording path" +msgstr "Use only the DVB boxes' current recording path" + msgctxt "#30018" msgid "General" msgstr "General" @@ -39,3 +87,35 @@ msgctxt "#30021" msgid "HTTP" msgstr "HTTP" + +msgctxt "#30022" +msgid "Recordings / Timer" +msgstr "Recordings / Timer" + +msgctxt "#30023" +msgid "Recording folder on the receiver" +msgstr "Recording folder on the receiver" + +msgctxt "#30024" +msgid "Send DeepStandby-Command" +msgstr "Send DeepStandby-Command" + +msgctxt "#30025" +msgid "Fetch only one TV bouquet" +msgstr "Fetch only one TV bouquet" + +msgctxt "#30026" +msgid "TV-Bouquet" +msgstr "TV-Bouquet" + +msgctxt "#30027" +msgid "Fetch picons from webinterface" +msgstr "Fetch picons from webinterface" + +msgctxt "#30500" +msgid "Disconnected from '%s'" +msgstr "Disconnected from '%s'" + +msgctxt "#30501" +msgid "Reconnected to '%s'" +msgstr "Reconnected to '%s'" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/Icelandic/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/Icelandic/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/Icelandic/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/Icelandic/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -16,6 +16,14 @@ "Language: is\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgctxt "#30000" +msgid "VU+ hostname or IP address" +msgstr "Nafn eða IP vistfang VU+ hýsingar" + +msgctxt "#30002" +msgid "Streaming Port" +msgstr "Gátt straums" + msgctxt "#30003" msgid "Username" msgstr "Notandanafn" @@ -24,6 +32,46 @@ msgid "Password" msgstr "Lykilorð" +msgctxt "#30007" +msgid "Response timeout in seconds" +msgstr "Tímatakmörk svartíma í sekúndum" + +msgctxt "#30008" +msgid "Icon Path" +msgstr "Slóð táknmynda" + +msgctxt "#30010" +msgid "Update Interval in minutes" +msgstr "Uppfærslutími í mínútum" + +msgctxt "#30011" +msgid "Automatic Timerlist Cleanup" +msgstr "Sjálfvirk hreinsun á Tímatökulista" + +msgctxt "#30012" +msgid "Webinterface Port" +msgstr "Gátt vefviðmóts" + +msgctxt "#30013" +msgid "Zap before channelswitch (i.e. for Single Tuner boxes)" +msgstr "Bið á milli rásaskipta (þ.e. fyrir box með einum móttakara)" + +msgctxt "#30014" +msgid "Folder for channeldata" +msgstr "Mappa fyrir rásargögn" + +msgctxt "#30015" +msgid "Check for bouquett updates" +msgstr "Athuga með uppfærslur knippa" + +msgctxt "#30016" +msgid "Check for channel updates" +msgstr "Athuga með uppfærslu rása" + +msgctxt "#30017" +msgid "Use only the DVB boxes' current recording path" +msgstr "Nota aðeins núverandi upptökuslóð upptökutækja" + msgctxt "#30018" msgid "General" msgstr "Almennt" @@ -32,10 +80,38 @@ msgid "Channels" msgstr "Rásir" +msgctxt "#30020" +msgid "Advanced" +msgstr "Ítarlegt" + msgctxt "#30021" msgid "HTTP" msgstr "HTTP" +msgctxt "#30022" +msgid "Recordings / Timer" +msgstr "Upptökur / Tímatökur" + +msgctxt "#30023" +msgid "Recording folder on the receiver" +msgstr "Upptökumappa á móttakaranum" + +msgctxt "#30024" +msgid "Send DeepStandby-Command" +msgstr "Senda DjúpurSvefn-skipun" + +msgctxt "#30025" +msgid "Fetch only one TV bouquet" +msgstr "Sækja aðeins eitt sjónvarpsknippi" + +msgctxt "#30026" +msgid "TV-Bouquet" +msgstr "Sjónvarps-knippi" + +msgctxt "#30027" +msgid "Fetch picons from webinterface" +msgstr "Sækja 'picon' frá vefviðmóti" + msgctxt "#30500" msgid "Disconnected from '%s'" msgstr "Aftengdur frá '%s'" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/Latvian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/Latvian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/Latvian/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/Latvian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -20,6 +20,10 @@ msgid "VU+ hostname or IP address" msgstr "VU+ saimniekvārds vai IP adrese" +msgctxt "#30002" +msgid "Streaming Port" +msgstr "Straumēšanas ports" + msgctxt "#30003" msgid "Username" msgstr "LIetotājvārds" @@ -32,10 +36,42 @@ msgid "Response timeout in seconds" msgstr "Atbildes noilgums sekundēs" +msgctxt "#30008" +msgid "Icon Path" +msgstr "Ikonu ceļš" + +msgctxt "#30010" +msgid "Update Interval in minutes" +msgstr "Atjaunināšanas intervāls minūtēs" + +msgctxt "#30011" +msgid "Automatic Timerlist Cleanup" +msgstr "Automātiska taimersaraksta uzkopšana" + msgctxt "#30012" msgid "Webinterface Port" msgstr "Tīmekļa saskarnes ports" +msgctxt "#30013" +msgid "Zap before channelswitch (i.e. for Single Tuner boxes)" +msgstr "Pārslēgt pirms kanāla pārslēgšanās (piem., viena uztvērēja pierīcēm)" + +msgctxt "#30014" +msgid "Folder for channeldata" +msgstr "Mape kanāldatiem" + +msgctxt "#30015" +msgid "Check for bouquett updates" +msgstr "Pārbaudīt buķetes atjauninājumus" + +msgctxt "#30016" +msgid "Check for channel updates" +msgstr "Pārbaudīt kanāla atjauninājumus" + +msgctxt "#30017" +msgid "Use only the DVB boxes' current recording path" +msgstr "Izmantot tikai DVB pierīces pašreizējo ierakstīšanas ceļu" + msgctxt "#30018" msgid "General" msgstr "Vispārīgi" @@ -52,6 +88,30 @@ msgid "HTTP" msgstr "HTTP" +msgctxt "#30022" +msgid "Recordings / Timer" +msgstr "Ieraksti / Taimeris" + +msgctxt "#30023" +msgid "Recording folder on the receiver" +msgstr "Ierakstīšanas mape atskaņotājā" + +msgctxt "#30024" +msgid "Send DeepStandby-Command" +msgstr "Sūtīt \"dziļas gatavības\" komandu" + +msgctxt "#30025" +msgid "Fetch only one TV bouquet" +msgstr "Iegūt tikai vienu TV buķeti" + +msgctxt "#30026" +msgid "TV-Bouquet" +msgstr "TV-buķete" + +msgctxt "#30027" +msgid "Fetch picons from webinterface" +msgstr "Iegūt pikonas no tīmeklā saskarnes" + msgctxt "#30500" msgid "Disconnected from '%s'" msgstr "Atvienots no '%s'" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/Norwegian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/Norwegian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/Norwegian/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/Norwegian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -108,6 +108,10 @@ msgid "TV-Bouquet" msgstr "TV-Bouquet" +msgctxt "#30027" +msgid "Fetch picons from webinterface" +msgstr "Hent piconer fra nettgrensesnittet" + msgctxt "#30500" msgid "Disconnected from '%s'" msgstr "Frakoblet fra '%s'" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/Polish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/Polish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/Polish/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/Polish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -18,7 +18,7 @@ msgctxt "#30000" msgid "VU+ hostname or IP address" -msgstr "Adres IP lub nazwa hosta VU+" +msgstr "Nazwa hosta lub adres IP VU+" msgctxt "#30002" msgid "Streaming Port" @@ -38,11 +38,11 @@ msgctxt "#30008" msgid "Icon Path" -msgstr "Ścieżka do ikony" +msgstr "Folder logo" msgctxt "#30010" msgid "Update Interval in minutes" -msgstr "Częstotliwość aktualizacji w minutach" +msgstr "Aktualizuj w interwale minut" msgctxt "#30011" msgid "Automatic Timerlist Cleanup" @@ -54,23 +54,23 @@ msgctxt "#30013" msgid "Zap before channelswitch (i.e. for Single Tuner boxes)" -msgstr "Przeskocz przed zmianą kanału (np. dla urządzeń z jednym tunerem)" +msgstr "Przełączaj na dany kanał (np. dla dekoderów z jednym tunerem)" msgctxt "#30014" msgid "Folder for channeldata" -msgstr "Folder na dane kanałowe" +msgstr "Folder danych " msgctxt "#30015" msgid "Check for bouquett updates" -msgstr "Sprawdź aktualizację bukietów" +msgstr "Sprawdzaj aktualizacje bukietów" msgctxt "#30016" msgid "Check for channel updates" -msgstr "Sprawdź aktualizację kanałów" +msgstr "Sprawdzaj aktualizacje kanałów" msgctxt "#30017" msgid "Use only the DVB boxes' current recording path" -msgstr "Używaj tylko bieżącego folderu nagrywania urządzenia DVB" +msgstr "Używaj tylko bieżącego folderu nagrywania dekodera" msgctxt "#30018" msgid "General" @@ -94,15 +94,15 @@ msgctxt "#30023" msgid "Recording folder on the receiver" -msgstr "Folder nagrywania na odbiorniku" +msgstr "Folder nagrywania na dekoderze" msgctxt "#30024" msgid "Send DeepStandby-Command" -msgstr "Wyślij polecenie głębokiego czuwania (DeepStandby)" +msgstr "Wysyłaj polecenie głębokiego czuwania" msgctxt "#30025" msgid "Fetch only one TV bouquet" -msgstr "Pobierz tylko jeden bukiet" +msgstr "Pobieraj tylko jeden bukiet" msgctxt "#30026" msgid "TV-Bouquet" @@ -110,7 +110,7 @@ msgctxt "#30027" msgid "Fetch picons from webinterface" -msgstr "Pobierz logo kanałów przez interfejs internetowy" +msgstr "Pobieraj loga kanałów przez interfejs webowy" msgctxt "#30500" msgid "Disconnected from '%s'" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/Russian/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/Russian/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/Russian/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/Russian/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -38,7 +38,7 @@ msgctxt "#30008" msgid "Icon Path" -msgstr "Путь к иконкам" +msgstr "Путь к значкам" msgctxt "#30010" msgid "Update Interval in minutes" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/Sinhala/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/Sinhala/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/Sinhala/strings.po 1970-01-01 00:00:00.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/Sinhala/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -0,0 +1,37 @@ +# XBMC Media Center language file +# Addon Name: VU+ / Enigma2 Client +# Addon id: pvr.vuplus +# Addon Provider: Joerg Dembski +msgid "" +msgstr "" +"Project-Id-Version: XBMC Main\n" +"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: XBMC Translation Team\n" +"Language-Team: Sinhala (http://www.transifex.com/projects/p/xbmc-main/language/si/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: si\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgctxt "#30003" +msgid "Username" +msgstr "පරිශීලක නම" + +msgctxt "#30004" +msgid "Password" +msgstr "මුරපදය" + +msgctxt "#30018" +msgid "General" +msgstr "සාමාන්‍ය" + +msgctxt "#30020" +msgid "Advanced" +msgstr "උසස්" + +msgctxt "#30021" +msgid "HTTP" +msgstr "HTTP" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/Spanish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/Spanish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/Spanish/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/Spanish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -90,7 +90,7 @@ msgctxt "#30022" msgid "Recordings / Timer" -msgstr "Grabaciones/ Temporizador" +msgstr "Grabaciones/Temporizador" msgctxt "#30023" msgid "Recording folder on the receiver" @@ -98,7 +98,7 @@ msgctxt "#30024" msgid "Send DeepStandby-Command" -msgstr "Envíe el comando DeepStandby" +msgstr "Enviar comando DeepStandby" msgctxt "#30025" msgid "Fetch only one TV bouquet" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/Tamil (India)/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/Tamil (India)/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/Tamil (India)/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/Tamil (India)/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -82,7 +82,7 @@ msgctxt "#30020" msgid "Advanced" -msgstr "மேம்பட்ட" +msgstr "மேம்பட்டது" msgctxt "#30021" msgid "HTTP" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/Thai/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/Thai/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/Thai/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/Thai/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -16,6 +16,10 @@ "Language: th\n" "Plural-Forms: nplurals=1; plural=0;\n" +msgctxt "#30002" +msgid "Streaming Port" +msgstr "พอร์ตการสตรีมมิ่ง" + msgctxt "#30003" msgid "Username" msgstr "ชื่อผู้ใช้" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/Turkish/strings.po xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/Turkish/strings.po --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/language/Turkish/strings.po 2014-05-04 06:40:43.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/language/Turkish/strings.po 2014-07-18 06:05:30.000000000 +0000 @@ -16,6 +16,10 @@ "Language: tr\n" "Plural-Forms: nplurals=1; plural=0;\n" +msgctxt "#30000" +msgid "VU+ hostname or IP address" +msgstr "VU+ ana bilgisayar adı veya IP adresi" + msgctxt "#30002" msgid "Streaming Port" msgstr "Yayın Portu" @@ -36,6 +40,14 @@ msgid "Icon Path" msgstr "Simge Yolu" +msgctxt "#30010" +msgid "Update Interval in minutes" +msgstr "Güncelleme aralığı dakikası" + +msgctxt "#30011" +msgid "Automatic Timerlist Cleanup" +msgstr "Otomatik Zamanlayıcı Listesi Temizleme" + msgctxt "#30012" msgid "Webinterface Port" msgstr "Web arayüzü Portu" @@ -44,6 +56,10 @@ msgid "Folder for channeldata" msgstr "Kanal verisi için klasör" +msgctxt "#30015" +msgid "Check for bouquett updates" +msgstr "bouquett güncellemelerini kontrol et" + msgctxt "#30016" msgid "Check for channel updates" msgstr "Kanal güncelleştirmelerini denetle" @@ -64,6 +80,14 @@ msgid "HTTP" msgstr "HTTP" +msgctxt "#30022" +msgid "Recordings / Timer" +msgstr "Kayıtlar / Zamanlayıcılar" + +msgctxt "#30023" +msgid "Recording folder on the receiver" +msgstr "Alıcıdaki kayıt klasörü" + msgctxt "#30500" msgid "Disconnected from '%s'" msgstr "'%s' Bağlantı kesilecek" diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/settings.xml xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/settings.xml --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/addon/resources/settings.xml 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/addon/resources/settings.xml 2014-07-18 06:05:30.000000000 +0000 @@ -10,11 +10,8 @@ - - - @@ -22,6 +19,7 @@ + diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/project/VS2010Express/pvr.vuplus.vcxproj xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/project/VS2010Express/pvr.vuplus.vcxproj --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/project/VS2010Express/pvr.vuplus.vcxproj 2012-12-01 08:34:33.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/project/VS2010Express/pvr.vuplus.vcxproj 2014-07-18 06:05:30.000000000 +0000 @@ -1,5 +1,5 @@  - + Debug @@ -19,12 +19,14 @@ DynamicLibrary true MultiByte + v120 DynamicLibrary false true MultiByte + v120 diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/src/client.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/src/client.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/src/client.cpp 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/src/client.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -14,7 +14,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ @@ -48,15 +49,13 @@ std::string g_strIconPath = ""; bool g_bAutomaticTimerlistCleanup = false; bool g_bZap = false; -bool g_bCheckForGroupUpdates = true; -bool g_bCheckForChannelUpdates = true; bool g_bOnlyCurrentLocation = false; bool g_bSetPowerstate = false; bool g_bOnlyOneGroup = false; bool g_bOnlinePicons = true; +bool g_bUseSecureHTTP = false; std::string g_strOneGroup = ""; std::string g_szClientPath = ""; -std::string g_strChannelDataPath = "/tmp/"; CHelper_libXBMC_addon *XBMC = NULL; CHelper_libXBMC_pvr *PVR = NULL; @@ -97,6 +96,10 @@ else g_strPassword = ""; + /* read setting "use_secure" from settings.xml */ + if (!XBMC->GetSetting("use_secure", &g_bUseSecureHTTP)) + g_bUseSecureHTTP = false; + /* read setting "streamport" from settings.xml */ if (!XBMC->GetSetting("streamport", &g_iPortStream)) g_iPortStream = DEFAULT_STREAM_PORT; @@ -117,14 +120,6 @@ if (!XBMC->GetSetting("setpowerstate", &g_bSetPowerstate)) g_bSetPowerstate = false; - /* read setting "checkgroups" from settings.xml */ - if (!XBMC->GetSetting("checkgroups", &g_bCheckForGroupUpdates)) - g_bCheckForGroupUpdates = true; - - /* read setting "showcompleted" from settings.xml */ - if (!XBMC->GetSetting("checkchannels", &g_bCheckForChannelUpdates)) - g_bCheckForChannelUpdates = true; - /* read setting "zap" from settings.xml */ if (!XBMC->GetSetting("zap", &g_bZap)) g_bZap = false; @@ -153,12 +148,6 @@ else g_strIconPath = ""; - /* read setting "channeldatapath" from settings.xml */ - if (XBMC->GetSetting("channeldatapath", buffer)) - g_strChannelDataPath = buffer; - else - g_strChannelDataPath = "/tmp/"; - free (buffer); } @@ -196,12 +185,9 @@ VuData = new Vu; if (!VuData->Open()) { - delete VuData; - delete PVR; - delete XBMC; - VuData = NULL; - PVR = NULL; - XBMC = NULL; + SAFE_DELETE(VuData); + SAFE_DELETE(PVR); + SAFE_DELETE(XBMC); m_CurStatus = ADDON_STATUS_LOST_CONNECTION; return m_CurStatus; } @@ -232,24 +218,9 @@ VuData->SendPowerstate(); } - - if (PVR) - { - delete PVR; - PVR = NULL; - } - - if (XBMC) - { - delete XBMC; - XBMC = NULL; - } - - if (VuData) - { - delete VuData; - VuData = NULL; - } + SAFE_DELETE(VuData); + SAFE_DELETE(PVR); + SAFE_DELETE(XBMC); m_CurStatus = ADDON_STATUS_UNKNOWN; } @@ -371,7 +342,7 @@ pCapabilities->bSupportsChannelScan = false; pCapabilities->bHandlesInputStream = true; pCapabilities->bHandlesDemuxing = false; - pCapabilities->bSupportsLastPlayedPosition = true; + pCapabilities->bSupportsLastPlayedPosition = false; return PVR_ERROR_NO_ERROR; } @@ -565,18 +536,12 @@ } PVR_ERROR SetRecordingLastPlayedPosition(const PVR_RECORDING &recording, int lastplayedposition) { - if (!VuData || !VuData->IsConnected()) - return PVR_ERROR_SERVER_ERROR; - - return VuData->SetRecordingLastPlayedPosition(recording, lastplayedposition); + return PVR_ERROR_NOT_IMPLEMENTED; } int GetRecordingLastPlayedPosition(const PVR_RECORDING &recording) { - if (!VuData || !VuData->IsConnected()) - return -1; - - return VuData->GetRecordingLastPlayedPosition(recording); + return PVR_ERROR_NOT_IMPLEMENTED; } /** UNUSED API FUNCTIONS */ diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/src/client.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/src/client.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/src/client.h 2014-01-04 10:28:12.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/src/client.h 2014-07-18 06:05:30.000000000 +0000 @@ -15,7 +15,8 @@ * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA * http://www.gnu.org/copyleft/gpl.html * */ @@ -44,8 +45,7 @@ extern bool g_bShowTimerNotifications; extern bool g_bZap; extern bool g_bAutomaticTimerlistCleanup; -extern bool g_bCheckForGroupUpdates; -extern bool g_bCheckForChannelUpdates; +extern bool g_bUseSecureHTTP; extern bool g_bOnlyCurrentLocation; extern bool g_bSetPowerstate; extern bool g_bOnlyOneGroup; diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/src/VuData.cpp xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/src/VuData.cpp --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/src/VuData.cpp 2014-01-04 10:28:19.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/src/VuData.cpp 2014-07-18 06:05:30.000000000 +0000 @@ -2,6 +2,7 @@ #include "client.h" #include #include +#include #include "tinyxml/XMLUtils.h" @@ -168,428 +169,6 @@ } } -bool Vu::CheckForChannelUpdate() -{ - if (!g_bCheckForChannelUpdates) - return false; - - m_bUpdating = true; - - std::vector oldchannels = m_channels; - - LoadChannels(); - - for(unsigned int i=0; i< oldchannels.size(); i++) - oldchannels[i].iChannelState = VU_UPDATE_STATE_NONE; - - for (unsigned int j=0; jLog(LOG_INFO, "%s No of channels: removed [%d], untouched [%d], updated '%d', new '%d'", __FUNCTION__, iRemovedChannels, iNotUpdatedChannels, iUpdatedChannels, iNewChannels); - - m_bUpdating = false; - - if ((iRemovedChannels > 0) || (iUpdatedChannels > 0) || (iNewChannels > 0)) - { - //Channels have been changed, so return "true" - return true; - } - else - { - m_channels = oldchannels; - return false; - } -} - -bool Vu::CheckForGroupUpdate() -{ - if (!g_bCheckForGroupUpdates) - return false; - - m_bUpdating = true; - - std::vector m_oldgroups = m_groups; - - m_groups.clear(); - LoadChannelGroups(); - - for (unsigned int i=0; iLog(LOG_INFO, "%s No of groups: removed [%d], untouched [%d], updated '%d', new '%d'", __FUNCTION__, iRemovedGroups, iNotUpdatedGroups, iUpdatedGroups, iNewGroups); - - m_bUpdating = false; - - - if ((iRemovedGroups > 0) || (iUpdatedGroups > 0) || (iNewGroups > 0)) - { - // groups have been changed, so return "true" - return true; - } - else - { - m_groups = m_oldgroups; - return false; - } -} - -void Vu::LoadChannelData() -{ - m_bUpdating = true; - XBMC->Log(LOG_DEBUG, "%s Load channel data from file: '%schanneldata.xml'", __FUNCTION__, g_strChannelDataPath.c_str()); - - CStdString strFileName; - strFileName.Format("%schanneldata.xml", g_strChannelDataPath.c_str()); - - TiXmlDocument xmlDoc; - if (!xmlDoc.LoadFile(strFileName)) - { - XBMC->Log(LOG_DEBUG, "Unable to parse XML: %s at line %d", xmlDoc.ErrorDesc(), xmlDoc.ErrorRow()); - m_bUpdating = false; - return; - } - - XBMC->Log(LOG_DEBUG, "%s Parsing channel data.", __FUNCTION__); - - TiXmlHandle hDoc(&xmlDoc); - TiXmlElement* pElem; - TiXmlHandle hRoot(0); - - pElem = hDoc.FirstChildElement().Element(); - - if (!pElem) - { - XBMC->Log(LOG_DEBUG, "%s Could not find root element", __FUNCTION__); - m_bUpdating = false; - return; - } - - hRoot = TiXmlHandle(pElem); - - pElem = hRoot.FirstChild("version").Element(); - - if (!pElem) - { - XBMC->Log(LOG_DEBUG, "%s Could not find element", __FUNCTION__); - m_bUpdating = false; - return; - } - - // Check for the correct channeldata version - int iVersion = atoi(pElem->GetText()); - - XBMC->Log(LOG_DEBUG, "%s Found channeldata version: '%d', current channeldata version: '%d'", __FUNCTION__, iVersion, CHANNELDATAVERSION); - - if (iVersion != CHANNELDATAVERSION) - { - XBMC->Log(LOG_NOTICE, "%s The channeldata versions do not match, we will abort loading the data from the HDD.", __FUNCTION__); - m_bUpdating = false; - return; - } - - // Get the grouplist - pElem = hRoot.FirstChild("grouplist").Element(); - - if (!pElem) - { - XBMC->Log(LOG_DEBUG, "%s Could not find element", __FUNCTION__); - m_bUpdating = false; - return; - } - - TiXmlElement* pNode = pElem->FirstChildElement("group"); - - if (!pNode) - { - XBMC->Log(LOG_DEBUG, "Could not find element"); - m_bUpdating = false; - return; - } - - for (; pNode != NULL; pNode = pNode->NextSiblingElement("group")) - { - CStdString strTmp; - - VuChannelGroup group; - - if (!XMLUtils::GetString(pNode, "servicereference", strTmp)) - continue; - - group.strServiceReference = strTmp.c_str(); - - if (!XMLUtils::GetString(pNode, "groupname", strTmp)) - continue; - - group.strGroupName = strTmp.c_str(); - - m_groups.push_back(group); - - XBMC->Log(LOG_DEBUG, "%s Loaded group '%s' from HDD", __FUNCTION__, group.strGroupName.c_str()); - } - - // Get the channellist - pElem = hRoot.FirstChild("channellist").Element(); - - if (!pElem) - { - XBMC->Log(LOG_DEBUG, "%s Could not find element", __FUNCTION__); - m_bUpdating = false; - return; - } - - pNode = pElem->FirstChildElement("channel"); - - if (!pNode) - { - XBMC->Log(LOG_DEBUG, "Could not find element"); - m_bUpdating = false; - return; - } - - for (; pNode != NULL; pNode = pNode->NextSiblingElement("channel")) - { - CStdString strTmp; - bool bTmp; - int iTmp; - - VuChannel channel; - - if (XMLUtils::GetBoolean(pNode, "radio", bTmp)) - { - channel.bRadio = bTmp; - } - - if (!XMLUtils::GetInt(pNode, "id", iTmp)) - continue; - channel.iUniqueId = iTmp; - - if (!XMLUtils::GetInt(pNode, "channelnumber", iTmp)) - continue; - channel.iChannelNumber = iTmp; - - if (!XMLUtils::GetString(pNode, "groupname", strTmp)) - continue; - channel.strGroupName = strTmp.c_str(); - - if (!XMLUtils::GetString(pNode, "channelname", strTmp)) - continue; - channel.strChannelName = strTmp.c_str(); - - if (!XMLUtils::GetString(pNode, "servicereference", strTmp)) - continue; - - channel.strServiceReference = strTmp.c_str(); - - if (!XMLUtils::GetString(pNode, "streamurl", strTmp)) - continue; - channel.strStreamURL = strTmp.c_str(); - - if (!XMLUtils::GetString(pNode, "iconpath", strTmp)) - continue; - channel.strIconPath = strTmp.c_str(); - - m_channels.push_back(channel); - - XBMC->Log(LOG_DEBUG, "%s Loaded channel '%s' from HDD", __FUNCTION__, channel.strChannelName.c_str()); - } - m_bUpdating = false; -} - -void Vu::StoreChannelData() -{ - XBMC->Log(LOG_DEBUG, "%s Store channel data into file: '%schanneldata.xml'", __FUNCTION__, g_strChannelDataPath.c_str()); - - std::ofstream stream; - - CStdString strFileName; - strFileName.Format("%schanneldata.xml", g_strChannelDataPath.c_str()); - stream.open(strFileName.c_str()); - - if(stream.fail()) - XBMC->Log(LOG_ERROR, "%s Could not open channeldata file for writing!", __FUNCTION__); - - stream << "\n"; - stream << "\t" << CHANNELDATAVERSION; - stream << "\n"; - stream << "\t\n"; - for (unsigned int iGroupPtr = 0; iGroupPtr < m_groups.size(); iGroupPtr++) - { - VuChannelGroup &group = m_groups.at(iGroupPtr); - stream << "\t\t\n"; - - CStdString strTmp = group.strServiceReference; - Escape(strTmp, "&", "&"); - Escape(strTmp, "<", "<"); - Escape(strTmp, ">", ">"); - - stream << "\t\t\t" << strTmp; - stream << "\n"; - - strTmp = group.strGroupName; - Escape(strTmp, "&", """); - Escape(strTmp, "<", "<"); - Escape(strTmp, ">", ">"); - - stream << "\t\t\t" << strTmp; - stream << "\n"; - stream << "\t\t\n"; - } - - stream << "\t\n"; - - stream << "\t\n"; - for (unsigned int iChannelPtr = 0; iChannelPtr < m_channels.size(); iChannelPtr++) - { - stream << "\t\t\n"; - VuChannel &channel = m_channels.at(iChannelPtr); - - // store channel properties - stream << "\t\t\t"; - if (channel.bRadio) - stream << "true"; - else - stream << "false"; - stream << "\n"; - - stream << "\t\t\t" << channel.iUniqueId; - stream << "\n"; - stream << "\t\t\t" << channel.iChannelNumber; - stream << "\n"; - - CStdString strTmp = channel.strGroupName; - Escape(strTmp, "&", """); - Escape(strTmp, "<", "<"); - Escape(strTmp, ">", ">"); - - stream << "\t\t\t" << strTmp; - stream << "\n"; - - strTmp = channel.strChannelName; - Escape(strTmp, "&", """); - Escape(strTmp, "<", "<"); - Escape(strTmp, ">", ">"); - - stream << "\t\t\t" << strTmp; - stream << "\n"; - - strTmp = channel.strServiceReference; - Escape(strTmp, "&", """); - Escape(strTmp, "<", "<"); - Escape(strTmp, ">", ">"); - - stream << "\t\t\t" << strTmp; - stream << "\n"; - - strTmp = channel.strStreamURL; - Escape(strTmp, "&", """); - Escape(strTmp, "<", "<"); - Escape(strTmp, ">", ">"); - - stream << "\t\t\t" << strTmp; - stream << "\n"; - - strTmp = channel.strIconPath; - Escape(strTmp, "&", """); - Escape(strTmp, "<", "<"); - Escape(strTmp, ">", ">"); - - - stream << "\t\t\t" << strTmp; - stream << "\n"; - - stream << "\t\t\n"; - - } - stream << "\t\n"; - stream << "\n"; - stream.close(); -} - Vu::Vu() { m_bIsConnected = false; @@ -598,17 +177,31 @@ // simply add user@pass in front of the URL if username/password is set if ((g_strUsername.length() > 0) && (g_strPassword.length() > 0)) + { strURL.Format("%s:%s@", g_strUsername.c_str(), g_strPassword.c_str()); - strURL.Format("http://%s%s:%u/", strURL.c_str(), g_strHostname.c_str(), g_iPortWeb); + } + + if (!g_bUseSecureHTTP) + strURL.Format("http://%s%s:%u/", strURL.c_str(), g_strHostname.c_str(), g_iPortWeb); + else + strURL.Format("https://%s%s:%u/", strURL.c_str(), g_strHostname.c_str(), g_iPortWeb); + m_strURL = strURL.c_str(); + m_iNumRecordings = 0; m_iNumChannelGroups = 0; m_iCurrentChannel = -1; m_iClientIndexCounter = 1; - m_bInitial = false; - m_bUpdating = false; + m_bUpdating = false; m_iUpdateTimer = 0; + m_bInitialEPG = true; + + std::string initialEPGReady = "special://userdata/addon_data/pvr.vuplus/initialEPGReady"; + m_writeHandle = XBMC->OpenFileForWrite(initialEPGReady.c_str(), true); + XBMC->WriteFile(m_writeHandle, "Y", 1); + XBMC->CloseFile(m_writeHandle); + } bool Vu::Open() @@ -619,7 +212,19 @@ XBMC->Log(LOG_NOTICE, "%s - Hostname: '%s'", __FUNCTION__, g_strHostname.c_str()); XBMC->Log(LOG_NOTICE, "%s - WebPort: '%d'", __FUNCTION__, g_iPortWeb); XBMC->Log(LOG_NOTICE, "%s - StreamPort: '%d'", __FUNCTION__, g_iPortStream); + if (!g_bUseSecureHTTP) + XBMC->Log(LOG_NOTICE, "%s Use HTTPS: 'false'", __FUNCTION__); + else + XBMC->Log(LOG_NOTICE, "%s Use HTTPS: 'true'", __FUNCTION__); + if ((g_strUsername.length() > 0) && (g_strPassword.length() > 0)) + { + if ((g_strUsername.find("@") != std::string::npos) || (g_strPassword.find("@") != std::string::npos)) + { + XBMC->Log(LOG_ERROR, "%s - You cannot use the '@' character in either the username or the password with this addon. Please change your configuraton!", __FUNCTION__); + return false; + } + } m_bIsConnected = GetDeviceInfo(); if (!m_bIsConnected) @@ -630,10 +235,8 @@ LoadLocations(); - LoadChannelData(); if (m_channels.size() == 0) { - XBMC->Log(LOG_DEBUG, "%s No stored channels found, fetch from webapi", __FUNCTION__); // Load the TV channels - close connection if no channels are found if (!LoadChannelGroups()) return false; @@ -641,8 +244,6 @@ if (!LoadChannels()) return false; - m_bInitial = true; - StoreChannelData(); } TimerUpdates(); @@ -656,37 +257,49 @@ { XBMC->Log(LOG_DEBUG, "%s - starting", __FUNCTION__); + // Wait for the initial EPG update to complete + bool bwait = true; + int cycles = 0; + + while (bwait) + { + if (cycles == 30) + bwait = false; + + cycles++; + std::string initialEPGReady = "special://userdata/addon_data/pvr.vuplus/initialEPGReady"; + m_readHandle = XBMC->OpenFile(initialEPGReady.c_str(), 0); + byte buf[1]; + XBMC->ReadFile(m_readHandle, buf, 1); + XBMC->CloseFile(m_readHandle); + char buf2[] = { "N" }; + if (buf[0] == buf2[0]) + { + XBMC->Log(LOG_DEBUG, "%s - Intial EPG update COMPLETE!", __FUNCTION__); + } + else + { + XBMC->Log(LOG_DEBUG, "%s - Intial EPG update not completed yet.", __FUNCTION__); + Sleep(5 * 1000); + } + } + + // Trigger "Real" EPG updates + for (unsigned int iChannelPtr = 0; iChannelPtr < m_channels.size(); iChannelPtr++) + { + XBMC->Log(LOG_DEBUG, "%s - Trigger EPG update for channel '%d'", __FUNCTION__, iChannelPtr); + PVR->TriggerEpgUpdate(m_channels.at(iChannelPtr).iUniqueId); + } + while(!IsStopped()) { Sleep(5 * 1000); m_iUpdateTimer += 5; - if (((int)m_iUpdateTimer > (g_iUpdateInterval * 60)) || (m_bInitial == false)) + if ((int)m_iUpdateTimer > (g_iUpdateInterval * 60)) { m_iUpdateTimer = 0; - if (!m_bInitial) - { - // Load the TV channels - bool bTriggerGroupsUpdate = CheckForGroupUpdate(); - bool bTriggerChannelsUpdate = CheckForChannelUpdate(); - - m_bInitial = true; - - if (bTriggerGroupsUpdate) - { - PVR->TriggerChannelGroupsUpdate(); - bTriggerChannelsUpdate = true; - } - - if (bTriggerChannelsUpdate) - { - PVR->TriggerChannelUpdate(); - // Store the channel data on HDD - StoreChannelData(); - } - } - // Trigger Timer and Recording updates acording to the addon settings CLockObject lock(m_mutex); XBMC->Log(LOG_INFO, "%s Perform Updates!", __FUNCTION__); @@ -705,7 +318,7 @@ } - CLockObject lock(m_mutex); + //CLockObject lock(m_mutex); m_started.Broadcast(); return NULL; @@ -861,6 +474,7 @@ VuChannel newChannel; newChannel.bRadio = bRadio; + newChannel.bInitialEPG = true; newChannel.strGroupName = strGroupName; newChannel.iUniqueId = m_channels.size()+1; newChannel.iChannelNumber = m_channels.size()+1; @@ -907,8 +521,12 @@ if ((g_strUsername.length() > 0) && (g_strPassword.length() > 0)) strTmp.Format("%s:%s@", g_strUsername.c_str(), g_strPassword.c_str()); - - strTmp.Format("http://%s%s:%d/%s", strTmp.c_str(), g_strHostname, g_iPortStream, strTmp2.c_str()); + + if (!g_bUseSecureHTTP) + strTmp.Format("http://%s%s:%d/%s", strTmp.c_str(), g_strHostname, g_iPortStream, strTmp2.c_str()); + else + strTmp.Format("https://%s%s:%d/%s", strTmp.c_str(), g_strHostname, g_iPortStream, strTmp2.c_str()); + newChannel.strStreamURL = strTmp; if (g_bOnlinePicons == true) @@ -922,107 +540,266 @@ XBMC->Log(LOG_INFO, "%s Loaded channel: %s, Icon: %s", __FUNCTION__, newChannel.strChannelName.c_str(), newChannel.strIconPath.c_str()); } - XBMC->Log(LOG_INFO, "%s Loaded %d Channels", __FUNCTION__, m_channels.size()); - return true; -} + XBMC->Log(LOG_INFO, "%s Loaded %d Channels", __FUNCTION__, m_channels.size()); + return true; +} + +bool Vu::IsConnected() +{ + return m_bIsConnected; +} + +CStdString Vu::GetHttpXML(CStdString& url) +{ +// CLockObject lock(m_mutex); + + XBMC->Log(LOG_INFO, "%s Open webAPI with URL: '%s'", __FUNCTION__, url.c_str()); + + CStdString strTmp; + + CCurlFile http; + if(!http.Get(url, strTmp)) + { + XBMC->Log(LOG_DEBUG, "%s - Could not open webAPI.", __FUNCTION__); + return ""; + } + + XBMC->Log(LOG_INFO, "%s Got result. Length: %u", __FUNCTION__, strTmp.length()); + + + return strTmp; +} + +const char * Vu::GetServerName() +{ + return m_strServerName.c_str(); +} + +int Vu::GetChannelsAmount() +{ + return m_channels.size(); +} + +int Vu::GetTimersAmount() +{ + return m_timers.size(); +} + +unsigned int Vu::GetRecordingsAmount() { + return m_iNumRecordings; +} + +PVR_ERROR Vu::GetChannels(ADDON_HANDLE handle, bool bRadio) +{ + // is the addon is currently updating the channels, then delay the call + unsigned int iTimer = 0; + while(m_bUpdating == true && iTimer < 120) + { + Sleep(1000); + iTimer++; + } + + for (unsigned int iChannelPtr = 0; iChannelPtr < m_channels.size(); iChannelPtr++) + { + VuChannel &channel = m_channels.at(iChannelPtr); + if (channel.bRadio == bRadio) + { + PVR_CHANNEL xbmcChannel; + memset(&xbmcChannel, 0, sizeof(PVR_CHANNEL)); + + xbmcChannel.iUniqueId = channel.iUniqueId; + xbmcChannel.bIsRadio = channel.bRadio; + xbmcChannel.iChannelNumber = channel.iChannelNumber; + strncpy(xbmcChannel.strChannelName, channel.strChannelName.c_str(), sizeof(xbmcChannel.strChannelName)); + strncpy(xbmcChannel.strInputFormat, "", 0); // unused + xbmcChannel.iEncryptionSystem = 0; + xbmcChannel.bIsHidden = false; + strncpy(xbmcChannel.strIconPath, channel.strIconPath.c_str(), sizeof(xbmcChannel.strIconPath)); + + CStdString strStream; + strStream.Format("pvr://stream/tv/%i.ts", channel.iUniqueId); + strncpy(xbmcChannel.strStreamURL, strStream.c_str(), sizeof(xbmcChannel.strStreamURL)); + + PVR->TransferChannelEntry(handle, &xbmcChannel); + } + } + + return PVR_ERROR_NO_ERROR; +} + +Vu::~Vu() +{ + CLockObject lock(m_mutex); + XBMC->Log(LOG_DEBUG, "%s Stopping update thread...", __FUNCTION__); + StopThread(); + + XBMC->Log(LOG_DEBUG, "%s Removing internal channels list...", __FUNCTION__); + m_channels.clear(); + + XBMC->Log(LOG_DEBUG, "%s Removing internal timers list...", __FUNCTION__); + m_timers.clear(); + + XBMC->Log(LOG_DEBUG, "%s Removing internal recordings list...", __FUNCTION__); + m_recordings.clear(); + + XBMC->Log(LOG_DEBUG, "%s Removing internal group list...", __FUNCTION__); + m_groups.clear(); + m_bIsConnected = false; +} + +bool Vu::GetInitialEPGForGroup(VuChannelGroup &group) +{ + // is the addon is currently updating the channels, then delay the call + unsigned int iTimer = 0; + while(m_bUpdating == true && iTimer < 120) + { + Sleep(1000); + iTimer++; + } + + CStdString url; + url.Format("%s%s%s", m_strURL.c_str(), "web/epgnownext?bRef=", URLEncodeInline(group.strServiceReference.c_str())); + + CStdString strXML; + strXML = GetHttpXML(url); + + int iNumEPG = 0; + + TiXmlDocument xmlDoc; + if (!xmlDoc.Parse(strXML.c_str())) + { + XBMC->Log(LOG_DEBUG, "Unable to parse XML: %s at line %d", xmlDoc.ErrorDesc(), xmlDoc.ErrorRow()); + return false; + } + + TiXmlHandle hDoc(&xmlDoc); + TiXmlElement* pElem; + TiXmlHandle hRoot(0); + + pElem = hDoc.FirstChildElement("e2eventlist").Element(); + + if (!pElem) + { + XBMC->Log(LOG_DEBUG, "%s could not find element!", __FUNCTION__); + // Return "NO_ERROR" as the EPG could be empty for this channel + return false; + } + + hRoot=TiXmlHandle(pElem); + + TiXmlElement* pNode = hRoot.FirstChildElement("e2event").Element(); + + if (!pNode) + { + XBMC->Log(LOG_DEBUG, "Could not find element"); + // RETURN "NO_ERROR" as the EPG could be empty for this channel + return false; + } + + for (; pNode != NULL; pNode = pNode->NextSiblingElement("e2event")) + { + CStdString strTmp; + + int iTmpStart; + int iTmp; + + // check and set event starttime and endtimes + if (!XMLUtils::GetInt(pNode, "e2eventstart", iTmpStart)) + continue; + + if (!XMLUtils::GetInt(pNode, "e2eventduration", iTmp)) + continue; -bool Vu::IsConnected() -{ - return m_bIsConnected; -} + VuEPGEntry entry; + entry.startTime = iTmpStart; + entry.endTime = iTmpStart + iTmp; -CStdString Vu::GetHttpXML(CStdString& url) -{ - CLockObject lock(m_mutex); + if (!XMLUtils::GetInt(pNode, "e2eventid", entry.iEventId)) + continue; - XBMC->Log(LOG_INFO, "%s Open webAPI with URL: '%s'", __FUNCTION__, url.c_str()); + + if(!XMLUtils::GetString(pNode, "e2eventtitle", strTmp)) + continue; - CStdString strTmp; + entry.strTitle = strTmp; - CCurlFile http; - if(!http.Get(url, strTmp)) - { - XBMC->Log(LOG_DEBUG, "%s - Could not open webAPI.", __FUNCTION__); - return ""; - } + if(!XMLUtils::GetString(pNode, "e2eventservicereference", strTmp)) + continue; - XBMC->Log(LOG_INFO, "%s Got result. Length: %u", __FUNCTION__, strTmp.length()); - + entry.strServiceReference = strTmp; + + entry.iChannelId = GetChannelNumber(entry.strServiceReference.c_str()); - return strTmp; -} + if (XMLUtils::GetString(pNode, "e2eventdescriptionextended", strTmp)) + entry.strPlot = strTmp; -const char * Vu::GetServerName() -{ - return m_strServerName.c_str(); -} + if (XMLUtils::GetString(pNode, "e2eventdescription", strTmp)) + entry.strPlotOutline = strTmp; -int Vu::GetChannelsAmount() -{ - return m_channels.size(); + iNumEPG++; + + group.initialEPG.push_back(entry); + } + + XBMC->Log(LOG_INFO, "%s Loaded %u EPG Entries for group '%s'", __FUNCTION__, iNumEPG, group.strGroupName.c_str()); + return true; } -int Vu::GetTimersAmount() +PVR_ERROR Vu::GetInitialEPGForChannel(ADDON_HANDLE handle, const VuChannel &channel, time_t iStart, time_t iEnd) { - return m_timers.size(); -} + if (m_iNumChannelGroups < 1) + return PVR_ERROR_SERVER_ERROR; -unsigned int Vu::GetRecordingsAmount() { - return m_iNumRecordings; -} + XBMC->Log(LOG_DEBUG, "%s Fetch information for group '%s'", __FUNCTION__, channel.strGroupName.c_str()); -PVR_ERROR Vu::GetChannels(ADDON_HANDLE handle, bool bRadio) -{ - // is the addon is currently updating the channels, then delay the call - unsigned int iTimer = 0; - while(m_bUpdating == true && iTimer < 120) + VuChannelGroup &myGroup = m_groups.at(0); + for (int i = 0;iLog(LOG_DEBUG, "%s initialEPG size is now '%d'", __FUNCTION__, myGroup.initialEPG.size()); + + for (unsigned int i = 0;iTransferChannelEntry(handle, &xbmcChannel); + PVR->TransferEpgEntry(handle, &broadcast); } } - return PVR_ERROR_NO_ERROR; } -Vu::~Vu() -{ - StoreLastPlayedPositions(); - - StopThread(); - - m_channels.clear(); - m_timers.clear(); - m_recordings.clear(); - m_groups.clear(); - m_bIsConnected = false; -} - PVR_ERROR Vu::GetEPGForChannel(ADDON_HANDLE handle, const PVR_CHANNEL &channel, time_t iStart, time_t iEnd) { // is the addon is currently updating the channels, then delay the call @@ -1042,6 +819,31 @@ VuChannel myChannel; myChannel = m_channels.at(channel.iUniqueId-1); + // Check if the initial short import has already been done for this channel + if (m_channels.at(channel.iUniqueId-1).bInitialEPG == true) + { + m_channels.at(channel.iUniqueId-1).bInitialEPG = false; + + // Check if all channels have completed the initial EPG import + m_bInitialEPG = false; + for (unsigned int iChannelPtr = 0; iChannelPtr < m_channels.size(); iChannelPtr++) + { + if (m_channels.at(iChannelPtr).bInitialEPG == true) + { + m_bInitialEPG = true; + } + } + + if (!m_bInitialEPG) + { + std::string initialEPGReady = "special://userdata/addon_data/pvr.vuplus/initialEPGReady"; + m_writeHandle = XBMC->OpenFileForWrite(initialEPGReady.c_str(), true); + XBMC->WriteFile(m_writeHandle, "N", 1); + XBMC->CloseFile(m_writeHandle); + } + return GetInitialEPGForChannel(handle, myChannel, iStart, iEnd); + } + CStdString url; url.Format("%s%s%s", m_strURL.c_str(), "web/epgservice?sRef=", URLEncodeInline(myChannel.strServiceReference.c_str())); @@ -1466,9 +1268,6 @@ iTimer++; } - if (m_iNumRecordings != 0) - StoreLastPlayedPositions(); - m_iNumRecordings = 0; m_recordings.clear(); @@ -1482,8 +1281,6 @@ TransferRecordings(handle); - RestoreLastPlayedPositions(); - return PVR_ERROR_NO_ERROR; } @@ -1859,24 +1656,48 @@ m_iCurrentChannel = -1; } +int Vu::ReadLiveStream(unsigned char *pBuffer, unsigned int iBufferSize) +{ + return 0; +} + +long long Vu::SeekLiveStream(long long iPosition, int iWhence /* = SEEK_SET */) +{ + return 0; +} + +long long Vu::PositionLiveStream(void) +{ + return 0; +} + +long long Vu::LengthLiveStream(void) +{ + return 0; +} + bool Vu::SwitchChannel(const PVR_CHANNEL &channel) { - if ((int)channel.iUniqueId == m_iCurrentChannel) - return true; + XBMC->Log(LOG_DEBUG, "%s Switching channels", __FUNCTION__); - if (!g_bZap) + if ((int)channel.iUniqueId == m_iCurrentChannel) return true; - // Zapping is set to true, so send the zapping command to the PVR box - CStdString strServiceReference = m_channels.at(channel.iUniqueId-1).strServiceReference.c_str(); + m_iCurrentChannel = (int)channel.iUniqueId; - CStdString strTmp; - strTmp.Format("web/zap?sRef=%s", URLEncodeInline(strServiceReference)); + if (g_bZap) + { + // Zapping is set to true, so send the zapping command to the PVR box + CStdString strServiceReference = m_channels.at(channel.iUniqueId-1).strServiceReference.c_str(); - CStdString strResult; - if(!SendSimpleCommand(strTmp, strResult)) - return false; + CStdString strTmp; + strTmp.Format("web/zap?sRef=%s", URLEncodeInline(strServiceReference)); + CStdString strResult; + if(!SendSimpleCommand(strTmp, strResult)) + return false; + + } return true; } @@ -2025,178 +1846,3 @@ return -1; } -PVR_ERROR Vu::SetRecordingLastPlayedPosition(const PVR_RECORDING &recording, int lastplayedposition) -{ - // is the addon is currently updating the channels, then delay the call - unsigned int iTimer = 0; - while(m_bUpdating == true && iTimer < 120) - { - Sleep(1000); - iTimer++; - } - - int iRecordId = GetRecordingIndex(recording.strStreamURL); - - if (iRecordId == -1) - { - XBMC->Log(LOG_ERROR, "%s Could not set lastplayedposition for recording!", __FUNCTION__); - return PVR_ERROR_SERVER_ERROR; - } - - m_recordings.at(iRecordId).iLastPlayedPosition = lastplayedposition; - - return PVR_ERROR_NO_ERROR; -} - -bool Vu::SetRecordingLastPlayedPosition(CStdString strStreamURL, int lastplayedposition) -{ - // is the addon is currently updating the channels, then delay the call - unsigned int iTimer = 0; - while(m_bUpdating == true && iTimer < 120) - { - Sleep(1000); - iTimer++; - } - - XBMC->Log(LOG_DEBUG, "%s Set lastplayedposition '%d' for recording '%s'", __FUNCTION__, lastplayedposition, strStreamURL.c_str()); - int iRecordId = GetRecordingIndex(strStreamURL); - - if (iRecordId == -1) - { - XBMC->Log(LOG_DEBUG, "%s Could not set lastplayedposition for recording!", __FUNCTION__); - return false; - } - - m_recordings.at(iRecordId).iLastPlayedPosition = lastplayedposition; - - return PVR_ERROR_NO_ERROR; -} - -int Vu::GetRecordingLastPlayedPosition(const PVR_RECORDING &recording) -{ - // is the addon is currently updating the channels, then delay the call - unsigned int iTimer = 0; - while(m_bUpdating == true && iTimer < 120) - { - Sleep(1000); - iTimer++; - } - - int iRecordId = GetRecordingIndex(recording.strStreamURL); - - if (iRecordId == -1) - { - XBMC->Log(LOG_ERROR, "%s Could not get lastplayedposition for recording!", __FUNCTION__); - return PVR_ERROR_SERVER_ERROR; - } - - return m_recordings.at(iRecordId).iLastPlayedPosition; -} - -bool Vu::StoreLastPlayedPositions() -{ - std::ofstream stream; - - CStdString strFileName; - strFileName.Format("%srecordings.xml", g_strChannelDataPath.c_str()); - stream.open(strFileName.c_str()); - - if(stream.fail()) - { - return false; - } - - stream << "\n"; - stream << "\t\n"; - for (unsigned int iRecordingsPtr = 0; iRecordingsPtr < m_recordings.size(); iRecordingsPtr++) - { - VuRecording &recording = m_recordings.at(iRecordingsPtr); - stream << "\t\t\n"; - - CStdString strTmp = recording.strStreamURL; - Escape(strTmp, "&", "&"); - Escape(strTmp, "<", "<"); - Escape(strTmp, ">", ">"); - - stream << "\t\t\t" << strTmp; - stream << "\n"; - - int i = recording.iLastPlayedPosition; - - stream << "\t\t\t" << i; - stream << "\n"; - stream << "\t\t\n"; - } - - stream << "\t\n"; - - stream << "\n"; - stream.close(); - - return true; -} - -bool Vu::RestoreLastPlayedPositions() -{ - XBMC->Log(LOG_DEBUG, "%s Load recording data from file: '%srecordings.xml'", __FUNCTION__, g_strChannelDataPath.c_str()); - - CStdString strFileName; - strFileName.Format("%srecordings.xml", g_strChannelDataPath.c_str()); - - TiXmlDocument xmlDoc; - if (!xmlDoc.LoadFile(strFileName)) - { - XBMC->Log(LOG_DEBUG, "Unable to parse XML: %s at line %d", xmlDoc.ErrorDesc(), xmlDoc.ErrorRow()); - return false; - } - - XBMC->Log(LOG_DEBUG, "%s Parsing recording data.", __FUNCTION__); - - TiXmlHandle hDoc(&xmlDoc); - TiXmlElement* pElem; - TiXmlHandle hRoot(0); - - pElem = hDoc.FirstChildElement().Element(); - - if (!pElem) - { - XBMC->Log(LOG_DEBUG, "%s Could not find root element", __FUNCTION__); - return false; - } - - hRoot = TiXmlHandle(pElem); - - // Get the recordingslist - pElem = hRoot.FirstChild("recordingslist").Element(); - - if (!pElem) - { - XBMC->Log(LOG_DEBUG, "%s Could not find element", __FUNCTION__); - return false; - } - - TiXmlElement* pNode = pElem->FirstChildElement("recording"); - - if (!pNode) - { - XBMC->Log(LOG_DEBUG, "Could not find element"); - return false; - } - - for (; pNode != NULL; pNode = pNode->NextSiblingElement("recording")) - { - CStdString strTmp; - int iTmp; - - if (!XMLUtils::GetInt(pNode, "lastplayedposition", iTmp)) - continue; - - if (!XMLUtils::GetString(pNode, "streamurl", strTmp)) - continue; - - SetRecordingLastPlayedPosition(strTmp, iTmp); - } - - return true; -} - diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/src/VuData.h xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/src/VuData.h --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.vuplus/src/VuData.h 2013-03-12 10:51:22.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.vuplus/src/VuData.h 2014-07-18 06:05:30.000000000 +0000 @@ -25,26 +25,30 @@ VU_UPDATE_STATE_NEW } VU_UPDATE_STATE; -struct VuChannelGroup { +struct VuEPGEntry +{ + int iEventId; + std::string strServiceReference; + std::string strTitle; + int iChannelId; + time_t startTime; + time_t endTime; + std::string strPlotOutline; + std::string strPlot; +}; + +struct VuChannelGroup +{ std::string strServiceReference; std::string strGroupName; int iGroupState; - - VuChannelGroup() - { - iGroupState = VU_UPDATE_STATE_NEW; - } - - bool operator==(const VuChannelGroup &right) const - { - return (! strServiceReference.compare(right.strServiceReference)) && (! strGroupName.compare(right.strGroupName)); - } - + std::vector initialEPG; }; struct VuChannel { bool bRadio; + bool bInitialEPG; int iUniqueId; int iChannelNumber; std::string strGroupName; @@ -52,40 +56,6 @@ std::string strServiceReference; std::string strStreamURL; std::string strIconPath; - int iChannelState; - - VuChannel() - { - iChannelState = VU_UPDATE_STATE_NEW; - } - - bool operator==(const VuChannel &right) const - { - bool bChanged = true; - bChanged = bChanged && (bRadio == right.bRadio); - bChanged = bChanged && (iUniqueId == right.iUniqueId); - bChanged = bChanged && (iChannelNumber == right.iChannelNumber); - bChanged = bChanged && (! strGroupName.compare(right.strGroupName)); - bChanged = bChanged && (! strChannelName.compare(right.strChannelName)); - bChanged = bChanged && (! strServiceReference.compare(right.strServiceReference)); - bChanged = bChanged && (! strStreamURL.compare(right.strStreamURL)); - bChanged = bChanged && (! strIconPath.compare(right.strIconPath)); - - return bChanged; - } - -}; - -struct VuEPGEntry -{ - int iEventId; - std::string strServiceReference; - std::string strTitle; - int iChannelId; - time_t startTime; - time_t endTime; - std::string strPlotOutline; - std::string strPlot; }; struct VuTimer @@ -157,6 +127,8 @@ private: // members + void *m_writeHandle; + void *m_readHandle; std::string m_strEnigmaVersion; std::string m_strImageVersion; std::string m_strWebIfVersion; @@ -172,7 +144,6 @@ std::vector m_recordings; std::vector m_groups; std::vector m_locations; - bool m_bInitial; unsigned int m_iClientIndexCounter; PLATFORM::CMutex m_mutex; @@ -181,10 +152,6 @@ bool m_bUpdating; // functions - void StoreChannelData(); - void LoadChannelData(); - bool StoreLastPlayedPositions(); - bool RestoreLastPlayedPositions(); CStdString GetHttpXML(CStdString& url); int GetChannelNumber(CStdString strServiceReference); CStdString GetChannelIconPath(CStdString strChannelName); @@ -221,13 +188,12 @@ int GetChannelsAmount(void); PVR_ERROR GetChannels(ADDON_HANDLE handle, bool bRadio); PVR_ERROR GetEPGForChannel(ADDON_HANDLE handle, const PVR_CHANNEL &channel, time_t iStart, time_t iEnd); + PVR_ERROR GetInitialEPGForChannel(ADDON_HANDLE handle, const VuChannel &channel, time_t iStart, time_t iEnd); + bool GetInitialEPGForGroup(VuChannelGroup &group); int GetCurrentClientChannel(void); int GetTimersAmount(void); PVR_ERROR GetTimers(ADDON_HANDLE handle); PVR_ERROR AddTimer(const PVR_TIMER &timer); - PVR_ERROR SetRecordingLastPlayedPosition(const PVR_RECORDING &recording, int lastplayedposition); - bool SetRecordingLastPlayedPosition(CStdString strStreamURL, int lastplayedposition); - int GetRecordingLastPlayedPosition(const PVR_RECORDING &recording); PVR_ERROR UpdateTimer(const PVR_TIMER &timer); PVR_ERROR DeleteTimer(const PVR_TIMER &timer); bool GetRecordingFromLocation(CStdString strRecordingFolder); @@ -244,5 +210,10 @@ bool SwitchChannel(const PVR_CHANNEL &channel); bool Open(); void Action(); + int ReadLiveStream(unsigned char *pBuffer, unsigned int iBufferSize); + long long SeekLiveStream(long long iPosition, int iWhence /* = SEEK_SET */); + long long PositionLiveStream(void); + long long LengthLiveStream(void); + bool m_bInitialEPG; }; diff -Nru xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.wmc/addon/addon.xml.in xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.wmc/addon/addon.xml.in --- xbmc-pvr-addons-1.0.0~git20140504.0903-2955e1d/addons/pvr.wmc/addon/addon.xml.in 2014-01-28 20:43:50.000000000 +0000 +++ xbmc-pvr-addons-1.0.0~git20140718.0827-a6c2ec7/addons/pvr.wmc/addon/addon.xml.in 2014-07-18 06:05:30.000000000 +0000 @@ -1,12 +1,12 @@ - +