Question / Help Weird FPS slowdown/microstutter in video

Apolladan

New Member
http://www.twitch.tv/vaheofpeace/b/470587648

that one is 1920 x 1200 downscaled 1.25

here's downscaled 1.5

http://www.twitch.tv/vaheofpeace/b/470346702

CPU is a 4770k @ 4.2 ghz, GPU is GTX 770 (OC'd slightly), 16GB RAM

I use the faster preset, which my CPU can definitely handle (it can probably do fast without much trouble) @ 3500 kbps, 160 kbps AAC audio at 48khz

FPS is 60, and most of the time the video is smooth, but there are a few split second drops where the action slows down, almost like what you see when you alt tab out of a game

in-game the FPS never drops below 60 and it would probably be 200+ if i didn't use vsync

there are never any dropped frames

attached is the log

Code:
19:50:35: Open Broadcaster Software v0.571b - 64bit ( ^ω^)
19:50:35: -------------------------------
19:50:35: CPU Name: Intel(R) Core(TM) i7-4770K CPU @ 3.50GHz
19:50:35: CPU Speed: 3500MHz
19:50:35: Physical Memory:  16328MB Total, 11861MB Free
19:50:35: stepping id: 3, model 12, family 6, type 0, extmodel 1, extfamily 0, HTT 1, logical cores 8, total cores 4
19:50:35: monitor 1: pos={0, 0}, size={1920, 1200}
19:50:35: Windows Version: 6.2 Build 9200 
19:50:35: Aero is Enabled
19:50:35: -------------------------------
19:50:35: OBS Modules:
19:50:35: Base Address     Module
19:50:35: 0000000010F90000 OBS.exe
19:50:35: 00000000273B0000 OBSApi.dll
19:50:35: 000000002E6C0000 DShowPlugin.dll
19:50:35: 000000002E600000 GraphicsCapture.dll
19:50:35: 000000002EBE0000 NoiseGate.dll
19:50:35: 000000002E6A0000 PSVPlugin.dll
19:50:35: ------------------------------------------
19:50:35: Adapter 1
19:50:35:   Video Adapter: NVIDIA GeForce GTX 770
19:50:35:   Video Adapter Dedicated Video Memory: 2083319808
19:50:35:   Video Adapter Shared System Memory: 2147676160
19:50:35: =====Stream Start: 2013-10-15, 19:50:35===============================================
19:50:35:   Multithreaded optimizations: On
19:50:35:   Base resolution: 1920x1200
19:50:35:   Output resolution: 1536x960
19:50:35: ------------------------------------------
19:50:35: Loading up D3D10 on NVIDIA GeForce GTX 770...
19:50:36: ------------------------------------------
19:50:36: Audio Format: 48000hz
19:50:36: Playback device {0.0.0.00000000}.{7bd9701b-ecc2-43f0-9de3-19cbafccb03f}
19:50:36: ------------------------------------------
19:50:36: Using desktop audio input: Speakers (Realtek High Definition Audio)
19:50:36: ------------------------------------------
19:50:36: Using auxilary audio input: Microphone (Yeti Stereo Microphone)
19:50:36: ------------------------------------------
19:50:36: Audio Encoding: AAC
19:50:36:     bitrate: 160
19:50:36: Using graphics capture
19:50:36: Using Window Capture
19:50:36: ------------------------------------------
19:50:36: Video Encoding: x264
19:50:36:     fps: 60
19:50:36:     width: 1536, height: 960
19:50:36:     preset: faster
19:50:36:     profile: high
19:50:36:     keyint: 120
19:50:36:     CBR: yes
19:50:36:     CFR: no
19:50:36:     max bitrate: 3500
19:50:36:     buffer size: 3500
19:50:36: ------------------------------------------
19:50:36: MMDeviceAudioSource: Frequency for device 'Speakers (Realtek High Definition Audio)' is 384000, samples per sec is 48000
19:50:36: MMDeviceAudioSource: Frequency for device 'Microphone (Yeti Stereo Microphone)' is 352800, samples per sec is 44100
19:50:36: SharedTexCapture hooked
19:50:37: Using RTMP service: Twitch / Justin.tv
19:50:37:   Server selection: rtmp://live-lax-backup.justin.tv/app
19:50:37:   Interface: Killer e2200 Gigabit Ethernet Controller (NDIS 6.30) (ethernet, 1000 mbps)
19:50:37: Completed handshake with rtmp://live-lax-backup.justin.tv/app in 52 ms.
19:50:39: SO_SNDBUF was at 65536
19:50:39: SO_SNDBUF is now 65536
19:50:39: RTMPPublisher::Socketloop: Increasing send buffer to ISB 131072 (buffer: 21877 / 467968)
19:50:40: RTMPPublisher::Socketloop: Increasing send buffer to ISB 262144 (buffer: 45655 / 467968)
20:11:16: Exit signal received, terminating capture
20:11:36: Total frames encoded: 75584, total frames duplicated: 73 (0.10%)
20:11:36: Total frames rendered: 75583, number of late frames: 3 (0.00%) (it's okay for some frames to be late)
20:11:36: RTMPPublisher::SocketLoop: Graceful loop exit
20:11:36: Average send payload: 6705 bytes, average send interval: 14 ms
20:11:36: Number of times waited to send: 0, Waited for a total of 0 bytes
20:11:36: Number of b-frames dropped: 0 (0%), Number of p-frames dropped: 0 (0%), Total 0 (0%)
20:11:36: Number of bytes sent: 576657187
20:11:36: 
20:11:36: Profiler time results:
20:11:36: 
20:11:36: ==============================================================
20:11:36: video thread frame - [100%] [avg time: 0.218 ms] [children: 29.4%] [unaccounted: 70.6%]
20:11:36: | scene->Preprocess - [29.4%] [avg time: 0.064 ms]
20:11:36: GPU download and conversion - [100%] [avg time: 0.1 ms] [children: 96%] [unaccounted: 4%]
20:11:36: | flush - [86%] [avg time: 0.086 ms]
20:11:36: | CopyResource - [8%] [avg time: 0.008 ms]
20:11:36: | conversion to 4:2:0 - [2%] [avg time: 0.002 ms]
20:11:36: Convert444Threads - [100%] [avg time: 0.593 ms] [children: 99.5%] [unaccounted: 0.506%]
20:11:36: | Convert444toNV12 - [99.5%] [avg time: 0.59 ms]
20:11:36: encoder thread frame - [100%] [avg time: 1.081 ms]
20:11:36: ==============================================================
20:11:36: 
20:11:36: 
20:11:36: Profiler CPU results:
20:11:36: 
20:11:36: ==============================================================
20:11:36: video thread frame - [cpu time: avg 0.001 ms, total 109.375 ms] [avg calls per frame: 1]
20:11:36: | scene->Preprocess - [cpu time: avg 0 ms, total 15.625 ms] [avg calls per frame: 1]
20:11:36: GPU download and conversion - [cpu time: avg 0 ms, total 0 ms] [avg calls per frame: 1]
20:11:36: | flush - [cpu time: avg 0 ms, total 0 ms] [avg calls per frame: 1]
20:11:36: | CopyResource - [cpu time: avg 0 ms, total 0 ms] [avg calls per frame: 1]
20:11:36: | conversion to 4:2:0 - [cpu time: avg 0 ms, total 0 ms] [avg calls per frame: 1]
20:11:36: Convert444Threads - [cpu time: avg 0.073 ms, total 11078.1 ms] [avg calls per frame: 2]
20:11:36: | Convert444toNV12 - [cpu time: avg 0.071 ms, total 10812.5 ms] [avg calls per frame: 2]
20:11:36: encoder thread frame - [cpu time: avg 0.545 ms, total 41234.4 ms] [avg calls per frame: 1]
20:11:36: ==============================================================
20:11:36: 
20:11:36: =====Stream End: 2013-10-15, 20:11:36=================================================


Last game capture log:
2013-10-15, 19:50:36: we're booting up: 
19:50:36: D3D9 Present
19:50:36: DXGI Present
19:50:36: D3D9EndScene called
19:50:36: D3DPRESENT_PARAMETERS {
19:50:36: 	BackBufferWidth: 1920
19:50:36: 	BackBufferHeight: 1200
19:50:36: 	BackBufferFormat: D3DFMT_X8R8G8B8
19:50:36: 	BackBufferCount: 1
19:50:36: 	MultiSampleType: D3DMULTISAMPLE_NONE
19:50:36: 	MultiSampleQuality: 0
19:50:36: 	SwapEffect: D3DSWAPEFFECT_DISCARD
19:50:36: 	hDeviceWindow: 132274
19:50:36: 	Windowed: true
19:50:36: 	EnableAutoDepthStencil: true
19:50:36: 	AutoDepthStencilFormat: D3DFMT_D24S8
19:50:36: 	Flags: D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL 
19:50:36: 	FullScreen_RefreshRateInHz: 0
19:50:36: 	PresentationInterval: 0
19:50:36: };
19:50:36: successfully set up d3d9 hooks
19:50:36: D3D9Present called
19:50:36: DoD3D9GPUHook: success
19:50:36: D3DSURFACE_DESC {
19:50:36: 	Format: D3DFMT_X8R8G8B8
19:50:36: 	Type: D3DRTYPE_SURFACE
19:50:36: 	Usage: D3DUSAGE_RENDERTARGET 
19:50:36: 	Pool: D3DPOOL_DEFAULT
19:50:36: 	MultiSampleType: D3DMULTISAMPLE_NONE
19:50:36: 	MultiSampleQuality: 0
19:50:36: 	Width: 1920
19:50:36: 	Height: 1200
19:50:36: };
19:50:36: successfully capturing d3d9 frames via GPU
19:50:36: NV Capture available
19:50:36: FBO available
19:50:36: GL Present
19:50:36: (half life scientist) everything..  seems to be in order
 

Attachments

  • 2013-10-15-1949-26.log
    7 KB · Views: 9

Lain

Forum Admin
Lain
Forum Moderator
Developer
..That is a really nice system. Is this in-game or just stream/recording? I hate to suggest it, but if it's just the stream/recording, I would probably recommend seeing if "veryfast" fixes it. Also make sure to test your results via recording first if possible
 

Apolladan

New Member
Jim said:
..That is a really nice system. Is this in-game or just stream/recording? I hate to suggest it, but if it's just the stream/recording, I would probably recommend seeing if "veryfast" fixes it. Also make sure to test your results via recording first if possible
just the stream/recording

do you notice it yourself in the links above?

i actually have a theory that it may be due to flash's decoder rather than the video itself, since i just downloaded the VOD from jdownloader and played it back with MPC/lav/madvr and i wasn't experiencing the split second slowdowns

i'll make a recording right now with veryfast to see if there's any difference, just in case
 

Boildown

Active Member
Turn on constant frame rate (CFR: yes) while using the very fast preset and post a new log from that. Make sure it runs long enough to see the problem plus an extra two minutes.

Also...

19:50:36: fps: 60
19:50:36: width: 1536, height: 960

You might be running into the "you shouldn't stream 1080p @60Hz problem". You're not quite at 1080p, but you're close. Try using increasing the downscale more. Post a log from each combination of suggested settings you try, or we can't evaluate how it worked.
 

Lain

Forum Admin
Lain
Forum Moderator
Developer
I watched the video, it looked good, it's very smooth as well.
 
Top