[Bug 796974] New: IllegalArgumentException while streaming video over ethernet (MPEG-TS )
GStreamer (GNOME Bugzilla)
bugzilla at gnome.org
Thu Aug 16 13:02:57 UTC 2018
https://bugzilla.gnome.org/show_bug.cgi?id=796974
Bug ID: 796974
Summary: IllegalArgumentException while streaming video over
ethernet (MPEG-TS )
Classification: Platform
Product: GStreamer
Version: unspecified
OS: Windows
Status: NEW
Severity: critical
Priority: Normal
Component: gst-plugins-bad
Assignee: gstreamer-bugs at lists.freedesktop.org
Reporter: bekozatacan at gmail.com
QA Contact: gstreamer-bugs at lists.freedesktop.org
GNOME version: ---
Hi everyone,
I am getting this exception each time I try to stream video over ethernet by
MPEG-TS in my software.Do you have solution ?
JNA: Callback org.freedesktop.gstreamer.Bus$15 at 1871a69 threw the following
exception:
java.lang.IllegalArgumentException: No known Enum mapping for
org.freedesktop.gstreamer.MessageType value=-2147483644
at
org.freedesktop.gstreamer.lowlevel.EnumMapper.valueOf(EnumMapper.java:75)
at
org.freedesktop.gstreamer.lowlevel.GTypeMapper$4.fromNative(GTypeMapper.java:147)
at com.sun.jna.Structure.readField(Structure.java:723)
at com.sun.jna.Structure.readField(Structure.java:614)
at
org.freedesktop.gstreamer.lowlevel.SubtypeMapper$MessageMapper$MapHolder.subtypeFor(SubtypeMapper.java:135)
at
org.freedesktop.gstreamer.lowlevel.SubtypeMapper$MessageMapper.subtypeFor(SubtypeMapper.java:141)
at
org.freedesktop.gstreamer.lowlevel.SubtypeMapper.subtypeFor(SubtypeMapper.java:75)
at
org.freedesktop.gstreamer.lowlevel.NativeObject.classFor(NativeObject.java:221)
at
org.freedesktop.gstreamer.lowlevel.NativeObject.objectFor(NativeObject.java:193)
at
org.freedesktop.gstreamer.lowlevel.GTypeMapper$3.fromNative(GTypeMapper.java:129)
at
com.sun.jna.CallbackReference$DefaultCallbackProxy.invokeCallback(CallbackReference.java:510)
at
com.sun.jna.CallbackReference$DefaultCallbackProxy.callback(CallbackReference.java:551)
Here is my code.
public class SWTVideoTest {
private static List<VideoComponent> components;
private static void createControl(Composite parent) {
Composite controlComposite = new Composite(parent, SWT.NONE);
controlComposite.setLayout(new GridLayout(3, false));
controlComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
final Composite componentComposite = new Composite(parent, SWT.NONE);
componentComposite.setLayout(new GridLayout(1, false));
componentComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
final Spinner num = new Spinner(controlComposite, SWT.NONE);
num.setMinimum(1);
num.setMaximum(20);
Button add = new Button(controlComposite, SWT.NONE);
add.setText("Add");
add.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event arg0) {
List<VideoComponent> temp = new ArrayList<VideoComponent>();
if (components.size() == 0 && num.getSelection() == 1)
componentComposite.setLayout(new GridLayout(1, false));
else
componentComposite.setLayout(new GridLayout((components
.size() + num.getSelection()) / 2, false));
for (int i = 0; i < num.getSelection(); i++) {
temp.add(createComponenet(componentComposite));
}
componentComposite.layout();
List<Thread> threads = new ArrayList<Thread>();
for (VideoComponent videoComponent : temp) {
final Pipeline pipeline = (Pipeline) videoComponent
.getData();
Thread thread = new Thread(new Runnable() {
public void run() {
pipeline.play();
System.out.println("PipeLine Start !");
// pipeline.getState();
//
pipeline.debugToDotFile(Bin.DEBUG_GRAPH_SHOW_ALL,
// "swt_video_test_pipeline");
}
}, "pipeline");
threads.add(thread);
}
for (Thread thread : threads) {
thread.start();
}
}
});
Button delete = new Button(controlComposite, SWT.NONE);
delete.setText("Delete");
delete.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event arg0) {
for (int i = 0; i < num.getSelection(); i++) {
if (components.size() > 0) {
VideoComponent component = components.get(components
.size() - 1);
deleteElement(component);
}
}
componentComposite.layout();
}
});
}
private static void deleteElement(VideoComponent component) {
Pipeline pipeline = (Pipeline) component.getData();
pipeline.stop();
pipeline.getState().equals(State.NULL);
component.dispose();
components.remove(component);
}
private static VideoComponent createComponenet(final Composite parent) {
Pipeline pipe = new Pipeline("SWT Overlay Test");
Element udpsrc = ElementFactory.make("udpsrc", "videotest");
udpsrc.set("port", 8000);
Element queue = ElementFactory.make("queue", "queue");
Element caps = ElementFactory.make("capsfilter", "caps");
caps.setCaps(new Caps("video/mpegts"));
Element tsdemux = ElementFactory.make("tsdemux","tsdemux");
Element h264parse = ElementFactory.make("h264parse","h264parse");
Element queue2 = ElementFactory.make("queue2","queue2");
Element avdec_h264 = ElementFactory.make("avdec_h264","avdec_h264");
Element videoconvert =
ElementFactory.make("videoconvert","videoconvert");
VideoComponent component = new VideoComponent(parent, SWT.NONE);
component.getElement().setName("video");
component.setKeepAspect(true);
component.setLayoutData(new GridData(GridData.FILL_BOTH));
//sync false
component.set("sync", "false");
Element sink = component.getElement();
component.setData(pipe);
components.add(component);
pipe.addMany(udpsrc,caps,queue,tsdemux,h264parse,queue2,avdec_h264,videoconvert,sink);
Element.linkMany(udpsrc,caps,queue,tsdemux,h264parse,queue2,avdec_h264,videoconvert,sink);
return component;
}
public static void main(String[] args) {
args = Gst.init("SWTVideoTest", args);
components = new ArrayList<VideoComponent>();
try {
Display display = new Display();
Shell shell = new Shell(display);
shell.setMaximized(true);
shell.setLayout(new GridLayout(1, false));
shell.setText("SWT Video Test");
createControl(shell);
shell.addDisposeListener(new DisposeListener() {
public void widgetDisposed(DisposeEvent arg0) {
List<VideoComponent> temp = new
ArrayList<VideoComponent>();
temp.addAll(components);
for (VideoComponent component : temp) {
deleteElement(component);
}
}
});
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
} catch (Exception e) {
e.printStackTrace();
}
}
}
--
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
More information about the gstreamer-bugs
mailing list