8 ms·
Video compression is not understood well enough throughout the whole stack yet. I recently got a 1080p projector for home use, so now movies / TV series in my
by barrkel 9y ago
Video compression is not understood well enough throughout the whole stack yet.
I recently got a 1080p projector for home use, so now movies / TV series in my home are viewed on a 100" screen. Content is mostly from Netflix and Amazon Prime Video.
Netflix does a really good job with encoding. I cannot say the same for Amazon Prime Video; even with their exclusive (in UK) offerings, like American Gods or Mr Robot, the quality of the encode is quite poor when viewed on a big screen. Banding, shimmering blocky artifacts on subtle gradients, insufficient bit budget for dimly lit scenes - once you become aware of the issues, it becomes really distracting.
OTOH a really big screen is a fantastic ad for high quality high bitrate content. Anything less than 2GB/hour is noticeably poor.
- branchless 9y agoCould you share a link to the projector you bought? And what do you project it onto?
- jrimbault 9y agoA nice comparison I often do: I take a plain black image full #000, and put it side by side with a video.
- jsmthrowaway 9y agoKeep in mind that for historical reasons related to the way analog TVs used to work, black in video is almost never "#000". We call that setup, or superblack. In the analog days NTSC black was 7.5 IRE, not 0, which is why you could always tell when a television was turned on even with nothing on the screen. More than one digital standard kept this custom, setting black at (roughly, in your terms) "#111". So if you're seeing encoding artifacts or grayness on black video, that's more a legacy of video itself and not the encoding work done by whoever made the media. Say I sit down at a switcher and push the Black button. You'd think nothing would come out, right? Not quite: that switcher will almost always emit broadcast black, not "null," whether it's analog or digital. Sure, you can probably get Photoshop to spit out 0% then encode in some codec that lets you keep 0% and successfully display it on a modern digital television, but the more equipment and encodes you add to a video production the more likely the signal will be pulled up to broadcast black, so it's better to just think of that as black. There's a similar exercise with white on the upper end. Remember when analog TVs would buzz when you wired up your computer and put RGB white on the screen? That's superwhite.
- Buge 9y agoWell you should still be outputting full contrast. If it's not displaying black as fully black on your screen, there's a problem somewhere, probably in your playback software. In MPC there's an option Render Settings > Output Range > 0-255 or 16-235. When set to 0-255 (default) my videos play with full black.
- jsmthrowaway 9y agoThat setting sounds like it's for clamping your output to drive analog televisions in case your media has supercolors in it, given its default. I mean, putting a lens cap on a camera will record 16, and a white title on black in most editors will use 235 white on 16 black. I'm not sure what you think that setting is doing in that circumstance, when playing "typical" media. It definitely shouldn't be scaling, because that would distort intended color.
- sbierwagen 9y agoA unique pleasure of HN is watching programmers try to argue with domain experts on the topic of their domain expertise.
- brigade 9y agoDomain experts sometimes don't realize when their knowledge is out of date. To wit: HDMI does allow for 0-255 (or 1023, etc) "full range" quantization instead of the default "limited range" of 16-235 for most CEA-861 formats, if the sink's EDID allows a selectable YCC quantization range and the source sends AVI YQ=1. Or even getting to the "plain black image full #000" remark that prompted this thread, images are basically always full range where black is 0 and there is no "superblack" concept. If it's being transmitted over HDMI, it's up to the GPU to do range conversion and RGB/YCbCr conversion as necessary, and up to the OS to do ICC colorspace conversion as necessary.
- jsmthrowaway 9y ago
- izacus 9y agoDepends on the content - HDR 4K content on both Netflix and Amazon is encoded in horribly low bitrate - about 12-15Mbit/s which makes it barely look any better than 1080p content (for comparison - 4K BluRay discs are about 60-100Mbit/s and look infinitely better).
- baddox 9y agoReally? I find that their 4K content looks a lot better than their 1080p content, not necessarily because of resolution but because of H.265.
- izacus 9y agoIt looks better, but it's not even remotely close to how BR looks (and how 4K actually should look when bringing full resolution to the table) - even with H.265/VP9 it's quite bit starved at that bitrate.
- user5994461 9y agoThis is probably not an accident. A good broadband connection is limited to a sustained rate around 13-18 Mbps.
- rasz 9y agoin US maybe, Im getting my advertised Mbps 24/7 as long as the source is able to keep up.
- brigade 9y agoSo maybe a more useful comment than video-range/full-range pedantry over historical brokenness: Banding (which I think is the root cause of all your complaints) is effectively due to overly coarse quantization. This is amplified in H.264 (which Netflix and Amazon generally use) since the signal has multiple 8bit -> 10+bit -> 8bit trips, with each 8bit reduction contributing additional errors that can effectively result in small changes between blocks in the input signal amplified into noticeable differences in the output. And it's more noticeable in low-light scenes since current standards' gamma transfer functions compress a bit too much on the lower end (maybe my personal opinion there...) The easiest solution is to have more discrete steps at each intermediate point. But for that to really help you'd need to change codecs from 8-bit H.264, which means not being playable on many devices. I mean, you could get 15% finer quantization with full-range 0-255 over video-range 16-235, but that doesn't help that much; you really need the 4x that 10bit gives you to be noticeable. The second easiest solution is to have a debanding postfilter. But between the wide variety of platforms Netflix/Amazon have to run on, and modern DRM requirements, that's also not really an option. So ultimately, you're left with developing prefilters to try to shape where bits are needed for given scenes, and careful tuning of your encoder. Which Netflix (presumably) has a several year head start over Amazon on.