Skip Navigation
Time to hit the gym
  • 108cm is squarely within the range of dwarfism so, as a minority, I wouldn't be surprised if the data the user is searching for is scarce or missing altogether.

    Hence the result pictured.

    That said, the person searching this could have just made a typo for 180cm, which is much more common.

    Why am I analysing the meme? Who knows.

  • Handbrake custom LapSharp values

    This is a short how-to on how to set custom values for LapSharp sharpening in Handbrake.

    Not sure if this is the right place to post this. I would have historically posted it to a dedicated sub-reddit on Reddit, but I can't stand the owners of that website nowadays.

    This is all original work, but I may myself repost this as a blog post at some point to try to improve reach if this gets burried.

    Why?

    I like Handbrake's LapSharp sharpening, but I found I wanted something in between the Stronger and Very Strong presets, which have a big jump between them, for a movie I was encoding. Therefore, I was trying to find out how to use the "Custom" value in the drop-down to get something in between the two.

    I am not an expert in video encoding nor a command line wizard, so I prefer to use Handbrake over FFMPEG for most encoding tasks.

    Finding out how

    A general search around the internet, a skim through the documentation and questions to the prominent AI tools of today gave me no (or incorrect) answers on how to set these values.

    It was only with some extra digging through the handbrake forums that I found people posting their logs for an unrelated problems that I noticed that Handbrake logs the following when you encode with LapSharp:

    [09:01:35] * video track [09:01:35] + decoder: h264 8-bit (yuv420p) [09:01:35] + filters [09:01:35] + Framerate Shaper (mode=0) [09:01:35] + frame rate: same as source (around 23.976 fps) [09:01:35] + Crop and Scale (width=1920:height=1040:crop-top=20:crop-bottom=20:crop-left=0:crop-right=0) [09:01:35] + source: 1920 * 1080, crop (20/20/0/0): 1920 * 1040, scale: 1920 * 1040 [09:01:35] + Sharpen (lapsharp) (y-strength=1.1:y-kernel=isolog:cb-strength=0.55:cb-kernel=isolog)

    Sure enough, pasting this string into the Custom textbox when the Custom preset is selected gave me equivalent results to the Very Strong preset.

    Looking through the source code of Handbrake, I found the function that converts presets to values. It's written in C, which is not my forte, but we can see a bunch of if statements that pick values based on the Preset (Ultra-light, Light, Medium etc.) and the Tune (None, Film, Grain etc.). Comparing with my log, we can determine that In the code strength[0] is y-strength and strength[1] is cb-strength. Kernel is picked purely based on Tune value, and seems to always match between y-kernal and cb-kernal.

    c else if (!strcasecmp(preset, "stronger")) { strength[0] = 0.5; strength[1] = 0.25; } else if (!strcasecmp(preset, "verystrong")) { strength[0] = 1.1; strength[1] = 0.55; }

    Here's a chart of values for Grain Tune:

    !Chart of parameter values at different presets

    Ok, but how do I use it?

    If you want to go between Presets values, simply interpolate (pick values between) two presets. For example, with Grain Tune, We can see from the code that

    Stronger is y-strength=0.5:y-kernel=isolog:cb-strength=0.25:cb-kernel=isolog

    Very strong is y-strength=1.1:y-kernel=isolog:cb-strength=0.55:cb-kernel=isolog

    So, the mid-point between the two is y-strength=0.8:y-kernel=isolog:cb-strength=0.4:cb-kernel=isolog

    Then, simply copy-paste this into your Custom textbox:

    !Value pasted into Custom textbox in Handbrake UI

    Conclusion

    The approach above seems to work for me in the few cases where I need a bit more control than the presets afford. I recommend playing around a bit with the values yourselves and letting me know how you get on!

    0
    Twilio kills off Authy for desktop, forcibly logs out all users
  • This prompted me to move away from Authy, and looking it up, it doesn't allow you to export your TOTP tokens. There were some workarounds but then have been plugged, I tried.

    Mostly switched over to Bitwarden's equivalent. I've been using their password manager for many many years now and am very happy with it. They have an export feature in a few different formats.

  • Switching to OCaml bois
  • Of course, but OOP is typically about putting methods on classes, inheritance of behaviour etc.

    JS Objects aren't typically used that way, they tend to be used as pure data containers. At least, that's how we mostly use them.

    Occasionally, we'll use objects to simplify passing multiple arguments including arrow functions, but I'd say that doesn't really count unless the arrow function mutates the object it's a part of.

  • Breezy Weather: An open-source, privacy-friendly Android weather app forked from the now-unmaintained Geometric Weather
  • I'd been using Geometric Weather for many years, and I noticed a few weeks ago that it was misbehaving, not fetching data sometimes. I didn't realise it had not had an update for almost 3 years!

    I had switched to Google's weather app, but maybe I'll switch to this instead. Thanks for the heads-up.

  • InitialsDiceBearhttps://github.com/dicebear/dicebearhttps://creativecommons.org/publicdomain/zero/1.0/„Initials” (https://github.com/dicebear/dicebear) by „DiceBear”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)AR
    Armand1 @lemmy.world
    Posts 2
    Comments 64