私はCamera APIで重大な問題に直面しています。99.99% の状況でフレームワークが原因ではないことがわかっていても、Windows でのカメラの処理方法に問題があるのではないかと考え始めています。電話。
問題
私のコードは些細なもので、2 つの非常に単純なページしかありません。最初のページでは、アプリケーションがフレーム レートを強制的に更新するように、ループ アニメーションを含む四角形を追加して回転させました。
プロファイル セッションの結果は次のとおりです。
最初のページにとどまっている限り、フレームレート カウンターは安定した 60 fps を表示します。カメラをフィーチャーした 2 番目のページを起動すると、システム カメラの使用により fps が低下します。ただし、戻るキーを押すと、カメラは正しく配置されますが、フレームレートは少し低くなります (~53 fps)。さらに印象的なのは、グラフ データは、何かがまだ実行中であり、パフォーマンスに悪影響を及ぼしていることを示しています。組み込みの分析では、システム アプリが CPU の 47% を使用していることがわかりました。これは、カメラ ページが表示されたときと同じです!
この動作の既知の理由はありますか?
マイコード
2 ページ目のコード ビハインド:
public partial class MyScannerView : PhoneApplicationPage {
private PhotoCamera camera;
public MyScannerView() {
InitializeComponent();
}
protected override void OnNavigatedTo(NavigationEventArgs e) {
base.OnNavigatedTo(e);
camera = new PhotoCamera(CameraType.Primary);
viewfinderBrush.SetSource(camera);
}
protected override void OnNavigatedFrom(NavigationEventArgs e) {
base.OnNavigatedFrom(e);
if (camera != null) {
camera.Dispose();
camera = null;
}
}
}
2 ページ目の私の XAML:
<Canvas x:Name="viewfinderCanvas">
<Canvas.Background>
<VideoBrush x:Name="viewfinderBrush">
<VideoBrush.RelativeTransform>
<CompositeTransform x:Name="viewfinderTransform" CenterX="0.5" CenterY="0.5" />
</VideoBrush.RelativeTransform>
</VideoBrush>
</Canvas.Background>
</Canvas>