mpv-player / mpv

🎥 Command line video player
https://mpv.io
Other
27.69k stars 2.86k forks source link

wasapi not reproduce all frequencies #2768

Closed felixq closed 1 year ago

felixq commented 8 years ago

I update my version of mpv (2016-01-18, git-fee45c0, 64bit) and I realized that there is no longer dsound option. I commented and play a video that had already heard and felt different. When testing with pure tones with wasapi option, low tones (30Hz) can not hear, also tones below 100 Hz and above 10KHz have a lower volume and with distortion. In the previous version (0.15.0-git-2a8bbee, 64bit) with dsound option heard correctly. I used another audio player to check the results. A page with test tones. http://www.eminent-tech.com/techsuppt.htm#test

Windows 7 SP1 64Bits

ghost commented 8 years ago

Try exclusive mode, which should exclude the windows mixer.

kevmitch commented 8 years ago

You're hearing the difference between ffmpeg's resampler and the dsound one. The WASAPI API doesn't do re-sampling by itself so mpv has to do it using ffmpeg. Unfortunately, ffmpeg doesn't have the greatest resampler by default. Take a look the comparisons at http://src.infinitewave.ca/. ffmpeg can be coerced to use the much higher quality soxr resampler, and this can be achieved in mpv with the option af-defaults=lavrresample=o=[resampler=soxr]. Unfortunately, mpv/ffmpeg needs to be linked against soxr, which the current windows build does not. I've also found there to sometimes be stuttering / underrun issues when using this resampler.

Those test tones are at unusual (and I might add inconsistent) sample rates like 8000hz and 22050hz, which theoretically shouldn't be a problem, but in reality sample rate conversion can make a difference. In real life anything you play will be at 48000hz or 44100hz which your sound card should be able to reproduce natively without any resampling, which will always be better than any resampling algorithm. You can ensure that you always get native sample rate reproduction (if your hardware supports it) by using WASAPI exclusive mode, or in shared mode, you can manually select the shared mode sample rate to match that of the content you are playing.

felixq commented 8 years ago

With the 'ao=wasapi:exclusive' option there is no audio and the video see in leaps. Thank you for SRC page. I did not know that ffmpeg was so bad. I made the comparison with the footbar2000 and loses widely. The exception is soxr, who is high quality. Unfortunately it feels the difference with files at 44100Hz. Anything else happens, because it does not have to resample. I have a file at 44100Hz with a sweep of frequencies from 20Hz to 20kz for test and high frequency content disappears. My hearing covers the range from 20Hz to 20kHz (checked) and my equipment are able to play well. If the 'dsound' option is not coming back, Could it be build with soxr?

ghost commented 8 years ago

I don't think the ffmpeg resampler is that bad, but maybe the default settings are also a bit low quality to pass such tests. You could play with it by setting libswresample options via af-defaults=lavrresample:o=[...] where the libswresample options go into the ... field.

kevmitch commented 8 years ago

With the 'ao=wasapi:exclusive' option there is no audio and the video see in leaps.

Can you post the log for this case?

Unfortunately it feels the difference with files at 44100Hz.

I take this to mean you can hear the difference with a file that is 44.1kHz. Did you try setting the shared mode mix format to 44.1kHz in windows control panel?

felixq commented 8 years ago

C:\Program Files\mpv $ mpv -v "d:\x1\Utawarerumono 03.mp4" [cplayer] Command line options: '-v' 'd:\x1\Utawarerumono 03.mp4' [cplayer] mpv 0.15.0-git-2a8bbee (C) 2000-2016 mpv/MPlayer/mplayer2 projects [cplayer] built on Mon Jan 18 14:52:12 CET 2016 [cplayer] ffmpeg library versions: [cplayer] libavutil 55.13.100 [cplayer] libavcodec 57.22.100 [cplayer] libavformat 57.21.101 [cplayer] libswscale 4.0.100 [cplayer] libavfilter 6.25.100 [cplayer] libswresample 2.0.101 [cplayer] ffmpeg version: N-77911-g9cdc23e [cplayer] [cplayer] Configuration: /home/lachs0r/mingw-w64-cmake/buildroot/build64/packages/mpv-prefix/src/mpv/waf configure --enable-static-build --enable-pdf-build --disable-manpage-build --enable-libmpv-shared --enable-gpl3 --enable-lua --enable-libarchive --enable-libass --enable-libbluray --enable-dvdread --enable-dvdnav --enable-uchardet --enable-rubberband --enable-lcms2 --prefix=/home/lachs0r/mingw-w64-cmake/buildroot/build64/prefix/mingw [cplayer] List of enabled features: asm atomics av-avpacket-int64-duration av-new-pixdesc av-pix-fmt-mmal av-subtitle-nopict av-version-info avcodec-chroma-pos-api avcodec-profile-name avframe-metadata avframe-skip-samples build-date c11-tls cplayer debug-build direct3d dlopen dos-paths dvdnav dvdread dxva2-hwaccel egl-angle encoding gl gl-dxinterop gl-win32 glob-win32-replacement gpl3 iconv jpeg lcms2 libarchive libass libass-osd libav libavdevice libavfilter libbluray libm libmpv-shared libswresample lua mingw noexecstack optimize posix-or-mingw resampler rubberband sse4-intrinsics static-build stdatomic subprocess tv uchardet wasapi win32 win32-internal-pthreads zlib [global] config path: '' -> 'C:\Users\felix\AppData\Roaming/mpv' [global] config path: 'mpv.conf' -/-> 'C:\Users\felix\AppData\Roaming/mpv/mpv.conf' [global] config path: 'config' -/-> 'C:\Users\felix\AppData\Roaming/mpv/config' [global] config path: 'mpv.conf' -> 'C:/Program Files/mpv/mpv.conf' [global] config path: 'config' -/-> 'C:/Program Files/mpv/config' [global] config path: 'mpv.conf' -/-> 'C:/Program Files/mpv/mpv/mpv.conf' [global] config path: 'config' -/-> 'C:/Program Files/mpv/mpv/config' [cplayer] Reading config file C:/Program Files/mpv/mpv.conf [cplayer] Setting option 'vo' = 'opengl-hq' (flags = 4) [cplayer] Setting option 'framedrop' = 'decoder' (flags = 4) [cplayer] Setting option 'fullscreen' = 'yes' (flags = 4) [cplayer] Setting option 'no-msg-color' = '' (flags = 4) [cplayer] Setting option 'no-cache' = '' (flags = 4) [cplayer] Setting option 'vd-lavc-threads' = '0' (flags = 4) [cplayer] Setting option 'ao' = 'wasapi:exclusive' (flags = 4) [cplayer] Setting option 'priority' = 'abovenormal' (flags = 4) [cplayer] Setting option 'vf' = 'lavfi="pp=ac",eq' (flags = 4) [cplayer] Setting option 'screenshot-directory' = '~~desktop/' (flags = 4) [cplayer] Setting option 'v' = '' (flags = 8) [global] config path: 'input.conf' -/-> 'C:\Users\felix\AppData\Roaming/mpv/input.conf' [global] config path: 'input.conf' -> 'C:/Program Files/mpv/input.conf' [global] config path: 'input.conf' -/-> 'C:/Program Files/mpv/mpv/input.conf' [global] user path: 'C:/Program Files/mpv/input.conf' -> 'C:/Program Files/mpv/input.conf' [ifo] Opening C:/Program Files/mpv/input.conf [ifo/dvdnav] Opening C:/Program Files/mpv/input.conf [bdmv/bluray] Opening C:/Program Files/mpv/input.conf [file] Opening C:/Program Files/mpv/input.conf [file] Stream opened successfully. [input] Parsing input config file C:/Program Files/mpv/input.conf [input] Input config file C:/Program Files/mpv/input.conf parsed: 15 binds [osc] Loading script @osc.lua... [global] config path: 'scripts' -/-> 'C:\Users\felix\AppData\Roaming/mpv/scripts' [global] config path: 'scripts' -> 'C:/Program Files/mpv/scripts' [global] config path: 'scripts' -/-> 'C:/Program Files/mpv/mpv/scripts' [osc] loading mp.defaults [osc] loading @osc.lua [global] config path: 'lua-settings/osc.conf' -/-> 'C:\Users\felix\AppData\Roaming/mpv/lua-settings/osc.conf' [global] config path: 'lua-settings/osc.conf' -/-> 'C:/Program Files/mpv/lua-settings/osc.conf' [global] config path: 'lua-settings/osc.conf' -/-> 'C:/Program Files/mpv/mpv/lua-settings/osc.conf' [osc] lua-settings/osc.conf not found. [cplayer] Run command: define-section, flags=0, args=[showhide, mouse_move script-binding osc/keybinding1 [cplayer] mouse_leave script-binding osc/__keybinding2 [cplayer] , force] [cplayer] Run command: enable-section, flags=0, args=[showhide, allow-hide-cursor+allow-vo-dragging] [cplayer] Run command: define-section, flags=0, args=[input, mouse_btn0 script-binding osc/keybinding3 [cplayer] shift+mouse_btn0 script-binding osc/__keybinding4 [cplayer] mouse_btn2 script-binding osc/keybinding5 [cplayer] mouse_btn0_dbl ignore [cplayer] shift+mouse_btn0_dbl ignore [cplayer] mouse_btn2_dbl ignore [cplayer] del script-binding osc/keybinding6 [cplayer] , force] [cplayer] Run command: enable-section, flags=0, args=[input, ] [cplayer] Run command: disable-section, flags=0, args=[input] [cplayer] Done loading @osc.lua. [ytdl_hook] Loading script @ytdl_hook.lua... [global] config path: 'scripts' -/-> 'C:\Users\felix\AppData\Roaming/mpv/scripts' [global] config path: 'scripts' -> 'C:/Program Files/mpv/scripts' [global] config path: 'scripts' -/-> 'C:/Program Files/mpv/mpv/scripts' [ytdl_hook] loading mp.defaults [ytdl_hook] loading @ytdl_hook.lua [cplayer] Run command: hook-add, flags=0, args=[on_load, 1, 10] [cplayer] Done loading @ytdl_hook.lua. [global] config path: 'scripts' -/-> 'C:\Users\felix\AppData\Roaming/mpv/scripts' [global] config path: 'scripts' -> 'C:/Program Files/mpv/scripts' [global] config path: 'scripts' -/-> 'C:/Program Files/mpv/mpv/scripts' [stats] Loading script C:/Program Files/mpv/scripts/stats.lua... [global] config path: 'scripts' -/-> 'C:\Users\felix\AppData\Roaming/mpv/scripts' [global] config path: 'scripts' -> 'C:/Program Files/mpv/scripts' [global] config path: 'scripts' -/-> 'C:/Program Files/mpv/mpv/scripts' [stats] loading mp.defaults [global] user path: 'C:/Program Files/mpv/scripts/stats.lua' -> 'C:/Program Files/mpv/scripts/stats.lua' [stats] loading file C:/Program Files/mpv/scripts/stats.lua [global] config path: 'lua-settings/stats.conf' -/-> 'C:\Users\felix\AppData\Roaming/mpv/lua-settings/stats.conf' [global] config path: 'lua-settings/stats.conf' -/-> 'C:/Program Files/mpv/lua-settings/stats.conf' [global] config path: 'lua-settings/stats.conf' -/-> 'C:/Program Files/mpv/mpv/lua-settings/stats.conf' [stats] lua-settings/stats.conf not found. [cplayer] Run command: define-section, flags=0, args=[input_stats, i script-binding stats/stats [cplayer] , default] [cplayer] Run command: enable-section, flags=0, args=[input_stats, allow-hide-cursor+allow-vo-dragging] [cplayer] Run command: define-section, flags=0, args=[input_forced_stats, , force] [cplayer] Run command: enable-section, flags=0, args=[input_forced_stats, allow-hide-cursor+allow-vo-dragging] [cplayer] Done loading C:/Program Files/mpv/scripts/stats.lua. [global] config path: 'watch_later' -> 'C:\Users\felix\AppData\Roaming/mpv/watch_later' [cplayer] Playing: d:\x1\Utawarerumono 03.mp4 [cplayer] Running hook: ytdl_hook/on_load [cplayer] Run command: hook-ack, flags=0, args=[on_load] [ifo] Opening d:\x1\Utawarerumono 03.mp4 [ifo/dvdnav] Opening d:\x1\Utawarerumono 03.mp4 [bdmv/bluray] Opening d:\x1\Utawarerumono 03.mp4 [file] Opening d:\x1\Utawarerumono 03.mp4 [file] Stream opened successfully. [demux] Trying demuxer: disc (force-level: normal) [demux] Trying demuxer: edl (force-level: normal) [demux] Trying demuxer: cue (force-level: normal) [demux] Trying demuxer: rawaudio (force-level: normal) [demux] Trying demuxer: rawvideo (force-level: normal) [demux] Trying demuxer: tv (force-level: normal) [demux] Trying demuxer: mkv (force-level: normal) [demux] Trying demuxer: libarchive (force-level: normal) [demux] Trying demuxer: rar (force-level: normal) [demux] Trying demuxer: lavf (force-level: normal) [lavf] Found 'mov,mp4,m4a,3gp,3g2,mj2' at score=100 size=2048. [lavf] avformat_find_stream_info() finished after 852613 bytes. [demux] Detected file format: mov,mp4,m4a,3gp,3g2,mj2 (libavformat) [findfiles] Loading external files in d:\x1\ [global] config path: 'sub/' -/-> 'C:\Users\felix\AppData\Roaming/mpv/sub/' [global] config path: 'sub/' -/-> 'C:/Program Files/mpv/sub/' [global] config path: 'sub/' -/-> 'C:/Program Files/mpv/mpv/sub/' [global] config path: 'audio/' -/-> 'C:\Users\felix\AppData\Roaming/mpv/audio/' [global] config path: 'audio/' -/-> 'C:/Program Files/mpv/audio/' [global] config path: 'audio/' -/-> 'C:/Program Files/mpv/mpv/audio/' cplayer Video --vid=1 () (h264) cplayer Audio --aid=1 --alang=und (_) (aac) [vo/opengl-hq] Initializing OpenGL backend 'angle' [vo/opengl-hq] GL_VERSION='OpenGL ES 3.0 (ANGLE 2.1.0.)' [vo/opengl-hq] Detected GLES 3.0. [vo/opengl-hq] GL_VENDOR='Google Inc.' [vo/opengl-hq] GL_RENDERER='ANGLE (Intel(R) HD Graphics Direct3D11 vs_5_0 ps_5_0)' [vo/opengl-hq] GL_SHADING_LANGUAGE_VERSION='OpenGL ES GLSL ES 3.00 (ANGLE 2.1.0.)' [vo/opengl-hq] Loaded functions for 200/builtin. [vo/opengl-hq] Loaded functions for 300/builtin. [vo/opengl-hq] Loaded functions for 300/builtin. [vo/opengl-hq] Loaded functions for 300/GL_EXT_unpack_subimage. [vo/opengl-hq] Loaded functions for 200/GL_ARB_framebuffer_object. [vo/opengl-hq] Loaded functions for 300/GL_ARB_vertex_array_object. [vo/opengl-hq] Loaded functions for 300/GL_ARB_texture_rg. [vo/opengl-hq] Loaded functions for 300/GL_ARB_uniform_buffer_object. [vo/opengl-hq] Filterable half-float textures supported. [vo/opengl-hq] Skipping GLES backend. [vo/opengl-hq/win32] uninit [vo/opengl-hq] Initializing OpenGL backend 'win' [vo/opengl-hq] GL_VERSION='3.0.0 - Build 10.18.10.3496' [vo/opengl-hq] Detected desktop OpenGL 3.0. [vo/opengl-hq] GL_VENDOR='Intel' [vo/opengl-hq] GL_RENDERER='Intel(R) HD Graphics 2500' [vo/opengl-hq] GL_SHADING_LANGUAGE_VERSION='1.30 - Build 10.18.10.3496' [vo/opengl-hq] Loaded functions for 210/builtin. [vo/opengl-hq] Loaded functions for 210/builtin. [vo/opengl-hq] Loaded functions for 300/builtin. [vo/opengl-hq] Loaded functions for 210/builtin. [vo/opengl-hq] Loaded functions for 110/GL_EXT_unpack_subimage. [vo/opengl-hq] Loaded functions for 300/GL_ARB_framebuffer_object. [vo/opengl-hq] Loaded functions for 300/GL_ARB_vertex_array_object. [vo/opengl-hq] Loaded functions for 300/GL_ARB_texture_rg. [vo/opengl-hq] Loaded functions for 320/GL_ARB_sync. [vo/opengl-hq] Loaded functions for 0/WGL_EXT_swap_control. [vo/opengl-hq] Loaded functions for 0/WGL_NV_DX_interop. [vo/opengl-hq] Loaded functions for 430/GL_ARB_debug_output. [vo/opengl-hq] Loaded functions for 310/GL_ARB_uniform_buffer_object. [vo/opengl-hq] Filterable half-float textures supported. [vo/opengl-hq] Reported display depth: R=8, G=8, B=8 [vo/opengl-hq] 16 bit texture depth: 16. [vo/opengl-hq] Testing user-set FBO format (0x805b) [vo/opengl-hq] Create FBO: 16x16 [vo/opengl-hq/win32] display-fps: 59.789541 [vo/opengl-hq/win32] color-profile: C:\Windows\system32\spool\drivers\color\sRGB Color Space Profile.icm [vo/opengl-hq] Assuming 59.789541 FPS for display sync. [vd] Container reported FPS: 23.976025 [vf] Opening video filter: [lavfi graph=pp=ac] [lavfi] Setting option 'graph' = 'pp=ac' (flags = 0) [vf] Opening video filter: [eq] [eq] vf_eq2: c=0.00 b=0.00 g=1.0000 s=0.00 [eq] vf_eq2: c=1.00 b=0.00 g=1.0000 s=0.00 [eq] vf_eq2: c=1.00 b=0.00 g=1.0000 s=0.00 [eq] vf_eq2: c=1.00 b=0.00 g=1.0000 s=1.00 [vd] Codec list: [vd] lavc:h264 - H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 [vd] Opening video decoder lavc:h264 [vd] Using software decoding. [vd] Detected 4 logical cores. [vd] Requesting 5 threads for decoding. [vd] Selected video codec: H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 [lavc:h264] [ad] Codec list: [ad] lavc:aac - AAC (Advanced Audio Coding) [ad] lavc:aac_fixed (aac) - AAC (Advanced Audio Coding) [ad] Opening audio decoder lavc:aac [ad] Requesting 1 threads for decoding. [ad] Selected audio codec: AAC (Advanced Audio Coding) [lavc:aac] [cplayer] Starting playback... [af] Audio filter chain: [af] [in] 44100Hz stereo 2ch floatp [af] [out] 44100Hz stereo 2ch floatp [af] [ao] 44100Hz stereo 2ch floatp [ao] Trying audio driver 'wasapi' [ao/wasapi] Setting option 'exclusive' = '' (flags = 0) [ao/wasapi] requested format: 44100 Hz, stereo channels, floatp [ao/wasapi] No device specified. Selecting default. [ao/wasapi] Selecting device '{bd9bd6fc-0b9e-48f3-b1b5-c67ecabac0e8}' (DFX Speakers (DFX Audio Enhancer 11.1)) [ao/wasapi] Monitoring changes in device {0.0.0.00000000}.{bd9bd6fc-0b9e-48f3-b1b5-c67ecabac0e8} [ao/wasapi] Trying stereo float @ 44100hz (exclusive) [ao/wasapi] Trying mono double @ 8000hz (exclusive) [ao/wasapi] Trying mono float @ 8000hz (exclusive) [ao/wasapi] Trying mono s32 @ 8000hz (exclusive) [ao/wasapi] Trying mono s24 @ 8000hz (exclusive) [ao/wasapi] Trying mono s32 (24 valid) @ 8000hz (exclusive) [ao/wasapi] Trying mono s16 @ 8000hz (exclusive) [ao/wasapi] Trying mono u8 @ 8000hz (exclusive) [ao/wasapi] Trying mono double @ 11025hz (exclusive) [ao/wasapi] Trying mono float @ 11025hz (exclusive) [ao/wasapi] Trying mono s32 @ 11025hz (exclusive) [ao/wasapi] Trying mono s24 @ 11025hz (exclusive) [ao/wasapi] Trying mono s32 (24 valid) @ 11025hz (exclusive) [ao/wasapi] Trying mono s16 @ 11025hz (exclusive) [ao/wasapi] Trying mono u8 @ 11025hz (exclusive) [ao/wasapi] Trying mono double @ 16000hz (exclusive) [ao/wasapi] Trying mono float @ 16000hz (exclusive) [ao/wasapi] Trying mono s32 @ 16000hz (exclusive) [ao/wasapi] Trying mono s24 @ 16000hz (exclusive) [ao/wasapi] Trying mono s32 (24 valid) @ 16000hz (exclusive) [ao/wasapi] Trying mono s16 @ 16000hz (exclusive) [ao/wasapi] Trying mono u8 @ 16000hz (exclusive) [ao/wasapi] Trying mono double @ 22050hz (exclusive) [ao/wasapi] Trying mono float @ 22050hz (exclusive) [ao/wasapi] Trying mono s32 @ 22050hz (exclusive) [ao/wasapi] Trying mono s24 @ 22050hz (exclusive) [ao/wasapi] Trying mono s32 (24 valid) @ 22050hz (exclusive) [ao/wasapi] Trying mono s16 @ 22050hz (exclusive) [ao/wasapi] Trying mono u8 @ 22050hz (exclusive) [ao/wasapi] Trying mono double @ 32000hz (exclusive) [ao/wasapi] Trying mono float @ 32000hz (exclusive) [ao/wasapi] Trying mono s32 @ 32000hz (exclusive) [ao/wasapi] Trying mono s24 @ 32000hz (exclusive) [ao/wasapi] Trying mono s32 (24 valid) @ 32000hz (exclusive) [ao/wasapi] Trying mono s16 @ 32000hz (exclusive) [ao/wasapi] Trying mono u8 @ 32000hz (exclusive) [ao/wasapi] Trying mono double @ 44100hz (exclusive) [ao/wasapi] Trying mono float @ 44100hz (exclusive) [ao/wasapi] Trying mono s32 @ 44100hz (exclusive) [ao/wasapi] Trying mono s24 @ 44100hz (exclusive) [ao/wasapi] Trying mono s32 (24 valid) @ 44100hz (exclusive) [ao/wasapi] Trying mono s16 @ 44100hz (exclusive) [ao/wasapi] Trying mono u8 @ 44100hz (exclusive) [ao/wasapi] Trying mono double @ 48000hz (exclusive) [ao/wasapi] Trying mono float @ 48000hz (exclusive) [ao/wasapi] Trying mono s32 @ 48000hz (exclusive) [ao/wasapi] Trying mono s24 @ 48000hz (exclusive) [ao/wasapi] Trying mono s32 (24 valid) @ 48000hz (exclusive) [ao/wasapi] Trying mono s16 @ 48000hz (exclusive) [ao/wasapi] Trying mono u8 @ 48000hz (exclusive) [ao/wasapi] Trying mono double @ 88200hz (exclusive) [ao/wasapi] Trying mono float @ 88200hz (exclusive) [ao/wasapi] Trying mono s32 @ 88200hz (exclusive) [ao/wasapi] Trying mono s24 @ 88200hz (exclusive) [ao/wasapi] Trying mono s32 (24 valid) @ 88200hz (exclusive) [ao/wasapi] Trying mono s16 @ 88200hz (exclusive) [ao/wasapi] Trying mono u8 @ 88200hz (exclusive) [ao/wasapi] Trying mono double @ 96000hz (exclusive) [ao/wasapi] Trying mono float @ 96000hz (exclusive) [ao/wasapi] Trying mono s32 @ 96000hz (exclusive) [ao/wasapi] Trying mono s24 @ 96000hz (exclusive) [ao/wasapi] Trying mono s32 (24 valid) @ 96000hz (exclusive) [ao/wasapi] Trying mono s16 @ 96000hz (exclusive) [ao/wasapi] Trying mono u8 @ 96000hz (exclusive) [ao/wasapi] Trying mono double @ 176400hz (exclusive) [ao/wasapi] Trying mono float @ 176400hz (exclusive) [ao/wasapi] Trying mono s32 @ 176400hz (exclusive) [ao/wasapi] Trying mono s24 @ 176400hz (exclusive) [ao/wasapi] Trying mono s32 (24 valid) @ 176400hz (exclusive) [ao/wasapi] Trying mono s16 @ 176400hz (exclusive) [ao/wasapi] Trying mono u8 @ 176400hz (exclusive) [ao/wasapi] Trying mono double @ 192000hz (exclusive) [ao/wasapi] Trying mono float @ 192000hz (exclusive) [ao/wasapi] Trying mono s32 @ 192000hz (exclusive) [ao/wasapi] Trying mono s24 @ 192000hz (exclusive) [ao/wasapi] Trying mono s32 (24 valid) @ 192000hz (exclusive) [ao/wasapi] Trying mono s16 @ 192000hz (exclusive) [ao/wasapi] Trying mono u8 @ 192000hz (exclusive) [ao/wasapi] Trying mono double @ 352800hz (exclusive) [ao/wasapi] Trying mono float @ 352800hz (exclusive) [ao/wasapi] Trying mono s32 @ 352800hz (exclusive) [ao/wasapi] Trying mono s24 @ 352800hz (exclusive) [ao/wasapi] Trying mono s32 (24 valid) @ 352800hz (exclusive) [ao/wasapi] Trying mono s16 @ 352800hz (exclusive) [ao/wasapi] Trying mono u8 @ 352800hz (exclusive) [ao/wasapi] Trying mono double @ 384000hz (exclusive) [ao/wasapi] Trying mono float @ 384000hz (exclusive) [ao/wasapi] Trying mono s32 @ 384000hz (exclusive) [ao/wasapi] Trying mono s24 @ 384000hz (exclusive) [ao/wasapi] Trying mono s32 (24 valid) @ 384000hz (exclusive) [ao/wasapi] Trying mono s16 @ 384000hz (exclusive) [ao/wasapi] Trying mono u8 @ 384000hz (exclusive) [ao/wasapi] Trying stereo double @ 8000hz (exclusive) [ao/wasapi] Trying stereo float @ 8000hz (exclusive) [ao/wasapi] Trying stereo s32 @ 8000hz (exclusive) [ao/wasapi] Trying stereo s24 @ 8000hz (exclusive) [ao/wasapi] Trying stereo s32 (24 valid) @ 8000hz (exclusive) [ao/wasapi] Trying stereo s16 @ 8000hz (exclusive) [ao/wasapi] Trying stereo u8 @ 8000hz (exclusive) [ao/wasapi] Trying stereo double @ 11025hz (exclusive) [ao/wasapi] Trying stereo float @ 11025hz (exclusive) [ao/wasapi] Trying stereo s32 @ 11025hz (exclusive) [ao/wasapi] Trying stereo s24 @ 11025hz (exclusive) [ao/wasapi] Trying stereo s32 (24 valid) @ 11025hz (exclusive) [ao/wasapi] Trying stereo s16 @ 11025hz (exclusive) [ao/wasapi] Trying stereo u8 @ 11025hz (exclusive) [ao/wasapi] Trying stereo double @ 16000hz (exclusive) [ao/wasapi] Trying stereo float @ 16000hz (exclusive) [ao/wasapi] Trying stereo s32 @ 16000hz (exclusive) [ao/wasapi] Trying stereo s24 @ 16000hz (exclusive) [ao/wasapi] Trying stereo s32 (24 valid) @ 16000hz (exclusive) [ao/wasapi] Trying stereo s16 @ 16000hz (exclusive) [ao/wasapi] Trying stereo u8 @ 16000hz (exclusive) [ao/wasapi] Trying stereo double @ 22050hz (exclusive) [ao/wasapi] Trying stereo float @ 22050hz (exclusive) [ao/wasapi] Trying stereo s32 @ 22050hz (exclusive) [ao/wasapi] Trying stereo s24 @ 22050hz (exclusive) [ao/wasapi] Trying stereo s32 (24 valid) @ 22050hz (exclusive) [ao/wasapi] Trying stereo s16 @ 22050hz (exclusive) [ao/wasapi] Trying stereo u8 @ 22050hz (exclusive) [ao/wasapi] Trying stereo double @ 32000hz (exclusive) [ao/wasapi] Trying stereo float @ 32000hz (exclusive) [ao/wasapi] Trying stereo s32 @ 32000hz (exclusive) [ao/wasapi] Trying stereo s24 @ 32000hz (exclusive) [ao/wasapi] Trying stereo s32 (24 valid) @ 32000hz (exclusive) [ao/wasapi] Trying stereo s16 @ 32000hz (exclusive) [ao/wasapi] Trying stereo u8 @ 32000hz (exclusive) [ao/wasapi] Trying stereo double @ 44100hz (exclusive) [ao/wasapi] Trying stereo float @ 44100hz (exclusive) [ao/wasapi] Trying stereo s32 @ 44100hz (exclusive) [ao/wasapi] Trying stereo s24 @ 44100hz (exclusive) [ao/wasapi] Trying stereo s24 @ 48000hz (exclusive) [ao/wasapi] Trying stereo s24 @ 88200hz (exclusive) [ao/wasapi] Trying stereo s24 @ 96000hz (exclusive) [ao/wasapi] Trying stereo s24 @ 176400hz (exclusive) [ao/wasapi] Trying stereo s24 @ 192000hz (exclusive) [ao/wasapi] Trying stereo s24 @ 352800hz (exclusive) [ao/wasapi] Trying stereo s24 @ 384000hz (exclusive) [ao/wasapi] stereo s24 @ 44100hz is supported [ao/wasapi] Trying 2.1 s24 @ 44100hz (exclusive) [ao/wasapi] Trying 4.0 s24 @ 44100hz (exclusive) [ao/wasapi] Trying 5.0 s24 @ 44100hz (exclusive) [ao/wasapi] Trying 5.1 s24 @ 44100hz (exclusive) [ao/wasapi] Trying 6.1 s24 @ 44100hz (exclusive) [ao/wasapi] Trying 7.1 s24 @ 44100hz (exclusive) [ao/wasapi] Trying 3.0 s24 @ 44100hz (exclusive) [ao/wasapi] Trying 3.0(back) s24 @ 44100hz (exclusive) [ao/wasapi] Trying quad s24 @ 44100hz (exclusive) [ao/wasapi] Trying quad(side) s24 @ 44100hz (exclusive) [ao/wasapi] Trying 3.1 s24 @ 44100hz (exclusive) [ao/wasapi] Trying 5.0(side) s24 @ 44100hz (exclusive) [ao/wasapi] Trying 4.1 s24 @ 44100hz (exclusive) [ao/wasapi] Trying 5.1(side) s24 @ 44100hz (exclusive) [ao/wasapi] Trying 6.0 s24 @ 44100hz (exclusive) [ao/wasapi] Trying 6.0(front) s24 @ 44100hz (exclusive) [ao/wasapi] Trying 6.0(front) s24 @ 44100hz (exclusive) [ao/wasapi] Trying 6.1(front) s24 @ 44100hz (exclusive) [ao/wasapi] Trying 7.0 s24 @ 44100hz (exclusive) [ao/wasapi] Trying 7.0(front) s24 @ 44100hz (exclusive) [ao/wasapi] Trying 7.1(wide) s24 @ 44100hz (exclusive) [ao/wasapi] Trying 7.1(wide-side) s24 @ 44100hz (exclusive) [ao/wasapi] Trying empty s24 @ 44100hz (exclusive) [ao/wasapi] Trying octagonal s24 @ 44100hz (exclusive) [ao/wasapi] Channel layouts: [ao/wasapi] - stereo [ao/wasapi] - 7.1 [ao/wasapi] - 5.1(side) [ao/wasapi] result: stereo [ao/wasapi] Accepted as stereo s24 @ 44100hz (exclusive) [ao/wasapi] Device period: 10 ms [ao/wasapi] Buffer frame count: 2205 (50 ms) [ao/wasapi] IAudioClock::GetFrequency gave a frequency of 44100. [ao/wasapi] device buffer: 2205 samples. [ao/wasapi] using soft-buffer of 8820 samples. [cplayer] AO: [wasapi] 44100Hz stereo 2ch s24 [cplayer] AO: Description: Windows WASAPI audio output (event mode) [af] Adding filter lavrresample [af] Audio filter chain: [af] [in] 44100Hz stereo 2ch floatp [af] [lavrresample] 44100Hz stereo 2ch s24 [af] [out] 44100Hz stereo 2ch s24 [af] [ao] 44100Hz stereo 2ch s24 [vd] Decoder format: 848x480 yuv420p auto/auto CL=mpeg2/4/h264 [lavfi] lavfi: create graph: 'pp=ac' [ffmpeg] src: w:848 h:480 pixfmt:yuv420p tb:1/1000000 fr:0/1 sar:1/1 swsparam: [vf] Video filter chain: [vf] [in] 848x480 yuv420p bt.601/limited CL=mpeg2/4/h264 [vf] [lavfi] 848x480 yuv420p bt.601/limited CL=mpeg2/4/h264 [vf] [eq] 848x480 yuv420p bt.601/limited CL=mpeg2/4/h264 [vf] [out] 848x480 yuv420p bt.601/limited CL=mpeg2/4/h264 [cplayer] VO: [opengl-hq] 848x480 yuv420p [cplayer] VO: Description: Extended OpenGL Renderer (high quality rendering preset) [vo/opengl-hq/win32] save window bounds: 259:144:848:480 [vo/opengl-hq/win32] reset window bounds: 0:0:1366:768 [vo/opengl-hq/win32] move window: 0:0 [vo/opengl-hq/win32] resize window: 1366:768 [vo/opengl-hq] Resize: 848x480 [vo/opengl-hq] Window size: 848x480 [vo/opengl-hq] Video source: 848x480 (1:1) [vo/opengl-hq] Video display: (0, 0) 848x480 -> (0, 0) 848x480 [vo/opengl-hq] Video scale: 1.000000/1.000000 [vo/opengl-hq] OSD borders: l=0 t=0 r=0 b=0 [vo/opengl-hq] Video borders: l=0 t=0 r=0 b=0 [vo/opengl-hq] Testing user-set FBO format (0x805b) [vo/opengl-hq] Create FBO: 16x16 [vo/opengl-hq] Texture for plane 0: 848x480 [vo/opengl-hq] Texture for plane 1: 424x240 [vo/opengl-hq] Texture for plane 2: 424x240 [vo/opengl-hq] Reinit rendering. [cplayer] set video colors output-levels=0 [vo/opengl-hq] Resize: 1366x768 [vo/opengl-hq] Window size: 1366x768 [vo/opengl-hq] Video source: 848x480 (1:1) [vo/opengl-hq] Video display: (0, 0) 848x480 -> (5, 0) 1356x768 [vo/opengl-hq] Video scale: 1.599057/1.600000 [vo/opengl-hq] OSD borders: l=5 t=0 r=5 b=0 [vo/opengl-hq] Video borders: l=5 t=0 r=5 b=0 [vo/opengl-hq] Create FBO: 424x240 [vo/opengl-hq] recompiling a shader program: [vo/opengl-hq] [ 1] // chroma merging [vo/opengl-hq] [ 2] vec4 color = vec4(texture(texture1, texcoord1).x, texture(texture2, texcoord2).x, 0.0, 1.0); [vo/opengl-hq] [ 3] color.xy = 1.000000; [vo/opengl-hq] Create FBO: 424x240 [vo/opengl-hq] recompiling a shader program: [vo/opengl-hq] header: [vo/opengl-hq] [ 1] float mod289(float x) { return x - floor(x / 289.0) * 289.0; } [vo/opengl-hq] [ 2] float permute(float x) { return mod289((34.0_x + 1.0) * x); } [vo/opengl-hq] [ 3] float rand(float x) { return fract(x / 41.0); } [vo/opengl-hq] [ 4] vec4 average(sampler2D tex, vec2 pos, float range, inout float h) {float dist = rand(h) * range; h = permute(h); [vo/opengl-hq] [ 5] float dir = rand(h) * 6.2831853; h = permute(h); [vo/opengl-hq] [ 6] vec2 pt = dist / vec2(848.000000, 480.000000); [vo/opengl-hq] [ 7] vec2 o = vec2(cos(dir), sin(dir)); [vo/opengl-hq] [ 8] vec4 ref[4]; [vo/opengl-hq] [ 9] ref[0] = texture(tex, pos + pt * vec2( o.x, o.y)); [vo/opengl-hq] [ 10] ref[1] = texture(tex, pos + pt * vec2(-o.y, o.x)); [vo/opengl-hq] [ 11] ref[2] = texture(tex, pos + pt * vec2(-o.x, -o.y)); [vo/opengl-hq] [ 12] ref[3] = texture(tex, pos + pt * vec2( o.y, -o.x)); [vo/opengl-hq] [ 13] return 1.000000 * (ref[0] + ref[1] + ref[2] + ref[3])/4.0; [vo/opengl-hq] [ 14] } [vo/opengl-hq] body: [vo/opengl-hq] [ 1] // debanding (tex 1) [vo/opengl-hq] [ 2] #undef tex [vo/opengl-hq] [ 3] #define tex texture1 [vo/opengl-hq] [ 4] vec2 pos = texcoord1; [vo/opengl-hq] [ 5] vec2 size = texture_size1; [vo/opengl-hq] [ 6] vec2 pt = vec2(1.0) / size; [vo/opengl-hq] [ 7] vec3 _m = vec3(pos, random) + vec3(1.0); [vo/opengl-hq] [ 8] float h = permute(permute(permute(_m.x)+_m.y)+_m.z); [vo/opengl-hq] [ 9] vec4 color = 1.000000 * texture(tex, pos); [vo/opengl-hq] [ 10] vec4 avg, diff; [vo/opengl-hq] [ 11] avg = average(tex, pos, 16.000000, h); [vo/opengl-hq] [ 12] diff = abs(color - avg); [vo/opengl-hq] [ 13] color = mix(avg, color, greaterThan(diff, vec4(0.003906))); [vo/opengl-hq] [ 14] vec3 noise; [vo/opengl-hq] [ 15] noise.x = rand(h); h = permute(h); [vo/opengl-hq] [ 16] noise.y = rand(h); h = permute(h); [vo/opengl-hq] [ 17] noise.z = rand(h); h = permute(h); [vo/opengl-hq] [ 18] color.xyz += 0.005859 * (noise - vec3(0.5)); [vo/opengl-hq] [ 19] color.zw = vec2(0.0, 1.0); [vo/opengl-hq] Create FBO: 424x512 [vo/opengl-hq] recompiling a shader program: [vo/opengl-hq] [ 1] // chroma scaling [vo/opengl-hq] [ 2] #undef tex [vo/opengl-hq] [ 3] #define tex texture1 [vo/opengl-hq] [ 4] vec2 pos = texcoord1; [vo/opengl-hq] [ 5] vec2 size = texturesize1; [vo/opengl-hq] [ 6] vec2 pt = vec2(1.0) / size; [vo/opengl-hq] [ 7] // pass 1 [vo/opengl-hq] [ 8] vec4 color = vec4(0.0); [vo/opengl-hq] [ 9] { [vo/opengl-hq] [ 10] vec2 dir = vec2(0.0, 1.0); [vo/opengl-hq] [ 11] pt = dir; [vo/opengl-hq] [ 12] float fcoord = dot(fract(pos * size - vec2(0.5)), dir); [vo/opengl-hq] [ 13] vec2 base = pos - fcoord * pt - pt * vec2(2.0); [vo/opengl-hq] [ 14] vec4 c; [vo/opengl-hq] [ 15] float fcoord_lut = LUT_POS(fcoord, 64.0); [vo/opengl-hq] [ 16] vec4 c1 = texture(lut, vec2(0.25, fcoord_lut)); [vo/opengl-hq] [ 17] vec4 c2 = texture(lut, vec2(0.75, fcoord_lut)); [vo/opengl-hq] [ 18] float weights[6] = float[](c1.r, c1.g, c1.b, c2.r, c2.g, c2.b); [vo/opengl-hq] [ 19] // scaler samples [vo/opengl-hq] [ 20] c = texture(tex, base + pt * vec2(0.0)); [vo/opengl-hq] [ 21] color += vec4(weights[0]) * c; [vo/opengl-hq] [ 22] c = texture(tex, base + pt * vec2(1.0)); [vo/opengl-hq] [ 23] color += vec4(weights[1]) * c; [vo/opengl-hq] [ 24] c = texture(tex, base + pt * vec2(2.0)); [vo/opengl-hq] [ 25] color += vec4(weights[2]) * c; [vo/opengl-hq] [ 26] c = texture(tex, base + pt * vec2(3.0)); [vo/opengl-hq] [ 27] color += vec4(weights[3]) * c; [vo/opengl-hq] [ 28] c = texture(tex, base + pt * vec2(4.0)); [vo/opengl-hq] [ 29] color += vec4(weights[4]) * c; [vo/opengl-hq] [ 30] c = texture(tex, base + pt * vec2(5.0)); [vo/opengl-hq] [ 31] color += vec4(weights[5]) * c; [vo/opengl-hq] [ 32] } [vo/opengl-hq] Create FBO: 848x480 [vo/opengl-hq] recompiling a shader program: [vo/opengl-hq] header: [vo/opengl-hq] [ 1] float mod289(float x) { return x - floor(x / 289.0) * 289.0; } [vo/opengl-hq] [ 2] float permute(float x) { return mod289((34.0_x + 1.0) * x); } [vo/opengl-hq] [ 3] float rand(float x) { return fract(x / 41.0); } [vo/opengl-hq] [ 4] vec4 average(sampler2D tex, vec2 pos, float range, inout float h) {float dist = rand(h) * range; h = permute(h); [vo/opengl-hq] [ 5] float dir = rand(h) * 6.2831853; h = permute(h); [vo/opengl-hq] [ 6] vec2 pt = dist / vec2(848.000000, 480.000000); [vo/opengl-hq] [ 7] vec2 o = vec2(cos(dir), sin(dir)); [vo/opengl-hq] [ 8] vec4 ref[4]; [vo/opengl-hq] [ 9] ref[0] = texture(tex, pos + pt * vec2( o.x, o.y)); [vo/opengl-hq] [ 10] ref[1] = texture(tex, pos + pt * vec2(-o.y, o.x)); [vo/opengl-hq] [ 11] ref[2] = texture(tex, pos + pt * vec2(-o.x, -o.y)); [vo/opengl-hq] [ 12] ref[3] = texture(tex, pos + pt * vec2( o.y, -o.x)); [vo/opengl-hq] [ 13] return 1.000000 * (ref[0] + ref[1] + ref[2] + ref[3])/4.0; [vo/opengl-hq] [ 14] } [vo/opengl-hq] body: [vo/opengl-hq] [ 1] #undef tex [vo/opengl-hq] [ 2] #define tex texture1 [vo/opengl-hq] [ 3] vec2 pos = texcoord1; [vo/opengl-hq] [ 4] vec2 size = texture_size1; [vo/opengl-hq] [ 5] vec2 pt = vec2(1.0) / size; [vo/opengl-hq] [ 6] // pass 2 [vo/opengl-hq] [ 7] vec4 color = vec4(0.0); [vo/opengl-hq] [ 8] { [vo/opengl-hq] [ 9] vec2 dir = vec2(1.0, 0.0); [vo/opengl-hq] [ 10] pt = dir; [vo/opengl-hq] [ 11] float fcoord = dot(fract(pos * size - vec2(0.5)), dir); [vo/opengl-hq] [ 12] vec2 base = pos - fcoord * pt - pt * vec2(2.0); [vo/opengl-hq] [ 13] vec4 c; [vo/opengl-hq] [ 14] float fcoord_lut = LUT_POS(fcoord, 64.0); [vo/opengl-hq] [ 15] vec4 c1 = texture(lut, vec2(0.25, fcoord_lut)); [vo/opengl-hq] [ 16] vec4 c2 = texture(lut, vec2(0.75, fcoord_lut)); [vo/opengl-hq] [ 17] float weights[6] = float[](c1.r, c1.g, c1.b, c2.r, c2.g, c2.b); [vo/opengl-hq] [ 18] // scaler samples [vo/opengl-hq] [ 19] c = texture(tex, base + pt * vec2(0.0)); [vo/opengl-hq] [ 20] color += vec4(weights[0]) * c; [vo/opengl-hq] [ 21] c = texture(tex, base + pt * vec2(1.0)); [vo/opengl-hq] [ 22] color += vec4(weights[1]) * c; [vo/opengl-hq] [ 23] c = texture(tex, base + pt * vec2(2.0)); [vo/opengl-hq] [ 24] color += vec4(weights[2]) * c; [vo/opengl-hq] [ 25] c = texture(tex, base + pt * vec2(3.0)); [vo/opengl-hq] [ 26] color += vec4(weights[3]) * c; [vo/opengl-hq] [ 27] c = texture(tex, base + pt * vec2(4.0)); [vo/opengl-hq] [ 28] color += vec4(weights[4]) * c; [vo/opengl-hq] [ 29] c = texture(tex, base + pt * vec2(5.0)); [vo/opengl-hq] [ 30] color += vec4(weights[5]) * c; [vo/opengl-hq] [ 31] } [vo/opengl-hq] [ 32] color.a = 1.0; [vo/opengl-hq] [ 33] vec2 chroma = color.xy; [vo/opengl-hq] [ 34] vec4 main; [vo/opengl-hq] [ 35] { [vo/opengl-hq] [ 36] // debanding (tex 0) [vo/opengl-hq] [ 37] #undef tex [vo/opengl-hq] [ 38] #define tex texture0 [vo/opengl-hq] [ 39] vec2 pos = texcoord0; [vo/opengl-hq] [ 40] vec2 size = texture_size0; [vo/opengl-hq] [ 41] vec2 pt = vec2(1.0) / size; [vo/opengl-hq] [ 42] vec3 _m = vec3(pos, random) + vec3(1.0); [vo/opengl-hq] [ 43] float h = permute(permute(permute(_m.x)+_m.y)+_m.z); [vo/opengl-hq] [ 44] vec4 color = 1.000000 * texture(tex, pos); [vo/opengl-hq] [ 45] vec4 avg, diff; [vo/opengl-hq] [ 46] avg = average(tex, pos, 16.000000, h); [vo/opengl-hq] [ 47] diff = abs(color - avg); [vo/opengl-hq] [ 48] color = mix(avg, color, greaterThan(diff, vec4(0.003906))); [vo/opengl-hq] [ 49] vec3 noise; [vo/opengl-hq] [ 50] noise.x = rand(h); h = permute(h); [vo/opengl-hq] [ 51] noise.y = rand(h); h = permute(h); [vo/opengl-hq] [ 52] noise.z = rand(h); h = permute(h); [vo/opengl-hq] [ 53] color.xyz += 0.005859 * (noise - vec3(0.5)); [vo/opengl-hq] [ 54] main = color; [vo/opengl-hq] [ 55] } [vo/opengl-hq] [ 56] color = main; [vo/opengl-hq] [ 57] color.yz = chroma; [vo/opengl-hq] [ 58] // color conversion [vo/opengl-hq] [ 59] color.rgb = mat3(colormatrix) * color.rgb + colormatrix_c; [vo/opengl-hq] [ 60] color.a = 1.0; [vo/opengl-hq] [ 61] // scaler pre-conversion [vo/opengl-hq] [ 62] color.rgb = clamp(color.rgb, 0.0, 1.0); [vo/opengl-hq] [ 63] color.rgb = pow(color.rgb, vec3(1.961)); [vo/opengl-hq] [ 64] color.rgb = 0.750000 - log(1.0/(color.rgb * 0.827906 + 0.007577) - 1.0)/6.500000; [vo/opengl-hq] [ 65] // main scaling [vo/opengl-hq] Create FBO: 848x768 [vo/opengl-hq] recompiling a shader program: [vo/opengl-hq] [ 1] #undef tex [vo/opengl-hq] [ 2] #define tex texture0 [vo/opengl-hq] [ 3] vec2 pos = texcoord0; [vo/opengl-hq] [ 4] vec2 size = texture_size0; [vo/opengl-hq] [ 5] vec2 pt = vec2(1.0) / size; [vo/opengl-hq] [ 6] // pass 1 [vo/opengl-hq] [ 7] vec4 color = vec4(0.0); [vo/opengl-hq] [ 8] { [vo/opengl-hq] [ 9] vec2 dir = vec2(0.0, 1.0); [vo/opengl-hq] [ 10] pt = dir; [vo/opengl-hq] [ 11] float fcoord = dot(fract(pos * size - vec2(0.5)), dir); [vo/opengl-hq] [ 12] vec2 base = pos - fcoord * pt - pt * vec2(2.0); [vo/opengl-hq] [ 13] vec4 c; [vo/opengl-hq] [ 14] float fcoord_lut = LUT_POS(fcoord, 64.0); [vo/opengl-hq] [ 15] vec4 c1 = texture(lut, vec2(0.25, fcoord_lut)); [vo/opengl-hq] [ 16] vec4 c2 = texture(lut, vec2(0.75, fcoord_lut)); [vo/opengl-hq] [ 17] float weights[6] = float[](c1.r, c1.g, c1.b, c2.r, c2.g, c2.b); [vo/opengl-hq] [ 18] // scaler samples [vo/opengl-hq] [ 19] c = texture(tex, base + pt * vec2(0.0)); [vo/opengl-hq] [ 20] color += vec4(weights[0]) * c; [vo/opengl-hq] [ 21] c = texture(tex, base + pt * vec2(1.0)); [vo/opengl-hq] [ 22] color += vec4(weights[1]) * c; [vo/opengl-hq] [ 23] c = texture(tex, base + pt * vec2(2.0)); [vo/opengl-hq] [ 24] color += vec4(weights[2]) * c; [vo/opengl-hq] [ 25] c = texture(tex, base + pt * vec2(3.0)); [vo/opengl-hq] [ 26] color += vec4(weights[3]) * c; [vo/opengl-hq] [ 27] c = texture(tex, base + pt * vec2(4.0)); [vo/opengl-hq] [ 28] color += vec4(weights[4]) * c; [vo/opengl-hq] [ 29] c = texture(tex, base + pt * vec2(5.0)); [vo/opengl-hq] [ 30] color += vec4(weights[5]) * c; [vo/opengl-hq] [ 31] } [vo/opengl-hq] Dither to 8. [ao/wasapi] OnPropertyValueChanged triggered on device {0.0.0.00000000}.{bd9bd6fc-0b9e-48f3-b1b5-c67ecabac0e8} [ao/wasapi] Changed property: PKEY_AudioEngine_DeviceFormat - requesting ao reload [ao/wasapi] OnPropertyValueChanged triggered on device {0.0.0.00000000}.{bd9bd6fc-0b9e-48f3-b1b5-c67ecabac0e8} [ao/wasapi] Changed property: {e4870e26-3cc5-4cd2-ba46-ca0a9a70ed04},0 [ao/wasapi] OnPropertyValueChanged triggered on device {0.0.0.00000000}.{bd9bd6fc-0b9e-48f3-b1b5-c67ecabac0e8} [ao/wasapi] Changed property: {e4870e26-3cc5-4cd2-ba46-ca0a9a70ed04},1 [ao/wasapi] OnPropertyValueChanged triggered on device {0.0.0.00000000}.{bd9bd6fc-0b9e-48f3-b1b5-c67ecabac0e8} [ao/wasapi] Changed property: {e4870e26-3cc5-4cd2-ba46-ca0a9a70ed04},1 [ao/wasapi] OnDefaultDeviceChanged triggered: already using default device, no reload required [vo/opengl-hq] recompiling a shader program: [vo/opengl-hq] [ 1] #undef tex [vo/opengl-hq] [ 2] #define tex texture0 [vo/opengl-hq] [ 3] vec2 pos = texcoord0; [vo/opengl-hq] [ 4] vec2 size = texture_size0; [vo/opengl-hq] [ 5] vec2 pt = vec2(1.0) / size; [vo/opengl-hq] [ 6] // pass 2 [vo/opengl-hq] [ 7] vec4 color = vec4(0.0); [vo/opengl-hq] [ 8] { [vo/opengl-hq] [ 9] vec2 dir = vec2(1.0, 0.0); [vo/opengl-hq] [ 10] pt *= dir; [vo/opengl-hq] [ 11] float fcoord = dot(fract(pos * size - vec2(0.5)), dir); [vo/opengl-hq] [ 12] vec2 base = pos - fcoord * pt - pt * vec2(2.0); [vo/opengl-hq] [ 13] vec4 c; [vo/opengl-hq] [ 14] float fcoord_lut = LUT_POS(fcoord, 64.0); [vo/opengl-hq] [ 15] vec4 c1 = texture(lut, vec2(0.25, fcoord_lut)); [vo/opengl-hq] [ 16] vec4 c2 = texture(lut, vec2(0.75, fcoord_lut)); [vo/opengl-hq] [ 17] float weights[6] = float[](c1.r, c1.g, c1.b, c2.r, c2.g, c2.b); [vo/opengl-hq] [ 18] // scaler samples [vo/opengl-hq] [ 19] c = texture(tex, base + pt * vec2(0.0)); [vo/opengl-hq] [ 20] color += vec4(weights[0]) * c; [vo/opengl-hq] [ 21] c = texture(tex, base + pt * vec2(1.0)); [vo/opengl-hq] [ 22] color += vec4(weights[1]) * c; [vo/opengl-hq] [ 23] c = texture(tex, base + pt * vec2(2.0)); [vo/opengl-hq] [ 24] color += vec4(weights[2]) * c; [vo/opengl-hq] [ 25] c = texture(tex, base + pt * vec2(3.0)); [vo/opengl-hq] [ 26] color += vec4(weights[3]) * c; [vo/opengl-hq] [ 27] c = texture(tex, base + pt * vec2(4.0)); [vo/opengl-hq] [ 28] color += vec4(weights[4]) * c; [vo/opengl-hq] [ 29] c = texture(tex, base + pt * vec2(5.0)); [vo/opengl-hq] [ 30] color += vec4(weights[5]) * c; [vo/opengl-hq] [ 31] } [vo/opengl-hq] [ 32] color.a = 1.0; [vo/opengl-hq] [ 33] // scaler post-conversion [vo/opengl-hq] [ 34] color.rgb = (1.0/(1.0 + exp(6.500000 * (0.750000 - color.rgb))) - 0.007577) / 0.827906; [vo/opengl-hq] [ 35] // color management [vo/opengl-hq] [ 36] color.rgb = clamp(color.rgb, 0.0, 1.0); [vo/opengl-hq] [ 37] color.rgb = pow(color.rgb, vec3(1.0/1.961)); [vo/opengl-hq] [ 38] // dithering [vo/opengl-hq] [ 39] vec2 dither_pos = gl_FragCoord.xy / 64.0; [vo/opengl-hq] [ 40] float dither_value = texture(dither, dither_pos).r; [vo/opengl-hq] [ 41] color = floor(color * 255.0 + dither_value + 0.5 / 4096.0) / 255.0; [global] config path: 'fonts' -/-> 'C:\Users\felix\AppData\Roaming/mpv/fonts' [global] config path: 'fonts' -/-> 'C:/Program Files/mpv/fonts' [global] config path: 'fonts' -/-> 'C:/Program Files/mpv/mpv/fonts' [osd/libass] Shaper: FriBidi 0.19.7 (SIMPLE) HarfBuzz-ng 1.1.3 (COMPLEX) [global] config path: 'subfont.ttf' -/-> 'C:\Users\felix\AppData\Roaming/mpv/subfont.ttf' [global] config path: 'subfont.ttf' -/-> 'C:/Program Files/mpv/subfont.ttf' [global] config path: 'subfont.ttf' -/-> 'C:/Program Files/mpv/mpv/subfont.ttf' [global] config path: 'fonts.conf' -/-> 'C:\Users\felix\AppData\Roaming/mpv/fonts.conf' [global] config path: 'fonts.conf' -/-> 'C:/Program Files/mpv/fonts.conf' [global] config path: 'fonts.conf' -/-> 'C:/Program Files/mpv/mpv/fonts.conf' [osd/libass] Setting up fonts... [osd/libass] Using font provider directwrite [osd/libass] Done. [osd/libass] fontselect: (sans-serif, 400, 0) -> ArialMT, 0, ArialMT [vo/opengl-hq] set SwapInterval(1) [cplayer] first video frame after restart shown [cplayer] Run command: ignore, flags=9, args=[] [ao/wasapi] IAudioClient_Reset returned: E_HANDLE (0x80070006) [af] Removing filter lavrresample [af] Audio filter chain: [af] [in] 44100Hz stereo 2ch floatp [af] [out] 44100Hz stereo 2ch floatp [af] [ao] 44100Hz stereo 2ch floatp [ao] Trying audio driver 'wasapi' [ao/wasapi] Setting option 'exclusive' = '' (flags = 0) [ao/wasapi] requested format: 44100 Hz, stereo channels, floatp [ao/wasapi] No device specified. Selecting default. [ao/wasapi] Selecting device '{bd9bd6fc-0b9e-48f3-b1b5-c67ecabac0e8}' (DFX Speakers (DFX Audio Enhancer 11.1)) [ao/wasapi] Monitoring changes in device {0.0.0.00000000}.{bd9bd6fc-0b9e-48f3-b1b5-c67ecabac0e8} [ao/wasapi] Trying stereo float @ 44100hz (exclusive) [ao/wasapi] Trying mono double @ 8000hz (exclusive) [ao/wasapi] Trying mono float @ 8000hz (exclusive) [ao/wasapi] Trying mono s32 @ 8000hz (exclusive) [ao/wasapi] Trying mono s24 @ 8000hz (exclusive) [ao/wasapi] Trying mono s32 (24 valid) @ 8000hz (exclusive) [ao/wasapi] Trying mono s16 @ 8000hz (exclusive) [ao/wasapi] Trying mono u8 @ 8000hz (exclusive) [ao/wasapi] Trying mono double @ 11025hz (exclusive) [ao/wasapi] Trying mono float @ 11025hz (exclusive) [ao/wasapi] Trying mono s32 @ 11025hz (exclusive) [ao/wasapi] Trying mono s24 @ 11025hz (exclusive) [ao/wasapi] Trying mono s32 (24 valid) @ 11025hz (exclusive) [ao/wasapi] Trying mono s16 @ 11025hz (exclusive) [ao/wasapi] Trying mono u8 @ 11025hz (exclusive) [ao/wasapi] Trying mono double @ 16000hz (exclusive) [ao/wasapi] Trying mono float @ 16000hz (exclusive) [ao/wasapi] Trying mono s32 @ 16000hz (exclusive) [ao/wasapi] Trying mono s24 @ 16000hz (exclusive) [ao/wasapi] Trying mono s32 (24 valid) @ 16000hz (exclusive) [ao/wasapi] Trying mono s16 @ 16000hz (exclusive) [ao/wasapi] Trying mono u8 @ 16000hz (exclusive) [ao/wasapi] Trying mono double @ 22050hz (exclusive) [ao/wasapi] Trying mono float @ 22050hz (exclusive) [ao/wasapi] Trying mono s32 @ 22050hz (exclusive) [ao/wasapi] Trying mono s24 @ 22050hz (exclusive) [ao/wasapi] Trying mono s32 (24 valid) @ 22050hz (exclusive) [ao/wasapi] Trying mono s16 @ 22050hz (exclusive) [ao/wasapi] Trying mono u8 @ 22050hz (exclusive) [ao/wasapi] Trying mono double @ 32000hz (exclusive) [ao/wasapi] Trying mono float @ 32000hz (exclusive) [ao/wasapi] Trying mono s32 @ 32000hz (exclusive) [ao/wasapi] Trying mono s24 @ 32000hz (exclusive) [ao/wasapi] Trying mono s32 (24 valid) @ 32000hz (exclusive) [ao/wasapi] Trying mono s16 @ 32000hz (exclusive) [ao/wasapi] Trying mono u8 @ 32000hz (exclusive) [ao/wasapi] Trying mono double @ 44100hz (exclusive) [ao/wasapi] Trying mono float @ 44100hz (exclusive) [ao/wasapi] Trying mono s32 @ 44100hz (exclusive) [ao/wasapi] Trying mono s24 @ 44100hz (exclusive) [ao/wasapi] Trying mono s32 (24 valid) @ 44100hz (exclusive) [ao/wasapi] Trying mono s16 @ 44100hz (exclusive) [ao/wasapi] Trying mono u8 @ 44100hz (exclusive) [ao/wasapi] Trying mono double @ 48000hz (exclusive) [ao/wasapi] Trying mono float @ 48000hz (exclusive) [ao/wasapi] Trying mono s32 @ 48000hz (exclusive) [ao/wasapi] Trying mono s24 @ 48000hz (exclusive) [ao/wasapi] Trying mono s32 (24 valid) @ 48000hz (exclusive) [ao/wasapi] Trying mono s16 @ 48000hz (exclusive) [ao/wasapi] Trying mono u8 @ 48000hz (exclusive) [ao/wasapi] Trying mono double @ 88200hz (exclusive) [ao/wasapi] Trying mono float @ 88200hz (exclusive) [ao/wasapi] Trying mono s32 @ 88200hz (exclusive) [ao/wasapi] Trying mono s24 @ 88200hz (exclusive) [ao/wasapi] Trying mono s32 (24 valid) @ 88200hz (exclusive) [ao/wasapi] Trying mono s16 @ 88200hz (exclusive) [ao/wasapi] Trying mono u8 @ 88200hz (exclusive) [ao/wasapi] Trying mono double @ 96000hz (exclusive) [ao/wasapi] Trying mono float @ 96000hz (exclusive) [ao/wasapi] Trying mono s32 @ 96000hz (exclusive) [ao/wasapi] Trying mono s24 @ 96000hz (exclusive) [ao/wasapi] Trying mono s32 (24 valid) @ 96000hz (exclusive) [ao/wasapi] Trying mono s16 @ 96000hz (exclusive) [ao/wasapi] Trying mono u8 @ 96000hz (exclusive) [ao/wasapi] Trying mono double @ 176400hz (exclusive) [ao/wasapi] Trying mono float @ 176400hz (exclusive) [ao/wasapi] Trying mono s32 @ 176400hz (exclusive) [ao/wasapi] Trying mono s24 @ 176400hz (exclusive) [ao/wasapi] Trying mono s32 (24 valid) @ 176400hz (exclusive) [ao/wasapi] Trying mono s16 @ 176400hz (exclusive) [ao/wasapi] Trying mono u8 @ 176400hz (exclusive) [ao/wasapi] Trying mono double @ 192000hz (exclusive) [ao/wasapi] Trying mono float @ 192000hz (exclusive) [ao/wasapi] Trying mono s32 @ 192000hz (exclusive) [ao/wasapi] Trying mono s24 @ 192000hz (exclusive) [ao/wasapi] Trying mono s32 (24 valid) @ 192000hz (exclusive) [ao/wasapi] Trying mono s16 @ 192000hz (exclusive) [ao/wasapi] Trying mono u8 @ 192000hz (exclusive) [ao/wasapi] Trying mono double @ 352800hz (exclusive) [ao/wasapi] Trying mono float @ 352800hz (exclusive) [ao/wasapi] Trying mono s32 @ 352800hz (exclusive) [ao/wasapi] Trying mono s24 @ 352800hz (exclusive) [ao/wasapi] Trying mono s32 (24 valid) @ 352800hz (exclusive) [ao/wasapi] Trying mono s16 @ 352800hz (exclusive) [ao/wasapi] Trying mono u8 @ 352800hz (exclusive) [ao/wasapi] Trying mono double @ 384000hz (exclusive) [ao/wasapi] Trying mono float @ 384000hz (exclusive) [ao/wasapi] Trying mono s32 @ 384000hz (exclusive) [ao/wasapi] Trying mono s24 @ 384000hz (exclusive) [ao/wasapi] Trying mono s32 (24 valid) @ 384000hz (exclusive) [ao/wasapi] Trying mono s16 @ 384000hz (exclusive) [ao/wasapi] Trying mono u8 @ 384000hz (exclusive) [ao/wasapi] Trying stereo double @ 8000hz (exclusive) [ao/wasapi] Trying stereo float @ 8000hz (exclusive) [ao/wasapi] Trying stereo s32 @ 8000hz (exclusive) [ao/wasapi] Trying stereo s24 @ 8000hz (exclusive) [ao/wasapi] Trying stereo s32 (24 valid) @ 8000hz (exclusive) [ao/wasapi] Trying stereo s16 @ 8000hz (exclusive) [ao/wasapi] Trying stereo u8 @ 8000hz (exclusive) [ao/wasapi] Trying stereo double @ 11025hz (exclusive) [ao/wasapi] Trying stereo float @ 11025hz (exclusive) [ao/wasapi] Trying stereo s32 @ 11025hz (exclusive) [ao/wasapi] Trying stereo s24 @ 11025hz (exclusive) [ao/wasapi] Trying stereo s32 (24 valid) @ 11025hz (exclusive) [ao/wasapi] Trying stereo s16 @ 11025hz (exclusive) [ao/wasapi] Trying stereo u8 @ 11025hz (exclusive) [ao/wasapi] Trying stereo double @ 16000hz (exclusive) [ao/wasapi] Trying stereo float @ 16000hz (exclusive) [ao/wasapi] Trying stereo s32 @ 16000hz (exclusive) [ao/wasapi] Trying stereo s24 @ 16000hz (exclusive) [ao/wasapi] Trying stereo s32 (24 valid) @ 16000hz (exclusive) [ao/wasapi] Trying stereo s16 @ 16000hz (exclusive) [ao/wasapi] Trying stereo u8 @ 16000hz (exclusive) [ao/wasapi] Trying stereo double @ 22050hz (exclusive) [ao/wasapi] Trying stereo float @ 22050hz (exclusive) [ao/wasapi] Trying stereo s32 @ 22050hz (exclusive) [ao/wasapi] Trying stereo s24 @ 22050hz (exclusive) [ao/wasapi] Trying stereo s32 (24 valid) @ 22050hz (exclusive) [ao/wasapi] Trying stereo s16 @ 22050hz (exclusive) [ao/wasapi] Trying stereo u8 @ 22050hz (exclusive) [ao/wasapi] Trying stereo double @ 32000hz (exclusive) [ao/wasapi] Trying stereo float @ 32000hz (exclusive) [ao/wasapi] Trying stereo s32 @ 32000hz (exclusive) [ao/wasapi] Trying stereo s24 @ 32000hz (exclusive) [ao/wasapi] Trying stereo s32 (24 valid) @ 32000hz (exclusive) [ao/wasapi] Trying stereo s16 @ 32000hz (exclusive) [ao/wasapi] Trying stereo u8 @ 32000hz (exclusive) [ao/wasapi] Trying stereo double @ 44100hz (exclusive) [ao/wasapi] Trying stereo float @ 44100hz (exclusive) [ao/wasapi] Trying stereo s32 @ 44100hz (exclusive) [ao/wasapi] Trying stereo s24 @ 44100hz (exclusive) [ao/wasapi] Trying stereo s24 @ 48000hz (exclusive) [ao/wasapi] Trying stereo s24 @ 88200hz (exclusive) [ao/wasapi] Trying stereo s24 @ 96000hz (exclusive) [ao/wasapi] Trying stereo s24 @ 176400hz (exclusive) [ao/wasapi] Trying stereo s24 @ 192000hz (exclusive) [ao/wasapi] Trying stereo s24 @ 352800hz (exclusive) [ao/wasapi] Trying stereo s24 @ 384000hz (exclusive) [ao/wasapi] stereo s24 @ 44100hz is supported [ao/wasapi] Trying 2.1 s24 @ 44100hz (exclusive) [ao/wasapi] Trying 4.0 s24 @ 44100hz (exclusive) [ao/wasapi] Trying 5.0 s24 @ 44100hz (exclusive) [ao/wasapi] Trying 5.1 s24 @ 44100hz (exclusive) [ao/wasapi] Trying 6.1 s24 @ 44100hz (exclusive) [ao/wasapi] Trying 7.1 s24 @ 44100hz (exclusive) [ao/wasapi] Trying 3.0 s24 @ 44100hz (exclusive) [ao/wasapi] Trying 3.0(back) s24 @ 44100hz (exclusive) [ao/wasapi] Trying quad s24 @ 44100hz (exclusive) [ao/wasapi] Trying quad(side) s24 @ 44100hz (exclusive) [ao/wasapi] Trying 3.1 s24 @ 44100hz (exclusive) [ao/wasapi] Trying 5.0(side) s24 @ 44100hz (exclusive) [ao/wasapi] Trying 4.1 s24 @ 44100hz (exclusive) [ao/wasapi] Trying 5.1(side) s24 @ 44100hz (exclusive) [ao/wasapi] Trying 6.0 s24 @ 44100hz (exclusive) [ao/wasapi] Trying 6.0(front) s24 @ 44100hz (exclusive) [ao/wasapi] Trying 6.0(front) s24 @ 44100hz (exclusive) [ao/wasapi] Trying 6.1(front) s24 @ 44100hz (exclusive) [ao/wasapi] Trying 7.0 s24 @ 44100hz (exclusive) [ao/wasapi] Trying 7.0(front) s24 @ 44100hz (exclusive) [ao/wasapi] Trying 7.1(wide) s24 @ 44100hz (exclusive) [ao/wasapi] Trying 7.1(wide-side) s24 @ 44100hz (exclusive) [ao/wasapi] Trying empty s24 @ 44100hz (exclusive) [ao/wasapi] Trying octagonal s24 @ 44100hz (exclusive) [ao/wasapi] Channel layouts: [ao/wasapi] - stereo [ao/wasapi] - 7.1 [ao/wasapi] - 5.1(side) [ao/wasapi] result: stereo [ao/wasapi] Accepted as stereo s24 @ 44100hz (exclusive) [ao/wasapi] Device period: 10 ms [ao/wasapi] Buffer frame count: 2205 (50 ms) [ao/wasapi] IAudioClock::GetFrequency gave a frequency of 44100. [ao/wasapi] device buffer: 2205 samples. [ao/wasapi] using soft-buffer of 8820 samples. [cplayer] AO: [wasapi] 44100Hz stereo 2ch s24 [cplayer] AO: Description: Windows WASAPI audio output (event mode) [af] Adding filter lavrresample [af] Audio filter chain: [af] [in] 44100Hz stereo 2ch floatp [af] [lavrresample] 44100Hz stereo 2ch s24 [af] [out] 44100Hz stereo 2ch s24 [af] [ao] 44100Hz stereo 2ch s24 [cplayer] playback restart complete [statusline] AV: 00:00:00 / 00:23:42 (0%) A-V: 0.034 [cplayer] Run command: quit, flags=9, args=[0] [cplayer] EOF code: 6 [ao/wasapi] OnPropertyValueChanged triggered on device {0.0.0.00000000}.{bd9bd6fc-0b9e-48f3-b1b5-c67ecabac0e8} [ao/wasapi] Changed property: PKEY_AudioEngine_DeviceFormat - requesting ao reload [ad] Uninit audio filters... [ao/wasapi] OnPropertyValueChanged triggered on device {0.0.0.00000000}.{bd9bd6fc-0b9e-48f3-b1b5-c67ecabac0e8} [ffmpeg] SWR: discarding 1000 audio samples [ao/wasapi] Changed property: {e4870e26-3cc5-4cd2-ba46-ca0a9a70ed04},0 [ad] Uninit audio decoder. [ao/wasapi] OnPropertyValueChanged triggered on device {0.0.0.00000000}.{bd9bd6fc-0b9e-48f3-b1b5-c67ecabac0e8} [af] Removing filter lavrresample [ao/wasapi] Changed property: {e4870e26-3cc5-4cd2-ba46-ca0a9a70ed04},1 [lavfi] lavfi: create graph: 'pp=ac' [ffmpeg] src: w:848 h:480 pixfmt:yuv420p tb:1/1000000 fr:0/1 sar:1/1 sws_param: [ao/wasapi] OnPropertyValueChanged triggered on device {0.0.0.00000000}.{bd9bd6fc-0b9e-48f3-b1b5-c67ecabac0e8} [ao/wasapi] Changed property: {e4870e26-3cc5-4cd2-ba46-ca0a9a70ed04},1 [ao/wasapi] OnPropertyValueChanged triggered on device {0.0.0.00000000}.{bd9bd6fc-0b9e-48f3-b1b5-c67ecabac0e8} [ao/wasapi] Changed property: PKEY_AudioEngine_DeviceFormat - requesting ao reload [vd] Uninit video. [ao/wasapi] OnPropertyValueChanged triggered on device {0.0.0.00000000}.{bd9bd6fc-0b9e-48f3-b1b5-c67ecabac0e8} [ao/wasapi] Changed property: {e4870e26-3cc5-4cd2-ba46-ca0a9a70ed04},0 [cplayer] finished playback, success (reason 3) [cplayer] [cplayer] [cplayer] Exiting... (Quit) [stats] Exiting... [osc] Exiting... [ytdl_hook] Exiting... [ao/wasapi] IAudioClient_Reset returned: E_HANDLE (0x80070006) [ao/wasapi] OnPropertyValueChanged triggered on device {0.0.0.00000000}.{bd9bd6fc-0b9e-48f3-b1b5-c67ecabac0e8} [ao/wasapi] Changed property: PKEY_AudioEngine_DeviceFormat - requesting ao reload [ao/wasapi] OnPropertyValueChanged triggered on device {0.0.0.00000000}.{bd9bd6fc-0b9e-48f3-b1b5-c67ecabac0e8} [ao/wasapi] Changed property: {e4870e26-3cc5-4cd2-ba46-ca0a9a70ed04},0 [ao/wasapi] OnPropertyValueChanged triggered on device {0.0.0.00000000}.{bd9bd6fc-0b9e-48f3-b1b5-c67ecabac0e8} [ao/wasapi] Changed property: {e4870e26-3cc5-4cd2-ba46-ca0a9a70ed04},1 [ao/wasapi] Audio loop thread refuses to abort [vo/opengl-hq/win32] uninit

kevmitch commented 8 years ago

Did you change the default output device or shared mode format via windows control panel while you created that log? If not, then something really weird is going on because that is effectively what's happening.

I would strongly recommend against changing the shared mode format while exclusive mode is playing because

af-defaults=lavrresample:o=[...] where the libswresample options go into the ... field.

The libswresample options are documented at https://www.ffmpeg.org/ffmpeg-resampler.html

felixq commented 8 years ago

@wm4 If we go by the page that told me @kevmitch, the resampler of FFmpeg is pretty bad.

I do not know which version of FFmpeg be linked mpv but the version 0.10.4 is pretty bad. The swr version is a little better but not much. Compare with FFmpeg 1.1.1 (soxr) or foobar2000 and see a big difference.

@kevmitch The output device is an equalizer, so be failing the exclusive mode.

I am studying resampler documentation of ffmpeg. It is very difficult to link it to soxr?

kevmitch commented 8 years ago

The mpv windows builds either link to the latest ffmpeg version (currently something like 2.6.7) or git master of ffmpeg, so yeah those test are a bit out of date. Probably worth reproducing them. In any case, I think wm4's point is that even if ffmpeg's resampler isn't great with default settings, it might be fixable with the parameters. For example, the cutoff can be tuned.

The output device is an equalizer, so be failing the exclusive mode.

I don't know what this means. Your DAC has an equalizer? You're using a software equalizer? The latter probably won't work in exclusive mode.

So were you changing Windows control panel settings while creating the above exclusive mode log?

felixq commented 8 years ago

Software equalizer. It installs as a driver. You are right that does not support exclusive mode.

So were you changing Windows control panel settings while creating the above exclusive mode log?

No, but the driver sits on top of Windows output device. I will do tests with resampler options. Sorry for my English.

kevmitch commented 8 years ago

No, but the driver sits on top of Windows output device.

Ok, well then I'll just attribute the non-working exclusive mode to be the fault of that thing and not us. There is no reason for it to be sending random format changed events.

If you really want soxr added, you can hound @lachs0r, but like I said, it is not without issues, although looking at the resampler options, those too might be surmountable with some fiddling.

felixq commented 7 years ago

I've seen in the changelog that mpv now includes SoxR so I decided to try. I downloaded the mpv-x86_64-20160826.7z version and add the following line to mpv.conf file: af-defaults=lavrresample=o=[resampler=soxr:precision=28:cutoff=0.91] and I commented the ao=dsound line. I do not managed to improve the version of wasapi ever so it do not used more. I used the latest version with dsound until yesterday.

Indeed, significantly improves the audio, it seems like the dsound version, now comes the problem, when I move the position of the time, no matter if it is for forward or backward, the sound is distorted horribly. This only happens if the sampling frequency of the file is different from the audio card.

kevmitch commented 7 years ago

I wasn't aware that soxr had been enabled. Thanks @lachs0r. In any case, it sounds like you are describing the same issues I have observed using the soxr resampler with mpv. I'm not really sure what it's about, it could simply be that it's not quite fast enough for realtime playback. I haven't been motivated to look too deeply into it because if you're that concerned about resampling quality, it's better just to avoid resampling alltogether. For the time being, if resampling is unavoidable, it's probably better to try and tweak the ffmpeg native resampler.

ghost commented 7 years ago

Issues with soxr and seeking could just be libswsresample bugs. Haven't tried to reproduce yet.

felixq commented 7 years ago

Not a problem with cpu, mpv only consumes 3% of my cpu. It is a seeking problem. Plays back properly until you do a seeking, then you hear choppy and not fixed even if I pause and continue.