Archive

Posts Tagged ‘video’

Review of Kimdecent CS868 mini PC Powered by AllWinner A31

May 18th, 2013 7 comments

Kimdecent sells some cheap RK3188 mini PCs such as QC802 for $76, but instead of sending me yet another RK3188 device, they agreed to send CS868, an HDMI TV dongle powered by AllWinner A31 quad core processor, so that I could review it. This mini PC comes with 2GB RAM and 16GB Flash, the latter being larger than the 8GB flash found in most other devices, and is available for $95 on Kimdecent Aliexpress store. More details about the specifications are available on Unuiga U28 post since the hardware is the same. In theory, AllWinner A31 has a much slower CPU than Rockchip RK3188, but its PowerVR 544MP2 GPU should outperform the Mali-400 MP4 found it the Rockchip processor, and A31 supports 4K2K video decoding. In this post, I’ll show some unboxing picture, give my first impressions, test Wi-Fi performance, video playback capabilities, and run some benchmarks.

CS868 Unboxing Pictures

I received the device in a parcel with lot of bubble wraps, so the package was not damaged,  but there’s not much to say about the package as it’s just a no name “mini PC for Android OS” without specifications, or other useful information.

CS868 mini PC and its Accessories (Click to Enlarge)

CS868 mini PC and its Accessories (Click to Enlarge)

Inside the package, we’ll find CS868 mini-PC with a metallic casing, a short HDMI cable, a 5V/2A power supply, a microUSB to USB cable for power, and microUSB to USB female cable for the microUSB OTG port of the device, and a not-so-useful user’s manual in English and Chinese explaining how to use Android on mini PCs.

CS868_mini_PC

A closer look at the device reveals a fully metallic casing, HDMI male connector, a micro USB OTG port, a micro SD card slot, another micro USB port for power, and a full USB host port. There are lots of ventilation hole on both side for cooling the device.

You can also watch the unboxing video.

First Boot, Settings, and First Impressions

Since Cortex A7 is supposed to have a lower power consumption, I’ve tried to power the device directly from the USB port of my TV, unfortunately it won’t go further than the boot animation. So I’ve connected the RF adapter for the Mele F10 to the USB port, and used the provided power adapter to power the device, and after a few seconds, the device will boot and you’ll have to choose between 2 launchers:

  • Standard Android Home Screen
    CS868_Android_Home_Screen
  • A 3D launcher designed for TV
    CS868_3D_Launcher

I’ll keep using the standard Home Screen since I find it a bit more convenient with the input device I use.  We have the Volume buttons, and a power button in the status bar, but no option to go to full screen. You’ll also notice a 4K widget, which is an interesting media player I’ll describe in more details in the video section.

CS868_About_TabletI’ve gone to the setup menu to configure Wi-Fi. The device also supports Wi-Fi direct, but not Bluetooth, nor Ethernet, ven with external USB dongles. You can also  setup to device for VPN access, as a hotspot, and add a 3G USB dongle.  The screen section lets you select 720p, 1080i, and 1080p modes at either 50 or 60 Hz, and you can also choose 1080p24. A slider is also available to let you zoom in/out to adjust your screen overscan if needed. There’s an option for Audio output, but clicking on it, just exits the Settings, so audio pass-through is not available. Screen Lock option is available in the System Settings, so if you require your device to be lock this should be possible (I haven’t tried). Developer options all seem available including USB debugging, CPU usage, GPU usage and more.  In the “About tablet” section, we find out CS868 is indeed the model, and this device runs Android 4.1.1 on top of Linux 3.3.0. The firmware is dated 2013/05/06, it’s rooted, and can be downloaded via Kimdecent website.

Google Play worked fine, and I could install most apps I tried such as Antutu, Angry Birds Star Wars, MX Player, YouTube, Dead Trigger, and more. The only exception was Sixaxis Controller, but this is normal behaviour, as the device does not support Bluetooth.

The system is pretty responsive, although It does not feel as fast as RK3188 devices,  and I can experience slowdowns just after boot, give it one or two minutes to be fully responsive, and while installing many apps via Google Play. The device did not hang during use, but there are still some annoying issues. I lost audio 3 times during my few hours of testing (reboot required), Wi-Fi failed to initialize once (reboot again), and at one point the device was stuck in the boot animation “AllWinner Tech A31 Quad Core” forever. Restarting the device did not help, so I had to flash the firmware via PhoenixUSBPro.

Wi-Fi Performance

Contrary to my habits where I have one and only section for Wi-Fi and video testing, today I’ll reserve a full section to Wi-Fi, as I have a story to tell…

As I started to test video playback, and noticed very similar problem to what I experienced with Tronsmart T428, that is 1080p video would just no play smoothly. So I stopped video playback testing, and went straight to my “transfer a file from SAMBA to flash over Wi-Fi” test. The result was catastrophic, as a 278MB file took 7m 46s to transfer, at an average rate of about 600KB/s, by far the worst result I’ve ever seen (Other devices usually take 3 to 4 minutes to transfer this file). Real-time transfer speed shown in ES File Explorer fluctuated greatly but never went over 1MB/s. Two consecutive devices with terrible Wi-Fi performance? Impossible!

I remember once I had a USB Wi-Fi dongle that was extremely slow using mixed 802.11b/g/n setting in my router, and the performance improved massively by setting the router to use 802.11g only. So I did that, and the performance improved, but not enough to my taste: 5m 45s (~800KB/s) , and the transfer started very fast at 1.60M/s until 80%, to collapse at the end around 200KB/s.

Then I had an unthinkable idea, what if my router (TP-LINK WR940N v1) , or rather its firmware, was the cause of my Wi-Fi misery?

I went to the router setup interface and found some information about the firmware:

  • Hardware version WR940N v1/WR941N v4 00000000
  • Firmware: 3.9.18 Build 100104 Rel.36350n.

A Google search quickly directed me to the firmware download page of my router, with a more recent firmware: 3.13.9 Build 120201 Rel.54965n. So it looked like my firmware was just over 2 years older than the latest available version, I downloaded the file, and upgraded it.

Let’s try that file transfer test again: 1m 30s, or 3.09MB/s. That’s the fastest speed I’ve ever seen with any of the little devices I tested. Of course, I can’t use that number to compare to other devices without repeating the test for the earlier devices (which I may do), but at least Wi-Fi transfer speed won’t be the limitation for the video playback tests.

The moral of the story is that if one of your Android mini PC has poor Wi-Fi performance, don’t start to open the case and try to add an external antenna, check your router has the latest firmware revision first.  I’ll have to check the effect this new router firmware has on T428 as well.

CS868 Video Playback

I’ve installed MX Player for this purpose, and made sure the hardware decoder is used, or mention it if software decode is used instead.

Let’s started with samplemedia.linaro.org videos from a CIFS/SAMBA share in Ubuntu 13.04:

  • H.264 codec / MP4 container (Big Buck Bunny), 480p/720p/1080p – OK
  • MPEG2 codec / MPG container, 480p/720p/1080p – OK
  • MPEG4 codec, AVI container 480p/720p/1080p – OK
  • VC1 codec (WMV) – Video OK, but audio suffers from short static noise (<1 second) from time to time
  • Real Media (RMVB) 720p – OK for RV8/RV9/RV10, but MX Player switched to SW decode
  • WebM 480p/720p/1080p – OK

I’ve also played several movies in AVI, VOB and MKV container formats, and they could all play, although for some files buffering at the start was pretty long (20 to 30 seconds), and some, but not all, appeared to suffer from audio/video sync issues. MOV videos from my Canon point and shoot camera will buffer as with all other devices I’ve tried (over Wi-Fi). The status bar will automatically hide when playing videos.

I’ve also tried higher bitrate videos:

  • ED_HD.avi (1080p MPEG-4 – 10Mbps) – The start is OK, but in some scenes where the bitrate must increase a lot, the video is very choppy.
  • big_buck_bunny_1080p_surround.avi (1080p H.264 – 12 Mbps) – OK
  • hddvd_demo_1080p.mkv (1080p VC1 – 17.5 Mbps) – The video can’t play smoothly most of the time.

There’s very good support for different audio codecs on the device:

  • AC3 – OK
  • Dolby Digital 5.1 and Digital+ 7.1 – OK
  • Dolby TrueHD 5.1 & 7.1 – OK
  • DTS-MA and DTS-HR – OK

I’ve also tried with one of my 4K2K video samples: HD.Club-4K-Chimei-inn-60mbps.mp4. At 60Mbps, it’s impossible to play over Wi-Fi, so I copied to the flash, and played it with MX Player. The only problem is that is uses software decode on that file, so I had to revert to using 4K Video Player included with the device, and it played perfectly.

4K VideoPlayer really showcases the power of AllWinner A31 VPU, as you can see your video file lists in thumbnail, and all 15 thumbnails are playing your videos. You can also open several videos and arrange them in different windows. I tried with 4, and they all seemed to play simultaneously smoothly. Watch the video below to see what it looks like. It may not be that useful, but I find it’s pretty neat.

CS868 Benchmarks

I’ve installed both Antutu 3.3, and Quadrant, but the latter refused to run.

CS868_Antutu

T428 got about 15200 points, and as expected CS868 gets a lower score with 10,559 points. The RK3188 device is almost twice as fast when it comes with RAM, and CPU integer and floating point scores, which is due both because of the difference architecture (Cortex A7 vs Cortex A9), and frequency (1.0 GHz vs 1.6 GHz). The GPU scores are about the same, although I expected A31 to outperform RK3188 in this particular test. The flash write speed seems much better in CS868 compared to T428 (35.8MB/s vs 7.1 MB/s), but I’m not sure how reliable this test is.

Quadrant and Antutu system information show the CPU frequency ranges between 120 and 1008 MHz, the screen resolution is 1280×720, there’s a total of 1660 MB RAM available to the system, the rest being probably reserved for the VPU, and about 1200 MB are available.  The 16GB NAND flash is partitioned into 2 partitions: a 1GB partition for apps with 746MB available, and a 12.24 GB partition that is basically empty.

Inside CS868

CS868 looks like a pain to open, so I skipped that part. Luckily, Linuxium did it before me, and we can still have a look inside.

(Click to Enlarge)

Click to Enlarge

The board is fitted with a largish heatsink.

(Click to Enlarge)

(Click to Enlarge)

Once we removed it we can see AllWinner A31, the 16GB flash, and 4 RAM chipsets, but the pictures are quite not clear enough the see the name of the components. [Update: Better pictures are now available on G+ Mini PCs' Community]

(Click to Enlarge)

(Click to Enlarge)

On the other side, we’ve got four more RAM chipsets, and flash, as well as what looks like a Realtek Wi-Fi module. There are also 6 pads (LED, 3V3, D-, D+, GND, and WPS), but none of those should be useful for serial access. Maybe it’s now possible to debug using D-/D+ pins (USB), I don’t know.

Conclusion

CS868 mini PC has potential, but as it stands the firmware need some improvements, as HDMI audio may cut, and once Wi-Fi failed to initialize. I also had to re-install firmware since the device refused to boot, however I may be partially at fault here, as several times I just disconnected and reconnect power to reboot the device without using the power button first. Performance wise, CPU performance is much slower than RK3188 based devices, and 3D GPU tests appear to be roughly equal according to Antutu, so A31 devices may have to be priced lower than RK3188 to become more interesting. Video playback is where CS868 stands out, it managed almost all files I threw at it, with the only issue being WMA audio, and some long buffering time with a few videos. HDMI pass-though could be a nice feature to have for some.

Concerning Linux support, the main advantage of AllWinner A31 devices such as CS868 is that the source code for Linux and U-boot is already available, and this may take a few more months before RK3188 source shows up. However, performance in Linux is likely to be poor for a quad core devices, and GPU acceleration won’t be available due to the PowerVR GPU. Ian Morrison ran a subset of Phoronix Suite tests in a chroot in Android, and found that for some tests results are about the same or even lower than Rockchip RK3066 devices, mostly those relying on single core performance.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Tronsmart MK908 Quad Core HDMI TV Stick Review

April 27th, 2013 14 comments

Yesterday, I published some pictures of MK908, and this morning I updated it to the latest firmware, so it’s time to review this mini PC powered by Rockchip RK3188 quad core Cortex A9 SoC.

First Boot, Settings, and First Impressions

First of all, the firmware update has not changed the Home Screen, and we still get a standard Android Home Screen with an animated wallpaper. Screenshot and volume buttons are shown in the status bar, but there’s no soft power button, and no full screen button. Hopefully the power button can be added in next firmware update, and as we’ll see later the lack of full screen button is not really an issue.

MK809 Android Home Screen (Click to Enlarge)

MK809 Android Home Screen (Click to Enlarge)

As usual, About_TV_MK908I’ve gone to the settings menu to configure Wi-Fi, and I had no problem to connect. The device also supports Bluetooth (built-in), and you can setup to device with VPN, as a hotspot, and add an Ethernet or 3G USB dongle. So connectivity options look pretty good although I’ve only tested Wi-Fi. There’s an HDMI section that let you chosee between 1080p, 720p, 576p or 480p at either 50 or 60 Hz, and you can also zoom in/out to adjust the UI to your screen. However, there’s no option for HDMI audio output, so the audio will just be downmixed, and HDMI audio pass-through is not available. There are plenty of options available in Developer options including USB debugging, CPU usage, GPU usage and many more.  In the “About TV” section, we’ll find the model number (MK908), and the device is running Android 4.1.1 with Linux kernel 3.0.36+.

I’ve installed about 20 applications with Google Play including Antutu, ES File Explorer, MX Player, Temple Run 2, YouTube, Facebook.., and I had not problem here, which is quite rare. The firmware is already rooted, so you can install applications requiring root access such as Titanium backup.

All applications could run smoothly, except some games are not playable with a keyboard and mouse (Note to self: Buy some Bluetooth game controller… Done!). I could play Angry Birds Star Wars, and TurboFly HD demo, but other games such as Subway Surfers and Shadow Guns requires some other input device. I could seldom see the CPU use the full 4 cores, except with benchmarks. But to push the device a bit, I installed a large game and run Video to MP3 app in the background while playing TurboFly HD (3D games), and the device could handle the load without issues.

The device feel very snappy, everything is very smooth and responsive, and it did not hang, crash or suddenly reboot during my few hours of testing, so the firmware is stable too. For those of you who worry about overheating, you don’t need to be, as MK908 does not get hot, just a little warm, thanks to the internal heatsink.

MK908 Video Playback and Wi-Fi Performance

There are 4 media players pre-installed:

  • ES Media Player
  • Video Player
  • PPTV Phone
  • Video

But I just install MX Player, as this is one of the best player available,. If the codec is not supported by hardware, it will switch to software mode, so I made sure that H/W decoding is enabled for the video I tested.

I started testing with samplemedia.linaro.org videos from a CIFS/SAMBA share in Ubuntu:

  • H.264 codec / MP4 container (Big Buck Bunny), 480p/720p/1080p – OK, but for 1080p, the video plays for 1 or 2 seconds, then freezes to buffer a few seconds, then plays normally until the end. So this issue is minor.
  • MPEG2 codec / MPG container, 480p/720p/1080p -  OK
  • MPEG4 codec, AVI container 480p/720p/1080p – OK, but same buffering issue for 1080p as H.264/1080p
  • VC1 codec (WMV) – Fail (buffering forever)
  • Real Media (RMVB) 720p – OK for RV8/RV9/RV10, but same buffering issue as H.264/1080p
  • WebM 480p/720p/1080p – OK

I’ve also played several full movies (AVI and MKV), and they could all play flawlessly. FLV videos also played fine, but MX Player switched to software decode for most videos. However, .MOV videos from my Canon camera will buffer, but none of the mini PCs or set-top boxes I own can play those files over Wi-Fi smoothly. I did not the play 1-2s, buffer, and play again issues I experienced on samples with any of the movies I tried.

One a side note, when you play videos on this system, the status bar will automatically hide, so you can enjoy the movie full screen.

Since Wi-Fi performance seems quite good, I’ve also tried higher bitrate videos:

  • ED_HD.avi (1080p MPEG-4 – 10Mbps) – Starts out pretty good, but after a while the audio starts to cut intermittently, and in some scenes the bitrate must be too high, and video playback is affected as well.
  • big_buck_bunny_1080p_surround.avi (1080p H.264 – 12 Mbps) – Very choppy, and audio cuts though the full videos.
  • hddvd_demo_1080p.mkv (1080p VC1 – 17.5 Mbps) – It plays, but it just have to buffer the video every 10 seconds or so.
Again, I haven’t seen any Android devices pass this test over Wi-Fi, and it’s the only devices that nearly managed to play Elephant Dream smoothly.

I’ve also tested some videos and one audio filewith common Audio codecs:

  • DTS (Audio file) – Only static noise
  • AC3 – OK
  • Dolby Digital 5.1- OK
  • Dolby Digital+ 7.1 – No audio
  • Dolby TrueHD 5.1 & 7.1 – OK
  • DTS-MA- OK
  • DTS-HR – TBD, as the video fails to play.

So it seems there may be more work to be done for proper audio support.

It did not try XBMC, but Liliputing did test it, and it does not work very well for now. XBMC 12.1 won’t run at all. XBMC 13 Alpha 2 will run, but there’s no hardware video decoding support, and many playback issues.

Finally, I’ve copied one video (278 MB) between the network share and the NAND flash to test Wi-Fi performance and it  took exactly 3 minutes (1.54MB/s), and it’s one of the fastest devies, but still slower than Measy U2C which only took 2m46s (1.67MB/s).

MK908 Antutu and Quadrant Benchmarks

Both Antutu 3.3 and Quandrant Standard Edition could run in the device, which is quite rare for the latter.

MK908_Antutu

Without surprise the Antutu score (14,464) is excellent, although below the scores achieved on RK3188 tablets (18,000), but this also seems to be the case Antutu score are lower on mini PCs than tablets. As a comparison, Antutu gets up to 10,000 on MK808 (Finless ROM), but Finless ROM will also be available with MK908, and some others RK3188 mini PCs, so I’m pretty sure the score will increase with time. You’ll also notice this score puts MK908 on par with Google Nexus 10 and just a bit lower than HTC One X or Samsung Galaxy S3.

MK908_Quadrant

Quadrant Score for MK908 (Click to Enlarge)

The Quandrant score (4307) also shows the great performance of the device.

For some 2D and 3D tests looked choppy on both benchmark, although I could see most GPU tests were rendered at 50 to 60 fps. I’m not sure what causes this, and I cannot experience this issue with standard applications and games.

Rockchip RK3188 can support 1.8GHz in theory, but is clocked at 1.6GHz here, and I think it’s the same for tablets currently sold. I don’t know if it is a limitation due to the silicon, or overheating.  When I look at the system information section of the device, I can see the CPU frequency ranges between 312 and 1608 MHz, the screen resolution is 1280×672, there’s a total of of 2048 MB RAM, and 1432.80 MB are available (after running Task Killer). The 8GB NAND flash is partitioned with a 1GB partition called “Memory” in Antutu (660 MB free) and a 5818 MB partition called “SD card” (5798 MB free).

Conclusion

MK908 is the fastest mini PCs I’ve ever used, it just feels blasting fast, and the firmware is also stable, which to be honest, I did not expect since this is based on a new processor. Wi-Fi performance is excellent, and the status bar hides automatically when playing videos either with MX Player or YouTube. Video playback is pretty good too, but there’s still need to be some improvements, mainly because some VC-1 videos fail to play, and some audio codecs does not seems to be support DTS and DD+ 7.1. I’m a bit confused to why DTS-MA works however. The lack of soft power button is also a negative.

But overall, the positives far outweigh the negatives, which can all be fixed by firmware update. Speaking of which, I’ve been told the device would get a new firmware with Android 4.2 within one week.

Geekbuying sells the device for $89.99 including shipping, and it’s also available on some Aliexpress stores for the same price. It’s nearly double the price of RK3066 based device with similar features, albeit with less memory and processing power, but if you run many applications it’s definitely worth it.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Raspberry Pi Now Has Experimental Support for VP6, VP8, MJPEG and Ogg Theora Video Codecs

January 26th, 2013 8 comments

The guys working on the Raspberry Pi (mainly dom) have added preliminary support for VP6, VP8, MJPEG, and Ogg Theora free video codecs, as well as Ogg Vorbis audio codec. Unlike H.264, MPEG-2 and VC1, those are not handled by the hardware video decoder in Broadcom BCM2835 processor, but are accelerated by the Videocore GPU. This means that only SD (and possibly 720p) videos are supported for those codecs.

480p VP8 Video Playback in the Raspberry Pi

480p VP8 Video Playback in the Raspberry Pi

The best way to get support is probably to patiently wait for the Raspberry Pi foundation to release a new Raspbian image, but in case you couldn’t possibly wait, here are the steps to follow:

  1. Download and run Hexxeh’s rpi-update script in the Raspberry Pi in order to get the very latest build:
    wget https://github.com/Hexxeh/rpi-update/raw/master/rpi-update
    chmod 755 rpi-update
    sudo ./rpi-update
  2. Add the following two lines to /boot/config.txt:
    start_file=start_x.elf
    fixup_file=fixup_x.elf
  3. Reboot the Raspberry Pi
  4. The GPU firmware is now updated, but you still need the latest version of omxplayer. You  have two choices:
    1. Wait for the next build to be available on http://omxplayer.sconde.net/ (should be there in a few days).
    2. Build it yourself.
  5. I chose number 2 :). We’ll cross-compile omxplayer since we don’t have all day (and maybe more). First get the Rpi toolchain in a Linux build machine (Ubuntu 12.04 64-bit in my case):

    mkdir -p /usr/local/bcm-gcc
    pushd /usr/local/bcm-gcc
    sudo git clone git://github.com/raspberrypi/tools.git
    export PATH=$PATH:/usr/local/bcm-gcc/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin
    popd

  6. We need a root file system for the build. Since we may need to install missing packages, I’ll run an NFS server in the Raspberry Pi and access the rootfs via NFS. So let’s configure the Raspberry Pi as a NFS server first:
    sudo apt-get install nfs-kernel-server nfs-common rpcbind
    sudo dpkg-reconfigure rpcbind
    sudo /etc/init.d/rpcbind restart

    Then edit /etc/exports as root (sudo) and add the line:

    / 192.168.0.0/24(rw,no_root_squash,async,no_subtree_check)

    Then restart the NFS server

    sudo /etc/init.d/nfs-kernel-server restart
    sudo exportfs -a
  7. Now let’s mount the NFS share in the build machine:
    mkdir ~/edev/rpi/nfs
    sudo apt-get install nfs-client
    sudo mount -t nfs 192.168.0.107/ ~/edev/rpi/nfs
  8. Let’s retrieve omxplayer source code:
    git clone git://github.com/huceke/omxplayer.git
    cd omxplayer
  9. Modify Makefile.include as follows:
    USE_NFS=1
    FLOAT=hard
    ifeq ($(USE_NFS), 1)
    NFSROOT :=/home/jaufranc/edev/rpi/nfs
    SDKSTAGE :=$(NFSROOT)
    TARGETFS :=$(NFSROOT)
    TOOLCHAIN :=/usr/local/bcm-gcc/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian
    HOST :=arm-linux-gnueabihf
    SYSROOT :=$(NFSROOT)
    else
    BUILDROOT :=/home/jaufranc/edev/rpi/bcm-rootfs
    SDKSTAGE :=/home/jaufranc/edev/rpi/bcm-rootfs
    TARGETFS :=/home/jaufranc/edev/rpi/bcm-rootfs
    TOOLCHAIN :=/usr/local/bcm-gcc/tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi
    HOST :=arm-bcm2708hardfp-linux-gnueabi
    SYSROOT :=$(TOOLCHAIN)/tools/arm-bcm2708hardfp-linux-gnueabi/sysroot/
    endifJOBS=8CFLAGS := -isystem$(PREFIX)/include
    CXXFLAGS := $(CFLAGS)
    CPPFLAGS := $(CFLAGS)
    LDFLAGS := -L$(BUILDROOT)/lib
    LD := $(TOOLCHAIN)/bin/$(HOST)-ld –sysroot=$(SYSROOT)
    CC := $(TOOLCHAIN)/bin/$(HOST)-gcc –sysroot=$(SYSROOT)
    CXX := $(TOOLCHAIN)/bin/$(HOST)-g++ –sysroot=$(SYSROOT)
    OBJDUMP := $(TOOLCHAIN)/bin/$(HOST)-objdump
    RANLIB := $(TOOLCHAIN)/bin/$(HOST)-ranlib
    STRIP := $(TOOLCHAIN)/bin/$(HOST)-strip
    AR := $(TOOLCHAIN)/bin/$(HOST)-ar
    CXXCP := $(CXX) -E

    PATH := $(PREFIX)/bin:$(BUILDROOT)/output/host/usr/bin:$(PATH)
    CFLAGS += -pipe -mfloat-abi=$(FLOAT) -mcpu=arm1176jzf-s -fomit-frame-pointer -mabi=aapcs-linux -mtune=arm1176jzf-s -mfpu=vfp -Wno-psabi -mno-apcs-stack-check -O3 -mstructure-size-boundary=32 -mno-sched-prolog
    LDFLAGS += -L$(SDKSTAGE)/lib -L$(SDKSTAGE)/usr/lib -L$(SDKSTAGE)/opt/vc/lib/
    INCLUDES += -isystem$(SDKSTAGE)/usr/include -isystem$(SDKSTAGE)/usr/include/arm-linux-gnueabihf -isystem$(SDKSTAGE)/opt/vc/include -isystem$(SYSROOT)/usr/include -isystem$(SDKSTAGE)/opt/vc/include/interface/vcos/pthreads -isystem$(SDKSTAGE)/usr/include/freetype2

    You’ll need to change NFSROOT variable to where you mounted the NFS share.

  10. We’re now ready to cross-compile omxplayer:
    make ffmpeg
    make -j8
    make dist

    This will create a omxplayer-dist.tar.gz that you can copy in the Raspberry Pi:

    sudo cp omxplayer-dist.tar.gz ~/edev/rpi/nfs/

    There may be missing dependencies during the build. If it’s the case, you need to install some development package in the Raspberry Pi. Refer to my “How-to fix common build error tutorials“, if the build fails.

  11. Back to the Raspberry Pi, let’s install it:
    cd /
    tar xzvf omxplayer-dist.tar.gz
    cd omxplayer-dist
    sudo cp * / -rf

That’s all. Now we can try the files tested by dom:

e.g.: omxplayer big_buck_bunny_trailer_480p

The VP8 and Ogg Theora videos played very smoothly, but I just got a black screen for VP6 and MJPEG videos. since it could not detect the video stream. The firmware has been fixed for VP6 support, and omxplayer for MJPEG support, so all 4 files can now play.

If you don’t want to build omxplayer by yourself, you can download the binary I’ve built: omxplayer-dist.tar.gz.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

$6.80 Easycap DC60 USB Video Capture Card

December 24th, 2012 12 comments

You may have some old VHS tapes that you want to digitize to play on your computer or media player, or don’t feel like spending money on an HD recorder for your satellite or cable TV box, but still would like to record your favorite programs. It’s actually possible to do so for less than $7 thanks to USB video grabbers. Those USB capture cards are nothing new, but I did not know the price had come down that much. One of the cheapest capture card is Easycap DC60 (clone?) that sells for $6.80 on Aliexpress, and runs on Windows, and (if you are lucky) in Linux.

The device provides stereo audio input, composite input and S-Video input. It is sold with a USB cable to connect it to your computer. CD is normally provided with Windows drivers and program. All you need is a Windows 2000/XP computer with a free USB2.0 port, 256 MB RAM or more, 600MB available storage, and at least 1024×768 screen resolution. The program (Ulead Video Studio 8.0 SE DVD) needs  Microsoft DirectX 9.0 and Microsoft Media Player 7.1 or greater to work. Feedback is good on Aliexpress, but not so much on Amazon, as it’s not exactly straightforward to install and configure. Those who succeeded appear to be satisfied.

I also mentioned potential support for Linux in the introduction, as the instructions are available online. The problem is that Chinese websites sell Easycap USB capture card clones with at least 4 different hardware solutions:

  • Syntek STK1160 used in the “original” device, and works in Linux
  • Empia EM2860 – Works in Linux
  • Somagic SMI-2021CBE – Should work in Linux, but does not work with ARM Linux yet.
  • Fushicai UTV007 – Does not work in Linux.

The re-sellers won’t usually mention which solution their device is based on, so if you intend to use such a device with Linux, you’ll have to take your chance. The Easycap DC60 model sold on Dealextreme ($8.90) appears to be based on Somagic USB video bridge.

Onebir, a regular reader and commenter on this blog, suggested me to try it with one the mini PCs and write instructions, as some people might be interested to record and watch Cable TV programs with their HDMI TV Dongles. In many countries, cable TV is now broadcasted in HD, but recording with such device would downscale the resolution to NTSC/PAL, so I’m not sure that many people would be interested. If you are, please leave a comment, and if enough people beg ask me to give it a try, I’ll buy one. I doubt it will work with Android, so it would be done in Linux which narrow down the sticks that can be used, especially since we’d also need proper video playback of. If somebody has already done something like that, just let us know.

Merry Christmas Everybody!

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Categories: Hardware, Linux, Video Tags: Linux, capture, easycap, mini-pc, video

XBMC for Linux on AllWinner A10 Devices? It Works! (Sort of)

November 12th, 2012 6 comments

Following the lack of support by AllWinner for the video engine libraries (CedarX), I had more or less given up on hope XBMC for Linux would ever run properly on AllWinner A10/A13 hardware. But recently, I found out some progress had been made using existing libs, and saw the Pengpod Tablet video showing XBMC running in Linux fairly smoothly.

So I decided to cross-compile XBMC by following the instructions available at http://linux-sunxi.org/XBMC and trying to run it in Linaro ALIP 12.04 rootfs in my Mele A1000. Finally, I managed to cross-compile XBMC, but the performance was very poor in the GUI (6 to 12 fps) and I was unable to play videos and my serial console was flooded with messages like:

[DISP] not supported image0 pixel sequence:216 in img_sw_para_to_reg

[Update: I managed to have XBMC Linux running & playing videos on Mele A1000 by using j1nx image (rootfs + kernel). I would first exhibit the exact same issue I had, but those where fixed:

1. To solve the video playback issue I had to modify script.bin as follows:

fb0_pixel_sequence = 1
fb0_scaler_mode_enable = 0

2. I add to modify XRES/YRES (1024x768) in S99xbmcinit in order to start the UI when outputting to VGA with this image or EGL would failed to initialize.

XBMC (alpha) is currently optimized for 720p (1280x720) resolution, so although I get up to 12 fps using VGA output with 1024x768 resolution, the UI is rendered at over 40 fps when the Mele outputs to HDMI @ 720p.

Source: http://www.j1nx.nl/buildroot-xbmc-on-mele-a1000-allwinner-a10/#comment-1244]

But Jasbir managed to get XBMC armhf running the the Hackberry using an Ubuntu 12.10 armhf image by “Guillaume” and natively compiling XBMC in the Hackberry board. Alternatively, if you’ve got an armel rootfs, you could try xbmca10.deb by Neal Peacock (the person behing the Pengpod Linux tablets).

In this post, I’ll still describe the steps I followed to build and run XBMC in Linaro ALIP rootfs (and hopefully I’ll eventually find the reason behind the performance issue),  ans show Jasbir results with XBMC armhf on the Hackberry.

XBMC ARMHF Build Instructions

Since we want to run XBMC armhf, we’ll first need a Linux image with an armhf rootfs. I’ll use Lianro ALIP 12.10 rootfs, following the hardware packs instructions. Insert an SD card in the build machine, and make it bootable:

wget https://raw.github.com/cnxsoft/a10-tools/master/a1x-media-create.sh
wget http://dl.linux-sunxi.org/nightly/2012.11.06/mele-a1000-vga_hwpack_2012.11.06.7z
wget http://releases.linaro.org/12.10/ubuntu/precise-images/alip/linaro-precise-alip-20121021-453.tar.gz
sudo ./a1x-media-create.sh /dev/sdb mele-a1000-vga_hwpack_2012.11.06.7z linaro-precise-alip-20121021-453.tar.gz

Now remove the SD card from the build machine, and insert it in the Mele A100 (or another A10 device) to install dependencies to build XBMC:

sudo apt-get build-dep xbmc
sudo apt-get install swig default-jre cmake libgtk2.0-bin libssh-dev
sudo apt-get remove libegl1-mesa libegl1-mesa-dev libegl1-mesa-drivers libgles2-mesa libgles2-mesa-dev
sync

Now back to the build machine. Checkout XBMC source code:

mkdir xbmc-linux
cd xbmc-linux
git clone git://github.com/empatzero/xbmca10.git

and extract the image from the SD card and mount the rootfs:

sudo dd if=/dev/sdb2 of=rootfs_xbmc.img
mkdir rootfs
sudo mount -o loop rootfs_xbmc.img rootfs

Create symlinks to the mounted libraries (requires full path):

sudo ln -s /home/jaufranc/edev/mele_a1000/xbmc-linux/rootfs/lib/arm-linux-gnueabihf /lib/arm-linux-gnueabihf
sudo ln -s /home/jaufranc/edev/mele_a1000/xbmc-linux/rootfs/usr/lib/arm-linux-gnueabihf /usr/lib/arm-linux-gnueabihf
sudo ln -s /home/jaufranc/edev/mele_a1000/xbmc-linux/rootfs/usr/include/arm-linux-gnueabihf /usr/include/arm-linux-gnueabihf

Enable hard-float in in xbmca10/tools/a10/depends/depends.mk:

USEARMHF=1

and Update the following keys around line 50 in the same file:

#where is your arm rootfs
SDKSTAGE=/home/jaufranc/edev/mele_a1000/xbmc-linux/rootfs
#where is your xbmc install root
XBMCPREFIX=/allwinner/xbmc-pvr-bin$(HF)
#where is your toolchain
TOOLCHAIN=/usr/arm-linux-gnueabi$(HF)

Install some tools required to build XBMC, and create a symlink for the ARM g++ compiler:

sudo apt-get install cmake shtool swig autoconf autotools-dev automake libtool default-jre gawk gperf zip g++-arm-linux-gnueabihf autopoint
sudo ln -s /usr/bin/arm-linux-gnueabihf-g++-4.6 /usr/bin/arm-linux-gnueabihf-g++

Create the tarballs directory in the user’s root directory as well as XBMC install directory:

mkdir ~/tarballs
sudo mkdir -p /allwinner/xbmc-pvr-binhf
sudo chown [user].[user] /allwinner/xbmc-pvr-binhf -R

Replace [user] with your username.

You can now cross-compile XBMC for ARM:

cd xbmca10/tools/a10/depends
make
make -C xbmc
cd ../../..
make install

This will take a little while, and once the build completes, copy XBMC binaries to your SD card:

cp -r /allwinner/xbmc-pvr-binhf /allwinner/xbmc-pvr-binhf

All good! Time to give XBMC a try. Insert the SD card in your A10 device, change some permissions, and run XBMC:

chmod 666 /dev/mali /dev/ump /dev/cedar_dev /dev/disp
chmod -R 666 /dev/input/*
chmod -R 666 /dev/snd/*
export A10HWR=1
cd /allwinner/xbmc-pvr-binhf/lib/xbmc
./xbmc.bin

After a few seconds, you should now be able to access XBMC user interface. In case you have issues, you can have a look at the log in ~/.xbmc/temp/xbmc.log.

XBMC A10 ARMHF Build on the HackBerry

First of all, this is a development version, so you should not expect a perfect user experience. There should be bugs, crashes, missing features and performance might not be optimal yet.

If you want to have a quick look, watch Jasbir video of XBMC armhf on the HackBerry board.

I did try to use Jasbir image on the Mele A1000 (After updating U-Boot and U-Boot SPL) to evaluate the current status of XBMC on A10, but I could only see XBMC boot logo before the system reboot, as XBMC actually terminates, after apparently thinking I pressed some key….

At the current stage of development, XBMC for Linux appears to work pretty well on AllWinner A10 devices, but there is still more work to do before users can enjoy it on their devices.

If you want to give it a try on your hardware, check out Hackberry A10 – XBMC blog post.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

200 C# Programming Video Tutorials

September 5th, 2011 No comments

Last month, 200 Android Development Video Tutorials by TheNewBoston had been uploaded to ChangingTheUnknown Youtube channel. They have now prepared another playlist with 200 C# programming video tutorials for beginners in C#.

To give you an idea of what you would learn, here are the titles of the first 10 tutorials:

  1. Introduction and Installing C# 2010
  2. Changing Forms Properties
  3. Showing MessageBoxes
  4. Variables
  5. Changing Properties With Code
  6. If Statements
  7. More on If Statements
  8. If Statements pt 3
  9. Switch Statements
  10. Mathematical Operators

You can watch the first tutorial: “C# Beginners Tutorial – 1 – Introduction and Installing C# 2010” below.

 

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Categories: Programming, Video Tags: c#, programming, tutorial, video

Autoplay Embedded Youtube Videos

September 3rd, 2011 No comments

You may want to autoplay some Youtube videos when you  embed them in a website. By default, this is disabled (which is actually good). Here are the simple instructions to enable autoplay:

Go to the Youtube video you’d like to embed in your website, click Share then Embed and copy the iFrame code which should look like:

<iframe width=”560″ height=”345″ src=”http://www.youtube.com/embed/hOrJqV13TKs?rel=0″ frameborder=”0″ allowfullscreen></iframe>

In order to enable Youtube autoplay, simply change the code as follows:

<iframe width=”560″ height=”345″ src=”http://www.youtube.com/embed/hOrJqV13TKs?rel=0&amp;autoplay=1” frameborder=”0″ allowfullscreen></iframe>

That’s all.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Categories: Video Tags: video, youtube