You are not logged in.

Dear visitor, welcome to VDR Portal. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

Dr. Seltsam

Im Forum Zuhause

  • "Dr. Seltsam" started this thread

Posts: 9,969

Location: 3. Planet des Sonnensystems

Occupation: Organisator

  • Send private message

1

Sunday, October 8th 2006, 4:19pm

Anpassung des pvr350-Plugins an neue ivtv-Treiber wie im 2.6.18

Von dem Plugin geistern verschiedene Versionen rum:

- letzte offizielle Version ist die 0.0.4pre1.

- diese Version hatte ich mit aktualisierten ivtv-Headern mal etwas aufgefrischt, wodurch das Bild beim Umschalten nicht mehr auf dem letzten Frame einfror, sondern schwarz wurde. Zudem hatte ich die Größe des internen Ringbuffers reduziert, so dass das Umschalten auch etwas schneller ging. Es blieb das Problem, dass das Spulen nur zeitverzögert funktionierte. Diese Version ist als 0.0.4pre1-Dr.Seltsam nach meinem Kenntnisstand inzwischen recht weit verbreitet.

-der Author hatte dann einigen Leuten eine Vorabversion der 0.0.5 zur Verfügung gestellt, mit dem das Spulen einwandfrei klappte, aber das Umschalten nun 4-5 Sek. dauerte. Leider ist der Kontakt inzwischen abgebrochen, ich habe zuletzt keine Antworten mehr erhalten.

Alle drei Versionen sind mit Kernel 2.6.18 bzw. aktuellen ivtv-Treibern nicht mehr lauffähig, da sie direkte Firmware-API-calls verwenden. Das entsprechende IOCTL ist im Treiber inzwischen aber nicht mehr enthalten. Ich habe die Sourcen auf die derzeit (noch) gültigen ivtv-IOCTLs angepasst - wobei auch das nicht von Dauer sein wird, denn die Decoderseite des Treibers wird für die Integration in kernel 2.6.19 oder 2.6.20 demnächst nochmal eine Großbaustelle ...

Nach wie vor nicht vollständig geklärt ist, warum das Umschalten mit den fwapi-calls so schnell geht, mit dem offiziellen IOCTL jedoch so langsam. Es ist definitiv ein Problem des großen ivtv-Buffers, der erstmal gefüllt werden muss. Reduziert man die Buffergröße, so geht das Umschalten schnell, aber es kommt zu Rucklern. Ich habe nun eine Lösung gefunden, mit der sich die Umschaltdauer auf akzeptable 2-3 s reduziert: im ivtv-Treiber habe ich das Clearen des Decoders beim Decoderstop abgeschaltet. Diese Funktion kam erst im 0.3-Entwicklungszweig irgendwann dazu, und ich kann keinerlei Nachteile feststellen, wenn man das wieder entfernt.

Anbei also die Plugin-Sourcen inklusive ivtv-Patch.

Ich möchte bei dieser Gelegenheit auch nochmal auf Konsolen vor der Übernahme durch ivtv-fb schützen - so funktioniert es wirklich! verweisen, falls das untergegangen sein sollte ....
Dr. Seltsam has attached the following file:
VDR 1: Silverstone LC20, Cougar A300/R, MSI C847MS-E33, passive Asus GT520, KNC One DVB-C, Cine CT V6, WD10EACS; Atric-IR-Einschalter. SW: yavdr 0.5 per SSD
VDR 2: im Aufbau: ACT-620 mit Coba-NT, Asrock B75 Pro3-M, Celeron G540, Sundtek MediaTV Digital Home (DVB-C/T), passive Asus GT610. SW: Ubuntu 13.04 minimal (ohne grafische Oberfläche) per SSD

This post has been edited 1 times, last edit by "Dr. Seltsam" (Oct 22nd 2006, 12:55pm)


Posts: 3,648

Location: Mülheim / Ruhr

Occupation: Admin

  • Send private message

2

Monday, October 9th 2006, 1:29pm

RE: Anpassung des pvr350-Plugins an neue ivtv-Treiber wie im 2.6.18

OK, ich baue das mal ein! Was passiert denn wenn man noch den alten Kernel hat! Sollte man vielleicht den Plugin-Namen ändern?

Gruß

Toxic
Registrierter VDR-User #1275

HW neu: Asrock B75 Pro3 - Pentium G620T - SKYDVB S952
SW neu: YaVDR mit 3.16.3er Kernel ...

3

Monday, October 9th 2006, 6:18pm

der name ist ja erstmal zweitrangig. Wäre toll wenn sich ein richtiger coder das mal genauer anschauen würde.
Ich benutze bisher noch pvr350 4pre1 version mit patch damit vdr > 1.3.38 läuft. Damit habe gibts keine Verzögerung beim umschalten aber ansonsten 1-2 problemchen (spulen verzögert, sporadische 2sek skips bei wiedergabe von aufnahmen).
Deine Version scheint diese probleme nicht zu haben (muß aber auf das zweite problem bei mir nochmal testen), aber dafür halt die grausame umschaltdauer, fürs zappen nicht wirklich geeignet.

mfg
Server: Seagate Dockstar - Debian Squeeze
Client: Apple TV 2 / Samsung LExxC650
OldOne: Debian Etch - Matrox G450 & SkyStar2

Dr. Seltsam

Im Forum Zuhause

  • "Dr. Seltsam" started this thread

Posts: 9,969

Location: 3. Planet des Sonnensystems

Occupation: Organisator

  • Send private message

4

Monday, October 9th 2006, 7:06pm

Quoted

Original von uzer
aber dafür halt die grausame umschaltdauer, fürs zappen nicht wirklich geeignet.

hast Du ivtv wie vorgeschlagen gepatcht ?
VDR 1: Silverstone LC20, Cougar A300/R, MSI C847MS-E33, passive Asus GT520, KNC One DVB-C, Cine CT V6, WD10EACS; Atric-IR-Einschalter. SW: yavdr 0.5 per SSD
VDR 2: im Aufbau: ACT-620 mit Coba-NT, Asrock B75 Pro3-M, Celeron G540, Sundtek MediaTV Digital Home (DVB-C/T), passive Asus GT610. SW: Ubuntu 13.04 minimal (ohne grafische Oberfläche) per SSD

Dr. Seltsam

Im Forum Zuhause

  • "Dr. Seltsam" started this thread

Posts: 9,969

Location: 3. Planet des Sonnensystems

Occupation: Organisator

  • Send private message

5

Monday, October 9th 2006, 7:10pm

RE: Anpassung des pvr350-Plugins an neue ivtv-Treiber wie im 2.6.18

Quoted

Original von Toxic-Tonic
OK, ich baue das mal ein! Was passiert denn wenn man noch den alten Kernel hat! Sollte man vielleicht den Plugin-Namen ändern?


das Plugin ist abwärtskompatibel zu alten ivtv-Treibern. Wer keine gepatchten ivtv-Treiber hat, wird aber wegen der 4-5s Umschaltzeit enttäuscht sein.

Den Plugin-namen zu ändern möchte ich mir nicht anmaßen. Du kannst ja beide Versionen Kompilieren, entsprechnend umbenennen und einen Softlink per default auf eine der beiden Versionen setzen. Das kann dann jeder leicht entsprechend seines Kernels ändern.
VDR 1: Silverstone LC20, Cougar A300/R, MSI C847MS-E33, passive Asus GT520, KNC One DVB-C, Cine CT V6, WD10EACS; Atric-IR-Einschalter. SW: yavdr 0.5 per SSD
VDR 2: im Aufbau: ACT-620 mit Coba-NT, Asrock B75 Pro3-M, Celeron G540, Sundtek MediaTV Digital Home (DVB-C/T), passive Asus GT610. SW: Ubuntu 13.04 minimal (ohne grafische Oberfläche) per SSD

6

Monday, October 9th 2006, 7:28pm

ich hab nichts gepatched und ungefähr gute 3sek umschaltdauer mit ivtv 0.4.7 - Ist da noch ein Hinweis für einen ivtv patch in den sourcen?

Beim orig pvr plugin hab ich ca ne halbe sek.
Server: Seagate Dockstar - Debian Squeeze
Client: Apple TV 2 / Samsung LExxC650
OldOne: Debian Etch - Matrox G450 & SkyStar2

Dr. Seltsam

Im Forum Zuhause

  • "Dr. Seltsam" started this thread

Posts: 9,969

Location: 3. Planet des Sonnensystems

Occupation: Organisator

  • Send private message

7

Monday, October 9th 2006, 8:00pm

schau mal in den Unterordner patches

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
diff -ur ivtv/driver/ivtv-streams.c ivtv-patched/driver/ivtv-streams.c
--- ivtv/driver/ivtv-streams.c	2006-10-08 15:47:19.000000000 +0200
+++ ivtv-patched/driver/ivtv-streams.c	2006-10-08 13:22:26.000000000 +0200
@@ -1438,6 +1438,7 @@
 	ivtv_vapi(itv, CX2341X_DEC_SET_EVENT_NOTIFICATION, 4, 
 		5, 0, 0x04000000, -1);
 
+#if 0
         /* Clear all Buffers */
         clear_bit(IVTV_F_T_DEC_STARTED, &itv->t_flags);
         for (count=0;count < maxcount;count++) {
@@ -1458,6 +1459,7 @@
 				 count, ivtv_buf_fill_lock(st, 0, BUF_USED)); 
 		}
         }
+# endif
 	/* Stop Decoder */
        	if (ivtv_vapi(itv, CX2341X_DEC_STOP_PLAYBACK, 4,
         	/*  0 = last frame, 1 = black */


man braucht nur den Abschnitt "Clear all Buffers" durch eine "if 0-Bedingung" unwirksam machen.
VDR 1: Silverstone LC20, Cougar A300/R, MSI C847MS-E33, passive Asus GT520, KNC One DVB-C, Cine CT V6, WD10EACS; Atric-IR-Einschalter. SW: yavdr 0.5 per SSD
VDR 2: im Aufbau: ACT-620 mit Coba-NT, Asrock B75 Pro3-M, Celeron G540, Sundtek MediaTV Digital Home (DVB-C/T), passive Asus GT610. SW: Ubuntu 13.04 minimal (ohne grafische Oberfläche) per SSD

Dr. Seltsam

Im Forum Zuhause

  • "Dr. Seltsam" started this thread

Posts: 9,969

Location: 3. Planet des Sonnensystems

Occupation: Organisator

  • Send private message

8

Monday, October 9th 2006, 8:03pm

Quoted

Original von uzer
Beim orig pvr plugin hab ich ca ne halbe sek.


wobei das nicht 100% sauber funktioniert, da z.T. Pixel beim Umschalten kommen. Da verbleiben Reste im buffer, die noch mit wiedergegeben werden.

Mit Patch ist eine akzeptable Umschaltzeit (ca. 2-3 sek. von DVB-T und noch etwas schneller von analog) bei sauberem Umschalten gegeben
VDR 1: Silverstone LC20, Cougar A300/R, MSI C847MS-E33, passive Asus GT520, KNC One DVB-C, Cine CT V6, WD10EACS; Atric-IR-Einschalter. SW: yavdr 0.5 per SSD
VDR 2: im Aufbau: ACT-620 mit Coba-NT, Asrock B75 Pro3-M, Celeron G540, Sundtek MediaTV Digital Home (DVB-C/T), passive Asus GT610. SW: Ubuntu 13.04 minimal (ohne grafische Oberfläche) per SSD

Dr. Seltsam

Im Forum Zuhause

  • "Dr. Seltsam" started this thread

Posts: 9,969

Location: 3. Planet des Sonnensystems

Occupation: Organisator

  • Send private message

9

Monday, October 9th 2006, 8:42pm

und wenn wir schon am Patchen sind:

Das Plugin hatte bisher noch diesen Abschnitt in device.c

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
struct v4l2_control ctrl;
    int ret;
    memset(&ctrl, 0, sizeof(ctrl));

    ctrl.id = V4L2_CID_IVTV_DEC_PREBUFFER;
    ctrl.value = 0;

    if ( ( ret =ioctl(fd_out, VIDIOC_S_CTRL, &ctrl) ) < 0 ) {
        printf("1: %d\n",ret);
    }

    ctrl.id = V4L2_CID_IVTV_DEC_NUM_BUFFERS;
    ctrl.value = 0;

    if ( ( ret =ioctl(fd_out, VIDIOC_S_CTRL, &ctrl) ) < 0 ) {
        printf("2: %d\n",ret);
    }


Leider sind diese Funktion im ivtv-Treiber auch nicht mehr enthalten, da Hans Verkuil keine Notwendigkeit sieht, an diesen Buffern etwas zu ändern. Ich hab`s daher entfernt. Ich bin mir auch nicht sicher, ob der obenstehende Code überhaupt je etwas bewirkt hat. Erklärt sind diese Decoder-Optionen in ivtv-driver.h nur dürftig:

Source code

1
2
	int decbuffers;		/* 0 = 6 buffers, 1 = 9 buffers */
	int prebuffer;		/* 0 = no prebuffer, 1 = enabled, see docs */

Will man das gleiche Verhalten weiterhin haben, muss man in ivtv-drivers.c die Werte auf Null setzen:

Source code

1
2
	itv->dec_options.decbuffers = 0;
	itv->dec_options.prebuffer = 0;


Ich habe den Eindruck, als wenn es dann noch einen Tick schneller mit dem Umschalten geht.
VDR 1: Silverstone LC20, Cougar A300/R, MSI C847MS-E33, passive Asus GT520, KNC One DVB-C, Cine CT V6, WD10EACS; Atric-IR-Einschalter. SW: yavdr 0.5 per SSD
VDR 2: im Aufbau: ACT-620 mit Coba-NT, Asrock B75 Pro3-M, Celeron G540, Sundtek MediaTV Digital Home (DVB-C/T), passive Asus GT610. SW: Ubuntu 13.04 minimal (ohne grafische Oberfläche) per SSD

10

Wednesday, October 11th 2006, 12:27am

ich hab jetzt mal die Patches eingespielt und es geht wirklich was besser.

Allerdings habe ich immer noch diese kurzen Sprünge bei der Wiedergabe von Aufnahmen.

Source code

1
ERROR: invalid Count in cRingBuffLinear::Del: 1000

diese Meldung wird dabei im user.log erzeugt.

Kennt die einer?

mfg
Server: Seagate Dockstar - Debian Squeeze
Client: Apple TV 2 / Samsung LExxC650
OldOne: Debian Etch - Matrox G450 & SkyStar2

Dr. Seltsam

Im Forum Zuhause

  • "Dr. Seltsam" started this thread

Posts: 9,969

Location: 3. Planet des Sonnensystems

Occupation: Organisator

  • Send private message

11

Wednesday, October 11th 2006, 7:58am

nee, sowas habe ich noch nie gehabt.
Ist vdr gepatcht (eventuell mit Bigpatch /Livebuffer) ? bei mir läuft vdr nur mit dem liemikuutio-Patch.
VDR 1: Silverstone LC20, Cougar A300/R, MSI C847MS-E33, passive Asus GT520, KNC One DVB-C, Cine CT V6, WD10EACS; Atric-IR-Einschalter. SW: yavdr 0.5 per SSD
VDR 2: im Aufbau: ACT-620 mit Coba-NT, Asrock B75 Pro3-M, Celeron G540, Sundtek MediaTV Digital Home (DVB-C/T), passive Asus GT610. SW: Ubuntu 13.04 minimal (ohne grafische Oberfläche) per SSD

12

Wednesday, October 11th 2006, 1:04pm

jaja, ist gepatched. Und das Problem gibts auch erst seid vdr 1.3.36 oder so - davor hatte ich das auch noch nie gesehn.

Ich probier mal ohne BigPatch.

PS. Welche Bitrate hast du bei pvrinput eingestellt? Ich habe beobachtet das das Problem schlimmer wird, desto niedriger die Bitrate. Bei 8000 tritt es glaube ich gar nicht auf, aber jetzt bei 6000 oder 4500 entsprechend stärker.
Server: Seagate Dockstar - Debian Squeeze
Client: Apple TV 2 / Samsung LExxC650
OldOne: Debian Etch - Matrox G450 & SkyStar2

This post has been edited 1 times, last edit by "uzer" (Oct 11th 2006, 1:06pm)


Dr. Seltsam

Im Forum Zuhause

  • "Dr. Seltsam" started this thread

Posts: 9,969

Location: 3. Planet des Sonnensystems

Occupation: Organisator

  • Send private message

13

Wednesday, October 11th 2006, 4:10pm

ich habe meist 6000 genommen.
VDR 1: Silverstone LC20, Cougar A300/R, MSI C847MS-E33, passive Asus GT520, KNC One DVB-C, Cine CT V6, WD10EACS; Atric-IR-Einschalter. SW: yavdr 0.5 per SSD
VDR 2: im Aufbau: ACT-620 mit Coba-NT, Asrock B75 Pro3-M, Celeron G540, Sundtek MediaTV Digital Home (DVB-C/T), passive Asus GT610. SW: Ubuntu 13.04 minimal (ohne grafische Oberfläche) per SSD