“What is Hi10P?” — An infoguide (v3.9.0)
NOTICE: Before you continue, please take note the author of this guide has stopped updating it. CLICK THE LOGO ABOVE OR CLICK HERE FOR THE ‘UPDATED’ VERSION – 06/02/2012
Basically, Hi10P is just an H.264 profile which uses 10 bits of information to represent color — doing this for some reason means we can get less banding (if you don’t know what that is, just know that it’s a Bad Thing) and a smaller file size. I won’t go into any further detail here but it’s basically a huge improvement. This guide is intended to help people find ideal media player solutions to play back Hi10P content — and Anime in general — and will be updated constantly as new information gets released or existing products change.
How to play back Hi10P content:
There are a number of different methods available to achieve (smooth) Hi10P playback:
- Download the SMplayer standalone, or just use mplayer2 from the CLI
- Grab the latest CCCP and use the player that comes with it (CCCP will dither everything down to 8 bit before rendering. You might also run into performance issues on slower hardware)
- Use MPC-HC together with madVR and LAV (jump to guide) (maximum quality but needs a bit of configuration + tweaking)
- Download the latest unstable build of VLC Media Player (you really shouldn’t be using VLC) and install it
- If you’re having trouble playing Hi10P due to performance reasons, CoreAVC 3 is now out, but it still has some issues. Oh, and apparently worse performance than ffdshow. Never mind this, don’t install CoreAVC except for 8-bit software decoding (oh, LAV Video has faster CUDA decoding as well for 8-bit)
Mplayer2 (and SMplayer by extension) will be fine for most users, especially those who want something that just works out of the box. For the maximum playback quality however, you’ll need to use MPC-HC + madVR as shown below.
How NOT to play back Hi10P content:
- CoreAVC in CUDA mode, DXVA, LAV CUVID as well as the stable versions of VLC and ffdshow do not support Hi10P at the time of writing, because no graphics cards support 10-bit decoding
- The SVN build of ffdshow-tryouts now supports Hi10P
- Note: Using VSFilter (aka DirectVobSub) with Hi10P requires dithering material down to 8-bit first, which can introduce some quantization inaccuracies later on and also uses incorrect levels due to a bug in swscale (when using CCCP/ffdshow or LAV to dither)
Pros of Hi10P:
- Significantly higher compression ratios resulting in vastly decreased file sizes. The first rounds of testing show a 20-40% improvement on file sizes
- Far more information is preserved from the original, removing such issues as banding and poor detail in dark scenes
- The encoder will have less things to worry about
- Slower decoding and encoding
- No support for DXVA or CUDA as of writing
- Slight compatibility issues when using obscure, obsolete devices like the PS3 to play back movies — but who does that, really?
Motivation behind switching:
All technology is designed to move into the future. It was the same way with DVDs, the same way with Blu-ray discs, the same way with DivX and it’s the same with Hi10P. Newer decoders are much faster even with Hi10P content than decoders were in 8-bit mode a year ago, so that alone gives us the power needed to back it.
How to encode in Hi10P:
Assuming you already know how to encode, grab the relevant “10bit depth” build of x264. On Linux, just run “./configure –bit-depth=10” before compiling.
Make sure you either tag your releases with “Hi10P” or mention it somewhere in the description. Feel free to link back to this guide in the post/readme, to help people set up a working media player before they go whine in your comments section.
Examples of Hi10P content:
Misconceptions about Hi10P and 10-bit output:
Having a 10-bit (aka 30-bit / DeepColor) display is NOT needed to see the benefits of Hi10P – 10-bit content, even when dithered down to 8 bit, is still significantly higher quality than 8 bit content, and the file sizes speak for themselves.
However, should you be one of the 0.01% of people with a 10-bit (or higher) display, you’ll need something like an AMD FirePro card, because even though the hardware is literally exactly the same, you can not for some reason just use the FirePro drivers and enable 10-bit output. It’s quite impossible, I’m sure of it. You’ll also need to use EVR CP because madVR doesn’t support 10 bit output yet for whatever reason I can’t fathom, but if you can patch your FirePro drivers I assume you can set up EVR CP as well.
Setup guide for MPC-HC + madVR:
This method will result in higher image quality and performance than using CCCP (or anything ffdshow-based, really), so if you’re struggling to play back Hi10P anime, or even regular 1080p, consider trying this. MadVR and LAV are updated regularly and uses very new versions of libav for decoding as well as custom edits to make 10-bit decoding even faster, giving it much more speed than the ridiculously outdated ffdshow-tryouts project, and the even more ridiculously outdated CCCP codec pack that is based on it.
Step Zero: Prerequisites:
- Uninstall ALL instances of MPC-HC, CCCP, ffdshow, madVR, Haali, K-lite, CoreAVC etc. you might have on your system.
This is a clean guide that requires no other prerequisites to function, and ideally should have none installed either.
Step One: Downloading and Installation:
- Download and install the latest version of MPC-HC (you want the .exe version for an installer)
Note: Get the 32-bit version (called x86) ONLY! The 64-bit version is incompatible with madVR and will not function at all
- Install the LAV Filters. These are necessary for decoding video and audio. You need to select the Splitter as well if you don’t want to use Haali, otherwise you have to install Haali manually:
- Obtain and install the latest version of Haali’s Media Splitter
- Note: You can skip this step if your PC isn’t very powerful! Download the latest version of madVR and extract it anywhere you like. Run install.bat inside the folder. DO NOT DELETE THE FOLDER AFTERWARDS, madVR lives inside it and does not copy itself anywhere else. Move it somewhere sensible before installing, for example C:\Program Files\madVR.
Note: Make sure you’re logged in as an Administrator when running this! Do not right click and “run as admin”, log in as admin and run it normally!
Step Two: Configuration:
- Open up MPC-HC’s options menu. Under “Internal Filters”, disable everything. You can leave some of the ones on the left active, but make sure you’ve disabled all of the ones not selected here:
- Under Playback, enable “Auto-load subtitles”:
- Under Subtitles, make sure “Allow animation when buffering” is enabled, and “Maximum texture resolution” is set to “Desktop”:
- Under Output, choose “madVR” as renderer: Note: If you skipped madVR, or you’re experiencing lagging, frame drops or poor performance in general, set this to “EVR Custom Pres.”, “Haali Renderer” or “VMR-9 (renderless)” instead – try them in that order until you find one that works.
- Make sure the LAV Video is selected as default decoder. If in doubt, go to external filters, choose “Add Filter”, select LAV Video Decoder and switch it to “Prefer”:
- After making the above changes, restart MPC-HC and play back any file. You should notice the madVR icon in the system tray. Right click this to access the settings:
Once inside, disable the “fullscreen exclusive mode” under Rendering -> General Settings. I recommend leaving this off unless you are having playback problems, because it prevents you from taking screenshots and makes the transition to fullscreen very ugly (It also messes up MPC-HC’s interface):
Step Three: Confirmation:
- Play back a Hi10P file and use Ctrl+J to enter the OSD: (If it doesn’t show up or looks completely different, doublecheck output configuration)
- Finally, check the “Filters” list (in the right click menu of MPC-HC during playback) and confirm that LAV Video is being used:
- If you’re analpained about test cases, aspect ratios or watch anime with shitty typesetting, use a different subtitle renderer like xy-VSFilter. Be warned though, the subtitles will be very blurry as a result. I recommend waiting until it supports madVR’s overlay hooks like MPC-HC does. Alternatively, don’t use subtitles (thanks tp7 for the suggestion)
- If you see occasional blocks or screwed up, oversaturated color, but it’s otherwise completely fine, then you’re not using one of the above-mentioned software, or you’re using an outdated version that doesn’t support Hi10P playback correctly
- Remember to restart MPC-HC about every time you make a change – it only reloads filters and renderers on startup
- If you’re using MPC-HC’s internal subtitle renderer and animations don’t work properly or anything else looks wrong, enable “Allow animations when buffering” in the Subtitles menu. Note: The MPC-HC internal renderer uses the same exact rendering code as DirectVobSub, except it’s also multi-threaded. Everything that DirectVobSub can play back, MPC-HC can too! It is not bugged or lacking.
- If you don’t see subtitles after adding madVR as prefer, update your version of MPC-HC to at least build 3520 (which is still beta)! Alternatively, don’t add it as prefer and remove / de-prioritize the conflicting filters instead (example with ffdshow is shown above)
- If you still don’t see it, double check to see that you have the 32-bit version of MPC-HC and not the 64-bit version
- Creating Direct3D device failed (8876086c): Go to your output configuration and change the video renderer from madVR to something like EVR Custom Pres
- Slow performance, frame drops, lagging: See the line above
- If you’re having trouble taking screenshots, keep in mind that the best way to take screenshots from madVR is pressing PrintScreen on your keyboard, then pasting it to an external editing program like mspaint
- Should you have any remaining problems, don’t hesitate to contact the author over IRC: #coalgirls on irc.rizon.net
(Bonus/Optional) Adding ffdshow:
Adding ffdshow will allow you to use its audio decoder (for filters + a more customizable mixer), as well as using it for formats other than AVC1 (H.264), VC1 and MPEG-2. Especially for older 480p and worse content (which isn’t likely to be encoded in AVC1), you can use the ffdshow deblocking or debanding filters to attempt to improve image quality this way.
- Install the latest ffdshow-tryouts
- Open ffdshow’s settings dialog, under “DirectShow control” set the merit to normal: (To get here, just go to Start -> All Programs -> ffdshow -> Video decoder configuration)
- Double check Step Three to make sure ffdshow doesn’t touch your H.264 video
Feedback and disclaimer:
All content here is provided as-is with no actuary or implied warranties or guarantees of bodily, mental or otherworldly safety. If you don’t like the fact that every sentence is full of links, blame MediaWiki.
Guide originally inspired by Ryuumaru. All content based on nand’s original research and Google. All text and images are in public domain, except for the background video content on the OSD screenshots, which belongs to the owner of Bakemonogatari.
No credit needs to be given when copying any content in this post in whole or in part, but a link back would still be beneficial since this post is guaranteed to be updated constantly and reflects the latest developments in decoding / media playback.