|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectjava.awt.Component
java.awt.Canvas
de.humatic.dsj.DSFiltergraph
de.humatic.dsj.DSBDAGraph
public class DSBDAGraph
DSBDAGraph provides a basic implementation of
Microsoft's Broadcast Driver Architecture for digital TV. It will only work with digital tuners that
come with a BDA compliant driver (there are a lot of digital TV boxes with proprietary drivers,
read the specs closely!).
The class works with MPEG2 based DVB-T and DVB-S only. MPEG4 based DVB-T2 and DVB-S2 are not supported at the time being,
allthough in dsj 0_8_62 some untested options have been added to pass MPEG4 mediatypes to decoders (see setMPEGType).
Support for ATSC and DVB-C has been added in pure theory, it
may well not work at all. We appreciate any feedback you may be able to give.
Technically spoken all digital TV standards supported by the BDA architecture use MPEG2
transport streams for data delivery. A system that wants to decode and display that data
must be equipped with the appropriate decoders. As with all dsj classes, that work on
MPEG2, you may specify decoders by either using the extended constructor or entering
preferred decoders into the dsj.xml setup file.
This class does not provide file capture functionality. To record digital TV data use the
DSStreamBufferGraph class with a BDASource.
DSBDAGraph reads and stores information about broadcast frequencies and scanned channels in
an xml file pointed to by the "channellist" entry in the DSBDAGraph node of the dsj.xml setup
file. Before you can watch TV you need to do a channel scan. This can take some time (and
- depending on signal strength, antenna quality and position etc. - eventually needs to be
performed a couple of times before all broadcasts have been found). The dsj demo folder holds
both a list of European DVB frequencies (Channels.xml) as well as an example of a channellist
after scanning has been performed (Berlin.xml). Transponder lists for different regions of the world and
different satellites can be downloaded from web services like king of sat and others.
Digital TV and all the services involved (radio, data broadcast, return channels etc.) are a vast
field of mixed standards, concurring technical approaches and political will throughout the
world. On top of that, technical development has already started to overcome the state most
of the fragile standardization is built upon.
As an entry point to further investigation, point your browser to:
http://en.wikipedia.org/wiki/DVB
http://en.wikipedia.org/wiki/ATSC
Windows 7 note: There are a lot of - still only very briefly documented - api changes in the native BDA arcitecture.
resulting in this class being partly broken at the time being (dsj 0_8_62 is using the new Generic Network Provider,
but more reconstruction will be needed).
| Nested Class Summary |
|---|
| Nested classes/interfaces inherited from class de.humatic.dsj.DSFiltergraph |
|---|
DSFiltergraph.DSAudioStream |
| Nested classes/interfaces inherited from class java.awt.Canvas |
|---|
java.awt.Canvas.AccessibleAWTCanvas |
| Nested classes/interfaces inherited from class java.awt.Component |
|---|
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy |
| Field Summary | |
|---|---|
static int |
ATSC
BDA network types |
static int |
AUTO_PARSE
|
static int |
BDA_M4T_CUSTOM
BDA MPEG types |
static int |
BDA_M4T_NTSC
BDA MPEG types |
static int |
BDA_M4T_NTSC_NARROW
BDA MPEG types |
static int |
BDA_M4T_PAL
BDA MPEG types |
static int |
BDA_M4T_PAL_NARROW
BDA MPEG types |
static int |
BDA_MOD_1024QAM
Modulation types |
static int |
BDA_MOD_112QAM
Modulation types |
static int |
BDA_MOD_128QAM
Modulation types |
static int |
BDA_MOD_160QAM
Modulation types |
static int |
BDA_MOD_16QAM
Modulation types |
static int |
BDA_MOD_16VSB
Modulation types |
static int |
BDA_MOD_192QAM
Modulation types |
static int |
BDA_MOD_224QAM
Modulation types |
static int |
BDA_MOD_256QAM
Modulation types |
static int |
BDA_MOD_320QAM
Modulation types |
static int |
BDA_MOD_32QAM
Modulation types |
static int |
BDA_MOD_384QAM
Modulation types |
static int |
BDA_MOD_448QAM
Modulation types |
static int |
BDA_MOD_512QAM
Modulation types |
static int |
BDA_MOD_640QAM
Modulation types |
static int |
BDA_MOD_64QAM
Modulation types |
static int |
BDA_MOD_768QAM
Modulation types |
static int |
BDA_MOD_80QAM
Modulation types |
static int |
BDA_MOD_896QAM
Modulation types |
static int |
BDA_MOD_8VSB
Modulation types |
static int |
BDA_MOD_96QAM
Modulation types |
static int |
BDA_MOD_ANALOG_AMPLITUDE
Modulation types |
static int |
BDA_MOD_ANALOG_FREQUENCY
Modulation types |
static int |
BDA_MOD_BPSK
Modulation types |
static int |
BDA_MOD_MAX
Modulation types |
static int |
BDA_MOD_NOT_DEFINED
Modulation types |
static int |
BDA_MOD_NOT_SET
Modulation types |
static int |
BDA_MOD_OQPSK
Modulation types |
static int |
BDA_MOD_QPSK
Modulation types |
static int |
BDA_MT_CUSTOM
BDA MPEG types |
static int |
BDA_MT_NTSC
BDA MPEG types |
static int |
BDA_MT_NTSC_NARROW
BDA MPEG types |
static int |
BDA_MT_PAL
BDA MPEG types |
static int |
BDA_MT_PAL_NARROW
BDA MPEG types |
static int |
DVBC
BDA network types |
static int |
DVBS
BDA network types |
static int |
DVBT
BDA network types |
| Fields inherited from class java.awt.Component |
|---|
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT |
| Fields inherited from interface de.humatic.dsj.util.MPEGSource |
|---|
NO_AUDIO, RESOLVE |
| Fields inherited from interface java.awt.image.ImageObserver |
|---|
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH |
| Constructor Summary | |
|---|---|
DSBDAGraph(int DVBType,
int flags,
DSFilterInfo mpegDecoder,
DSFilterInfo audioDecoder,
java.beans.PropertyChangeListener pcl)
Sets up a TV Graph using the specified MPEG decoders. |
|
DSBDAGraph(int DVBType,
int flags,
java.beans.PropertyChangeListener pcl)
Sets up a TV graph, leaving decoder selection to DirectShow. |
|
| Method Summary | |
|---|---|
void |
broadcast(java.lang.String baseIP,
MPEGProgram[] prgs,
int flags)
Relays the transport stream received from the BDAReceiver to the network for IPBroadcasting. |
void |
dumpSITables(int PID,
int flags)
Creates an additional output on the demultiplexer and passes tables received on the given PID to java through PropertyChange events of type TABLE_RECEIVED. |
boolean |
dumpTransportStream(java.lang.String fileName,
boolean preview)
Writes the BDA receiver's original transport stream to the specified file. |
void |
enableEPG(boolean enabled)
Enables or disables the transfer of EPG (electronic program guide) data to java. |
static DSFilterInfo[] |
getBDADevices()
|
BDAChannelInfo[] |
getChannelsFromXML(int net)
Reads previously scanned valid program information from the dsj.xml file |
BDAChannelInfo |
getCurrentChannel()
|
EPGData[] |
getCurrentChannelEPG()
Returns now/next EPGData for currently tuned channel. |
EPGData[] |
getEPG()
Returns now/next EPGData for all channels on the currently active transponder. |
int |
getNetworkType()
|
int |
getPMT_PID()
Returns the PMT PID of the currently playing program. |
int[] |
getProgramPIDs()
Returns the elementary stream PIDs of the currently playing program. |
MPEGProgram[] |
getPrograms()
Returns an array of all programs seen in a stream. |
int[] |
getStreamTypes()
Returns the elementary streamtypes of the currently playing program. |
DSSampleBuffer |
interceptTransportStream(int flags)
Intercepts dataflow in the native filtergraph before the MPEG Demultiplexer. |
void |
interruptScan()
breaks an ongoing channel scan |
void |
loadLastChannel()
|
BDAChannelInfo[] |
performChannelScan(int timeout)
Scans frequencies for valid program streams. |
void |
persistToXML(int net,
BDAChannelInfo[] bdaCh)
Writes the information in the channel info array to the specified network node of the XML channellist file, that the DSBDAGraph node of the dsj.xml file points to. |
void |
saveLastChannel(BDAChannelInfo info)
|
BDAChannelInfo |
scanChannel(int[] params,
int timeout)
|
BDAChannelInfo |
scanChannel(int frequency,
int specific_1,
int specific_2,
int timeout)
Scans the given frequency for valid program streams and returns the first one found. |
BDAChannelInfo[] |
scanTransponder(int[] params,
int timeout)
|
BDAChannelInfo[] |
scanTransponder(int frequency,
int specific_1,
int specific_2,
int timeout)
Scans the given frequency for valid program streams. |
boolean |
setChannel(BDAChannelInfo info)
Tunes the receiver component of the graph to the given channel. |
static void |
setMPEGType(int type,
int w,
int h)
Instructs the dll to present a more specific mediatype on the demultiplexer's video output. |
static void |
setSatellite(java.lang.String name,
int lowOscillator,
int highOscillator)
|
| Methods inherited from class java.awt.Canvas |
|---|
createBufferStrategy, createBufferStrategy, getAccessibleContext, getBufferStrategy |
| Methods inherited from class java.awt.Component |
|---|
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, deliverEvent, disable, disableEvents, dispatchEvent, doLayout, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAlignmentX, getAlignmentY, getBackground, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentAt, getComponentAt, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeys, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getListeners, getLocale, getLocation, getLocation, getLocationOnScreen, getMaximumSize, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getToolkit, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, invalidate, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusCycleRoot, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, layout, list, list, list, list, list, locate, location, lostFocus, minimumSize, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, paramString, postEvent, preferredSize, prepareImage, prepareImage, print, printAll, processComponentEvent, processEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, reshape, resize, resize, setBackground, setBounds, setComponentOrientation, setCursor, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeys, setFocusTraversalKeysEnabled, setFont, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setMinimumSize, setName, setSize, setSize, setVisible, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle, validate |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
public static final int DVBT
public static final int DVBS
public static final int DVBC
public static final int ATSC
public static final int BDA_MT_PAL
public static final int BDA_MT_NTSC
public static final int BDA_MT_PAL_NARROW
public static final int BDA_MT_NTSC_NARROW
public static final int BDA_MT_CUSTOM
public static final int BDA_M4T_PAL
public static final int BDA_M4T_NTSC
public static final int BDA_M4T_PAL_NARROW
public static final int BDA_M4T_NTSC_NARROW
public static final int BDA_M4T_CUSTOM
public static final int BDA_MOD_NOT_SET
public static final int BDA_MOD_NOT_DEFINED
public static final int BDA_MOD_16QAM
public static final int BDA_MOD_32QAM
public static final int BDA_MOD_64QAM
public static final int BDA_MOD_80QAM
public static final int BDA_MOD_96QAM
public static final int BDA_MOD_112QAM
public static final int BDA_MOD_128QAM
public static final int BDA_MOD_160QAM
public static final int BDA_MOD_192QAM
public static final int BDA_MOD_224QAM
public static final int BDA_MOD_256QAM
public static final int BDA_MOD_320QAM
public static final int BDA_MOD_384QAM
public static final int BDA_MOD_448QAM
public static final int BDA_MOD_512QAM
public static final int BDA_MOD_640QAM
public static final int BDA_MOD_768QAM
public static final int BDA_MOD_896QAM
public static final int BDA_MOD_1024QAM
public static final int BDA_MOD_QPSK
public static final int BDA_MOD_BPSK
public static final int BDA_MOD_OQPSK
public static final int BDA_MOD_8VSB
public static final int BDA_MOD_16VSB
public static final int BDA_MOD_ANALOG_AMPLITUDE
public static final int BDA_MOD_ANALOG_FREQUENCY
public static final int BDA_MOD_MAX
public static int AUTO_PARSE
| Constructor Detail |
|---|
public DSBDAGraph(int DVBType,
int flags,
java.beans.PropertyChangeListener pcl)
throws DSJException
DSJException
public DSBDAGraph(int DVBType,
int flags,
DSFilterInfo mpegDecoder,
DSFilterInfo audioDecoder,
java.beans.PropertyChangeListener pcl)
throws DSJException
DSJException| Method Detail |
|---|
public static void setMPEGType(int type,
int w,
int h)
public static DSFilterInfo[] getBDADevices()
public boolean setChannel(BDAChannelInfo info)
throws DSJException
DSJException
public void broadcast(java.lang.String baseIP,
MPEGProgram[] prgs,
int flags)
throws java.lang.Exception
java.lang.Exception
public BDAChannelInfo[] performChannelScan(int timeout)
throws DSJException
DSJExceptionpublic void enableEPG(boolean enabled)
public BDAChannelInfo scanChannel(int frequency,
int specific_1,
int specific_2,
int timeout)
public BDAChannelInfo scanChannel(int[] params,
int timeout)
public BDAChannelInfo[] scanTransponder(int frequency,
int specific_1,
int specific_2,
int timeout)
public BDAChannelInfo[] scanTransponder(int[] params,
int timeout)
public void interruptScan()
public void persistToXML(int net,
BDAChannelInfo[] bdaCh)
throws DSJException
DSJExceptionpublic void saveLastChannel(BDAChannelInfo info)
public void loadLastChannel()
public BDAChannelInfo getCurrentChannel()
public BDAChannelInfo[] getChannelsFromXML(int net)
public static void setSatellite(java.lang.String name,
int lowOscillator,
int highOscillator)
public EPGData[] getEPG()
public EPGData[] getCurrentChannelEPG()
public boolean dumpTransportStream(java.lang.String fileName,
boolean preview)
throws DSJException
DSJExceptionpublic DSSampleBuffer interceptTransportStream(int flags)
public void dumpSITables(int PID,
int flags)
public int getNetworkType()
public int getPMT_PID()
MPEGSource
getPMT_PID in interface MPEGSourcepublic int[] getProgramPIDs()
MPEGSource
getProgramPIDs in interface MPEGSourcepublic int[] getStreamTypes()
MPEGSource
getStreamTypes in interface MPEGSourcepublic MPEGProgram[] getPrograms()
MPEGSource
getPrograms in interface MPEGSource
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||