HDFView and user-defined compression filters

Dear all,

I have been given some compressed netCDF4 (HDF5) data, together with an HDF compression filter to read it. After compiling the compression library and filter and setting up the $HDF5_PLUGIN_PATH env variable pointing to the filter, h5dump successfully displays the compressed data :slight_smile:

I was now wondering if HDFView supports the dynamic loading of user-defined filters, as h5dump did. I tried with the latest version, 2.11, and even though it was able to open the file and the uncompressed variables, it crashed when trying to open a compressed variable.

The log (https://drive.google.com/open?id=0B6RTzwJWtu6zVm9KOEphcmg5bUU) shows the filter and the compression library under the dynamic libraries list, and the following java exception:

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) j ncsa.hdf.hdf5lib.H5.H5Dread_short(IIIII[SZ)I+0
j ncsa.hdf.hdf5lib.H5.H5Dread(IIIIILjava/lang/Object;Z)I+197
j ncsa.hdf.hdf5lib.H5.H5Dread(IIIIILjava/lang/Object;)I+9
j ncsa.hdf.object.h5.H5ScalarDS.read()Ljava/lang/Object;+593
j ncsa.hdf.object.Dataset.getData()Ljava/lang/Object;+19
j ncsa.hdf.view.DefaultTableView.createTable(Lncsa/hdf/object/ScalarDS;)Ljavax/swing/JTable;+151
j ncsa.hdf.view.DefaultTableView.<init>(Lncsa/hdf/view/ViewManager;Ljava/util/HashMap;)V+934
v ~StubRoutines::call_stub
j sun.reflect.NativeConstructorAccessorImpl.newInstance0(Ljava/lang/reflect/Constructor;[Ljava/lang/Object;)Ljava/lang/Object;+0
j sun.reflect.NativeConstructorAccessorImpl.newInstance([Ljava/lang/Object;)Ljava/lang/Object;+72
j sun.reflect.DelegatingConstructorAccessorImpl.newInstance([Ljava/lang/Object;)Ljava/lang/Object;+5
j java.lang.reflect.Constructor.newInstance([Ljava/lang/Object;)Ljava/lang/Object;+79
j ncsa.hdf.view.Tools.newInstance(Ljava/lang/Class;[Ljava/lang/Object;)Ljava/lang/Object;+162
j ncsa.hdf.view.DefaultTreeView.showDataContent(Lncsa/hdf/object/HObject;)Lncsa/hdf/view/DataView;+877
j ncsa.hdf.view.DefaultTreeView.actionPerformed(Ljava/awt/event/ActionEvent;)V+314
j javax.swing.AbstractButton.fireActionPerformed(Ljava/awt/event/ActionEvent;)V+84
j javax.swing.AbstractButton$Handler.actionPerformed(Ljava/awt/event/ActionEvent;)V+5
j javax.swing.DefaultButtonModel.fireActionPerformed(Ljava/awt/event/ActionEvent;)V+35
j javax.swing.DefaultButtonModel.setPressed(Z)V+117
j javax.swing.AbstractButton.doClick(I)V+64
j javax.swing.plaf.basic.BasicMenuItemUI.doClick(Ljavax/swing/MenuSelectionManager;)V+53
j javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Ljava/awt/event/MouseEvent;)V+76
j java.awt.Component.processMouseEvent(Ljava/awt/event/MouseEvent;)V+64
j javax.swing.JComponent.processMouseEvent(Ljava/awt/event/MouseEvent;)V+23
j java.awt.Component.processEvent(Ljava/awt/AWTEvent;)V+81
j java.awt.Container.processEvent(Ljava/awt/AWTEvent;)V+18
j java.awt.Component.dispatchEventImpl(Ljava/awt/AWTEvent;)V+581
j java.awt.Container.dispatchEventImpl(Ljava/awt/AWTEvent;)V+42
j java.awt.Component.dispatchEvent(Ljava/awt/AWTEvent;)V+2
j java.awt.LightweightDispatcher.retargetMouseEvent(Ljava/awt/Component;ILjava/awt/event/MouseEvent;)V+327
j java.awt.LightweightDispatcher.processMouseEvent(Ljava/awt/event/MouseEvent;)Z+139
j java.awt.LightweightDispatcher.dispatchEvent(Ljava/awt/AWTEvent;)Z+50
j java.awt.Container.dispatchEventImpl(Ljava/awt/AWTEvent;)V+12
j java.awt.Window.dispatchEventImpl(Ljava/awt/AWTEvent;)V+19
j java.awt.Component.dispatchEvent(Ljava/awt/AWTEvent;)V+2
j java.awt.EventQueue.dispatchEventImpl(Ljava/awt/AWTEvent;Ljava/lang/Object;)V+41
j java.awt.EventQueue.access$200(Ljava/awt/EventQueue;Ljava/awt/AWTEvent;Ljava/lang/Object;)V+3
j java.awt.EventQueue$3.run()Ljava/lang/Void;+12
j java.awt.EventQueue$3.run()Ljava/lang/Object;+1
v ~StubRoutines::call_stub
j java.security.AccessController.doPrivileged(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;+0
j java.security.ProtectionDomain$1.doIntersectionPrivilege(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;)Ljava/lang/Object;+28
j java.security.ProtectionDomain$1.doIntersectionPrivilege(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;+6
j java.awt.EventQueue$4.run()Ljava/lang/Void;+11
j java.awt.EventQueue$4.run()Ljava/lang/Object;+1
v ~StubRoutines::call_stub
j java.security.AccessController.doPrivileged(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;+0
j java.security.ProtectionDomain$1.doIntersectionPrivilege(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;)Ljava/lang/Object;+28
j java.awt.EventQueue.dispatchEvent(Ljava/awt/AWTEvent;)V+73
j java.awt.EventDispatchThread.pumpOneEventForFilters(I)V+245
j java.awt.EventDispatchThread.pumpEventsForFilter(ILjava/awt/Conditional;Ljava/awt/EventFilter;)V+35
j java.awt.EventDispatchThread.pumpEventsForHierarchy(ILjava/awt/Conditional;Ljava/awt/Component;)V+11
j java.awt.EventDispatchThread.pumpEvents(ILjava/awt/Conditional;)V+4
j java.awt.EventDispatchThread.pumpEvents(Ljava/awt/Conditional;)V+3
j java.awt.EventDispatchThread.run()V+9
v ~StubRoutines::call_stub

Thanks for your help!
Cheers,
Joaquín

Any email message from EUMETSAT is sent in good faith but shall neither be binding nor construed as constituting a commitment by EUMETSAT, except where provided for in a written agreement or contract or if explicitly stated in the email. Please note that any views or opinions presented in this email are solely those of the sender and do not necessarily represent those of EUMETSAT. This message and any attachments are intended for the sole use of the addressee(s) and may contain confidential and privileged information. Any unauthorised use, disclosure, dissemination or distribution (in whole or in part) of its contents is not permitted. If you received this message in error, please notify the sender and delete it from your system.