DELPHI Tmediaplayer MCIデバイスの問題

04-04,2022

自分への覚書と、
この時代にDELPHI 3.0という古代の開発環境を使っている
世界で数人しかいないだろう人たちのために、記します。

DELPHIでTmediaplayerを使用する時、
曲をロードしてOPENなどをすると、MCIデバイスが自動的に開きますが、
曲をなにも再生させない状態では、MCIデバイスが存在していない状態になります。

この状態の時、
なぜかは分かりませんが、負荷が発生します。

たとえばDelphiXのDirectXにおける、DXTimerコンポーネントが、
正しいFPSを実現できなくなるようです。


もしかして、SLEEPコマンドや
application.process関係かもしれません。

あるいは、
DirectDrawと、mediaplayとの相性かもしれません。

あるいは、
DirectX系は無関係で、
スレッド系とMediaplayerとの問題かもしれません。


なんにせよ、
「Tmediaplayerが使用されているのに、MCIデバイスが存在していない状態」というのが、
Windowsプログラムとして、何かしらの不都合を発生させるようです。

これがDELPHIのバグなのか、Mediaplayerとの相性の問題なのか、
そこまでは分かりませんが、確実に再現できる問題として確認できました。


ちなみに、Windows7でも、Windows10でも、確認でき、
更に、GPUが搭載された64bitPCでも発生するし、
GPUが存在しない32bitPCでも発生しました。

比較的には、GPUが搭載されたハイエンドPCほど、
この負荷が大きいようです。


そもそも、Mediaplayerを扱うこと自体が危険なのかもしれません。


このことは、今後の自分のために書いておきます。
もし実装するなら、
瞬時でもいいから、最初にMCIデバイスを開いておくことが大事なようです。