It is not uncommon that you have a DSLR and you wonder that it would be awesome if you can use it as a webcam. Have video calls with your family and friends using your high definition DSLR camera. Recording videos directly from your DSLR camera into your computer or us it for live view.
I was trying to do the same thing and searched over the internet, found some software that can do that but are not free and/or won't work on my Linux machine.
But recently found another way of achieving it. Basically making my DSLR work as a capture device, that is /dev/video*.
To do that you need a utility named gphoto2. First you have to check whether your camera is in the supported list of cameras, For that go through the list of supported cameras here.
I have a Canon EOS 100D, which is in the list, so it works for me.
Now attach your camera with your machine using the USB cable, and execute the following command in the terminal (linux shell).
This should show you the camera name and abilities and other information, this shows that your camera is detected.
Now to the next step,
You need "v4l2loopback kernel module" to make a virtual device in /dev/video* for your camera. This can be installed by executing the following command,
sudo apt-get install v4l2loopback-utils
If all goes without any error, you can execute the following command to make a virtual camera device for your DSLR connect to the machine.
modprobe v4l2loopback gphoto2 --capture-movie --stdout | gst-launch-0.10 videotestsrc ! v4l2sink device=/dev/video1
Now you can use this new device /dev/video1 as your webcam.
For Example you can configure Skype to use this as a Video device for video calls.
You might have faced a problem in Ubuntu using chrome when you visit a website that has text in Urdu and it doesn't render properly. Mostly the letter "ے" is not rendered and connected correctly with other letters.
Now font rendering is a very complex process which involves (but not limited to) positioning (pen algorithm), layout and Bidirectional text processing. The problem mentioned above is related to layout and seems like some layout information in the font being used is wrong or missing.
Now this is very annoying and becomes very difficult, and sometimes you even feel like that you are deciphering an encoded text by analysing the broken Urdu text.
This can be easily fixed by first installing a proper Urdu font by executing the following command,
sudo apt-get install fonts-nafees
After installing this you have to change the standard font in your browser. Ubuntu by default uses the font "Abyssinica SIL".
To change the font go to Chrome settings, in settings search field search for "Web Content" and client on "Customize Fonts".
Now change the Standard font to "Nafees". This should correct the rendering of Urdu text in chrome.
This problem only occurs in the websites which do not explicitly specify the font that they want to use.
A few days ago my application got rejected from AppStore :(
What they sent me was a crash log. It had a bad access exception and stack traces of a couple of threads. But the poor thing about all this was that there were no symbols in the stack traces. There were only addresses of the methods :S
I google'd this problem alot and found that there is a script named symbolicatecrash at this path:
I was just thinking of sharing my experience of Operating System implementation. So here it is. here i will tell you the steps to implement your Operating System from scratch.
It will be a small kernel implementation. It will boot and you can run small programs on it. This kernel will run on intel x86 machine.
. DJGPP compiler. . Virtual machine, I will use Bochs.
we will start from a main function. This function will be called when our operating system starts. In this function you will disable interrupts. In this function you will initialize the PIC to make first IRQ aligned with int 30 so that it does not mix up with int 1,2 and onwards.
now you are setup. you can check and execute any helloworld programs here.
you are ready to move to the next steps.
When you boot using the grub loader you will be given the start and end address of your kernel. Now here you have to implement the memory management. first you have to mark all the memory frames as not used. you will use 1 bit per each frame. Allocate byte array equal to:
size = memory /(4096*8)
where 4096 is page size.
This is your frame state array. initialize it with 0 which means all your memory is free. Now mark the frames that fall in your kernel start and end address equal to one to keep record that these frames are already used.