blob: 04518d9b6229b9e1ca392fcfc39e5e29eb34b53b [file] [log] [blame]
// Copyright (c) 2010 The WebM project authors. All Rights Reserved.
//
// Use of this source code is governed by a BSD-style license and patent
// grant that can be found in the LICENSE file in the root of the source
// tree. All contributing project authors may be found in the AUTHORS
// file in the root of the source tree.
#pragma once
#include "webmmuxpin.hpp"
#include "graphutil.hpp"
namespace WebmMux
{
class Outpin : public Pin
{
Outpin(const Outpin&);
Outpin& operator=(const Outpin&);
public:
explicit Outpin(Filter*);
~Outpin();
void Init(); //transition from Stopped
void Final(); //transitio to Stopped
//IUnknown interface:
HRESULT STDMETHODCALLTYPE QueryInterface(const IID&, void**);
ULONG STDMETHODCALLTYPE AddRef();
ULONG STDMETHODCALLTYPE Release();
//IPin interface:
HRESULT STDMETHODCALLTYPE Connect(IPin*, const AM_MEDIA_TYPE*);
//HRESULT STDMETHODCALLTYPE Disconnect();
HRESULT STDMETHODCALLTYPE ReceiveConnection(
IPin*,
const AM_MEDIA_TYPE*);
HRESULT STDMETHODCALLTYPE QueryAccept(const AM_MEDIA_TYPE*);
HRESULT STDMETHODCALLTYPE QueryInternalConnections(
IPin**,
ULONG*);
HRESULT STDMETHODCALLTYPE EndOfStream();
HRESULT STDMETHODCALLTYPE BeginFlush();
HRESULT STDMETHODCALLTYPE EndFlush();
HRESULT STDMETHODCALLTYPE NewSegment(
REFERENCE_TIME,
REFERENCE_TIME,
double);
//local functions
HRESULT GetCurrentPosition(LONGLONG&) const;
protected:
virtual HRESULT OnDisconnect();
private:
GraphUtil::IMemAllocatorPtr m_pAllocator;
ALLOCATOR_PROPERTIES m_props;
public:
IStreamPtr m_pStream;
};
} //end namespace WebmMux