Miracast ExplainedRichard Tang2013-11-02 | In this video I explained how Miracast works based on investigation I've done for the Piracast project.Correct by Design with TLA+: Single Producer Single Consumer (SPSC) Lockless QueueRichard Tang2025-02-20 | This video is part of my free book "Correct by Design with TLA+": github.com/codemonkeyricky/tla/blob/master/correct_by_design.pdf
Release package: dl.dropboxusercontent.com/u/18344710/piracast.tar.gzEndianness ExplainedRichard Tang2013-11-03 | In this video I briefly explained the implication of endianness in C programming.Piracast - Progress Update #2 (Automated Session Connect)Richard Tang2013-10-08 | Another progress update to the Miracast on Raspberry Pi project (Piracast!). The main feature added is automating the session initiation process. I also walked through a number of fixes since the last update.Miracast on the Raspberry Pi - Progress Update #1Richard Tang2013-09-20 | In this video I give a quick update of the Miracast Pi project. In short, performance seems good. There are a couple wrinkles I need to sort out still. However the 80/20 rule always apply, and the little things may take substantially longer to address.Miracast on the Raspberry Pi (with audio)Richard Tang2013-09-04 | Update to the Miracast project on the Pi. I discussed about the audio support implementation, performance issues, as well as challenges associated with the setup.Miracast on the Raspberry Pi (A first sighting!)Richard Tang2013-08-23 | In this video I demonstrated a simple, video only implementation of Miracast on the Raspberry Pi.
The latency seems acceptable, and the system uses 20~30% of the CPU.Raspberry Pi Miracast Support InvestigationRichard Tang2013-08-17 | Miracast allows you to setup a connection between your phone and your TV (if both endpoints support Miracast) and mirror the phone screen to the TV.
In this video I have documented the process I went through to investigate adding Miracast support to the Pi.
I think I now have enough information to build my own Miracast receiver using the Pi.Setting Up Wifi Direct on the Raspberry Pi with TL-WN725N (part 1)Richard Tang2013-08-06 | In this video I walked through the process of compiling the driver sample code used to setup a Wifi Direct connection. In the second video I'll walk through how to actually use the application.
I made the mistake of not lowering the resolution during the record. To see what I was typing clearly you will have to watch this in 1080p.
Link to part 2: http://www.youtube.com/watch?v=-HCrfkKeIM0Remote Pi Camera Streaming Field Test #2 (with Wifi Direct!)Richard Tang2013-07-28 | In this video the connection between the Pi and my Android phone was established using Wifi Direct (direct end-to-end connection without a router).
The Wifi dongle on the phone was TP-Link TL-WN725N and the phone was the Nexus 4. We determined the maximum connection range to be ~70 meter, with clear line of sight.
Wifi Direct setup with the Pi was less than obvious. I'll probably make another video showing how that is achieved.Remote Pi Camera Streaming Field Test #1Richard Tang2013-07-24 | ...Raspberry Pi Camera Streaming Application (with real Pi camera!)Richard Tang2013-07-22 | This is an update to the Raspberry Pi camera streaming application using the actual Pi camera. The executable I used can be found here: http://www.raspberrypi.org/phpBB3/viewtopic.php?f=43&t=51476Raspberry Pi Video Chat Application (Proof of Concept)Richard Tang2013-06-25 | Proof of concept video chat application using the Raspberry Pi.
Video was simulated by sending a pre-encoded H264 file (with the Pi). Audio was encoded/decoded on the fly with Opus codec.
Audio delay seemed to be introduced by wireless connection. I have done another test where both Pi's are connected to a wired connection and the inherent audio delay is much less noticeable.Extending Car Remote Range with your Head (Confirmed!)Richard Tang2013-06-01 | My wife told me, according to Reddit, you can extend your car remote range by pressing the remote against your chin. I didn't believe her, so we decided to test it out. This trick actually works shocking well. I was able to extend the car remote range by 2 to 3 times as shown in the video.
The Pi camera is not available for purchase in Canada yet, so I streamed a simple checker patterned in this demo. I'll get the camera as soon as it's available in Canada.
The application is currently available as an in-progress app on the Pi Store: http://store.raspberrypi.com/projects/pi_streamer I'll release the final app once I have the actual camera module.How to get QT5 running on the Raspberry Pi (as of Mar 2013)Richard Tang2013-03-03 | This is just a quick video showing my Raspberry Pi running QT5. The instruction I found on the internet were mostly outdated or not applicable (I don't have a Linux machine) so I decided to post what I did to get it running.
Detail instruction: 1. On the Pi: sudo vi /etc/apt/sources.list 2. Append: deb http://twolife.be/raspbian/wheezy main 3. Exit vi 4. Issue: sudo apt-get update 5. Issue: sudo apt-get upgrade // this will take a while. More than an hour for me. 6. Issue: sudo apt-get install libqt5-* // this installs all libqt5 libraries 7. Download the Cinematic Experience source here: http://quitcoding.com/?page=work#cinex 8. Unzip the source into a folder of your liking. 9. Navigate into your unzipped directory. 10. Issue: qmake // this will generate the make file 11. Issue: make // compile 12. Issue: ./Qt5_CinematicExperience // run!
http://ricky-tee.blogspot.ca/2013/03/running-qt5-cinematic-experience.htmlRaspberry Pi Remote Camera Application (Proof of Concept)Richard Tang2013-01-06 | I implemented a remote camera application using two Pis. One as a camera/h264 encoder the other as a display/h264 decoder. Since the camera module has not been released yet, the camera input was faked using a rolling frame buffer.
The end result was very encouraging. I was able to stream 720p @ 30 fps at run time. I'm very excited about the release of the camera module!
Setup: 1. Encoder Pi powered by battery bank. 2. Decoder Pi powered by PC, connected to the display. 3. Both Pis are connected to the internet via WiFi.
Data flow: 1. Encoder generated fake raw frame buffer input. 2. Encoder services frame buffer at 16.6ms (30fps). 3. Encoder encodes the data using h264 hw encoder and sends it to the decoder via UDP. 4. Decoder receives the data. 5. Decoder decodes the received data using h264 hw decoder. 6. Decoder outputs it on screen.
Note: 1. The encoder generated roughly 10kB/s of data. The input frame data clearly is not representative of real video traffic. But the implementation should scale appropriately when the camera module is released.Kinect Multi-Touch ScreenRichard Tang2011-08-01 | Multi-touch screen implementation using a standard 24'' monitor and a Kinect. Skip to 0:38 to see it running.
Tools: openFrameworks, OpenNI, Armadillo
Source: github.com/codemonkeyricky/KinectMultiTouchkinect portal turretRichard Tang2011-05-02 | A quick implementation of the turret from Portal using Kinect and OpenNI.Kinect Media PlayerRichard Tang2011-04-04 | The project was developed in Ubuntu using QT + Phonon as the frontend/media stack, with OpenNI + NITE for the motion control input.
Let me know if you have any questions/feedback. You can reach me at: code.monkey.ricky at gmail dot com