| 
                   | 
               
                  
                   | 
            |
The Onboard Camera API provides functionality to control a digital camera and to request and receive specific image data from it. Still or video images may be captured. A camera may be controlled with its output media going into a non-Symbian OS sink (for example, into hardware), or it may be controlled with output going into Symbian OS.
The API defines basic common operations, but is also extensible to allow for proprietary properties.
The Onboard Camera API provides images to clients. A client may be an application with image requirements, or the Multimedia Framework.
Clients have specific priorities and may pre-empt others in their interactions with the camera. When a camera client needs to share the camera with another component, it creates a handle to the camera and pass this handle to the component.
            Platform security requires that users application have
            UserEnvironment capability to create a Camera object. 
            
         
            Licensees and partners implement the camera API for the camera hardware
            on their phone. The implementation can be a static DLL or an ECom plug-in. All
            cameras are ECom plugins sub-classed from the CCameraPlugin class.
            
         
When a new camera object is required, the ECam library requests a camera plugin from the ECom framework. When more than one ROM based plugins have been registered on the platform, the one with the highest version defined in its resource file is selected.
Client Applications can use the API for a number of tasks, including:
The key classes that make up the Camera API are as follows.
                  CCamera provides the base class for camera
                  devices. This is the interface that the client application uses to communicate
                  with the camera. It provides all the functions necessary to control, and
                  acquire images from, the camera. 
                  
               
                  MCameraObserver2 is an observer class which
                  permits access to picture data as descriptors, bitmaps or chunks. It defines an
                  event-handling interface that is called when events are generated from use of
                  the camera APIs, or from external sources such as the camera being plugged or
                  unplugged. 
                  
               
                  MCameraObserver is an earlier version of this
                  callback interface. 
                  
               
                  TCameraInfo provides information about the
                  camera. This includes: the version number and name of camera hardware, camera
                  orientation and whether the camera supports still image capture. 
                  
               
                  MCameraBuffer is the buffer class used by
                  MCameraObserver2 to pass back view finder data, images and
                  video frames. It presents an API for the client to choose in which way it
                  accesses the picture data (descriptor, bitmap or kernel chunk). 
                  
               
                  TECAMEvent is a simple event class, containing
                  a UID to identify the event and a status code, passed to
                  MCameraObserver2 on completion of requests, when control
                  of the camera switches, when camera hardware settings change, or due to
                  external events such as the camera being plugged in.