Showing posts with label quality test. Show all posts
Showing posts with label quality test. Show all posts

Thursday, June 18, 2015

Quality Test: Bandicam's Xvid Implementation And Examination Of The Optimization Configuration [with Screenshot Comparisons]

For those that use Bandicam to record their gameplay, you may already be familiar with and even use one of the built-in Presets that Bandicam offers, all of which configure many of the recording settings automatically for you. Some of these Presets are directed towards 'immediate post-record upload' of gameplay recordings. One of these, is the "YouTube (720p)" Preset.



In this Quality Test, I will be focusing in specifically on the "Optimization" setting within the Options of this Preset and examining the difference you can expect between the two options that you can choose from. The two options for the Optimization setting under the Xvid Settings dialog are: "Faster Encoding Speed" (the Default) and "Smaller File Size" - the area where you choose between these two is highlighted in the Header of this article, above.

Recently, on the Official Bandicam Forums here, I was trying to help out a fellow Bandicam user, with information about Quality and it's relation to File Sizes, and I ended up speaking briefly about this "Optimization" setting, offered in Bandicam. I felt as though I wanted to expand a bit more on this setting in Bandicam and the effect of each option - both for the benefit of this user and to help others as well - and so here is the 'expanding'... ness...


"Xvid" is a codec (used to COmpress and DECompress video), that is part of the MPEG-4 family. For those familiar with video compression and H.264/AVC (which is MPEG-4 Part 10, Advanced Video Coding), Xvid is H.263/ASP (MPEG-4 Part 2, Advanced Simple Profile). This means it is related to h.264/AVC; however, being h.263/ASP, Xvid does not have some of the 'top-shelf' capabilities of h.264/AVC. It does however, have many capabilities (such as B-Frames and Quarter-Pixel analysis) which still give it high-quality output potential.


For more of an in-depth look into Bandicam's implementation of Xvid and other Settings it offers, their effects on Quality and related File Sizes (and More!), I have written an article earlier (by popular request) talking about "some of the Xvid settings I use, and why", here.


In the game recording application Bandicam, the many options that Xvid offers have been given a simplified interface for the user, where they can very easily choose between a 'Faster Speed' version (the Default) and a 'Smaller Size' version. This is to expected from the concept of the Presets, but it is also simplified in the Xvid configuration options in general [in Bandisoft's implementation of Xvid in the program]. This should not be seen entirely as a negative, as there are many, many options for Xvid (an MPEG-4 codec, with literally dozens of settings) and it would be potentially confusing for many users to attempt to choose between the various settings [and know what their effects on recording and output would be], thus the simplified interface.

So then, what is the 'real difference' between the two "Optimization" settings? Let's take a look...

Night Scene frame comparison for the two settings, in the Unigine Valley Benchmark. Click to see Full Size

Above, is a side-by-side comparison of two frame extractions from two recordings, utilizing the two different Xvid Optimization options in Bandicam. The one on the left was from a video recorded using the Default setting of "Faster Encoding Speed", where the one on the right was from a video recorded using the option changed to the "Smaller File Size" setting.

It can be seen, mainly in the flatter, darker-blue area between the moon and the trees to the left of it, that the 'Faster Speed' side appears to have a 'blocky' effect occurring, even though it is a subtle occurrence. It does not seem to be happening on the right, in the 'Smaller Size' setting frame. The right side has a smoother change in the variations of colours, with less of the 'blocks' - which are compression artifacts (that is, visual effects seen in the video material due to the difference in how the codec is calculating the gradations ['noticing and calculating the series of changes'] in the colours).

This 'blocky' effect is likely occurring because many of the analysis and processing options in the codec may be turned OFF in the 'Faster' setting of [Bandicam's usage of] Xvid. This is a normal approach however, as turning these types of options off, essentially tells the codec "don't pay as much attention to detail" - resulting in the codec processing and outputting data (in the form of frames) much faster - hence the "Faster Encoding Speed" title of the option. It simply is not attempting to 'look at all the subtle differences in colour' and 'keep them all'.

As far as Output File Size for each Optimization setting, when recording the Valley Benchmark with the "Faster Encoding Speed" option of Bandicam's "YouTube (720p)" Preset, it was streaming data at about 24Mbps to the video file (writing about 3MB/s [to a hard drive capable of 150MB/s]).  When recording using the "Smaller File Size" option, data was being recorded at half that rate, about 12Mbps (writing less than 1.5MB/s to the video file). This is most likely due to the extra analysis that the codec is performing, being able to [with the 'Smaller Size' setting] scrutinize further and compress the video more, reducing the final recorded file size output.

 Let's look at other examples to see more differences between the two settings.

Close-up anatomical frame comparison for the two settings, in the Street Fighter IV Benchmark. Click to see Full Size

Above, is a comparison of two frame extractions from two recordings of the Street Fighter IV Benchmark. The left (using the 'Faster Encoding Speed' option), has not only the Macroblocking effect from our earlier example (at less severity, seen more along in the right edge of the frames); but it also shows a blotchy, speckled effect within the subtle changes of colour (seen everywhere, but it is more obvious around the deltoid and pectoral muscles of the game character [Ryu's shoulder and chest muscles]) . This is a form of Gibbs Effects, sometimes called "mosquito noise" in video processing.

This type of effect is likely to occur for the same reasons as the above comparison, where in the "Faster Encoding" setting, many of the analysis and processing options are turned OFF, resulting in higher Performance, in the end. The codec is simply not attempting to maintain the same amount of detail (the minor changes in colour) within and between the frames - again however, having the result of higher performance [versus the "Smaller Size" option].

The recordings themselves, of the Street Fighter IV Benchmark, had similar Bitrates to the above example. With the "Faster Encoding Speed" option, about 30Mbps were being saved to the video file (written at about 3.5MB/s to the drive). When using the "Smaller File Size" setting, about 20Mbps of data was being streamed out (written at about 2MB/s to the video file output). This again, is an example of the extra analysis, capable in the 'Smaller Size' option, where the codec is going to sacrifice some performance, to do what it can, to analyze the differences in the video and maintain them to a higher degree in the final video output (keeping more detail - at the cost of a performance 'hit' in recording and disk space used overall for the final output file).

Still frame comparison for the two optimization settings, taken from the Batman: Arkham City Benchmark.
Click to see Full Size

In the above pair of screenshots (extractions from two Batman: Arkham City Benchmark video recordings), evidence of both of the previous example types of compression effects can be seen. In both frame extractions, Gibbs Effects ('ringing' or 'mosquito noise') can be seen around the furniture in the bottom/front (center). The left frame also contains the Macroblocking effect, especially in the 'flatter' [area with less detail] center region (it is also present in the right frame, but it does so in a far less obvious manner).

Both of these effects occur to some degree in the right example as well, but Macroblocks occur to a far lesser degree in the central region, as the codec [with the "Smaller File Size" option] is sacrificing Speed for the sake of taking more time to analyze each frame further, taking into account the changes in colour between the frames ('Temporal') and throughout the frames themselves ('Spatial'), attempting to maintain more of the colour it is detecting.

Looking at the Bitrates used for the recordings, with the "Faster Encoding" option, it was saving data at about 16Mbps (writing about 2MB/s to the video file), where the "Smaller Size" option was recording half that, about 8Mbps (saving 1MB/s to the recording); once again showing the difference the analysis and attempt to compress the frames further, saves on diskspace. The Performance Hit for this game was little however, in difference, as the Average Frames Per Second (reported after a Full Run of the Benchmark) was the same for both: 93fps.
4

I wanted to do an example of a game that has far lower 'action' happening on the screen (a lower amount of changes happening at once), so I chose this Web Browser-based game, called Lottso Express (found at Pogo.com). As can be seen above, there is little apparent difference between the two frames extracted from the two recordings, each with the different optimization setting being used.

This is likely due to the fact that there is so little changing on the screen at one time in this game [source material], that the codec is able to efficiently handle all changes occurring, losing little to the lower analysis being done when using the "Faster" option. Indeed, the difference in Bitrate between the two recordings was less than 100kbps - the Faster Encoding recording had a Bitrate of 540kbps (writing about 67KB/s to the file) and the 'Smaller File' video had a Bitrate of about 440kbps (writing about 55KB/s to the file).


Getting back to higher-action games (ones with more changes going on in the screen/frames), the above two frames are extracted from two game recordings of Battlefield: Hardline, each with the different Optimization option selected. Taken from videos where the player [me!] was standing almost still, there was little going on in game, but the frames have Macroblocking occurring in the flatter/less-detailed region on the left [of each], most likely due to the 80% Quality setting of the YouTube720p Preset - compressing the non-moving area as much as possible. Gibbs Effects ("ringing" or "mosquito noise") is apparent in the upper-right area for the "Faster Encoding Speed" side, far less visible in the same region (around the edges of the leaves) on the "Smaller File Size" side.

The Bitrate for both videos shown above was similar as well, with the 'Faster Encoding' recording running at only about 10Mbps (saving about 1MB/s to the video file), as again, the player was not moving very much at all [in this example]. The 'Smaller Size' recording saved only slightly less data, at 7Mbps (writing less than 1MB/s to the file) - not a large difference, since there weren't many changes going on with the material in the frames (due to not moving very much). This is a good example of showing how both settings, although both set with differing limitations, 'try to do as much as they can', when it comes to compressing/saving the video data to the output file.

Still frame comparison for the two optimization settings, taken from two recordings of Planetside 2. I was shooting my rifle just off to the right, creating an area to analyze between the rifle and the Console. The open areas around the Console are also open to examination. Click to see Full Size
Another high-action game, these frames above are from the game Planetside 2, with my soldier shooting a rifle just off-screen to the right. This increases the motion going on in the frames, and thus increases the differences between the two Optimization settings and how they will handle the onscreen motion vectors (seen more in the area between the just-off-screen rifle to the right and the console in the center). Between the two, especially on the left example, Macroblocking is seen in that region, as well as the floor.

Although a handful of examples can bring out the difference between these two settings, try to remember that these are all zoomed, scrutinized examples - still frames, as well, where compression artifacts are much easier to spot - so here is a different type of example, following:


Above, is an example of the two codec settings in motion (created as a GIF by Bandisoft's Honeycam [which came out of Beta just weeks ago - Tutorial for the program Coming Soon™]). Even though I applied a Sharpness Filter within the program, to accentuate the difference between the two, it can be seen that Macroblocking occurs in both (likely due to the 80% Quality portion of the Preset) - although it appears much stronger in the left half. Below is the same example, but with no Sharpness Filter applied.


As seen above, although the compression artifacts are present if looked for, it is somewhat of a subtle presence in a moving, action-packed recording, during playback. Indeed, many people will not even notice the visual differences between the two settings, being more interested in the action occurring on screen! These artifacts are also further 'hidden', if a recording is going to be further processed - such as after uploading to a video sharing site.

Many of these types of sites (YouTube, Vimeo, Plays.Tv, etc) will re-compress the video into a more streaming-friendly Bitrate, sometimes into multiple bitrates, then available to choose from, by the viewer, when browsing them. This decreases Quality (in the name of smoother streaming, with less dropped frames or 'falling behind'), further hiding imperfections like the compression artifacts above - unless of course they are far too obvious in the source recording, where then, they will still be present (although blurred or softened) in the final video playback/viewing. I created an example of the effect from this re-compression, done by video sharing sites - it is shown just below (YouTube is used merely as an example):
Originally created for an earlier article, testing out MJPEG on Diablo3 with Bandicam, this screenshot shows examples of the detail loss after uploading to YouTube, when the video is streamed back at 1080p and 720p (the frames are extractions of the downloaded post-recompression versions of the original upload).
Click to see Full Size

As always, dear reader, I urge you to try your own tests, with your favourite (or latest played) games, to see which setting you prefer. Sometimes, you may be limited in your choices. For example, if you have an older PC system, or are using a Laptop, you may only be able to record with the 'Faster Encoding' option, unable to utilize the further analysis and processing done by the 'Smaller File' setting at this time - it may just create too much 'lag' or 'choppy-ness' while recording for your system. Or, you may have disk space as a limitation, then only being able to use the 'Smaller Size' option, where the further analysis and compression is the only way you can collect enough gameplay recordings for your project.

Either way, don't be too discouraged, remembering from the last [animated] example above - and the YouTube example - that it is a subtle difference overall, one that I have accentuated here [merely for educational purposes, for those that wished to know what the 'real' difference in output would be]. When not 'zooming in' or otherwise scrutinizing the videos closely - normally enjoying them and all their action-packed-ness - one may not even notice a difference at all, even after seeing the above examples! In that case then, I urge you to use whichever is more beneficial for your circumstances - and try to have fun using either setting of this 'Bandicam-optimized-version-of-Xvid' as your recording codec, to record your gameplay experiences.

See You In The Game!


Saturday, October 12, 2013

Quality Test - GPU-accelerated H.264/AVC Game Recording with CUDA (with Screenshot Comparisons and Examples)

To perform game recording solely on the videocard, utilizing the high resources of today's little powerhouses sitting in our cases - resulting in high quality video and less lag while recording - sounds like manna from heaven. You might be saying, "Wait, the possibly of lowered performance hit and the possibility of a high-quality recording?.. if this is true, please stop teasing and just tell me now..". Well, dear reader, let me tell you that these things are indeed true [for the most part..].

Beginning with version 1.9.0, Bandicam (a game recording application) included support for utilizing NVIDIA's CUDA for recording your gameplay, touting high speed (less 'lag'), high compression ratio (smaller file sizes) and high quality. All you needed was a CUDA-capable NVIDIA videocard, the latest videocard drivers from NVIDIA, and Bandicam. In the most recent version of Bandicam (1.9.1) they have also included support for AMD's APP ACCELERATION and INTEL's QUICK SYNC. 

For this QualityTest, I took an NVIDIA GPU and put it through the paces of some game recording with the accelerated H.264/AVC codec (as opposed to the CPU-based x264 for example), using Bandicam [which at the time of this writing, to my knowledge, was the only game recording app that could utilize accelerated/gpu-based AVC recording] to test things out. Here are my findings, shared just for you.


An example of an NVIDIA CUDA encoded game recording, this is a frame extracted from the CUDA-produced output file (Unigine Heaven Benchmark Test @ 1080p). Click to see Full Size


Overall, recording with the GPU gave good performance (low performance hit / lag), fairly small file size output, with decent quality [surprising to anyone that has compressed video with CUDA in the past, I know, more info below]. It was only with certain games that the performance suffered (although this may be more the fault of optimization with the game's engine and not NVIDIA's programming) and it was slightly disappointing that the performance wasn't "that much faster" than other codecs [more info at the end about that]. For the most part however, game recording "live" with the GPU and directly encoding to a file using a compatible videocard is indeed nice and fast and produces comfortably-small footprint file sizes.



What file sizes are we talking about here? 



I haven't looked at the specs for the codec and how it's utilized, but from what I can quickly see on the surface, it is using the h.264/AVC codec with my NVIDIA GPU, with Deblocking enabled and with a keyframe/I-frame inserted every 5 seconds. That doesn't leave 'a lot' of headroom for compression (x264 AVC usually defaults to 250-300 frames between keyframes which, at 30 frames per second, is more like 10 seconds to 'play with' for compression); but it still gave a nice small filesize when recording with VBR (Variable Bit Rate), where it would compress slower-motion areas and scenes when it could and increased the bitrate (to try to keep apparent quality) when needed in faster/high-motion sections.


An example of an NVIDIA CUDA encoded game recording, this is a frame extracted from the CUDA-produced output file (Battlefield 3 @ 1080p). Click to see Full Size


Just below, you will find some data samples of game recordings that were done at incremental quality settings, showing the average bitrate of the recording overall and the sizes of the files produced as output
[(i)all game samples were recorded with accelerated/gpu-based H.264/AVC generated by NVIDIA's CUDA at 1080p unless otherwise indicated (ii)although test recordings varied in length between games, throughout each game title, all 4 tests of the same game were done with the same elapsed time]:


Recorded Game TitleQ. settingAverage BRFilesize
Batman: Arkham CityQuality 100(~75000 kbps)753 MB
Batman: Arkham CityQuality 70(~22000 kbps)224 MB
Batman: Arkham CityQuality 50(~10000 kbps)104 MB
Batman: Arkham CityQuality 20(~5000 kbps)59 MB
Unigine Heaven BenchmarkQuality 100(~120000 kbps)1390 MB
Unigine Heaven BenchmarkQuality 70(~48000 kbps)551 MB
Unigine Heaven BenchmarkQuality 50(~24000 kbps)276 MB
Unigine Heaven BenchmarkQuality 20(~11000 kbps)140 MB
Diablo IIIQuality 100(~22000 kbps)44 MB
Diablo IIIQuality 70(~9000 kbps)20 MB
Diablo IIIQuality 50(~5000 kbps)12 MB
Diablo IIIQuality 20(~4000 kbps)9 MB
Alien Versus Predator (PC-2010)Quality 100(~110000 kbps)380 MB
Alien Versus Predator (PC-2010)Quality 70(~37000 kbps)126 MB
Alien Versus Predator (PC-2010)Quality 50(~18000 kbps)66 MB
Alien Versus Predator (PC-2010)Quality 20(~8000 kbps)28 MB
Minecraft (Standalone)Quality 100(~47000 kbps)44 MB
Minecraft (Standalone)Quality 70(~27000 kbps)25 MB
Minecraft (Standalone)Quality 50(~13000 kbps)12 MB
Minecraft (Standalone)Quality 20(~7600 kbps)7 MB
Lord Of Ultima (Browser Game)Quality 100(~ 24000 kbps)59 MB
Lord Of Ultima (Browser Game)Quality 70          -      -
Lord Of Ultima (Browser Game)Quality 50(~7000 kbps)20 MB
Lord Of Ultima (Browser Game)Quality 20(~3000 kbps)11 MB
Lottso Express (Browser, 384p)Quality 100(~870 kbps)10 MB
Lottso Express (Browser, 384p)Quality 70(~320 kbps)7 MB
Lottso Express (Browser, 384p)Quality 50(~225 kbps)6 MB
Lottso Express (Browser, 384p)Quality 20(~164 kbps)5 MB
table code created by Danny Sanchez (journalistopia.com)

As you can see in the table above, due to the nature of Variable Bit Rate recording, setting a quality figure of "50" does not produce 'exactly one-half' of the bitrate or filesize of a "100" quality setting. The codec is adjusting as needed and where required, allocating more bitrate to complex areas and changes between frames, to help keep "apparent quality" near the desired estimate. Configuring the Quality setting of "100" is essentially telling everything to keep as much detail as possible - but it will only do so within the limitations of the codec being used (in this case, AVC) and how it is configured internally (the calculation time allowed per frame, the buffer allowed, etc), depending on how the developers have programmed it to encode.


An example of an NVIDIA CUDA encoded game recording, this is a frame extracted from the CUDA-produced output file (Minecraft @ 1080p). Click to see Full Size


Overall, it seems that with CUDA, the file sizes are kept comfortably small - especially compared to a FRAPS or DXTORY codec recording. The bitrate doesn't stray too far from a 100,000kbps maximum (about 12 MB per second of video data) despite how much action is going on in the game at the time. At that bitrate, a half hour of straight recording would take up only about 22GB. Not too bad, especially if you are creating long recordings or can't afford that 4TB drive upgrade just yet. A Blu-Ray disc title typically uses a bitrate of 25,000-50,000kbps, so a GPU-based/accelerated recording is still allowing for more than double that bitrate to try to represent what is happening on the screen in viewable quality.



So then, what is the quality like?



Normally, if you ask anyone about quality who has used GPU-acceleration together with words like "video editing" and "compression", they will tell you: "It encoded faster, but the output looked craptacular..". I myself have tried off and on in the past to compress videos for myself and others with acceleration and every time I tried CUDA or AMD's APP.ACCEL for the final AVC output I was disappointed at the blotchy, blurred, 'macroblock-y' mess that comes out, unless I allow for a much larger bitrate than intended (and receive a correspondingly larger file size). Somewhat surprisingly then, it was nice to find that I did not need to confine myself to "100% Quality" and always expect huge filesizes with GPU-based game recording to get decent viewable quality, suitable for sharing.

A side-by-side comparison of four CUDA quality settings (100%, 70%, 50%, and 20%), these are frames extracted from the CUDA-produced output file (Batman: Arkham City @ 1080p). Click to see Full Size






As can be seen in the screenshot comparison above, decent quality can be maintained at the 100% Quality setting, despite the speed of the encoding being done with H.264/AVC. I was pleasantly surprised, to be honest. Of course, Videophiles will notice slight Posterization and light MPEG-compression artifacts (such as Macroblocking) occuring even at 100% Quality if looked closely for; but for the majority of people, a quality setting of 100% (even down to 80%) should be found quite acceptable. I personally found that at 70%, the compression artifacts became more noticeable, especially the 'trails' that occur from the lossy Vector Quantization (the codec keeping track of where things are moving around between frames), which is why I chose 70% as the 'next notch down' on these tests. At a Quality setting of 60% and any setting below that, these 'trails' left behind are very apparent and in my personal opinion I do not recommend going below 60% for GPU-based game recording at this time, as the quality loss and compression artifacts become too obvious and may remain apparent even in a final render after editing.

An example of an NVIDIA CUDA encoded game recording, this is a frame extracted from the CUDA-produced output file (Diablo III @ 1080p). Click to see Full Size
The screenshot above is a frame taken from a CUDA-produced Diablo III game recording. Even during a busy moment, with many things happening quickly on the screen, clarity seems to be maintained at a decent level, even the somewhat-hard-to-compress 'Red Text On A Dark Background' - and this video clip was recorded at the 80% Quality setting. Although some macroblocking is beginning to occur in the darker/flatter area of the upper left (as the codec attempts to keep detail in the high-motion areas by compressing the more static areas of the screen to a higher degree), the darker/flatter toolbar and stone floor overall do not seem to be suffering excessively.  [As always however, my personal opinions on quality are mere suggestions based on my own tests and I encourage you to do a bit of your own testing, to find out what settings you would like to settle on and use for your projects]

Since the desktop/GUI can also be recorded with Bandicam, I decided to try record a web browser game with the GPU as well, for the people out there who like to record these games. I recorded two free online games, Lord of Ultima (a city/area building game) and Lottso Express (a bingo-style game), both of which are 2D (flat, board-like), which I thought would be a good example of more static detail (low-motion) compression.
An example of an NVIDIA CUDA encoded game recording, this is a frame extracted from the CUDA-produced output file (Lord of Ultima, a web browser game @ 1080p). Click to see Full Size

Lord of Ultima takes up the entire desktop in this large example of low-motion/static area handling by the accelerated codec. The game, captured above, is largely non-moving, especially the toolbars and left portion of the screen. Recorded at GPU-encoded 100% Quality, the toolbars are clear, text is very readable, and even the darker, static area of the Town Hall pop-up is clean and macroblock-free (very little compression artifacts throughout the entire screen), very nice.

A side-by-side comparison of four CUDA quality settings (100%, 70%, 50%, and 20%), these are frames extracted from the CUDA-produced output file (Lottso Express, a web browser game @ 384p). Click to see Full Size

Lottso Express runs in a small window, so I tested out recording at the exact resolution of this window (576x384) to see how gpu-acceleration handles lower resolutions. The differences inherent in the four Quality settings, in each of the four extracted frames from the CUDA recordings above, is shown. Although the top section/frame is quite clear (at 100% Quality), it quickly degrades as the quality setting goes down, but the recording still remains watchable. In my opinion, if one is recording just for themselves for fun, or just to share with a friend quickly, even a recording level as low as 60% quality may be acceptable when recording a low-motion 2D game with gpu-accelerated encoding; but I still recommend not going below the 70% Quality setting when recording a 3D (high-motion) game, to maintain enjoyability and clarity when using gpu-accelerated recording (such as CUDA, being used here).
 [My tests presented here are only done with CUDA, as I do not own any other videocards capable of gpu-based recording at this time. Output quality may vary when recording with AMD's App Acceleration or Intel's Quick Sync. As always, I suggest doing a few short tests yourself to see what codec and settings you personally would prefer]


What are the configuration settings that can be changed? 



There was not much available to configure, as far as the Quality settings and configuration, within the game recording application (Bandicam) at the time of this test. Certainly not as much as the x264 codec, with it's VFW interface, that has been developed over time by generous programmers/contributors. For CUDA, you can choose between Variable Bitrate and Constant Bitrate (allowing CBR if you wish to more precisely estimate the file size) if you wish, and you can utilize the CPU to assist with recording and compression as well, but that's about it. This may be a limitation in CUDA itself however, as I contacted Bandicam developers to see if there would be any deeper configuration options for the codec that CUDA is using (such as Deblocking settings and Partitions) and they got back to me stating that there were no other configuration options of that type available to include, at this time.

The interface for CUDA recording found within Bandicam's Video Format settings. 

As of the most recent version of Bandicam (announced at the Bandicam website just days ago), they have added the option to change the Keyframe Interval (the frequency of Information Frames within the Groups Of Pictures, which helps with things like 'trails' or corruption from compression) and the ability to change the FourCC identifier, both of which will make the recording more compatible with video editors such as the Sony Vegas and Adobe Premiere lines of products. I am proud to say that I did a lot of compatibility testing previous to this on my own and submitted my findings to the developers of Bandicam, just in case they were interested, which contributed directly towards this recent addition to their application. Information on my tests and findings, for those interested, can be found in these articles, here:
http://gametipsandmore.blogspot.com/2013/05/game-recording-with-mpeg-4-using.html
http://gametipsandmore.blogspot.com/2013/06/and-more-how-to-stop-trails-and.html
http://gametipsandmore.blogspot.com/2013/06/and-more-game-recording-for.html
http://gametipsandmore.blogspot.com/2013/06/and-more-how-to-record-with.html
http://www.bandicam.com/forum/viewtopic.php?f=14&t=1687&sid=06b9cdb4450af00f3d33fb4306963f6f




As always, remember that if sharing your video on streaming sites (which limit bitrate) and uploading sites (such as YouTube), your video will be recompressed [converted again] at settings much lower than your production video and detail will be lost (blurred/smoothed and show Macroblocking) due to  the nature of recompression. Therefore, if wanting to save time, there is no need to create and upload huge-bitrate, finely-detail video, as can be seen in this comparison of an uploaded YouTube video and the output that people will be seeing afterward:
A side-by-side comparison of frames extracted from the Original Uploaded Video (Left), YouTube's 1080p Compressed Video (Middle), and YouTube's 720p Compressed Video (Right), showing loss of data/detail due to recompression.
(Diablo III @ 1080p, high-motion scene, moderately-detailed game engine)
Click to see Full Size



How about performance?



I don't usually talk much about performance when I do QualityTests or TestRuns, except for maybe a short paragraph on my own experiences or a "Personal Short Version/Opinion" section at the end. The reason is, every system is different and everyone has their system configured in different ways. I could say that GPU-recording ran great for me, but then someone with a laptop running a non-dedicated videocard will tell me how wrong I am and that it doesn't run well at all. I could say it lagged me out all the time, but there would be many who could run the same thing with no problems. A quick look at any Technical Support area of any forum anywhere is evidence of the fact that even with the same hardware, there are a bunch of people who will have no problem at all and a bunch who will be having no joy. So, I mainly leave the issue aside but I sometimes mention how it seemed to run for me and [especially if anyone asks directly] I would be happy to provide more information to those who want to know more about it.

For me, performance while recording with the GPU was a mixed bag. For the most part it seemed to work fine, but there were a handful of games that just didn't like it as much. Some were choppy or laggy when I began recording. The theory is, that recording with the many cores of a GPU, processing and encoding a frame to a file should be more streamlined, but in practice it seems to take more resources from the videocard itself than I expected. Perhaps it is due to needed optimization of the games or drivers, or perhaps it is my 'older' videocards that are beginning to get on in years (I was running two GTX 560 Ti's in SLI mode during these tests). I did find that some games preferred non-SLI mode when recording with CUDA (such as Diablo III, if I remember correctly) and things were smoother when recording that way; but for the most part, accelerated recording ran with about the same responsiveness as [and in some games, slower than] my own optimized settings for the x264 iteration of AVC. Not long ago, I spent a bunch of time testing and tweaking x264 to record with the H.264/AVC codec, finding the best settings for speed while maintaining quality - and in light of the performance I was able to tweak out of x264 - GPU-based-recording didn't impress me much [if talking strictly about performance hit here]... perhaps I'll end up just using my settings with x264, for now.

For more information, tests and tweaks that I did over time with h.264/AVC and the x264 codec, feel free to check out these articles here at the blog (some are the same as the above asection):



An example of an NVIDIA CUDA encoded game recording, this is a frame extracted from the CUDA-produced output file (Allods @ 1080p). Click to see Full Size



Overall, recording with gpu-acceleration was pleasantly surprising. Quality (at 100%) was better than I expected from it (it does taper off quickly as you lower the quality setting, however). The file sizes were comfortably small (about 25GB for an hour of recording at 70% Quality, about 45GB for an hour of recording at 100% Quality). The performance was a mixed bag for me, but for most games it was indeed fast and could get the job done. So, in essence, it managed to deliver on all promises. Not bad at all.


Have fun recording with your GPU and See You In The Games!



Thursday, May 17, 2012

Quality Test - Diablo III and Bandicam's "For Edit" Preset / YouTube Upload Test


With the Bandicam "For Edit" Preset, every frame is an independent Keyframe or I-Frame (Information Frame), which is a type of frame that can be 'cut' or started from in video editing programs (technically, every frame is a JPG picture). Also, the audio is Uncompressed, which means that any video editor should be able to recognize the sound data. Errors in programs like Virtualdub saying "Error initializing audio stream decompression" or Sony's Vegas showing "Stream attributes could not be determined" will not occur and these will open the audio just fine with this setting.



Testing out Bandicam as a game recorder and playing during the launch of Diablo 3 (woot!), I've put together some settings/specifications, uploaded it to YouTube, and collected some results for you all:




The video is short, but I was mainly testing a few things:
1) D3's performance, with all options maxed out
2) Capture quality of Bandicam's 'For Edit Premiere/Sony Vegas' Preset and performance/lag of using it
3) The Logo/Watermark capability of Bandicam
4) YouTube's quality maintainability


Recorded with: Bandicam
- v.179204 (Latest at time of this post)
- 'For Edit (Premiere, Sony Vegas)' Preset
- MJPEG, "Full Size", 80%quality (Preset), 30fps, Uncompressed PCM Audio at 48kHz
- Logo option (our GTAM watermark), lower right, 10% opacity


Game: Diablo III (Retail Release) Launch Day
- Witch Doctor, Cathedral Level 3
- Texture Quality: High
- Shadow Quality: High
- Physics: High
- Clutter Density: High
- "Anti-Aliasing" checkbox ticked ON


Resolution: 1680x1050 (1.6AR) recorded at 1680x1050 ("Full Size")**
Filtering: 4xMSAA, 4xAF, set in Control Panel of Videocard
Framerate while not recording: 80-100fps
Framerate while recording: 80-100fps


For people trying out Bandicam and finding your recordings are choppy/laggy on playback (when looking at the original generated/recorded file), you should find that compressing it to a file with a smaller bitrate/size in a format you will keep it permanently in, it will play back that file just fine.


I chose this D3 clip for a Quality Test because it was a good example of both fast movements/action on the screen, as well as slow/non-moving parts, including text. It has dark and light areas, high contrast edges, and tests wide area panning as well.

Bandicam's "For Edit" Preset worked great, with clear text and action in the original recording, while flatter, darker parts were not overly compressed which would create excessive macroblocks or be too smoothed out. There were some Gibbs Effects/Mosquito Noise around text and on some of the button logos in the original recording, but you had to look closely to see it, which is pretty good for not being a 100% Quality setting.

The very small amount of color banding present in the original recording was somewhat generated by the Game Engine (seen in the lower-right quadrant of this video, and in the Diablo3 login screen around the moon, etc.), and there shouldn't be much, due to using MJPEG as a recording codec.


If you are having problems with Color Banding that is not in the game itself, try MJPEG as your recording codec




Average bitrate of the original was about 40Mbps, which meant a writing stream to the disk of about 5MB/s, which any hard drive can handle (recorded onto a drive capable of 150MB/s).
Framerate during recording was maintained at 80-100fps (same framerate as not recording).
The original 1 minute generated file is about 300MB in size with these settings. The recompressed MPEG-4, resized to 1080p file, has an average bitrate of 20Mbps and is about 140MB in size.

While this Preset in Bandicam is designed for compatibility with editing programs, the original recording was uploaded directly from the Bandicam-generated file anyway, to test the effects of uploading to YouTube from an original recording.

** The video at the top was Lanzcos3 resized from the original 1680x1050 capture to a 1728x1080 (1.6 AR) [MPEG-4 H.264 AVC/AAC file with a bitrate of 20000kbps (audio at 384kbps) using a Deblocking Filter setting of +0+0] because the original upload was down-sized to 1280x720 by YouTube and looked much worse, see here below:




The Result:
Recorded at 1680x1050, YouTube had downsized that one to 720 vertical lines. The Gibbs Effects were no longer present because of this, but excessive smoothing and other compression artifacts were introduced. Text was far less readable and nothing on the screen was as crisp as the original 1050p recording. Aliasing was also introduced. This was unfortunate but understandable however, as YouTube can no doubt not keep 'everything' at 'very high bitrates' on their servers, and since it was not 1080p, it simply scaled it down.

A single frame taken from each video for comparison (Frame 813, zoomed section) from the original Bandicam recording, YouTube's version of the 1080p upload and YouTube's 720p version of the 1680x1050 upload. Click to see Full Size.

The resized-from-1050p-to-1080p version maintained much of its detail after uploading to YouTube. The text is closer to the crispness of the original recording, and there is only some smoothing and deblocking being done. There are some macroblock artifacts and color banding accentuation in the darker areas however (for instance, the lower-right quadrant much of the time) but other than that, it is a decent quality version of the 1080p upload.


For those recording at 1680x1050, I recommend upsizing it to 1728x1080 so that YouTube keeps most of the detail of your recordings




  Well done, Bandicam (and YouTube).

Hopefully this information will help out any gamers that are looking to start recording their experiences, or even the already numerous people who are recording and sharing their great videos. Thank you all for sharing and your efforts.



Please note dear reader, that I am not saying "This codec is the best one to record with" or "use this one only". I am merely showing that it is possible or how to tweak it for quality or file size, as to your own personal tastes. There are many codecs out there to choose from when game recording and although some are more apt for certain types of games than others, overall it is your own choice to do with as you will.


See you in the games!