Testing with Comskip donator build 0.82.012 and GPU

The current version of Comskip (donator build) in MCEBuddy is 0.82.003.
Yes, I know we can add our own upgraded Comskip donator build.

Biggest feature in the current Comskip? v0.82.011 is built with FFMPEG 4.3 decoders
Next best? Ad detection for 4K and 10-bit (HDR) decoders.

Also for the person asking about ticker/crawl removal, look for “ticker” in the INI file. Notice v0.82.007 added an INI parameter for detecting a top ticker/crawl. So if that is what they were asking for, the newer comskip version is needed, however, hardware assist decoders are only available in the donator version.

I would be willing to donate/buy MCEBuddy again if that was the blocking factor to getting an upgraded donator comskip version in MCEBuddy (or at least in the Donator version of MCEBuddy). Sure, I can get my own upgraded donator version of comskip and configure MCEBuddy to use my version of comskip, but that doesn’t really help anyone else.

Is this on the MCEBuddy roadmap (for 2023?) now that there’s also a newer version of FFMPEG out (v6.0). I’m guessing Comskip statically links its FFMPEG libs, but I suspect a newer FFMPEG for MCEBuddy will also help it (and the HandbrakeCLI?) with better HW/GPU decoding/encoding.

I also noticed that the v0.82.003 donator build with MCEBuddy does not allow the “–cuvid” option to indicate the hardware_decode should use the nVidia hardware decoders (i.e. CUDA).

Thoughts?

Changes on 0.82.012
- Added support for 10bit video decoders
**Changes on 0.82.011**
**- Upgraded to ffmpeg 4.3 decoders**
- Maximum video size increased to support 4K video
Changes on 0.82.010
- Upgraded to latest build of ffmpeg decoders
- Bug solved: Sometimes Comskip hangs at the end of processing a recording.
Changes on 0.82.009
- Max video size increased to 4000x2400 to allow processing of 4k video
Changes on 0.82.008
- This is a test build for windows 7, no other differences with the previous build
Changes on 0.82.007
- Ini parameter added: setting top_ticker_tape > 0  removes pixels from the top of the video
- Updated the decoders to the latest available version, some robustness improvements observable
Changes on 0.82.005
- Bug solved: On some recordings Comskip crashes
- Bug solved: On some recordings no audio is decoded
- Updated the decoders to the latest available version, in general some speed increase observable
Changes on 0.82.004
- Bug solved: vdr output should use frame numbers with sub second time indication instead of fraction of a second

Here are my results testing different versions of Comskip and using different decoding methods.
I tested with Win10 x64 22H2 and using an i5-4430 (Haswell) with a RTX2060 with latest nVidia drivers (531.61 2023-04-13).

I am transcoding HDHomeRun DVR recordings (HDTV OTA TS streams in MPEG2/AC3) to H.265/AC3 in MKV containers.

TL;DR Summary:
Comskip donator version definitely speeds up ad detection. The current Comskip donator version (0.82.12) significantly speeds up ad detection over the Comskip donator version (0.82.003) that currently comes with MCEBuddy.

By “significantly”, I mean over 50% faster. What takes stock MCEBuddy 10m00s to do ad detection will only take 6m32s after switching to the current comskip donator version.

TIL Summary:
The speedup in using the GPU for ad detection isn’t nearly as much as for transcoding to x264 or x265. The reason is that ad detection is being run on the DVR’s native media encoding. In my case, that’s an HDTV signal, and my HDHR OTA DVR is doing no transcoding, just straight to disk (and the same for the Tivo recordings transferred via KMTTG). This means the media that comskip is scanning in my setup is in TS (Transport Stream) format using MPEG2 encoding for video and AC3 for audio. And for the most part, there really isn’t any speedup for doing MPEG2 decoding in the GPU as all of the modern CPUs from the last 20 years have MPEG2 HW decoding built-in to start with (remember all those special extra multi-media specific instructions that are now standard x86 CPU instructions?). They have to in order to function in low-cost parts devices like TVs, dongles like Chromecast & Firestick, and on up the food chain to Roku, FireTV, tuners (like Silicon Dust HDHR products), and DVR appliances/software. That said, there is definitely a speedup with using a GPU and the Donator version of comskip.

My Recommendation (does not reflect the views of MCEBuddy or anyone else):
Pony up the $10 (or more) to get the donator version of comskip if you have a recent nVidia card, and make sure you add the faster of the “–cuvid” or “–nvpau” options to your custom options to comskip. Otherwise, what comskip is doing is using the CPU instructions MM extensions with the “–hwassist” option, and only the current comskip donator version has options to specifically use the GPU for decoding.

Caveat:
If you’re transcoding already transcoded files (i.e. x264/x265 video downloaded from somewhere, not an OTA HDTV TS recording in MPEG2), then using GPU decoding in comskip makes even more sense as that will definitely be faster in GPUs.

comskip-0.82.003-Donator-hw-test.log          --- MCEBuddy Donator Version
Generated using donator  Comskip 0.82.003
Parsed 49136 video frames and 55262 audio frames at   336.73 fps

comskip-0.82.012-hw-test.log                  --- Current Comskip (non-donator)
Generated using public  Comskip 0.82.012
Parsed 49136 video frames and 55262 audio frames at   243.65 fps

comskip-0.82.012-Donator-hw-cuvid-test.log    --- Current Comskip (Donator, nVidia CUVID decoder)
Generated using donator  Comskip 0.82.012
Parsed 49136 video frames and 55262 audio frames at   490.11 fps

comskip-0.82.012-Donator-hw-nvpau-test.log    --- Current Comskip (Donator, nVidia VDPAU decoder)
Generated using donator  Comskip 0.82.012
Parsed 49136 video frames and 55262 audio frames at   514.61 fps

Which is the last version for Windows 7 since WMC is the only Cable TV Card with encrypted channels we can watch NOT Windows 10

Another thing I noticed, due the fact that my OTA recordings are in MPEG2 streams, is that the transcoding maxes my CPU (doing the MPEG2 decode) and the GPU is used for the HEVC/x265 encoding. So, while definitely faster with the GPU than without, and definitely faster with the newer Donator version of comskip, I’m still CPU-bound due to the MPEG2 media on the input side of the transcoding. Might be time to go from the 5th gen (Haswell) up to a current 12th or 13th gen CPU. I’m looking at the 65W 13th Gen most likely. That also means a new ITX motherboard, along with DDR5 memory. And I might as well get a (slightly) bigger case that can hold a 3090 or RTX40 series card. The only bright part of the whole upgrade project is that the M2 drive prices are dropping hard. 4TB are closing in on $200.