summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/MPEG4Extractor.cpp
Commit message (Collapse)AuthorAgeFilesLines
* MPEG4Extractor.cpp: handle chunk_size > SIZE_MAXreplicant-4.2-0004replicant-4.2Nick Kralevich2015-08-311-1/+1
| | | | | | | | | | | | | chunk_size is a uint64_t, so it can legitimately be bigger than SIZE_MAX, which would cause the subtraction to underflow. https://code.google.com/p/android/issues/detail?id=182251 Bug: 23034759 Change-Id: Ic1637fb26bf6edb0feb1bcf2876fd370db1ed547 Signed-off-by: Nick Kralevich <nnk@google.com> Tested-by: Moritz Bandemer <replicant@posteo.mx>
* Fix integer underflow in covr MPEG4 processingJoshua J. Drake2015-08-311-0/+4
| | | | | | | | | | | | When the 'chunk_data_size' variable is less than 'kSkipBytesOfDataBox', an integer underflow can occur. This causes an extraordinarily large value to be passed to MetaData::setData, leading to a buffer overflow. Bug: 20923261 Change-Id: Icd28f63594ad941eabb3a12c750a4a2d5d2bf94b Signed-off-by: Joshua J. Drake <android-open-source@qoop.org> Tested-by: Moritz Bandemer <replicant@posteo.mx>
* Fix integer overflow when handling MPEG4 tx3g atomJoshua J. Drake2015-08-311-0/+7
| | | | | | | | | | | | | | When the sum of the 'size' and 'chunk_size' variables is larger than 2^32, an integer overflow occurs. Using the result value to allocate memory leads to an undersized buffer allocation and later a potentially exploitable heap corruption condition. Ensure that integer overflow does not occur. Bug: 20923261 Change-Id: Id050a36b33196864bdd98b5ea24241f95a0b5d1f Signed-off-by: Joshua J. Drake <android-open-source@qoop.org> Tested-by: Moritz Bandemer <replicant@posteo.mx>
* Prevent integer overflow when processing covr MPEG4 atomsJoshua J. Drake2015-08-311-1/+5
| | | | | | | | | | | | | If the 'chunk_data_size' value is SIZE_MAX, an integer overflow will occur and cause an undersized buffer to be allocated. The following processing then overfills the resulting memory and creates a potentially exploitable condition. Ensure that integer overflow does not occur. Bug: 20923261 Change-Id: I75cce323aec04a612e5a230ecd7c2077ce06035f Signed-off-by: Joshua J. Drake <android-open-source@qoop.org> Tested-by: Moritz Bandemer <replicant@posteo.mx>
* Fix null-pointer-dereferences accessing the SampleTableJoshua J. Drake2015-08-311-0/+18
| | | | | | | | | | | | While processing various sample table related FourCC values, methods are called on a NULL mLastTrack or sampleTable object. This leads to undefined behavior which typically results in a crash (denial of service condition). Bug: 20139950 Change-Id: I39a894f8709d9937a0456ae5b3a201f7ecf12ed0 Signed-off-by: Joshua J. Drake <android-open-source@qoop.org> Tested-by: Moritz Bandemer <replicant@posteo.mx>
* MPEG4Extractor: still more NULL derefernce fixesJoshua J. Drake2015-08-311-0/+41
| | | | | | | | | | | | When processing various FourCC values within MP4 media, mLastTrack is accessed without first ensuring that a track has been encoutered. Check for NULL and bail out instead of crashing. Bug: 20139950 Change-Id: I3b86377030d73b3134b8769c590509c4f23d9f19 Signed-off-by: Joshua J. Drake <android-open-source@qoop.org> Tested-by: Moritz Bandemer <replicant@posteo.mx>
* libstagefright: Add support for frame-by-frame modeShalaj Jain2013-02-191-0/+7
| | | | | | | - Set decoder in frame-by-frame mode always, except for interlaced content, for which arbitary mode should be set Change-Id: I8195a40549898b43a0e03d65663c7148f458c448
* Squashed commit of updates from CodeAuroraMingming Yin2013-02-061-6/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | auido: Add amr-wb+ codec to ACodec. -Add an entry for amr-wb+ decoder in ACodec. -amr-wb+ non tunnel will be enabled by default. Change-Id: Ied8902eb83da29a3164eb99e88630570a43f681e libstagefright: Create MP3 decoder libraries without OMX layer - With the current MP3 OMX SW decoders, the decoding time is increased w.r.t the libraries without OMX layer that are present in GB. This increase in decoding time results reduction in power savings in LPA mode. - This commit is to remove OMX layer for MP3 to reduce the power consumption in LPA mode Change-Id: I835ab6d013a326f111e513586f884bacd5f7106a audioflinger: EffectModules are updated with device change Issue: Effects modules are not updated with the device change information Fix: 1) Add setDevice information to mLPAEffectChain 2) Remove the return after sending the device route information to Direct track so that mixer thread is also aware of the device change for EffectsChain Change-Id: I82936cd47290946a5e4772e448669d81e0e4d6f5 libmedia : Add a NULL pointer check - Print frame count in AudioTrack::dump() only if the control block is valid Change-Id: Icf594eb721b48795c43d7bd165f6086031ce6efd CRs-Fixed: 435050 libstagefright: Query AudioSystem for suggested record mute duration - AudioSource mutes a pre-defined duration (defined by kAutoRampStartUs) at the beginning of a recording. - Instead, query the audio system for any ongoing playback streams and use its output latency to calculate the duration to mute the incoming PCM stream. - This assumes all current playback threads will be paused once recording is started. Change-Id: Ie9b1d62e7be803ef1d8a59127b95c73e03fa5ce6 CRs-Fixed: 438149 libstagefright: Convert mono to stereo for LPA clips - Sound effects are not supported for mono clips - Repetative calling of effects_configure and effect_process for mono clips is resulting in crash in the sound effects library. - So, Mono clips are now converted to stereo by copying the left sample to right. - This is same as what Resampler does in Non-LPA Playback. This commit is a port of fcc0647fab20ceaf1c07bc10bb243f14c48b114c CRs-Fixed: 421639 Change-Id: Ie579c8d11afe3db8d42a35956e8bf23eeb88cfe6 audioflinger: Fix to set volume from MediaPlayer in Tunnel mode Issue: MediaPlayer.setVolume does not have effect on Playback volume in TunnelPlayer mode Fix: the left and right volume parameters of setVolume are hardcoded and defaulted in DirectAudioTrack. Updating the parameters from the input arguments fixes the issue Change-Id: I8a107ce57284b225b17d95fed0f69e3adc5fb131 CRs-Fixed: 441849 libstagefright: Enable Tunnel Decode for select formats - Enable tunnel mode decode only if the audio mime type matches a supported list. Change-Id: I32afd83e5fda1e90cb671dd747f17cb83bb84fc1 CRs-Fixed:437651 framework/av:: Add support to decode mp3 data in mp4 container - Added support to decode mp3 data in mp4 container packed as mp4a atom and .mp3 atom as well. Port of 8fa3774adf9259b33ee721cfaeff26da42c29928 Change-Id: I1a04022f30a9f6516575440aba7652986ab7dc58 CRs-Fixed: 439897 audiomixer: Use High Quality resampler Use very high quality resampler to upsample to 48KHz sample rate. Change-Id: I1ba5b839f1e74ae71b405538d970e6a966bd1d47 CRs-fixed: 416730 audioflinger: Fix a deadlock - A deadlock will happen if the obit recipient registered by the DirectAudioTrack is called. - Fix this by moving the lock acquisition in DirectAudioTrack::clearPowerManager() to after DirectAudioTrack::releaseWakeLock() is called. - Also synchronize use of mPowerManager in the DirectAudioTrack destructor with DirectAudioTrack::clearPowerManager() Change-Id: Ib127db1406c4a61a4054ca0cf30f4c7347a5c92a CRs-Fixed: 444093 libstagefright: TunnelPlayer: update condition to send SEEK_COMPLETE - If the client tries to seek to 0 (e.g as a result of LOOPING) without ever calling getPosition(), we will always sent an immediate seek notification without seeking. Change-Id: Id2b9d00c611278d0521cb6fd402710f0ec37bbdd CRs-Fixed: 441411 libstagefright: Remove unnecessary code from TunnelPlayer - TunnelPlayer tries to mimick AudioPlayer when trying to delete the extractor source. - It is needed for AudioPlayer as the OMXCodec object is referenced by the CallbackDispatcher as well as AudioPlayer. - This condition is not true for TunnelPlayer, so why do it. Change-Id: I79c4e17d01910e73ad01c5640ef374626313a18e CRs-Fixed: 442365 Add MediaDebug header from CAF Change-Id: I68dbe72f86a49685b82b64927d1aa80231647a7a
* Squashed commit of audio changes from CodeAuroravivek mehta2012-12-231-1/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | libstagefright: Add QC specific media format - Add QC specific media extensions - Add QC specific media definitions Change-Id: I7dca90be3b977701d9537f5e017117790a030f1f audio: Compile AudioParameter as shared library - AudioParameter as shared lib is needed by BT support in WFD source. Change-Id: I464b428ace0cbb57ce6bf7bf3b57d51a7d56f032 libstagefright: Send flush on both i/p and o/p ports together - ANR occurs in music due to race condition in OMX component if flush is issued separately for i/p and o/p ports as DSP only handles simultaneous flush on i/p and o/p ports. Change-Id: I5b16cd5a9b57c857dc8bed489d2663b8f54769e3 libstagefright: Enable extended A\V format - Add new files to support extended A\V format Change-Id: I1e61d78d35b868d55fd8e99f95de8cab9c465db4 libstagefright: Framework to plug-in propritory parser - Extend the current framework to plug-in propritory parser Change-Id: Ia586a3048420ddf1515261f20035589447263b7b audio: add support for QCOM audio formats - Add support for EVRC, QCELP, and WMA formats. Change-Id: Iaf80f982fc8b08617132dbd7d524a1748866745c frameworks/av: Support Tunnel Playback - Implement DirectTrack and DirectTrackClient - DirectTrack exposes API to client so it can create a direct output. - DirectTrackClient allows notifications to be sent to the client from DirectTrack - DirectTrack is being used for Tunnel Audio Change-Id: I2fbb18a781d8e44b8d65da9a357f6e39375f063a frameworks/av: Support LPA Playback Add support to enable Playback in LPA mode Change-Id: I1b8ac4904f4735017d62f3757ede7bbb56e62fd3 audio: Send correct channel mask in voice call recording. -Using popCount function to get channel count gives incorrect value on voice call recording. -Only STEREO and MONO bits to be considered to count channels on input Change-Id: I04c2c802422e868bdba0538ff8623dbf9eb659fe libstagefright: Thumbnail mode initial commit - use sync frame decoding mode when kClientNeedsFrameBuffer is set for hardware decoders - hardware decoder will only expect I frames, OMXCodec will set EOS on first ETB to stop more frames from being pulled - skip EOS check on FTB so that the first frame will be handled Change-Id: I0e8974e088fdcc468e27764861c128cfe291499f audio: Add support for QCOM's VOIP solution Change-Id: I1150f536fa204b535ca4019fdaa84f33f4695d93 audio: define QCOM audio parameters - Define QCOM audio paramters for FM, VOIP, fluence, SSR, and A2DP Change-Id: I29d02e37685846f6d4f00dee02e2726b015eaae7 Add ifdefs for QCOM enhanced features Change-Id: Ic8e5fe6ecc058466ced71030883b1af6c2bc055c
* Fix iTunSMPB parsing for AAC tracks encoded with NeroJohn Grossman2012-09-071-8/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make sure to clear out the mean/name/data state when parsing apple-style metadata from tracks every time we have a full set, not just when we find an iTunSMPB set. AAC tracks encoded from WAV by Nero tend to put in an additional apple style metadata tag (cdec) before the iTunSMPB tag. The sequence in the file goes something like mean : "com.apple.iTunes" name : "cdec" data : "ndaudio 1.5.4.0 / -2pass -br 320000" mean : "com.apple.iTunes" name : "iTunSMPB" data : " 00000000 00000A40 000000B8 <etc...>" If the internal state was not cleared after the first set, then when the second instance of "name" is encountered, an attempt is made to parse the previous data entry as an iTunSMPB tag when it is actually a cdec tag. Afterwards, mean, name and data are all cleared, and when the second data is encountered there is no current mean or name present, so the gapless metadata gets skipped. By clearing the metadata state every time we have a full set of mean/name/data, we make sure that we are always interpreting the data field as the proper type. Change-Id: I196e2e3f83e434f15d5ee55ae40a74a92d5a1845
* Fragmented mp4 extractorMarco Nelissen2012-09-051-1/+2
| | | | | | | Still experimental. Set property "media.stagefright.use-fragmp4" to true to enable. Change-Id: I210b9c5b5164b5c5eefc31309845ee881ac7db8e
* Add Fraunhofer AAC encoder with AAC-ELD support.Dave Burke2012-04-251-12/+10
| | | | Change-Id: I6cd499d257d72f50a5b508bed97796a591a51506
* Fix the file mimetype reported by the mpeg4 extractor.Andreas Huber2012-03-231-1/+2
| | | | | Change-Id: I72474c17757dba5867f55b0e99e76e9e4e32ce7b related-to-bug: 6217289
* Parse gapless info from mp4 filesMarco Nelissen2012-03-211-0/+45
| | | | Change-Id: I4c83d4e12e996dc29708268e68a4bb74b368c6f3
* First step of refactoring 'timedtext' code.Insun Kang2012-01-311-2/+0
| | | | | | | | | | | | | | | | | | | Goal 1. Removed dependency of TimedTextPlayer on AwsomePlayer. 2. Generalized TimedTextParser to TimedTextSource and its subclasses. Summary 1. Introduced TimedTextDriver, TimedTextPlayer (new implementation), TimedTextSource (and its subclasses). 2. Removed TimedTextParser. Remaining TODOs 1. Revise VideoVidew, Gallery3D app, AwesomePlayer to check if 'pause' and 'resume' works well. 2. Consider revising MediaPlayer APIs such as setParameter() -> addTextSource(). Need more thoughts. Change-Id: Ie0c4f15b9690102de755cef6940f8c31ccf78e27
* Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF) DO NOT MERGESteve Block2012-01-081-4/+4
| | | | | | | 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-2/+2
| | | | | | | 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-3/+3
| | | | | | | See https://android-git.corp.google.com/g/156801 Bug: 5449033 Change-Id: Ib08fe86d23db91ee153e9f91a99a35c42b9208ea
* resolved conflicts for merge of 07bacabe to masterAndreas Huber2011-12-051-23/+94
|\ | | | | | | Change-Id: Idb56996f7c1b78d96e3d3d3f08419c4d122db0b1
| * Properly identify how much metadata we need to cache in order to instantiateAndreas Huber2011-12-051-23/+94
| | | | | | | | | | | | | | the extractor without blocking (and therefore be able to abort). Change-Id: Id2acdde897e02baaeabadae70b7c95b66c9041b3 related-to-bug: 5666532
* | am 510180f1: am 08e42967: Merge "Add support for retrieving location ↵James Dong2011-11-111-0/+35
|\ \ | |/ | | | | | | | | | | information in mp4/3gpp files" into ics-mr1 * commit '510180f162dee3ae5416a98caa07f58a754f4b3f': Add support for retrieving location information in mp4/3gpp files
| * Add support for retrieving location information in mp4/3gpp filesJames Dong2011-11-101-0/+35
| | | | | | | | | | Change-Id: Ib8427704ef9ee5a4fa8fe1818c8a62d77b4ea687 related-to-bug: 5560253
* | Adds handler type 'sbtl' to support subtitles in various containers.Insun Kang2011-11-101-2/+3
| | | | | | | | Change-Id: I16d2c5d9aeb087b958e28052f266ca0ef42ea7f1
* | Rename (IF_)LOGV(_IF) to (IF_)ALOGV(_IF) DO NOT MERGESteve Block2011-10-261-4/+4
|/ | | | | | | See https://android-git.corp.google.com/g/#/c/143865 Bug: 5449033 Change-Id: I0122812ed6ff6f5b59fe4a43ab8bff0577adde0a
* Return a runtime error instead of assertion if seeking beyond EOS in mpeg4 ↵Andreas Huber2011-10-061-4/+6
| | | | | | | files. Change-Id: If6531b4a1ff45460cfcdcc04764c5c63a2f5a749 related-to-bug: 5418914
* Make sure we have all the sample table metadata before declaring a track valid.Andreas Huber2011-08-171-0/+5
| | | | | Change-Id: I2dfbc3e6017b5cd264e4cccfa47d19047b2e7f31 related-to-bug: 5178976
* - Retrieve is_drm in MediaMetadataRetriever.Gloria Wang2011-07-011-4/+0
| | | | | | | | | - 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
* Timed text display format support:Gloria Wang2011-06-221-6/+56
| | | | | | | | | 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
* Extract embedded cover art (aka poster frame) in mp4 filesJames Dong2011-05-261-0/+24
| | | | Change-Id: Ic9421ee27b9aa3b27df00878b887de20f25d232b
* For out of band timed text support (timed text in a separate file).Gloria Wang2011-05-251-1/+1
| | | | Change-Id: I9e024a63eb9bf6f839deee3c7766a66e63126c96
* Claim support for .3gpp2 A/B files.Andreas Huber2011-05-171-0/+3
| | | | | Change-Id: I16dd3dcb93a50b3c808ae710d0ba4757c89ab9c8 related-to-bug: 4406745
* Initial CL for the timed text support:Gloria Wang2011-05-031-1/+37
| | | | | | | | - Add support for MP4 timed text - Add API for app to turn on/off a text track - Add timed text metadata(language) in the MediaMetadataRetriever Change-Id: I0055beba38ac761627dbcc6d581ae9582d68bb94
* Merge "Give PSP and QuickTime compatible mp4 files a chance to play"James Dong2011-04-251-0/+5
|\
| * Give PSP and QuickTime compatible mp4 files a chance to playJames Dong2011-04-071-0/+5
| | | | | | | | | | Change-Id: I2618946b242b581fb8ed5de9a13ede23a4191b11 related-to-bug: 4173290
* | Remove the assertion and report content malform error to applicationJames Dong2011-04-221-5/+9
| | | | | | | | | | Change-Id: I8e30c586048d38334fd4366959a124a99d8efe28 related-to-bug: 4267147
* | Remove streamability verification, it's taking too long. Also...Andreas Huber2011-04-151-86/+5
|/ | | | | | | | make sure that findSampleAtTime uses composition time instead of decoding time, at the expense of extra memory. Change-Id: I67d09389b3df7ed265f614bdd0b142ca7f19f86a related-to-bug: 4294536
* Reject streaming .mp4 files over http that are not muxed reasonably.Andreas Huber2011-03-031-7/+105
| | | | | | | | Audio and video samples must be reasonably close by at any given timestamp, for now we define "reasonably" as "their offsets must not be more than 1MB apart". related-to-bug: 3509977 Change-Id: I4c3a2a239bf911306833f3b17b73c9e2f76ab901
* mp4a box contains mp3 audio when the object type indication is 0x6bJames Dong2011-02-251-0/+8
| | | | | | | | | | In this case, the MediaExtractor returns ERROR_UNSUPPORTED since our software MP3 audio decoder may not be able to handle packetized MP3 audio. bug - 3377570 Change-Id: I8bb6b3813716b5fa019e318842e8e1908b3c8bf8
* d263 may contain optional bitr box, and thus its size can be up to 23 bytesJames Dong2011-02-231-7/+14
| | | | | | bug - 3482703 Change-Id: Id6fdf9d1f4a304954c018b67d50bd79a07164687
* Make available h263 DSI information from MPEG4ExtractorJames Dong2011-02-111-0/+24
| | | | | | bug - 3446863 Change-Id: Idbaf7a564d544784fdbc36ed0339c98a519adc88
* Make sure timestamps attached to encoded media are composition timestamps.Andreas Huber2011-02-031-0/+14
| | | | | | | | not decoding timestamps. Obviously there is no difference between them if the content in question does not involve frame reordering. Change-Id: Iac4d06cfeb8a136f735c1148e98cac340d3ef893 related-to-bug: 3398314
* Expose average video frame rate via MPEG4ExtractorJames Dong2011-01-191-1/+16
| | | | | | bug - 3362483 Change-Id: Ifcbb75c1e8b80cb06c4b8fe7f5ff99bc6f18af69
* Fix the presentation video resolution when it is different from the actual ↵James Dong2011-01-191-2/+4
| | | | | | | | image resolution of the video. bug - 3352413 Change-Id: I8f08f3896e9fb90f09119dccdb88b82af60f79f2
* Add support for the "compilation" tag in mp3, mp4 and ogg, and also addMarco Nelissen2011-01-071-0/+11
| | | | | | | | | support for two common ways of specifying album artist in ogg files. b/3311831 (cherry-picked from GB because of weird automerger failure) Change-Id: Ibf12a3d6bc8bbc2ac5ea815de6b33414b8f53f0f
* Give the standard not compliant video sample a chance if its size in the mp4 ↵James Dong2010-12-151-0/+7
| | | | | | header is invalid Change-Id: Ib573ededb9c73285822fa238120faa484402bcf7
* Opted to recognize "h263" or "H263" boxes in an mp4 fileJames Dong2010-12-151-0/+4
| | | | | | bug - 3278240 Change-Id: Ifd1b1f3e5dd55dbf2c33bbad9dd51998c25bfc15
* 64-bit file size/offset support for media frameworkJames Dong2010-11-181-28/+28
| | | | Change-Id: I3452bc2c0f1d990cc67285df2fce1f9f86ff8e10
* Support post-decode video rotation.Andreas Huber2010-11-161-51/+94
| | | | Change-Id: I9ac90871269c5e132e98a9bf3ad8cae00f329f17
* resolved conflicts for merge of 9084631d to gingerbread-plus-aospGloria Wang2010-10-251-31/+245
|\ | | | | | | Change-Id: Ie2b675d50bfca3f33aee80f1a67c9f03d1f97472
| * DRM framework support:Gloria Wang2010-10-251-31/+245
| | | | | | | | | | | | | | | | | | | | - add a sniffer for DRM files - add DRMSource and DRMExtractor for es_based DRM - add pread in FileSource.cpp for container_based DRM - add native DRM framework API calls in the player for DRM audio/video playback Change-Id: I4b9ef19165c9b4f44ff40eeededb9a665e78a90f