Have you looked at the logcat output when this is happening? What we noticed on the Geniatech box is there is an issue with the Amlogic hardware acceleration. I believe the same is happening on the Visson box. We would see the following repeatedly in the logcat:
04-01 08:44:11.008 I/amffmpeg( 81): [avio_seek]fill buffer error -5
04-01 08:44:11.008 I/amffmpeg( 81): [avio_seek]fill buffer error -5
04-01 08:44:11.008 I/amffmpeg( 81): [avio_seek]fill buffer error -5
04-01 08:44:11.008 I/amffmpeg( 81): [avio_seek]fill buffer error -5
This error occurs repeatedly, thousands of times per minute, and causes the whole thing to slow down until you reboot.
This was fixed with the 03-17-2012 firmware update from Geniatech, so I assume it was fixed by Amlogic. I don't know if this fix ever made it to the Visson box.
Open terminal or SSH session and just watch the logcat. Or use an app like LogcatVM from the market.
I confirm, I cannot see the above error. As I said, the problem seems to appear when I switch to full screen. In windowed mode dmesg output seems to look fine:
06-14 23:22:29.435 E/ ( 1421): AMLHWVideoDecoder(0x67eb2000:0x0) - codec_init OK (476x360), rate=3840, ratio=338
06-14 23:22:29.435 I/amcodec ( 1421): [codec_pause]p->has_audio=0
06-14 23:22:29.435 I/amcodec ( 1421): video_pause!
06-14 23:22:29.435 I/FlashPaintSurface( 1421): needsBlending false
06-14 23:22:29.445 E/ ( 1421): HW decoder grabbed
06-14 23:22:29.445 E/ ( 1421): AMLHWVideoDecoder::SeekTo - start preroll - pts=0 prev pts=0
06-14 23:22:29.445 E/ ( 1421): AMLHWVideoDecoder(0x67eb2000)::SeekTo(0), write=0, isPreroll=1
06-14 23:22:29.445 E/ ( 1421): AMLHWVideoDecoder(0x67eb2000:0x67eb2000)::UpdatePlane() screen={1280,672}, orientation=0
06-14 23:22:29.445 E/ ( 1421): AMLHWVideoDecoder::UpdatePlane()
06-14 23:22:29.445 E/ ( 1421): m_dest=(0 0 0 0) m_lastDest=(134217727 134217727 134217727 134217727)
06-14 23:22:29.445 E/ ( 1421): m_source=(0 0 476 360) m_lastSource=(134217727 134217727 134217727 134217727)
06-14 23:22:29.445 E/ ( 1421): resX=1280 resY=672 orientation=0 m_lastOrientation=-1 m_layer=0
When I switch to full screen, I start getting lots of
06-14 23:22:29.445 E/ ( 1421): AMLHWVideoDecoder(0x67eb2000:0x67eb2000)::UpdatePlane() screen={1280,672}, orientation=0
but the screen stays black, while sound continues normally. At this stage, I cannot recover anymore, and all I get is a black screen. After a while with audio and black screen, sound stops and system practically freezes.
During the whole process LOTS of processes get kill. Btw. I noticed that using ICS, the system is rather low on memory anyways, compared to 2.3.4 ; maybe the dalvik heap can be lowered to 64 mb as well ?