playback.h
[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.
Questo argomento contiene codice per l'esercitazione Riproduzione audio/video in DirectShow.
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
#pragma once
class CVideoRenderer;
enum PlaybackState
{
STATE_NO_GRAPH,
STATE_RUNNING,
STATE_PAUSED,
STATE_STOPPED,
};
const UINT WM_GRAPH_EVENT = WM_APP + 1;
typedef void (CALLBACK *GraphEventFN)(HWND hwnd, long eventCode, LONG_PTR param1, LONG_PTR param2);
class DShowPlayer
{
public:
DShowPlayer(HWND hwnd);
~DShowPlayer();
PlaybackState State() const { return m_state; }
HRESULT OpenFile(PCWSTR pszFileName);
HRESULT Play();
HRESULT Pause();
HRESULT Stop();
BOOL HasVideo() const;
HRESULT UpdateVideoWindow(const LPRECT prc);
HRESULT Repaint(HDC hdc);
HRESULT DisplayModeChanged();
HRESULT HandleGraphEvent(GraphEventFN pfnOnGraphEvent);
private:
HRESULT InitializeGraph();
void TearDownGraph();
HRESULT CreateVideoRenderer();
HRESULT RenderStreams(IBaseFilter *pSource);
PlaybackState m_state;
HWND m_hwnd; // Video window. This window also receives graph events.
IGraphBuilder *m_pGraph;
IMediaControl *m_pControl;
IMediaEventEx *m_pEvent;
CVideoRenderer *m_pVideo;
};
Argomenti correlati