Hardware Video Acceleration for YouTube on Chrome for PC

Capture

Google Chrome is one of my favorite browsers, but there are some tweaks particularly with YouTube video decoding which are worth looking for most users out there who are not using one of the newest Intel or Nvidia GPUs.

Revert to H264 from VP8/VP9

The easy fix is to install the open-source h264ify on the Chrome web store

Then if you check ‘Stats for nerds’ by right-click on a YouTube video, you can see that the mime type says ‘avc’ right after where it says ‘codec’. You are all done then! Watch your CPU temperatures drop!

After

The most common way for video decoding support to be broken is the fact that YouTube switched to WebM video formats VP8 and VP9 in their video browsers when using the HTML5 player. This video format is NOT supported for hardware decoding for some hardware configuration today, including all AMD graphic devices.

It’s great for Google to flout that the VP9 codec has been pushed to millions of consumers, but this comes at the cost of higher power consumption and lower performance compared to the universally hardware accelerated video format of H264 for hardware dating back 2008 (Intel GL40).

Video Card Blacklists

There’s may also be patches in Google Chrome to prevent hardware video decoding for Intel depending on the video driver installed, which blocks older Intel GPUs by default. This can be verified by going to ‘chrome://gpu/’ to see if ‘video decode’ has ‘hardware accelerated’ next to it.

This can be forced on with setting the ‘#ignore-gpu-blacklist’ in chrome://flags/, but you do run the risk of running into other rendering issues. My Lenovo Thinkpad X200 (Intel GMA4500MHD) drops video frames for all 720p 60fps YouTube videos to the point that the video becomes completely unwatchable, even with hardware acceleration turned on.

The way to check if your video-card supports VP8/VP9 video decoding is via DXVAChecker

TV Specifications 2015 Year-End Review

Video

The above shows the compression ratios for current and upcoming generations of TVs. For this current holiday season, UHD-1 TV sets (4k resolution at 60 fps) have premium pricing. We also have a slew of 4k devices only capable of 30 fps, which may be worse than 1080p devices capable of 60 fps, in my opinion.

  • Resolution – 4k resolution (3840×2160) has more dots per surface area, and can display more at a time
  • Framerate – 60 fps (frames per second) is considered the optimal rate for gamers because it represents smoother game play and eliminates noticeable frame judder. The same applies for TVs. Above 60 fps is considered to be good for action but not strictly necessary.
  • Color – technologies for HDR (high dynamic range), 10-bit/12-bit color depth, 4:4:4/4:2:2/4:2:0 color subsampling (bigger the better)
  • Connectivity – HDMI 2.0+ or DisplayPort 1.2+ connections are mandatory to guarantee sufficient bandwidth deliver the video signal. TVs do not typically come with DisplayPort connector.
  • Bitrate – Measured in megabits per second, this is only really a concern for streaming content over the Internet for most folks out there with some sort of data usage cap. Most connections can achieve the sustained download speeds required by UHD content. However, to sustain 10 Mbps stream over a hour typical of 1080p, it consumes over 4 gigabytes an hour.
  • Smart – usually means the TV can either playback files or connect to the Internet. However, smart TVs get outdated fast, as manufacturers typically are not good at updating the devices, and the software outpaces the TV sets by a large margin. TVs can last 5 years or more, but software tends to be obsolete in less than half that time
  • Content protection – you need HDCP 2.2+ for some newer content for copy-protection of UVD content, but that is only if you wish to buy a Bluray player that requires this.
  • Codec – there is some confusion here as well, because HEVC uptake has been rather slow, with branding causing even more confusion. As with previous video standards, hardware support for processing video efficient has been mixed.HEVC is also referred to as H265. The previous video codec which has been popularized was H264, specifically 8-bit. Hi10P is a specific profile of H264 which allows for a 10 bit color space for more accurate color representation, but there is very limited hardware level encoding or decoding support for Hi10P, particularly on PCs.
    • HEVC PC codec support as of 2015 – only Nvidia Maxwell 2nd generation cards support HEVC decoding in hardware up to 10 bit color space for UVD-1 compatibility, and Intel has partial support which is of limited use. AMD doesn’t support HEVC at all
    • HEVC streaming box support as of 2015 – for the Apple/Amazon/Google TV solutions, this is limited as well, even on the 1080p front. Do your research…

I am not very compelled at all by newer TV features past 1080p at this point. There just isn’t much consumable media available at a high resolutions of 4k, nor am I willing to spend extra to pay for the added quality in the color data. There’s a good chance that you need to invest in new playback hardware as well. I’m happy to stick with 720p content for a long while to come.

The exception is that higher video quality is nice to have for photography and videography. Smartphones technologies have been leading in this direction, but you would need a high resolution display and a compatible player to take advantage. This doesn’t bode well for TV manufacturers going forward for typical consumers with so much confusion in being able to understand the technology

Future

Reference:

 

LinkedIn – Beyond the ‘All-Star’ Profile

AllStar

Sharing a few outstanding tips after a recent learning session on LinkedIn, beyond getting your profile strength to ‘All-Star’ and actually making it count:

  1. Differentiate the headline beyond a job title
  2. Notify your contacts trigger to ‘No’ when making many changes to the profile until you need to let others know
  3. Customize all communications to others as much as possible: connections, messages, recommendations
  4. Thank people for connecting with you
  5. Summary section has a 2000 character limit, which would be effectively used and put key strengths and career highlights. Sample structure as follows:
    • credibility – past experience
    • story – with why you do what you do
    • value proposition – where you make a difference
    • call to action – do you want to be contacted?
    • success – list of accomplishments

Missing Pen/Stylus Cursor in Windows

Capture

After upgrading one of a Wacom active stylus based HP 2710P to Windows 10, the pen/stylus cursor disappeared.

This issue is corrected with setting the following Windows registry entry (regedit): HKEY_CURRENT_USER\Control Panel\Cursors\PenVisualization, as a DWORD type with a hex value of 23, as shown below.

Screenshot

(Stylus illustration from https://msdn.microsoft.com/en-us/library/ms702418(v=vs.85).aspx)

Trying the ELK Stack Locally on Ubuntu 14.04

Trying the ELK (ElasticSearch, LogStash, Kibana) stack locally on my laptop, I took some notes while following the excellent instructions and scripts provided by DIgitalOcean: https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu-14-04

This was for a local install not exposed to the web on a 32-bit install of Ubuntu 14.04. Here is my steps were different than those provided by DigitalOcean:

  1. Java OpenJDK 7 works fine (openjdk-7-jre), so I did not install Java 8
  2. Kibana
    1. Use the 32-bit package if needed, the tutorial uses the 64-bit package.
    2. There’s no need to modify the ‘kibana.yml’ configuration file for a local install.
    3. Kibana process log files are located in /var/log/kibana/
  3. Nginx for a reverse proxy – skip this for local install
  4. All sections, skip the update-rc.d commands if you do not want the services to run at boot on your machine

What Does it Mean to Have Experience Working Globally – Knowing the Time

Screenshot_2015-11-13-22-15-44

When it comes to what the value of having global experience really means, this is my breakdown of what this actually means. After working in my first enterprise job, I realized this isn’t something that is typically taught or trained on.

Clocks Point to Different Times

The most fundamental aspect of global awareness is: their time is different than yours

The 3 most important times of the day for anyone working a day-job are, in order of significance:

  1. The time people are allowed to leave the office
  2. Lunch time
  3. The time people get into the office

There has to be a time awareness when sending emails, booking meeting, or initiating chats with people. When they do not pick up the phone, you want to make sure you are not going to wake them up at 3 AM in the dead middle of the night. With ‘bring your own device’ enterprise culture in full swing, you might not only be waking them up, but their entire family once you dial that number.

Generally, avoid engaging people towards the end of their workday and also during their lunch time. It gets easy to forget the importance of this when their clocks are different than yours.

Daylight Savings Make it Complicated

Having lived in Toronto for most of my life, I knew that the clocks move twice a year. What I didn’t know was that daylight savings in different time-zones actually occur on different dates. Compounded with the fact that the day on which daylight savings changes every year, this is cause for a lot of confusion becoming even more critical to know during professional settings and for software application operations.

The best source to look up when a daylight savings time is going to occur is probably Wikipedia: https://en.wikipedia.org/wiki/Daylight_saving_time_by_country

Otherwise you also want to be using a time-zone converter like this very good one: http://www.timeanddate.com/worldclock/converter.html

This was most evident with my work in the financial sector dealing with Asian, European, and North American exchange timings. I actually didn’t realize the United Kingdom also changes their clocks due to daylight savings between BST and GMT. This resulted in 4 separate days which we had to be on alert for when the clocks would move.

Time-zone Conventions for North Americans

I’m never going to bother to memorize this, but basically there’s this:

  • EDT = Eastern daylight time for sunny days
  • EST = Eastern standard time for everything else
  • EDT is ahead of EST by 1 hour

I’ve found that people never ever learn the difference between EDT and EST even with years of experience. This is also why I always tend to just use ET (Eastern time) instead, to keep consistent. The convention can apply for Pacific Time as well (PT/PDT/PST). It’s just too easy to screw up.

If you are not from North America, I’m sorry I don’t have any tips for you.

Port Configuration for ElasticSearch in Docker

The current Docker hub image for ElasticSearch for version 2 is configured to only listen to loopback devices by default, ignoring non-loopback devices. This makes it difficult to use the container for development.

If your Docker VM is running on 192.168.99.100, with port-forwarding set to port 3278 (use ‘docker inspect’ to verify this), when checking for connectivity from outside of the container, you will end up with the following:

curl: (7) Failed to connect to 192.168.99.100 port 3278: Connection refused

One workaround is to force ElasticSearch to mount to non-loopback devices:
network.host: _non_loopback_

A configuration file for the container is expected to be created and named elasticsearch.yml, located at /usr/share/elasticsearch/config

Either a bind-mount location for the configuration file (docker run -d -v), or add a configuration elasticsearch.yml file directly into the filesystem.

For example, to write to the filesystem from the container’s command shell:
echo 'network.host: _non_loopback_' > /usr/share/elasticsearch/config/elasticsearch.yml

Restart service or container and it will take effect.

References:
https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-network.html
https://hub.docker.com/r/library/elasticsearch/