rass und radiotext

Das Original Benutzerinterface Neutrino-SD incl. zapit, sectionsd, yWeb etc...
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: rass und radiotext

Beitrag von rhabarber1848 »

SnowHead hat geschrieben:In der infoviewer.cpp 1.264 ab Zeile 972 läßt sich der Code
übersichtlicher und leichter wartbar auch so schreiben:
committed: http://article.gmane.org/gmane.comp.vid ... x.scm/1034
liab
Einsteiger
Einsteiger
Beiträge: 111
Registriert: Samstag 9. Februar 2008, 15:07

Re: rass und radiotext

Beitrag von liab »

Da sind noch 2 Anzeigefehler im Radio-Modus.

1. Bei Senderwahl mit Zifferntasten erscheint sofort ein einsames Radiotext Icon in der Infobar. Wird da vielleicht "CInfoViewer::showIcon_RadioText" zu früh aufgerufen? M.E. wäre es zeitlich günstig die Icon Malerei mit bei "CInfoViewer::showIcon_CA_Status()" anzusiedeln.

2. Wird die Box im Radio-Modus und aktiviertem Radiotext neu gestartet oder neutrino neu gestartet, fehlt das Radiotext Icon. Ursache ist, daß der Radiotext zwar in der neutrino.conf eingestellt ist, aber nach Neustart von neutrino nicht wirklich aktiv ist. Diesen Fall erkennen die IF-Anweisungen in der infoviewer.cpp nicht und somit fehlt das Radiotext-Icon.

Es ist zwar möglich, das in der infoviewer.cpp durch Anpassen der IF-Anweisungen abzufangen, das Problem sollte aber an der Wurzel beseitigt werden. Soll heißen, daß bei einem Neustart von neutrino der Radiotext ggf. auch gestartet wird.

Wie schon gesagt, muß noch an der Aufnahmemöglichkeit bei Radiotext gearbeitet werden.
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: rass und radiotext

Beitrag von dbt »

Beim letzten Fix hatte ich schon gemerkt, dass das noch nicht so richtig war, sonst hätte ich das wahrscheinlich auch schon selbst eingecheckt, aber da war jemand schneller :wink: :wink: , aber so lange das optional ist und momentan sowieso noch nachgebessert werden muss, schadet es nicht wenn man die TODO-Liste etwas anfüllt.

Was das Icongemale angeht ist das ganze sicher noch nicht fertig, auch das Iconhandling gehört allgemein mal anders angepackt, hab mir da schon Gedanken gemacht. Alles zu seiner Zeit...
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: rass und radiotext

Beitrag von GetAway »

Bei aktivem RT freezed Neutrino im Radiomodus nach mehrmaligem Umschalten.
Da ist mal wieder ein Spezi gefragt.

Code: Alles auswählen

!!! 1798 bytes skipped to get PS/PES sync!!!
20:35:16.609 eit_set_update_filter, servicekey = 0x44500016f0c, current version 0
Stopping RT Thread
dmxdev.c: Too many open files: 31
[sectionsd] open dmx: Too many open files
dmxdev.c: Too many open files: 31
dmxdev.c: Too many open files: 31vb/adapter0/demux0 Too many open files

[sectionsd] open dmx: Too many open files
dmxdev.c: Too many open files: 31
/dev/dvb/adapter0/demux0: Too many open files
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: rass und radiotext

Beitrag von seife »

Was muss ich denn genau machen für Radiotext? (ging bisher an mir vorbei ;))

./configure --enable-radiotext

und dann? Im Neutrino was einschalten? Welche Sender? (Bevorzugt DLF und radioeins ;))
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: rass und radiotext

Beitrag von rhabarber1848 »

seife hat geschrieben:Im Neutrino was einschalten?
Einstellungen, Diverse Einstellungen, Infobar, Radiotext
seife hat geschrieben:Welche Sender? (Bevorzugt DLF und radioeins ;))
DLF hat afair keinen Radiotext, ich habe immer mit Bayern5 getestet.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: rass und radiotext

Beitrag von rhabarber1848 »

GetAway hat geschrieben:Bei aktivem RT freezed Neutrino im Radiomodus nach mehrmaligem Umschalten.
Vielleicht hat das Threadproblem etwas damit zu tun?
liab
Einsteiger
Einsteiger
Beiträge: 111
Registriert: Samstag 9. Februar 2008, 15:07

Re: rass und radiotext

Beitrag von liab »

liab hat geschrieben:Da sind noch 2 Anzeigefehler im Radio-Modus.

1. Bei Senderwahl mit Zifferntasten erscheint sofort ein einsames Radiotext Icon in der Infobar.

2. Wird die Box im Radio-Modus und aktiviertem Radiotext neu gestartet oder neutrino neu gestartet, fehlt das Radiotext Icon.
Fehler 1 habe ich so gefixt:

In die infoviewer.h eine Variable "bool rticon;"

In die Infoviewer.cpp insgesamt 4 Änderungen:

1. Bei CInfoViewer::CInfoViewer() dies einfügen

rticon = true;

2.Vor if ( msg == CRCInput::RC_help ) dies einfügen:

//Nummernzappen merken, damit das Radiotext Icon nicht gezeigt wird
if (( msg == CRCInput::RC_1 ) | ( msg == CRCInput::RC_2 ) | ( msg == CRCInput::RC_3 ) | ( msg == CRCInput::RC_4 ) | ( msg == CRCInput::RC_5 ) | ( msg == CRCInput::RC_6 ) | ( msg == CRCInput::RC_7 ) | ( msg == CRCInput::RC_8 ) | ( msg == CRCInput::RC_9 ))
{
rticon = false;
}

3. void CInfoViewer::showIcon_RadioText(bool rt_available, bool rt_enabled) const hiermit beginnen

if ( rticon ) // Beim Nummernzappen kein Radiotext Icon zeigen
{
und vor endif noch eine weitere } nicht vergessen!

4. Bei void CInfoViewer::showInfoIcons() noch einen Eintrag am Ende hinzufügen
rticon = true; //Nummernzappen merken löschen, für Radiotext Icons

Jetzt merkt sich die infoviewer, daß mit Ziffern gezappt wurde. Das Radiotext Icon wird erst gezeigt, wenn das Fenster steht.

Der 2. Fehler (kein Icon bei Neustart neutrino) ist leicht zubeheben. Ich lasse es aber so, weil es eine gute Warnung ist, daß nach dem Neustart der Radiotext nicht funktioniert. Man muß dann nach TV und wieder nach Radio wechseln.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: rass und radiotext

Beitrag von rhabarber1848 »

liab hat geschrieben: if (( msg == CRCInput::RC_1 ) | ( msg == CRCInput::RC_2 ) | ( msg == CRCInput::RC_3 ) | ( msg == CRCInput::RC_4 ) | ( msg == CRCInput::RC_5 ) | ( msg == CRCInput::RC_6 ) | ( msg == CRCInput::RC_7 ) | ( msg == CRCInput::RC_8 ) | ( msg == CRCInput::RC_9 ))
Besser so:

Code: Alles auswählen

if ((msg >= CRCInput::RC_1) && (msg <= CRCInput::RC_9)
siehe src/gui/audioplayer.cpp, Zeile 761
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: rass und radiotext

Beitrag von seife »

Code: Alles auswählen

apps/tuxbox/neutrino/src/driver/rcinput.cpp:bool CRCInput::isNumeric(const neutrino_msg_t key)
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: rass und radiotext

Beitrag von rhabarber1848 »

liab hat geschrieben:Fehler 1 habe ich so gefixt:

In die infoviewer.h eine Variable "bool rticon;"
Habe Deinen Patch getestet, sieht gut aus.

Beim Umschalten eines Radiosenders ist das Radiotext-Icon
direkt nach dem Umschalten immer gelb, auch wenn der
Sender keinen Radiotext sendet. Das habe ich ebenfalls
behoben, so hoffe ich jedenfalls ;) Das Icon wird nur noch
dann gelb, wenn Radiotext empfangen wird, so wie bisher.

CInfoViewer::showIcon_RadioText habe ich auch noch etwas
aufgeräumt.

Schaut Euch den Patch mal an: EDIT: Patch ist im CVS
Zuletzt geändert von rhabarber1848 am Sonntag 6. September 2009, 15:01, insgesamt 1-mal geändert.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: rass und radiotext

Beitrag von rhabarber1848 »

liab hat geschrieben:daß nach dem Neustart der Radiotext nicht funktioniert. Man muß dann nach TV und wieder nach Radio wechseln.
Da ist wohl ein Bug in Neutrino drin, die Funktion zum Aktivieren
des Radiotextes wird in CNeutrinoApp::tvMode aufgerufen und
nicht in CNeutrinoApp::radioMode...
Obiger Patch beinhaltet nun die Lösung dieses Problems.

PS: In Houdinis Original-Patch war es noch richtig drin.
Muss wohl zwischendurch passiert sein.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: rass und radiotext

Beitrag von rhabarber1848 »

Wer mehr Radiotext-Zeilen auf dem Bildschirm haben möchte
Bild
testet einfach diesen Patch: radiotext_lines.diff
dwilx

Re: rass und radiotext

Beitrag von dwilx »

Fehlt nur noch die Laufschrift fürs LCD.
Mal nur nebenbei, war das nicht schon irgendwie in Radiobox verbaut.
zum Anschubsen, Ist das was in diese Richtung?

Code: Alles auswählen

void CLCD::DrawString( 
					const int			_x,
					const int			_y,
					const int			_width,	
					const std::string	_text,
					LcdFont*		_font,
					int			_font_size,
					const bool			_invert,
					const unsigned long	_frame )
{
	static int x = 0;
	static int y = 0;
	static std::vector<int>	sizes;
	static int text_width = 0;
	int i = 0;
	int fg = (false==_invert)?CLCDDisplay::PIXEL_ON:CLCDDisplay::PIXEL_OFF;
	int bg = (false==_invert)?CLCDDisplay::PIXEL_OFF:CLCDDisplay::PIXEL_ON;
	unsigned long frame = 0;

	if( 0 == _frame )
	{

		
		x = 0;
		y = 0;
	
		//prepare sizes

		sizes.erase(sizes.begin(),sizes.end());

		for( i = 0; i < _text.size(); i++ )
		{
			int s = _font->getRenderWidth( ( _text.substr( 0, i ) ).c_str(), false );
			sizes.push_back( s );
		}		

		text_width = _font->getRenderWidth( _text.c_str(), false );
	}
	frame = _frame%text_width;

//	display.draw_fill_rect ( _x, _y , _x + 120-_width, _y + 64 - 17 , fg );
	display.draw_fill_rect ( _x, _y-_font_size+3 , _x+_width, _y+3 , bg );

	if( 120 < text_width )
	{
		int diff;

//		std::cout << "***************" << std::endl;
				
		for( i = 0; i < _text.size(); i++ )
		{
/*			std::cout << 
							"[" << i << "] " << 
							"size = " << sizes[i] << 
							" _frame = " << _frame << 
							" strlen = " << _filename.size() << 
							" n of sizes = " << sizes.size() << 
							" " << _filename.substr( i, _filename.size() - i ) <<  std::endl;
*/
			if( sizes[i] > frame )
			{
				diff = sizes[i] - frame;
				break;
			}
		}

		_font->RenderString( _x + 1 + diff , _y, _width, _text.substr( i, _text.size() - i ).c_str() , fg, 0, false ); // UTF-8
	
		if( text_width - frame < 120 )
		{
		_font->RenderString( text_width - frame + 5 + _x , _y, _width - ( text_width - frame ) , _text.c_str(), fg, 0, false ); // UTF-8
		}

		if( frame > text_width )
		{
		_font->RenderString( _x + 5 - (text_width - frame) * -1, _y, _width, _text.c_str(), fg, 0, false ); // UTF-8
		}
	}
	else
		_font->RenderString( _x, _y, _width, _text.c_str() , fg, 0, true ); // UTF-8
}
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: rass und radiotext

Beitrag von rhabarber1848 »

rhabarber1848 hat geschrieben:Schaut Euch den Patch mal an: EDIT: Patch ist im CVS
Patch nochmals aktualisert, die TV<->Radio-Umschaltung funktioniert jetzt.
Zuletzt geändert von rhabarber1848 am Sonntag 6. September 2009, 15:02, insgesamt 1-mal geändert.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: rass und radiotext

Beitrag von rhabarber1848 »

GetAway hat geschrieben:Stopping RT Thread
dmxdev.c: Too many open files: 31
[sectionsd] open dmx: Too many open files
Das Problem tritt hier auch auf, habe leider keine Lösung.
Stopping RT Thread
dmxdev.c: Too many open files: 31
/dev/dvb/adapter0/demux0: Too many open files
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: rass und radiotext

Beitrag von rhabarber1848 »

rhabarber1848 hat geschrieben:
Stopping RT Thread
dmxdev.c: Too many open files: 31
/dev/dvb/adapter0/demux0: Too many open files
CRadioText::setPid öffnet bei jedem Umschalten einen neuen FD,
die Auswertung der Variablen oldPid ist wohl ohne Bedeutung.

Vorher:
# lsof -p 340 | grep demux
neutrino 340 root 20u CHR 250,4 406 /dev/dvb/adapter0/demux0
neutrino 340 root 21u CHR 250,4 406 /dev/dvb/adapter0/demux0
neutrino 340 root 22u CHR 250,4 406 /dev/dvb/adapter0/demux0

Nach dem Umschalten
# lsof -p 340 | grep demux
neutrino 340 root 20u CHR 250,4 406 /dev/dvb/adapter0/demux0
neutrino 340 root 21u CHR 250,4 406 /dev/dvb/adapter0/demux0
neutrino 340 root 22u CHR 250,4 406 /dev/dvb/adapter0/demux0
neutrino 340 root 23u CHR 250,4 406 /dev/dvb/adapter0/demux0
Log mit Debug beim Umschalten:
Stopping RT Thread
setting pid 0xee9
opening /dev/dvb/adapter0/demux0
opened /dev/dvb/adapter0/demux0
Thread Setting PID 0xee9
Dieser Patch könnte helfen:

Code: Alles auswählen

diff -uNr ../cvs/apps/tuxbox/neutrino/src/driver/radiotext.cpp ./apps/tuxbox/neutrino/src/driver/radiotext.cpp
--- apps/tuxbox/neutrino/src/driver/radiotext.cpp	2009-08-07 09:22:31.000000000 +0200
+++ apps/tuxbox/neutrino/src/driver/radiotext.cpp	2009-09-04 12:54:36.000000000 +0200
@@ -2422,6 +2422,7 @@
 		// open the device if first pid
 		if (0 == oldPid)
 		{
+			close(dmxfd);
 			dmxfd = open(DMXDEV, O_RDWR);
 			if (dmxfd < 0) {
 				perror(DMXDEV);
Striper
Erleuchteter
Erleuchteter
Beiträge: 625
Registriert: Samstag 8. September 2007, 16:17

Re: rass und radiotext

Beitrag von Striper »

Hm, warum erst zumachen bevor was neues reinkommt? Wäre es nicht passender nach

Code: Alles auswählen

rt.fd = dmxfd;
zu schliessen?
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: rass und radiotext

Beitrag von GetAway »

Wäre es nicht sinnvoller das Untertitelsymbol im Radiomodus wegzulassen
und dafür wieder das 16:9 Symbol aufzunehmen, wenn mit --enable-radiotext
kompiliert wird?
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: rass und radiotext

Beitrag von rhabarber1848 »

Striper hat geschrieben:Hm, warum erst zumachen bevor was neues reinkommt? Wäre es nicht passender nach

Code: Alles auswählen

rt.fd = dmxfd;
zu schliessen?
Keine gute Idee, dann kommt beim Umschalten
setting pid 0xee8
Thread Setting PID 0xee8
DMX_SET_PES_FILTER: Bad file descriptor
und kein Radiotext.
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Re: rass und radiotext

Beitrag von Houdini »

der Kommunikationskanal, worüber die Daten eingelesen werden, muß natürlich offen bleiben.
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: rass und radiotext

Beitrag von GetAway »

Bei einer voll ausgenutzen rechts-/Links Einstellung des OSD-Bereich,
bleibt nach dem Timeout, links eine Pixelkante der Radiotextbox stehen.
Da sich der Bereich analog zur Infobar verhalten sollte, ist da noch
Nachbearbeitung angesagt.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: rass und radiotext

Beitrag von seife »

Kommt bei euch auch ständig

Code: Alles auswählen

!!! 150 bytes skipped to get PS/PES sync!!!
oder liegt das an der Tripledragon (der TD-Demux ist subtil anders, wie schon beim sectionsd schmerzhaft bemerkt ;))
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: rass und radiotext

Beitrag von dbt »

GetAway hat geschrieben:Bei einer voll ausgenutzen rechts-/Links Einstellung des OSD-Bereich,
bleibt nach dem Timeout, links eine Pixelkante der Radiotextbox stehen.
Da sich der Bereich analog zur Infobar verhalten sollte, ist da noch
Nachbearbeitung angesagt.
Hab was dran gedreht, damit das passt.
Kommt bei euch auch ständig
Code:
!!! 150 bytes skipped to get PS/PES sync!!!

oder liegt das an der Tripledragon (der TD-Demux ist subtil anders, wie schon beim sectionsd schmerzhaft bemerkt ;))
Ist mir bisher nicht augefallen. Passiert das immer, oder nur bei bestimmten Sendern etc...?
liab
Einsteiger
Einsteiger
Beiträge: 111
Registriert: Samstag 9. Februar 2008, 15:07

Re: rass und radiotext

Beitrag von liab »

rhabarber1848 hat geschrieben: Patch nochmals aktualisert, die TV<->Radio-Umschaltung funktioniert jetzt.
Funktioniert jetzt gut und ist optisch schön. Danke für die Kurzform meiner langen IF-Anweisung.

Jetzt bleibt nur noch der Fehler mit der Audio-Aufnahme. Bestlösung wäre, wenn es trotz Radiotextes ginge. Mit automatischer Abschaltung des Radiotextes bei Aufnahme kann man aber auch leben. Habe schon versucht die autom. Abschaltung in die infoviewer.cpp einzubauen. Das geht leider nicht, da der Zeitpunkt zu spät ist. Der Radiotext muß deaktiviert sein bevor die Aufnahme startet. Eine weniger elegante Lösung wäre vielleicht über die recording.start. Das Unschöne ist, daß der Aufnahmeversuch oft mit einem Absturz der Box bestraft wird.