Monday, August 08, 2005

Video Booth for Mobile Phones

Saw this post on . QR Code again !!! The concept is real simple. You go into this booth, record a short video and then download the video on your phone by scanning the QR Code that appears after the recording. QR code like other 2D barcodes can contain binary data and I assume the recorded video is converted to cell phone compatible video format and then dumped into a QR code. Once you scan the barcode the application recognizes that the data is binary data and after probing the mime type of the file launches the approriate player to display the video.

Download video on your phone without Bluetooth, Infrared or data service ???? amazing aint it... Now it seems easy with using a 2 dimensional barcode that can encode images and even video into a static image but I assume there is a very small limit to the size of the video that can be encoded. A 2 dimensional barcode does have its limitations on the size of data encoded and if you make the barcode big enough you can run the risk of having the barcode tooo big to scan.

Most Japanese phones out there are excellent pieces of hardware with a cool cool camera but lets think global here. Would such an app be popular in US or Europe or any other part of Asia ??? could be ... there are plenty of malls all around the place.

Whats gets me really interested in this though is the fact that I download a Video clip using my camera. Cannot stress this fact enough. No cables, No Wireless service .. No Bluetooth ..... aint this great.
Offcourse there is a limit to the amount of data that you can download and the speed of download when u are using the camera.... In the above case they were using just one 2d barcode to get the video clip but since the barcode is displayed on a LCD screen ... It could easily have been 3 or 4 barcode frames. Since the average time to decode a barcode is 200 ms , you could have the user point the camera to the screeen for 1 second and capture 5 different barcodes.. These inturn would then be appended together to create one huge clip .....

I am sure there might be people reseaching this area and the way I see it there are quite a few questions that need to be answered before actually coming up with a working scheme. But its worth a try ...

Trackback :

Friday, August 05, 2005


"CamReader, including barcode scanner is superior image processing software that is designed for mobile terminal (cell phone etc).
CamReader enables you to develop superior image processing application on the resource-limited devices."

CamReader is provided by MEDIASEEK Inc. and is now available on almost all Japanese phones. I have seen their barcode scanner application and its really cool. Qr codes are being used widely in Japan for almost everything and MediaSeeks QR decoding engine comes pre installed on almost all KDDI devices. The devices have a cool optical focus assembly that allows the devices to focus on the code. I was looking through the documentation but since it was all in japanese, I wasnt able to make out how the embedded application actually works. I believe the calling application has to the set the zoom to a pre defined level and then invoke the decoding engine. More on this when I fond out how it really works.

Why is CamReader so interesting ?? not only does it offer barcode decoding but there is mention of OCR, Facial Recognition and even motion detection. Talk about using the camera on the device :-)... I am not sure if there is a working version of CamReader that supports all this but if it does then we have killer app in the making here. A single application that does everything. I was trying to find out their presence in the US and European markets but I guess they havent yet launched here.

As of right now, the application is primarily BREW based. I guess the next platform to cover would be Symbian as this is where the money is in Europe. I am looking forward to a public extension on Qualcomm's rack specially for Motion Navi. There is a lot of potential here specially since games are the biggest money makers in the business.

Wonder if they have a version for Brew devices in US.

Tuesday, August 02, 2005

ICAMERA_Pause() and ICAMERA_Resume()

Last week I was playing around with an applet that required me to pause the camera while it was in preview mode on a key press. Sounds simple enough !!!

To Pause the Camera

1) Check if the camera is in preview mode.

if(SUCCESS != ICAMERA_GetMode(pMe->m_pCamera, &lMode, &bPaused))
if (CAM_MODE_PREVIEW == lMode && !bPaused)

//Pause the Camera

2) The above call should return the status of CAM_STATUS_PAUSE in the callback
Function of the camera control. The AEECameraNotify structure will contain the following values.


Do any thing that you want to do while the camera is paused here.

To Resume the Camera

1) The resume call will place the camera back in the preview mode. The process is similar to the call to the Pause function.

if(SUCCESS != ICAMERA_GetMode(pMe->m_pCamera, &lMode, &bPaused))
if(CAM_MODE_PREVIEW == lMode && bPaused) //check for pause
//Resume the Camera

2) The above call returns the status CAM_STATUS_RESUME in the callback function of the camera control. The AEECameraNotify structure will contain the following values.


Once you receive this callback, the applet should automatically start receiving the callbacks with CAM_STATUS_FRAME.

Handling Suspend (EVT_SUSPEND) and Resume (EVT_RESUME) Events.

Conventional wisdom dictates stopping the camera altogether and releasing the reference to the ICamera interface when your applet receives a EVT_SUSPEND event.

NEVER NEVER NEVER let your applet release the reference to the ICamera interface when the camera is in paused state. When you receive the EVT_SUSPEND event make sure the camera is not in the paused state, if it is then put in a call to ICAMERA_Resume(). Do not know if this is a bug or a feature (J) in the ICamera but once you put the camera in the pause state and release the reference, you need to restart the device to be able to use the camera again.

if(SUCCESS == ICAMERA_GetMode(pMe->m_pCamera, &lMode, &bPaused))

if(CAM_MODE_PREVIEW == lMode && bPaused)
//you could call ICamera_Stop(), but it works without it.
pMe->m_pCamera = NULL;
//Always a good idea to null it out.
return TRUE;