de.humatic.dsj.src
Class MKVSource

java.lang.Object
  extended by de.humatic.dsj.src.Source
      extended by de.humatic.dsj.src.NetworkSource
          extended by de.humatic.dsj.src.MKVSource

public class MKVSource
extends NetworkSource

MKVSource is a yet rather incomplete Matroska demultiplexing source and at the time being (dsj 0_8_62) mainly targeting WebM streaming. Same as for WebM playback in DSMovie you will need the VP8 decoder from the WebM project and a Vorbis decoder (ffdshow will do, Xiph's Vorbis Decode Filter will not connect to non-ogg streams!).
The source supports both webm and Matroska doctypes and should work with H264 and other mpeg4 codecs alike, but as the parser implementation is still far from complete it is very likely that you will find streams / files that do not yet work. Feedback is welcome.


Field Summary
 
Fields inherited from class de.humatic.dsj.src.NetworkSource
BUFFER_OVERFLOW, CONNECTION_TIMEOUT, FASTSTART, H264_FASTSTART, H264_FORCE_INLINE_SPS, H264_OMMIT_SPS, H264_PASS_INLINE_SPS, IDLE_TIMEOUT, KF_NOTIFY, LIVE_SRC, MAX_BUFFER_TIME, MAX_DURATION, MAX_FRAME_TIME, NO_USER_PROMPT, READ_USER_DATA, RECEIVE_TIMEOUT, RTCP_RECEIVE_ERROR, SEEK_FAILURE, SOCKET_ERROR, STARVING, UDP_UNCONNECTED
 
Fields inherited from class de.humatic.dsj.src.Source
ASYNC, AUTO_GC, DIRECT, ES, FILTER_SETUP_ERROR, FLV, HTTP, HTTP_AUDIO, JAS, MJPG, MKV, MP4, PSNET, PULL, PUSH, RAW, RTMP, RTP, RTSP, SHOUTCAST, SS_CLOSED, SS_CONNECT, SS_CONNECTED, SS_DONE, SS_EOS, SS_FORMAT_READ, SS_RUNNING, SS_SEEKING, SS_SETUP, SS_STREAMS_READ, SS_TCP_ROLLOVER, TIMEOUT, TSFILE, TSNET, UNKNOWN
 
Constructor Summary
MKVSource(java.net.URL vidURL, int flags, java.beans.PropertyChangeListener listener)
          Opens the MKV / WebM file or stream at the given http:// or file:// URL.
 
Method Summary
 boolean canSeek()
          Overridden to return false, this source can not yet seek.
 void closeSource(boolean terminate)
          Closes down the source.
 DSGraph createGraph(int graphFlags)
          Creates a DSGraph object with CompressedJavaSource filters that are fed from this source.
 DSGraph createGraph(int graphFlags, DSFilterInfo videoDecoder, DSFilterInfo audioDecoder)
          Creates a DSGraph object with CompressedJavaSource filters, fed from this source and the given video and audio decoders.
 CompressedJavaSource createSourceFilter(DSMediaType mediaType)
           
 DSMediaType[] getMediaTypes()
          Returns the media types created by this source.
 int getMinBufferTime()
          Returns this Source's minimum buffer requirements in msec worth of data.
 int getNumChannels()
          Returns the number of media channels this source delivers (and thus the number of CompressedJavaSource filters it will create).
 CompressedJavaSource[] getSourceFilters()
          Returns all the CompressedJavaSource filters, that the Source created.
 int getSourceTime()
           
static void setMinBufferTime(int time)
           
 void setSourceTime(int time)
          Repositions the source, application code should rather not use this method directly, but stick with DSFiltergraph methods.
 
Methods inherited from class de.humatic.dsj.src.NetworkSource
configurePasswordDialog, getDefaultInterfaceAddress, getPasswordDialogOptions, getServerInfo, getTimeConstraint, setConnectionTimeout, setHTTPConnector, setNetworkInterface, setSocketFactory, setTimeConstraint, setUserAgent
 
Methods inherited from class de.humatic.dsj.src.Source
addSourceFilter, asyncRead, createSourceFilter_async, createSourceFilter, getAvailable, getBuffered, getGraph, getID, getMaxTimeLoaded, getOffsetTime, getPath, getSourceDuration, getSourceFilter, getSourceFlags, getTransport, getType, isLive, notifyChannelFailure, queryParameter_int, read, sendEvent, setOffsetTime, setSourceRate, streamSeek, syncRead
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MKVSource

public MKVSource(java.net.URL vidURL,
                 int flags,
                 java.beans.PropertyChangeListener listener)
          throws java.lang.Exception
Opens the MKV / WebM file or stream at the given http:// or file:// URL.

Throws:
java.lang.Exception
Method Detail

closeSource

public void closeSource(boolean terminate)
Description copied from class: Source
Closes down the source. When %terminate is true, all socket and stream resources etc. will also be freed. This method is called internally when disposing off the graph that was using this source and is not normally used by application code.

Overrides:
closeSource in class Source

getNumChannels

public int getNumChannels()
Description copied from class: Source
Returns the number of media channels this source delivers (and thus the number of CompressedJavaSource filters it will create). For an audio/video RTSP stream this will be two, while for a transport stream it will be only one as demultiplexing is done on the native side.

Overrides:
getNumChannels in class Source

canSeek

public boolean canSeek()
Overridden to return false, this source can not yet seek.

Overrides:
canSeek in class Source

setMinBufferTime

public static void setMinBufferTime(int time)

getMinBufferTime

public int getMinBufferTime()
Description copied from class: Source
Returns this Source's minimum buffer requirements in msec worth of data. Usually only PUSH mode network sources work with buffers.

Overrides:
getMinBufferTime in class Source

setSourceTime

public void setSourceTime(int time)
Description copied from class: Source
Repositions the source, application code should rather not use this method directly, but stick with DSFiltergraph methods. The DSGraph created by a Source knows best when and how to interfere with the javaside data reading.

Overrides:
setSourceTime in class Source

getSourceTime

public int getSourceTime()
Overrides:
getSourceTime in class Source

createGraph

public DSGraph createGraph(int graphFlags)
Description copied from class: Source
Creates a DSGraph object with CompressedJavaSource filters that are fed from this source.

Overrides:
createGraph in class Source

createGraph

public DSGraph createGraph(int graphFlags,
                           DSFilterInfo videoDecoder,
                           DSFilterInfo audioDecoder)
                    throws DSJException
Description copied from class: Source
Creates a DSGraph object with CompressedJavaSource filters, fed from this source and the given video and audio decoders. This is for special use cases where you know exactly what media formats to expect. Any decoder you do not want to specify may be null or DSFilterInfo.doNotRender(). Failure to put a given decoder into the graph will be announced via GRAPH_ERROR events and dsj will try to automatically pick an alternative (no exception will be thrown!).

Overrides:
createGraph in class Source
Throws:
DSJException

createSourceFilter

public CompressedJavaSource createSourceFilter(DSMediaType mediaType)

getSourceFilters

public CompressedJavaSource[] getSourceFilters()
Description copied from class: Source
Returns all the CompressedJavaSource filters, that the Source created.

Overrides:
getSourceFilters in class Source

getMediaTypes

public DSMediaType[] getMediaTypes()
Description copied from class: Source
Returns the media types created by this source. Depending on the time of calling, this method needs to be taken with care as during format negotiation mediatype information may not yet or only be partially available.

Overrides:
getMediaTypes in class Source