Class 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
    • Field Summary

      • Fields inherited from interface javax.media.Duration

        DURATION_UNBOUNDED, DURATION_UNKNOWN
    • Constructor Summary

      Constructors 
      Constructor Description
      DataSource()
      Constructor.
      DataSource​(javax.media.MediaLocator locator)
      Initializes a new DataSource instance from a specific MediaLocator.
    • Constructor Detail

      • DataSource

        public DataSource()
        Constructor.
      • DataSource

        public DataSource​(javax.media.MediaLocator locator)
        Initializes a new DataSource instance from a specific MediaLocator.
        Parameters:
        locator - the MediaLocator to create the new instance from
    • 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
      • 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:
        createStream in class AbstractPushBufferCaptureDevice
        Parameters:
        streamIndex - the zero-based index of the PushBufferStream in the list of streams of this PushBufferDataSource
        formatControl - 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)
      • 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:
        getSupportedFormats in class AbstractPushBufferCaptureDevice
        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:
        setFormat in class AbstractPushBufferCaptureDevice
        Parameters:
        streamIndex - the zero-based index of the PushBufferStream the Format of which is to be set
        oldValue - the last-known Format for the PushBufferStream at the specified streamIndex
        newValue - 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)