Coder Social home page Coder Social logo

eduramiba / webcam-capture-driver-native Goto Github PK

View Code? Open in Web Editor NEW
21.0 3.0 7.0 4.95 MB

Native driver for Webcam Capture API

C++ 65.61% C 2.06% Java 32.33%
webcam-capture native driver capturemanager windows mediafoundation java javafx avfoundation

webcam-capture-driver-native's People

Contributors

akexorcist avatar eduramiba avatar msgilligan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

webcam-capture-driver-native's Issues

Support for WebcamDiscoverySupport

I'm new to both of these libraries, but when I try to use WebcamDiscovery it fails due to the driver not implementing WebcamDiscoverySupport

Webcam is not showing any preview nor the webcam is opening

I'm getting issue with this library, the webcam is not opening nor I see any preview on the UI. Below are the debug logs.

INFO_LEVEL: ***** CAPTUREMANAGER SDK 1.19.1 Freeware - Sep 4 2021 (Author: Evgeny Pereguda) ***** INFO_LEVEL: MediaFoundationManager: Media Foundation is initialized!!! INFO_LEVEL: DMOManager: DMO is initialized!!! 2766 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse source - start 2778 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse stream descriptor - start 2780 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse media type - start 2799 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse media type - correct - subtype = MFAudioFormat_Float 2813 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse stream descriptor - ok 2814 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse source - ok 2814 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse source - start 2815 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse stream descriptor - start 2815 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse media type - start 2817 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse media type - correct - subtype = MFVideoFormat_YUY2 2841 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse media type - start 2843 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse media type - correct - subtype = MFVideoFormat_YUY2 2843 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse media type - start 2844 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse media type - correct - subtype = MFVideoFormat_YUY2 2844 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse stream descriptor - ok 2845 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse source - ok 2845 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse source - start 2846 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse stream descriptor - start 2846 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse media type - start 2847 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse media type - correct - subtype = MFVideoFormat_ARGB32 2847 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse media type - start 2848 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse media type - correct - subtype = MFVideoFormat_ARGB32 2848 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse media type - start 2849 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse media type - correct - subtype = MFVideoFormat_ARGB32 2849 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse media type - start 2850 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse media type - correct - subtype = MFVideoFormat_ARGB32 2850 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse media type - start 2852 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse media type - correct - subtype = MFVideoFormat_ARGB32 2852 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse media type - start 2853 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse media type - correct - subtype = MFVideoFormat_ARGB32 2853 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse media type - start 2854 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse media type - correct - subtype = MFVideoFormat_ARGB32 2855 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse stream descriptor - ok 2855 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse source - ok 2856 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse source - start 2857 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse stream descriptor - start 2857 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse media type - start 2857 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse media type - correct - subtype = MFAudioFormat_Float 2858 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse stream descriptor - ok 2858 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse source - ok 2858 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Premature end of XML stream at root. Event type = 257 2864 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink factory - start 2865 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink value part - start 2871 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink value part - ok 2871 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink factory - ok 2871 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink factory - start 2871 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink value part - start 2872 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink value part - ok 2872 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink factory - ok 2872 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink factory - start 2873 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink value part - start 2873 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink value part - ok 2873 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink factory - ok 2874 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink factory - start 2874 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink value part - start 2875 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink value part - ok 2875 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink factory - ok 2876 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink factory - start 2876 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink value part - start 2876 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink value part - ok 2876 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink value part - start 2877 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink value part - ok 2877 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink value part - start 2877 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink value part - ok 2877 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink factory - ok 2878 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink factory - start 2878 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink value part - start 2878 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink value part - ok 2878 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink factory - ok 2879 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink factory - start 2879 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink value part - start 2879 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink value part - ok 2879 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink factory - ok 2880 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink factory - start 2880 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink value part - start 2880 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink value part - ok 2880 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Parse sink factory - ok 2881 [webcam-discovery-service] DEBUG com.github.eduramiba.webcamcapture.drivers.capturemanager.model.parser.CaptureManagerModelXMLParser - Premature end of XML stream at root. Event type = 257 2897 [Thread-8] INFO com.github.sarxos.webcam.WebcamDiscoveryService - Discovery will not run - driver CaptureManagerDriver does not support this feature Selected camera is: FaceTime HD Camera 2902 [Thread-9] INFO com.github.sarxos.webcam.WebcamDiscoveryService - Discovery will not run - driver CaptureManagerDriver does not support this feature 2903 [Thread-9] DEBUG com.github.sarxos.webcam.WebcamLock - Lock Webcam FaceTime HD Camera 2930 [atomic-processor-1] INFO com.github.sarxos.webcam.ds.cgt.WebcamOpenTask - Opening webcam FaceTime HD Camera 2949 [atomic-processor-1] INFO com.github.eduramiba.webcamcapture.drivers.capturemanager.CaptureManagerVideoDevice - Using video media type: CaptureManagerMediaType{width=1280, height=720, majorType=MFMediaType_Video, subType=MFVideoFormat_YUY2} 3001 [atomic-processor-1] ERROR com.github.eduramiba.webcamcapture.drivers.capturemanager.CaptureManagerFrameGrabberSession - Could not create session control last step 3002 [atomic-processor-1] ERROR com.github.eduramiba.webcamcapture.drivers.capturemanager.CaptureManagerFrameGrabberSession - Call init before start!! 3005 [Thread-9] DEBUG com.github.sarxos.webcam.Webcam - Webcam is now open FaceTime HD Camera

macOS M1 frame size issues

on macOS Mojave, Mac M1, running the sample app using the built-in FaceTime camera:

name='FaceTime HD Camera', resolutions=[java.awt.Dimension[width=1920,height=1080], java.awt.Dimension[width=1280,height=720], java.awt.Dimension[width=1080,height=1920], java.awt.Dimension[width=1760,height=1328], java.awt.Dimension[width=640,height=480], java.awt.Dimension[width=1328,height=1760], java.awt.Dimension[width=1552,height=1552]

I'm seeing the following resolutions display "diagonal-striped" video:

  • [width=1080,height=1920]
  • [width=1328,height=1760]
  • [width=1552,height=1552]

It seems all the cases where height >= width, but I don't know if this is the actual cause.

The following workaround was used because the default size was failing:

        final Dimension dimension = new Dimension( 1920, 1080);
        device.setResolution(dimension);

ERROR c.g.e.w.d.c.CaptureManagerDriver - Unexpected error listing video devices

Java 21
IntelliJ IDEA 2023.2.5
com.github.sarxos:webcam-capture:0.3.12
this library v1.0.0

README documentation does not mention modules. Workaround is to add requires io.github.eduramiba.webcamcapture;

Running the application as recommended, I get

14:38:26.220 [main] DEBUG com.github.sarxos.webcam.Webcam - Setting new capture driver com.github.eduramiba.webcamcapture.drivers.NativeDriver@4e096385
14:38:26.239 [webcam-discovery-service] ERROR c.g.e.w.d.c.CaptureManagerDriver - Unexpected error listing video devices
java.lang.UnsatisfiedLinkError: Can't load library: C:\Users\me\Documents\GitHub\myApp\CaptureManager.dll
14:38:26.241 [main] INFO  c.g.s.webcam.WebcamDiscoveryService - Discovery will not run - driver NativeDriver does not support this feature

I believe it's looking in the wrong place for the native driver.

Split into 3 JARs

It would be nice if this could be split into 3 JARs:

  1. A standalone JAR for the macOS driver
  2. A standalone JAR for the Windows driver
  3. A combined (either merged or using transitive dependencies) JAR that contains the combined NativeDriver class and behaves the same as the current JAR.

This will reduce the size of the JARs and their dependencies for apps that don't need everything.

I also think the JavaFX dependency should probably be removed.

What about Libgdx OGL Texture support ?

It would be good to see Libgdx support with direct opengl textures and LibGDX Textures for performance.
We can also use opengl shaders directly to webcam with that.

Some people prefer JOGL.
I had example for that i will post you if you want.

Can't find any webcams on Windows

Hello! I have a question, not an issue. It works fine on my Mac, but can't find any webcams on Windows 11 laptop or desktop
What am I doing wrong?

PXL_20240423_155855627~2.jpg

ASync mode not working

If open the webcam in async mode it will no wait untill a new photo is grabbed but give you back a blank image instead of waiting...

Webcam close and open

After having close and open a webcam is not possible to open anymore!

This is the code :
`
Webcam.setDriver(new CaptureManagerDriver());
Webcam webcam = Webcam.getWebcams().get(4);

    long t1, t2;

    for (int i = 0; i < 5; i++) {

        try {
            System.out.format("Opening...\n");

            t1 = System.currentTimeMillis();
            webcam.open();
            t2 = System.currentTimeMillis();

            System.out.format("Opening time: %d ms\n", t2 - t1);
            System.out.format("Fetch image...\n");

            t1 = System.currentTimeMillis();
            if (webcam.getImage() == null) {
                System.err.println("Damn! Image is null!");
            }
            t2 = System.currentTimeMillis();

            System.out.format("Fetch image time: %d ms\n", t2 - t1);
            System.out.format("Closing...\n");

            t1 = System.currentTimeMillis();
            webcam.close();
            t2 = System.currentTimeMillis();

            System.out.format("Closing time: %d ms\n", t2 - t1);
            System.out.format("Wait 5 seconds...\n", t2 - t1);

            Thread.sleep(5000);
        } catch (InterruptedException ex) {
            java.util.logging.Logger.getLogger(Main.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
    }

    System.out.format("Done...\n");

`
image

Without the loading of the driver

image

Issue with non-unique camera names for multiple webcams on macOS with M1

Hello,

I am currently facing a challenge with the webcam-capture-driver-native library in my project where I have connected 3 identical webcams (Hikvision DS-U02) to my computer. These webcams are identified by non-unique names by the library. This issue prevents me from distinguishing between these cameras and working with them individually to capture video streams simultaneously.

Here is an example of how the camera names are detected by the library:

  • 1080P USB Camera
  • 1080P USB Camera
  • 1080P USB Camera
  • HD-камера FaceTime

The three "1080P USB Camera" entries correspond to the Hikvision DS-U02 webcams. Their identical names make it impossible to select and use each webcam independently, which is crucial for my application.

This issue arises from the use of the library with the com.github.sarxos.webcam package, specifically when trying to lock a webcam for exclusive access (WebcamLock.class)
The non-unique names cause conflicts in the locking mechanism, preventing simultaneous use of the cameras.

Suggested Feature / Fix:
It would be highly beneficial if the library could provide a way to generate unique identifiers for each webcam, possibly incorporating attributes such as connection port or an internal index. This would allow applications to distinguish between multiple webcams with otherwise identical names.

Environment:

  • Operating System: macOS with M1 Processor
  • Library version: 1.0.0
  • Java version: 20.0.1 (OpenJDK)

Inconsistency in WebcamDevice#getImage Method Implementation and its Impact on WebcamPanel Repainting

The WebcamDevice#getImage method is implemented inconsistently compared to the built-in WebcamDefaultDevice, which returns a new BufferedImage object. This inconsistency currently results in the WebcamPanel not executing repaintPanel().

This line always evaluates to true. https://github.com/sarxos/webcam-capture/blob/fdfcaea80c8f50eeb8f7c24475ff85a3c1fdcb32/webcam-capture/src/main/java/com/github/sarxos/webcam/WebcamPanel.java#L603

Open multiple webcam

First of all great library.

I've problem open multiple webcam. Untill 2 webcam everythings is fine... i need to open 6.
Error is the following :

Exception in thread "main" com.github.sarxos.webcam.WebcamLockException: Webcam USB has already been locked

When no use your driver everythings is working well...

Any ideas?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.