Thursday, February 20, 2014

Playing Android Games in Emulator - Review #01

Emulator: Genymotion v2.1.1 powered by Oracle VirtualBox v4.3.6
Virtual Device: Galaxy S2 - 4.1.1 - API 16 - 480x800

I can't imagine any persistent (read: long running) activities performed in android device other than gaming. Lame excuse? anyway... I'll separate the review in 2 sections; the first focuses on game-play while the 2nd on the more technical side.

Game Play

Guardian Cross - installed, doesn't work.
Clash of Three Kingdoms - installed, doesn't work; more on Technical Side below.Tower of Chaos - Game designers definitely think in different wavelength / channel. I don't even know how to play the game.
Castle Clash - Hang early on. Since the beginning of the game is weird, I don't have the urge to try it for the 2nd time (weird: I was forced to watch a raid for few minutes, and I was lost; I didn't even know whether I was the attacker or the defender). In the world with abundant options, if my interest is not piqued in the 1st minute, bye bye.
Hero Dream - It's a fun RPG game. The generous gifts and item drops easily rank first in any platforms. This factor should be able to retain beginners attention for 30 minutes, raising the probability of players' attachment.
Unfortunately, it hangs very frequently, beyond my level of tolerance.
Pet Alliance - A typical monster breeding game: fight, capture, train, evolve, arena, all the usual stuffs.
The smoothest game I tried thus far.
Devil Maker: Tokyo - A typical card battle game. The concept of level ups, evolution and equipment are not unique yet nicely refined here with strong emphasis on sacrifices; to enhance a card one would be forced to sacrifice lots and lots of other cards.
By the way, it hangs frequently. I can't put the entire blame to the game though. Simply getting the virtual device to run under Genymotion is quite a challenge.
Valkyrie Crusader - Another card battle game. No login required, account binding to device hardware. Once I realized another has played this game I decided not to mess with his/her save game.

Technical Side

Memory Leak

Pet Alliance - No noticeable problem - the game runs smoothly without noticeable degradation after extended play.
Devil Maker: Tokyo - Huge memory leak. The game slows down to a crawl after playing 3-15 minutes; especially after performing actions that require lots of scrolling/swiping. As the game becomes less responsive, swiping speed must be calibrated down to match the degradation. Once the slowness becomes unbearable, simply quit and re-run the game - it should run normally. Well, at least it seems to indicate that Java's garbage collector works.
The fact that swiping speed must be calibrated down led me to believe that Genymotion plays a role in slowdown symptoms. I drew a parallel to the game Myst. When my friend 1st played it from Windows 3.1, game speed would slowdown after some time. (Re-)run-quit cycle was a necessity. Once he tried it under Windows 95, however, the game ran smoothly. My conclusion: Myst developers made a mess that overwhelms Win3.1 yet manageable by Win95.

Network Requirement

Pet Alliance - light. Works even when persistent ping to google reveals gaping connection (Request timed out.) However, when network connection is lost halfway, it can't recover.
Devil Maker: Tokyo - heavy, not sure whether it's bandwidth or latency or both (though I suspect latency is the bigger issue here).
On the up-side, it handles network disruption. After certain (attempt) window is breached, it would prompt users about network issue. This exception handling is not perfect though, there were some occasions when the loading cursor kept on spinning even when network connection has been fully restored (solid responses from persistent ping, retrieving google page was instantaneous). It seems this issue is not exclusive to emulator. Someone gives affectionate nick "loading wheel of death".
Valkyrie Crusader - Every time there is network disruption, I would be kicked to the welcome screen. Better handling than Pet Alliance, but still annoying.
Granted, this issue is application specific rather than emulator's issue. Is there a way for the emulator to simulate network disruption? This would simplify developers effort to replicate the problem.

Screen Refresh Issue

This problem should be attributed to Genymotion; though I don't know how/why this 'feature' exists.
To replicate: simply start the virtual device and keep it in the background (obscured) while working on something else. After enough time (10 minutes?), come back to emulation window. The screen would be outdated. Tapping a button would yield no visible effect. Screen refresh can be forced by either moving the emulation window or by switching to another window then switch back.
A (much) faster way to replicate: lock window (Windows-L) then re-enter.

Lack of Support for Adobe AIR

Tried Clash of Three Kingdoms and was prompted with context3D not available! Possible reason: wrong renderMode or missing device support. Search results consistently points to Adobe AIR.

Account Binding to Device Hardware

Observation on Valkyrie Crusade let me to believe this application uses device hardware (mac address?) to identify client. There was no login and I saw some mail correspondences days before I installed this game.

Fail to Start Virtual Device

I can't see any pattern that leads to this problem, but I've experienced it often enough.
I've tried to check the logs but couldn't find anything that helps. Not that I expect much; this problem is unhandled exception and Qt (that used by Genymotion) doesn't rely on exception mechanism.
I also find no reliable pattern to recover from this problem; simply that it would work eventually if I persistently tried to play it.

Abrupt Closure

Similar to above, Genymotioin may close its virtual device window unexpectedly. In both cases virtual device would still be running under Oracle VirtualBox. I would have to go to VirtualBox to force its closure.

Conclusions

For Casual Users

If you have low tolerance to abrupt hangs (and possibly quit - re-run cycles - refers to Memory Leak above), this is not for you. You may want to check bluestack, though here and here mention that Guardian Cross doesn't work (yet).

For (would be) Developers

The Ups

  • Genymotion is faster than the official emulator provided in Android SDK. Much faster when compared to the SDK that I briefly tried 2 years ago.
  • Memory leak issue above can be considered as a 'feature'; if the circumstance manages to force developers to implement proper memory management.
  • Despite its shortcomings, it's definitely cheaper than investing in actual devices.
The Downs

  • Some (most?) may argue this is the nature of pure emulation rather than a flaw: It's not the ideal environment to test an application using Device Hardware Account Binding mechanism.
  • Lack of (out of the box) support to Adobe AIR limits its usage.
  • Reliability issues (memory leak and abrupt closure)  may lead to finger pointing / denial of responsibilities. When a problem occurs, the root may lay in the application or Genymotion or Oracle VirtualBox or combination of them.

Monday, February 10, 2014

Playing Android Games Through Emulator

Hmm, suddenly got the urge to try playing android game(s) through emulator.
Currently trying 2 games: Guardian Cross and Devil Maker: Tokyo.

First try with AndroVM Although both games could be downloaded smoothly from Play Store, I couldn't play any of them.
Second try: Genymotion - the successor of AndroVM. Immediate problem: Play Store is not bundled in for Genymotion v2.0. Genymotion is currently working to address this issue, but until then...

How To

  1. Get Oracle Virtual Box v4.2 or above (at the time of writing the latest is v4.3.6). 
  2. Get Genymotion v2.0.1 - Windows has 2 versions of installer; one bundled with Virtual Box, the other without. 
    Registration is required before download is enabled.
  3. Run Genymotion, click on Add button - select your emulated/virtual device (I chose Galaxy S2 4.1.1)
    To download a virtual device, you need to login within Genymotion using your Geny account.
  4. Download necessary stuffs based on this
    In my case I got ARM Translation Installer v1.1 and Google Apps for Android 4.1
    Don't bother extracting the zip files.
  5. Click on Play button in Genymotion
  6. Drag ARM_Translation.zip and drop it into the emulator window.
  7. It should say "File transfer in progress", once it asks you to flash it click 'OK'
  8. Reboot your device (power off - directly closing emulator window is not recommended)
  9. Do the same for gapps-...-signed.zip.
  10. Try to install your game(s).
  11. Try to play your game(s).

Troubleshooting

Disclaimer: It's far for comprehensive and it won't be comprehensive - just marking the holes that I stumbled upon.

Validating Play Store Installation

  1. Try to find Netflix and Google Drive and try to install them.
Well, I managed to see Google Drive but I still got the problem as below.

"Your device isn't compatible with this version"

In my case I got above message.
I recalled seeing a brief pop-up message that obscured by "File transfer in progress" window and tried to capture it by repeating gapps-...-signed.zip flashing. On my 3rd try I managed to get 2 messages: "unfortunately google search has stopped" followed by "unfortunately google play store has stopped".
Searching on the latter message brought me here.
After performing  step #1, #2, #3 and #5 laid out by GSDer,
  1. go to Settings -> Application manager -> ALL, find 'Google Play Store' and select it - Clear cache, if that doesn't work Clear data, if that doesn't work Force stop; if that doesn't work Uninstall updates (restart the phone between each intermediate step)
  2. go to Settings -> Application manager -> ALL, find 'Google Services Framework' and select it - Clear data, if that doesn't work Force stop
  3. go to Settings -> Application manager -> press the Menu button -> select 'Reset app preferences'
  4. go to Settings -> Application manager -> ALL; scroll to the very bottom of the list and see if 'Downloads' is disabled - if it is, Enable it; also see if 'Google Account Manager' is disabled and if it is Enable it
  5. go to Settings, find the Accounts group, select Google, select your Gmail address then select the 'Remove account' button. Restart the phone then add your Google account back.
I managed to install both Guardian Cross and Devil Maker: Tokyo.

System Not Responding

The title doesn't represent the actual message prompted to users. Even after "successful installation" the emulator hangs quite frequently.
Note that even though the Genymotion emulator window is closed, it may still run behind the screen. To verify, go to Virtual Box and check the status of said virtual device.
If it still running, just send the kill message: Right click --> Close --> Power Off.
Afterwards you can try to play the virtual device from Genymotion again.


Other Problems

Search &/ ask in stackoverflow or elsewhere.


Trial Run

Guardian Cross - Failed to Run

If I have the time I may try a virtual device with tablet - landscape form-factor. It seems like rotate screen feature in Genymotion is not perfectly emulated. When I set the screen to landscape and turn off auto-rotate, it would immediately switch back to portrait.
Emphasis on may: Guardian Cross' hunt requires simultaneous control of both hands. Replacing the functionality with single mouse would be challenging.
Only issue is, with a Computer Emulator is you got to right click to unlock ur mouse, then click fire, then left click to relock your mouse, right click to unlock it and click on fire... Unless Blue stacks has some way around this when they add in GC. Can't remember which one I tried using like 6 weeks ago, but it was garbage. - source.

Devil Maker: Tokyo 

Went through the tutorial - up to killing the first boss devil. The game-play is quite nice so far; but the loading time is definitely a big turn-off.

Thursday, February 6, 2014

Minmei Publishing Company Excerpt #01

The Hare of Inaba

As the name suggests, it had its origins with the old legend of a crafty hare who tricked the sharks into helping him cross the ocean by offering to count them, but at the last minute his true colors came out and the sharks tore his skin off.
It received this name from the danger of hopping between cars. It has a low survival rate, and every time it is done, many are reported dead or injured.
* Please do not try this at home, wise reader.
From "The Otokojuku White Book 2000" by The Minmei Publishing Company.

The Great Chime

In the Warring States period, during Takeda Shingen's battle with Uesugi Kenshin, Shingen wanted to encourage his soldiers fighting far away though he could not send reinforcements. He had a thousand soldiers lined up in his camp, and had them all shout at once. The shout could be heard from 25, or 100 kilo meters, away... On a similar note, during the National University Baseball tournament of Showa Year 15, W University's cheering squad was said to be heard all the way from Kamiya Stadium to Ikebukuro.
From "An Inquiry of The Warlords of The Warring States Period" by Minmei Publishing Company.

Household Items as Weapons

Long ago in our land, the leader at the time strictly forbade the people to carry weapons.
It was only natural that the people would develop fighting styles using household items around them as weapons. Common items included clogs, khsiers, and umbrellas. As a digression the phrase "I won't even need to take my clogs off" said during battles is an indication of the usefulness of clogs as weapons.
From "The Encyclopedia of Ancient Japanese Martial Arts" by Minmei Publishing Company.

Ki

Ki refers to the energy of life that all humans are born with. According to theory, its power holds limitless possibilities, and has potential applications in medicine, sports, and countless other fields. Example of its power is seen in the martial artists' story of the saint of the sword, Tsukahara Bokuden, who was said to be able to cut a stalk of bamboo with a slice of paper injected with his ki.
From "Biographies of the Japanese Swordsmasters and Sexmasters" by Minmei Publishing Company.

Master of Crocodile 

In South Asia, there are regions heavily populated by various killer crocodiles. In the 18th century, a technique for controlling these crocodiles was developed by a secret tribe of beastmasters. Using this technique, the tribes defended their territory from outsiders. For this reason, crocodiles are considered sacred and their religion worships a crocodile god. Even now, in certain South Asian countries, the killing of a crocodile is a capital offense. Last year, a Japanese tourist caught unwittingly carrying a crocodile-skin handbag was hanged. - Crocodile Dandy.

Thursday, January 30, 2014

To a Man With Only a Hammer In His Toolkit Every Problem IS a Nail

Prelude:
Years ago my father read a magazine and stumbled upon a title that he couldn't comprehend. He passed it to my mother that remarked that although she recognized some characters, the whole things are incomprehensible. Then my mother passed it to my sister who immediately read it aloud. That brought laughter from both my parents.
The title was of Latin alphabets, stylized to make it looks like Chinese characters. Due to the presentation, my parents try to read it in Chinese. On the other hand my sister, lacking the skill in Chinese, read in the only way she knows.
There are 2 things I learned from that episode:
  1. KISS Principle.
  2. As the title said.
In above episode, the one with single tool won the round. But as problem complexity escalate, can the hammer wielder maintains the lead?
To contemplate: One who makes swift decisions is often admired / appreciated. However, how many people try to consider how each decision was made? Was it after careful contemplation; considering alternatives, implications, feasibility, oppositions|supports, cost|benefit of each alternative? Or was it simply because he only saw a nail and whacked at it as usual?

The Key to Good Humor is Knowledge

First a disclaimer: I'm using the word knowledge very loosely here. I'm not limiting the definition to text book stuff, but also local slang, culture (name of food, peculiarity of dialect / accent, etc) and so on -- every useless bits you can memorize. Info may be a better term, but I prefer knowledge.

My brother doesn't like to socialize with the bookworms because "they tell lame jokes". True, to have someone explaining every joke is kinda lame. However, if one's level of knowledge / exposure is on par with the surroundings,  jokes would have more hits than misses. Either learn or leave.
Why do crude-jokes (especially sex-related) have the highest rate of delivery? Because the knowledge are inherent (well, unless one has very strict parents and is a very obedient  child). That's also the reason why slapstick works like a charm. No brainer.
As jokes become more subtle, more background knowledge would be demanded. For example, to appreciate a joke in a series, the audience had to watched the previous episode, understand the character and so on ... read more here - I can't put it in better words.
Straying from the topic for a bit - while looking for the link above, I stumbled upon this. Published over a year later but has a Copyright?

Final Words

I'm not advocating the hyper-active knowledge gathering. Sometimes extra knowledge would only serve as hindrance rather than helpful. It may gets in the way of applying KISS principle, or worse. A partial knowledge may be misleading when one doesn't know the context of its application: when, where, how, under what condition &/ who has the capability to apply.
The wealth of knowledge certainly help as foundation, but foundation is the basic, not the goal in itself. The value of a person should then be decided on how one can apply, adapt/re-purpose or enhance an existing knowledge or create new ones.

Absorb knowledge in moderation, don't be a hammer specialist, but don't be a tool collector for the sake of collecting. It would be silly to own a tool that one doesn't know its name, much less its usage.
Humbly admit that we're ignorant to some topics and stay hungry on the topics that held our interest.
Never underestimate one who has less knowledge; he/she is not lesser, merely different.
Swing your hammer proudly, but learn to use other tool(s) as well.

The most difficult to apply:
Don't judge by the speaker, but  by the content. It's in human nature to pass judgement; and once a label is pasted, it sticks, even when further revelations should shed light that initial labeling was wrong.

Wednesday, January 29, 2014

The Heroes, The Bards and The Audiences

The Heroes, The Bards and The Audiences

I forgot where I heard/read about this: was it Xena the Warrior Princess or Violinist of Hameln? Anyway, the saying goes:
There are 3 types of people:
  1. The Heroes - the main characters, the object of praises, the ones under the spotlights.
  2. The Bards - the singers of praises, the ones putting the first group into the pedestal.
  3. The Audiences - this is where most people fit in. I'm here all my life.
Back then I thought "Heroes are the greatest. while Bards are not significant. Such is the greatness of a hero, even if a bard didn't pick up the story, another would."
But after I entered the working environment, my view was reversed. No matter how good a product is, if the owner can't sell it, it would be gone in obscurity. On the other hand, no matter how shitty a product is, if The Bard sings all the right tunes to the right ears, even flaws become strong points.
That, and I've come to realization that heroes are human too, they have flaws, they pee when dumping the big ones (an ex-colleague proved that he could un-load without peeing, but that was not pleasant - so there you have it).

Romance of Three Kingdoms - Glory of Shu

This story never gets old; new writers would picked up the old story and re-told it, but most depict Liu and gang as the good guys. I beg to differ, though to be honest I never read the authoritative, only the dramatization Sānguó yǎnyì.
  1. Ma Chao was a terrible person, causing the death of not just his father, but his (almost) whole family.
  2. There was an episode in Sānguó yǎnyì where Liu Bei and Cao Cao visit a farmer. The farmer has no meat to serve and decides to butcher his wife to get some. Upon knowing it, Cao Cao wants to kill him, but he refrains and waits for Liu Bei's respond. Liu Bei praises the farmer's kindness (Boy, am I glad for not living then and there when such moral compass was in place.).
  3. Zhuge Liang was a revolting man. During the exodus to Xiakou, Cao Cao's ruthless butchering of civilians are infamous. But when I think from different perspective, rousing civilians as living obstacles certainly help to stall pursuers' progress (in a heated stand-off, slip a guy in to throw the first stone, slip out, sit back, enjoy the chaos, eat pop corn, piece of cake.)
For people unfamiliar with (any variant of) the story, above statements may not mean much, but for those who do, I'm just trying to be a Bard there, singing different tune.

The Horse and The Rider

In Silver Spoon, of the same fact: "A rider who can tell a horse where he wants to go and let it figure out how to get there on its own", Hachiken and Mikage come to different conclusion; the former considers the rider is amazing, while the latter considers the horse is the amazing one.
Which camp are you on? The Horse or The Rider?
Both are heroes in this story: Arthur and the knights of the round table, Robin Hood and his band of outlaws. Hachiken and Mikage play the bards, each imbues his/her own subjectivity. While we (as usual) are The Audiences.

This is the kind of story I like to hear/read. Rather than being force-fed by The Bard's judgement on right or wrong, give the facts give competing opinions keep it open let the audiences expand their imagination.
In the real world the rider would be the manager and the horse the worker. But for the worker to be able to find his/her own way, that's one competent worker. On the other hand, isn't that what managers do? bark orders then go home on the dot, leaving the workers doing overtime day in and day out? Well, that's one big over-simplification. Consider the context: equestrianism. Certainly The Rider's job is not that trivial; steering The Horse in line with the trajectory, reaching the goal as fast as possible, with no/minimum mistakes along the way.
That's my expansion from 2 panels of manga. Leaving an inconclusive situation may entices The Audiences to wear The Bard's hat. Maybe the tunes are all over the place; maybe no one would ever hear the tunes; maybe... maybe...; but surely there is satisfaction - however fleeting - of wearing different hat.

I'm grounded (not really, but sort of)

Samsung RF411 as Paperweight

Since last September my Samsung RF411 has been inflicted by frequent BSOD. The prime culprit was Canon driver - the only changes in months. After performing System Restore prior to installation I didn't get BSOD anymore.
After installing .Net framework 4, I was greeted by another BSOD. I performed another system restore (prior to .Net framework 4 installation) and I could use it again.

Late November the BSOD repeated its regular visits. At this point, I didn't think another system restore could resolve my problem.
Analyzing the minidumps (using WinDbg) points to NVIDIA driver, thus I proceed to uninstall NVIDIA driver. But even after that BSOD persisted.
I could circumvent BSOD by going to safe mode (with networking) every time, but somehow I occasionally missed the chance even though I've rapped on the F8 button frequently. My irritation was multiplied by BSOD that sometimes greet me during start up process. Before you comment, yes I've turned off Driver Verifier that actively triggering BSOD.

I forgot who gave me the idea, but I decided to try updating my BIOS via Samsung SW Update; which gave me corrupted BIOS - it couldn't boot. Again, I could circumvent this by inserting a bootable disc and sticking a bootable usb and not pressing any key when asked. But this gives me no chance to hit F8 to go to safe mode, and the BSOD is lurking around.
Today, 29 Jan 2014 I tried to chat with Samsung support on ways to rectify the BIOS issue and got the generic answer: hit F4 for Samsung Recovery. I had my doubt, but I decided to give it a try anyway:

  • Restart
  • Press F4
  • See a prompt "Please Wait..."
  • Keep the machine on for an hour with nothing happening.
  • Turn it off.

Now every time I turn it on, I just see Samsung logo and "Please Wait..." plea. Yay.
Lesson learned: Whenever you hit a problem in Windows, remember the golden rule: don't bother troubleshoot - re-install!.

ACER D255 to Decommissioned?

Due to RF411 issue, I've been using my mom's netbook. I picked Windows SDK for development because it's comparatively light-weight -- coding in notepad, compiling in command prompt. However, using Visual C++ 2010 as the compiler means that my application depends on .Net framework 4.0.
Thus I made the switch to Qt. It's a behemoth for the tiny netbook; the system often gets unresponsive with very heavy disc activities. It has auto-shutdown twice now, and I think it was cue for me to stop.

DELL D410 to the Rescue?

I still have this old laptop that despite its age is more powerful than D255. Yet, after over 7 years of usage it has a unique flaw: after extended period of heavy usage, it would complained loudly (translation: after 30 minutes of playing facebook flash game, a loud sound would be heard).
I can try re-installing Windows while crossing my finger, hoping that the source of groaning is over-burdened OS rather than wear and tear of the components. Either that or...

I Should Try to Revive The Best One

Found a thread of Samsung BIOS Update Issues. I'll read through the 15 pages and if I find no confidence to proceed myself (which is very likely) I'll post a question there.

Tuesday, January 28, 2014

Continuing MP3 Player Development?

Problems

There are at least 3 problems with Qt 4.8 + Phonon
  1. Unable to play some songs - well known issue with known solution?
  2. For some media, the timer might be off (by a lot, almost 3x). - well known issue.
  3. Dragging progress slider would make the position out of sync - this is a big issue for me since my main intent is to show lyrics in timely manner.
Comparing it with previous development under Ms. Visual C++ from Windows SDK
  1. I managed to resolve the same problem by manually adding WM ASF Reader Filter.
  2. Unknown - didn't display time in this version
  3. No problem on some media that exhibit this issue at Phonon, but a LAME-encoded media exhibits the same problem.
As I've mentioned in another post, I don't want to continue developing via Windows SDK because of dependency to .NET Framework 4.0. Specifically because installation of it on my Windows 7.0 64bit caused BSOD - and later found out this is not unique experience.

After I un-installed Qt 4.8 and installed Qt 5.2 I realized that Phonon has been dropped in favor of QMediaPlayer. After testing QMediaPlayer out:
  1. Same issue as Phonon - can't play some songs
  2. Unknown - forgot which song has the wrong timing - might update this later.
  3. Same issue as Phonon - SDK version is more reliable.

To be sure, I'm not suggesting that Windows SDK is better than Qt; simply that I had more success with Windows SDK thus far.

Confusions

First Confusion Stemming from Qt Bug Tracker

QtMultimediaKit would first try to apply WM ASF Reader Filter for mp4 playback.
Yes, it's different tool for different purpose; but my point is: if Qt can use WM ASF Reader Filter there, it should be usable for QMediaPlayer? There shouldn't be any licensing issue with Microsoft for filter usage.
The bug above has been deemed invalid by suggesting Media Foundation over DirectShow.
I've also read someone said Windows Media Player uses Media Foundation rather than DirectShow (to deflect criticism: WMP can play it, why can't yours?). But I used DirectShow in SDK version and managed to tackle the issue? Sigh.

Straying from topic for a bit; a guy here goes further by claiming that
Even the folks in the Qt irc channel told me not use QMediaPlayer on Windows. They suggested using SDL.
 Not sure how much truth in there, but I think using 3rd party codec is more reliable.

Second Confusion: What Codec Should I Use?

Previously I've considered going direct to FFmpeg/libav or Libavcodec but I read in wikipedia that:
  • GStreamer has made a wrapper for FFmpeg/libav
  • Phonon uses / supports it http://en.wikipedia.org/wiki/GStreamer#Distribution_and_adoption
Working on a wrapper will definitely make my work a lot easier, yet considering Phonon has the issues above, can I make the assumption that GStreamer is not a complete wrapper?

Third Confusion: Completeness

An often raised argument is the fact that MP3 implementations are heavily loaded with patents. To support all implementations mean to buy in those patents.
Although a lot of applications use FFmpeg/libav under the hood, each must've improved on it -- like applying the proper filter, properly calculating media duration and current position, etc.
Using Phonon and QMediaPlayer as reference, I highly doubt I'll be able to build an application that can play all MP3s smoothly.

Conclusion?

None for the time being; I need to try implementing WM ASF Reader Filter first, before deciding whether to go on ahead or drop it.