summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice/MediaPlayerService.h
Commit message (Collapse)AuthorAgeFilesLines
* Merge tag 'android-6.0.1_r72' into HEADJessica Wagantall2016-10-061-0/+1
|\ | | | | | | | | | | Android 6.0.1 Release 72 (M4B30X) Change-Id: I617426a3fbf7a8d013c5be838ad4c80a00b61a5f
| * MediaPlayerService: avoid invalid static castRobert Shih2016-08-261-0/+1
| | | | | | | | | | | | Bug: 30204103 Change-Id: Ie0dd3568a375f1e9fed8615ad3d85184bcc99028 (cherry picked from commit ee0a0e39acdcf8f97e0d6945c31ff36a06a36e9d)
* | stagefright: Squashed commit of pause/resume featuresSteve Kondik2015-11-071-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add 2 APIs (suspend/resume) in MediaPlayer - API:suspend() will just pause the player and release all the decoders to replace release() which will release the whole player - API:resume() will just init the decoders again, then start() will be called to restart streaming playback - Add a check in AwesomePlayer::onVideoEvent() to make sure the first seek operation will always seek to the next i-frame Change-Id: Ie4c82906a2a056378119921a656128ebdc1007c4 audio: Add pause support for hardware omx component - ADSP doesn't enter sleep state after wma playback is paused and power suspended. - No support for NT session pause in case of hardware component. NT session need to be paused to put ADSP into power collapse. - Add support of pause in stagefright to ensure device enters suspend mode. Also add intermediate states to avoid concurrency issues between read and pause. Change-Id: I41b946b8c8805e6ee303646b63513b5b16514ef6 libstagefright: Drain input buffer on resume - Buffers returned from codec in paused state are not drained. When codec is resumed these buffers are not drained until the next flush, and may cause timed out issue. - Added change to drain input buffers for sw decoders when resuming. Change-Id: Ida2ab1d5dc3a1910accdd6fb89548262a912d8e7 CRs-Fixed: 569585, 574967 libstagefright: camcorder pause-resume implementation - Add pause resume feature in camcorder app. So that user can pause recording and resume later which results in a single recorded clip. Change-Id: Id19c45ae5bb85265aa4d5304b160ebf119d9575a libstagefright: support pause/resume for timelapse recording Modify the timestamp calculation mechanism in CameraSourceTimeLapse in order to support pause/resume. Change-Id: Icb02ea798b0b807ffb7ada2d1ef5b2414b74edfb
* | AudioOutput: Consider output bit width when reusing offload outputHaynes Mathew George2015-10-061-0/+1
|/ | | | | | | | Consider bit width of the incoming audio stream before deciding to recycle the previously used AudioTrack object. CRs-Fixed: 802834 Change-Id: I33058fb4af2fb3b10714b14d8591f5f6b81e57d1
* MediaPlayerService: prevent audio_attributes_t race conditionsJean-Michel Trivi2015-07-231-1/+1
| | | | | | | | | | | | Access to audio attributes fields in Client and AudioOutput was not always locked. Audio attributes field in AudioOutput cannot share the same pointer as Client because it can be indepently accessed. Save the attributes inside AudioOutput instead. Bug 22672670 Change-Id: Ib1002b57b45cea44ff5e6eb115d581dc3beec006
* mediaplayer: fix audio attributes override by stream typeEric Laurent2015-07-151-2/+1
| | | | | | | | Make sure that when audio attributes are set, the stream type is always derived from them. Bug: 22481669. Change-Id: Ia10c7017eb27e7753faf97a42dd4f44e15f2c986
* libmediaplayerservice: Serialize access to AudioOutputAndy Hung2015-07-101-8/+24
| | | | | | | | | NuPlayerRenderer may open and close the AudioOutput while MediaPlayerService::Client accesses it. Bug: 20069455 Bug: 22295200 Change-Id: Ic37987c1de1919cf890b2e69778e6df71e7ee7c5
* NuPlayer: Add audio sink buffer configurationAndy Hung2015-06-031-1/+2
| | | | | | | | Property media.stagefright.audio.sink (in milliseconds) Also change the default buffer size for PCM playback to 500 ms. Bug: 21198655 Change-Id: I5781288f59bf08fbecd9263a26c919570b58be0f
* libmediaplayerservice: try to open audio sink in offload mode in error.Ronghua Wu2015-05-221-1/+2
| | | | | | Bug: 19061432 Bug: 21370108 Change-Id: Iaa757555ef37fd1ac87b6e2d5a9969bb58cc5ebc
* stagefright: support setting/getting playback/sync config in MediaSyncLajos Molnar2015-04-301-3/+11
| | | | | | | Bug: 18249558 Bug: 19666434 Bug: 20057497 Change-Id: I5868b17423d7c20cfaf4a399f3eb67bfba440605
* Respect the record audio app op - mediaSvet Ganov2015-04-291-3/+3
| | | | Change-Id: I3a97977b6e9a09355e2008f780d22d480fb7308b
* libmediaplayerservice: fix warnings, make warnings errors, use clangLajos Molnar2015-04-171-1/+1
| | | | Change-Id: I1b2f6b65c5abbc366068a60b8909104f31b94228
* Unhide the android.media.[Media]DataSource interface.Chris Watkins2015-04-151-0/+3
| | | | | | | | | | | | | | | | | | | | | This allows apps to implement MediaDataSource, which is modeled on stagefright's DataSource, to supply media data to the framework. This was already implemented for MediaExtractor, but it was renamed from DataSource. MediaExtractor, MediaPlayer and MediaMetadataRetriever each have a new overload: #setDataSource(android.media.MediaDataSource) Only NuPlayer supports this new data source. The change introduces: * IDataSource: The binder interface for DataSource. * JMediaDataSource: The native counterpart to the java interface. It implements IDataSource. * CallbackDataSource: A stagefright DataSource that wraps an IDataSource. Change-Id: Ib3c944b49cc8a792c8eb9c85e5015c07f298ebc1
* mediaplayer: use non-blocking mode for AudioSink::write().Wei Jia2015-03-031-1/+1
| | | | | | | This cherry picks https://googleplex-android-review.git.corp.google.com/#/c/643541/ to master. Bug: 19448263 Change-Id: I43dea830212de79c2b080185b6c6b36078f517d2
* mediaplayer: support dynamic playback rateWei Jia2015-02-241-0/+1
| | | | | | Bug: 19196501 Change-Id: I856b1507d5fa2cedfb645706d2435683a7d3e050
* Remove MediaPlayerService::decode()Marco Nelissen2015-01-261-83/+0
| | | | | | | and make SoundPool use MediaCodec for decoding files to PCM. Bug: 18239054 Change-Id: Ia144fc1bbb0d2787638ee972e2224339b4965310
* NuPlayer: use getTimestamp instead of getPositionLajos Molnar2014-09-171-0/+2
| | | | | Bug: 14659809 Bug: 16985287 Change-Id: I59ec72fbd40a9b8d28fe548ddad082c03000c045
* Fix SoundPool and MediaPlayerService buffer overflowAndy Hung2014-08-211-1/+2
| | | | | | | | | | | | Overflow occurs when SoundPool sample tracks cannot fit in the MediaPlayerService AudioCache buffer. Unnecessary decoding occurred with AwesomePlayer and an assert failure occurred with NuPlayer. NuPlayerRenderer is also tweaked to handle the latter case. Bug: 17122639 Change-Id: I4d25d3e2c0c62e36a91da6bf969edabddc2ebbb0
* media/playerservice: add getCodecList() to MediaPlayerServiceLajos Molnar2014-08-071-0/+1
| | | | | Bug: 11990470 Change-Id: I8fa45946fd9b76f9b975fc59062819c57e6881ef
* Support for audio attributes on audio output of media playerJean-Michel Trivi2014-07-011-1/+7
| | | | Change-Id: Iae4995c98e64add1ab9e6c8ae6501515032755f5
* Track pid for each sessionMarco Nelissen2014-02-111-1/+2
| | | | | | so they can be properly freed. Change-Id: I6f389035bc29e74e7c367c1c6d0252b180f666b3
* Fix warnings about unused parametersGlenn Kasten2014-02-071-3/+3
| | | | Change-Id: I27dc108e2c1f7ffd414bb7ff3d4c349651da6c26
* Remove no longer needed http proxy handling code, it's obsolete nowAndreas Huber2014-02-051-3/+0
| | | | | | | | since we started to use java's HTTPConnection instead of the native implementation. Also remove other remnants of the previous http implementation, such as accounting for the http user's uid. Change-Id: I60bfd31381ea40d2220db587ec5c433093b60034
* FINAL ATTEMPT: HTTP services are now provided from JAVA and made available ↵Andreas Huber2014-02-041-3/+10
| | | | | | to media code Change-Id: I9f74a86e70422187c9cf0ca1318a29019700192d
* update offloaded audio track sampling rateEric Laurent2013-11-221-0/+2
| | | | | | | | AudioPlayer must read the sampling rate from offloaded audio sinks whenever a new time position is computed as the decoder can update the sampling rate on the fly. Change-Id: I997e5248cfd4017aeceb4e11689324ded2a5bc88
* AwesomePlayer: correct stream type for offloadEric Laurent2013-11-141-1/+7
| | | | | | | | | | | | canOffloadStream() function in stagefright utils forces the stream type to AUDIO_STREAM_MUSIC when querying the audio policy manager if a particular track is offloadable or not. This causes MP3 ringtones to be offloaded which is not a validated use case. The fix consists in using the actual stream type read from the AudioSink. Bug: 11410937. Change-Id: I44b8e033a8e785a79cdc291b142f80b5580bdc4d
* Assign blame for playback wakelocks.Marco Nelissen2013-10-251-1/+2
| | | | | | | | | | | Set a work source for the playback wakelock, so that playback is counted against the requesting app instead of the media server. Cherrypicked from master. b/9464621 Change-Id: I7329f88a288a95a582a78005a1c3d16a5a611e31
* soundpool: allocate shared memory heap by clientEric Laurent2013-09-241-4/+9
| | | | | | | | | | | | | | | | | | | | | | | Current SoundPool implementation allocates the shared memory heap containing decoded PCM samples in mediaserver process. When mediaserver process crashes, the shared memory heaps allocated by AudioCache cannot be mapped anymore in the new instance of mediaserver. This causes a silent failure to end playback of new sounds because AudioFlinger believes the new AudioTracks are opened in streaming mode and not static mode: it sees a NULL shared memory pointer when the track is created. The fix consists in allocating the memory heap in the client process. Thus the heap is not lost when mediaserver restarts. The global memory usage is the same as this is shared memory. Also added a way to detect that a shared memory is passed when the track is created but cannot be mapped on mediaserver side. Also fix a crash in SoundPool when ALOGV is enabled. Bug: 10894793. Change-Id: Ice6c66ec3b2a409d75dc903a508b6c6fbfb2e8a7
* libmediaplayerservice: offload playback supportRichard Fitzgerald2013-07-261-2/+5
| | | | | | | | | | | | | | | | | | Main change is to how recycled tracks are used for gapless playback. If we are playing offloaded tracks that can't be recycled we don't open a new offloaded output until we have closed the previous one. This is because offloaded tracks are a limited resource so we don't want to spuriously create unnecessary instances. If the tracks cannot be recycled this means that the formats are incompatible and so the hardware most likely will also be unable to use the existing output channel for the new track. If we already have the maximum number of hardware offload channels open (which could be only one) then creation of the next output would fail if we attempted it while the previous output was still open. Change-Id: I4f5958074e7ffd2e17108157fee86329506730ea Signed-off-by: Eric Laurent <elaurent@google.com>
* Include what is neededGlenn Kasten2013-07-021-3/+0
| | | | | | | Remove old includes. Header files only include other header files that they directly need themselves. Change-Id: Ic471386808d9f42ea19ccbd59cb50a5f83a89dd0
* Public API changes for audio offload support.Richard Fitzgerald2013-06-271-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | NOTE: this does _not_ include all private member variables added to classes as part of offload support. Only public/protected functions and stubs functions/variables needed to make the changes buildable. - isOffloadSupported() added to audio policy service A stub implementation is required to build, this always returns false - setParameters() added to IAudioTrack A stub implementation is required to build, this always returns INVALID_OPERATION - CBlk flag for stream end - Change AudioSystem::getRenderPosition() to take an audio_output_t so caller can specify which output to query - Add AudioSystem::isOffloadSupported() This is fully implemented down to the AudioFlinger function AudioPolicyServer::isOffloadSupported() which is just a stub that always returns false. - Add EVENT_STREAM_END to AudioTrack interface. STREAM_END is used to signal when the hardware has actually finished playing all the data it was sent. - Add event type enumeration to media player interface AudioSink callbacks so that the same callback can be used to handle multiple types of event. For offloaded tracks we also have to handle STREAM_END and TEAR_DOWN events - Pass audio_offload_info_t to various functions used for opening outputs, tracks and audio players. This passes additional information about the compressed stream down to the HAL when using offload. For publicly-available APIs this is an optional parameter (for some of the internal and low-level APIs around the HAL interface it is mandatory) - Add getParameters() and setParameters() API to AudioTrack Currently dummy implementations. - Change AudioPlayer contructor so that it takes a set of bitflags defining what options are required. This replaces the original bool which only specified whether to use deep buffering. - Changes to StageFright class definition related to handling tearing-down of an offloaded track when we need to switch back to software decode - Define new StageFright utility functions used for offloaded tracks Currently dummy implementations. - AudioFlinger changes to use extended audio_config_t. Fills in audio_offload_info_t member if this info is passed in when opening an output. - libvideoeditor changes required to add the new event type parameter to AudioSink callback functions - libmediaplayerservice changes required to add the new event type parameter to AudioSink callback functions Change-Id: I3ab41138aa1083d81fe83b886a9b1021ec7320f1 Signed-off-by: Richard Fitzgerald <rf@opensource.wolfsonmicro.com> Signed-off-by: Eric Laurent <elaurent@google.com>
* Use sp<AudioTrack> instead of raw AudioTrack *Glenn Kasten2013-06-031-3/+3
| | | | | | | | | | | | | | | | | | | | | This change prepares for the new implementation of AudioTrack client, which will require clients to use only sp<AudioTrack>, not raw AudioTrack *. A raw delete will cause a race condition during AudioTrack destruction. AudioTrack was made a RefBase by commit b68a91a70bc8d0d18e7404e14443d4e4020b3635 on 2011/11/15, when it was needed by OpenSL ES (for the callback protector). At that time, the only other client that was also converted from AudioTrack * to sp<AudioTrack> was android.media.AudioTrack JNI in project frameworks/base (file android_media_AudioTrack.cpp). Details: * Use .clear() instead of delete followed by = NULL. * ALOG %p need .get(). * sp<> don't need to be listed in constructor initializer, if initially 0. * Use == 0 for sp<> vs == NULL for raw pointers. * Use if (sp != 0) instead of if (raw). Change-Id: Ic7cad25795d6e862e112abdc227b6d33afdfce17
* Update HTTP proxy configuration for all media playback inside stagefright.Andreas Huber2013-05-311-0/+3
| | | | | | Change-Id: Ie0dd00045aba668d8b49da73224e7a7c9c04f69b related-to-bug: 8873723 (cherry picked from commit 2704965b8a1ff3b7450ff58ccecf86d8ec688c40)
* Implementing MediaDrm APIsJeff Tinker2013-03-131-0/+1
| | | | Change-Id: I9ff8eeb7d0c383b5c0c68cd54eb54ce7d2d22fe6
* Plumbing to reflect minor changes in the HDCP module API that allow forAndreas Huber2013-01-301-1/+1
| | | | | | support of _decryption_ modules in addition to what we already supported. Change-Id: Ic37b87dc170ba8def3817991d25df798f21e950b
* Merge "Remove unnecessary parameter"Glenn Kasten2012-12-211-3/+3
|\
| * Remove unnecessary parameterGlenn Kasten2012-12-181-3/+3
| | | | | | | | | | | | Just get the parameter on server side Change-Id: I433a63104dbb257e0d862be2ab61847cb36d1c15
* | Rename ISurfaceTexture and SurfaceTextureAndy McFadden2012-12-181-1/+1
|/ | | | | | | | | | The C++ class names don't match what the classes do, so rename ISurfaceTexture to IGraphicBufferProducer, and SurfaceTexture to GLConsumer. Bug 7736700 Change-Id: I64520a55f8c09fe6215382ea361c539a9940cba5
* Remove legacy code and APIs in wifi display related code.Andreas Huber2012-09-211-4/+0
| | | | Change-Id: Ia010e7a00534f9356b3247369d0ffd65591d91aa
* HDCP module binderizedAndreas Huber2012-09-191-0/+1
| | | | Change-Id: I866768b1e3f3b232f1934a35b65f66befc12f3f6
* Implement remote display service stubs.Jeff Brown2012-09-051-0/+5
| | | | Change-Id: I582ed000026bba6d116db8304e15a3c52f8a9a01
* Only run the wifi display RTSP server on demand, and only on the wifi directAndreas Huber2012-08-301-1/+1
| | | | | | interface. Change-Id: I7d3c44cb79cd40e73499f2d7ccf35c69b628e6d7
* Initial checkin of support for acting as a wifi display sourceAndreas Huber2012-08-291-0/+3
| | | | Change-Id: I08f17efa0c7d007e17408feb7d4fbef0a19f531a
* Add the ability to dynamicaly register MediaPlayer types.John Grossman2012-08-131-5/+1
| | | | | | | | | | | | Add the ability to dynamically register low level MediaPlayer factories which will be probed at setDataSource time to determine the proper MediaPlayerBase to instantiate. This change is in preparation for moving libaah_rtp out of frameworks/base and into phantasm platform directory. Change-Id: Icf8904db3ab9e3c85df6e780d5546d9988cb9076 Signed-off-by: John Grossman <johngro@google.com>
* Add support for deep audio buffersEric Laurent2012-04-201-2/+5
| | | | | | | | | | Allow AudioSink to use deep audio buffering when the source is audio only and its duration is more than a certain threshold. This helps improve battery life but implies higher audio latency. Change-Id: Ie79915b61c370292f05aabda9779356570e03cbb
* Add gapless playback support for NuPlayerMarco Nelissen2012-04-021-4/+7
| | | | | | | | | This makes NuPlayer use a SkipCutBuffer when needed, and adds a new AudioSink method to retrieve the number of frames written so far, so NuPlayerRenderer can calculate how much data it can write without blocking. Also make some more methods const. Change-Id: Id7d253ad8a7b85e9a84ca2baafbe32817b16c744
* Provisional support for secure decryption of media streams.Andreas Huber2012-03-261-0/+2
| | | | Change-Id: Ib3982a9c960bfdb0cb7e1b174440b141b194cfbe
* Gapless playback, step 1.Marco Nelissen2012-03-131-4/+47
| | | | | | | Currently able to play Ogg Vorbis, PCM WAV and other lossless files seamlessly by reusing the initial AudioTrack for subsequent players. Change-Id: Ie7cf6b9076bdf4f9211574456d192c02c04fecc7
* Merge "MediaPlayerService: fix AudioSink latency"Eric Laurent2012-03-061-1/+0
|\
| * MediaPlayerService: fix AudioSink latencyEric Laurent2012-03-051-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | The AudioSink latency is currently cached when the associated AudioTrack is created. However, the AudioTrack latency can change if the AudioTrack is moved from one output stream to another. The AudioPlayer must also periodically update its view of the latency as it is needed to compensate the real audio time used for A/V sync. This fixes an A/V sync problem seen when switching A2DP on and off while playing a video. Change-Id: I28b24049ca114e1af3e24791dcc900f463536ba4