読者です 読者をやめる 読者になる 読者になる

S.F. Page

Programming,Music,etc...

音声ファイルから動画ファイルを生成する(61) - High DPI対応

今Windows Desktop UIのAPI周りのコードを整理して、High DPI対応にするのを忘れていたを発見した。さらにいうとディスプレイの回転対応もなされていない。回転対応はさておきHigh DPI対応はやっておかないとあとで面倒なことになりそうなので対応することに…

音声ファイルから動画ファイルを作成する(11) – 環境の整備

環境の整備 デスクトップアプリとして作り直すためにまずは環境をアップデートすることにした。 ベースとなるプロジェクトを作る 過去作りかけて放置しているプロジェクトを再利用することにした。VS2012プロジェクトであればそのまま読み込める。当然ながら…

ツールのアイデア

今Buzzでカバー曲を作ってアマレココでキャプチャーし、さらにそれをWindows ムービーメーカーに取り込んでキャプションをつけてYoutubeにアップしている。 BuzzもアマレココもとてもよくできたツールなんだけどVSTがてんこ盛りになってくると私のPCでも相当…

キャプチャしながら再生するプログラムの作成(10)

マイク入力をキャプチャする部分のBUGも大きなものは取れた。まだ挙動は怪しいが。キャプチャ・インターフェースの初期化に失敗したときの処理がまったく入っていなかったのが原因だった。キャプチャ入力を早く試したかったので初期化は成功するという前提で…

キャプチャしながら再生するプログラムの作成(9)

非同期エージェントライブラリでスレッド部分を書き換えてみた。スレッド制御クラスをagent継承クラスに置き換えただけだけどね。 ソースコード なかなか面白いライブラリだ。非同期メッセージブロックとかこういうのに近いのは自前で用意していたけど、ライ…

キャプチャしながら再生するプログラムの作成(8)

ぼちぼちと直していたのだが、オーディオ・キャプチャ部分以外は割と動くようになった。ほとんどがBUG。エラー処理をきちんとしていないとか、COMポインタのRelease忘れとかそんなのだ。 ソースコード

キャプチャしながら再生するプログラムの作成(7)

出力・入力デバイスの管理クラスを作り直しているところ。DeviceWatcherを使ってでデバイスの情報取得・変更管理を行おうとしている。 やはりDeviceInformationからDeviceClassの値を得ることはできないようなので、DeviceInformation::CreateWatcherすると…

DeviceInformationからDeviceClassの情報は得られない?

DeviceInformation::PropertiesのKeyを列挙してみると下記の通りであった。 System.ItemNameDisplay System.Devices.Icon {51236583-0C4A-4FE8-B81F-166AEC13F510} 123 System.Devices.IsDefault System.Devices.DeviceInstanceId System.Devices.InterfaceE…

DeviceInformationからDeviceClassを得る方法

これがよくわからないんだな。 DeviceWatcher::Start()直後からEnumrationCompleteイベントまで既存のデバイスの情報がAddイベントの2番目の引数、DeviceInformationで通知される。その通知されるDeviceInformationがどのDeviceClassに属するか知りたい。列…

キャプチャしながら再生するプログラムの作成(6) – DeviceWatcherAdapter

結局TypedEventHandlerのアダプタはやめて、DeviceWatcherクラスのアダプタとして、イベントをboost.signalに変換するようにしてみた。 namespace en = Windows::Devices::Enumeration; namespace f = Windows::Foundation; ref class DeviceWatcherAdapter …

Using Advanced Query Syntax Programmatically (Windows)

Using Advanced Query Syntax Programmatically (Windows). DeviceInformation::CreateWatcherの引数で出てくるAQSなるもの。まだよくわかっていない。

キャプチャしながら再生するプログラムの作成(5) – イベント(デリゲート)をstd::functionに変換するラッパクラス | S.F.Page

前回作成したクラス(アダプタクラス typed_event_handler_adapterに改名)を使ってみたところ一応コンパイルは通ったが、ref newしたクラスの生存期間が?でかなり危険なコードのような気がする。 watcher_ = DeviceInformation::CreateWatcher(); watcher_…

キャプチャしながら再生するプログラムの作成(4) – イベント(デリゲート)をstd::functionに変換するラッパクラス

イベント(デリゲート)をstd::functionに変換するラッパクラスを作ってみた。 template <typename TSender,typename TResult> ref class typed_event_handler_wrapper { internal: typedef std::function<void (TSender,TResult)> wrapped_method_type; typed_event_handler_wrapper(wrapped_method_type wrapped_method</void></typename>…

キャプチャしながら再生するプログラムの作成(3) – デリゲートに使用できる関数ポインタ

DeviceWatcherのイベントにバインドするには、TypedEventHandlerにthisポインタとメンバ関数ポインタを引数にセットしてバインドすればいい。 watcher_ = DeviceInformation::CreateWatcher(); watcher_->Added += ref new TypedEventHandler<DeviceWatcher^,DeviceInformation^>(this,&wasapi_d</devicewatcher^,deviceinformation^>…

キャプチャしながら再生するプログラムの作成(2) - DeviceWatcherクラスを使ってデバイスの列挙・監視をする。

サウンドデバイス列挙するのにDeviceInformationCollectionを使っていたけど、サウンドデバイスの抜き差しにも対応したいのでDeviceWatcherクラスを使ってデバイスの列挙・監視をしてみようと思う。 Core Audio APIを使えばIMMDeviceCollection,IMMDevice,IM…

キャプチャしながら再生するプログラムの作成(1)

キャプチャしながらWAVファイルを再生するプログラムをきちんと作っていく。 今日は今までのコードでIMMDeviceを使っていたところをWinRTの同等クラス(Windows::Devices::Enumeration::DeviceInformationとか)に置き換えたり、スマートポインタをWRLのComPtr…

ようやく音を鳴らすことができた。

古いコードをコンパイルしなおしてなんとかWindows 8で動くようになった。変更したのは以下の通り。 boost.atomicを使うのをやめ、std::atomicに変更した。 boost.threadを使うのをやめ、std::threadに変更した。 WinRT APIを使えるようにした。 WAVファイル…

ビルドできるようになった。

ようやくC++/CXを使ってWinRT APIをDesktopアプリからいじれるようになった。ただいまコンパイルエラーと格闘中である。 WinRTで置き換わっている部分は古いAPIを使わないでおこう。PPLや新しいAPIたちも積極的に使っていこう。

C++CX入門/プロジェクトの作成 - WisdomSoft

C++CX入門/プロジェクトの作成 - WisdomSoft. WinRTをコンソールアプリからアクセスする方法。基本的にはIntelのサイトに載っていた情報と同じ。

Using Windows 8* WinRT API from desktop applications | Intel® Developer Zone

C++ Desktop AppからWinRT APIを使う方法はここに書いてあった。 Using Windows 8* WinRT API from desktop applications | Intel® Developer Zone. egtraさんにも下記サイトを教えてもらったがこれはC#からの情報だった。C++/CLIからだとこの情報は使えるか…

DirectComposition layered child window sampleをVS 2012 Express For Windows Desktopで動かす。

「Windows 8 desktop samples in C#, C++」を解凍し、「DirectComposition layered child window sample」を動かそうとしたがそのままではVS 2012 Express For Windows Desktopでビルドできなかった。下記の変更で動かすことができた。 atlbase.hをwrl.hに変…

Windows 8 desktop samples in C#, C++

Windows 8 desktop samples in C#, C++. デスクトップ向けのサンプルコードあったのね。ダウンロードしてチェックしてみよう。 今わかっていないのは、DesktopコードからWinRTをいじる方法。ヘルプを見るとDesktopからでもいじれるものもあるんだけど、具体…

Dual-use Coding Techniques for Games, part 2 - Games for Windows and the DirectX SDK - Site Home - MSDN Blogs

Dual-use Coding Techniques for Games, part 2 - Games for Windows and the DirectX SDK - Site Home - MSDN Blogs. additional notes on Win32 APIsの表がわかりやすくて良かった。

Dual-use Coding Techniques for Games, part 1 - Games for Windows and the DirectX SDK - Site Home - MSDN Blogs

Dual-use Coding Techniques for Games, part 1 - Games for Windows and the DirectX SDK - Site Home - MSDN Blogs. Gameで使うミドルウエアやライブラリをWindows Store AppとDesktopで共用するためのコーディング・テクニック。