OBS branch with AMD VCE support.

I play games in 1080p but in obs I set resolution at 720 and I don't downscale, So Supamesican put 1280x720 in custom then you don't have to downscale or use a filter. Right click source and position/size fit to screen.
 

jhbendiksen

New Member
Yeah, don't hit "update". Also, it is still x264, but not done by your processor
make sure you have the latest drivers and a supported card

Don't hit "update"?

Either OpenEncode isn't installed (update drivers), gfxcard doesn't have VCE or you need MSVC++ 2013 runtimes (check 1st post). Always a good idea to check the logs.

Latest GFX card drivers should be downloaded. Or do I need the beta drivers? My GFX card is the R9 280X, so should it should have support for VCE 1.0. Downloading Visual C++ 2013. I guess that is what you mean by MSVC++?
 

jhbendiksen

New Member
Okay. Got it to work. I didn't have MSVC++ 13, hehe. Thanks. Now I only get 20 fps though, even though it's set at 30fps. If I try to set the fps higher I get the error message "Couldn't initialize encoder".
 

Drugoli

New Member
I've tried streaming 2 times now. Both with Skyrim and original Crysis. Stream appears to function correctly. No crashes or dropped frames during either 1.5 hour stream.
What I've noticed though, is that trying to play the videos back, either on recorded on Twitch or from locally OBS recorded files, I can't navigate around in the video. If I try to go to fx 20mins on the Crysis one, it starts over. Do the same thing with the Skyrim one, and it goes to roughly 6.5 mins.
Why is this?

Crysis video (on Twitch): http://www.twitch.tv/drugoli/b/555230521
Skyrim video (on Twitch): http://www.twitch.tv/drugoli/b/555621737
 

Yuxxian

New Member
I would like to add some things I've found through my own use of this fork.

I am using this 32-bit build, a version that lets you pick which GPU to use for encoding.

My laptop specs are:
AMD A10-5745M
8610g( iGPU. VLIW4 arch)+ 8570M( dGPU. GCN arch)
8GB RAM

  1. Using an APU plus a dGPU( dedicated GPU) works amazing. In the specific build I am using, you can pick which GPU to use for encoding, and in my case my iGPU is shown as GPU0. I suspect that's also how it is for other people who have an APU+ dGPU setup, though you can always check which one is being used on your logs if it's different.

    Basically, in my Catalyst Control Center, I turn off Dual Graphics and set my games to run on High Performance( which uses the dGPU if it needs a GPU), and set OBS to Power Savings( which uses the iGPU if it needs a GPU). This makes it so that my games run on my dGPU, and my OBS encoding on my iGPU, giving me little to no FPS loss, which is great.

  2. OC'ing my iGPU crashes my whole system when I try using said iGPU as the encoder. Because of this I just leave it at stock. This might have something to do with AMD's PowerTune, which automatically changes your GPUs clock speed based on the load, and OC'ing turns off this feature. This only an assumption on my part though, since I know nothing of what's going on behind-the-scenes with VCE and OBS. Dual Graphics also doesn't work, and even if it does you'll get worse frames anyway, since one GPU has more load with the encoding( unless the GPU that's encoding is more powerful. In my case they're fairly even, if you add in the memory speed and clock speeds + architectural difference), so it's better to use them individually.

That's about it. Keep in my mind that these are things I've found on my own system, so results might vary, though I see no reason why this would be different with other APU+ dGPU setups.

Also, other's seem to be doing just fine with recording and/or streaming, but I still have that green bar at the side and audio sync issues. Perhaps I have to change more settings( since I've pretty much left everything at stock)?

Edit: Seems like I finally got MFT working, which pretty much fixes the two problems I've mentioned.

Edit 2: For some reason, I'm noticing bigger FPS hits now, both with MFT and OpenCL, whereas last night I didn't notice much( though I was only testing OpenCL then). Every thing seems to indicate that I'm encoding using my iGPU, and I'm sure I'm using my dGPU to play my games. I have noticed, though, that the hit is smaller compared to using the dGPU for encoding, so that's something. I doubt that such a performance hit is solely from a constant upload while streaming. Maybe OBS having to intercept the frames to be able to capture and encode is the reason?

Edit 3: Looks like running on WiFi( for some reason) was the cause of why I was having a bigger FPS hit :D I tested it out again today, but now I connected an ethernet jack to my laptop( just like I did in my first test), and boom, works like a charm. Having little to no FPS hits now. Looks like I have everything sorted out. Synced audio and no green bar with MFT, and virtually no FPS hits. Thanks for the fork Jackun!
 
Last edited:

jackun

Developer
I've tried streaming 2 times now. Both with Skyrim and original Crysis. Stream appears to function correctly. No crashes or dropped frames during either 1.5 hour stream.
What I've noticed though, is that trying to play the videos back, either on recorded on Twitch or from locally OBS recorded files, I can't navigate around in the video. If I try to go to fx 20mins on the Crysis one, it starts over. Do the same thing with the Skyrim one, and it goes to roughly 6.5 mins.
Why is this?

Crysis video (on Twitch): http://www.twitch.tv/drugoli/b/555230521
Skyrim video (on Twitch): http://www.twitch.tv/drugoli/b/555621737
Oh seems to be simple enough case. Do you have custom settings enabled? Set GOP/IDR interval to not zero.
I got first VOD flv with http://www.twitchtools.com/video-download.php and it seems it doesn't have any keyframes.

FFDShow decoder has nice OSD feature, enable 'frame type' to check. So it can seek but it has to go through the whole video but seems flash player isn't good at that though.

E: Added keyframe requesting (oops) support to MFT too so OBS should be able to generate them if needed.
 
Last edited:

RifleEyez

Member
CBR padding test: 32-bit, 64-bit. Also 1.3333 scaling.

Is it me or does MFT with 60 fps capture start to eat memory?

Yeah, whenever I use MFT I see my RAM usage start shooting up. After about 15 minutes it was using 300MB and still rising. I only use this for Local Recording.

I have 2 questions -

1. Why is my Sound a second out of Sync? Not sure I had this issue before, but it's about half/full second behind - noticeable when switching through menus. Anything I can do to remedy this or is there a setting I can change? Doesn't matter if it's the opening minute or 20 minutes in, still happens.

2. I prefer to use Dxtory at times, mainly for the audio and being able to split them. Any ideas why when I use the OpenEncodeVFW (iirc that's the name) codec on Dxtory I still get massive FPS drops at 1080p, whereas it's next to zero when using VCE on OBS? I can't work that out.
 

jackun

Developer
Yeah, whenever I use MFT I see my RAM usage start shooting up. After about 15 minutes it was using 300MB and still rising. I only use this for Local Recording.

I have 2 questions -

1. Why is my Sound a second out of Sync? Not sure I had this issue before, but it's about half/full second behind - noticeable when switching through menus. Anything I can do to remedy this or is there a setting I can change? Doesn't matter if it's the opening minute or 20 minutes in, still happens.

2. I prefer to use Dxtory at times, mainly for the audio and being able to split them. Any ideas why when I use the OpenEncodeVFW (iirc that's the name) codec on Dxtory I still get massive FPS drops at 1080p, whereas it's next to zero when using VCE on OBS? I can't work that out.

1.) You have the latest build v0.63 beta? There's 'Global audio sync offset' in Advanced settings. Maybe that is set to something other than 0 or try messing with that.

2.) Who knows, some seem to get better fps with OBS, some with Dxtory. Weird :D Maybe OpenCL colorspace conversion comes into play as OBS does conversion on CPU. OBS's OpenCL conversion with OVE API is a lighter version; it just rearranges few bytes instead doing floating-point math as in VFW codec.
 

RifleEyez

Member
1.) You have the latest build v0.63 beta? There's 'Global audio sync offset' in Advanced settings. Maybe that is set to something other than 0 or try messing with that.

2.) Who knows, some seem to get better fps with OBS, some with Dxtory. Weird :D Maybe OpenCL colorspace conversion comes into play as OBS does conversion on CPU. OBS's OpenCL conversion with OVE API is a lighter version; it just rearranges few bytes instead doing floating-point math as in VFW codec.

The audio offset is at 0. Weird. Tried making it -60 which seems to be the most, and it made no difference. I'll have to try Dxtory again sometime and just see if it was an issue that sorted itself out, because when I first tried it everything was fine.

EDIT : Fixed by changing the Scene Buffering Time in Advanced to 2000 from 700. Weird. Sorted.
 
Last edited:

OliverMD

Member
Maybe OpenCL colorspace conversion comes into play as OBS does conversion on CPU. OBS's OpenCL conversion with OVE API is a lighter version; it just rearranges few bytes instead doing floating-point math as in VFW codec.
Is there a chance that you try and "fix" the performance of the DXTory codec so it can record so well (ingame FPS wise) as with OBS?
As someone said before, when i record (certain) games with OBS@MFT at1080p@30FPS i nearly lose no FPS, which is obviously great. Sadly i can't say the same for DXtory, no matter what settings i take.
Even though i wish i could since i would highly prefer to use DXTory for it's multiple sound track recording.
 

RenZimE

New Member
i must say great work so far, how ever currently when tabbing in full screen exclusive softwares, it appears as tho frames are being captured encoded and out putted in an incorrect order. which looks rather odd to say the least. was kind of amusing :D twitch link below 1581 bitrate 480p@30

http://www.twitch.tv/renzime/b/556848987
 

jackun

Developer
Is there a chance that you try and "fix" the performance of the DXTory codec so it can record so well (ingame FPS wise) as with OBS?
What are the FPS numbers? Could you enable logging and kernel profiling and post the log (usually in game's 'working folder')?
Maybe, you could try using CPU to do colorspace conversion, but i think i broke the OpenCL version of it (or rather cpu driver is so picky with work dimensions ugh) so you have to uncheck OpenCL.
 

jackun

Developer
i must say great work so far, how ever currently when tabbing in full screen exclusive softwares...

But x264 is fine? There were some changes to capture code in OBS' latest commits. Anyway, MFT is a bit iffy still.

E: Looking through the video frame-by-frame it looks like a game issue, also. The "warping back" frame is different than the previous 2 frames.
 
Last edited:

RenZimE

New Member
But x264 is fine? There were some changes to capture code in OBS' latest commits. Anyway, MFT is a bit iffy still.

E: Looking through the video frame-by-frame it looks like a game issue, also. The "warping back" frame is different than the previous 2 frames.

its actualy only the recording that does this, the actual game its self is still fine with no abnormalities.

yea the current obs 0.625b x64 is fine, beisdes a minor hitch when tabbing nothing happens to the stream.

upon further investigation the current build of the VCE fork is fine in software as well.
the link below was recorded with obs vce fork 0.63b x264 medium preset 1581 bitrate - for comparison

http://www.twitch.tv/renzime/b/556991133
 
Last edited:

OliverMD

Member
What are the FPS numbers? Could you enable logging and kernel profiling and post the log (usually in game's 'working folder')?
Sure, can do that later when i got time. Will edit the post or something when I'm done
Maybe, you could try using CPU to do colorspace conversion, but i think i broke the OpenCL version of it (or rather cpu driver is so picky with work dimensions ugh) so you have to uncheck OpenCL.
Even when i don't use CL in DXTory, the FPS still stay far under OBS if you mean that.
How is the MFT thing in OBS working anyway, is it using CL by default or not at all?

Also i got another codec issue. I can't record War Thunder without having the game crashing when i use the VCE codec for some reason. Other codecs work perfectly fine, but as soon as i use the VCE one it crashes. Same case for MSI Afterburner when i use the VCE recording function funny enough.

Thanks for the help already, hope i can help you to improve the DXTory codec somehow :)
----------------------------------------------------------------------------------
Edit1: Weird, i can't find the logs anywhere after recording. Not in the game folder nor where the recordings are saved in.
Edit1.5: Looks like it was a game side issue. Think i just found a log from another game i recorded.

Edit2: Project Reality Recording Test. Both 1080p@30FPS
With OBS I'm going down from 60 down to 54
With DXTory I'm going down to around 45 FPS
Way too much loss obviously, no matter how much i want the multiple audio source feature.

Edit3: Another PR test with the same settings as above
With OBS I'm going down from 80 down to 70
With DXTory I'm going down to around 60 FPS

Edit4:Below the log plus kernels what you wanted me to do
Compression query: 32 0 1920x1080
Compression query: 32 0 1920x1080
CompressQuery OK

Compression query: 32 0 1920x1080
CompressQuery OK

Initializing Encoder...
Devices: 1
Selecting device: 0
Device 0 @ 0x6485a3c0: Pitcairn
Parallel compute units: 20
**** CAPS ****
* Bitrate Max: 100000000 Min: 0
* Picture size Max: 9000 Min: 16 (Macroblocks (width/16) * (height/16))
* Profiles:
* Prof: 66 Level: 10
* Prof: 77 Level: 11
* Prof: 100 Level: 12
* Prof: 66 Level: 13
* Prof: 77 Level: 20
* Prof: 100 Level: 21
* Prof: 66 Level: 22
* Prof: 77 Level: 30
* Prof: 100 Level: 31
* Prof: 66 Level: 32
* Prof: 77 Level: 40
* Prof: 100 Level: 41
* Prof: 66 Level: 42
* Prof: 77 Level: 50
* Prof: 100 Level: 51
* Prof: 66 Level: 10
* Prof: 77 Level: 11
* Prof: 100 Level: 12
* Prof: 66 Level: 13
* Prof: 77 Level: 20
**************
Build Options are : -cl-single-precision-constant -cl-mad-enable -cl-fast-relaxed-math -cl-unsafe-math-optimizations
clGetKernelWorkGroupInfo: 256
CompressBegin
Output buffer is too small: 75786 (needs 417505), but it is probably just previous output buffer size. Might crash now.
CompressEnd

VCE Performance
Processor Frequency: 3093.01 MHz (3093008640.00)
GPU Frequency : 1100.00 MHz
VCE Frame Rate (encode) : 34015304.00 / 90.93 FPS
VCE Frame Rate (copy back) : 4765956.50 / 648.98 FPS
CL colourspace conversion : 7578865.00 / 408.11 FPS
Memory write : 5967283.00 / 518.33 [FPS]
Whole compression : 46368060.00 / 66.71 [FPS]
Y kernel : 0.000076 seconds (avg)
UV kernel : 0.000076 seconds (avg)
 
Last edited:

jackun

Developer
How is the MFT thing in OBS working anyway, is it using CL by default or not at all?

It is/uses the Windows' Media Foundation codecs framework and stuff for Vista and newer. Only AMD knows what it does underneath :P

Uncheck 'Use MFT..' in OBS then it uses the same older API as the VFW codec that Dxtory uses (and MSI AB probably). Drops as much too?
Could try 13.12 drivers as coin-miners complained that 14.1+ drivers had *cough*sh*t*cough* OCL performance.

E: If this is valid math then 0.000076*1000*30 = 2.28 ms average OCL processing time. Going from 80 to 60 and 60 to 45 is about 4-5 ms render latency increase, so it kind of correlates.
 
Last edited:

OliverMD

Member
It is/uses the Windows' Media Foundation codecs framework and stuff for Vista and newer. Only AMD knows what it does underneath :P
Hehe fair enough i guess.

Uncheck 'Use MFT..' in OBS then it uses the same older API as the VFW codec that Dxtory uses (and MSI AB probably). Drops as much too?
Wait.are you saying that i could get better perf without the MFT but using CL? When i begun using the fork i run into some issues while using CL (bet 30+FPS releated), reason why i started using MFT.Oh and because i can't get CL to run at all anymore for some reason.

When i use CL instead of MFT it just won't record anymore and only spit out an empty file (no fps/bitrate in the bot right).
And no, i don't use Custom Settings while having CL on since i run into issues using those when first time using the Fork.

EDIT: Huh, turns out it had something to do with my affinity settings since i force OBS to only use 1 core but CL needs at least 2 to work for some reason. The same goes
EDIT2: Hnnnnnnnnnnng i love you Jack. In my short Project Reality test CL worked wonders, losing 5-7FPS AT BEST most of the time. Going to test more tomorrow when i got time.
EDIT3: Holy sh*t i can even use my F9/F10 keybind to start and stop the recording now without it saying "Encoder initialization failed" :D. Was always annoying since with MFT i had to go all the way to the desktop to restart the recording.
EDIT4: War Thunder Benchmark used to end up around 125-129 with MFT i think, now with 131. Without any recording at all around 140FPS

E: If this is valid math then 0.000076*1000*30 = 2.28 ms average OCL processing time. Going from 80 to 60 and 60 to 45 is about 4-5 ms render latency increase, so it kind of correlates.
So DXTory is doing everything right and nothing I can fix on my side or what?
 
Last edited:

jackun

Developer
So DXTory is doing everything right and nothing I can fix on my side or what?
Ok, if you got OBS working with OVE and it is faster than dxtory, hmm, you could test dxtory with some less demanding codec. I could make a null codec that does nothing so most delay would be just dxtory itself.

EDIT3: Holy sh*t i can even use my F9/F10 keybind to start and stop the recording now without it saying "Encoder initialization failed" :D. Was always annoying since with MFT i had to go all the way to the desktop to restart the recording.

Hm have to check what's the deal with that, but i think it worked fine for me (though i mostly use OVE version).
 
Top