Hacker News new | ask | show | jobs
by marcan_42 1538 days ago
> I can get 1920x1080 at 60fps from it.

No, you can't. It's not just MJPEG, it's internally downsampled to less than 1920 pixels of effective horizontal resolution, even though it technically spits out 1920 pixels via USB. It'll do true 1280x720 though (still with MJPEG). You're also going to get stereo audio on Linux with recent kernels only because I sent in a patch to make that work - due to a hardware bug, it advertises itself as 96kHz mono, so Windows and macOS will give you that (which is actually 48kHz stereo with both channels interleaved, but they couldn't advertise it as such because it does not correctly handle packet boundaries in a way that'd be spec-compliant for stereo audio).

Welcome to the wonderful world of Chinese HDMI capture cards. These particular little dongles are all using MacroSilicon MS2109 chips. Cheap and okay-ish for some use cases, but don't expect a high quality capture card or raw uncompressed video at this price point.

6 comments

I've tested a handful of them and they're always the same: not a single one of them are advertised in a honest way. Some have even a true USB 3.0 connector soldered, which of course the chip doesn't support.

I didn't know I had you to thank for a far better support in Linux!

Seems like you're the Marcan of Asahi Linux fame! I'm a supporter of your work, thanks for making the world a more interesting place!
> due to a hardware bug, it advertises itself as 96kHz mono, so Windows and macOS will give you that

Wait, shouldn't that sound really broken? I guess it depends on how exactly they are interleaved, but shouldn't the pitch be twice as high for example?

So the dongle will be doing something like this:

    LLLL... (48kHz mono) ---
                            \
                             > LRLRLRLR... (96kHz mono)
                            /
    RRRR... (48kHz mono) ---
The other end then needs to do the reverse.

Listening to it as a raw 96kHz mono stream will sound (very likely) completely awful (depending on how different the L/R signals are) as well as pitched down 1 octave.

edit: I may be confused about the direction the pitch shift is, you may well be correct that its pitch would be doubled rather than halved.

edit 2: actually the pitch would be unaffected; think about if you took a 48kHz signal (L...) and repeated every sample (LL...), if you played that at 48kHz the pitch would half, but playing it at 96kHz would double the pitch -> no pitch change. So really the issue would be how different L and R signals are that would introduce higher harmonics.

Right, that would work if it's interleaving every sample, but I think as soon as you do chunks of eg 5ms or so, there should be the mentioned doubling of pitch and other glitches. So maybe since they got away with selling this buggy thing anyways it is indeed interleaving every sample as you suggested.
No, it sounds perfectly fine. Mathematically, interleaving samples like this is equivalent to zero-padding every other sample to upsample, with no antialiasing filter. Then you add the other channel offset by one sample. The end result is that you have both channels summed up in the low 24kHz of spectrum, with half a 48kHz sample of offset for one channel (mostly negligible), and everything mirrored in the top 24kHz of spectrum as aliasing (which you can't hear). In other words, it will be very, very close to what a simple mono downmix would sound like.
No. Think of it as an offset. The 2nd channel begins at 48kHz.
I don't follow. We have two streams at 48khz, say 16bit. They get somehow interleaved to 96khz, so that must be 16bit as well. If they were interleaved to one at 48khz 32bit, I could see what you mean, one channel would just be very faint noise on top of the other.
See this image: https://i.imgur.com/Mg20l5s.png

Captured with such a capture card. If you play this file you would only hear the first ~20kHz if you are lucky. The 2nd channel is on top. That's my guess, but happy to be corrected. It sounds fine though.

What device would you recommend for HDMI capture without breaking the bank?
I use a Blackmagic Design Ultrastudio Recorder 3G. Requires Thunderbolt 3 but it’s pretty cheap for the quality.
Blackmagic all the way, we used them extensively (still do) at the beeb. Their linux driver support is excellent too, the only maintenance I ever needed to do as a sysadmin supporting a fleet of these was occasionally update their firmwares.
A note on Blackmagic hardware in general (including the ATEM switches)- they tend to only work with signals that are fully compliant with broadcast standards. For example, I have some Cisco HD PTZ cameras with a "raw" HDMI output that sends 1080p30 or 1080p60, but there's some wacky difference in the colorspace they output such that my Atomos recorder and Blackmagic capture devices only lock sync when the video level (brightness) of the scene overall is low, such as when you put your hand over the camera. The same cameras work fine with the $25 generic USB capture devices, as well as with the Avermedia BU110 which should be a "true" uncompressed USB3 HDMI capture device (that recently was marked down to $60).
Here is one example: WEIRD Blackmagic ATEM Mini Fault https://www.youtube.com/watch?v=WDfzwCXK0mI

The Tagarno is Looking DODGY (ATEM Flicker Fault) https://www.youtube.com/watch?v=JJsKYNh2H0A

I know Blackmagic is a popular brand for actual cine camera equipment, how do they compare to the more common Elgato 4K60 PCIe? Obviously thunderbolt is nice as an interface rather than the add-in card, but is there anything else it offers above and beyond that?
I use Blackmagic Design's "DeckLink Mini Recorder" which plugs into PCI-e.
Inogeni devices can be had secondhand pretty cheap. These are FPGA based, and supported by UVC driver (works on most platforms). Firmware update is via a windows app.
You might be able to get away with an elgato camlink 4k but you'd need software to actually record the input.
The device discussed in the article.

It depends on what you want to achieve. Have a better camera in Teams/Zoom? More than enough. Capture VHS too.

Definitely workable but if you want better camera in VC then you may be best going for one that supports h264 or something more modern than MJPEG over USB2. If you've already got a camera then fair enough, get a cheap dongle (or spend a few quid more and get a blackmagic decklink for 99 buck/quid/whatever - PCIe though, but could use a breakout ymmv)
I think that every DSLR/DSLM is vastly superior to the common webcams, even if you pay a little extra.
Sure, it was more about cost. If you already have a camera or don't mind spending extra to get one then it'll definitely give you better quality. Having said that a high end webcam can still produce good results so there's a tradeoff somewhere. If you're putting decent source material through a really cheap adapter then I think you'd better getting a decent webcam, personally but it you already have the camera then sure.
See this comparison: https://screenshotcomparison.com/comparison/22713

It really depends on what version (or configuration?) of the device you get. Both have the same USB-IDs.

I happen to have that exact same adapter. It can provide FullHD, but only at 30 fps. At 720p it manages 60 fps fine.
No, really, it can't. Feed it a checkerboard input and you'll get gray on the way out. It's horizontally processed at a lower resolution internally. Might be 960x1080 at 30FPS, and it can't do it at 60FPS at all. Yes, you're going to get 1920x1080 JPEG bitstreams out the USB end, but it's not actually 1920x1080.

I suspect this happens because it doesn't actually have enough internal RAM to buffer a full 1080p frame (this chip uses on-die RAM, so probably SRAM since they wouldn't go for a fancy EDRAM process, and SRAM is expensive by capacity).

Agreed, likely an internal resolution of 1280x1080. You can check out the checkerboards on my blog post here, which also analyzes the chroma sub sampling and post sharpening.

https://www.naut.ca/blog/2020/07/09/cheap-hdmi-capture-card-...

Nice review, thank you!
Yes, really, it can, because a checkerboard test along with other fine detail tests and frame rate tests was what I put the device through to make sure I really received what I needed. It correctly manages exactly what I stated: 1080p at 30 fps, 720p at 60 fps. It's a let-down since the specs claimed otherwise, but that's what it can do.
Then the two of you are clearly not discussing the same hardware.
That's the joy of buying at the low end. You never know what you're going to get!
I know mine has a MacroSilicon chip in it as well, but that's just part of the story.
I have 2 devices, one has 1280x1080, the other 1920x1080. Can't really be differentiated from the outside. The one has a silver casing, the other a black one.
Has someone done this sort of analysis" on YouTube? Anecdotal: Even though it claims it's giving me the 1080p resolution, everything still seems blurry. The only time I get actual crisp visuals is when I watch a 4k stream and "down scale" it to 1080p. I feel like they're pulling a fast one on us.
You're talking about a different thing, compression bitrate and artifact.

Take a 4k video, encode it into 320p, then encode that into 1080p. For the matter of what they are discussing, your video file will be true 1080p. For the matter of what you are discussing, that video will be horribly blurry and full of artifacts.

A nice side effect is you can feed to 1920x1200 and it will do the same downscaling.