de.humatic.dsj
Class DSHDVTape

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Canvas
          extended by de.humatic.dsj.DSFiltergraph
              extended by de.humatic.dsj.DSHDVTape
All Implemented Interfaces:
AVCDevice, MPEGSource, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible

public class DSHDVTape
extends DSFiltergraph
implements AVCDevice, MPEGSource

DSHDVTape wraps DirectShow functionality for IEEE 1394 (aka Firewire, iLink) HDV camcorders and D-VHS decks working with MPEG compression.
Both camera and VCR mode are supported.

See Also:
Serialized Form

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 AVC
          Device type
static int C2F
          Software operation mode
static int C2TS
          Software operation mode
static int CAMERA
          Hardware operation mode
static int PREVIEW
          Software operation mode
static int T2F
          Software operation mode
static int T2TS
          Software operation mode
static int UVC
          Device type
static int VCR
          Hardware operation mode
 
Fields inherited from class de.humatic.dsj.DSFiltergraph
ACTIVATING, ANAMORPHIC, ASYNC_BUFFER_GET, ASYNC_BUFFER_REQ, AUDIO_BUFFER_REQUEST, BDA, BDA_PRG_CHANGED, BDA_SCAN_PROGRESS, BDA_SCANNED_FREQ, BDA_SIG_REC, BUFFER_COMPLETE, BUFFERING, CALLER, CAP_STATE_CHANGED, CAPTURE, CLOSED, CLOSING, COMP_AUDIO_BUFFER_REQ, COMP_BUFFER_FILLED, COMP_VIDEO_BUFFER_REQ, D3D9, DD7, DECKLINK, DELIVER_AUDIO, DES_ERROR, DONE, DV, DV_STATE_CHANGED, DVD, DVD_FORMAT_CHANGED, DVD_MENU_ENABLED, E_CANT_PUMP_AUDIO, E_INIT_HEADLESS, EDITABLE, ENTER_FS, EPG, EVR, EXIT_FS, EXPORT_DONE, EXPORT_FINISHING, EXPORT_PROGRESS, EXPORT_STARTED, EXT_API_EVENT, FILTER_CHANGED, FORMAT_CHANGED, FRAME_CALLBACK, FRAME_LOCKED, FRAME_NOTIFY, GD, GE_DEVICE_CONNECTED, GE_DEVICE_LOST, GE_REF_REC_STOPPED, GRAPH, GRAPH_CHANGED, GRAPH_ERROR, GRAPH_EVENT, HDV, HDV_STATE_CHANGED, HEADLESS, INDEXER_DONE, INDEXER_STARTED, INIT_MUTED, INIT_PAUSED, INITIALIZED, IP_READY, J2D, JAVA_AUTODRAW, JAVA_POLL, JAVA_POLL_RGB, JAVASOUND, KEY_EVENT, KF_NOTIFY, LOCK_BUFFER, LOOP, MGD, MOUSE_ENABLED, MOUSE_EVENT, MOVIE, NATIVE_FORCE_GDI, NIO_UPDATE, NO_AMW, NO_SYNC, NULL, ONESHOT, OVERLAY, OVERLAY_BUFFER_REQUEST, PLAYLIST_PARSED, RENDER_NATIVE, RESTART_REQ, RGB32, RTCP_EVENT, RTMP_EVENT, RTMP_SO_CHANGED, RTMP_STATE_CHANGED, SAMPLE_BUFFER_FILLED, SAVE_DONE, SAVE_STARTED, SBE, SBE_REC_STATE_CHANGED, SERVICE_ERROR, SERVICE_EVENT, SINK_ERROR, SINK_STATE_CHANGED, SIZE_CHANGED, SOURCE_ERROR, SOURCE_STATE_CHANGED, SOURCE_STATE_NOTIFY, SOURCE_USER_DATA, STILL_IMG_RECEIVED, STREAM_SEEK, SUBCLASS_EVENT, SWING, SYNC_BUFFER_REQ, TABLE_RECEIVED, TIME_FORMAT_CHANGED, TRANS_IN_PLACE, TRANSPORT, TS_BUFFER_FILLED, type, VIDEO_BUFFER_REQUEST, VMR_EMBED, VMR7, VMR9, VPJ, YUV, YUV_ORG
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface de.humatic.dsj.AVCDevice
ED_MODE_FF, ED_MODE_FREEZE, ED_MODE_PLAY, ED_MODE_REW, ED_MODE_STEP_FW, ED_MODE_STEP_REV, ED_MODE_STOP
 
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
DSHDVTape(int flags, DSFilterInfo deviceInfo, DSFilterInfo videoDecoderInfo, DSFilterInfo audioDecoderInfo, java.beans.PropertyChangeListener pcl)
          Use this constructor with a DSFilterInfo for a HDV device as returned by DSHDVTape.getHDVDevices(...) when you need to work with (one out of) multiple HDV devices.
If %deviceInfo is null or DSFilterInfo.doNotRender(), this will use the first device found.
You can also specify mepeg decoders with this constructor.
DSHDVTape(int flags, java.beans.PropertyChangeListener pcl)
          This constructor creates a HDV graph from the first HDV Device found.
 
Method Summary
 void captureElementaryStreams(java.lang.String path, boolean preview)
          Captures video and audio elementary streams after the transport stream has been demultiplexed.
 void captureTransportStream(java.lang.String path, boolean preview, int flags)
          Captures the entire transport stream from the device into a file at %path.
 void extRecord()
          Toggles recording on the device (remote control function)
 void fastFwd()
          VCR transport
 java.lang.String getDeviceDescription()
          Returns a string containing device manufacturer and model
 int getDeviceMode()
          Returns the current hardware operation mode, i.e.
 int getExtTransportState()
           
static DSFilterInfo[] getHDVDevices()
          Returns DSFilterInfos for all HDV devices currently connected
 int getOperationMode()
          Returns the current software operation mode
 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.
 void pause()
          Toggles VCR playback
 void record()
          Toggles recording when HDVDevice is in camera mode or grabbing tape to file
 void rewind()
          VCR transport
 void scanBwd()
          VCR transport
 void scanFwd()
          VCR transport
 void seekToTime(int msec)
           
 void seekToTime(int h, int m, int s, int fr)
          Winds tape to seekTime when in VCR mode
 int sendRawAVC(byte[] cmd)
           
 void setPreview()
          Resets a graph that has been used to capture back into its normal preview state.
 void stepBwd()
          VCR transport
 void stepFwd()
          VCR transport
 void stop()
          Stops the graph.
 
Methods inherited from class de.humatic.dsj.DSFiltergraph
addColorSpaceConverter, addFilterToGraph, addNotify, addPropertyChangeListener, asComponent, connectDump, connectSink, createDSFiltergraph, dispose, dumpGraph, findFilterByName, findRenderer, flipImage, getActive, getAspectLocked, getAspectRatio, getAudioProperties, getAudioStream, getBitDepth, getData, getDataSize, getDisplaySize, getDuration, getEffectiveFrameRate, getFrameRate, getFullScreenWindow, getID, getImage, getInfo, getLoop, getMediaDimension, getMinimumSize, getOutFlags, getPan, getPreferredSize, getRate, getRendererControls, getTime, getVolume, getYUVType, goFullScreen, graphChanged, hasMediaOfType, insertFilter, insertOverlayFilter, insertSampleAccessFilter, insertTransInPlaceFilter, isFullScreen, isSubGraph, leaveFullScreen, listFilters, lockAspectRatio, paint, play, queryCapability, redraw, register, reloadFilter, removeFilter, removeNotify, removePropertyChangeListener, removeSink, setAudioRenderer, setAviExportOptions, setBounds, setClockSource, setEvent, setLoop, setPan, setPreferredSize, setRate, setTimeValue, setVolume, step, tearDown, update
 
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

CAMERA

public static final int CAMERA
Hardware operation mode

See Also:
Constant Field Values

VCR

public static final int VCR
Hardware operation mode

See Also:
Constant Field Values

PREVIEW

public static final int PREVIEW
Software operation mode

See Also:
Constant Field Values

T2TS

public static final int T2TS
Software operation mode

See Also:
Constant Field Values

T2F

public static final int T2F
Software operation mode

See Also:
Constant Field Values

C2TS

public static final int C2TS
Software operation mode

See Also:
Constant Field Values

C2F

public static final int C2F
Software operation mode

See Also:
Constant Field Values

AVC

public static final int AVC
Device type

See Also:
Constant Field Values

UVC

public static final int UVC
Device type

See Also:
Constant Field Values
Constructor Detail

DSHDVTape

public DSHDVTape(int flags,
                 java.beans.PropertyChangeListener pcl)
          throws DSJException
This constructor creates a HDV graph from the first HDV Device found. This is usually a camera connected to the first firewire port.
dsj will let DirectShow decide, what mpeg decoders to use unless you have specified preferences in the setup file.

Throws:
DSJException

DSHDVTape

public DSHDVTape(int flags,
                 DSFilterInfo deviceInfo,
                 DSFilterInfo videoDecoderInfo,
                 DSFilterInfo audioDecoderInfo,
                 java.beans.PropertyChangeListener pcl)
          throws DSJException
Use this constructor with a DSFilterInfo for a HDV device as returned by DSHDVTape.getHDVDevices(...) when you need to work with (one out of) multiple HDV devices.
If %deviceInfo is null or DSFilterInfo.doNotRender(), this will use the first device found.
You can also specify mepeg decoders with this constructor. In case these are null or DSFilterInfo.doNotRender(), dsj will look for preferences in the setup file (and if these are also null let DirectShow decide, what decoders to use).

Throws:
DSJException
Method Detail

getDeviceMode

public int getDeviceMode()
Returns the current hardware operation mode, i.e. camera or vcr

Specified by:
getDeviceMode in interface AVCDevice

getOperationMode

public int getOperationMode()
Returns the current software operation mode


getDeviceDescription

public java.lang.String getDeviceDescription()
Returns a string containing device manufacturer and model


rewind

public void rewind()
            throws DSJException
VCR transport

Specified by:
rewind in interface AVCDevice
Throws:
DSJException

scanBwd

public void scanBwd()
             throws DSJException
VCR transport

Specified by:
scanBwd in interface AVCDevice
Throws:
DSJException

stepBwd

public void stepBwd()
             throws DSJException
VCR transport

Specified by:
stepBwd in interface AVCDevice
Throws:
DSJException

fastFwd

public void fastFwd()
             throws DSJException
VCR transport

Specified by:
fastFwd in interface AVCDevice
Throws:
DSJException

scanFwd

public void scanFwd()
             throws DSJException
VCR transport

Specified by:
scanFwd in interface AVCDevice
Throws:
DSJException

stepFwd

public void stepFwd()
             throws DSJException
VCR transport

Specified by:
stepFwd in interface AVCDevice
Throws:
DSJException

pause

public void pause()
Toggles VCR playback

Overrides:
pause in class DSFiltergraph

stop

public void stop()
Description copied from class: DSFiltergraph
Stops the graph. This can make a significant difference to pausing at points.
For example all capture classes will close the file they're capturing to on stop(). In most cases a filtergraph must be stopped to change its wiring ((re)connect pins). Stopping a filtergraph does not close and terminate it (dispose() does)!

Overrides:
stop in class DSFiltergraph

record

public void record()
            throws DSJException
Toggles recording when HDVDevice is in camera mode or grabbing tape to file

Throws:
DSJException

extRecord

public void extRecord()
               throws DSJException
Toggles recording on the device (remote control function)

Throws:
DSJException

seekToTime

public void seekToTime(int h,
                       int m,
                       int s,
                       int fr)
                throws DSJException
Winds tape to seekTime when in VCR mode

Specified by:
seekToTime in interface AVCDevice
Throws:
DSJException

seekToTime

public void seekToTime(int msec)

sendRawAVC

public int sendRawAVC(byte[] cmd)
Specified by:
sendRawAVC in interface AVCDevice

getExtTransportState

public int getExtTransportState()
Specified by:
getExtTransportState in interface AVCDevice

captureTransportStream

public void captureTransportStream(java.lang.String path,
                                   boolean preview,
                                   int flags)
                            throws DSJException
Captures the entire transport stream from the device into a file at %path.

Throws:
DSJException

captureElementaryStreams

public void captureElementaryStreams(java.lang.String path,
                                     boolean preview)
                              throws DSJException
Captures video and audio elementary streams after the transport stream has been demultiplexed. There is no need to specify a file extension, dsj will name the resulting files %path.m2v and %path.m2a.

Throws:
DSJException

setPreview

public void setPreview()
Resets a graph that has been used to capture back into its normal preview state.


getHDVDevices

public static DSFilterInfo[] getHDVDevices()
Returns DSFilterInfos for all HDV devices currently connected


getPMT_PID

public int getPMT_PID()
Description copied from interface: MPEGSource
Returns the PMT PID of the currently playing program.

Specified by:
getPMT_PID in interface MPEGSource

getProgramPIDs

public int[] getProgramPIDs()
Description copied from interface: MPEGSource
Returns the elementary stream PIDs of the currently playing program.

Specified by:
getProgramPIDs in interface MPEGSource

getStreamTypes

public int[] getStreamTypes()
Description copied from interface: MPEGSource
Returns the elementary streamtypes of the currently playing program.

Specified by:
getStreamTypes in interface MPEGSource

getPrograms

public MPEGProgram[] getPrograms()
Description copied from interface: MPEGSource
Returns an array of all programs seen in a stream. This is primarily used with multi program broadcasts. Only the playing stream may have all fields set unless the source class has been instructed to uncover all stream PIDs and types.

Specified by:
getPrograms in interface MPEGSource