summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/CameraSource.cpp
Commit message (Collapse)AuthorAgeFilesLines
* DO NOT MERGE: Camera: Adjust pointers to ANW buffers to avoid infoleakEino-Ville Talvala2016-06-231-0/+29
| | | | | | | | Subtract address of a random static object from pointers being routed through app process. Bug: 28466701 Change-Id: Idcbfe81e9507433769672f3dc6d67db5eeed4e04
* skip dropped frame without timestamp checkingChong Zhang2015-08-191-7/+12
| | | | | | | also skip frame if timestamp is going backward, instead of crash. bug: 23191439 Change-Id: I179157bf67bc972b8ebf852d80653daa6e496f1c
* stagefright: ask for flex-YUV camera buffers for software encodersLajos Molnar2015-06-261-3/+7
| | | | | Bug: 13222807 Change-Id: I854b73a63cf9239311729598241725d84e8513aa
* Camera1 API: Support SW encoders for new camera HALsEino-Ville Talvala2015-06-081-0/+17
| | | | | | | | | | | | - Support new set video format/dataspace command in camera service - HALv3: Select gralloc usage flags based on format - HALv1: Pass format command directly to HAL layer - Use format/dataspace command in CameraSource - Switch all API1 recording to use metadata mode - Switch all >= HALv2 API1 recording to use kMetadataBufferTypeANWBuffer Bug: 13222807 Change-Id: I2e609b92c65792611bb1dab09e0c41c363ebbc42
* stagefright: warnings be gone, some are now errors, use clangLajos Molnar2015-04-171-4/+4
| | | | Change-Id: I81f438ae444f04c12ae27ae4ef6d073033de172c
* Update calls to IInterface::asBinder()Marco Nelissen2014-11-141-3/+3
| | | | | | to use the new static version. Change-Id: I89a5988a0ac694ffc04d88cf939e8455bf925d4c
* am c3ddddbd: Merge "release camera without holding CameraSource mutex" into ↵Chong Zhang2014-10-221-41/+58
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | lmp-dev automerge: 168799c * commit 'c3ddddbd4ec1fe2c570a25925db6b396fb83badf': release camera without holding CameraSource mutex move audio sink open/close to NuPlayerRenderer Fix freed memory references audio policy: move intializations to onFirstRef() Fix VideoFrame class layout for 64/32 bit NuPlayer: wait for renderer flush before decoder shutdown Fix uncertainty of one normal mix buffer in AudioTrack::getTimestamp send available codec buffer count with codec notification mediarecorder: set level if setting default profile stagefright: move math templates into AUtils.h NuPlayer: Fix flush mode decoder error handling Revert "Fix uncertainty of one normal mix buffer in AudioTrack::getTimestamp" GenericSource: support disconnect before NuCachedSource2 is created mediaplayer: make frame-accurate avsync configurable
| * release camera without holding CameraSource mutexChong Zhang2014-10-211-41/+58
| | | | | | | | | | Bug: 17997578 Change-Id: Iba93848ad10ba84d2d836573da7ce242c761582f
* | libstagefright: compile errorsMark Salyzyn2014-10-081-0/+1
|/ | | | Change-Id: I752d7d73f9c4939160a1ccaefc44ce1f8ffd9982
* libstagefright: 64-bit compile warningsMark Salyzyn2014-06-261-7/+9
| | | | Change-Id: I3d1146714fa23be3d4e696599b6f70cac1f9d28b
* Handle recording failure more gracefully.Ruben Brunk2014-02-181-8/+19
| | | | | Bug: 13027666 Change-Id: Iec8239bfcd293c8f466b3780e69883b97f387949
* warnings be gone.Andreas Huber2014-02-111-1/+10
| | | | Change-Id: Ie3bae3f037730e316d7fca12e7a3527973f752ef
* Camera1: Rename setPreviewTexture to ...Target for clarityEino-Ville Talvala2013-08-211-1/+1
| | | | | Bug: 10312644 Change-Id: I19976188f0359bfd177209fb40145defdae9c740
* remove uses of Surface in favor or IGraphicBufferProducerMathias Agopian2013-03-121-3/+3
| | | | Change-Id: I13d7a9553aa335bca790a3a59d389d7533c83d57
* CameraService and Stagefright: Support AppOpsEino-Ville Talvala2013-02-251-8/+19
| | | | | | | | | | | | | Camera: - Signal to AppOpsService when camera usage starts and stops - Listen to permissions revocations and act on them - Currently just kill camera connection when permissions lost Stagefright: - Pass on client name, UID to camera as needed Bug: 8181262 Change-Id: I9e33c9d05e9daa77dbb2d795045d08eb887ec8f0
* Turn off executable bit on ordinary filesGlenn Kasten2012-11-021-0/+0
| | | | Change-Id: I0abea25b58fb1d03975bed9cca40f826fcd4c5e4
* Dynamically configure the number of video buffers used by camera source, if ↵James Dong2012-08-021-3/+25
| | | | | | | | supported o related-to-bug: 6920805 Change-Id: I413bb50954cc84e32ed40bcb713842dc7b58e2b6
* Codecs: Add MetaDataMode support to software video encoders.Eino-Ville Talvala2012-07-241-0/+4
| | | | | | | | | | | | | | This support is needed to enable efficient video recording with emulator and camera HAL 2. - Update SoftAVCEncoder and SoftMPEG4Encoder to support MetaDataMode extension. - Allow CameraSource to handle opaque pixel formats, so that MetaDataMode can be used. - Remove hardware codec restriction for MetaDataMode Bug: 6243944 Change-Id: I970eb3d55542a413b6d75a78f76d3a8583155601
* Remove new camera connect API.Wu-cheng Li2012-04-191-1/+1
| | | | | | | | Applications are not resumed under the lock screen now. This API is not needed anymore. bug:5584464 Change-Id: I115daf6b647348617ec0fc05b626878c945b9b29
* Merge "Do not set camera preview display if the surface is null."Wu-cheng Li2012-03-191-3/+7
|\
| * Do not set camera preview display if the surface is null.Wu-cheng Li2012-03-191-3/+7
| | | | | | | | | | | | | | | | | | | | | | | | MediaRecorder.setPreviewDisplay() is not required if applications use MediaRecorder.setCamera(). Besides, this causes a problem when apps use Camera.setPreviewTexture. Camera service thinks the surface texture from Camera.setPreviewTexture and the surface from MediaRecorder.setPreviewDisplay are different. bug:5988937 Change-Id: Ia345705b6679ef349db6e354feaa3cc0fe8bcd8c
* | Add a new camera open API that allows taking the ownership.Wu-cheng Li2012-03-151-1/+1
|/ | | | | | | | | | | | | | The purpose is to let face unlock always get the camera successfully. What happened was the camera applications may have opened the camera in onResume under the lock screen. This API lets face unlock take the camera from the camera application. A new permission will be added, so other applicatoins won't be able to take the camera from the face unlock. bug:5584464 Change-Id: Ib3d9dcbc2161815b68db42327dc01148453704c6
* fix libgui header locationMathias Agopian2012-02-271-1/+1
| | | | Change-Id: Iec71706cdd4f29c6904993648ce873e83ef9cafe
* Move away from MediaDebug and use ADebug insteadJames Dong2012-02-101-5/+6
| | | | Change-Id: I963a3b6f79a7292891973cbeeaf3378b38629f08
* Don't call virtual functions in the destructor for audio and camera source ↵James Dong2012-02-021-4/+4
| | | | | | classes Change-Id: Ia74ffc1c0cbd7971697f5e3c476e340ec5c7727a
* Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF) DO NOT MERGESteve Block2012-01-081-11/+11
| | | | | | | See https://android-git.corp.google.com/g/#/c/157220 Bug: 5449033 Change-Id: Ic9c19d30693bd56755f55906127cd6bd7126096c
* Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF) DO NOT MERGESteve Block2012-01-061-4/+4
| | | | | | | See https://android-git.corp.google.com/g/157065 Bug: 5449033 Change-Id: I00a4b904f9449e6f93b7fd35eac28640d7929e69
* Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF) DO NOT MERGESteve Block2012-01-041-2/+2
| | | | | | | See https://android-git.corp.google.com/g/156801 Bug: 5449033 Change-Id: Ib08fe86d23db91ee153e9f91a99a35c42b9208ea
* Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF) DO NOT MERGESteve Block2012-01-031-3/+3
| | | | | | | See https://android-git.corp.google.com/g/156016 Bug: 5449033 Change-Id: I4c4e33bb9df3e39e11cd985e193e6fbab4635298
* am d0a25456: am 02740dc4: Merge "Fix log spamming during time lapse video ↵James Dong2011-11-211-2/+7
|\ | | | | | | | | | | | | recording" into ics-mr1 * commit 'd0a254566f5f0be5607b4d64839a575c888c94f6': Fix log spamming during time lapse video recording
| * Fix log spamming during time lapse video recordingJames Dong2011-11-211-2/+7
| | | | | | | | | | | | Change-Id: I4fc0809203684ebb02eaf217d7abad00aefc898f related-to-bug: 5626569
* | Rename (IF_)LOGV(_IF) to (IF_)ALOGV(_IF) DO NOT MERGESteve Block2011-10-261-21/+21
|/ | | | | | | See https://android-git.corp.google.com/g/#/c/143865 Bug: 5449033 Change-Id: I0122812ed6ff6f5b59fe4a43ab8bff0577adde0a
* When Camera is launched by media recording framework, stagefright controls ↵James Dong2011-08-241-0/+9
| | | | | | | the stop and release. Change-Id: Ic79a60dad0f617a845211d3fbe146c1648a71da3 related-to-bug: 5205804
* Do not release recording frames if camera is goneJames Dong2011-08-051-1/+1
| | | | | Change-Id: Ia6038c1a3ca17207e43a955ec47c42cdff1f5a76 related-to-bug: 5129465
* Pass camera frame metadata from camera service to Java.Wu-cheng Li2011-08-021-2/+4
| | | | | bug:4460717 Change-Id: I2fae6e1dfca6b8f3a5ee5716fc7817f5417bf657
* Let the media recording framework release the Camera object when it is the ownerJames Dong2011-07-201-15/+35
| | | | | | related-to-bug: 5050535,5036813,5051707 Change-Id: I88e10f65f087931e7f95ab26a018d59f7361103e
* Add support for TI H264 encoderDandawate Saket2011-07-121-0/+4
| | | | | | | | | | Add support for TI H264 encoder and quirks for buffer allocation. Temporary switching to baseline profile till ctts patch is defaulted as per profile detection. Change-Id: I1d56184b9c5d5f00d6c63aef7e058f3d56b84cef Signed-off-by: Dandawate Saket <dsaket@ti.com> Signed-off-by: Iliyan Malchev <malchev@google.com>
* Release camera if CameraSource::start() has not been calledJames Dong2011-07-101-2/+23
| | | | Change-Id: I2f7e4b8501db3d80b9aa6f99d896d778bec29e8c
* Unlock the camera if media recorder fails to start recording.Wu-cheng Li2011-06-291-12/+17
| | | | | | bug:4965716 Change-Id: Icb1f7f18e9ea6c4f0427ade2ed338e7d56be5e01
* Add framework support for camcorder zoom.Wu-cheng Li2011-06-271-32/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The purpose of ICameraRecordingProxy and ICameraRecordingProxyListener is to allow applications using the camera during recording. Camera service allows only one client at a time. Since camcorder application needs to own the camera to do things like zoom, the media recorder cannot access the camera directly during recording. So ICameraRecordingProxy is a proxy of ICamera, which allows the media recorder to start/stop the recording and release recording frames. ICameraRecordingProxyListener is an interface that allows the recorder to receive video frames during recording. ICameraRecordingProxy startRecording() stopRecording() releaseRecordingFrame() ICameraRecordingProxyListener dataCallbackTimestamp() The camcorder app opens the camera and starts the preview. The app passes ICamera and ICameraRecordingProxy to the media recorder by MediaRecorder::setCamera(). The recorder uses ICamera to setup the camera in MediaRecorder::start(). After setup, the recorder disconnects from camera service. The recorder calls ICameraRecordingProxy::startRecording() and passes a ICameraRecordingProxyListener to the app. The app connects back to camera service and starts the recording. The app owns the camera and can do things like zoom. The media recorder receives the video frames from the listener and releases them by ICameraRecordingProxy::releaseRecordingFrame. The recorder calls ICameraRecordingProxy::stopRecording() to stop the recording. The call sequences are as follows: 1. The app: Camera.unlock(). 2. The app: MediaRecorder.setCamera(). 3. Start recording (1) The app: MediaRecorder.start(). (2) The recorder: ICamera.unlock() and ICamera.disconnect(). (3) The recorder: ICameraRecordingProxy.startRecording(). (4) The app: ICamera.reconnect(). (5) The app: ICamera.startRecording(). 4. During recording (1) The recorder: receive frames from ICameraRecordingProxyListener.dataCallbackTimestamp() (2) The recorder: release frames by ICameraRecordingProxy.releaseRecordingFrame(). 5. Stop recording (1) The app: MediaRecorder.stop() (2) The recorder: ICameraRecordingProxy.stopRecording(). (3) The app: ICamera.stopRecording(). bug:2644213 Change-Id: I15269397defc25cbbcae16abc071c8349c123122
* Add timestamp and data pointer checks in CameraSourceJames Dong2011-06-031-5/+5
| | | | Change-Id: I99e188f631df2257813aa7ec657d6ecfc8859d9e
* frameworks/base: some camera-interface cleanupIliyan Malchev2011-03-281-22/+0
| | | | | | | | | Methods getNumberOfVideoBuffers() and getVideoBuffer() as well as struct image_rect_struct are no longer used (instead, the necessary information is passed through ANativeWindow.) Change-Id: If4b11446fc9ccbde1f6b45bc70c0d0b8e54376eb Signed-off-by: Iliyan Malchev <malchev@google.com>
* A/V synchronization at the beginning of a recording sessionJames Dong2011-02-171-5/+3
| | | | | | | | | | | | | o do not use edts/elst boxes since these optional boxes are ignored o manipulate the first video/audio frame duration to make sure that the rest of the audio/video is in sync (ideally, we should only manipulate the vidoe frame duration, not the audio) o reduce the initial audio mute/suppression period, which is used to eliminate the "recording" sound. bug - 3405882 and 3362703 Change-Id: Ib0acfb4f3843b365157288951dc122b006299c18
* Make sure that key frame is generated for timelapse video recording if there ↵James Dong2011-01-261-1/+1
| | | | | | | | | | | | | | | | | | | | | are at least two input video frames from camera source. This will fix the stop failure issue where we have to wait n * time_interval before a key frame can be received by the file writer, where o n is the actual number of buffers advertised by the video encoder o time_interval is the interval settings for timelapse video recording specifying the time distance between neighboring input video frames The fix includes two parts: o OMXCodec will not submit all n buffers at one time, but instead submit one input frame at one time if it become available. o Timelapse camera source made available the first two input frames and do not skip them so that the first compressed output frame data can be received regardless the specified time_interval bug - 3367659 Change-Id: Ia68cc2cb0d71aa7dc54540e9ad82fae911ad530b
* Add more debugging code to track down hang during video recordingJames Dong2010-12-211-4/+11
| | | | | | bug - 3276561 Change-Id: I1e02590b23031f29bcbfc4a1064f039ed80cb862
* Revert "Allows the authoring engine to skip frame."James Dong2010-12-111-39/+16
| | | | | | | | | | | | | | o Skipping frames could lead to a lot of issues such as I frames is lost etc. It is not being used anyway. This reverts commit 53d4e0d58e2d5c18f6e026c705af833b9bdd7aba. Conflicts: media/libstagefright/AudioSource.cpp media/libstagefright/CameraSource.cpp Change-Id: I3abba1647de48db25bdc369066eb2a7ae4dedec2
* Fixed a failure from timelapse video recording because of accidental use of ↵James Dong2010-12-101-3/+6
| | | | | | | | metadata buffers bug - 3274317 Change-Id: I2c0e9fcd30c9141ce5a85e9d72cbd0baf561458b
* Release a recording frame only if mCamera exists and is not cleared.James Dong2010-12-101-2/+4
| | | | | | | and also call mCamera->stopRecording() only after CameraSource releases all the outstanding video frames sent from CameraSource to its clients (such as video encoder). Change-Id: I7eeed4e2f388e77c28668d52c24b5330d3d9ebde
* First step towards renabling Timelapse video recordingJames Dong2010-12-091-1/+6
| | | | Change-Id: I93836b066fb69d5152d3774546a9935057a1f12f
* Remove check if the target video resolution is not supported by CameraSourceJames Dong2010-12-051-17/+16
| | | | | | | | and clean up Camera is CameraSource could not created. bug - 3254411 Change-Id: I43497c450e7007de5ce027e2912b1421119e8887