summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/CameraSource.cpp
Commit message (Collapse)AuthorAgeFilesLines
* 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
* Fixed a race condition where some recording frames may not be released.James Dong2010-11-151-20/+3
| | | | | | | | | | When startRecording() is called before setListener(), recording frames are sent right after startRecording(), but there is no listener to release the recording frames. This causes the hang in media server. bug - 3166356 Change-Id: I19366ca682ef9f6b847590c190c30a15ed32b8e4
* Separate the key for audio sampling rate and video frame rate in MetaData.hJames Dong2010-11-111-1/+1
| | | | Change-Id: Ia33befaa7e6df8762703002d01aa79c04f15f040
* Don't change the video recording frame rate if it is not requested.James Dong2010-10-251-0/+15
| | | | | | | | | | | o set the default video frame rate to the current frame rate being used o add check on whether the requested frame rate is supported o fix an issue where the hardware video encoder setting was bypassed o increases the max frame rate from 30 t0 120 frames per second the actual frame rate will be clipped if the requested frame rate is too high when recording starts by checking the hardware encoder capabilities Change-Id: I1b47671d74da0ebcb9601bdca390d430cc048fbc
* Fix an issue where the video size was incorrectly retrieved from preview sizeJames Dong2010-10-201-1/+13
| | | | | | bug - 3115814 Change-Id: I6aa59b3182ceee35c6d6ef54ff520f81077873f0
* Make camera source ready for handling meta-data video buffers.James Dong2010-10-191-6/+50
| | | | | | bug - 3042125 Change-Id: I877b265c6bf8e0593121c8d5a95ae5599cdc6fb9
* 0-memcpy video recording frameworkJames Dong2010-10-091-1/+22
| | | | | | | Part III: Move startRecording() call earlier, asking camera hal to allocate video buffers before CameraSource.start() is called. Change-Id: I3f1d7d5636ca2644fe52af61f297d48c6b1ce89d
* Move Camera specific logic out from StagefrightRecorder to CameraSourceJames Dong2010-10-081-37/+345
| | | | | | | o updated comments and streamlined the logic in checkVideoSize() and checkFrameRate() as suggested Change-Id: I49d04ac7998d4a215997aa63555dfb6e814e38d3
* Implemented frequent read returns for quick stop in time lapse.Nipun Kwatra2010-09-171-1/+1
| | | | | | | | | | | | | | | | | | | If the frame capture interval is large, read will block for a long time. Due to the way the mediaRecorder framework works, a stop() call from mediaRecorder waits until the read returns, causing a long wait for stop() to return. To avoid this, we return a copy of the last read frame with the same time stamp if a frame is not available quickly. This keeps the read() call from blocking too long. This method is triggered when startQuickReadReturns() is called on CameraSourceTimeLapse. In the still camera case, also using waitRelative on Condition instaed of sleeping, so that we can wake it up. Also for the idle check instead of sleeping, we now wait on a condition variable, which is woken up when the last takePicture callback gets called. Change-Id: Ia74386e175536aee0f44ae2f8b114c353d3d72f5
* Add YUV420P color format support for video output from camera halJames Dong2010-09-161-0/+4
| | | | Change-Id: I5c8266348d0840361c8095ce351ac85c44d4068f
* am 0cd2472b: am 82a39f4a: Merge "Add some explicit error log messages" into ↵James Dong2010-09-151-0/+3
|\ | | | | | | | | | | | | | | | | gingerbread Merge commit '0cd2472bf8a0062b56b9cd4613c44791b32fe42f' * commit '0cd2472bf8a0062b56b9cd4613c44791b32fe42f': Add some explicit error log messages