Home | History | Annotate | Download | only in win
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 // Implement a DirectShow input pin used for receiving captured frames from
      6 // a DirectShow Capture filter.
      7 
      8 #ifndef MEDIA_VIDEO_CAPTURE_WIN_SINK_INPUT_PIN_WIN_H_
      9 #define MEDIA_VIDEO_CAPTURE_WIN_SINK_INPUT_PIN_WIN_H_
     10 
     11 #include "media/video/capture/video_capture_device.h"
     12 #include "media/video/capture/video_capture_types.h"
     13 #include "media/video/capture/win/pin_base_win.h"
     14 #include "media/video/capture/win/sink_filter_win.h"
     15 
     16 namespace media {
     17 
     18 // Const used for converting Seconds to REFERENCE_TIME.
     19 extern const REFERENCE_TIME kSecondsToReferenceTime;
     20 
     21 // Input pin of the SinkFilter.
     22 class SinkInputPin : public PinBase {
     23  public:
     24   SinkInputPin(IBaseFilter* filter, SinkFilterObserver* observer);
     25   virtual ~SinkInputPin();
     26 
     27   void SetRequestedMediaFormat(const VideoCaptureFormat& format);
     28   // Returns the capability that is negotiated when this
     29   // pin is connected to a media filter.
     30   const VideoCaptureFormat& ResultingFormat();
     31 
     32   // Implement PinBase.
     33   virtual bool IsMediaTypeValid(const AM_MEDIA_TYPE* media_type);
     34   virtual bool GetValidMediaType(int index, AM_MEDIA_TYPE* media_type);
     35 
     36   STDMETHOD(Receive)(IMediaSample* media_sample);
     37 
     38  private:
     39   VideoCaptureFormat requested_format_;
     40   VideoCaptureFormat resulting_format_;
     41   SinkFilterObserver* observer_;
     42 
     43   DISALLOW_IMPLICIT_CONSTRUCTORS(SinkInputPin);
     44 };
     45 
     46 }  // namespace media
     47 
     48 #endif  // MEDIA_VIDEO_CAPTURE_WIN_SINK_INPUT_PIN_WIN_H_
     49