749 Commits

Author SHA1 Message Date
Pannag Sanketi
f48987db67 Renaming SurfaceEncoder to SurfaceMediaSource
Related to bug id: 4529323

Change-Id: Id820d45a536bd2c65e0a59def564eb5b3ea4a71c
2011-07-21 17:12:50 -07:00
Pannag Sanketi
26a197120c Adding SurfaceEncoder for encoding FilterFrames
Adding SurfaceEncoder which can be used to encode
custom frame data. In a sense, it is reverse
of what SurfaceTexture does.

SurfaceEncoder takes in frames from a native window and
passes them to an encoder, thus acting like a MediaSource.
It uses GRAlloc buffers underneath for passing data.
The client side sets the geometry, format in the beginning,
which cannot be changed while the recording is going on.

Currently, there is no common pixel format that both
GRAlloc and HAL understand.
Also, the encoder cannot encode using the data from the GRAlloc
buffers.

The SurfaceEncoder_test examines mainly the buffer passage
since true encoding cannot be done at this point.
SimpleDummyRecorder 'reads' the frames in the same thread
as the start(), whereas DummyRecorder 'reads' in a separate
thread much like the MPEG4Writer. The test with DummyRecorder
is much closer to the real encoding implementation.

Related to bug id: 4529323

Change-Id: I58ec19a150f8fe4d6195196dc44f55002b46c7c8
2011-07-21 17:12:50 -07:00
Pannag Sanketi
348c45bd96 Adding AndoirdOpaque Colorformat to OMX
Adding an enum to indicate an android opaque OMX
colorformat. This will inform the encoder that
the actual colorformat will be relayed by the
Frames read from the GRAlloc Buffers

Related to bug id: 4529323

Change-Id: Iddc5bd1ce8ca2b2506a57aadf5fc91ff0c7b78ef
2011-07-21 17:12:49 -07:00
Hong Teng
432fb8ecbe Merge "fix for issue 4142219 Don't hard code platform-specific limitations-jni/java part" 2011-07-21 11:13:43 -07:00
Jeff Brown
5da67f4f69 Merge "Untangle MediaScanner error handling. Bug: 5056917" 2011-07-20 18:03:47 -07:00
Eric Laurent
ae7c092649 Merge "Audio framework: support for audio pre processing" 2011-07-20 17:45:37 -07:00
Jeff Brown
2c70d4a372 Untangle MediaScanner error handling.
Bug: 5056917

Change-Id: I1a7a73579e3ba4e9709459329fc1901a28b0f4b1
2011-07-20 17:33:13 -07:00
Hong Teng
600acf14ff fix for issue 4142219
Don't hard code platform-specific limitations-jni/java part

Change-Id: Icde261b1caf29a8cf552884c97f3c9d0b41741a3
2011-07-20 16:51:39 -07:00
Jamie Gennis
5a4ab16eba Merge "MediaPlayer: add ANativeWindow (dis)connect calls" 2011-07-18 15:18:43 -07:00
Jean-Michel Trivi
211f5af3bb Merge "Add option to query hardware decoders only" 2011-07-18 11:07:47 -07:00
Jean-Michel Trivi
56a37b0529 Add option to query hardware decoders only
Add an option to OMXCodec::QueryCodecs() to filter out
 software codecs.

Update stagefright command line tool to list the roles of codecs.

Change-Id: Icddb79118c30fe13cc3aea20f340174cc082c4e0
2011-07-18 10:57:50 -07:00
Eric Laurent
464d5b3da2 Audio framework: support for audio pre processing
Audio effect framework is extended to suport effects on
output and input audio path.

AudioFlinger: Support for audio effects and effect chains is
moved from PlaybackThread class to ThreadBase class so that
RecordThread can manage effects.
Effects of type pre processing are allowed on record thread
only. When a pre processing is enabled, the effect interface handle is
passed down to the input stream so that the audio HAL can call the
process function. The record thread loop calls the effect chain process
function that will only manage the effect state and commands and skip the
process function.

AudioRecord: The audio session is allocated before calling getInput() into
audio policy serice so that the session is known before the input theead is
created and pre processings can be created on the correct session.

AudioPolicyService: default pre processing for a given input source are
loaded from audio_effects.conf file.
When an input is created, corresponding effects are created and enabled.

Change-Id: Id17119e0979b4dcf189b5c7957fec30dc3478790
2011-07-18 09:42:57 -07:00
James Dong
d9ac621f59 Do not wait forever for output buffers in OMXCodec.cpp and error out in case time out happens
o Deal with vendor codec hang bug

Change-Id: Ic8449afd43045f09a9e0bd3d1be9a320e59ccabe
2011-07-15 15:32:21 -07:00
Jamie Gennis
c85ca5d6b5 MediaPlayer: add ANativeWindow (dis)connect calls
This change makes MediaPlayer connect to the ANativeWindow to which it
is going to render video frames and disconnect when it is done.

Change-Id: I88ab5c2fe62493aabdc84a283ff31634f795d415
2011-07-14 17:48:33 -07:00
James Dong
ad07457ece Merge "Support profile and level query for SW video decoders" 2011-07-14 09:59:24 -07:00
Andreas Huber
c3119330a5 Remove legacy http support from stagefright, chromium is the new hotness.
Change-Id: I6725d42d38b91e6a1cbca43174870f445aeb3d99
2011-07-13 15:45:01 -07:00
Andreas Huber
67d464f47e Enable signalling of a stream discontinuity involving a format-change
through IStreamListener.

Change-Id: Ic0409cdc4891ad26b61f2f98bdda3c7fb2e2de6a
related-to-bug: 5022434
2011-07-13 09:47:09 -07:00
James Dong
dcf8934f4e Make MetadataBufferType.h C-friendly
Change-Id: I4388d8f6cf30f08858aec73aa971647feae4a5e3
2011-07-12 09:35:40 -07:00
James Dong
9b40a61ce9 Merge "Do not wait for unlaunched threads in stop()" 2011-07-11 12:56:11 -07:00
James Dong
0e27fce923 Do not wait for unlaunched threads in stop()
Change-Id: If681749753bb96ee98c1539658cfd919eeb0cb65
2011-07-11 12:51:21 -07:00
James Dong
fbb170ca9c Support profile and level query for SW video decoders
Change-Id: I9c20db128be96cd36cf2083e08e8c21f5e6d1fdf
2011-07-11 12:29:10 -07:00
James Dong
8d19d3ae1e Release camera if CameraSource::start() has not been called
Change-Id: I2f7e4b8501db3d80b9aa6f99d896d778bec29e8c
2011-07-10 14:19:26 -07:00
Eric Laurent
5cc0526339 Moved and renamed effect API header files
Moved specific effect header files to
system/media/audio_effects/include/audio_effects
and renamed to lower case (effect_xxx.h).

Change-Id: Icfc2264bfd013cab0395d7e310ada636b9fe3621
2011-07-07 15:25:51 -07:00
Gloria Wang
2da9eb7175 Merge "- Retrieve is_drm in MediaMetadataRetriever. - Add one more column in MediaStore to indicate whether a media file is drm-protected. - Remove old DRM code from Ringtone - Use the new DRM code in RingtoneManager" 2011-07-06 09:22:05 -07:00
Gloria Wang
82428a862f - Retrieve is_drm in MediaMetadataRetriever.
- Add one more column in MediaStore to indicate whether a
  media file is drm-protected.
- Remove old DRM code from Ringtone
- Use the new DRM code in RingtoneManager

Change-Id: I1311fd1c04841c2cd47df6c901589966cf55a692
2011-07-01 16:52:28 -07:00
Andreas Huber
dfba1773c9 Merge "Charge network traffic to the uid of the process using the MediaPlayer." 2011-07-01 14:28:10 -07:00
James Dong
5725d40460 Merge "Add extended metadata buffer support by defining different types of metadata buffers" 2011-07-01 14:03:45 -07:00
Andreas Huber
603d739b5a Charge network traffic to the uid of the process using the MediaPlayer.
Change-Id: I2bcb54b8232afd3fc7ee16289f37c7a7b3f23067
related-to-bug: 4517282
2011-07-01 13:18:43 -07:00
Andreas Huber
42fb5d64b9 Support a "secure input buffer" mode for use by Widevine DRM in OMXCodec.
Change-Id: Ie03b285265099dbac9b12f3f41d9ad758d0b50ad
2011-07-01 09:28:51 -07:00
James Dong
cd8cd351d4 Add extended metadata buffer support by defining different types of metadata buffers
Change-Id: I6aa6b5da004c240c9986f6b9036950e234c8bd42
2011-06-28 17:35:02 -07:00
Andreas Huber
068dbbf7ee Support for writing output data to a provided callback function instead of a file
in MPEG2TSWriter

Change-Id: Ie54a5677c7b789a973aa50b7f197c6db238425bc
2011-06-28 14:44:57 -07:00
Andreas Huber
e366f52b15 Multiple changes to ACodec/codec tools:
Make sure sf2 does not coalesce input buffers, generalize ACodec's codec
instantiation based on OMXCodec's list of eligible component names.

Some changes/additions to the "sf2" commandline tool

Make surface options consistent with stagefright tool, i.e. use '-S' instead of '-s'
New option '-R' renders surface-allocated buffers.

Also fixes a longstanding bug introduced when generalizing from surfaces to native windows that never used surface-allocated buffers in sf2 even when the option was specified.

Change-Id: I59fd533f0f6ef0337ebe2806ddc81a46878eb3ae
2011-06-28 10:51:41 -07:00
Wu-cheng Li
42419ce28a Add framework support for camcorder zoom.
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
2011-06-27 15:44:57 +08:00
Anu Sundararajan
d35df4412b Integrating TI OMAP4 Video Decoder
Added the video decoder component name to kDecoderInfo.
Set the quirks for the video decoder.
Add a new color format to OMX_IVCommon.h to denote TI OMAP4 NV12 color format.
Added a color conversion routine [ from NV12 to RGB ] for thumbnail generation.

Change-Id: I6b23c36441645ef65ec7406ba262d19f89cf64fd
Signed-off-by: Devaraj Rangasamy <dev@ti.com>
Signed-off-by: Sreenidhi Koti <sreenidhi@ti.com>
Signed-off-by: Anu Sundararajan <sanuradha@ti.com>
2011-06-23 18:35:24 -07:00
Gloria Wang
1e1b13e62e - Public part of the Metadata API.
- Modify the media framework test for Metadata.

Change-Id: Ib8fa4991f114e1bb88a17ca662844b9b8e1d0faf
2011-06-23 15:28:36 -07:00
Gloria Wang
eaa5d8f9c0 Timed text display format support:
1. Extract 3GPP global format descriptions
2. Extract 3GPP local format descriptions
3. Define data structure (TimedText) for applications to
retrieve the format metadata

Change-Id: I6eac2a78df29ee15beee456656331fdd83b24e8e
2011-06-22 11:32:19 -07:00
Dima Zavin
922261deab Merge "audio: update for audio/audio_policy header names/locations" 2011-06-13 19:43:59 -07:00
Dima Zavin
290029d19a audio: update for audio/audio_policy header names/locations
Change-Id: I36c49352eee57559403cd1597f56a8485a360289
Signed-off-by: Dima Zavin <dima@android.com>
2011-06-13 18:16:26 -07:00
James Dong
4108b1edc6 Add B frame support for MPEG4Writer
o requires the support of negative ctts duration values (ctts version 1)

Change-Id: Ib14130c9359c3bff3c76f20a7380d468a065dcaf
2011-06-13 17:06:29 -07:00
Andreas Huber
fddf5d9f48 Make dumpsys(media.player) more useful by having AwesomePlayer populate it.
Change-Id: I12ba7d542331a8293d67a0d47378b8be4f777759
2011-06-08 16:04:26 -07:00
James Dong
38c07129c4 Move OMX_QCOM_COLOR_FormatYVU420SemiPlanar definition to OMX_IVCommon.h
Change-Id: I5cbc7246a63301fa7ff735fa3d6512e940608d2b
2011-06-03 12:44:48 -07:00
James Dong
443287068b Do not call getEstimatedBandwidth if the streaming is not HTTP-based
Change-Id: I4ab6c57e5b2b989676b8dfbb98402d10a5752261
2011-06-02 10:13:52 -07:00
Glenn Kasten
e46a86fcb6 Revert "Use AudioTrack::event_type not int in callback"
This reverts commit 2225e4b7049fa3fb9d39a068b8268b63c952d7c1
2011-06-01 15:20:35 -07:00
Glenn Kasten
2225e4b704 Use AudioTrack::event_type not int in callback
Change-Id: Ifefc708d46874e04fd0d01cb6e2d43b987ee796c
2011-06-01 13:50:23 -07:00
Jean-Michel Trivi
d0bbdb02b2 Merge "Use channel mask instead of channel count for track creation" 2011-06-01 11:04:15 -07:00
Jean-Michel Trivi
5439223b56 Use channel mask instead of channel count for track creation
Record and playback objects (resp AudioRecord and AudioTrack)
are created using a channel mask, but this information is lost
in the mixer because only the channel count is known to
AudioFlinger. A channel count can always be derived from a
channel mask.

The change consists in:
- disambiguiting variable names for channel masks and counts
- passing the mask information from the client to AudioFlinger
 and the mixer.
- when using the DIRECT ouput, only verifying the format of
 the track is compatible with the output's for PCM.

Change-Id: I50d87bfb7d7afcabdf5f12d4ab75ef3a54132c0e
2011-06-01 10:55:29 -07:00
James Dong
a9d0febdd0 Send estimated bandwidth value as informational event when cache fetcher pauses
o Application can make informed decision about the available network bandwidth
  when cache fetcher pauses.

o Application can also adjust how frequently the bandwidth is estimated within
  a range from one second to one minute.

Change-Id: I90068001343e79da1886de03c565537787e1580b
2011-05-31 15:23:25 -07:00
Eric Laurent
8f18cf5574 Removed interface to load audio effects libraries
Removed unused functions allowing dynamic loading of audio effects libraries
from effects factory API.

Change-Id: I06cc5a51dc10aca87c7a8687bbb874babd711eca
2011-05-27 17:51:52 -07:00
Eric Laurent
0fb66c2b83 New effect library API
Moved and renamed media/EffectApi.h to hardware/audio_effect.h
Modified the effect library API to expose a library info structure
containing an interface functions table.
Also removed enums for audio channels, audio format and devices
from effect API and use values from system/audio.h instead.

Modified effects factory to support new library interface format and
load libraries and efffects listed in audio_effects.conf file.
The file audio_effects.conf is first loaded from /vendor/etc and
then from /system/etc/audio_effects.conf if not found.

Modified existing effect libraries to implement the new library interface.

Change-Id: Ie52351e071b6d352fa2fbc06c3846686f8c45df9
2011-05-27 15:15:00 -07:00
Andreas Huber
73a4b2b3be Merge "Support mpeg1,2 audio and mpeg1,2,4 video content extraction from .ts streams." 2011-05-26 08:52:55 -07:00