Lair Of The Multimedia Guru

October 6, 2018

Pandaboard 5v power supply

A few days ago i noticed that my panda-board died. This is one of the 2 ARM systems on
Resetting or unplugging and re-plugging did not help. Replacing the power supply with a random 5v supply made it come back to life.
The failed power supply is a HNP-24-050 “HN Power Germany”. This is now probably the 3rd or 4th failed power supply for my panda board. The one its running on currently is a random one from ali-express. I must say iam really disappointed by the trash that some german electronic shops sell. All the failed power supplies where bought from germany, not china. The failed supply still produces 5v but when subjected to the slightest load its output collapses to 0, even 200mA is too much.
Ive read on the net that some digikey supply is recommended but both part numbers i found are marked obsolete.
Anyone has any recommendations ? I am not too positive that the 2€ +free shipping supply its running on currently will last very long.
I know i can just run it off a brand name ATX supply or a bench supply but that is a bit inconvenient.
Also if anyone wants to add more ARM hardware to, so we have a bit more redundancy, thats certainly welcome

Filed under: FFmpeg,Hardware — Michael @ 23:41

December 2, 2016

Printing on metal and glass

A while ago i had the “need” to make a non removable “no advertisements” “sticker. To do that i tried several different methods to print on and etch metal. The methods where roughly based on various youtube videos for making other things. Its a while ago so i hope i dont misremember the details, i should have written this immedeately…
All the methods start out with a laser printer and then transfer the toner onto the object as a mask for etching.

Cold toner transfer

The image to be transferred is printed on normal paper. the object its intended to be transferred to is placed flat on a table and is wetted with a mix of ethanol and acetone something like 8:5 vol. Pure ethanol will do nothing, pure acetone will smear the toner. Then the printout is placed on top avoiding air bubbles and some timespan like 20sec is waited for the toner to soften. Next the printout is firmly pressed by some means (i used 2 pieces of wood and clamps) for some time (i waited 3 min). next the pressure is removed and one waits for it to fully dry. Next it is soaked in water for some time (3min in my case) and then with luck one can peel the paper off while the toner still sticks to the object one wants to transfer it too. Depending on the toner and paper different procedures are likely optimal. Using this to place a mask onto a piece of scrap aluminum worked so-so, some parts of the toner didnt like sticking on my first attempts. Also this method is only suitable for creating a mask for further processing, you would not want to use this to print onto metal as a final step as there is still paper sticking to the toner.


Hot toner transfer

The image to be transferred is printed on “toner transfer paper” (from ebay). The object to be printed upon is heated to slightly above the melting point of the toner (likely around 100°C) (i used a kitchen hot plate). Its important to get the temperature approximately right, too hot and the paper will be burnt. Also IR thermometers do not work accurately on shiny metal surfaces. The paper is then placed on the hot object and pressed firmly onto it (i used a silicon tube with a glass rod in it rolling over the paper several times). Next the object is taken off the hot plate and let cool. When cool the paper is removed, the toner mostly sticks fine, some individual tiny holes may be present in the transferred toner. To ensure good adhesion i reheated the object to >50°C above the melting point of the toner.

Heres an example of the result of this method using the last piece of scrap aluminum i had laying around:

Printing multiple times (if you can get the alignment right) or otherwise increasing the toner density improves the results of both methods. Also if there are defects, tiny holes or other you want to paint over them with something before etching. You also can apply some surface treatment like sanding or brushing to the metal before the toner transfer …


For the aluminum scrap pieces i had i used simple water and table salt as electrolyte, both anode and kathode where aluminum, separated by Plastic clothespins and held together by sticky tape. After several tries i learned that lower currents and voltages seem to work better. that is for the small piece i had something like 1.8V and i think 100mA for 2 hours. (Note, if you attempt to repeat this, you do so at your own risk, Electrolysis of water and table salt produces different things depending on the condition and electrode materials. Other electrolytes may be a better choice even though NaCl seems safe in this setup.)
After etching the toner mask needs to be cleaned off (unless it fell off already which it sometimes did and sometimes it stuck really
well) it can be removed with acetone or with patience also with other random things.

The electrodes with the cut up pieces of a clothespin and tape:

The results of several attempts

Transfer without etching

One can of course also skip the etching and keep the “mask” as the final result even with color or even as a addition to a previous etching step. This also works on glass (if you can heat and cool it without it shattering)

The results from my attempts for this:

After this i had no scrap pieces of aluminum left nor really time and the problem i was trying to solve (someone repeatly removing my fathers no advertisement sticker from his mailbox … to collect more free coupons or paper … solved itself as she stopped)

Filed under: FFmpeg,Off Topic — Michael @ 14:37

June 7, 2015

Loongson 3A heat and noise

The Loongson 3A box i have is loud, which was a bit of a surprise to me. Subjectively the noise from its CPU fan is significantly louder than my 2 overclocked 6core i7 boxes together though nowhere near the hurricane level of the powermac.
Originally i had planned to run the box 24/7 or similar and submit results to But for a box standing in my living room the noise level was too high for that.
Obvious solution rip the fan out and stick a less noisy one in,
its a standard 60x60x15.5mm fan, i choose the Noctua NF-A6x25 FLX as replacement, i didnt pick the PWM variant because for some reason the 4pin cpu fan connector was unused and the old fan used a 3pin sys fan connector, so it felt safer to me to use the same.
To remove the old fan t he board must be removed, as the screws cant be undone without holding their behind.
With the screws and the fan, the heatsink comes off too:
The old thermal compound seemed not entirely uniform, part of it looked more solid than the rest. I intended to apply new anyway so that doesnt matter though, with the stuff cleaned off it looked this way:
As the noctua fan is thicker the screws cant be put all the way through the fan as they would be too short, putting them only through the bottom part makes them stick out at the bottom of the main board a bit more but there is enough space, ive also slightly bent the outtermost heatsink fins a tiny bit inward so they rest on the rubber part of the fan and added some o rings around the screws for a bit of extra vibration decoupling which was probably useless.
Thats how the result lookes:
and theres the old fan:

Does it still work ? yes and it still passes fate
What about heat? before /proc/cputemp was between 40 and 42°C and now its between 38 and 41 °C both while running fate.
For noise testing i put a microphone 3cm in front of the closed box (thats far away from all fans). I was too lazy to switch my other boxes off though:

sys-off-spectrum old-spectrum


Loongson Box switched off Original (AVC) fan New (Noctua) fan
Filed under: FFmpeg,Hardware — Michael @ 3:30

May 22, 2015

FFmpeg FATE tests on Loongson

After the patches from loongson yesterday, FFmpegs full fate testset passed.

time make fate -j4 -k >& fatelist8
real 28m32.631s
user 98m50.422s
sys 12m53.547s

Filed under: FFmpeg,Hardware — Michael @ 17:16

May 8, 2015

Loongson MIPS Box

Loongson very generously donated a MIPS box with “ICT Loongson-3A V0.5 FPU V0.1” CPU, 500gb 7200rpm WD Caviar Blue HDD, 4gb RAM and a power cable with Chinese plug to FFmpeg. Picture of the inside of the box:
Quick power meassurments show

  • ~1W when OFF
  • ~44W when IDLE
  • ~48W when running fate tests

Quick FFmpeg build benchmark with gcc (GCC) 4.8.3 20140624 (Red Hat 4.8.3-1):

  • 4m49.192s for time ./configure --enable-gpl --enable-pthreads --samples=/home/loongson/fate/ --enable-nonfree --enable-version3 --assert-level=2 --cpu=loongson3a --enable-loongson3
  • 19m31.114s for make -j4
Filed under: FFmpeg,Hardware — Michael @ 4:00

September 20, 2014

my FATE clients

Most of the x86 fate clients i did run, where run as VMs on a aging 2 core Westmere/Clarkdale i5 @ 3.33ghz. As ive added more and more virtual machines and configurations and the list of tests done by fate increased over the last 3 years, the box started to show its age, over these 3 years 1 HDD nearly failed, 1 SSD failed in it and as the amount of tests run kept increasing the time between tests being repeated kept getting longer.
About a week ago i ordered a new box to replace it finally. To my surprise the shop (in germany) refused to ship the HDD&SSD to austria, after a few minutes research on the matter i learned that apparently austromechana threatens german shops who dont pay them a fee on storage media thats sold to someone in austria. I guess one could also say European union & free trade at its finest.

But back to the topic, most of my x86 fate clients now run on a shiny new 6 core haswell @4.3ghz + samsung SSD. So the affected clients should be alot faster now and there are also already more tests being run, ive changed many of my clients to test the 3 currently maintained release branches in addition to git master.
Also, if you have some platform that supports FFmpeg and isnt on, and you want to help FFmpeg, please setup a fate client (See the fate documentation).

Filed under: FFmpeg,Hardware — Michael @ 3:33

January 28, 2014

FFmpegs Huffyuv

In the last few weeks FFmpegs huffyuv codec has grown the ability to encode and decode a much broader list of pixel formats. From planar rgb variants 4:4:4 YUV to 4:1:0 YUV and bit depths up to 16bit and alpha support.
One might ask why anyone cares about all this, the awnser is simple

1 thread YUV420 10bit, matrixbench
FFv1 Huffyuv
encode fps 63fps 281fps
decode fps 82fps 418fps
filesize 478mb 765mb

Encoding parameters used:
-an -threads 1 -pix_fmt yuv420p10le -strict -2 -vcodec ffvhuff -context 1
-an -threads 1 -pix_fmt yuv420p10le -strict -2 -vcodec ffv1

6 threads YUV420 10bit, matrixbench
FFv1 Huffyuv
encode fps 269fps 1173fps
decode fps 386fps 2675fps
filesize 480mb 771mb

Encoding parameters used:
-threads 6 -an -pix_fmt yuv420p10le -strict -2 -vcodec ffvhuff -pass 2 test.nut
-threads 6 -an -pix_fmt yuv420p10le -strict -2 -vcodec ffv1 -level 3 -slices 6 test1.nut

As can be seen above huffyuv while it doesnt even get close to ffv1 in terms of compression even though i used per frame huffman tables and 2pass mode in the 2 tests, its simply much faster.

Filed under: Entropy Coding,FFmpeg,VideoCoding — Michael @ 2:27

January 29, 2010


About a month ago we (the ffmpeg team) voted about which name our NGO to which people soon will be able to donate should have. A sideeffect of that is that the world now has one more application to count votes using various condorcet methods, borda count and instant runoff voting. Get it from svn:// with your favorite command line svn client while its still fresh ;).

The vote itself went pretty well, we had a huge participation and it was quite fun :). Less funny was that murphy hit us and the winning choices “FFmedia/Foundation for free multimedia” domain name was already taken by some anonymous person through domaimsbyporxy, who asked us for cash even to just forward a message. Luckily the 2nd most popular choice “FFMTech/Foundation for free multimedia technolgies” didnt had that problem and was just by 1 vote behind so we picked that.

About which voting method is best, i dont know, but for our vote at least they all produced the same result most of the time while people added their votes. In that sense i wonder if any vote in reality that used a condorcet method actually ever needed rules beyond condorcet like the popular schulze method? Anyone knows? i checked debians past votes but it seemed they all had a condorcet winner

Filed under: FFmpeg — Michael @ 1:03

August 15, 2008

Little Reverse engeneering puzzle

There are SVQ3 files that ffmpeg cannot decode yet, the ones iam speaking of contain a image or watermark, often a logo in a global header (extradata in ffmpeg, QT has its own funky terminology for it). The binary decoder displays this watermark over the actually decoded video.

FFmpeg is in principle fully capable to decode these videos (and of course without these watermarks), the only problem is that 32bit of the header and following bitstream are modified by xoring them with a per file constant. Our problem is we do not know how the binary decoder calculates this constant. A example SVQ3 video and the corresponding constant of 0xA2A2A2A2 for this file as well as a bugreport on our tracker exist as well

The puzzle is to figure out how the binary decoder finds the constant, its likely not very hard for one knowing how to use a debugger, hint: memory breakpoint at the input data and a cup of coffee or tea or a can with cola.

Filed under: FFmpeg,Reverse Engineering — Michael @ 22:10

February 11, 2008

FFmpeg weekly news #4

Another week has passed in the ffmpeg universe.

  • Mans added -Bsymbolic, everyone wonders why this isnt default and what the ELF designers were smoking. Shared libav* becomes smaller, faster and more secure due to this change.
  • Mike fixes a security issue in the mov/mp4 demuxer. Noone writes a security advisory, like always.
  • Dave Yeo restores OS/2 support
  • RV30/40 work by kostya
  • VC1 improvments by kostya
  • removing globals used in API by me and mans (due to issues with -Bsymbolic)
  • export sha1 implementation in libavutil to the world (actually we just forgot to install the header) by Diego Pettenò
  • Various h264 fixes by jeff
  • Make mov useable over http by elupus and baptiste
  • Support overriding codec id for input files by me
  • Generic global header support for mov by baptiste
  • User adjustable dynamic range compression for AC3 by justin
  • djgpp support by Michael Kostylev
  • PC Paintbrush PCX image decoder by ivo
  • Sun Rasterfile decoder by ivo
  • Extract aspect ratio from ODML-avis by me
  • TechnoTrend PVA Demuxer by ivo
  • support removing elements from the AVL tree in libavutil and make it independant of malloc() by me
  • improve CRC API and install crc.h (another forgotten header) by aurel
  • various request_channels related fixes by justin
  • Linux Media Labs MPEG-4 (LMLM4) demuxer by ivo
  • support for libdc1394 v.2 by Alessandro Sappia
  • Do not install rtp.h (which should have never been part of the public API) by luca#1
  • User specifyable maximum amount of memory to use for the index. by paul kelly
  • libav-user was created by root
  • Add support for H.264 video in the RTP muxer by luca#1
  • ugly hack to support multicodec stsd in mov by me
  • subtitle support in mov improvmets by me and reimar
  • support for Matroska attachments by eugeni stepanov
  • ICC support by reimar
  • SMPTE 421 Annex L format demuxer by kostya
  • The monthly flames, accusations and insults, a vote about fixing warnings and me, baptiste and many others fixing many. Some gcc bugs in -Werror being found, all decoders being changed to have const input by me …
  • support for ogg text subtitles by reimar
  • mbaff spatial direct support by loren
  • many optimizations by loren
  • parallel regression tests by mans
  • various nut fixes by oded
  • support for speex in ogg by reimar
  • The first parts of libavfilter hit svn by bobby and vitor
  • MANY bugfixes, ive ignored most due to lazyness and i think its not that interresting for most readers anyway
  • Lots of cleanup by various people
  • myself loosing the ability to reliably capitalize words correctly as i move toward the end of this entry, also note, nothing has been spellchecked as its almost 6 in the morning here …
Filed under: FFmpeg — Michael @ 5:44
Next Page »

Powered by WordPress