コード例 #1
0
#pragma warning disable 618,612
        private static IEncoderAPI checkEncoderAPI(IBaseFilter filterVideoEncoder, IBaseFilter filterCapture,
                                                   IBaseFilter filterMultiplexer, IBaseFilter filterVideoCompressor)
        {
            IEncoderAPI videoEncoder = null;

            if (filterVideoEncoder != null)
            {
                videoEncoder = filterVideoEncoder as IEncoderAPI;
            }

            if (videoEncoder == null && filterCapture != null)
            {
                videoEncoder = filterCapture as IEncoderAPI;
            }

            if (videoEncoder == null && filterMultiplexer != null)
            {
                videoEncoder = filterMultiplexer as IEncoderAPI;
            }

            if (videoEncoder == null && filterVideoCompressor != null)
            {
                videoEncoder = filterVideoCompressor as IEncoderAPI;
            }

            return(videoEncoder);
        }
コード例 #2
0
        /// <summary>
        /// Creates the object that implements the IQuality interface
        /// </summary>
        public static IQuality createQualityControl(Configuration configuration, IBaseFilter filterVideoEncoder,
                                                    IBaseFilter filterCapture, IBaseFilter filterMultiplexer,
                                                    IBaseFilter filterVideoCompressor)
        {
            ICodecAPI codecAPI = checkCodecAPI(filterVideoEncoder, filterCapture, filterMultiplexer, filterVideoCompressor);

            if (codecAPI != null)
            {
                return(new CodecAPIControl(configuration, codecAPI));
            }

            IVideoEncoder videoEncoder = checkVideoEncoder(filterVideoEncoder, filterCapture, filterMultiplexer,
                                                           filterVideoCompressor);

            if (videoEncoder != null)
            {
                return(new VideoEncoderControl(configuration, videoEncoder));
            }

#pragma warning disable 618,612
            IEncoderAPI encoderAPI = checkEncoderAPI(filterVideoEncoder, filterCapture, filterMultiplexer,
                                                     filterVideoCompressor);
            if (encoderAPI != null)
            {
                return(new EncoderAPIControl(configuration, encoderAPI));
            }
#pragma warning restore 618,612

            return(null);
        }
コード例 #3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="EncoderAPIControl"/> class.
 /// </summary>
 /// <param name="configuration">The encoder settings to use.</param>
 /// <param name="encoderAPI">The IEncoderAPI interface to the filter that must be used to control the quality.</param>
 public EncoderAPIControl(Configuration configuration, IEncoderAPI encoderAPI)
   : base(configuration)
 {
   _encoderAPI = encoderAPI;
   Log.Log.WriteFile("analog: IEncoderAPI supported by: " +
                     FilterGraphTools.GetFilterName(_encoderAPI as IBaseFilter) + "; Checking capabilities ");
   CheckCapabilities();
 }
コード例 #4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="EncoderAPIControl"/> class.
 /// </summary>
 /// <param name="configuration">The encoder settings to use.</param>
 /// <param name="encoderAPI">The IEncoderAPI interface to the filter that must be used to control the quality.</param>
 public EncoderAPIControl(Configuration configuration, IEncoderAPI encoderAPI)
     : base(configuration)
 {
     _encoderAPI = encoderAPI;
     Log.Log.WriteFile("analog: IEncoderAPI supported by: " +
                       FilterGraphTools.GetFilterName(_encoderAPI as IBaseFilter) + "; Checking capabilities ");
     CheckCapabilities();
 }