From 9eb107e0b73ebdc46e1f126d8612961fed28a19b Mon Sep 17 00:00:00 2001 From: Andreas Brachold <vdr07@deltab.de> Date: Sun, 29 Jan 2006 19:05:18 +0000 Subject: - Add service wrapper - Remove unnecessary DVBDIR from Makefile - Rename README.de to LIESMICH --- HISTORY | 7 ++ LIESMICH | 202 +++++++++++++++++++++++++++++++++++++++++++++++++++++ Makefile | 3 +- README.DE | 202 ----------------------------------------------------- image.c | 54 +++++++++++++- liboutput/Makefile | 2 - 6 files changed, 263 insertions(+), 207 deletions(-) create mode 100644 LIESMICH delete mode 100644 README.DE diff --git a/HISTORY b/HISTORY index 6c05976..18933bc 100644 --- a/HISTORY +++ b/HISTORY @@ -1,6 +1,13 @@ VDR Plugin 'image' Revision History ----------------------------------- +2006-01-29 +- Remove unnecessary DVBDIR from Makefile +- Rename README.de to LIESMICH + +2006-01-27 +- Add service wrapper. (provided by Holger Brunn) + 2006-01-22 - Updated Spanish translations. (Thanks to Jes�s Bravo �lvarez) diff --git a/LIESMICH b/LIESMICH new file mode 100644 index 0000000..8a72561 --- /dev/null +++ b/LIESMICH @@ -0,0 +1,202 @@ +This is a "plugin" for the Video Disk Recorder (VDR). + +Originaly written by: Kai Tobias Burwieck <kai-at-burwieck.net> + "Interpohl" <vdr-portal.de> + Onno Kreuzinger <o.kreuzinger-at-kreuzinger.biz> + Andreas Brachold <anbr at users.berlios.de> + +Former project's homepage: http://www.burwieck.net/vdr (dead?) + http://vdr-image.kreuzinger.biz> + +Maintainer: Andreas Brachold <anbr at users.berlios.de> + +Project homepage: http://vdr-image.berlios.de/ + +Einige Dateien stammen vom mp3/MPlayer Plugin, der danke geht an Stefan H�lswitt + + +Ben�tigt: +----------- +- Full-Featured DVB Karte +- vdr 1.3.38+ +- das Plugin ist abh�ngig vom folgenden Paketen + + ffmpeg (getestet mit ffmpeg-0.4.8/ffmpeg-0.4.9pre1/ffmpeg-cvs) + http://ffmpeg.sourceforge.net + + libexif-0.6.13 (siehe unten, f�r Kompilieren ohne diese) + http://libexif.sourceforge.net/ + + zur Ausf�hrung wird auch das Paket netpbm ben�tigt + http://netpbm.sourceforge.net/ + netpbm 10.0+ (pr�fe ob das Tool "anytopnm" existiert) + + nicht notwendig, aber sinnvoll utils/file (file) f�r bessere Bildtyperkennung + dieses Tool wird vom Skript anytopnm genutzt + ftp://ftp.astron.com/pub/file + +WICHTIG, +wenn Tools von Source installiert werden, unbedingt auch daf�r sorgen das +die Programme (anytopnm pnmscale pnmfile pnmcut pnmflip) innerhalb des Such-Pfade liegen, +ansonsten die Variable "PATH" innerhalb der Datei imageplugin.sh anpassen. + +Installation: +------------------ +Das Plugin wird wie alle Plugins installiert (siehe im Zweifel in vdr Dokumentation nach). +Es wird ein voll Quellcodebaum des vdr ben�tigt, um diese Plugin zu kompilieren. +Kopiere die Quellen in das vorgegebene Verzeichnis, wie unten aufgef�hrt.. + + cd $VDRSOURCE/PLUGINS/src + tar -xzvf vdr-image-x.x.x.tgz + ln -s image-x.x.x image + +Das Kompilieren ist abh�ngig vom Paket ffmpeg, libexif, und sp�ter zum Ausf�hren +wird noch das Paket "netpbm" ben�tigt. + + ffmpeg �bersetzen + $ configure --enable-shared && make && make install + + libexif �bersetzen + $ configure && make && make install + + �bersetzen des Plugin + + $ cd $VDRSOURCE + $ make plugins + + oder wenn ben�tigt, definiere das ffmpeg source Verzeichnis �) + das ist notwendig, wenn ffmpeg ohne "--enable-shared" �bersetzt wurde. + + $ make plugins FFMDIR=/usr/src/ffmpeg-cvs + + Kompilieren ohne libexif �) + + $ make plugins WITHOUT_LIBEXIF=1 + + Installieren des Plugins + + $ make plugins-install + + +�) �bersetzungsoptionen k�nnen auch innerhalb $VDRSOURCE/Make.config definiert + werden + + + +Im ./examples Ordner liegt eine Beispieldatei imagesources.conf, dies ggf. +anpassen und in das Verzeichnis plugins Verzeichnis des config Ordners legen. + +Die Syntax der Datei ist: +<Pfad>;<Name im vdr Menu>;<0/1>;<Suchmuster f�r Dateien die angezeigt werden sollen> + +Beispiele: +/media/cdrom;CDROM;1;*.jpg *.jpeg *.png *.tif* *.bmp +/archive/photos/holiday;Urlaubs Bilder;0;DSC10*.jpg + +0/1 ist f�r Quellen die gemountet werden m�ssen (benutzt das gleiche mount.sh wie +das mplayer/mp3 plugin). +gefolgt mit einer Liste des Suchmuster f�r Dateien welche angezeigt werden sollen, +welche dann jeweils mit Leerzeichen getrennt werden. + +Die Datei imageplugin.sh sollte nach /usr/bin kopiert werden, bzw. in einen anderen +gemeinsamen Ordner innerhalb Such-Path kopieren werden, +alternativ k�nnen als Kommandozeilenoption die gew�hlten Pfade zu dem Skript +beim vdr Start �bergeben werden. +[z.B.: ./vdr '-Pimage -C /usr/local/bin/imageplugin.sh -m /usr/local/bin/mount.sh' ...] + +Alle Plugin Optionen : + + -m CMD, --mount=CMD verwendetes CMD f�r mount/unmount/eject der Bildquellen + (default: "mount.sh") + -C CMD, --convert=CMD verwendetes CMD fpr die Konvertieren der Bilder + (default: "imageplugin.sh") + -c PATH, --config=PATH zum spezifizieren des Verzeichnisses der Konfigurationsdateien + relativ zum VDR Plugin Konfiguration-Verzeichnis + (default: "" ) + +Bedienung: +----------------- +Nach dem Aufrufen entweder eine Datei oder einen Ordner ausw�hlen und mit OK w�hlen. + +At all modi + OK toggle OSD informations + Play/Pause Starte Diaschau/ Stoppe Diaschau + Stop/Blue Stoppe Plugin + +W�hrend der Bildbetrachtung: + Back Stoppe Plugin + Red �ffne Menu mit Bildbefehle + Info Zeige Exif-Informationen + + Left vorheriges Bild + Right n�chstes Bild + Down Springe drei Bilder zur�ck + Up Springe drei Bilder vorw�rts + + 7 Springe f�nf Bilder zur�ck + 9 Springe f�nf Bilder vorw�rts + + 0 Zeige Originalbild + + 1 Drehe 90 Grad gegen den Uhrzeigersinn + 3 Drehe 90 Grad im Uhrzeigersinn + + 4 Diaschau-WeiterschaltwertinSekundenverkleinern + 6 Diaschau-WeiterschaltwertinSekundenerh�hen + + 5 "Zoomwert erh�hen" und damit Zoom-Bedienung starten + 8 "Zoomwert verkleinern" und damit Jump-Bedienung starten + +'Zoom-Bedienung' + Back Zoomwert verkleinern + Red �ffne Menu mit Bildbefehle + Info Zeige Exif-Informationen + + Left Bildausschnitt nach Links verschieben + Right Bildausschnitt nach Rechts verschieben + Down Bildausschnitt nach Unten verschieben + Up Bildausschnitt nach Oben verschieben + + 0 view original image + 5 Zoomwert erh�hen + 8 Zoomwert verkleinern + +Jump-Menu (3x3 Vorschau): + Back Zeige Originalbild + + Left vorherige Bildgruppe (9 Bilder weiter in der Vorschau) + Right n�chste Bildgruppe (9 Bilder vorher in der Vorschau) + + 0 Zeige Originalbild + 1 ... 9 W�hlt ensprechendes Bild + +Bildbefehle +------------ +Die Datei imagecmds.conf kann dazu genutzt werden, um definierbare Befehle auf +auf das an gezeigte Bild anzuwenden. Der Syntax ist extakt der gleiche der +f�r die Datei commands.conf unter "man 5 vdr" beschrieben wurde. +Wenn nur ein Befehl angegeben wird, wird der Datei des Bildes angeh�ngt an den Befehlstext, +getrennt durch ein Leerzeichen und einschlossen in Anf�hrungszeichen (single quotes). + +Format> Menutext ?: Kommando %s +? - Best�tigung anfordern, (optional) +%s - Platzhalter f�r Dateinamen (optional) + +Schaue f�r ein Beispiel nach examples/imagecmds.conf.DE . + + +Diagnose des Script +------------------- +Wenn der Script nicht arbeitet wie er sollten, starte den Script zum Testen von der Konsole. + +imageplugin.sh [infile] [outfile] [WIDTH] [HEIGHT] [ZOOMFACTOR] [LEFTPOS] [TOPPOS] {FLIPCMD} +z.B. imageplugin.sh myimage.png outfile.pnm 720 576 0 0 0 original + +und bitte �berpr�fe die erzeugten Nachrichten im Syslog in /var/log/message bzw. +die Ausgaben auf dem Bildschirm + + +wenn das nicht hilft wiederhole die Prozedur mit > export DEBUG=yes; + +export DEBUG=yes;imageplugin.sh myimage.png outfile.pnm 720 576 0 0 0 original + +und �berpr�fe die Ausgabe auf dem Bildschirm. + +*) Wenn der Script f�r dich arbeitet, es k�nnen die Ausgaben im Syslog reduziert werden, +wenn Du innerhalb von imageplugin.sh die Zeile von VERBOSE=yes zu VERBOSE=no ge�ndert wird. diff --git a/Makefile b/Makefile index 93c13a3..07e1b9b 100644 --- a/Makefile +++ b/Makefile @@ -42,7 +42,6 @@ CXXFLAGS ?= -fPIC -O2 -Wall -Woverloaded-virtual ### The directory environment: -DVBDIR = ../../../../DVB VDRDIR = ../../.. LIBDIR = ../../lib TMPDIR = /tmp @@ -86,7 +85,7 @@ DEFINES += -DPLUGIN_NAME_I18N='"$(PLUGIN)"' DEFINES += -D_GNU_SOURCE LIBS += liboutput/liboutput.a libimage/libimage.a -INCLUDES += -I$(VDRDIR)/include -I$(DVBDIR)/include -I. +INCLUDES += -I$(VDRDIR)/include -I. ifdef FFMDIR INCLUDES += -I$(FFMDIR)/libavcodec -I$(FFMDIR)/libavutil diff --git a/README.DE b/README.DE deleted file mode 100644 index 8a72561..0000000 --- a/README.DE +++ /dev/null @@ -1,202 +0,0 @@ -This is a "plugin" for the Video Disk Recorder (VDR). - -Originaly written by: Kai Tobias Burwieck <kai-at-burwieck.net> - "Interpohl" <vdr-portal.de> - Onno Kreuzinger <o.kreuzinger-at-kreuzinger.biz> - Andreas Brachold <anbr at users.berlios.de> - -Former project's homepage: http://www.burwieck.net/vdr (dead?) - http://vdr-image.kreuzinger.biz> - -Maintainer: Andreas Brachold <anbr at users.berlios.de> - -Project homepage: http://vdr-image.berlios.de/ - -Einige Dateien stammen vom mp3/MPlayer Plugin, der danke geht an Stefan H�lswitt - - -Ben�tigt: ------------ -- Full-Featured DVB Karte -- vdr 1.3.38+ -- das Plugin ist abh�ngig vom folgenden Paketen - + ffmpeg (getestet mit ffmpeg-0.4.8/ffmpeg-0.4.9pre1/ffmpeg-cvs) - http://ffmpeg.sourceforge.net - + libexif-0.6.13 (siehe unten, f�r Kompilieren ohne diese) - http://libexif.sourceforge.net/ - + zur Ausf�hrung wird auch das Paket netpbm ben�tigt - http://netpbm.sourceforge.net/ - netpbm 10.0+ (pr�fe ob das Tool "anytopnm" existiert) - + nicht notwendig, aber sinnvoll utils/file (file) f�r bessere Bildtyperkennung - dieses Tool wird vom Skript anytopnm genutzt - ftp://ftp.astron.com/pub/file - -WICHTIG, -wenn Tools von Source installiert werden, unbedingt auch daf�r sorgen das -die Programme (anytopnm pnmscale pnmfile pnmcut pnmflip) innerhalb des Such-Pfade liegen, -ansonsten die Variable "PATH" innerhalb der Datei imageplugin.sh anpassen. - -Installation: ------------------- -Das Plugin wird wie alle Plugins installiert (siehe im Zweifel in vdr Dokumentation nach). -Es wird ein voll Quellcodebaum des vdr ben�tigt, um diese Plugin zu kompilieren. -Kopiere die Quellen in das vorgegebene Verzeichnis, wie unten aufgef�hrt.. - - cd $VDRSOURCE/PLUGINS/src - tar -xzvf vdr-image-x.x.x.tgz - ln -s image-x.x.x image - -Das Kompilieren ist abh�ngig vom Paket ffmpeg, libexif, und sp�ter zum Ausf�hren -wird noch das Paket "netpbm" ben�tigt. - - ffmpeg �bersetzen - $ configure --enable-shared && make && make install - - libexif �bersetzen - $ configure && make && make install - - �bersetzen des Plugin - - $ cd $VDRSOURCE - $ make plugins - - oder wenn ben�tigt, definiere das ffmpeg source Verzeichnis �) - das ist notwendig, wenn ffmpeg ohne "--enable-shared" �bersetzt wurde. - - $ make plugins FFMDIR=/usr/src/ffmpeg-cvs - - Kompilieren ohne libexif �) - - $ make plugins WITHOUT_LIBEXIF=1 - - Installieren des Plugins - - $ make plugins-install - - -�) �bersetzungsoptionen k�nnen auch innerhalb $VDRSOURCE/Make.config definiert - werden - - - -Im ./examples Ordner liegt eine Beispieldatei imagesources.conf, dies ggf. -anpassen und in das Verzeichnis plugins Verzeichnis des config Ordners legen. - -Die Syntax der Datei ist: -<Pfad>;<Name im vdr Menu>;<0/1>;<Suchmuster f�r Dateien die angezeigt werden sollen> - -Beispiele: -/media/cdrom;CDROM;1;*.jpg *.jpeg *.png *.tif* *.bmp -/archive/photos/holiday;Urlaubs Bilder;0;DSC10*.jpg - -0/1 ist f�r Quellen die gemountet werden m�ssen (benutzt das gleiche mount.sh wie -das mplayer/mp3 plugin). -gefolgt mit einer Liste des Suchmuster f�r Dateien welche angezeigt werden sollen, -welche dann jeweils mit Leerzeichen getrennt werden. - -Die Datei imageplugin.sh sollte nach /usr/bin kopiert werden, bzw. in einen anderen -gemeinsamen Ordner innerhalb Such-Path kopieren werden, -alternativ k�nnen als Kommandozeilenoption die gew�hlten Pfade zu dem Skript -beim vdr Start �bergeben werden. -[z.B.: ./vdr '-Pimage -C /usr/local/bin/imageplugin.sh -m /usr/local/bin/mount.sh' ...] - -Alle Plugin Optionen : - - -m CMD, --mount=CMD verwendetes CMD f�r mount/unmount/eject der Bildquellen - (default: "mount.sh") - -C CMD, --convert=CMD verwendetes CMD fpr die Konvertieren der Bilder - (default: "imageplugin.sh") - -c PATH, --config=PATH zum spezifizieren des Verzeichnisses der Konfigurationsdateien - relativ zum VDR Plugin Konfiguration-Verzeichnis - (default: "" ) - -Bedienung: ------------------ -Nach dem Aufrufen entweder eine Datei oder einen Ordner ausw�hlen und mit OK w�hlen. - -At all modi - OK toggle OSD informations - Play/Pause Starte Diaschau/ Stoppe Diaschau - Stop/Blue Stoppe Plugin - -W�hrend der Bildbetrachtung: - Back Stoppe Plugin - Red �ffne Menu mit Bildbefehle - Info Zeige Exif-Informationen - - Left vorheriges Bild - Right n�chstes Bild - Down Springe drei Bilder zur�ck - Up Springe drei Bilder vorw�rts - - 7 Springe f�nf Bilder zur�ck - 9 Springe f�nf Bilder vorw�rts - - 0 Zeige Originalbild - - 1 Drehe 90 Grad gegen den Uhrzeigersinn - 3 Drehe 90 Grad im Uhrzeigersinn - - 4 Diaschau-WeiterschaltwertinSekundenverkleinern - 6 Diaschau-WeiterschaltwertinSekundenerh�hen - - 5 "Zoomwert erh�hen" und damit Zoom-Bedienung starten - 8 "Zoomwert verkleinern" und damit Jump-Bedienung starten - -'Zoom-Bedienung' - Back Zoomwert verkleinern - Red �ffne Menu mit Bildbefehle - Info Zeige Exif-Informationen - - Left Bildausschnitt nach Links verschieben - Right Bildausschnitt nach Rechts verschieben - Down Bildausschnitt nach Unten verschieben - Up Bildausschnitt nach Oben verschieben - - 0 view original image - 5 Zoomwert erh�hen - 8 Zoomwert verkleinern - -Jump-Menu (3x3 Vorschau): - Back Zeige Originalbild - - Left vorherige Bildgruppe (9 Bilder weiter in der Vorschau) - Right n�chste Bildgruppe (9 Bilder vorher in der Vorschau) - - 0 Zeige Originalbild - 1 ... 9 W�hlt ensprechendes Bild - -Bildbefehle ------------- -Die Datei imagecmds.conf kann dazu genutzt werden, um definierbare Befehle auf -auf das an gezeigte Bild anzuwenden. Der Syntax ist extakt der gleiche der -f�r die Datei commands.conf unter "man 5 vdr" beschrieben wurde. -Wenn nur ein Befehl angegeben wird, wird der Datei des Bildes angeh�ngt an den Befehlstext, -getrennt durch ein Leerzeichen und einschlossen in Anf�hrungszeichen (single quotes). - -Format> Menutext ?: Kommando %s -? - Best�tigung anfordern, (optional) -%s - Platzhalter f�r Dateinamen (optional) - -Schaue f�r ein Beispiel nach examples/imagecmds.conf.DE . - - -Diagnose des Script -------------------- -Wenn der Script nicht arbeitet wie er sollten, starte den Script zum Testen von der Konsole. - -imageplugin.sh [infile] [outfile] [WIDTH] [HEIGHT] [ZOOMFACTOR] [LEFTPOS] [TOPPOS] {FLIPCMD} -z.B. imageplugin.sh myimage.png outfile.pnm 720 576 0 0 0 original - -und bitte �berpr�fe die erzeugten Nachrichten im Syslog in /var/log/message bzw. -die Ausgaben auf dem Bildschirm - - -wenn das nicht hilft wiederhole die Prozedur mit > export DEBUG=yes; - -export DEBUG=yes;imageplugin.sh myimage.png outfile.pnm 720 576 0 0 0 original - -und �berpr�fe die Ausgabe auf dem Bildschirm. - -*) Wenn der Script f�r dich arbeitet, es k�nnen die Ausgaben im Syslog reduziert werden, -wenn Du innerhalb von imageplugin.sh die Zeile von VERBOSE=yes zu VERBOSE=no ge�ndert wird. diff --git a/image.c b/image.c index 29a45a6..6ddca0f 100644 --- a/image.c +++ b/image.c @@ -32,6 +32,7 @@ #include "setup-image.h" #include "data-image.h" #include "menu-image.h" +#include "control-image.h" #include "i18n.h" #include "commands.h" #include "liboutput/encode.h" @@ -41,7 +42,11 @@ static const char *DESCRIPTION = "A Image Viewer plugin"; static const char *MAINMENUENTRY = "Image"; class cPluginImage : public cPlugin { + cDirItem* m_pServiceDirItem; + cFileSource* m_pServiceFileSource; + public: + cPluginImage(); virtual ~cPluginImage(); virtual const char *Version(void) { return VERSION; } virtual const char *Description(void) { return tr(DESCRIPTION); } @@ -52,7 +57,10 @@ public: virtual cOsdMenu *MainMenuAction(void); virtual cMenuSetupPage *SetupMenu(void); virtual bool SetupParse(const char *Name, const char *Value); - }; + virtual bool Service(const char *Id, void *Data); +private: + void RemoveServiceSource(); +}; bool cPluginImage::SetupParse(const char *szName, const char *szValue) { @@ -117,11 +125,30 @@ bool cPluginImage::Start(void) return true; } +cPluginImage::cPluginImage() +{ + m_pServiceDirItem = NULL; + m_pServiceFileSource = NULL; +} + cPluginImage::~cPluginImage() { cEncode::UnRegister(); + RemoveServiceSource(); } +void cPluginImage::RemoveServiceSource() +{ + if(m_pServiceDirItem) { + delete m_pServiceDirItem; + m_pServiceDirItem = NULL; + } + if(m_pServiceFileSource) + { + delete m_pServiceFileSource; + m_pServiceFileSource = NULL; + } +} cOsdMenu *cPluginImage::MainMenuAction(void) { @@ -133,5 +160,30 @@ cMenuSetupPage *cPluginImage::SetupMenu(void) return new cMenuSetupImage; } +bool cPluginImage::Service(const char *Id, void *Data = NULL) +{ + if (Id && strcmp(Id, "Image-ShowImage-v1.0") == 0) { + if (Data == NULL) + return true; + char* Basedir=strdup((char*)Data); + char* Name=strrchr(Basedir, '/'); + if(Name==NULL) + return false; + *Name++='\0'; + RemoveServiceSource(); + m_pServiceFileSource=new cFileSource(Basedir, "called via Service()", false); + m_pServiceDirItem=new cDirItem(m_pServiceFileSource, NULL, Name, itFile); + cSlideShow *newss = new cSlideShow(m_pServiceDirItem); + free(Basedir); + if(newss->Load() && newss->Count()) { + cImageControl::SetSlideShow(newss); + return true; + } + delete newss; + RemoveServiceSource(); + } + return false; +} + VDRPLUGINCREATOR(cPluginImage); // Don't touch this! diff --git a/liboutput/Makefile b/liboutput/Makefile index 142e784..126cfc8 100644 --- a/liboutput/Makefile +++ b/liboutput/Makefile @@ -4,8 +4,6 @@ # $Id$ VDRDIR = ../../../.. -DVBDIR = ../../../../../DVB -#FFMDIR = ../../../../../ffmpeg ### The C++ compiler and options: -- cgit v1.2.3