Question / Help OBS and dgVoodoo : compatible or not ?

RipperRooTMUF

New Member
Hello,

first of all, I only use OBS to record videos, since I'm not interested by streaming at all.

So, my problem is when I try to record a specific game called Planet Of Death. Since it's an old game (released in 1997), I also have to use a glide wrapper, called dgVoodoo, in order to run the game properly. And I haven't the choice of the capture mode, which is Monitor capture (the other modes give a black screen).

Here's my log :

Code:
16:10:12: Open Broadcaster Software v0.625b - 32bit (´・ω・`)
16:10:12: -------------------------------
16:10:12: CPU Name: Intel(R) Core(TM) i5-2400 CPU @ 3.10GHz
16:10:12: CPU Speed: 3093MHz
16:10:12: Physical Memory:  3061MB Total, 1762MB Free
16:10:12: stepping id: 7, model 42, family 6, type 0, extmodel 1, extfamily 0, HTT 1, logical cores 4, total cores 4
16:10:12: monitor 1: pos={0, 0}, size={1920, 1080}
16:10:12: monitor 2: pos={1920, 0}, size={1280, 1024}
16:10:12: Windows Version: 6.1 Build 7601 S
16:10:12: Aero is Disabled
16:10:12: -------------------------------
16:10:12: OBS Modules:
16:10:12: Base Address  Module
16:10:12: 001A0000  OBS.exe
16:10:12: 5D6B0000  OBSApi.dll
16:10:12: 620C0000  DShowPlugin.dll
16:10:12: 6DCD0000  GraphicsCapture.dll
16:10:12: 62170000  NoiseGate.dll
16:10:12: 6DCA0000  PSVPlugin.dll
16:10:12: ------------------------------------------
16:10:12: Adapter 1
16:10:12:  Video Adapter: AMD Radeon HD 6800 Series
16:10:12:  Video Adapter Dedicated Video Memory: 1062522880
16:10:12:  Video Adapter Shared System Memory: 1336911872
16:10:12:  Video Adapter Output 1: pos={0, 0}, size={1920, 1080}, attached=true
16:10:12:  Video Adapter Output 2: pos={1920, 0}, size={1280, 1024}, attached=true
16:10:12: =====Stream Start: 2014-08-28, 16:10:12===============================================
16:10:12:  Multithreaded optimizations: On
16:10:12:  Base resolution: 1920x1080
16:10:12:  Output resolution: 1280x720
16:10:12: ------------------------------------------
16:10:12: Loading up D3D10 on AMD Radeon HD 6800 Series (Adapter 1)...
16:10:12: ------------------------------------------
16:10:12: Audio Format: 44100 Hz
16:10:12: ------------------------------------------
16:10:12: Audio Channels: 2 Ch
16:10:12: Playback device Default
16:10:12: ------------------------------------------
16:10:12: Using desktop audio input: Haut-parleurs (VIA High Definition Audio)
16:10:12: Global Audio time adjust: 0
16:10:12: ------------------------------------------
16:10:12: Audio Encoding: AAC
16:10:12:  bitrate: 192
16:10:12: Using Monitor Capture
16:10:12: Scene buffering time set to 700
16:10:12: ------------------------------------------
16:10:12: Video Encoding: x264
16:10:12:  fps: 30
16:10:12:  width: 1280, height: 720
16:10:12:  preset: veryfast
16:10:12:  profile: main
16:10:12:  keyint: 60
16:10:12:  CBR: yes
16:10:12:  CFR: yes
16:10:12:  max bitrate: 5000
16:10:12:  buffer size: 5000
16:10:12: ------------------------------------------
16:11:52: Total frames encoded: 2976, total frames duplicated: 1447 (48.62%)
16:11:52: Total frames rendered: 1563, number of late frames: 926 (59.25%) (it's okay for some frames to be late)
16:11:52:
16:11:52: Profiler time results:
16:11:52:
16:11:52: ==============================================================
16:11:52: video thread frame - [100%] [avg time: 63.233 ms] [children: 93.7%] [unaccounted: 6.26%]
16:11:52: | scene->Preprocess - [93.1%] [avg time: 58.869 ms]
16:11:52: | GPU download and conversion - [0.645%] [avg time: 0.408 ms] [children: 0.579%] [unaccounted: 0.0664%]
16:11:52: | | flush - [0.53%] [avg time: 0.335 ms]
16:11:52: | | CopyResource - [0.0158%] [avg time: 0.01 ms]
16:11:52: | | conversion to 4:2:0 - [0.0332%] [avg time: 0.021 ms]
16:11:52: Convert444Threads - [100%] [avg time: 0.548 ms] [children: 99.1%] [unaccounted: 0.912%]
16:11:52: | Convert444toNV12 - [99.1%] [avg time: 0.543 ms]
16:11:52: encoder thread frame - [100%] [avg time: 1.091 ms] [children: 2.2%] [unaccounted: 97.8%]
16:11:52: | sending stuff out - [2.2%] [avg time: 0.024 ms]
16:11:52: ==============================================================
16:11:52:
16:11:52:
16:11:52: Profiler CPU results:
16:11:52:
16:11:52: ==============================================================
16:11:52: video thread frame - [cpu time: avg 9.581 ms, total 14976.1 ms] [avg calls per frame: 1]
16:11:52: | scene->Preprocess - [cpu time: avg 8.853 ms, total 13837.3 ms] [avg calls per frame: 1]
16:11:52: | GPU download and conversion - [cpu time: avg 0.029 ms, total 46.801 ms] [avg calls per frame: 1]
16:11:52: | | flush - [cpu time: avg 0.019 ms, total 31.201 ms] [avg calls per frame: 1]
16:11:52: | | CopyResource - [cpu time: avg 0 ms, total 0 ms] [avg calls per frame: 1]
16:11:52: | | conversion to 4:2:0 - [cpu time: avg 0 ms, total 0 ms] [avg calls per frame: 1]
16:11:52: Convert444Threads - [cpu time: avg 0.506 ms, total 1560.01 ms] [avg calls per frame: 2]
16:11:52: | Convert444toNV12 - [cpu time: avg 0.506 ms, total 1560.01 ms] [avg calls per frame: 2]
16:11:52: encoder thread frame - [cpu time: avg 0.551 ms, total 1638.01 ms] [avg calls per frame: 1]
16:11:52: | sending stuff out - [cpu time: avg 0.042 ms, total 124.801 ms] [avg calls per frame: 1]
16:11:52: ==============================================================
16:11:52:
16:11:52: =====Stream End: 2014-08-28, 16:11:52=================================================

That's the problem : my frame rate is low, very low (about 10-15 FPS). But it happens only when playing. In the menus I get 30 FPS.

I tested multiple settings both in OBS and the dgVoodoo glide wrapper, and noticed that two parameters increased my FPS : the "Capture Layered Windows" in OBS and an option about the LFB (Linear Frame Buffer, I suppose) called "Closer to a real hardware" in dgVoodoo. However, it's not enough to get the 30 FPS. I also tested different bitrates & resolutions, but nothing happened.

Oh, and I already recorded 2 or 3 other old games (which don't need the wrapper) with the same settings in Monitor capture, without any problems.

So, considering the two options I enabled before, my question is : is there a way to get the 30 FPS I'd like ? Or is it simply an incompatibility between OBS and dgVoodoo which I can't avoid ?

In advance, thanks for your help !
 

Sapiens

Forum Moderator
Monitor capture in Windows 7 is super bad, there's not much you can do about that unfortunately short of moving to Windows 8. Do you know what dgVoodoo uses to render? If it's DX8/9/10/11 or OpenGL then game capture should hopefully be able to capture it. You could also try the trial of Dxtory to hook the game, then use its DirectShow output support to add it as a video capture device in OBS. You'll have a watermark but at least you'll be able to see if it performs better.
 

RipperRooTMUF

New Member
Thank you for your answer !

Yes I'm aware that Monitor capture isn't good for recording, but it works well with other games, and that's why I thought about an incompatibility between OBS and the wrapper, dgVoodoo.

About dgVoodoo, it's quite complicated. It emulates a Voodoo card in order to play old games on recent computers. Games which uses Glide to render.

I tried Dxtory but got a problem. My game crash when Dxtory is running, even without recording. But I got that line in the "Target Information" window :

Code:
DeviceType: DX7


So I think dgVoodoo make the link between Glide and DX7, to run Planet Of Death in modern PCs. That's why I wonder if there's a way to ask to dgVoodoo what kind of API have to be used, instead of DX7. This way I should record my game in Game capture mode.
 

RipperRooTMUF

New Member
I just find the solution ! I just enabled another dgVoodoo setting called "Use hardware vertex buffers". Finally that didn't came from OBS, It was simply a mistake while setting up the wrapper.

Sorry for wasted your time for an error which didn't concern OBS at all :s
 
Top