Na ja, es müsste schon jemand sein, der auch ne Menge Zeit investieren kann. Der ivtv Treiber verändert sich z.Z. täglich.
ivtv 07 und kernel 2.6.17 klappt nicht
- ilmusy
- Geschlossen
-
-
Zitat
Original von Dr. Seltsam
Der Abschnitt bool MpegRecorder::SetIVTVDeviceOptions(int chanfd) ist für den alten Treiber, während in bool MpegRecorder::SetV4L2DeviceOptions(int chanfd) das ganze auf das neue v4l2 angepasst wurde.
Man braucht m.E. gar nicht alle der heutigen pvrinput-Einstellungsmöglichkeiten (es läuft mit den default-Werten des Treibers erstaunlich gut!), aber eine Anpassung der Videobitrate und des Rauschfilters sollte schon möglich sein. Nicht alles ist in mythtv möglich, aber die videodev2.h gibt einen Eindruck, was sich einstellen lässt:Falls Du also eine Beschäftigung suchst
Ich habs mir mal angeschaut; alle neuen ioctls lassen sich sehr gut integrieren, der Funktionsumfang ist dann wie bisher nur die Filter werden ein wenig umfangreicher, der median Filter (was auch immer der tut..) kommt dazu.
Die ioctls werden so integriert, wie du es vom Prinzip her oben schon richtig angefangen hast. Sinnvoll ist dann aber auch ne Bereichsüberprüfung mit nem VIDIOC_QUERYCTRL, um Fehler beim Zuweisen zu vermeiden.
Das Problem ist nur, dass nicht viel vom originalen Quelltext von pvrinput übrigbleibt, wenn man auf die neuen ioctls umstellt. Zumindest ist das nicht mehr ein simpler Dreizeiler als Patch:
- ivtv.h muss raus aus dem Quellcode
- bool cPvrDevice::SetCodec(void) muss ersetzt werden
- SetPicture und SetVolume ditoDie alten ioctls zu unterstützen macht dann aber IMHO auch keinen echten Sinn mehr.
Ich könnte bei Bedarf nen ersten Patch als Diskussionsgrundlage anbieten, aber es müsste jemand mit mehr Programmiererfahrung drüber schaun, so ist das noch zu 'wild'. -
Hallo Wirbel,
prima, dass Du Dir die Zeit genommen hast!
Solange sich niemand mit "mehr Programmiererfahrung" -oder gar ein neuer Maintainer- findet, wirst Du hier wohl die maßgebliche Authorität sein müssen
Ich denke, es macht aufgrund der vielen Änderungen im Treiber keinen Sinn, eine abwärtskompatible Version zu bauen. Das Hauptproblem ist derzeit, einen funktionierenden ivtv-Treiber zu bauen, der die erforderlichen Änderungen enthält. Ich habe inzwischen einen 2.6.18-rc7 gebaut, und weder v4l-dvb +ivtv-trunk noch Kerneltreiber + ivtv-0.8-CVS laden ohne unresolved symbols. Aber das wird schon noch ...
Lass doch Deine überarbeiteten sourcen mal sehen - kannst sie mir ja mal zumailen.Hast Du eigentlich mal diesen Thread verfolgt:
ivtv + Flackern (PVR250/350)Die von samc beschriebenen Änderungen haben mein Flackerproblem nachhaltig gelöst!
Gruß
Dr. Seltsam -
Abgesehen von ivtv trunk, das man bis auf weitere Nachricht von Hans Verkuil, nicht benutzen sollte, bauhen hier bei mir eigentlich alle möglichen Kombinationen.
Ich benutze im Moment 2.6.17.x + v4l-dvb hg + ivtv branches/0.8, habe aber auch ivtv branches/0.8 gegen 2.6.18-rc6 gebaut und benutzt. V4l-dvb hg hat eine angenehme Funktion v4l und ivtv virtuell zu mergen. Es funktioniert leider im Moment nur mit zwei kleinen Änderungen.
1. muss in v4l/Makefile im Ziel ivtv-up /trunk durch /branches/0.8 ersetzt werden
2. in v4l/Makefile.IVTV muss vtv-reset.o entfernt werdenmake ivtv-up check dann ivtv aus dem subverion repository aus und merge ivtv dann in v4l
Die einfachste Art der Portierung, einfach die IVTV ioctls durch entsprechende extended controls zu ersetzen, ist schnell gemacht. Rückwärtskompatibilität ist auch einfach zu erreichen. Man schreibt neue Funktionen und ruft beide auf. So habe ich es auch in MythTV gelöst. Wobei Rückwärtskompatibilität bei einem Plugin siccherlich nicht so wichtig ist, wie in MythTV.
Bei der Portirung muss man etwas aufpassen, da die Werte in entsprechenden enums nicht immer gleich sind.Eine vernünftige Portierung sollte natürlich die query controls benutzen.
Janne
-
Ich habe z.Z. kein Flackerproblem, dsewegen hab ichs nicht verfolgt.
Ich glaube aber, dass samc's Lösung bestenfalls ein workaround ist, der mit den nächsten Versionen wieder hinfällig werden wird.Ich schick dir mal ne pn mit nem Link wo du dirs runterladen kannst.
Aber betrachte das bitte nur als ne Diskussionsgrundlage, ich hab nicht die Absicht, da powarman ins Handwerk zu pfuschen.jannex:
Abwärtskompatibilität halte ich für verzichtbar, da (hoffentlich) ivtv irgendwann fest im Kernel ist. Dann werden viele auf die im Kernel integrierten Treiber zurückgreifen.
Die Abfrage mit queries halte ich für unverzichtbar, schon deswegen weil mehr und mehr unterschiedliche Karten zum Einsatz kommen. -
Die Abwärtskompatibilität ist für das plugin bei weitem nicht so wichtig wie für MythTV. Beim Plugin ist es zumutbar eine ältere Version einzusetzen, bei MythTV nicht.
IVTV wird hoffentlich in Kernel 2.6.19 enthalten sein, dass war zumindest der ursprüngliche Plan. Hans schraub zur Zeit ziemlich stark an ivtv trunk wegen der DMA-Probleme herum, aber ich denke er könnte es durchaus bis 2.6.19 schaffen. Wenn nicht, dann halt 2.6.20.
Mit den query controls sehe ich es auf lange Sicht genauso. Zur Zeit sind sie aber noch nicht so wichtig, da alle Karten, die mpeg encoding api unterstützen, auf dem cx2341x beruhen.
-
Zitat
Original von wirbel
Ich schick dir mal ne pn mit nem Link wo du dirs runterladen kannst.
Aber betrachte das bitte nur als ne Diskussionsgrundlage, ich hab nicht die Absicht, da powarman ins Handwerk zu pfuschen.
hab Dir gerade eine PM gechrieben - funzt prima! Um powarman würde ich mir keine Gedanken machen, der hat mit dem pvrinput-Plugin offenbar vollständig abgeschlossen.jannex.
Du bist mein retter - habe nun endlich einen mit v4l-dvb funktionierenden ivtv-Treiber bauen können.
War aber etwas anders, als von Dir beschrieben. So habe ich v4l/Makefile geändert:Code
Alles anzeigen################################################# # IVTV link rules ivtv-checkout:: @if [ ! -d ivtv ]; then \ echo retrieving the latest ivtv sources from ivtvdriver.org; \ echo this step requires subversion to be installed; \ svn co http://ivtvdriver.org/svn/ivtv/branches/0.8 ivtv; \ fi ivtv-update ivtv-up:: ivtv @svn up ivtv ivtv-links:: ivtv-checkout @echo creating ivtv symbolic links... @find ivtv/driver -name '*.[ch]' -type f -exec ln -sf '{}' . \; @find ivtv/i2c-drivers -name '*.[ch]' -type f -exec ln -sf '{}' . \; ivtv:: ivtv-links @echo '#define IVTV_DRIVER_VERSION_COMMENT ' \ '"(v4l-dvb + ivtv virtual merge)' \ "`svn info ivtv | grep Revision`"'"' > ivtv-svnversion.h @echo ivtv 0.8 merged. Run make to build the entire tree.
und natürlich in v4l/Makefile.ivtv
-
Moin!
Ich kann zwar programmieren (zumindest verdiene ich mein Geld damit), hab allerdings noch nie in ein vdr-Plugin bzw. in Linux-Kernel-Module reingeschaut. Und da ich selbst eine PVR150 habe, hab ich Interesse daran, dass es mit dem Ding weitergeht, weil ich zu den Leuten gehöre, die das Flackerproblem haben.
Wenn mir jemand verrät, wo ich aktuelle Sourcen zum pvrinput bekomme, werde ich mal versuchen, mich in die Materie einzuarbeiten.
Was sollte ich noch lesen, um ein vdr-plugin zu verstehen? Was für eine Distribution sollte ich als Entwicklungsumgebung benutzen? Ich hab kein Problem mit vi und Kommandozeile...
mini.
-
Zitat
Original von mini73
Moin!Ich kann zwar programmieren (zumindest verdiene ich mein Geld damit), hab allerdings noch nie in ein vdr-Plugin bzw. in Linux-Kernel-Module reingeschaut. Und da ich selbst eine PVR150 habe, hab ich Interesse daran, dass es mit dem Ding weitergeht, weil ich zu den Leuten gehöre, die das Flackerproblem haben.
Wenn mir jemand verrät, wo ich aktuelle Sourcen zum pvrinput bekomme, werde ich mal versuchen, mich in die Materie einzuarbeiten.
Was sollte ich noch lesen, um ein vdr-plugin zu verstehen? Was für eine Distribution sollte ich als Entwicklungsumgebung benutzen? Ich hab kein Problem mit vi und Kommandozeile...
mini.
Was du brauchst ist ein System mit sehr aktuellem Kernel (2.6.18-rcXX) + v4l-hg + ivtv>=0.8. Vorher brauchst du gar nicht anzufangen, da sich gerade sämtliche ioctls von ivtv ändern und nur noch ivtv-0.8 mit aktuellen Kerneln läuft. Die allerersten Schritte wären also Compiler installieren, aktuellen Kernel, aktuellen v4l-hg DVB Treiber und dazu den passenden ivtv zum Laufen bringen.
Erst danach macht es Sinn weiterzumachen: im sourcecode des vdr selbst PLUGINS.html lesen und erst dann in die Sourcen von pvrinput einsteigen. Die letzten mit bekannten offiziellen Sourcen sind pvrinput-0.1.1-pre1 auf powarmans Seite.
Wie du liest haben Dr Seltsam und ich schon mal etwas Vorarbeit zu den nötigen Änderungen getan, aber es fehlt ein 'offizieller' maintainer/Ansprechpartner von pvrinput, nachdem powarman die Sache wohl nicht mehr weiter verfolgt.
-
Zitat
Original von wirbel
Die letzten mit bekannten offiziellen Sourcen sind pvrinput-0.1.1-pre1 auf powarmans Seite.
ups, es gab per 30.04.06 eine offizielle 0.1.1:
http://home.arcor.de/andreas.r…ut/vdr-pvrinput-0.1.1.tgz -
Der es geht auch mit einem älteren Kernel. 2.6.17 + v4l-dvb hg + ivtv branch 0.8 funktioniert sehr gut. v4l-dvb hg sollte mit bis zu 2.6.12 funktionieren, wie es mit ivtv aussieht, weiß ich nicht.
Mit 2.6.18* kannst du dir das v4l-dvb hg sparen. ivtv branches/0.8 funktioniert auch mit dem vanilla rc kerneln.
-
Zitat
Original von Dr. Seltsam
ups, es gab per 30.04.06 eine offizielle 0.1.1:
http://home.arcor.de/andreas.r…ut/vdr-pvrinput-0.1.1.tgzaber da hat sich außer der Anpassung an vdr 1.4 nichts geändert:
Diff
Alles anzeigendiff -ur pvrinput-0.1.1-pre1/HISTORY pvrinput-0.1.1/HISTORY --- pvrinput-0.1.1-pre1/HISTORY Thu Feb 9 21:26:40 2006 +++ pvrinput-0.1.1/HISTORY Sun Apr 30 18:08:53 2006 @@ -1,8 +1,9 @@ VDR Plugin 'pvrinput' Revision History --------------------------------- -2006-02-09: Version 0.1.1 +2006-04-30: Version 0.1.1 +- adapted to vdr 1.4.0. Older versions should still work. - fixed detection of pvr card to work with ivtv version 0.4.1 or later with kernel 2.4. diff -ur pvrinput-0.1.1-pre1/Makefile pvrinput-0.1.1/Makefile --- pvrinput-0.1.1-pre1/Makefile Sun Aug 28 08:27:05 2005 +++ pvrinput-0.1.1/Makefile Sun Apr 30 18:04:23 2006 @@ -32,6 +32,10 @@ ### The version number of VDR (taken from VDR's "config.h"): VDRVERSION = $(shell grep 'define VDRVERSION ' $(VDRDIR)/config.h | awk '{ print $$3 }' | sed -e 's/"//g') +APIVERSION = $(shell grep 'define APIVERSION ' $(VDRDIR)/config.h | awk '{ print $$3 }' | sed -e 's/"//g') +ifeq ($(strip $(APIVERSION)),) + APIVERSION = $(VDRVERSION) +endif ### The name of the distribution archive: @@ -68,7 +72,7 @@ libvdr-$(PLUGIN).so: $(OBJS) $(CXX) $(CXXFLAGS) -shared $(OBJS) -o $@ - @cp $@ $(LIBDIR)/$@.$(VDRVERSION) + @cp $@ $(LIBDIR)/$@.$(APIVERSION) dist: clean @-rm -rf $(TMPDIR)/$(ARCHIVE) diff -ur pvrinput-0.1.1-pre1/plugin.c pvrinput-0.1.1/plugin.c --- pvrinput-0.1.1-pre1/plugin.c Thu Feb 9 21:27:43 2006 +++ pvrinput-0.1.1/plugin.c Sun Apr 30 18:04:40 2006 @@ -6,7 +6,7 @@ #include "plugin.h" -static const char *VERSION = "0.1.1-pre1"; +static const char *VERSION = "0.1.1"; static const char *DESCRIPTION = "use Hauppauge PVR as input device"; static const char *MAINMENUENTRY = "PVR picture settings";
-
Sehr schön, dann sind alle diese Änderungen außer die Versionsnr. eh enthalten.
-
Zitat
Original von jannex
v4l-dvb hg sollte mit bis zu 2.6.12 funktionieren, wie es mit ivtv aussieht, weiß ich nicht.ivtv-0.8 geht wohl ab 2.6.16
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!