Coder Social home page Coder Social logo

mpv-player / mpv Goto Github PK

View Code? Open in Web Editor NEW
26.0K 494.0 2.8K 101.84 MB

๐ŸŽฅ Command line video player

Home Page: https://mpv.io

License: Other

Objective-C 0.66% C 89.32% Python 0.71% Shell 0.47% Lua 4.78% JavaScript 0.41% Swift 2.47% Meson 1.18%
mpv mplayer c ffmpeg libav audio video multimedia hacktoberfest

mpv's Introduction

mpv logo

mpv

External links

Overview

mpv is a free (as in freedom) media player for the command line. It supports a wide variety of media file formats, audio and video codecs, and subtitle types.

There is a FAQ.

Releases can be found on the release list.

System requirements

  • A not too ancient Linux (usually, only the latest releases of distributions are actively supported), Windows 10 or later, or macOS 10.15 or later.
  • A somewhat capable CPU. Hardware decoding might help if the CPU is too slow to decode video in realtime, but must be explicitly enabled with the --hwdec option.
  • A not too crappy GPU. mpv's focus is not on power-efficient playback on embedded or integrated GPUs (for example, hardware decoding is not even enabled by default). Low power GPUs may cause issues like tearing, stutter, etc. On such GPUs, it's recommended to use --profile=fast for smooth playback. The main video output uses shaders for video rendering and scaling, rather than GPU fixed function hardware. On Windows, you might want to make sure the graphics drivers are current. In some cases, ancient fallback video output methods can help (such as --vo=xv on Linux), but this use is not recommended or supported.

mpv does not go out of its way to break on older hardware or old, unsupported operating systems, but development is not done with them in mind. Keeping compatibility with such setups is not guaranteed. If things work, consider it a happy accident.

Downloads

For semi-official builds and third-party packages please see mpv.io/installation.

Changelog

There is no complete changelog; however, changes to the player core interface are listed in the interface changelog.

Changes to the C API are documented in the client API changelog.

The release list has a summary of most of the important changes on every release.

Changes to the default key bindings are indicated in restore-old-bindings.conf.

Compilation

Compiling with full features requires development files for several external libraries. Mpv requires meson to build. Meson can be obtained from your distro or PyPI.

After creating your build directory (e.g. meson setup build), you can view a list of all the build options via meson configure build. You could also just simply look at the meson_options.txt file. Logs are stored in meson-logs within your build directory.

Example:

meson setup build
meson compile -C build
meson install -C build

For libplacebo, meson can use a git check out as a subproject for a convenient way to compile mpv if a sufficient libplacebo version is not easily available in the build environment. It will be statically linked with mpv. Example:

mkdir -p subprojects
git clone https://code.videolan.org/videolan/libplacebo.git --depth=1 --recursive subprojects/libplacebo

Essential dependencies (incomplete list):

  • gcc or clang
  • X development headers (xlib, xrandr, xext, xscrnsaver, xpresent, libvdpau, libGL, GLX, EGL, xv, ...)
  • Audio output development headers (libasound/ALSA, pulseaudio)
  • FFmpeg libraries (libavutil libavcodec libavformat libswscale libavfilter and either libswresample or libavresample)
  • libplacebo
  • zlib
  • iconv (normally provided by the system libc)
  • libass (OSD, OSC, text subtitles)
  • Lua (optional, required for the OSC pseudo-GUI and youtube-dl integration)
  • libjpeg (optional, used for screenshots only)
  • uchardet (optional, for subtitle charset detection)
  • nvdec and vaapi libraries for hardware decoding on Linux (optional)

Libass dependencies (when building libass):

  • gcc or clang, yasm on x86 and x86_64
  • fribidi, freetype, fontconfig development headers (for libass)
  • harfbuzz (required for correct rendering of combining characters, particularly for correct rendering of non-English text on macOS, and Arabic/Indic scripts on any platform)

FFmpeg dependencies (when building FFmpeg):

  • gcc or clang, yasm on x86 and x86_64
  • OpenSSL or GnuTLS (have to be explicitly enabled when compiling FFmpeg)
  • libx264/libmp3lame/libfdk-aac if you want to use encoding (have to be explicitly enabled when compiling FFmpeg)
  • For native DASH playback, FFmpeg needs to be built with --enable-libxml2 (although there are security implications, and DASH support has lots of bugs).
  • AV1 decoding support requires dav1d.
  • For good nvidia support on Linux, make sure nv-codec-headers is installed and can be found by configure.

Most of the above libraries are available in suitable versions on normal Linux distributions. For ease of compiling the latest git master of everything, you may wish to use the separately available build wrapper (mpv-build) which first compiles FFmpeg libraries and libass, and then compiles the player statically linked against those.

If you want to build a Windows binary, you either have to use MSYS2 and MinGW, or cross-compile from Linux with MinGW. See Windows compilation.

Release cycle

Once or twice a year, a release is cut off from the current development state and is assigned a 0.X.0 version number. No further maintenance is done, except in the event of security issues.

The goal of releases is to make Linux distributions happy. Linux distributions are also expected to apply their own patches in case of bugs.

Releases other than the latest release are unsupported and unmaintained.

See the release policy document for more information.

Bug reports

Please use the issue tracker provided by GitHub to send us bug reports or feature requests. Follow the template's instructions or the issue will likely be ignored or closed as invalid.

Using the bug tracker as place for simple questions is fine but IRC is recommended (see Contact below).

Contributing

Please read contribute.md.

For small changes you can just send us pull requests through GitHub. For bigger changes come and talk to us on IRC before you start working on them. It will make code review easier for both parties later on.

You can check the wiki or the issue tracker for ideas on what you could contribute with.

License

GPLv2 "or later" by default, LGPLv2.1 "or later" with -Dgpl=false. See details.

History

This software is based on the MPlayer project. Before mpv existed as a project, the code base was briefly developed under the mplayer2 project. For details, see the FAQ.

Contact

Most activity happens on the IRC channel and the GitHub issue tracker.

  • GitHub issue tracker: issue tracker (report bugs here)
  • User IRC Channel: #mpv on irc.libera.chat
  • Developer IRC Channel: #mpv-devel on irc.libera.chat

mpv's People

Contributors

akemi avatar avih avatar bjin avatar bylee20 avatar chrisk2 avatar christoph-heinrich avatar divverent avatar dudemanguy avatar ghedo avatar giselher avatar guidocella avatar haasn avatar jeeb avatar kasper93 avatar kevmitch avatar llyyr avatar mathstuf avatar na-na-hi avatar olifre avatar philipl avatar pigoz avatar qmega avatar rcombs avatar rossy avatar sfan5 avatar t-8ch avatar tmm1 avatar traneptora avatar wiiaboo avatar xantoz avatar

Stargazers

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

Watchers

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

mpv's Issues

-input file= and --input=file= inconsistent

Using the old form
mpv -input file=~/.mplayer/pipe video.mkv
expands the ~ wheres the new form
mpv --input file=~/.mplayer/pipe video.mkv
gives the error Can't open ~/.mplayer/pipe: No such file or directory. Is this intended?

Using the full path works for both versions.

mpv doesn't build on Homebrew

Homebrew build logs: https://gist.github.com/Aakkosti/5156693

The relevant part seems to be lines 301โ€“308 in terminal output.

demux/demux.c:499:18: error: variable has incomplete type 'enum CodecID'
    enum CodecID codec_id = mp_codec_to_av_codec_id(format);
                 ^
demux/demux.c:499:10: note: forward declaration of 'enum CodecID'
    enum CodecID codec_id = mp_codec_to_av_codec_id(format);
         ^
1 error generated.
make: *** [demux/demux.o] Error 1```

Implement AutoFit option in mpv

Setting the following option would start video playback with a window size of 1 to 100% of the display's resolution, scaling up or scaling down as needed taking into consideration of the video's aspect ratio and never display letter-boxing.

-autofit=75% or 0.75

Setting the following option would behave the same, however it would do so only if the video resolution is larger than the display's resolution, therefore it would only need to scale down and never scale up.

-autofit-larger=75% or 0.75

Provide gettext support to allow translations

I can't think of any good reason why mpv interface should be kept only in english.

The hard part would most probably be the walking over all sources adding translation marking to all the strings.

Also nice possibility to attract translators would be running transifex/weblate instance.

Crash when ยด is pressed

When I press ยด on my keyboard mpv crashes. It doesn't seem to matter what video I'm playing back.

ยด is the รฉ รก รบ accent character. In my Finnish keyboard layout it's the key to the left of backspace. (Just under the volume buttons. Slight misaim when adjusting volume -> crash.)

Mac OS X 10.8.2
mpv from Homebrew head, built today

Terminal output on crash:

2013-02-18 23:49:51.942 mpv[58997:707] An uncaught exception was raised 2013-02-18 23:49:51.943 mpv[58997:707] -[__NSCFConstantString characterAtIndex:]: Range or index out of bounds 2013-02-18 23:49:51.946 mpv[58997:707] ( 0 CoreFoundation 0x00007fff88ee30a6 __exceptionPreprocess + 198 1 libobjc.A.dylib 0x00007fff8ab3d3f0 objc_exception_throw + 43 2 CoreFoundation 0x00007fff88ee2e7c +[NSException raise:format:] + 204 3 CoreFoundation 0x00007fff88ea78ee -[__NSCFString characterAtIndex:] + 94 4 mpv 0x000000010923c743 -[GLMPlayerWindow keyDown:] + 118 5 AppKit 0x00007fff89b24120 -[NSWindow sendEvent:] + 9687 6 AppKit 0x00007fff89b1f744 -[NSApplication sendEvent:] + 5761 7 mpv 0x000000010923c139 vo_cocoa_check_events + 218 8 mpv 0x000000010924f25b check_events + 24 9 mpv 0x00000001091df46f play_current_file + 9036 10 mpv 0x00000001091dce83 main + 2053 11 libdyld.dylib 0x00007fff8806a7e1 start + 0 ) 2013-02-18 23:49:51.946 mpv[58997:707] *** Terminating app due to uncaught exception 'NSRangeException', reason: '-[__NSCFConstantString characterAtIndex:]: Range or index out of bounds' *** First throw call stack: ( 0 CoreFoundation 0x00007fff88ee30a6 __exceptionPreprocess + 198 1 libobjc.A.dylib 0x00007fff8ab3d3f0 objc_exception_throw + 43 2 CoreFoundation 0x00007fff88ee2e7c +[NSException raise:format:] + 204 3 CoreFoundation 0x00007fff88ea78ee -[__NSCFString characterAtIndex:] + 94 4 mpv 0x000000010923c743 -[GLMPlayerWindow keyDown:] + 118 5 AppKit 0x00007fff89b24120 -[NSWindow sendEvent:] + 9687 6 AppKit 0x00007fff89b1f744 -[NSApplication sendEvent:] + 5761 7 mpv 0x000000010923c139 vo_cocoa_check_events + 218 8 mpv 0x000000010924f25b check_events + 24 9 mpv 0x00000001091df46f play_current_file + 9036 10 mpv 0x00000001091dce83 main + 2053 11 libdyld.dylib 0x00007fff8806a7e1 start + 0 ) libc++abi.dylib: terminate called throwing an exception Abort trap: 6

--geometry does not work

https://github.com/mpv-player/mpv/blob/master/DOCS/man/en/changes.rst say that --geometry should be used but only -geometry seems to work

e.g
mpv --geometry 0%:100% video.mkv
gives the error
Cannot open file '0%:100%': No such file or directory Failed to open 0%:100%.

whereas mpv -geometry 0%:100% work correctly.

Also why geometry 0:0 measure from the bottom in mpv when it measures from the top in mplayer2

Using the brew to install mpv today

External vobsubs (.idx/.sub pairs) do not work with Libav

mpv dropped the internal vobsub demuxer and decoder in favor of using ffmpeg for this functionality. Unfortunately, Libav doesn't have a vobsub demuxer at all, so .idx/.sub files can't be opened when mpv is compiled with Libav.

Possible workarounds:
a) Created muxed subtitles with mkvmerge: mkvmerge -o foo.mks foo.idx ; mpv file.avi -sub foo.mks
b) use ffmpeg (requires latest release)

Libav bug: http://bugzilla.libav.org/show_bug.cgi?id=419

Colons in screenshot-template=%p

๏ฟฝOS X allows colons in file names, but the file manager displays them as slashes for historical reasons. They're generally not a good idea.

The man page says %p uses the OSD format, but I couldn't find a way to change it.

How about individual percent sequences for play time?

Typos

Hi
Looks like there are 2 typos in the document "encoding-example-profiles.conf".
Here ---> https://github.com/mpv-player/mpv/blob/master/etc/encoding-example-profiles.conf

In "video codecs" section (near lines 84 and 85) it says :-
[enc-v-vp8]
profile-desc = "VP8 (libvpx)"
oac = libvpx
oacopts = qmin=4,b=10000000k # ought to be enough for anyone; for CBR use, set b=; for VBR use, set qmin= to quality

I think this should be
ovc instead of oac
and
ovcopts instead of oacopts

Add build information the mpv.log

The following should be added to the log file on playback:

mpv e540e5d (C) 2000-2013 mpv/MPlayer/mplayer2 projects
built on Thu Feb 21 22:25:50 CET 2013

It should be added before:

Playing Something.mkv.
Cache size set to 32678 KiB

Essentially it should appear if mpv is run without specifying a media file to play like it currently does. And it should also appear when a media file is played back in both log and terminal.

OS X: video resizes when playing a file with ordered chapters

When playing a file with ordered chapters, mpv leaves fullscreen when it switches the file. While it's in the new file, the f key for fullscreen doesn't work. Fullscreen resumes when mpv returns to the original file.

Example 1: a file with the intro sequence in a separate file. Pre-intro works fine; intro leaves fullscreen; after intro works fine.

Example 2: same file, but not in fullscreen. Both pre-intro and intro work fine, but if I toggle fullscreen in the intro sequence, the bug manifests when mpv switches back to the original file.

Have full screen play nice with OS X

In full screen, mpv allows neither the dock nor the menubar to appear when the mouse hits a screen edge, so there is no discoverable way out. You have to know keyboard shortcuts or trackpad gestures.

Static pthreads-win32 causes core/mplayer.c to fail compilation

CC core/m_option.o
CC  core/m_property.o
CC  core/m_struct.o
CC  core/mp_common.o
CC  core/mp_fifo.o
CC  core/mp_msg.o
CC  core/mplayer.o
core/mplayer.c: In function 'detach_ptw32':
core/mplayer.c:4308:5: error: implicit declaration of function 'pthread_win32_thread_detach_np' [-Werror=implicit-function-declaration]
core/mplayer.c:4309:5: error: implicit declaration of function 'pthread_win32_process_detach_np' [-Werror=implicit-function-declaration]
core/mplayer.c: In function 'osdep_preinit':
core/mplayer.c:4329:5: error: implicit declaration of function 'pthread_win32_process_attach_np' [-Werror=implicit-function-declaration]
core/mplayer.c:4330:5: error: implicit declaration of function 'pthread_win32_thread_attach_np' [-Werror=implicit-function-declaration]
cc1: some warnings being treated as errors
make: *** [core/mplayer.o] Error 1

Currently I've been getting around this by using --disable-pthreads when I cross-compile for Windows. Using MinGW-w64 GCC 4.7.2, I'd built pthreads-win32 from CVS using the GC-static option.

[Windows] AviSynth input fails

The script itself works in the usual apps (x264, FFmpeg itself, Windows Media Player...), but in MPV the script fails to render, resulting in the following error message:

mpv.exe -v -v test.avs
Using built-in default codecs.conf.
91 audio & 151 video codecs
Configuration: --prefix=/home/qyot27/mpv_build --disable-debug --enable-static --disable-caca --disable-xv --disable-vdpau --disable-vm --disable-xinerama --disable-x11 --disable-xshape --disable-jack --disable-alsa --disable-pulse --disable-portaudio --disable-rsound --disable-bluray --disable-dvdread --disable-pthreads --disable-avxsynth --disable-libbs2b --extra-cflags=-march=pentium3 -mtune=pentium3 --enable-cross-compile --target=i686-w64-mingw32
Command line: '-v' '-v' 'test.avs'
get_path('fonts') -> 'c:/Program Files/mpv-player/mpv/fonts'
get_path('fonts') -> 'c:/Program Files/mpv-player/mpv/fonts'
[ass] Raster: FreeType 2.4.10
[ass] Shaper: FriBidi 0.19.2 (SIMPLE)
[ass] Initialized
get_path('fonts') -> 'c:/Program Files/mpv-player/mpv/fonts'
get_path('subfont.ttf') -> 'c:/Program Files/mpv-player/mpv/subfont.ttf'
[ass] No usable fontconfig configuration file found, using fallback.
[ass] Updating font cache
get_path('input.conf') -> 'c:/Program Files/mpv-player/mpv/input.conf'
Input config file c:/Program Files/mpv-player/mpv/input.conf missing.
Input config file /home/qyot27/mpv_build/etc/mpv/input.conf missing.
Falling back on default (hardcoded) input config
get_path('test.avs.conf') -> 'c:/Program Files/mpv-player/mpv/test.avs.conf'
getch2: 6 can't get number of input events [disabling console input]

[[[init getch2]]]
Playing test.avs.
WINSOCK2 init: 0
[file] File size is 41 bytes
STREAM: [file] test.avs
STREAM: Description: File
STREAM: Author: Albeu
STREAM: Comment: based on the code from ??? (probably Arpi)
DEMUXER: freeing EDL demuxer at 0259f038
DEMUXER: freeing CUE demuxer at 0259f038
LAVF_check: AVISynth
Detected file format: AVISynth (libavformat)
41=mp_read(024fafd0, 0251e014, 32768), pos: 41, eof:1
Fontconfig error: Cannot load default config file
Fontconfig error: Cannot load default config file
[avs @ 01171860]File position before avformat_find_stream_info() is 0
[avs @ 01171860]All info found
mp_seek(024fafd0, 0, 65536)
mp_seek(024fafd0, 0, 65536)
mp_seek(024fafd0, 0, 65536)
[avs @ 01171860]File position after avformat_find_stream_info() is 0
==> Found video stream: 0
aspect= 608_0/(32_1)
======= VIDEO Format ======
biSize 49
biWidth 608
biHeight 32
biPlanes 0
biBitCount 32
biCompression 1095911234='BGRA'
biSizeImage 77824

Unknown extra header dump: [42] [6f] [74] [74] [6f] [6d] [55] [70] [0]

[lavf] stream 0: video (rawvideo), -vid 0
LAVF: 0 audio and 1 video streams found
LAVF: build 3548516
[ass] Raster: FreeType 2.4.10
[ass] Shaper: FriBidi 0.19.2 (SIMPLE)
[ass] Initialized
get_path('fonts') -> 'c:/Program Files/mpv-player/mpv/fonts'
get_path('subfont.ttf') -> 'c:/Program Files/mpv-player/mpv/subfont.ttf'
[ass] No usable fontconfig configuration file found, using fallback.
[ass] Updating font cache
Load subtitles in .
get_path('sub/') -> 'c:/Program Files/mpv-player/mpv/sub/'
get_path('sub/') -> 'c:/Program Files/mpv-player/mpv/sub/'
[stream] Video (+) --vid=0 (BGRA/rawvideo)
[V] filefmt:24 fourcc:0x41524742 size:608x32 fps:24.000 ftime:=0.0417
<vo_direct3d>Setting backbuffer dimensions to (1024x768).
<vo_direct3d>device_caps_power2_only 0, device_caps_square_only 0
<vo_direct3d>device_texture_sys 0
<vo_direct3d>max_texture_width 4096, max_texture_height 4096
aspect_save_screenres 1024x768
vo: win32: running at 1024x768 with depth 32
Opening video decoder: [ffmpeg] libavcodec video codecs
libavcodec.size: 0 x 0
Selected video codec: raw video [libavcodec]
Video codecs.conf entry: lavc (Generic libavcodec decoder) vfm: ffmpeg

*** uninit(0x0)
Audio: no audio
Starting playback...
demux_lavf_fill_buffer()
DEMUX: Append packet to d_video, len=77824 pts=0.000 pos=41 [packs: A=0 V=1]
[ffmpeg] aspect_ratio: 0.000000
VIDEO: 608x32 24.000 fps 14942.2 kbps (1867.8 kB/s)
VDec: vo config request - 608 x 32 (preferred colorspace: bgr32)
Trying filter chain: vo
<vo_direct3d>Accepted image format (StretchRect): bgr32
<vo_direct3d>Accepted image format (texture rendering): bgr32
<vo_direct3d>Accepted rendering methods for format='bgr32': StretchRect=0x16, Texture=0, Texture+Shader=0.
vo_debug: query(bgr32) returned 0x7 (i=0)
VDec: using bgr32 as output csp (no 0)
Movie-Aspect is undefined - no prescaling applied.
VO Config (608x32->608x32,flags=0,0x42475220)
VO: [direct3d] 608x32 => 608x32 bgr32
VO: Description: Direct3D 9 Renderer
VO: Author: Georgi Petrov (gogothebee) [email protected] and others
aspect_save_screenres 1024x768
aspect(0) fitin: 608x32 monitor_par: 1.00
aspect(1) wh: 608x32 (org: 608x32)
aspect(2) wh: 608x32 (org: 608x32)
<vo_direct3d>Accepted image format (StretchRect): bgr32
<vo_direct3d>Accepted image format (texture rendering): bgr32
<vo_direct3d>Accepted rendering methods for format='bgr32': StretchRect=0x16, Texture=0, Texture+Shader=0.
aspect_save_screenres 1024x768
[vo] reset window bounds: 204:340:616:64
[vo] move window: 208:368
[vo] resize window: 608:32
<vo_direct3d>Accepted image format (StretchRect): bgr32
<vo_direct3d>Accepted image format (texture rendering): bgr32
<vo_direct3d>Accepted rendering methods for format='bgr32': StretchRect=0x16, Texture=0, Texture+Shader=0.
<vo_direct3d>Using StretchRect.
<vo_direct3d>resize_d3d called.
<vo_direct3d>destroy_d3d_surfaces called.
<vo_direct3d>New backbuffer (1024x768), VO (608x32)
<vo_direct3d>create_d3d_surfaces called.
aspect(0) fitin: 608x32 monitor_par: 1.00
aspect(1) wh: 608x32 (org: 608x32)
aspect(2) wh: 608x32 (org: 608x32)
aspect(0) fitin: 608x32 monitor_par: 1.00
aspect(1) wh: 608x32 (org: 608x32)
aspect(2) wh: 608x32 (org: 608x32)
[vo] Window size: 608x32
[vo] Video source: 608x32 (608x32)
[vo] Video display: (0, 0) 608x32 -> (0, 0) 608x32
[vo] Video scale: 1.000000/1.000000
[vo] OSD borders: l=0 t=0 r=0 b=0
[vo] Video borders: l=0 t=0 r=0 b=0
<vo_direct3d>Video rectangle: t: 0, l: 0, r: 608, b:32
*** [vo] Exporting mp_image_t, 608x32x32bpp BGR packed, 77824 bytes
(imgfmt: 42475220, planes: 00000000,00000000,00000000 strides: 0,0,0, chroma: 0x0, shift: h:0,v:0)
*** ftime=0.000 ***
Fontconfig error: Cannot load default config file
Fontconfig error: Cannot load default config file

This also occurs in MPlayer2 (the 'solution' there was to force the use of -demuxer avs, which is obviously not an option here). Not sure if it happens in MPlayer. The script was serving YV12 at 1280x720; 608x32 and BGRA clearly means that AviSynth is throwing an error message of some sort, but the message isn't visible with the Direct3D renderer. Switching to -vo opengl, the error is visible:
Import: unable to locate "mp:test.avs" (try specifying a path)

I've tried fiddling with the path, but that doesn't resolve it. The mp: is still there, sometimes embedded in the middle of the path to the script (you can see this happen if you use ./ in front of the script name).

Add support to use only one instance of mpv

Maybe I'm just lacking of reading comprehension, but I can't see a way to achieve this on the man page. Is it possible to make an option to use the same mpv instance to play files? Instead of having to close one first and then open another one.

I know you can achieve this with an input file and loadfile PATH but...

OSD refresh issue when using fullscreen and letterboxing under direct3d

I probably only notice this because my monitor is 4:3, but when fullscreen mode is being used and the video has to be letterboxed, the OSD doesn't refresh properly, constantly overlaying the new text over the old. A screenshot probably says it better than I can:

http://img51.imageshack.us/img51/6012/letterboxfsosdissue.png

And it persists like that until I un-fullscreen it.

This doesn't occur in cases where I fullscreen a 4:3 video, so it's probably because the OSD is being drawn inside the padding that MPV adds. Taking it out of fullscreen forces the OSD back onto the real video, which can then be redrawn correctly.

It does it when using direct3d and direct3d_shaders. I'm not sure if it might affect some of the others, but I could only test with the direct* and opengl* outputs (and opengl doesn't exhibit the problem). I don't recall encountering this under Linux, so it may just be a problem with the direct3d vos.

[Windows] Status messages not printed to Command Prompt

The .exe I built on March 28th prints correctly, but the one I compiled earlier tonight will not show any output at all (a side effect of this is that it looks as if the program silently failed, until the playback window appears).

I have to redirect it to stdout to see what it's doing. I have no clue what commit might have done this because none of them between the 28th and 4th seem to have anything to do with this (so it probably got brought in during a merge after the 28th), but the message for commit 3091394 got me thinking about background and foreground, and I did find out that if I explicitly switch from cmd.exe over to mintty, it prints correctly in mintty without needing to redirect.

Can't play AAC LD

Hi
Error message is:-
[aac @ 0x8bbde60]Audio object type 23 is not supported.
Could not open codec.
[format] Sample format iec61937le not yet supported.

That's because the audio track is "Format : ER AAC LD".
MPlayer can play this using FAAD2.
But mpv can't use this codec.
Only "Codecs: libavcodecs mpg123" so far.

Samples are here ---> http://www.mediafire.com/download.php?pbl6epjbklvc0g3

michelle1.mkv is "ER AAC LD", sound doesn't play with mpv.
michelle2.mkv is "LC", this plays OK with mpv

@ubuntu:~/mpv-build/mpv$ ./mpv "michelle1.mkv"
Playing michelle1.mkv.
Detected file format: Matroska
[stream] Video (+) --vid=0 (avc1/V_MPEG4/ISO/AVC)
[stream] Audio (+) --aid=0 (*) (MP4A/A_AAC)
Failed to open VDPAU backend libvdpau_nvidia.so: cannot open shared object file: No such file or directory
[vdpau] Error when calling vdp_device_create_x11: 1
Selected video codec: H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 [libavcodec]
[aac @ 0x8bbde60]Audio object type 23 is not supported.
Could not open codec.
Audio decoder init failed for codecs.conf entry "ffaac".
Selected audio codec: libavformat/spdifenc AAC pass-through decoder [spdif]
AO: [pulse] 48000Hz 2ch s16le (2 bytes per sample)
[format] Sample format iec61937le not yet supported
[libaf] Reinitialization did not work, audio filter 'format' returned error code -2
[libaf] Unable to setup filter system can not meet sound-card demands, please send a bug report.
Couldn't find matching filter/ao format!
Audio: no audio
VO: [xv] 320x180 => 320x180 yv12
V: 2.9 (00:00:02) / 3.0 (00:00:03) (96%)
Exiting... (End of file)

[OS X] Switching Spaces when mpv is paused causes mpv to freeze for ~5 seconds

With pigoz's build mpv-20120124-3b22404, Mountain Lion 10.8.2, opengl-hq

Procedure:

  • Play a video
  • Pause it
  • Switch to a different space using swipe gesture on a trackpad
  • Switch back to the space with mpv
  • mpv is now frozen for ~5 seconds, in full screen, the mouse will get/stay invisible
  • after unfreezing everything is back to normal

Switching spaces while mpv is playing causes no problems, also switching spaces with shortcuts or MissionControl doesn't cause the problem.

Reproduced on multiple systems.

if add -I/usr/include/samba-4.0": configure OK, build FAIL

in archlinux updated samba to 4.0. now samba sources move to "/usr/include/samba-4.0"

adding --extra-libs-mpv=/usr/include/samba-4.0 in command line configure detected OK

============ Checking for Samba support (libsmbclient) ============
# include <libsmbclient.h>

int main(void) { smbc_opendir("smb://"); return 0; }

cc -Wundef  -Wstrict-prototypes -Wmissing-prototypes -Wdisabled-optimization -Wno-pointer-sign -std=gnu99  -march=x86-64 -mtune=native -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 /tmp/mpv-configure-3828-10197/tmp.c -I. -D_GNU_SOURCE  -I/home/sl1pkn07/aplicaciones/mpv-build-git/src/mpv-build/build_libs/include -D_FORTIFY_SOURCE=2 -D_REENTRANT   -L/home/sl1pkn07/aplicaciones/mpv-build-git/src/mpv-build/build_libs/lib -Wl,-O1,--sort-common,--as-needed,-z,relro -I/usr/include/samba-4.0   -lncurses -o /tmp/mpv-configure-3828-10197/tmp -lsmbclient

Result is: yes 

but when build:

CC      stream/stream_smb.o
stream/stream_smb.c:21:26: fatal error: libsmbclient.h: No such file or directory
 #include <libsmbclient.h>
                          ^
compilation terminated.

tested with:

--extra-libs-mpv
--extra-libs
--extra-ldflags

Request: Output when fontconfig is caching fonts

In lachs0r's version of mplayer2, it showed when fontconfig was caching fonts by outputting [fontconfig] Scanning dir C:/Windows/Fonts

This feature is necessary in order for front end programs to know when fontconfig is caching fonts so that it can notify the user that they need to wait (and that mpv is not frozen).

i.e. VLC shows a dialog box when it cache's fonts for the first time.

relative paths in `-input conf =` broken by recent commits.

I have a file called input_no_enter.conf video.mkv in ~/.mpv

Using
mpv -input conf=input_no_enter.conf video.mkv

now results
Input config file input_no_enter.conf not found.

whereas it worked fine using the latest commits on Feb 06, 2013.

Using the full path is works e.g

mpv -input conf=/Users/bilalh/.mpv/input_no_enter.conf video.mkv

Is this intended?

Subtitle and OSD fonts broken with fontconfig 2.10.92

Embedded fonts in MKVs are replaced with Arial Unicode MS with fontconfig 2.10.92 (included in the latest Homebrew).

Detected file format: Matroska
[ass] FcFreeTypeQueryFace failed

[...]

AV: 00:00:04 / 00:22:52 (0%) A-V:  0.011 Cache: 94%
[ass] fontconfig: Selected font is not the requested one: 'Arial Unicode MS' != 'LTFinnegan Medium'
AV: 00:01:42 / 00:22:52 (7%) A-V: -0.002 Cache: 50%
[ass] fontconfig: Selected font is not the requested one: 'Arial Unicode MS' != 'Amienne'
[ass] fontconfig: Selected font is not the requested one: 'Arial Unicode MS' != 'Charme'

The culprit is fontconfig 2.10.92, as mplayer2 has the same problem: https://bbs.archlinux.org/viewtopic.php?pid=1260215

Switching back to fontconfig 2.10.91 fixes the problem.

Bundle identifier not in DNS

The Mac .app uses org.mpv-player.standalone which isn't registered, therefore not guaranteed to be unique. Should be io.mpv.

x11, xv: XShmCompletionEvent not handled

This sometimes leads to e.g. OSD flicker, when X11 is not fast enough to render what we are throwing at it (can happen especially with high fps videos or -untimed).

vo_x11 may also need to be extended to support two alternating buffers, like vo_xv does.

The idea is that the buffer is owned by X11 between X[v]ShmPutImage and the XShmCompletionEvent, and we should avoid writing to it in the meantime.

Option to keep soft subs when encoding from mkv

When encoding from a mkv it would be useful to able to keep the soft subs e.g if I do

mpv anime.mkv -o opening.mkv --start 6 --end 130

and the mkv has soft subs they would be converted to hard subs.

Multithreaded Cocoa Backend with native NSRunLoop

These are the pending problems that must be solved for a merge of cocoa_event_loop branch (diff):

  • NSRecursiveLock unlock called twice on initialization
  • switching window size between 50% and 200% repeatedly moves the window to the left
  • a short resize (i.e. not issued from live resize causes a small flicker)
  • input is not handled in a threadsafe way
  • backend reinitialization doesn't work properly: video > audio > video causes a deadlock
  • instead of the playloop all of mplayer.c should be started inside a thread
  • fullscreen causes deadlock since it's a sync operation
  • can't get out of fullscreen
  • fullscreen async redraw doesn't respect panscan
  • async redraw doesn't support retina

Readd a simple bob deinterlacer

As per the policy for removed features, I'd like to request readding the tfields video filter (or something equivalent).

In mplayer/mplayer2, I used tfields=4 as a simple bob deinterlacer for 1080i transport streams. Although using yadif=1 (or 3) would be more ideal, even my Core i7-2635QM is unable to keep up with it, i.e, I get the "Audio/Video desynchronisation detected!" message.

version.sh dont get version from git

need remove "!" in line 10

โ”Œโ”€โ”ค[sl1pkn07]|[sL1pKn07]|[~/aplicaciones/mpv-build-git/src/mpv-build/mpv]|
โ””โ”€โ”€โ”€โ•ผ  git_revision= ; test $git_revision || test ! -d .git || git_revision=`git rev-parse --short HEAD` ; echo $git_revision

โ”Œโ”€โ”ค[sl1pkn07]|[sL1pKn07]|[~/aplicaciones/mpv-build-git/src/mpv-build/mpv]|
โ””โ”€โ”€โ”€โ•ผ  git_revision=esee ; test $git_revision || test ! -d .git || git_revision=`git rev-parse --short HEAD` ; echo $git_revision
esee
โ”Œโ”€โ”ค[sl1pkn07]|[sL1pKn07]|[~/aplicaciones/mpv-build-git/src/mpv-build/mpv]|
โ””โ”€โ”€โ”€โ•ผ  git_revision= ; test $git_revision || test -d .git || git_revision=`git rev-parse --short HEAD` ; echo $git_revision
4a2e4b6
โ”Œโ”€โ”ค[sl1pkn07]|[sL1pKn07]|[~/aplicaciones/mpv-build-git/src/mpv-build/mpv]|
โ””โ”€โ”€โ”€โ•ผ  git_revision=esee ; test $git_revision || test -d .git || git_revision=`git rev-parse --short HEAD` ; echo $git_revision
esee

PD: yes, my bash is flaman XD

greetings

No audio with some videos

[stream] Video (+) --vid=0 (h264)
[stream] Audio (+) --aid=0 (*) (aac)
Failed to open VDPAU backend libvdpau_r600.so: cannot open shared object file: No such file or directory
[vdpau] Error when calling vdp_device_create_x11: 1
X11 error: GLXBadFBConfig
[gl] Could not create GLX context!
Selected video codec: H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 [lavc:h264]
ad_lavc: initial decode failed
Audio decoder init failed for lavc:aac
Failed to initialize an audio decoder for codec 'aac'.
Audio: no audio
VO: [opengl] 1280x720 => 1280x720 420p10
(Paused) V: 00:00:02 / 00:23:47 (0%)

I get this error with some files, search a LOT, but can't find a resolution. I re-installed the audio codecs but didn't solve the problem.

With some videos the audio works very well

[stream] Video (+) --vid=0 (h264)
[stream] Audio (+) --aid=0 (*) (aac)
Failed to open VDPAU backend libvdpau_r600.so: cannot open shared object file: No such file or directory
[vdpau] Error when calling vdp_device_create_x11: 1
X11 error: GLXBadFBConfig
[gl] Could not create GLX context!
Selected video codec: H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 [lavc:h264]
Selected audio codec: AAC (Advanced Audio Coding) [lavc:aac]
AO: [pulse] 48000Hz 2ch floatle (4 bytes per sample)
VO: [opengl] 1280x720 => 1280x720 420p10
AV: 00:00:08 / 00:23:47 (0%) A-V: -0.000
(Paused) AV: 00:00:10 / 00:23:47 (0%) A-V: 0.001

I'm sorry if the answer is somewhere, but I really couldn't find it.

Better screenshot default location (was: Relative paths in screenshot-template don't work (in OS X))

Specifying a "relative" path in the screenshot-template option does not seem to work, also only the --foo=bar syntax works at all:

--screenshot-template=~/Desktop/mpv_screenshot%n
--> Error opening '~/Desktop/mpv_screenshot0001.png' for writing!

--screenshot-template="~/Desktop/mpv_screenshot%n"
--> Error opening '~/Desktop/mpv_screenshot0001.png' for writing!

--screenshot-template "~/Desktop/mpv_screenshot%n"
--> Error parsing commandline option screenshot-template: Required parameter for option missing

--screenshot-template ~/Desktop/mpv_screenshot%n
--> Error parsing commandline option screenshot-template: Required parameter for option missing

It doesn't make a difference between shell and config-file. Only setting an absolute path works. Also, mpv should default to screenshot-template="~/Desktop/mpv_screenshot%n" on OS X, so that users will find their screenshots.

opengl: rgb24 has channels swapped

I am aware that this is mostly an swscale issue, since it is reproducible in FFmpeg by handing in rgb24 input and using -pix_fmt yuv420p, which results in the U and V channels being swapped on output. It doesn't happen if the process is in two steps, so bgr24->420p seems to be fine.

But in this case, MPV seems to be doing something even when using -vo opengl, which as far as the playback messages go, ostensibly supports output with rgb24 and the swscale conversion message never appears. But the colors still look like the rgb24->420p conversion is happening.

It's most noticeable when using AviSynth scripts as input, and it occurs on Windows and Linux (I didn't test under OSX but I have little reason to think it'd be different there). If ConvertToRGB24() is used, the colors are swapped. RGB32 (which gets detected as bgra), nor any of the actual YUV colorspaces seem to be affected.

Request: allow -vf scale,format= to recognize pixfmt names like 'yuv420p'

I just ran into this because I was trying to transcode something from 10-bit 4:2:0 to 8-bit 4:2:0, but MPV kept insisting on encoding it as 4:4:4 instead. I did finally realize I had to use yv12 when giving the target pixfmt to -vf scale,format=, but that wasn't what I immediately thought of because I'm so used to using the more descriptive format names, which it failed to do anything with.

Allow deinterlacer to be disabled by default

If you occasionally play interlaced content you have to change the command line every time. If you don't know in advance you have to remember your position and restart.

The only way around that is put vf=yadif in the config file, but then it's on all the time, so half the time you have to hit D to disable it right after starting playback.

How about an option to load the filter, but disable it until you hit D?

4:3 Content Tearing

Playing back full screen 4:3 videos on 16:9 monitors seems to have an issue with vsync. There's consistent tearing on all of my 4:3 videos I tested with several different resolutions (480p/720p/1080p). I can throw pretty much any 16:9 content at mpv with no tearing whatsoever (which is why I started using this fork over mplayer2 in the first place) so I was kind of surprised.
Vo is vanilla opengl-hq. I have nothing else in my config file except for cache and cache-min settings. I'm on a Debian testing box using the fglrx driver. I'm using the current version compiled from mpv-build.
It appears to not tear using opengl sans hq but then I get no neat scaling.

"Could not find matching colorspace" for some H.264 videos using vdpau, x11 and xv

mpv and mplayer display error messages for certain videos when using the vdpau, x11 and xv outputs, but not when using opengl (or opengl-hq).

Example with vdpau:

Playing [Mazui] Hyลka/[Mazui]Hyouka-01v2[F2B20F65].mkv.
Detected file format: Matroska
[stream] Video (+) --vid=0 (avc1/V_MPEG4/ISO/AVC)
[stream] Audio (+) --aid=0 () (MP4A/A_AAC)
[stream] Subs (+) --sid=0 (
) (ASS/S_TEXT/ASS)
Opening video filter: [screenshot]
Selected video codec: H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 [libavcodec]
Selected audio codec: Advanced Audio Coding [libavcodec]
AO: [pulse] 48000Hz 2ch s16le (2 bytes per sample)
Could not find matching colorspace - retrying with -vf scale...
Opening video filter: [scale]
Unsupported format 444p14le
Unsupported format 444p14be
Unsupported format 444p12le
Unsupported format 444p12be
Unsupported format 422p14le
Unsupported format 422p14be
Unsupported format 422p12le
Unsupported format 422p12be
Unsupported format 444p14le
Unsupported format 444p14be
Unsupported format 444p12le
Unsupported format 444p12be
Unsupported format 422p14le
Unsupported format 422p14be
Unsupported format 422p12le
Unsupported format 422p12be
[swscaler @ 0x7f460f886100]using unscaled yuv420p10le -> yuv420p special converter
VO: [vdpau] 1280x720 => 1280x720 yv12
[vdpau] Got display refresh rate 60.020 Hz.
[vdpau] If that value looks wrong give the -vo vdpau:fps=X suboption manually.
AV: 1.0 (00:00:01) / 1539.7 (00:25:39) (0%) A-V: 0.000

Versus opengl-hq:

Playing [Mazui] Hyลka/[Mazui]Hyouka-01v2[F2B20F65].mkv.
Detected file format: Matroska
[stream] Video (+) --vid=0 (avc1/V_MPEG4/ISO/AVC)
[stream] Audio (+) --aid=0 () (MP4A/A_AAC)
[stream] Subs (+) --sid=0 (
) (ASS/S_TEXT/ASS)
Opening video filter: [screenshot]
Selected video codec: H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 [libavcodec]
Selected audio codec: Advanced Audio Coding [libavcodec]
AO: [pulse] 48000Hz 2ch s16le (2 bytes per sample)
VO: [opengl-hq] 1280x720 => 1280x720 420p10le
AV: 1.0 (00:00:00) / 1539.7 (00:25:39) (0%) A-V: -0.000

This file, for which mpv detects the same codecs does not have this problem:

Playing Yojou-han Shinwa Taikei/[J-pwq]The_Tatami_Galaxy-03[9EA3A184].mkv.
Detected file format: Matroska
[stream] Video (+) --vid=0 (avc1/V_MPEG4/ISO/AVC)
[stream] Audio (+) --aid=0 --alang=jpn () (MP4A/A_AAC)
[stream] Subs (+) --sid=0 --slang=eng (
) (ASS/S_TEXT/ASS)
Opening video filter: [screenshot]
Selected video codec: H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 [libavcodec]
Selected audio codec: Advanced Audio Coding [libavcodec]
AO: [pulse] 48000Hz 2ch s16le (2 bytes per sample)
VO: [vdpau] 1280x720 => 1280x720 yv12
[vdpau] Got display refresh rate 60.020 Hz.
[vdpau] If that value looks wrong give the -vo vdpau:fps=X suboption manually.
AV: 1.4 (00:00:01) / 1379.9 (00:22:59) (0%) A-V: -0.000

It's the same on mplayer2, but the mpv output is more verbose.
Video card: GeForce 8600 GT
NVIDIA driver version: 310.19

Make a non-standalone .app bundle

Currently, 'make osxbundle' copies every single linked dynamic library into the app bundle. If mpv is included in a packaging system like Fink (or MacPorts or HomeBrew), it makes no sense to copy libraries that are managed by the package manager. It would be nice to have a new make target that generates only a minimal bundle (create the .app tree, copy the executable, edit Info.plist). Maybe 'osxbundle-minimal' as a possibility ?

The last two lines of mpv/TOOLS/osxbundle.py are what copy all the dylibs into the .app bundle. I've verified that commenting them out generates a minimal working bundle, but I don't know how to make the execution of those two lines conditional to the make target being used.

bc20f2c introduces strange A-V delays with spdif

Hi,

Commit bc20f2c introduces a regression that causes files played back with spdif to have strange A-V delays.

For instance, playing a file with AC3 audio might have the A-V delay pegged at 0.120s at first. An earlier revision would gradually reduce that delay to around 0.0 but with this commit the A-V delay seems to stick.

Seeking around in the file shows other values for the A-V delay, ranging up to 0.900. The delay seems to depend on the position in the file, that is, seeking to (for example) 5:00 always gives the same delay.

What is especially strange is that this commit doesn't really have much to do with A-V delays at all, it just moves some variables around.

cheers,

Bundle mpv.app fails to run

OS X 10.7/xcode 4.6.1. External libraries built with Fink

./configure --enable-macosx-bundle
make -j8
make osxbundle

The mpv icon briefly appears on the Dock and then disappears. This is the output in Console.app: The standalone binary mpv works fine.

4/4/2013 9:58:24.288 AM [0x0-0x454454].org.mpv-player.standalone: Terminal type `unknown' is not defined.
4/4/2013 9:58:24.288 AM [0x0-0x454454].org.mpv-player.standalone: Error parsing commandline option psn_0_4539476: option not found
4/4/2013 9:58:24.288 AM [0x0-0x454454].org.mpv-player.standalone: Exiting... (Fatal error)
4/4/2013 9:58:24.289 AM com.apple.launchd.peruser.501: ([0x0-0x454454].org.mpv-player.standalone[74140]) Exited with code: 1

If I 'open mpv.app' from the terminal, this is the output to Terminal

LSOpenURLsWithRole() failed with error -10810 for the file /src/mpv/mpv.app.

And this appears in Console.app

4/4/2013 10:06:11.607 AM [0x0-0x457457].org.mpv-player.standalone: Error parsing commandline option psn_0_4551767: option not found
4/4/2013 10:06:11.607 AM [0x0-0x457457].org.mpv-player.standalone: Exiting... (Fatal error)
4/4/2013 10:06:11.608 AM com.apple.launchd.peruser.501: ([0x0-0x457457].org.mpv-player.standalone[85024]) Exited with code: 1

Problem with stay on top on OS X

  1. mpv lost focus when switch to a different space with stay on top enable:
    Screen Shot 2013-02-03 at 3 34 21 AM
  2. When on fullscreen shift + T not work at all.
    mpv git-68fa3c4, os x 10.8.2

Request: more detailed time-position (like mplayer2)

Back in mplayer2, the time-pos used to have a decimal place (example 123.45)

The extra accuracy was great because it allowed a smoother seekbar movement vs second by second movement now

Can this be added as, for example, 00:01:35.43

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.