Code Monkey home page Code Monkey logo

Comments (5)

wang-bin avatar wang-bin commented on July 18, 2024

qt6.2.2 works correctly on my device. set environment var MDK_LOG=1 and show me the log

from mdk-examples.

AdrianEddy avatar AdrianEddy commented on July 18, 2024
MDK 0.12.0 (git d2a3dae) - Multimedia Development Kit. Copyright (c) 2016-2021 WangBin(QtAV author) <wbsecg1 at gmail.com>
Build for: Windows0x0600 x86_64; MSVC1929; MSVCRT14.29.30136.0/msvcp140.dll; 15:20:02 Nov  8 2021
MDK 0.12.0 (git d2a3dae) - Multimedia Development Kit. Copyright (c) 2016-2021 WangBin(QtAV author) <wbsecg1 at gmail.com>
Build for: Windows0x0600 x86_64; MSVC1929; MSVCRT14.29.30136.0/msvcp140.dll; 15:20:02 Nov  8 2021
Registered audio backends: XAudio2 DSound 
XAudio2_9.dll
Build with XAudio2 from Win8+ SDK
Try symbol 'XAudio2Create' from Windows SDK dll
Registered audio backends: XAudio2 DSound 
000001F98ADABC70 void __cdecl mdk::abi::MediaControlPush::setState(enum mdk::abi::State)@633 requested state 0=>1, current state 0
000001F98ADAC1B0 FrameReaderImpl.start(0, ...)
start frame reader thread: 9692
try to load av module: E:\test\mdk-examples-master\Qt\build-qmlrhi-Desktop_Qt_6_2_2_MSVC2019_64bit-Release\ffmpeg-5.dll
Selected avdevice runtime version: 59.0.101 (build: 59.0.101), license: LGPL version 2.1 or later
Selected avdevice runtime configuration: --extra-version=QtAV --disable-doc --disable-debug --enable-shared --enable-runtime-cpudetect --enable-libmfx --enable-mediafoundation --disable-postproc --toolchain=msvc --enable-pic --extra-cflags='-Zi -FS -MD -guard:cf -D_WIN32_WINNT=0x0600' --extra-ldflags='-DEBUG -guard:cf -OPT:REF -SUBSYSTEM:CONSOLE -NODEFAULTLIB:libcmt' --enable-small --disable-filters --enable-filter='*null*,*fade,*fifo,*format,*resample,aeval,all*,atempo,pan,color*,convolution,crop,draw*,eq*,framerate,*_cuda,*_qsv,*_vaapi,*v4l2*,hw*,scale,volume' --disable-muxers --disable-encoders --disable-decoders --enable-decoder='*sub*,*text*,*web*,aac*,*ac3*,alac*,ape,ass,av1*,cc_dec,cook,dca,eac3*,truehd,ff*,*yuv*,flv,flac,gif,h26[3-4]*,hevc*,hap,mp[1-3]*,prores,*peg*,mlp,mpl2,nellymoser,opus,pcm*,*png*,rawvideo,rv*,sami,srt,ssa,v210*,vc1*,vorbis,vp[6-9]*,wm*,wrapped_avframe' --disable-demuxers --enable-demuxer='*sub*,*text*,*ac3,*ac,*peg*,*web*,ape,ass,avi,concat,dts*,*dash*,*flv,gif,hls,h264,hevc,kux,xv,matroska,mlv,mov,mp3,mxf,nsv,nut,ogg,pcm*,rawvideo,rt*p,spdif,srt,vc1,v210*,wav,*pipe,image2' --disable-parsers --enable-parser='*sub*,aac*,ac3,cook,flac,h26[3-4],hevc,m*,opus,rv*,vc1,vorbis,vp[8-9]' --enable-encoder='aac,ff*,*yuv*,gif,h26[3-4]*,hevc*,mjpeg,*png,mpeg[2-4]*,nellymoser,nvenc*,opus,pcm*,rawvideo,speedhq,vorbis,vp[7-9],wrapped_avframe' --enable-muxer='dash,fifo,flv,gif,h264,hevc,hls,image2,*jpeg,matroska,mov,mp4,mpegts,nu*,og*,pcm*,rawvideo,spdif,wav,webm,*pipe'
avdevice_register_all00007FF9FA5ECE30
reader open error
state not changed!
stop recording
000001F98ADABC70 void __cdecl mdk::abi::MediaControlPush::setState(enum mdk::abi::State)@633 requested state 0=>1, current state 0
000001F98ADAC1B0 FrameReaderImpl.start(0, ...)
start frame reader thread: 9692
Selected avformat runtime version: 59.5.100 (build: 59.5.100), license: LGPL version 2.1 or later
avio_enum_protocols00007FF9FA6DC300
G: Url or protocol is not supported by MediaIO FFmpeg
Try to use default MediaIO
000001F98AF380D0 open url: G:/C0166.mov
000001F98AF380D0 url opened
Selected avcodec runtime version: 59.9.101 (build: 59.9.101), license: LGPL version 2.1 or later
av_packet_alloc00007FF9FA251B70
Selected avutil runtime version: 57.6.100 (build: 57.6.100), license: LGPL version 2.1 or later
av_dict_copy00007FF9FA714FB0
before avformat_open_input. io: 000001F98AF380D0(FFmpeg/pb: 000001F98ADA41C0, url: G:/C0166.mov
FFmpeg/Libav runtime git-2021-09-26-78ec2f3-QtAV
after avformat_open_input. pb: 000001F98ADA41C0, iformat: 00007FF9FA957620 context flags: 2097280, input format flags: 67141640
NVD3DREL: GR-805 : DX9 Overlay is DISABLED
NVD3DREL: GR-805 : DX9 Overlay is DISABLED
NVD3DREL: GR-805 : DX9 Overlay is DISABLED

unsupported ffmpeg sw pixel formats: uyyvyy411 bayer_bggr8 bayer_rggb8 bayer_gbrg8 bayer_grbg8 bayer_bggr16le bayer_bggr16be bayer_rggb16le bayer_rggb16be bayer_gbrg16le bayer_gbrg16be bayer_grbg16le bayer_grbg16be x2rgb10le x2rgb10be
supported ffmpeg sw pixel formats count: 167
Format: mov,mp4,m4a,3gp,3g2,mj2, range: 0 +112879ms, bitrate: 371154133, size: 0
Metadata:
  creation_time: 2021-01-05T15:34:55.000000Z
  major_brand: qt  
  minor_version: 537199360
  compatible_brands: qt  
Streams: 3
 Audio:
  stream#1, range: 0 +112879ms, frames: 5418212
  codec: pcm_s16le tag: 'sowt' profile: -99 level: -99, sample size: 0/16, s16 stereo(2) @48000Hz, bitrate: 1536000
  Metadata:
   creation_time: 2021-01-05T15:34:55.000000Z
   language: eng
   handler_name: Apple Sound Media Handler
   timecode: 06:47:36;18
   vendor_id:     
 Video:
  stream#0, range: 0 +112879ms, frames: 3383
  codec: prores tag: 'apcs' profile: 1 level: -99, sample size: 10/24, yuv422p10le, bpc:10, bpp:20(10,10,10), map: 0 1 2 0, bitrate: 369543817, 3840x2160, fps: 29.97, bframes: 0, primaries: bt709, trc: bt709, matrix: bt709, range: narrow
  Metadata:
   creation_time: 2021-01-05T15:34:55.000000Z
   language: eng
   encoder: Apple ProRes 422 LT
   handler_name: Apple Video Media Handler
   timecode: 06:47:36;18
   vendor_id: appl

***buffering progress 0%***
++++++++++++BUFFERING START++++++++++++
000001F98ADAC1B0 updateState: 1
starting decode loop thread mdk.video.dec#0@141808
video stream#0 starting decoding loop from decoder index 0...
creating video decoder: FFmpeg...
opening video decoder: FFmpeg...
Codec list:
prores
Selected: prores
opening ffmpeg video decoder: prores ...
AVCodec.Video[prores.] decoder: 16 Frame threads
prores yuv422p10le, bpc:10, bpp:20(10,10,10), map: 0 1 2 0 3840x2160
decode stored recovery packets: 0
***buffering progress 100%***
++++++++++++BUFFERING END++++++++++++
starting decode loop thread mdk.audio.dec#1@18168
audio stream#1 starting decoding loop from decoder index 0...
creating audio decoder: FFmpeg...
opening audio decoder: FFmpeg...
Codec list:
pcm_s16le
Selected: pcm_s16le
opening ffmpeg audio decoder: pcm_s16le ...
AVCodec.Audio[pcm_s16le.] decoder: 1 Single threads
pcm_s16le s16, stereo @48000Hz
decode stored recovery packets: 0
audio stream#1 sending 1 invalid AOT frame @0.000000s. seeking: 0
000001F98ADABC70 1st audio frame @0
000001F98ADABC70 seek end audio frame @0 seek_pos_: -1, sync_ao_ 1
Selected avfilter runtime version: 8.9.100 (build: 8.9.100), license: LGPL version 2.1 or later
AudioRenderer format: s16, stereo @48000Hz, requested: s16, stereo @48000Hz
AudioRenderer format changed and reinitialize
__cdecl ThreadLocal<struct mdk::abi::ComInit>::Data::Data(void) thread: 18168
struct mdk::abi::ComInit *__cdecl ThreadLocal<struct mdk::abi::ComInit>::get(void) const allocate and initialize ThreadLocal data
uninit_com_: 1
video stream#0 sending 1 invalid AOT frame @0.000000s. seeking: 0
000001F98ADABC70 1st video frame to render @0 , sync time: 0
no video renderer
0-track seek end video frame @0 seek_pos_: -1
000001F98ADABC70 1st video frame to render @0 , sync time: 0
no video renderer
video stream#0 AOT frame is sent
Using audio backend: XAudio2
000001F98ADABC70 ao opened: 1, reopen: 1, bad ao: 0
audio filter graph: 
+-----------+
|    src    |default--[48000Hz s16:stereo]--dst:default
| (abuffer) |
+-----------+

                                          +---------------+
src:default--[48000Hz s16:stereo]--default|      dst      |
                                          | (abuffersink) |
                                          +---------------+


>>>>>>>>1st audio frame (after seek) rendered: 1, ao: 0, a: 0, delta: 0 +0.021333
audio stream#1 AOT frame is sent
old device: 0x0, newDev: 0x1f9b195af70

from mdk-examples.

wang-bin avatar wang-bin commented on July 18, 2024

the log is not complete because of crash. please use latest vs2022 sdk, add environment var QSG_INFO=1, and run vkconfig.exe with

  • API dump enabled
  • and validation layer enabled like this

image

from mdk-examples.

AdrianEddy avatar AdrianEddy commented on July 18, 2024

Here's the log with all these enabled:

10:53:34: Starting E:\test\mdk-examples-master\Qt\build-qmlrhi-Desktop_Qt_6_2_2_MSVC2019_64bit-Release\release\qmlrhi.exe...
MDK 0.12.0 (git d2a3dae) - Multimedia Development Kit. Copyright (c) 2016-2021 WangBin(QtAV author) <wbsecg1 at gmail.com>
Build for: Windows0x0600 x86_64; MSVC1929; MSVCRT14.29.30136.0/msvcp140.dll; 15:20:02 Nov  8 2021
qt.scenegraph.general: Using QRhi with backend Vulkan
  Graphics API debug/validation layers: 0
  QRhi profiling and debug markers: 0
  Shader/pipeline cache collection: 0
qt.scenegraph.general: threaded render loop
qt.scenegraph.general: Using sg animation driver
qt.scenegraph.general: Animation Driver: using vsync: 16.68 ms
MDK 0.12.0 (git d2a3dae) - Multimedia Development Kit. Copyright (c) 2016-2021 WangBin(QtAV author) <wbsecg1 at gmail.com>
Build for: Windows0x0600 x86_64; MSVC1929; MSVCRT14.29.30136.0/msvcp140.dll; 15:20:02 Nov  8 2021
Registered audio backends: XAudio2 DSound 
XAudio2_9.dll
Build with XAudio2 from Win8+ SDK
Try symbol 'XAudio2Create' from Windows SDK dll
Registered audio backends: XAudio2 DSound 
000002812375E200 void __cdecl mdk::abi::MediaControlPush::setState(enum mdk::abi::State)@633 requested state 0=>1, current state 0
000002812375E740 FrameReaderImpl.start(0, ...)
start frame reader thread: 34580
try to load av module: E:\test\mdk-examples-master\Qt\build-qmlrhi-Desktop_Qt_6_2_2_MSVC2019_64bit-Release\ffmpeg-5.dll
Selected avdevice runtime version: 59.0.101 (build: 59.0.101), license: LGPL version 2.1 or later
Selected avdevice runtime configuration: --extra-version=QtAV --disable-doc --disable-debug --enable-shared --enable-runtime-cpudetect --enable-libmfx --enable-mediafoundation --disable-postproc --toolchain=msvc --enable-pic --extra-cflags='-Zi -FS -MD -guard:cf -D_WIN32_WINNT=0x0600' --extra-ldflags='-DEBUG -guard:cf -OPT:REF -SUBSYSTEM:CONSOLE -NODEFAULTLIB:libcmt' --enable-small --disable-filters --enable-filter='*null*,*fade,*fifo,*format,*resample,aeval,all*,atempo,pan,color*,convolution,crop,draw*,eq*,framerate,*_cuda,*_qsv,*_vaapi,*v4l2*,hw*,scale,volume' --disable-muxers --disable-encoders --disable-decoders --enable-decoder='*sub*,*text*,*web*,aac*,*ac3*,alac*,ape,ass,av1*,cc_dec,cook,dca,eac3*,truehd,ff*,*yuv*,flv,flac,gif,h26[3-4]*,hevc*,hap,mp[1-3]*,prores,*peg*,mlp,mpl2,nellymoser,opus,pcm*,*png*,rawvideo,rv*,sami,srt,ssa,v210*,vc1*,vorbis,vp[6-9]*,wm*,wrapped_avframe' --disable-demuxers --enable-demuxer='*sub*,*text*,*ac3,*ac,*peg*,*web*,ape,ass,avi,concat,dts*,*dash*,*flv,gif,hls,h264,hevc,kux,xv,matroska,mlv,mov,mp3,mxf,nsv,nut,ogg,pcm*,rawvideo,rt*p,spdif,srt,vc1,v210*,wav,*pipe,image2' --disable-parsers --enable-parser='*sub*,aac*,ac3,cook,flac,h26[3-4],hevc,m*,opus,rv*,vc1,vorbis,vp[8-9]' --enable-encoder='aac,ff*,*yuv*,gif,h26[3-4]*,hevc*,mjpeg,*png,mpeg[2-4]*,nellymoser,nvenc*,opus,pcm*,rawvideo,speedhq,vorbis,vp[7-9],wrapped_avframe' --enable-muxer='dash,fifo,flv,gif,h264,hevc,hls,image2,*jpeg,matroska,mov,mp4,mpegts,nu*,og*,pcm*,rawvideo,spdif,wav,webm,*pipe'
avdevice_register_all00007FFF54A1CE30
reader open error
state not changed!
stop recording
000002812375E200 void __cdecl mdk::abi::MediaControlPush::setState(enum mdk::abi::State)@633 requested state 0=>1, current state 0
000002812375E740 FrameReaderImpl.start(0, ...)
start frame reader thread: 34580
Selected avformat runtime version: 59.5.100 (build: 59.5.100), license: LGPL version 2.1 or later
avio_enum_protocols00007FFF54B0C300
D: Url or protocol is not supported by MediaIO FFmpeg
Try to use default MediaIO
00000281238FDD10 open url: D:/wideo/42ds.mp4
00000281238FDD10 url opened
Selected avcodec runtime version: 59.9.101 (build: 59.9.101), license: LGPL version 2.1 or later
av_packet_alloc00007FFF54681B70
Selected avutil runtime version: 57.6.100 (build: 57.6.100), license: LGPL version 2.1 or later
av_dict_copy00007FFF54B44FB0
before avformat_open_input. io: 00000281238FDD10(FFmpeg/pb: 0000028123754300, url: D:/wideo/42ds.mp4
FFmpeg/Libav runtime git-2021-09-26-78ec2f3-QtAV
[FFmpeg:mov,mp4,m4a,3gp,3g2,mj2] st: 0 edit list: 1 Missing key frame while searching for timestamp: 0
[FFmpeg:mov,mp4,m4a,3gp,3g2,mj2] st: 0 edit list 1 Cannot find an index entry before timestamp: 0.
after avformat_open_input. pb: 0000028123754300, iformat: 00007FFF54D87620 context flags: 2097280, input format flags: 67141640
unsupported ffmpeg sw pixel formats: uyyvyy411 bayer_bggr8 bayer_rggb8 bayer_gbrg8 bayer_grbg8 bayer_bggr16le bayer_bggr16be bayer_rggb16le bayer_rggb16be bayer_gbrg16le bayer_gbrg16be bayer_grbg16le bayer_grbg16be x2rgb10le x2rgb10be
supported ffmpeg sw pixel formats count: 167
Format: mov,mp4,m4a,3gp,3g2,mj2, range: 0 +137045ms, bitrate: 15294892, size: 0
Metadata:
  creation_time: 2014-04-02T00:18:04.000000Z
  major_brand: mp42
  minor_version: 0
  compatible_brands: mp42mp41
Streams: 2
 Audio:
  stream#1, range: 0 +137000ms, frames: 6424
  codec: aac tag: 'mp4a' profile: 1 level: -99, sample size: 0/16, f32p stereo(2) @48000Hz, bitrate: 317375
  extra data(2): 11 90 
  Metadata:
   creation_time: 2014-04-02T00:18:04.000000Z
   language: eng
   handler_name: #Mainconcept MP4 Sound Media Handler
   vendor_id: [0][0][0][0]
 Video:
  stream#0, range: 0 +137000ms, frames: 3425
  codec: h264 tag: 'avc1' profile: 77 level: 41, sample size: 8/24, yuv420p, bpc:8, bpp:12(8,8,8), map: 0 1 2 0, bitrate: 14975526, 1920x1080, fps: 25, bframes: 1, range: narrow
  extra data(54): 01 4D 40 29 FF E1 00 27 67 4D 40 29 96 52 00 F0 04 4F CB 80 A4 40 00 00 03 00 40 00 00 0C B9 A0 00 09 89 60 00 08 02 C3 F1 8E 0E D0 B1 68 90 01 00 04 68 EB 73 52 
   creation_time: 2014-04-02T00:18:04.000000Z
   language: eng
   encoder: AVC Coding
   handler_name: Mainconcept Video Media Handler
   vendor_id: [0][0][0][0]

***buffering progress 0%***
++++++++++++BUFFERING START++++++++++++
000002812375E740 updateState: 1
starting decode loop thread mdk.video.dec#0@38236
video stream#0 starting decoding loop from decoder index 0...
creating video decoder: FFmpeg...
opening video decoder: FFmpeg...
Codec list:
h264 'H264 Decoder'
h264_qsv 'h264_qsv'
h264_cuvid 'h264_cuvid'
Selected: h264
opening ffmpeg video decoder: h264 ...
starting decode loop thread mdk.audio.dec#1@34252
audio stream#1 starting decoding loop from decoder index 0...
creating audio decoder: FFmpeg...
opening audio decoder: FFmpeg...
Codec list:
aac 'AAC decoder'
aac_fixed
Selected: aac
opening ffmpeg audio decoder: aac ...
AVCodec.Audio[aac.] decoder: 1 Single threads
aac f32p, stereo @48000Hz
decode stored recovery packets: 0
***buffering progress 100%***
++++++++++++BUFFERING END++++++++++++
audio stream#1 sending 1 invalid AOT frame @0.000000s. seeking: 0
000002812375E200 1st audio frame @0
000002812375E200 seek end audio frame @0 seek_pos_: -1, sync_ao_ 1
Selected avfilter runtime version: 8.9.100 (build: 8.9.100), license: LGPL version 2.1 or later
AudioRenderer format: f32, stereo @48000Hz, requested: f32p, stereo @48000Hz
AudioRenderer format changed and reinitialize
__cdecl ThreadLocal<struct mdk::abi::ComInit>::Data::Data(void) thread: 34252
struct mdk::abi::ComInit *__cdecl ThreadLocal<struct mdk::abi::ComInit>::get(void) const allocate and initialize ThreadLocal data
uninit_com_: 1
AVCodec.Video[h264.] decoder: 16 Frame threads
h264 yuv420p, bpc:8, bpp:12(8,8,8), map: 0 1 2 0 1920x1080
decode stored recovery packets: 0
h264 codec pixel format list: 
cuda
dxva2_vld
d3d11va_vld
d3d11
yuv420p (selected)
using avcodec software decoder...
NVD3DREL: GR-805 : DX9 Overlay is DISABLED
NVD3DREL: GR-805 : DX9 Overlay is DISABLED
NVD3DREL: GR-805 : DX9 Overlay is DISABLED
video stream#0 sending 1 invalid AOT frame @0.000000s. seeking: 0
000002812375E200 1st video frame to render @0 , sync time: 0
no video renderer
0-track seek end video frame @0 seek_pos_: -1
000002812375E200 1st video frame to render @0 , sync time: 0
no video renderer
video stream#0 AOT frame is sent
qt.scenegraph.general: Using sg animation driver
qt.scenegraph.general: Animation Driver: using vsync: 16.68 ms
Using audio backend: XAudio2
000002812375E200 ao opened: 1, reopen: 1, bad ao: 0
qt.scenegraph.general: Requesting Vulkan API 1.2 Instance-level version was reported as 1.2.182
audio filter graph: 
+-----------+
|    src    |default--[48000Hz fltp:stereo]--swr:default
| (abuffer) |
+-----------+

                                          +---------------+
swr:default--[48000Hz flt:stereo]--default|      dst      |
                                          | (abuffersink) |
                                          +---------------+

                                           +-------------+
src:default--[48000Hz fltp:stereo]--default|     swr     |default--[48000Hz flt:stereo]--dst:default
                                           | (aresample) |
                                           +-------------+


>>>>>>>>1st audio frame (after seek) rendered: 1, ao: 0, a: 0, delta: 0 +0.021333
audio stream#1 AOT frame is sent
UNASSIGNED-khronos-validation-createinstance-status-message(INFO / SPEC): msgNum: -671457468 - Validation Information: [ UNASSIGNED-khronos-validation-createinstance-status-message ] Object 0: handle = 0x2812e769670, type = VK_OBJECT_TYPE_INSTANCE; | MessageID = 0xd7fa5f44 | Khronos Validation Layer Active:
    Settings File: Found at C:\Users\Eddy\AppData\Local\LunarG\vkconfig\override\vk_layer_settings.txt specified by VkConfig application override.
    Current Enables: None.
    Current Disables: None.

    Objects: 1
        [0] 0x2812e769670, type: 1, name: NULL
qt.rhi.general: Physical device 0: 'NVIDIA GeForce RTX 3080 Ti' 496.304.0 (api 1.2.186 vendor 0x10DE device 0x2208 type 2)
qt.rhi.general:     using this physical device
qt.rhi.general: queue family 0: flags=0xf count=16
qt.rhi.general: queue family 1: flags=0xc count=2
qt.rhi.general: queue family 2: flags=0xe count=8
qt.rhi.general: 151 device extensions available
qt.rhi.general: Enabling device extensions:
qt.rhi.general:   VK_KHR_swapchain
qt.rhi.general:   VK_EXT_debug_marker
qt.rhi.general:   VK_EXT_vertex_attribute_divisor
qt.scenegraph.general: MSAA sample count for the swapchain is 1. Alpha channel requested = no.
no video renderer
qt.scenegraph.general: rhi texture atlas dimensions: 512x512
qt.rhi.general: Creating new swapchain of 3 buffers, size 400x400, presentation mode 2
old device: 0x0, newDev: 0x2812f242020
10:53:36: E:\test\mdk-examples-master\Qt\build-qmlrhi-Desktop_Qt_6_2_2_MSVC2019_64bit-Release\release\qmlrhi.exe crashed.

from mdk-examples.

AdrianEddy avatar AdrianEddy commented on July 18, 2024

Ah sorry, I cleaned up everything and copied vs2022 sdk again and it works, so looks like the issue was in the previous SDK, I used mdk-sdk-windows-desktop-vs2019.7z before and confirmed that mdk-sdk-windows-desktop-vs2019.7z crashes, but mdk-sdk-windows-desktop-vs2022.7z doesn't and works correctly.

from mdk-examples.

Related Issues (7)

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.