Close
0%
0%

Riyo Mori unofficial hardware fan page SP

Usually TV stars have a fan page in the Internet, but this is just account. Meanwhile, device on a desk is much weighty argument.

Similar projects worth following
150 views
0 followers
I, surprised with almost silent reaction and fact of not blocking me in the instagram by her (foreighners are more talkative, Russians usually blocks me after second complete trash, which I wrote them). So, I decided to made the second JPEG demo with bigger resolution and faster processor. As I mentioned, in the new variant, I use ARM M4F core instead of M3 (STM32F407 instead of F103), and the display is ST7789 320x240 instead of ST7735 160x128. Meanwhile: * DAC with 1W bridge power amp in order to use it as video or music player * CR2032 clock battery + 32k crystal and LM75 temperature sensor. In order to make it not so much unuserful, it will be the clock and thermometer at least. * Built in interfaces SDIO and USB, to be familiar with files without early MCU users rituals. * NRF24 radiomodule for further experiments with wireless picture. Roadmap and goal: grow up it demo from photo to video viewing, make another M7+640x480 display demo, send her one of it through the post.

In her recent post, she gave away the word "HQ photos". So, I never thought that she is so old and remember video cassettes. I thought that this dead weight of remembering and saving retro technique is only for electronic geeks. So, I decided to make three photophrames (or videoplayers) on ST in according to quality graduation of VHS: HQ (hiqh quality), SP (standard play), LP (long play), and EP (extended play). With 840x480, 320x240, 160x128, 160x80 displays respectively. Today I am working on the SP variant, meanwhile two last variants are joke or maybe a real keychain. 

First of all I tries all the hardware, what I chosen:

  • Adapted my FAT filesystem to the SDIO interface, files are readed by half clusters (8kBytes) for ~1600us, while one block read time is ~800us. Excluding read block command lag, files are readed unnoticedly instantly.
  • Tried to play stereo wav file. The sound is clear enough for pocket player. 
  • Readed the temperature of on board I2C temperature sensor through the debugger.
  • Checked is the radio module is alive? The reading/writing it's registers is ok.
  • Tried to send the picture by lines throught DMA, and confgured PWM for a backlight.

So, the main tasks are software ones. First of all it is JPEG decoder optimisation. I tried almost all, ang got ~0.16s for JPEG picture read and view. According to this success, it's time for another dreams. A couple of my own file system and JPEG decoder may be also named as operating system. Yes, today it is simple demo, but later it may turned into OS. I would like to name it as moriOS. Mori OS - one person version of Nyarch. Because the computer history also knows the OS, which is dedicated to only one girl from TV, that was Hannah Montana Ubuntu Linux. So, my case is the same. I hope that, I will haven't got any problems due to her name and pictures using and finish it OS with MJPEG, MP3 and file manager.

  • JPEG optimisation

    Mikhail Belkin08/06/2026 at 11:31 0 comments

    Standards usually impracticable things, although JPEG standard gives transparent enough diagrams and block schemes about JPEG file structure and it's decoding. That is why just viewing of the image is typical task. However optimised algorithm for switching images unnoticeable takes 3x bigger time then the first point.

    • Arai Agui Nakajima fast IDCT algorithm, takes 48 pages of matrices and complex arithmetic in my copybook, gave first picture less then 1s. 
    • Assembly optimisation. ARM M3 assembly with help of Josep's Yiu manual is quite easy task. Instruction-by instruction control helped to reduce time of huffman decoding almost at 1/3. Repacking an array from zig-zag to 8x8 with directly coded addresses, gives yet another little boost (the function run time decreases from 25us to 7us, but due to overall time of decoding it is mperceptibly little). While rewriting the last two steps of decoding (IDCT and YUV to RGB transform) leads to fail. Sorry, but I have to admit defeat to the gcc optimiser. My IDCT assembly variant works at ~10% slower then my compiled C variant, while in RGB I won the same 10% of runtime. 
    • Table huffman. To put variable-length codes into the array, do we have the idea dumber than it? I wrote this in C variant, and it runs as fast as my optimized bit-by-bit decoding. So this idea is failed too. But maybe I will decide to re write this table algorithm to assembly.

    So, without hardware decoder we can't obtain 15FPS, but there is a lifehachk, when we turn image into the mash of random colour pixels and artifacts (at 10% of quality), we got a low size file, which is decoded for 0.07s. And in case of MJPEG file with it's joint tables gives desired 15FPS. But beter way is reducing resolution.

View project log

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates