293 Commits

Author SHA1 Message Date
Andreas Huber
a557b24ac4 Initial checkin of mpeg2 transport stream parser for stagefright.
Change-Id: I328ce77404daf7127933b48c9d58ed504fb8fc6f
2010-06-07 13:05:37 -07:00
Andreas Huber
455d41002e Merge "Initial checkin of "foundation" library for future stagefright development." into kraken 2010-06-07 12:50:05 -07:00
Andreas Huber
7d2f703649 Initial checkin of "foundation" library for future stagefright development.
Change-Id: I11714dcaa647d0437a13e4c5b953b35e712da8f3
2010-06-07 10:22:07 -07:00
James Dong
7a68d3686a Merge "Remove hard-coded pixel format for recording frames in CameraSource. Retrieve the pixel format from Camera HAL at runtime." into kraken 2010-06-07 10:19:58 -07:00
James Dong
c2f328d0d2 Remove hard-coded pixel format for recording frames in CameraSource.
Retrieve the pixel format from Camera HAL at runtime.

Change-Id: I63f820f54c59c2019dfd195320b9928da3362536
2010-06-03 11:51:39 -07:00
Eric Laurent
65b65459e6 Issue 2667801: [Audio Effect Framework] AudioFlinger, AudioMixer AudioTrack modifications.
First drop of audio framework modifications for audio effects support.

- AudioTrack/AudioRecord:
Added support for auxiliary effects in AudioTrack
Added support for audio sessions
Fixed left right channel inversion in setVolume()

- IAudioFlinger:
Added interface methods for effect enumeraiton and instantiation
Added support for audio sessions.

- IAudioTrack:
Added method to attach auxiliary effect.

- AudioFlinger
Created new classes to control effect engines in effect library and manage effect connections to tracks or
output mix:
  EffectModule: wrapper object controlling the effect engine implementation in the effect library. There
	is one EffectModule per instance of an effect in a given audio session
  EffectChain: group of effects associated to one audio session. There is one EffectChain per audio session.
	EffectChain for session 0 is for output mix effects, other chains are attached to audio tracks
	with same session ID. Each chain contains a variable number of EffectModules
  EffectHandle: implements the IEffect interface. There is one EffectHandle object for each application
	controlling (or using) an effect module. THe EffectModule maintians a list of EffectHandles.

Added support for effect modules and effect chains creation in PlaybackThread.
modified mixer thread loop to allow track volume control by effect modules and call effect processing.

-AudioMixer
Each track now specifies its output buffer used by mixer for accumulation
Modified mixer process functions to process tracks by groups of tracks with same buffer
Modified track process functions to support accumulation to auxiliary channel

Change-Id: I26d5f7c9e070a89bdd383e1a659f8b7ca150379c
2010-06-03 03:21:53 -07:00
James Dong
dfb1dd6a8c Avoid copying for input recording frames in CameraSource
This is the part one.

- Let CameraSource be a MediaBufferObserver. It releases the recording frame when the ref count of a MediaBuffer containing
  the recording frame drops to 0.

  This reduces the CPU load from 90+% down to 50-60%.

Part two is related to the avoidance of copying the input video frames to the video encoder.
However, we are not able to use OMX_UseBuffer directly. Still work on the second part.

Change-Id: I906f1d054ae8bdcf82e1617f1fc120152f2eb2eb
2010-05-28 10:44:20 -07:00
James Dong
1090a29d4e Merge "Avoid repeatedly allocating and freeing memory in CameraSource" into kraken 2010-05-26 17:01:16 -07:00
James Dong
aed15e7856 Avoid repeatedly allocating and freeing memory in CameraSource
Change-Id: Ia3760820da0559e4e908dedae1f1df05f9a6a242
2010-05-26 16:54:18 -07:00
Eric Laurent
c0f34386d6 Fix issue 2667797: [Audio Effect Framework] new base class and binder interfaces for effect control.
Added IEffect and IEffectClient binder interfaces to exchange effect module control
and status information between application and media server processes.

Change-Id: I10e8e894898e52ed9956a765d0ef7075eb2593af
2010-05-24 23:33:42 -07:00
Eric Laurent
cf3fa85cdb Merge "Fix issue 2667796: [Audio Effect Framework] Effect factory and libraries." into kraken 2010-05-24 23:23:29 -07:00
Eric Laurent
5fe37c6838 Fix issue 2667796: [Audio Effect Framework] Effect factory and libraries.
First effect factory and effect library API implementation.
Also added default effect libraries for reverb and equalizer effects.
These libraries are for functional test only and are not fine tuned with
regard to audio quality. They will probably be replaced by other implementations
before the release.

Change-Id: I6868f8612146ae282c64052765c61a52ec789ec8
2010-05-21 07:05:56 -07:00
Andreas Huber
072f5247ef Support for media extraction from .mkv/.mka Matroska files in stagefright.
Change-Id: I4c26579828ad575523ccf58b0b5cb144046c04ca
related-to-bug: 2483739
2010-05-20 14:56:53 -07:00
James Dong
17299ab50c Initial software encoder checkins
Change-Id: I27f387db23594e46384c4eb3a0093ce220bb6b60
2010-05-19 07:21:25 -07:00
Eric Laurent
eb8f850d0b Fix issue 2553359: Pandora does not work well with Passion deskdock / Cardock.
The problem is due to a too big difference between the buffer size used at the hardware interface and at the A2DP interface.
When no resampling occurs we don't notice problems but the timing is very tight. As soon as resampling is activated, the AudioTrack underruns.
This is because the AudioTrack buffers are not resized when moving the AudioTrack from hardware to A2DP output.
The AudioTrack buffers are calculated based on a hardware output buffer size of 3072 bytes. Which is much less than the A2DP output buffer size (10240).

The solution consists in creating new tracks with new buffers in AudioFlinger when the A2DP output is opened
instead of just transfering active tracks from hardware output mixer thread to the new A2DP output mixer thread.
To avoid synchronization issues between mixer threads and client processes, this is done by invalidating tracks
by setting a flag in their control block and having AudioTrack release the handle on this track (IAudioTrack)
and create a new IAudioTrack when this flag is detected next time obtainBuffer() or start() is executed.

AudioFlinger modifications:
- invalidate the tracks when setStreamOutput() is called
- make sure that notifications of output opening/closing and change of stream type to output mapping are sent synchronously to client process.
This is necessary so that AudioSystem has the new stream to output mapping when the AudioTrack detects the invalidate flag in the client process.
Previously their were sent when the corresponding thread loop was executed.

AudioTrack modifications:
- move frame count calculation and verification from set() to createTrack() so that is is updated every time a new IAudioTrack is created.
- detect track invalidate flag in obtainBuffer() and start() and create a new IAudioTrack.

AudioTrackShared modifications
- group all flags (out, flowControlFlag, forceReady...) into a single bit filed to save space.

Change-Id: I9ac26b6192230627d35084e1449640caaf7d56ee
2010-05-17 02:23:47 -07:00
James Dong
68510e60f9 Detect and handle premature termination of a recording session
Change-Id: Ifb83b19f3e68580345b23efed5d5956fb81baeb8
2010-05-14 11:48:00 -07:00
James Dong
9db798d0f0 Audio/video initial recording time synchronization
Change-Id: Iac58b63d474fe09c1d36ba6ecde91dafbb7fef9a
2010-05-14 10:51:12 -07:00
James Dong
1824486e04 Handle recording file size and/or duration limit
Change-Id: Ib9ed1f3ebd8fef550cc130a7ef11f2905fa9aedc
2010-05-14 10:46:56 -07:00
James Dong
e292b3bc9c Remove dummy surface in CameraSource
bug - 2680919

Change-Id: Ia0308cf57fd67058b4dd0e042b3ce97f13df475f
2010-05-13 12:08:29 -07:00
Andreas Huber
11777d6fa2 am b003ad17: am e0dc80f8: Merge "Support for customizable socket-read timeouts through the HTTP response." into froyo
Merge commit 'b003ad17bffeba7875b9708ffeef2300ef28c916' into kraken

* commit 'b003ad17bffeba7875b9708ffeef2300ef28c916':
  Support for customizable socket-read timeouts through the HTTP response.
2010-05-12 07:55:48 -07:00
Andreas Huber
e67c1607cc Support for customizable socket-read timeouts through the HTTP response.
Specify a response header of "X-SocketTimeout: 15" to override the default timeout
of 5 secs with a timeout of 15 seconds. Specify a negative value to disable the
timeout altogether.

Change-Id: I545adf3d8b3f7efe5f8d081a641c6404440a77db
related-to-bug: 2675721
2010-05-11 11:10:21 -07:00
James Dong
b5e742397d Output streamable MP4 file during MP4 file recording
When the reserved moov box space is not big enough,
fall back to non-streamable MP4 file.

Change-Id: I93382d037d657a3f3fe2af31e4ea26e1898b4d95
2010-05-11 10:36:43 -07:00
Andreas Huber
248597ae64 am 17078510: am d13efb20: Merge "A new OggExtractor/VorbisDecoder combo to support approximate seeking." into froyo
Merge commit '1707851090e6512a77247b0c260dd673ef687589' into kraken

* commit '1707851090e6512a77247b0c260dd673ef687589':
  A new OggExtractor/VorbisDecoder combo to support approximate seeking.
2010-05-10 09:49:24 -07:00
Andreas Huber
388379f8b4 A new OggExtractor/VorbisDecoder combo to support approximate seeking.
Change-Id: Id5d0c1c8b1adc62896bb5ed951f7b5cfda811e95
related-to-bug: 2654400
2010-05-07 12:01:45 -07:00
Andreas Huber
8a1c0934b0 am 71bd9fc8: am 100ef9be: Merge "Disable vorbis seek when streaming from localhost." into froyo
Merge commit '71bd9fc81e3154b9cad22ca7ff2d9c6ed6fdbe6c' into kraken

* commit '71bd9fc81e3154b9cad22ca7ff2d9c6ed6fdbe6c':
  Disable vorbis seek when streaming from localhost.
2010-05-06 12:43:59 -07:00
Andreas Huber
62f7ffe106 Disable vorbis seek when streaming from localhost.
Change-Id: Icda523ae1c89e26482f1c1767fe3a8b9222bb30f
related-to-bug: 2654400
2010-05-06 10:31:57 -07:00
James Dong
3300e9667e Support audio and video track interleaving in the recorded mp4 file
Change-Id: Ifa27eb23ee265f84fe06773b29b0eb2b0b075b60
2010-05-05 11:34:43 -07:00
Andreas Huber
ce0bd71735 am 8ea45aad: am e083d0a2: Merge "Support for Ogg Vorbis decoding in stagefright." into froyo
Merge commit '8ea45aad100ee25067b2e83703454c71a968ba4f' into kraken

* commit '8ea45aad100ee25067b2e83703454c71a968ba4f':
  Support for Ogg Vorbis decoding in stagefright.
2010-05-04 14:30:34 -07:00
Andreas Huber
eb5eef3819 Support for Ogg Vorbis decoding in stagefright.
Set the magic property media.stagefright.enable-vorbis to true to use the new implementation instead of the standalon vorbis player for file-based playback. HTTP streaming of vorbis content will always go through stagefright.

Change-Id: Ie3843a99fadb22372f89540d0f8d65196e0c2af8
related-to-bug: 2654400
2010-05-04 11:58:16 -07:00
James Dong
b00e246669 Use timestamp from camera driver for CameraSource
Change-Id: I09ddec69997c43b8f17fdd21304c76cb4c5ab8cf
2010-04-28 11:55:47 -07:00
Andreas Huber
7853c8988f am 248ea4a9: am 5baa5e19: Merge "Distinguish QCELP audio from mpeg4 audio, ignore QCELP audio tracks since we don\'t have a decoder for it, ignore potentially malformed metadata for AMR NB and WB tracks." into froyo
Merge commit '248ea4a9f773210a7b7dbd7892e6b865a0f7add3' into kraken

* commit '248ea4a9f773210a7b7dbd7892e6b865a0f7add3':
  Distinguish QCELP audio from mpeg4 audio, ignore QCELP audio tracks since we don't have a decoder for it, ignore potentially malformed metadata for AMR NB and WB tracks.
2010-04-12 17:21:33 -07:00
Andreas Huber
d0332ad8d2 Distinguish QCELP audio from mpeg4 audio, ignore QCELP audio tracks since we don't have a decoder for it, ignore potentially malformed metadata for AMR NB and WB tracks.
Change-Id: Ic9a9198413431db4ea40bb63b9de91aa8a7183af
related-to-bug: 2587341
2010-04-12 16:05:57 -07:00
Andreas Huber
e2018ca9ff Remove unnecessary lock from AMRWriter.
Change-Id: Ia02966d936dd8cbb31e92051578a3fa816885710
2010-04-09 13:49:39 -07:00
Andreas Huber
aba965fdd8 Refactor connection/redirection code, support redirects on reconnection.
Change-Id: Id2517568000e028b01553c06a4893813a6883168
related-to-bug: 2580785
2010-04-08 10:09:35 -07:00
Andreas Huber
a51250bdc7 Increase the size of the pages used in CachingDataSource (total amount of memory used remains the same) to compensate for reduced locality of audio/video data requests. Also fixes a mistaken trailing "\r\n" in the range header and better error handling on http connection.
Change-Id: Ic9a6ef204362bc9afdc61e081c76bc62e5ef92ad
related-to-bug: 2580785
2010-04-08 07:51:20 -07:00
Andreas Huber
a4357addf6 Coalesce multiple encoded AAC frames into a single input buffer on this particular OMX codec to increase throughput significantly.
Change-Id: I90c7db6656a53339c5d454336548c4f00d0d9064
related-to-bug: 2548426
2010-04-02 12:55:31 -07:00
James Dong
e64d9a236e Public API changes for CameraProfile and CamcorderProfile classes
1. CamcorderProfile: “@see” links are broken; Remove m prefix from fields; remove “final”
2. CamcorderProfile.Quality: use an int rather than an enum
3. Add API on MediaRecorder to pass in a CamcorderProfile
4. CameraProfile.getImageEncodingQualityLevels @hide or make it consistent with CamcorderProfile
5. Remove a convenient method and instead let the (mms) app do that task

bug - 2553862

Change-Id: I759215c7892f772aeddf3651d17038489c6fbc50
2010-04-01 00:12:20 -07:00
Andreas Huber
8783429932 While streaming media data, upon a socket-read error, try reconnecting to the server and attempt to re-read for at most 3 times.
Change-Id: I7534905e07a6456d18b26d5d60fa8915f25ae99e
related-to-bug: 2492187
2010-03-17 16:38:30 -07:00
Andreas Huber
2a09c7e042 Properly handle errors during the codec configuration phase, attempt to revert to next available (likely software-) codec if configuration fails.
Change-Id: Id1c699711e30139c9cc29df972254b5ba026e6fb
related-to-bug: 2517098
2010-03-16 11:44:07 -07:00
Andreas Huber
e3452d3fe1 Fix the media metadata retriever (tests). The native constants must match those published at the java layer.
Change-Id: Ic1efed709e4d93c61913b231a8cd3ef1074f8ca0
2010-03-12 15:08:52 -08:00
Andreas Huber
edbb4d8f39 HTTPStream and HTTPDataSource now support cancellation of the connection process, AwesomePlayer takes advantage of this in cases where ::reset() or ::suspend() is called while in the preparation phase to bail out early. Also fixes in issue where the audio codec was not properly stopped if no audio player object ever took ownership.
Change-Id: I6d73defe6d276693853a469db267bb2668d07af5
related-to-bugs: 2475845,2414536
2010-03-12 09:05:10 -08:00
Andreas Huber
fb1eb6fbc9 Reduce buffer sizes related to HTTP media data transfer in order to reduce the probability of a connection timeout/reset due to long periods of time between socket activity.
Change-Id: I799ce1d58d56a31088a89603d8a18d24780f5b57
related-to-bug: 2492187
2010-03-10 17:12:01 -08:00
Andreas Huber
1ce986767a Instead of instantiating StagefrightMetadataRetriever directly, instantiate a MediaMetadataRetriever which will do-the-right-thing(tm) even for .wma/.wmv/.asf files.
Change-Id: Ibda4b5268514934f14a3d49a564902bc670f4384
related-to-bug: 2074137
2010-03-10 10:55:35 -08:00
Andreas Huber
dc9927d464 The audio track was accidentally not participating in the prefetch since it wasn't started at the time prepare() was called. Also, properly report the cached duration even near the end when the source has no more data to fetch.
Change-Id: I66a92fec24c9bfb25f1c186f1c877127bae2b4f9
related-to-bug: 2444425
2010-03-08 15:46:13 -08:00
Eric Laurent
47d0a9264f Issue 2071329: audio track is shorter than video track for video capture on sholes
Add API to retrieve number of frames dropped by audio input kernel driver.

Submitted on behalf of Masaki Sato <masaki.sato@motorola.com>
2010-03-02 08:20:13 -08:00
James Dong
b93003649d Merge "Image encoding settings java API through xml configuration file" 2010-02-25 15:11:29 -08:00
James Dong
9b433f0b65 Image encoding settings java API through xml configuration file
- I decided to completely remove jpeg decoding related stuff from this change
  I think that setting is better off if it is specified by the system properties.
  We don't have to include MediaProfiles.h header in skia files
2010-02-24 18:10:12 -08:00
Andreas Huber
d7d22eba3c Propagate errors all the way through the MediaSources and send either MEDIA_PLAYBACK_COMPLETE or MEDIA_ERROR depending on the final reason for running out of buffers to play back.
related-to-bug: 2463749
2010-02-23 14:06:38 -08:00
Andreas Huber
b8de9578dc This hardware video decoder lies about its required input buffer sizes allocating 2.7 MB of memory instead of the required 176 KB... Added another quirk.
related-to-bug: 2281327
2010-02-22 14:58:45 -08:00
Andreas Huber
fbb3885024 New API on java's MediaPlayer to suspend/resume a session.
related-to-bug: 2231576
2010-02-12 12:44:10 -08:00