RCP und JMF PlugIn Registrierung

Status
Nicht offen für weitere Antworten.

freaksta

Mitglied
Hallo zusammen!

ich arbeite an einer Videoschnittsoftware die auf der RCP basiert. Dabei verwende ich zur Medienverarbeitung JMF. Dieses hat eine Schwachstelle, denn es kann nicht wirklich viele Codecs verwenden. Um diese Lücke zu schließen, gibt es diverse PlugIns (FOBS4JMF und MP3 PlugIn bspw). In allen Installationsanleitungen heisst es, dass man diese Plugins mittels JMStudio systemweit bekannt machen kann und JMF dann den Einsatz der gleichen handhabt. Soweit so gut und funktioniert prima.

Leider ignoriert mir die RCP diese Geschichten. JMF ist bisher als PlugIn aus den betreffenden JAR´s definiert worden und lässt sich auch einwandfrei ansprechen. Nun versuche ich im Moment, dass ich das FOBS4JMF Plugin innerhalb der RCP zum laufen zu bekomme. Der Gedanke war nun folgender: Aus der Source von FOBS4JMF wiederum ein Plugin definieren und es dann mittels dem JMF PlugInManager bekannt machen. Irgendwie komme ich dabei aber auf keinen grünen Ast...

...hat das schonmal jemand in irgendeiner Art und Weise getestet / probiert und wenn möglich geschafft?!
 
Hm, eine Umstellung auf FMJ ist glaube ich nicht so sinnvoll...zum einen ist das Projekt noch in der Entwicklung, und zum anderen ist das ja nur eine Problemverschiebung, weil ich auch da mal in die Lage kommen kann zusätzliche PlugIns reinzuladen...

...also JMF als Basis sollte schon beibehalten werden.
 
Hm, das wäre wohl auch mal eine Idee...im Moment verscuhe ich halt die betreffenden Teile, die in der jmf.properties hinzugefügt werden (ersichtlich in der Anwendung JMF Registry) per Hand hinzuzufügen, und zwar diese hier:

"com.omnividea.media.codec.video.NativeDecoder"
"com.omnividea.media.codec.video.JavaDecoder"
"com.omnividea.media.codec.audio.NativeDecoder"
"com.omnividea.media.renderer.vide😵penGLRenderer"
"com.omnividea.media.renderer.video.Java2DRenderer"
"com.omnividea.media.parser.video.Parser"

mit:

Code:
		String[] clazzez = new String[] {
				"com.omnividea.media.codec.video.NativeDecoder",
				"com.omnividea.media.codec.video.JavaDecoder",
				"com.omnividea.media.codec.audio.NativeDecoder" };
		for (String clazz : clazzez) {
			Codec codec = (Codec)Class.forName(clazz).newInstance();
			Format[] in = codec.getSupportedInputFormats();
			Format[] out = codec.getSupportedOutputFormats(null);
			PlugInManager.addPlugIn(clazz, in, out, PlugInManager.CODEC);
			PlugInManager.commit();
		}
		
		String[] clazzez2 = new String[] {
				"com.omnividea.media.renderer.video.OpenGLRenderer",
				"com.omnividea.media.renderer.video.Java2DRenderer"};
		for (String clazz : clazzez2) {
			Renderer renderer = (Renderer)Class.forName(clazz).newInstance();
			Format[] in = renderer.getSupportedInputFormats();
			PlugInManager.addPlugIn(clazz, in, null, PlugInManager.RENDERER);
			PlugInManager.commit();
		}
		
		String[] clazzez3 = new String[] {
				"com.omnividea.media.parser.video.Parser"};
		for (String clazz : clazzez3) {
			Demultiplexer demux = (Demultiplexer)Class.forName(clazz).newInstance();
			Format[] in = demux.getSupportedInputContentDescriptors();
			PlugInManager.addPlugIn(clazz, in, null, PlugInManager.DEMULTIPLEXER);
			PlugInManager.commit();
		}

and this sysout:

Code:
//sysout before the exception...
Fobs4JMF - Native shared library found
Little Endian
AVCODEC: Constructor
OpenGL Renderer: cons
Fobs4JMF - Native shared library found
OpenGL Renderer: add Render Event
AVCODEC: close

//the file i want to play
file:/C:/sample.mpg
//foramt sysout
video.mpeg
//calling the manager to build the Player
javax.media.NoPlayerException: Cannot find a Player for: javax.media.protocol.URLDataSource@1082823
 
Das kann nicht funktionieren denn jedes Bundle hat seinen eigenen Classloader. Siehe meinen link oben.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben