OROCHI
 
Loading...
Searching...
No Matches
GxMovieDriverWindows.h
Go to the documentation of this file.
1//===========================================================================
9//===========================================================================
10#pragma once
11
12#include <windows.h>
13#include <atlcomcli.h>
14#include <dshow.h>
15
16#include "qedit.h"
17
18GX_MOVIE_NAMESPACE_BEGIN()
19
20//===========================================================================
22//===========================================================================
24{
25 //-----------------------------------------------------------
27 //-----------------------------------------------------------
29public:
30 // RTTI宣言
31 GX_RTTI_CLASS(GxMovieDriver, GxClassBase)
32
33
34 //-----------------------------------------------------------
36 //-----------------------------------------------------------
38public:
43
45 b32 initialize( const GxMoviePlayerInitializeInfo& information, GX_CSTR fullFilePath );
47 void release(void);
49 b32 terminate( void );
50
52 //-----------------------------------------------------------
54 //-----------------------------------------------------------
56public:
58 void update( void );
59
61 b32 play( void );
63 b32 stop( void );
65 b32 pause( b32 bPause );
67 b32 seek(s32 seekOffset);
68
69private:
71 b32 createTexture(void);
73 b32 updateTexture(void);
75 void renderTexture(void);
76
78 b32 activeAudioMultiChannel(void);
80 b32 connectPins(IBaseFilter* pOutputFilter, u32 outputNum, IBaseFilter* pInputFilter, u32 inputNum);
82 b32 disconnectPins(IBaseFilter* pOutputFilter, u32 outputNum, IBaseFilter* pInputFilter, u32 inputNum);
84 void findPin(IBaseFilter* pBaseFilter, PIN_DIRECTION pinDirection, s32 pinNumber, IPin** ppDstPin);
85
87 //-----------------------------------------------------------
89 //-----------------------------------------------------------
91public:
93 b32 setVolume( f32 volume );
95 b32 getVolume( f32& volume );
97 b32 setPlaySpeed( f32 speed );
99 b32 setScreenOffset( f32 x, f32 y );
101 b32 setScreenSize( f32 width, f32 height );
103 GX_FORCE_INLINE b32 setPriority(u8 priority, f32 z) { _priority = priority; _z = z; return true; }
107 f32 getTime( void );
109 f32 getTotalTime( void );
111 //note: 設定されている場合はマテリアルのカラーマップを上書きし、設定されていなければスプライト描画を行う
112 void setTargetMaterial( GxRenderMaterial* pTargetMaterial );
113
115 GX_FORCE_INLINE b32 setRenderHud(b32 isRenderHud) { _isRenderHud = isRenderHud; return true; }
117 constexpr GxResTexture* getTextureResource( void ) const { return _pTexture; }
119 constexpr GxRenderTexture* getRenderTexture(void) const { return _pRenderTexture; }
120
122 GX_FORCE_INLINE void setScaleColor(const GxColor& scaleColor){ _scaleColor = scaleColor; }
123
125 GX_FORCE_INLINE b32 isLoop( void ) const { return _isLoop; }
127 GX_FORCE_INLINE b32 setLoop(b32 isLoop) { _isLoop = isLoop; return true; }
128
133
135 constexpr void setRenderViewPriority(RENDER_VIEW view){ _renderView = view; }
137 constexpr void setRenderSubViewPriority(RENDER_SUB_VIEW subView){ _renderSubView = subView; }
139 constexpr void setRenderPriority(RENDER_PASS pass){ _renderPass = pass; }
141 constexpr void setRenderSubPriority(f32 priority){ _renderSubPriority = priority; }
142
144 //-------------------------------------------------------------
146 //-------------------------------------------------------------
148private:
149 GxResTexture* _pTexture;
150 GxRenderTexture* _pRenderTexture;
151 GxRenderTexture* _pRenderTextureVideo;
152 GxStringW _fileName;
153 GxVector2 _screenOffset;
154 GxVector2 _screenSize;
155 b32 _isSetScreenSize;
156 GxPoint2 _videoSize;
157 u8* _pScreenBuffer;
158 u32 _lineSize;
159 GxRenderMaterial* _pTargetMaterial;
160 GxResTexture* _pTargetColorTexture;
161
162 GX_HANDLE _handleSamplerTexture;
163 GX_HANDLE _handleProjectionMatrix2D;
164
165 RENDER_VIEW _renderView;
166 RENDER_SUB_VIEW _renderSubView;
167 RENDER_PASS _renderPass;
168 f32 _renderSubPriority;
169
170 GxResShaderPackage* _pShaderPackage;
171 GxRenderVertexDeclaration* _pVertexDeclaration;
172 GxRenderVertexBuffer* _pVertexBuffer;
173
174 CComPtr<IGraphBuilder> _graphBuilder;
175 CComPtr<ISampleGrabber> _sampleGrabber;
176 CComPtr<IMediaControl> _mediaControl;
177 CComPtr<IMediaPosition> _mediaPosition;
178 CComPtr<IMediaSeeking> _mediaSeeking;
179 CComPtr<IBasicAudio> _basicAudio;
180 REFTIME _totalTime;
181 REFTIME _nowTime;
182 s64 _endPosition;
183 u8 _priority;
184 f32 _z;
185 b32 _isRenderHud;
186 b32 _isLoop;
187 b32 _isNoSound;
188 GxColor _scaleColor;
189
191};
192
193GX_MOVIE_NAMESPACE_END()
u32 GX_HANDLE
ハンドル
Definition GxDefine.h:214
RENDER_VIEW
描画優先度(ビュー)
Definition GxRender.h:442
RENDER_PASS
描画優先度(パス)
Definition GxRender.h:515
RENDER_SUB_VIEW
描画優先度(サブビュー)
Definition GxRender.h:485
オブジェクト基底クラス
Definition GxBase.h:88
Windowsムービードライバクラス
Definition GxMovieDriverWindows.h:24
constexpr GxRenderTexture * getRenderTexture(void) const
レンダーテクスチャを取得
Definition GxMovieDriverWindows.h:119
constexpr void setRenderViewPriority(RENDER_VIEW view)
描画優先度(ビュー)を設定
Definition GxMovieDriverWindows.h:135
~GxMovieDriver(void)
デストラクタ
GxMovieDriver(void)
デフォルトコンストラクタ
GX_FORCE_INLINE b32 isLoop(void) const
ループ判定を取得
Definition GxMovieDriverWindows.h:125
f32 getTime(void)
開始からの時間(秒単位)取得
b32 seek(s32 seekOffset)
シーク(ミリ秒単位)
b32 play(void)
再生
b32 setPlaySpeed(f32 speed)
再生スピード変更
b32 pause(b32 bPause)
ポーズ
b32 initialize(const GxMoviePlayerInitializeInfo &information, GX_CSTR fullFilePath)
初期化
b32 getVolume(f32 &volume)
ボリューム取得(デバイスから取得)
void release(void)
開放
b32 stop(void)
停止
GX_FORCE_INLINE b32 setRenderHud(b32 isRenderHud)
Hudユニットで描画するか設定
Definition GxMovieDriverWindows.h:115
GX_FORCE_INLINE void setScaleColor(const GxColor &scaleColor)
スケールカラーを設定
Definition GxMovieDriverWindows.h:122
b32 isFunctionSuccess(s32 id)
関数が成功したか判定
constexpr void setRenderSubPriority(f32 priority)
描画サブプライオリティを設定
Definition GxMovieDriverWindows.h:141
constexpr void setRenderPriority(RENDER_PASS pass)
描画プライオリティを設定
Definition GxMovieDriverWindows.h:139
f32 getTotalTime(void)
全体の時間(秒単位)取得
GX_FORCE_INLINE b32 setLoop(b32 isLoop)
ループ判定を設定
Definition GxMovieDriverWindows.h:127
b32 terminate(void)
終了
void update(void)
更新
b32 setScreenSize(f32 width, f32 height)
描画サイズを設定(指定しなかった場合は動画ファイルの動画サイズ)
constexpr void setRenderSubViewPriority(RENDER_SUB_VIEW subView)
描画優先度(サブビュー)を設定
Definition GxMovieDriverWindows.h:137
b32 setVolume(f32 volume)
ボリューム設定
GxMoviePlayerBase::MOVIE_PLAYER_STATUS getState(void)
状態取得
b32 isFunctionExit(s32 id)
関数が終了したか判定
b32 setScreenOffset(f32 x, f32 y)
描画位置にオフセットを設定
GX_FORCE_INLINE b32 setPriority(u8 priority, f32 z)
描画プライオリティ設定(Hud ユニットの setPriority() と z 位置の関係に準拠)
Definition GxMovieDriverWindows.h:103
void setTargetMaterial(GxRenderMaterial *pTargetMaterial)
上書きをしにいくマテリアルを設定
constexpr GxResTexture * getTextureResource(void) const
レンダリング先のテクスチャリソースを取得
Definition GxMovieDriverWindows.h:117
MOVIE_PLAYER_STATUS
ムービープレイヤーステータス
Definition GxMoviePlayerBase.h:92
マテリアル構造体
Definition GxRenderMaterial.h:18
テクスチャクラス
Definition GxRenderTexture.h:19
頂点バッファを管理する
Definition GxRenderVertexBuffer.h:20
頂点シェーダに渡す頂点の宣言を管理する
Definition GxRenderVertexDeclaration.h:22
シェーダパッケージリソースクラス
Definition GxResShaderPackage.h:19
テクスチャリソース
Definition GxResTexture.h:23
Definition GxColor.h:21
初期化情報構造体
Definition GxMoviePlayerBase.h:18
座標
Definition GxStruct.h:867
ワイド文字列型クラス(UTF-16用)
Definition GxString.h:430
2次元ベクトル
Definition GxVector.h:34
32bitブーリアン
Definition GxDefine.h:173