S.F. Page

Programming,Music,etc...

Media Foundation

音声ファイルから動画ファイルを生成する(59) - Quick Sync Encoder MFT

Quick Sync Encoder MFTが使えるのかどうか確かめるために、topoedit.exeを動かしてみた。MFTとしてはきちんと認識しているようである。 しかし追加しようとするとエラーが発生してしまう。 Intel Media SDKのサンプルコードにはWindows Store Appsのサンプ…

音声ファイルから動画ファイルを生成する(57) - Quick Sync Video

Intel Quick Sync Video (QSV)を有効にするにはどうすればよいか調べたら、Sandy Bridgeから搭載されているQSVエンコーダは内蔵GPU(HD3000)にくっついているものらしい。内蔵GPUが無効な状態ではQSVは利用できないらしい。私はとりあえずデュアルモニタ環境…

音声ファイルから動画ファイルを生成する(56) - Quick Sync Video

今日はIntel Quick Sync Videoについて調べていた。Media Foundationで使うための Quick Sync Video Encoder MFTについてだ。これを使えばエンコードを速めてくれそうなので。 私の今のアプリがハードウェアエンコーダを使用しているのかを以下のコードを使…

音声ファイルから動画ファイルを生成する(54) Quick Sync Video

私のPCのCPU Core i7 2700kではQuick Sync VideoというH.264のハードウェアエンコーダが利用できるらしい。一応Media Foundation用のMFTもあるようだが、MFTとしてインストールされているのか、ハードウェアエンコーダMFTをどうやれば使えるのかが、ここ数日…

音声ファイルから動画ファイルを作成する(10) – そういうことでデスクトップで仕切り直すことにしたが。

そういうわけで比較的自由なデスクトップの世界に戻ってきたわけだが、それはそれで面倒なのである。UIをWin32 APIでゴリゴリ書かなくてはいけない。VS2013 Expressエディションではリソースエディタが使えないのでリソースファイルもゴリゴリ書く必要がある…

音声ファイルから動画ファイルを作成する(9) – Windows Store Appだと制限が多いな・・

IMFSinkWriter::GetServiceForStreamで取得できるインターフェースだが皆目見当がつかない。IMFMediaSinkとかIMFTransformとかICodecAPIとか試してみたが皆ダメだ。ICodecAPIなどはインターフェースそのものがWindows Store Appでは未定義と同じ扱いになって…

音声ファイルから動画ファイルを作成する(8) – IMFSinkWriter::GetServiceForStreamの使い方がよくわからない

画質向上のためにエンコーダーのパラメータをいじるべく調査を進めていて、SinkWriterの出力エンコーダーの設定のいじり方がなんとなくわかってきた。IMFSinkWriter::GetServiceForStreamでエンコーダーMFTを取得->IPropertyStoreを取得->設定の順で行えばよ…

音声ファイルから動画ファイルを作成する(7) – 波形データをDirect2Dで描画してみた。

ようやくだが、Direct2Dを使ってテクスチャに波形データを表示することができた。でもちょっと手抜きだ。 ソースコード(変更部分) 720p/30FPSなのになぜか画質が悪い。H.264エンコーダの設定に問題があるのかもしれないが、今のところどうすればいいのかわ…

音声ファイルから動画ファイルを作成する(5) – 凡ミスだった。

OpenAsyncでハマっていた例外は、内部的に発生しているものできちんとキャッチされているから障害ではないことがわかった。どうもデバッガの例外オプションで、すべての例外を発生時にブレークするように設定していたために、気にしなくても良い例外までブレ…

音声ファイルから動画ファイルを作成する(3)

昨日の話を絵にすると こんな感じになる。ちなみにこれはスクリーンショットにペイントで手書きで追記したものである。ペイントはタッチパネルも考慮しているようである。Windows 8以降のバージョンだけかもしれないが。 昨日は動画テクスチャをプレビュー表…

音声ファイルから動画ファイルを作成する

Buzzを使って作成途中の曲をYoutubeにアップしているが、静止画像だけでは味気ないので音楽にリンクした動画を自動生成するC++プログラムを作ろうかなと思っている。ちょっと前にMedia Foundationをかじったのだけれどもそのときの感触ではやりたいことはで…

Box2D + WinRTでゲームを作る (6) – Box2Dの処理結果をDirect3Dで描画する (2)

今日もどうやってシェイプを描こうか考えていた。考えていたというよりは、シェーダーについて学びかつその技術が描画に使えるかどうかを吟味していたというほうが正しいだろうか。 ヒントになったのは「Direct3D sprite sample」である。頂点データはいわゆ…

Box2D + WinRTでゲームを作る (5) – Box2Dの処理結果をDirect3Dで描画する

Box2Dの処理結果をDirect3Dで描画するため、シェーダー周りをどう作ろうか思案しているところである。実際のゲームではビットマップに置き換わるのだけれども、デバッグの時にシェイプやジョイントを表示できるようにしておけば便利である。頂点シェーダーは…

Box2D + WinRTでゲームを作る (4) – 動画出力できるようになった。

今週はWeb上のDirect3D、Media Foundationのリソースを参考にしながらコードを書いていた。まあなんとかスワップチェインの内容を動画出力できるようになった。 ソースコード ここで考えた手順でほぼうまくいった。 一応720p/30fpsでの出力はできている。今…

Box2D + WinRTでゲームを作る (3) – 動画出力方法を考える

今日はMedia Foundationドキュメントをみながらスワップチェインをどう出力するのかを考えていた。GPUメモリ -> CPUメモリの転送も極力減らしたいし、 拡大縮小もGPUにやらせたい。で以下の手順でいけるのではないかと。 スワップチェインと同じ大きさのテク…

Box2D + WinRTでゲームを作る (2) - 動画出力を試みる

作成中の画面を動画にしていたのだが、ちょっと処理速度的に厳しくなってきた。 アマレココでもExpression Encoderでも15FPSで処理がもたつく。デスクトップのキャプチャーは結構重い処理なのであろう。 Media FoundationのSink Writerを使って、スワップチ…

Box2D + WinRTでゲームを作る

「XAML DirectX 3D shooting game sample」をスケルトン化し、Box2DのコードおよびDirect2Dによる描画コードを追加した。 ソースコード この後でGDC2013 Game テンプレートなるものも見つけ、これでやり直そうかなと思ったけど、サウンドやメッシュ・入力周り…

Box2D + Windows Store Appsで出直し

Musicシーケンサーを作るといいながらなぜかシューティングゲームを作る流れとなっているが、このままデスクトップでシューティングゲームのコードを書いていくと最終的にはWindows Store Appの「XAML DirectX 3D shooting game sample」のようなものに行き…

Box2Dの処理結果をDirect2Dで描画する

ここ1週間はずっとBox2Dのドキュメントを読んだりしていて、なんとなくわかってきたのでコードを書いてみた。Box2Dの処理結果をDirect2Dで描画したもの。 今回Direct2Dのジオメトリ描画を初めて使ってみた。面白いね。簡単にできてしかも結構リアルに動く。

Box2Dをいじっている

物理エンジンをいろいろ見ていたら、Box2Dというのを見つけた。2Dの物理エンジンでC++で作られている。さっそくコンパイルして実行してみた。 やっぱり物理エンジンで動かすとリアルですな。。 私の人生を狂わせたシューティングゲームは何かといえば、 ギャ…

少しゲームの世界に入り込んでみる

Tumblrで「ゲーマーはもっと経営者を目指すべき!」の引用を見てからここ1週間ほどはこの記事をずっと読んでいた。読んでいるとゲームに対する興味が再び高まってきたのと、DirectX周りをいじっていると少しゲームに関する技術を追っかけてみたいなと思い始…

Media Foundation (7) - トポロジーについて

はじめに Media Foundationのメディア・パイプラインの「About Topology」の勝手訳をベースに補足を入れてみた。でもやっぱりわかりにくいので自分の言葉で書き直すつもり。 トポロジーについて トポロジーはメディアパイプライン中でどのようにデータが流れ…

MediaFoundation (6) – 共通ヘッダーファイルの作成

Media FoundationもCOMインターフェースで実装(正確にはCOM風なのかもしれないが)されているので、参照カウント管理を行わなくてはいけない。 管理はスマポでするのが私にとってはデフォルトである。SDKサンプルは相変わらず手動管理であるが。 それでいつ…

MediaFoundation (5) - クラス構成を見直す

この記事を参考にエンコーダをパイプラインで実装しようかと思ってクラスを書き始めたけれども、なんか非効率な感じがしてきた。 この前にはプレイヤーを作ってみたのだけれども、ソースコードを見るとセッションを作るところは同じで、エンコーダと異なるの…

MediaFoundation (4) - wavからm4aにエンコードしてみる。

「imageryblog: Fast Transcode を使ってエンコードする (wavからm4a)」をベースにWAVからm4aへのエンコード処理を実装してみる。 元コードはATLを使って実装されている。元コードのATL部分をWRLに変換してやればほとんどそのまま持ってこれそうな感じだ。

Media Foundation (3) - TopoEditのソースコード

Windows 7のSDKにはTopoEditのソースコードが付いていることを知った。 古いSDKのサンプルは一応保存してあるので探してみたらあった! TopoEditの編集画面は非常に興味があり、マイクロソフトさんが実装するとどうなるのかをコードを見て勉強しようかなと思…

imageryblog: TopoEditでDX11 Video Rendererを使うには

imageryblog: TopoEditでDX11 Video Rendererを使うには. Windows 8 用のSDKにはTopoEditが入っているが、DX11 Video Renderer はそのままでは使えないらしい。その対処方法。 なんかソースコードもあるらしいので、一度覗いてみたいのだけれど、いまいちど…

Media Foundation アーキテクチャ(2) - MFTの列挙

私のマシンで使えるMedia Foundation Transformを列挙してみた。列挙するコードはこんな感じ。 void print_mft_(const GUID& guid,std::wfstream& out) { co_task_memory<IMFActivate*> activate; UINT32 count = 0; HRESULT hr = MFTEnumEx(guid,MFT_ENUM_FLAG_ALL,NULL,N</imfactivate*>…

Media Foundation アーキテクチャ(1) - 2つのプログラミングモデル

次のダイアグラムは、Media Foundation アーキテクチャの全体像を表している。 Media Foundationは2つの異なるプログラミング・モデルを提供する。1つは左側の点線内のメディアデータのためのパイプラインを使う方法である。これはDirect Showの流れを汲む…

imageryblog: Fast Transcode を使ってエンコードする (wavからm4a)

imageryblog: Fast Transcode を使ってエンコードする (wavからm4a). Media Foundationを使ってWAVからm4aにエンコードする方法。Windows 7からFast Transcodeというのが使えるらしい。 Media Foundationのアーキテクチャは今一つ、二つわかっていない。ライ…

imageryblog: Media Session による動画再生

パイプラインオブジェクトには「メディアソース Media Source」「メディアファンデーショントランスフォーム Media Foundation Transform ; MFT」「メディアシンク Media Sink」の 3 種類がある。Media Sourceはネットワークストリームやファイルからデータ…

Media Foundationの再生サンプルの状態管理をMSMで行う

今どうなっているかというと、コンパイルが通り実行できるようになった。状態管理はMSMで行って遷移と同時にクラス外にイベントを飛ばすのはBoost.Signalで行う。 まだ状態テーブル定義は完全ではない。コードを見ていただくとわかると思うが、実装中に状態…

Media Foundation の更新 @ Windows 7 - 川西 裕幸のブログ - Site Home - MSDN Blogs

Media Foundation の更新 @ Windows 7 - 川西 裕幸のブログ - Site Home - MSDN Blogs. 古い記事だけどもMedia Foundationで何ができるかの概要がわかる。Windows 7で登場したMFPlayはWindows8でもうobsoluteになっている。

Playerクラスをテストしてみた

サンプルを改造して作成したPlayerクラスを使用してみた。 ダイアログ中のエリアに動画を再生してみた。ここでまではとても簡単だ。

CPlayerクラスを改造する(3) - やっぱりBugあり

昨日作ったコードはやっぱりBugっていた。修正したコードは以下。まだBugは潜んでいそうだなー。 player.h // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO…

CPlayerクラスを改造する(2)

WRLやC++/CXですぐ置き換えることができるほど知識もないので、とりあえず今までの知識でコードを書き換えてみた。 Player.h #ifndef PLAYER_H #define PLAYER_H #include <new> #include <windows.h> #include <shobjidl.h> #include <shlwapi.h> #include <assert.h> #include <strsafe.h> // Media Foundation headers </strsafe.h></assert.h></shlwapi.h></shobjidl.h></windows.h></new>…

CPlayerクラスを改造する

CPlayerクラスをそのまま使ってみようかなと思ったが、ソースコードはHRESULTの嵐である。まあ互換性を重視して、というかSDKのサンプルとして書くとこうなるのだろう。Vistaあたりの時代だからこうなるというのもあるね。 HRESULTのエラー処理をすべて例外…

CPlayerクラスを使ってみる

Media Session Playback ExampleのCPlayerクラスを使って簡単なプレーヤーを作ってみようかなと思う。

Media Session Playback Example (Windows)

Media Session Playback Example (Windows). ここに再生サンプルが載っていたのでVS2012のwin32プロジェクトにコピペしてビルドしてみた。動画も再生できるんですな。。って当たり前か。。下の画面はMP4ファイルを再生してみたところ。 注意というほどでもな…

Media Foundation Programming Guide (Windows)

Media Foundation Programming Guide (Windows). このあたりをちょこちょこ読み始めている。 今やりたいことを箇条書きしてみる。 Buzzでエクスポートした32ビット浮動小数点WAVデータを読み込む。 そのデータから波形イメージを生成して横スクロールする動…