Rooh Afza from Hamdard Pakistan

Review of the perfect thirst-quelching summer drink

Rooh Afza is a proprietary sharbath that tastes somewhat like pan. It was started way back in 1906 in per-Independence India by a Unani practitioner. After partition, the family split. Now, Hamdard India and Hamdard Pakistan continue to producing the trademark red-coloured concentrated squash. I have seen its ads in my DoorDarshan days but not in the cable/dish era (when I had a remote).

One day, some years ago, I found it in a store and decided to try it. Wah! Wah! It tasted like Pan Pasand candy. After moving to Kerala, I could not find it in stores … until recently.

Photo of Rooh Afza bottle

This bottle was made by Hamdard Pakistan. There have been reports in the press about non-availability of the drink from Hamdard India. I think it is being exported to Gulf countries without permission of the Indian manufacturer. Now, the only way to get a bottle is from the Pakistan branch via Dubai. Anyway, this is the only product I have from Pakistan. It is empty now. Summer is not over yet. The heat wave continues.

Youtube

Youtube

Link: | Magic Link:

Comments are not enabled yet.

Maicching Machiko — Maison Ikkoku — Annasan no Omame

Reviews of three Japanese TV shows

In the animation episodes of Ninja Hattori produced in the 80s, you may have noted occasional flashing of the derière. It was pixelated in India but not in Japan. There, this sort of thing is commonplace so I was not surprised by topless nudity in Maicching Machiko. However, I was sufficiently tormented by guilt that I decided to punish myself by watching a romantic comedy anime named Maison Ikkoku. To recover from the deleterious effects of Maison Ikkoku, I watched with Annasan no Omame.

Maicching Machiko

Animation from Maicching Machiko

This cartoon is from the 80s where it appeared as a manga first and later as an anime. Miss Machiko is a well-endowed teacher who has a propensity for wardrobe malfunction. She is the target of perverted pranks by several of her male students. She does try to thwart their plans but invariably gives up saying, Maicchingu or ’I am embarrassed‘.

I stopped watching The Simpsons because of the frequent nudity and woke stupidity almost as soon as I started binge-watching the episodes. In Machiko, full-body nudity is part of the opening and closing themes and sometimes in the middle. Somehow, it is all comical. In the Simpsons, it was revolting.

Miss Machiko has been made into several movies. I have two of them. Only one has subtitles but they do not seem to be as funny as the anime version. I am yet to see them.

There are nearly a hundred episodes of Miss Machiko. I suggest watching a dozen episodes of Machiko before watching Maison Ikkoku.

Maison Ikkoku

Still image from _Maison Ikkoku_

This cartoon is also from the 80s. It is about a young widow named Kyoko and her love tryst with a student (one year younger) named Godai. Kyoko is the manager of a rental mansion where Godai is staying with a few mischievous and meddling characters. The love pair are lovesick but have not dared to talk about their feelings yet. It looks as if they may not until the last episode. Godai does try to get handsy with Kyoko on occasion but fate intervenes all the time. This anime is not so innocent after all.

Why am I forcing myself to see this stuff? Well, it is a perfect antidote for Miss Machiko. The opening and closing sequences have great music. It is funny … somewhat. I think I have exhausted all good TV programmes from Japan. I tried to see Kambocha Wine but only some initial episodes had subtitles. This Maison story seems to be somewhat similar to the Eru story. There are seventy-five episodes in all.

For every, dozen episodes of Miss Machiko, I suggest watching seven episodes of Maison Ikkoku subsequently.

Annasan no Omame

This is a TV drama from the twenty-zeros. It parodies all TV programmes that fall under the romantic genre. That is including Maison Ikkoku.

Anna is not the lead in the TV serial. It is Riri, the most misunderstanding woman in the world. She believes she is very attractive (she is but that is not the point) and that all men around are charmed by her good looks. She drives them crazy by saying she is not interested in them and they should focus their attention on somebody else. When they protest that it is a misunderstanding, she becomes more convinced about her conquest of their hearts. It drives them even more crazy.

Just like in Maison Ikkoku, most of the dialogue is vocalized account of the inner conflict and consequent turmoil. If you are not exposed to romantic TV yarns, you may not be able to appreciate how painstakingly accurate the director has parodied every silly hackneyed romantic situation out there.

I suggest one episode of Annasan no Omame after seven episodes of Maison Ikkoku.

Still image from Annasan no Omame


Age rating: 18+

Link: | Magic Link:

Comments are not enabled yet.

How to build FFmpeg 7 from source and what you can do with its new features

New filters, more threads, loopback decoders

Last week, a new version of FFmpeg — version 7.0 — was released. In this article, I shall limit myself to changes in the FFmpeg command-line tools (CLI), not the FFmpeg library. However, of note among the new set of coders, decoders, muxers, demuxers and filters is a native decoder for the H266 codec (VVC — Versatile Video Coding). The new version also supports Immersive Audio, which is an immersive sound or 3D sound alternative to Dolby Atmos. (Immersive sound has support for any number of channels, particularly height channels in addition to surround channels.)

What is new in FFmpeg v7.0 CLI

Users of the FFmpeg command-line tools (ffmpeg, ffprobe and ffplay) would be interested in:

  • Multi-threaded conversion: FFmpeg will perform muxing, demuxing, encoding, decoding and filtering on different threads. You will find improved performance only when there are multiple input sources and/or output destinations. If you are converting a single file from one format to another file with a different format, the ffmpeg command will not leverage this new ability.
  • Loopback decoders: The processed pre-muxing output streams can be fed back as input to a filter.
  • New filters: Among the new filters, there is one which can place a dynamically generated QR code over a video.
  • Removal of deprecated API: Options such as -map_channel have been removed. See my previous article (on FFmpeg v6.0) on alternatives.

Compile FFmpeg 7 from source

Like last time, I followed the compilation steps given in the official FFmpeg wiki for the external libraries but when it was time to compile FFmpeg CLI, I took a slight detour.

If you blindly follow the wiki, you will not get access to new features such as the QR code filter. So, I studied the configure file in the ffmpeg_source directory and made appropriate changes to the configure statement from the wiki. I enabled whatever external library that was not automatically detected but could be manually compiled or installed. (That is, in another terminal window, I manually compiled and/or installed these external libraries using the package manager of my Linux distro.)

I compiled my custom ffmpeg build thusly:

# Download the source
cd ~/ffmpeg_sources && \
wget -O ffmpeg-snapshot.tar.bz2 https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 && \
tar xjvf ffmpeg-snapshot.tar.bz2 && \
cd ffmpeg

# Backup the file containing the git label
cp VERSION VERSION.bak

# Suffix the current date and release version number to the label
echo -e "$(cat VERSION.bak) [$(date +%Y-%m-%d)] [$(cat RELEASE)] " > VERSION

# Configure build with support for additional libraries
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure   --prefix="$HOME/ffmpeg_build"   --pkg-config-flags="--static"   --extra-cflags="-I$HOME/ffmpeg_build/include"   --extra-ldflags="-L$HOME/ffmpeg_build/lib"   --extra-libs="-lpthread -lm"   --ld="g++"   --bindir="$HOME/bin"  \
  --enable-gpl --enable-version3 --enable-static --enable-nonfree \
  --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-chromaprint --enable-libdav1d --enable-libfdk-aac --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-frei0r --enable-libgme --enable-libharfbuzz --enable-libjxl --enable-liblensfun --enable-libmp3lame --enable-libopencore-amrwb --enable-opengl --enable-libopus  --enable-libopenjpeg --enable-libopenmpt --enable-libsvtav1  --enable-libsmbclient --enable-libtheora --enable-libxvid  --enable-libsnappy --enable-libmysofa --enable-libopencore-amrnb --enable-libmodplug --enable-libpulse --enable-libqrencode --enable-librtmp --enable-libshine --enable-librubberband --enable-libshine --enable-libsoxr --enable-libsnappy --enable-libspeex --enable-libtheora --enable-libtorch --enable-libtls --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libv4l2 --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzvbi --enable-gcrypt --enable-gmp --enable-gnutls --enable-ladspa --enable-mediacodec --enable-mediafoundation --enable-openal --enable-opencl --enable-pocketsphinx

# Compile the source code
PATH="$HOME/bin:$PATH" make

# Build the binaries
make install && hash -r

The CLI tools will be copied to your $HOME/bin directory. Usually, this directory will be included in PATH environment variable and you will be able to use ffmpeg, ffprobe and ffplay executables right away. The documentation files though will require manual copying to system directories.

Unlike last time (with version 6), someone had mercifully updated the RELEASE git file with the correct version number so there was no need to manually edit it.

Thus, the output of ffmpeg command with the -version option is more informative in my custom build.

Screenshot of FFmpeg version number

qrencode filter

Using the qrencode filter, you can dynamically generate QR codes anywhere on your video. No need to mess with QR code image input files and overlay filters. This new filter does both — creating the QR code and overlaying it on the video — in memory.

ffplay -vf "qrencode=q=120:text=www.vsubhash.in:x=W-Q-20:y=20:Q=q+10" \
       NamibiaCam-Ostrich-Party.mp4

Screenshot of QR code on video

If you want to show multiple QR codes at different moments in the video, just daisy-chain the filters with different timeline filter option values. Also, remember to pad the QR code or use a contrasting background colour than the video (check documentation for additional filter options) so as to prevent QR scanner apps from getting confused.

There is also a new qrencodesrc source filter. As it does not seem to have a duration option, you will have to find other means to trim it.

ffplay -f lavfi -i "qrencodesrc=text=WWW.VSubhash.IN:q=200,trim=end=5"

You can use this filter if timeline editing is not your thing but overlay is.

tiltandshift filter

This filter has been described as taking inspiration from tilt-and-shift photography. It prefers videos with a static background on which small changes can be sped up.

ffplay -vf "split[v1][v2];
            [v2]tiltandshift[ts];
            [v1][ts]vstack" \
       Puerto-Sotogrande.mp4

Animation showing webcam live feed of a sea port

Incidentally, this animation was also created using FFmpeg. FFmpeg seems like a one-stop multimedia shop! These days, I create all my videos using FFmpeg. Some of these FFmpeg commands may be as long as the Illiad but no matter how many edits, FFmpeg gets invoked only once. It is that powerful!

Loopback decoders

With the new -dec option, you can use a pre-muxer (or post-encoder) stream and use it as an input stream for a filter.

Suppose that you want to compare the video quality for two different encoder settings. How would you do it?

ffmpeg -i The-Stupids-Trailer.mp4 \
       -map 0:v:0 -c:v libx264 -crf 31 -preset medium -f null -t 20 - -dec 0:0 \
       -map 0:v:0 -c:v libx264 -crf 31 -preset ultrafast -f null -t 20 - -dec 1:0 \
       -filter_complex '[dec:0][dec:1]hstack[v]' \
       -map '[v]' -c:v ffv1 -y loopback-decoder-test.mkv

Do remember that the ffv1 encoder is a lossless one. If you do not limit the time (like I have done, down to 20 seconds), your disk may run out free space.

Screenshot of loopback decoder

Deprecated, removed and new options

Options that were deprecated in version 5.1 such as -map_channel have been removed in version 7. However, most Linux distros will take quite a while to update to this new version. Kodi came out with a new version recently (after FFmpeg version 7 was released) but it has only updated to FFmpeg version 6. In my book Quick Start Guide to FFmpeg and my FFmpeg version 6 release post, I have provided new alternatives to the -map_channel command. As I had always built FFmpeg from the latest git source, my binaries (the FFmpeg executables) were newer than the then release version. However, the loopback decoders in version 7 are totally new to me. Refer the HTML documentation generated by the build process (compilation) detailed above.


Become an FFmpeg PRO by reading my book Quick Start Guide to FFmpeg.

Book photo


Link: | Magic Link:

Comments are not enabled yet.

For older posts, check the archives.