Skip to content

Commit

Permalink
Updated readme.
Browse files Browse the repository at this point in the history
  • Loading branch information
kekyo committed Apr 20, 2024
1 parent 93c85ce commit 5d1d3f0
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 18 deletions.
26 changes: 17 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

![FlashCap](Images/FlashCap.100.png)

FlashCap - Independent camera capture library.
FlashCap - Independent video frame capture library.

[![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active)

Expand All @@ -20,10 +20,10 @@ FlashCap - Independent camera capture library.

## What is this?

Do you need to get camera capturing ability on .NET?
Is you tired for camera capturing library solutions on .NET?
Do you need to get video frame capturing ability on .NET?
Is you tired for video frame capturing library solutions on .NET?

This is a camera image capture library by specializing only capturing image data (a.k.a frame grabber).
This is a video frame image capture library by specializing only capturing image data (a.k.a frame grabber).
It has simple API, easy to use, simple architecture and without native libraries.
It also does not depend on any non-official libraries.
[See NuGet dependencies page.](https://www.nuget.org/packages/FlashCap)
Expand Down Expand Up @@ -131,12 +131,12 @@ Published introduction article: ["Easy to implement video image capture with Fla

.NET platforms supported are as follows (almost all!):

* .NET 7, 6, 5 (`net7.0` and etc)
* .NET 8 to 5 (`net8.0` and etc)
* .NET Core 3.1, 3.0, 2.2, 2.1, 2.0 (`netcoreapp3.1` and etc)
* .NET Standard 2.1, 2.0, 1.3 (`netstandard2.1` and etc)
* .NET Framework 4.8, 4.6.1, 4.5, 4.0, 3.5 (`net48` and etc)

Platforms on which camera devices can be used:
Platforms on which capture devices can be used:

* Windows (DirectShow devices, tested on x64/x86)
* Windows (Video for Windows devices, tested on x64/x86)
Expand Down Expand Up @@ -785,13 +785,21 @@ So, if you intend to port FlashCap to an unsupported Linux platform,
please refer to the following for a porting overview:

* `FlashCap.V4L2Generator` is a generator to automatically generate the interoperable source code needed to port to V4L2.
This project is using the AST JSON files output by [Clang](https://clang.llvm.org/),
This project is using the JSON AST files output by [Clang](https://clang.llvm.org/),
generate C# interoperability definition source code from V4L2 header files with the correct ABI structure strictly applied.
* Therefore, you will first need Clang for the target Linux ABI.
For this reason, it cannot be ported into an environment where a stable ABI has not been established.
* Clang versions 13, 11, and 10 are verified. Other versions may be able to build.
We have verified that there may be differences in the way JSON ASTs are output.
* Similarly, to run `FlashCap.V4L2Generator`, you need mono or .NET runtime running on the target Linux.
* If the target Linux is a Debian-type port, these may be available from the `apt` package, for example:
`sudo apt install build-essential clang mono-devel`, etc., it is more likely.
* If the target Linux is a Debian-type port, these may be available from the `apt` package, for example:
`sudo apt install build-essential clang-13 mono-devel`, etc., it is more likely.
* To prepare a stable build environment for Linux, we strongly recommend building a virtual machine using qemu.
For this purpose, we have placed automated scripts for building the environment in the `qemu-vm-builder/` directory.
Please refer to the scripts and add your own so that we can build your target build environment.
* The official build environment for FlashCap uses the official Debian installer.
We download the `netinst` ISO image from the Debian site to generate the required virtual machines.
* If you do not use Debian, or if your Debian version does not match, you may need to manually modify the generated interoperable source code.
* The efforts of [issue #100](https://github.com/kekyo/FlashCap/issues/100) would also be helpful.
First, you need to build `FlashCap.V4L2Generator`.
Expand Down
26 changes: 17 additions & 9 deletions README_ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

![FlashCap](Images/FlashCap.100.png)

FlashCap - シンプルで依存性のない、カメラキャプチャライブラリ
FlashCap - シンプルで依存性のない、ビデオフレームキャプチャライブラリ

[![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active)

Expand All @@ -20,10 +20,10 @@ FlashCap - シンプルで依存性のない、カメラキャプチャライブ

## これは何?

.NETでカメラキャプチャ機能を実装する必要がありますか
.NETでのカメラキャプチャライブラリに困っていますか
.NETでビデオフレームキャプチャ機能を実装する必要がありますか
.NETでのビデオフレームキャプチャライブラリに困っていますか

このライブラリは、カメラのキャプチャ機能のみに特化したカメラ画像取り込みライブラリです(フレームグラバーと呼ばれることもあります)。
このライブラリは、ビデオフレームのキャプチャ機能のみに特化した画像取り込みライブラリです(フレームグラバーと呼ばれることもあります)。
シンプルなAPIで使いやすく、簡素なアーキテクチャで、ネイティブライブラリを含んでいません。
また、公式以外の他のライブラリに依存することもありません。
[NuGetの依存ページを参照して下さい](https://www.nuget.org/packages/FlashCap)
Expand Down Expand Up @@ -132,12 +132,12 @@ await deviceObservable.StartAsync();

対応する.NETプラットフォームは以下の通りです(ほぼ全てです!):

* .NET 7, 6, 5 (`net7.0` and etc)
* .NET 8 to 5 (`net8.0` and etc)
* .NET Core 3.1, 3.0, 2.2, 2.1, 2.0 (`netcoreapp3.1` and etc)
* .NET Standard 2.1, 2.0, 1.3 (`netstandard2.1` and etc)
* .NET Framework 4.8, 4.6.1, 4.5, 4.0, 3.5 (`net48` and etc)

カメラデバイスが使用できるプラットフォーム:
キャプチャデバイスが使用できるプラットフォーム:

* Windows (DirectShowデバイス, x64/x86)
* Windows (Video for Windowsデバイス, x64/x86)
Expand Down Expand Up @@ -719,13 +719,21 @@ FlashCapを使って実際にカメラのキャプチャに成功したもので
概要を示すので参考にしてください。

* `FlashCap.V4L2Generator` は、V4L2への移植に必要な相互運用ソースコードを自動生成するためのジェネレータです。
このプロジェクトは、[Clang](https://clang.llvm.org/) が出力するAST JSONファイルを使用して
このプロジェクトは、[Clang](https://clang.llvm.org/) が出力するJSON ASTファイルを使用して
V4L2のヘッダファイルから、正しいABI構造を厳密に適用したC#の相互運用定義ソースコードを生成します。
* 従って、まずターゲットとするLinuxABIに対応したClangが必要になります。
この理由により、安定的なABIが定まっていない環境に移植することはできません。
* Clangのバージョンは、13,11,10を検証しています。これ以外のバージョンでもビルドできる場合があります。
検証したところ、JSON ASTの出力方法に違いがある場合があるようです。
* 同様に、`FlashCap.V4L2Generator` を動作させるために、ターゲットとするLinuxで動作するmono又は.NETランタイムが必要です。
* ターゲットLinuxDebian系の移植であれば、これらは `apt` パッケージなどから入手可能かもしれません。
`sudo apt install build-essential clang mono-devel` などでインストール出来れば、可能性が高まります。
* ターゲットLinuxDebian系の移植であれば、これらは `apt` パッケージなどから入手可能かもしれません。
`sudo apt install build-essential clang-13 mono-devel` などでインストール出来れば、可能性が高まります。
* Linuxの安定的なビルド環境を準備するために、qemuを使用した仮想マシンの構築を強く推奨します。
この目的のために、 `qemu-vm-builder/` ディレクトリに、環境構築用の自動化スクリプトを配置しています。
スクリプトを参照して、あなたのターゲットとなるビルド環境を構築できるように、スクリプトを追加してください。
* FlashCapの公式のビルド環境は、Debianの公式インストーラーを用いています。
Debianのサイトから、 `netinst` ISOイメージをダウンロードして、必要な仮想マシンを生成しています。
* Debianを使わない場合や、Debianのバージョンが一致しない場合は、生成される相互運用ソースコードに手動で修正を行う必要があるかもしれません。
* [#100](https://github.com/kekyo/FlashCap/issues/100) の取り組みも参考になると思います。
最初に、 `FlashCap.V4L2Generator` をビルドする必要があります。
Expand Down

0 comments on commit 5d1d3f0

Please sign in to comment.