Class DataSource
- java.lang.Object
-
- javax.media.protocol.DataSource
-
- javax.media.protocol.PushBufferDataSource
-
- org.jitsi.impl.neomedia.jmfext.media.protocol.AbstractPushBufferCaptureDevice
-
- org.jitsi.impl.neomedia.jmfext.media.protocol.AbstractVideoPushBufferCaptureDevice
-
- org.jitsi.impl.neomedia.jmfext.media.protocol.directshow.DataSource
-
- All Implemented Interfaces:
javax.media.Controls,javax.media.Duration,javax.media.protocol.CaptureDevice,javax.media.protocol.Controls
public class DataSource extends AbstractVideoPushBufferCaptureDevice
Implements a CaptureDevice and a DataSource using DirectShow.- Author:
- Lyubomir Marinov, Sebastien Vincent
-
-
Constructor Summary
Constructors Constructor Description DataSource()Constructor.DataSource(javax.media.MediaLocator locator)Initializes a new DataSource instance from a specific MediaLocator.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected javax.media.control.FrameRateControlcreateFrameRateControl()Creates a new FrameRateControl instance which is to allow the getting and setting of the frame rate of this AbstractVideoPushBufferCaptureDevice.protected DirectShowStreamcreateStream(int streamIndex, javax.media.control.FormatControl formatControl)Create a new PushBufferStream which is to be at a specific zero-based index in the list of streams of this PushBufferDataSource.protected voiddoConnect()Opens a connection to the media source specified by the MediaLocator of this DataSource.protected voiddoDisconnect()Closes the connection to the media source specified by the MediaLocator of this DataSource.static intgetDSPixFmt(int ffmpegPixFmt)Gets the FFmpeg pixel format matching a specific DirectShow Specification pixel format.static intgetFFmpegPixFmt(int dsPixFmt)Gets the DirectShow pixel format matching a specific FFmpeg pixel format.protected javax.media.Format[]getSupportedFormats(int streamIndex)Gets the Formats which are to be reported by a FormatControl as supported formats for a PushBufferStream at a specific zero-based index in the list of streams of this PushBufferDataSource.protected javax.media.FormatsetFormat(int streamIndex, javax.media.Format oldValue, javax.media.Format newValue)Attempts to set the Format to be reported by the FormatControl of a PushBufferStream at a specific zero-based index in the list of streams of this PushBufferDataSource.-
Methods inherited from class org.jitsi.impl.neomedia.jmfext.media.protocol.AbstractPushBufferCaptureDevice
connect, disconnect, doStart, doStop, getCaptureDeviceInfo, getContentType, getControl, getControls, getDuration, getFormat, getFormatControls, getStreams, getStreamSyncRoot, start, stop, streams
-
-
-
-
Method Detail
-
getDSPixFmt
public static int getDSPixFmt(int ffmpegPixFmt)
Gets the FFmpeg pixel format matching a specific DirectShow Specification pixel format.- Parameters:
ffmpegPixFmt- FFmpeg format- Returns:
- the DirectShow pixel format matching the specified FFmpeg format
-
getFFmpegPixFmt
public static int getFFmpegPixFmt(int dsPixFmt)
Gets the DirectShow pixel format matching a specific FFmpeg pixel format.- Parameters:
dsPixFmt- the DirectShow pixel format to get the matching FFmpeg pixel format of- Returns:
- the FFmpeg pixel format matching the specified DirectShow pixel
-
createFrameRateControl
protected javax.media.control.FrameRateControl createFrameRateControl()
Creates a new FrameRateControl instance which is to allow the getting and setting of the frame rate of this AbstractVideoPushBufferCaptureDevice.- Overrides:
createFrameRateControlin classAbstractVideoPushBufferCaptureDevice- Returns:
- a new FrameRateControl instance which is to allow the getting and setting of the frame rate of this AbstractVideoPushBufferCaptureDevice
- See Also:
AbstractPushBufferCaptureDevice.createFrameRateControl()
-
createStream
protected DirectShowStream createStream(int streamIndex, javax.media.control.FormatControl formatControl)
Create a new PushBufferStream which is to be at a specific zero-based index in the list of streams of this PushBufferDataSource. The Format-related information of the new instance is to be abstracted by a specific FormatControl.- Specified by:
createStreamin classAbstractPushBufferCaptureDevice- Parameters:
streamIndex- the zero-based index of the PushBufferStream in the list of streams of this PushBufferDataSourceformatControl- the FormatControl which is to abstract the Format-related information of the new instance- Returns:
- a new PushBufferStream which is to be at the specified streamIndex in the list of streams of this PushBufferDataSource and which has its Format-related information abstracted by the specified formatControl
- See Also:
AbstractPushBufferCaptureDevice.createStream(int, FormatControl)
-
doConnect
protected void doConnect() throws IOExceptionOpens a connection to the media source specified by the MediaLocator of this DataSource.- Overrides:
doConnectin classAbstractPushBufferCaptureDevice- Throws:
IOException- if anything goes wrong while opening the connection to the media source specified by the MediaLocator of this DataSource- See Also:
AbstractPushBufferCaptureDevice.doConnect()
-
doDisconnect
protected void doDisconnect()
Closes the connection to the media source specified by the MediaLocator of this DataSource.- Overrides:
doDisconnectin classAbstractPushBufferCaptureDevice- See Also:
AbstractPushBufferCaptureDevice.doDisconnect()
-
getSupportedFormats
protected javax.media.Format[] getSupportedFormats(int streamIndex)
Gets the Formats which are to be reported by a FormatControl as supported formats for a PushBufferStream at a specific zero-based index in the list of streams of this PushBufferDataSource.- Overrides:
getSupportedFormatsin classAbstractPushBufferCaptureDevice- Parameters:
streamIndex- the zero-based index of the PushBufferStream for which the specified FormatControl is to report the list of supported Formats- Returns:
- an array of Formats to be reported by a FormatControl as the supported formats for the PushBufferStream at the specified streamIndex in the list of streams of this PushBufferDataSource
- See Also:
AbstractPushBufferCaptureDevice.getSupportedFormats(int)
-
setFormat
protected javax.media.Format setFormat(int streamIndex, javax.media.Format oldValue, javax.media.Format newValue)Attempts to set the Format to be reported by the FormatControl of a PushBufferStream at a specific zero-based index in the list of streams of this PushBufferDataSource. The PushBufferStream does not exist at the time of the attempt to set its Format.- Overrides:
setFormatin classAbstractPushBufferCaptureDevice- Parameters:
streamIndex- the zero-based index of the PushBufferStream the Format of which is to be setoldValue- the last-known Format for the PushBufferStream at the specified streamIndexnewValue- the Format which is to be set- Returns:
- the Format to be reported by the FormatControl of the PushBufferStream at the specified streamIndex in the list of streams of this PushBufferStream or null if the attempt to set the Format did not success and any last-known Format is to be left in effect
- See Also:
AbstractPushBufferCaptureDevice.setFormat(int, Format, Format)
-
-