Jump to content

Quad PiP


Gerald Z

Recommended Posts

So wie im WinTV/Quadro?

Momentan behelfe ich mir mit 4 Instanzen, was auch nicht schlecht ist, aber so wäre das eine klasse Sache. 👍🙂

 

Edited by PhoenixFan
Link to comment
Am 14.4.2024 um 15:22 schrieb Gerald Z:

"Quadro Bild im Bild"

 

Was soll das sein bzw. wie sieht das genau aus? Eine Suche im Web liefert mir keine erhellenden Infos dazu.

 

Link to comment

Es ist sicherlich folgendes gemeint:

"Bis zu vier verschiedene unverschlüsselte Fernsehsender über Antenne (DVB-T/DVB-T2 ) oder Kabelfernsehen (DVB-C) gleichzeitig live sehen, pausieren oder aufnehmen"

https://www.hauppauge.de/site/products/data_quadhd.html

Das gleichzeitig live sehen wäre auf jeden Fall eine schöne Spielerei, das gleichzeitige Aufnehmen ist ja im DMS bereits bestens gelöst.

Edited by MaDu
Link to comment

Genau das ist gemeint. Gleichtzig pausieren und aufnehmen bekomme ich mit WinTV nicht hin, obwohl Timeshift Dateien erstellt werden.

Demzufolge nur gleichzeitig 4 Sender wäre schon die Lösung mit DVBViewer...

Link to comment

Das Problem bei der WinTV 10 Lösung, bei mir ist, wenn man das Quad  Bild über das HDMI Kabel auf den TV schiebt, friert es nach kurzer Zeit ein. Letztendlich bleibt nur die Zwangsabschaltung des Rechners. Das ist aber ein generelles Problem bei WinTV und besteht seit vielen Jahren. Das ist schon immer der Grund für meinen Umstieg auf DVBViewer.

Edited by PhoenixFan
Link to comment
Am 15.4.2024 um 15:05 schrieb PhoenixFan:

So wie im WinTV/Quadro? Momentan behelfe ich mir mit 4 Instanzen, was auch nicht schlecht ist,

 

Zwei DVBViewer-Instanzen reichen. Jede mit Bild-in-Bild (konfiguriert auf "In separatem Fenster anzeigen") macht vier TV-Fenster, die unabhängig voneinander positioniert und auf Vollbild geschaltet werden können. Hier zweimal Satellit, einmal DVB-T2, einmal Internet TV schnell auf meinem Desktop zusammengeschustert:

 

Zwischenablage01.jpg

 

Wer zwei Monitore hat, kann sogar mit nur einer Instanz zwei TV-Sender im Vollbild nebeneinander laufen lassen. Das ist auch cool :)

 

Die Implementation des Quadro-Features wäre aufwändig, weil es sich nicht einfach aus etwas bereits im DVBViewer vorhandenem als Erweiterung ableiten lässt. Ich sehe keinen wirklichen Mehrwert bzw. Nutzen neben dem, was der DVBViewer bereits als Bild-in-Bild bietet.

 

Link to comment
vor 2 Stunden schrieb Griga:

Zwei DVBViewer-Instanzen reichen

Wie starte ich eine zweite Instanz? Egal, was ich bisher probiert habe (Explorer, Terminal), es wird immer nur die laufende Instanz aktiviert.

Link to comment
vor 52 Minuten schrieb Ratchet:

Wie starte ich eine zweite Instanz?

 

Du musst manuell eine Kopie deiner DVBViewer-Installation anfertigen und in der Kopie zumindest die Angabe des Konfigurationsordners in der UserMode.ini mit einem Texteditor anpassen. Die Kopie muss zwingend ein anderes Konfigurationsverzeichnis verwenden. Das wesentliche steht im Wiki. Den Start einer zweiten Instanz, die das selbe Konfigurationsverzeichnis wie die erste verwendet, wird aktiv verhindert, da es zu Konflikten führen würde.

 

Hinsichtlich lokaler DVB-Hardware (also an den PC angeschlossenen Tunern) gibt es eine Kommunikation zwischen Anwendungen der DVBViewer-Familie, die verhindert, dass zwei Programme den selben Tuner verwenden. Das gilt auch für gleichzeitig laufende DVBViewer-Instanzen (was im Wiki nicht berücksichtigt ist).

 

Falls der Media Server installiert ist und ebenfalls in einer zweiten Instanz laufen soll: Siehe hier. Zu empfehlen ist dann die Verwendung der aktuellen Beta-Version.

 

Link to comment

Funktioniert :) über den DMS mit eine WinTV-QuadHD.

 

Aber wäre es nicht einfacher, das Konfigurationsverzeichnis der Instanz einfach per Kommandozeilenoption angegeben zu können (oder den Pfad zu einer alternativen usermode.ini)? Dann bräuchte es keine Kopie des gesamten Installationsverzeichnisses, eine zweite Start-Verknüpfung würde dann ausreichen. Damit wäre die Installation (z.B. bei Updates) deutlich einfacher aktuell zu halten, vom benötigten SSD-Platz ganz zu schweigen. Man könnte das sicher auch mit symbolischen NTFS-Links hinpfriemeln, was aber ebenfalls mühsam zu warten wäre.

Link to comment

Ich schwärme auch mal:

Multi User anlegbar in der DMS GUI, Prio der User wie bei den Quellen sortierbar, verschiedene Aufnahmeordner je User oder auch der Gleiche.

 

Ich weiß nicht mit welchem Aufwand das realisierbar wäre, aber das ist es doch wofür ein TVServer da ist, viele verschiedene Nutzer mit TV und Aufnahmemöglichkeit versorgen. Alles über einen User ist für Familien mit Kindern sehr schlecht und die 2. Instanz per Hand reinfummeln zu müssen ist suboptimal und keine gute oder dauerhafte Lösung am Ende.

Link to comment
Am 17.4.2024 um 22:14 schrieb Ratchet:

Aber wäre es nicht einfacher, das Konfigurationsverzeichnis der Instanz einfach per Kommandozeilenoption angegeben zu können (oder den Pfad zu einer alternativen usermode.ini)? Dann bräuchte es keine Kopie des gesamten Installationsverzeichnisses, eine zweite Start-Verknüpfung würde dann ausreichen.

 

Das ist eine interessante Idee, aber wenn man sie weiterdenkt, merkt man bald, wo das Problem liegt: Nicht nur der DVBViewer liest den Pfad zum Konfigurationsverzeichnis aus der UserMode.ini, sondern auch mitgelieferte Tools wie Tweaker.exe oder Resizer.exe, der DVBViewer Filter (PushSource.ax), ganz zu schweigen vom Media Server und seinen Optionen (SvcOptions.exe), diversen Plugins/Add-Ons, TransEdit, TSPlayer... die bekommen allesamt einen an den DVBViewer übergebenen Kommandoparameter nicht mit. Zudem würden die Instanzen DLLs im Programmverzeichnis gemeinsam benutzen. Mit manchen DLLs funktioniert das nicht sauber (insbesondere nicht mit der berüchtigten TbsCIapi.dll und gewissen Plugins.. ;)).

 

Abgesehen davon könnte man schon mittels Kommandoparameter ohne größere Umstände eine zweite DVBViewer-Instanz starten. Schön wäre dann auch, wenn sie automatisch ihr Konfigurationsverzeichnis erzeugen würde, wenn es noch nicht existiert, und Konfigurationsdateien, die sie braucht, aus der ursprünglichen Konfiguration dort hinkopieren würde.

 

Eine andere Idee wäre, jede zusätzliche DVBViewer-Instanz als "Read Only" zu betreiben, d.h. sie darf nicht ins Konfigurationsverzeichnis schreiben, um Zugriffskonflikte zu vermeiden. Aber es wäre einige Arbeit, alle betreffenden Stellen im DVBViewer-Code entsprechend zu modifizieren. Der Aufwand ließe sich eventuell vermeiden, wenn jede weitere Instanz ein automatisch erzeugtes temporäres Konfigurationsverzeichnis benutzt, das sie beim Beenden wieder löscht. Diese Ansätze würden (dauerhafte) zusätzliche Konfigurationsverzeichnisse ersparen.  Aber solche Instanzen könnten natürlich keine dauerhaft abweichenden Einstellungen haben. Und man muss immer damit rechnen, dass das Zusammenspiel solcher Instanzen mit Plugins/Add-Ons nicht richtig funktioniert.

 

DVBViewer & Co sind vom ganzen Konzept her für nur eine laufende Instanz ausgelegt. Bei der Programmierung hat sich nie jemand damit befasst, etwas anderes zu ermöglichen. Die Beschränkung durch Kopien des Programm- und Installationsverzeichnisses zu umgehen, war eine Anwender-Idee, nie ein offizielles Feature, wie auch im Wiki angegeben. Selbst bei dieser Methode funktionieren bestimmte Sachen nicht, siehe hier.

 

Link to comment

P.S. Ich habe mal frechweg im DVBViewer einen neuen Kommandoparameter -new ausprobiert, der die Verhinderung einer weiteren Instanz verhindert. Kurz gesagt kann man damit weitere Instanzen im selben Programmverzeichnis mit dem selben Konfigurationsordner starten. Da droht nun natürlich etwas, zumindest theoretisch:

  • Zugriffskonflikte. Wenn eine Instanz gerade eine Konfigurationsdatei zum Lesen geöffnet hat (z.B. die Senderliste), und die andere will im selben Moment hineinschreiben, oder umgekehrt, oder beide wollen gleichzeitig schreiben, wird es Windows verwehren. Es gibt einen Fehler.

Solche Konflikte sind allerdings nicht sehr warhscheinlich, solange man nicht mehrere Instanzen absolut gleichzeitig startet/beendet oder in beiden gleichzeitig das gleiche tut, denn der DVBViewer öffnet solch Dateien nur kurzzeitig, nicht dauerhaft Aber es droht noch etwas anderes:

  • "Lost Updates": Wenn zwei oder mehr Instanzen nacheinander die selbe Konfigurationsdatei schreiben, überschreiben sie sich gegenseitig Änderungen. Es hängt dann von der Reihenfolge ab (insbesondere auch beim Beenden der Instanzen), was überlebt.

Ich habe es mit bis zu drei Instanzen probiert, die natürlich die selbe setup.xml lesen und deshalb ihre Fenster alle an der gleichen Stelle in gleicher Größe mit dem selben Sender öffnen wollen. Eine Katastrophe hat es dabei nicht gegeben. Solange man mehrere Instanzen nur benutzt, um  mehrere Sender/Videos auf dem Bildschirm zu haben, mag das angehen. Sobald man aber anfängt, im DVBViewer herumzukonfigurieren (z.B. die Sender/Favoriten neu zu sortieren, Aufnahmen zu programmieren...), drohen bei mehreren laufenden Instanzen Datenverluste.

 

Dies zeigt die Bedeutung separater Konfigurationsordner für verschiedene Instanzen. Aber solange es nichts besseres gibt, lasse ich die Möglichkeit erst mal bestehen. Experimentier- und risikofreudige Anwender können sich damit ungehindert ins Unglück stürzen... :)

 

Link to comment

Das Thema hat sich inzwischen vom ursprünglichen Anliegen - nämlich Vierfach-Bild-in-Bild - entfernt. Es geht jetzt allgemein darum, mehrere Fernsehsender gleichzeitig wiederzugeben. Klar ist: Für mehr als zwei Sender muss der DVBViewer in seiner existierenden Form in mehr als einer Instanz laufen. Eine Instanz kann maximal zwei Sender gleichzeitig wiedergeben: Einen im Hauptfenster, den anderen als Bild-in-Bild.

 

Normalerweise verhindert der DVBViewer den Start einer weiteren Instanz, die den selben Konfigurationsordner wie eine bereits laufende verwendet, um Zugriffskonflikte zu vermeiden. Deshalb erfordert eine weitere DVBViewer-Instanz vorbereitende Maßnahmen, die im Wiki beschrieben sind, insbesondere die Erzeugung von Kopien sowohl des Programm- als auch des Konfigurationsverzeichnisses und die Manipulation der Datei UserMode.ini mit einem Texteditor. Ein umständliches Verfahren, das Erfahrung im Umgang mit dem DVBViewer voraussetzt und nach jedem Update womöglich weitere Kopieraktionen nach sich zieht, sowohl nach Installation einer neuen DVBViewer-Version als auch nach Konfigurationsänderungen wie Aktualisierungen der Sender- und Favoritenliste.

 

Deshalb kam von @Ratchet der Vorschlag, es bei einem DVBViewer-Programmordner zu belassen und dem DVBViewer mittels Kommandoparameter einen anderen zu verwendenden Konfigurationsorddner mitzuteilen. So könnten ohne ein Kopieren des Programmverzeichnisses und Manipulation der UserMode.ini weitere DVBViewer-Instanzen starten. Die Idee habe ich hier weiterverfolgt und Punkte aufgezählt, die dabei zu Problemen führen könnten, insbesondere im Hinblick auf Add-Ons und Plugins. Man musss eventuell damit rechnen, dass die Zusammenarbeit mit weiteren DVBViewer-Instanzen nicht wie vorgesehen funktioniert, wenn es nur einen Programmordner gibt.

 

Nichtsdestotrotz war es einen provisorischen Versuch wert, den ich in meinem vorherigen Post beschrieben habe. Ein neuer Kommandoparameter -new erlaubte dem DVBViewer, als zusätzliche Instanz zu starten, wobei ich es auf Zugriffskonflikte in einem gemeinsamen Konfigurationsverzeichnis ankommen ließ. Es zeigte sich, dass dies wegen eher unwahrscheinlichen gleichzeitigen Zugriffen nicht so kritisch ist wie angenommen. Aber auch ein abwechselnder Schreibzugriff mehrerer Instanzen auf die selben Konfigurationsdateien mit gegenseitigem Überschreiben kann zu unerfreulichen Datenverlusten führen. Man muss schon genau aufpassen, was man wann wo macht. Unschön ist weiterhin, dass die Fenster aller Instanzen an gleicher Stelle in gleicher Größe mit dem selben Sender starten.

 

Deshalb nun ein weiterer Versuch, bei dem der Kommandoparameter nicht nur den Start weiterer Instanzen erlaubt, sondern diese auch veranlasst, sich automatisch ein eigenes Konfigurationsverzeichnis einzurichten, sofern es noch nicht existiert, und fehlende Konfigurationsdateien aus dem ursprünglichen Verzeichnis dorthin zu kopieren. Wenn das ursprünglie Konfigurationsverzeichnis CMUV\DVBViewer ist, erzeugt/verwendet eine zweite Instanz automatisch CMUV\DVBViewer_2, eine dritte CMUV\DVBViewer_3 und so weiter. Es wird also die Nummer der Instanz angehängt. Damit braucht der Anwender für mehrere Instanzen keine Verzeichnis-Kopien mehr erzeugen und keine UserMode.ini manipulieren.

 

Und das funktioniert nach ein paar Anpassungen im DVBViewer-Code recht gut. Aber der Teufel steckt wie üblich im Detail :devil::

  • Es gibt Konfigurationsdateien, die zusätzliche Instanzen besser nicht übernehmen sollten. Dazu gehört insbesondere die timers.xml. Es wäre offensichtlich Blödsinn, wenn zwei oder mehr DVBViewer-Instanzen die gleichen programmierten Sendungen aufnehmen.
  • Es gibt Konfigurationsdateien, die eine startende zusätzlichen Instanz vielleicht immer aus der ursprünglichen Konfiguration kopieren sollte, anstatt eigene Ausgaben zu verwalten, auch wenn das Kopieren etwas Zeit kostet, also den Start langsamer macht.
    • Beispiel Sender- und Favoritenliste. Wenn man sie aktualisiert, möchte man vielleicht nicht so gerne jedes Mal die betreffenden Dateien in die Konfigurationsverzeichnisse weiterer Instanzen kopieren, damit sie die Änderungen erben. Allerdings bleiben dann Änderungen in den Sender/Favoritenlisten zusätzlicher Instanzen nicht erhalten. Im Einzelfall kann das Geschmackssache sein. Was tun?
    • Beispiel epg.dat. Es ist anzunehmen, dass die erste Instanz, da häufiger benutzt, EPG-mäßig besser bestückt ist, als seltener laufende zusätzliche Instanzen. Überlegungen dazu erübrigen sich allerdings, wenn sich der DVBViewer den EPG beim Start vom Media Server holt.
  • Wenn eine zusätzliche Instanz ihre eigene setup.xml verwaltet, werden Zusatzprogramme wie Tweaker.exe oder Resizer.exe immer nur die erste Instanz beeinflussen, weil sie nach wie vor den Konfigurationspfad aus der UserMode.ini lesen. Wer Tweaks auf die Konfiguration weiterer Instanzen übertragen will, muss wieder per Hand kopieren, entweder die ganze setup.xml oder einzelne Zeilen daraus.

Trotz einiger Haken scheint die letzte Lösung die bislang beste zu sein, um allgemein (auch eher unerfahrenen Anwendern) die Verwendung mehr als einer DVBViewer-Instanz zu ermöglichen. Wem noch etwas dazu einfällt, soll es bitte posten...

 

Link to comment

Das klingt doch sehr benutzbar. Viele der Probleme mit der geteilten Konfiguration treten vermutlich hauptsächlich bei der reinen DVBViewer-Nutzung ohne DMS auf (Tuner, Timer, EPG). In Kombination mit dem DMS werden die Resourcen (Tuner, Timer, EPG) aber eh vom Server verwaltet werden und damit würden dann alle Viewer-Instanzen diese teilen (so wäre zumindest mein Verständnis), was ja sinnvoll ist. Was man in der Tat dann trotzdem nicht teilen möchte sind spezifische Einstellungen der Viewer-Instanzen wie z.B. die Fensterpositionen.

Ich spekuliere mal, dass die Nutzer mit Bedarf der Anzeige von so vielen gleichzeitigen Sendern haben, sowieso den DMS verwenden.

 

Was mir noch nicht ganz klar ist:

Wenn es nur einen -new Startparameter gibt, woher weiss die Instanz, welches Konfigurationsverzeichnis zu ihr gehört (bei mehreren)? Oder gibt man dann sowas wie -new=2 und -new=3 an und darüber wird dann CMUV\DVBViewer_2 und CMUV\DVBViewer_3 zugeordnet? Oder gibt man dann direkt den Verzeichnisnamen an?

Link to comment
vor 5 Stunden schrieb Ratchet:

Viele der Probleme mit der geteilten Konfiguration treten vermutlich hauptsächlich bei der reinen DVBViewer-Nutzung ohne DMS auf (Tuner, Timer, EPG). In Kombination mit dem DMS werden die Resourcen (Tuner, Timer, EPG) aber eh vom Server verwaltet werden und damit würden dann alle Viewer-Instanzen diese teilen (so wäre zumindest mein Verständnis), was ja sinnvoll ist.

 

Das ist richtig. Schon mit dem kostenlosen Media Server Basic ließen sich die Ressourcen für mehrere DVBViewer-Instanzen auf dem selben PC vorteilhaft zentral verwalten. Allerdings ist der Abruf der aktuellen Sender/Favoritenliste von einem Media Server auf dem selben PC deaktiviert, weil die erste DVBViewer-Instanz ohnehin auf die selben Dateien zugreift (channels.dat & Co.). Für weitere Instanzen könnte ich den Abruf jedoch zulassen, wodurch eine optionale (konfigurierbare) Synchronisation der Sender/Favoritenliste möglich würde.

 

vor 5 Stunden schrieb Ratchet:

Wenn es nur einen -new Startparameter gibt, woher weiss die Instanz, welches Konfigurationsverzeichnis zu ihr gehört (bei mehreren)?

 

Es gibt einen prozessübergreifenden Shared Memory-Bereich, in dem sich laufende Mitglieder der DVBViewer-Familie eintragen, die (potentiell) auf DVB Hardware zugreifen (DVBViewer Pro/GE, Media Server, TransEdit). Sie geben dort an, welche Tuner zur Zeit von ihnen belegt sind, um Konflikten vorzubeugen. Deshalb können neu startende DVBViewer-Instanzen zählen, wie viele bereits laufen. Insgesamt bietet der Datenbereich Platz für 8 Einträge. Wenn der Media Server läuft und noch Platz für TransEdit bleiben soll, reicht er also für 6 DVBViewer-Instanzen.

 

Deshalb ist keine Angabe des Konfigurationsverzeichnisses nötig. Startet man die erste Instanz mit dem -new Parameter, weiß diese auch, dass sie die erste ist, und kann ihn ignorieren.

 

Link to comment
Am 20.4.2024 um 11:41 schrieb Griga:

Aber der Teufel steckt wie üblich im Detail :devil::

 

Mehrere Sender auf dem Bildschirm ist ok, aber der Ton mehrerer Sender gleichzeitig im Lautsprecher eher nicht ;) Es sollte immer nur einer ertönen. Es fehlt eine Kommunikation zwischen den Instanzen, die bestimmt, welche Audio wiedergeben darf bzw. welche nicht. Idealerweise sollte die Instanz, die in den Vordergrund geholt wird (und auch den Eingabefokus bekommt), Audio übernehmen und die anderen stummschalten.

 

Link to comment
vor 23 Stunden schrieb Griga:

Mehrere Sender auf dem Bildschirm ist ok, aber der Ton mehrerer Sender gleichzeitig im Lautsprecher eher nicht ;)

 

Ich schreibe den Blog mal etwas weiter :)

 

Hinsichtlich des im letzten Posts beschriebenen Problems "mehrere Sender gleichzeitig im Lautsprecher" habe ich erst mal dafür gesorgt, dass der DVBViewer beim Start mittels Broadcast alle andere laufenden Instanzen zu "Ton aus" veranlasst. D.h. es läuft nur der Ton der zuletzt gestarteten Instanz. Die Lautstärke der stummgeschalteten Instanzen kann man natürlich manuell wieder ändern, falls man unbedingt x Sender gleichzeitig hören will.

 

Beim automatischen "Ton aus" zuvor gestarteter Instanzen gab es zwei Probleme:

  • Wenn der DVBViewer mit "Ton aus" beendet wird, startet er auch mit "Ton aus", weil er sich das in der setup.xml merkt. Dies war zu verhindern, wenn "Ton aus" von einer andere Instanz veranlasst wurde, weil man kaum DVBViewer-Instanzen haben will, die notorisch stumm bleiben, sofern man es nicht manuell immer wieder ändert.
  • Das Bild-in-Bild-Fenster denkt überhaupt nicht daran, auf die Funktion "Ton aus" im Hauptfenster zu reagieren. Es passiert einfach nichts. Das war zu korrigieren.

Zu überlegen war auch, wie man den Ton zwischen verschiedenen DVBViewer-Instanzen umschaltet. Bei aktivem Bild-in-Bild-Fenster kann man mit der mittleren Maustaste (Mausrad) hineinklicken, um zwischen Bild-in-Bild und Hauptfenster-Audio umzuschalten. Das Prinzip wollte ich fortsetzen: Ein Klick mit der mittleren Maustaste in ein Fernsehbild (welcher DVBViewer-Instanz auch immer, egal ob Hauptfenster oder Bild-in-Bild) schaltet den dazugehörigen Ton ein und gleichzeitig alle woanders wiedergebenen Sender stumm.

 

Aber leider, leider ist der Mausrad-Klick in das DVBViewer-Hauptfenster standardmäßig mit der Funktiom "OSD Menü" belegt - siehe Einstellungen -> Optionen -> OSD Maus -> Funktion der mittleren Maustaste. Nur wenn man dort "Keine" einstellt, funktioniert es so schön einheitlich, wie ich es mir wünsche. Dafür gibt es noch keine Lösung.

 

Nebenbei hat sich eine Verbesserung bei Bild-in-Bild ergeben. Bislang ist es so, dass Bild-in-Bild immer mit dem im Hauptfenster wiedergegebenen Sender startet, wenn man die Funktion ohne Angabe eines Senders aktiviert (z.B. im TV/Radio-Menü). Das ist reichlich sinnfrei - zweimal den selben Sender will man ja nicht unbedingt sehen. Deshalb merkt sich der DVBViewer nun den zuletzt als Bild-in-Bild angezeigten Sender (ebenso wie den im Hauptfenster) und setzt dessen Wiedergabe bei Aktivierung von Bild-in-Bild fort, sofern man dafür nicht explizit einen anderen Sender auswählt (z.B. via Rechtsklick-Kontextmenü der Senderliste). Nur wenn der letzte Bild-in-Bild-Sender nicht verfügbar ist, weil ein geeigneter Tuner fehlt, fällt der DVBViewer in seine alten Gewohnheiten zurück.

 

  • Like 1
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...