Updated OMAP support
Adds updated TI code (under the OMAP_ENHANCEMENT conditional) for compatibility with the current version of OMAP3/OMAP4 kernel-side code. This is a squashed combination of 138 commits from omapzoom: Stagefright OMXCodec changes to enable TI Hardware Codecs Descritpion: These changes are ported from Froyo branch. The change details: (1) Decoder table is updated with TI Ducati codec components (2) OMX version is updated (3) Component quirks are modified as per ducati codec requirements (4) Codec configuration parameters are modified as per ducati codec requirements Change-Id: If845c3464281a1be053dbbff85c8db56b1163286 Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Stagefright changes for video thumnail generation Descritpion: These changes are ported from Froyo branch. The change details: (1) OMXCodec changes for quirks, bufferallocation (2) Colorconverter changes to support strided buffer color conversion from NV-12 packed to RGB (3) stagefright metadata retriever changes for codec create with proper flags and codec configuration changes required for Ducati codec Change-Id: I252284d9e98653d9cccc46521e6391f1d439e90a Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Stagefright Changes to use externally allocated buffers Description: These changes are ported from Froyi branch. The change details: (1) Video Renderer and OMXRenderer interface changes to pass buffers from Renderer to Awesome player (2) Awesoem player changes to set the buffers with the OMXCodec and release the buffers once rendered (3) OMXCodec changes to use the externally allocated buffers while configuring the hardware codec. Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Patch Set 5: Cherry-picked on current tree. No changes made. Taking verifications and approvals from previous patch sets. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I39e1c014eb52f9b0c2cb717671d0339889b09e07 Stagefright changes to support interlaced video formats Description: These changes are ported from Froyo branch Change details: (1) Stagefrightmetadata retriever changes to check the video content and configure teh OMXCodec with appropriate flags. (2) OMX Codec changes to update the quirks and configure codec accordingly. Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Patch Set 4 Cherry-picked on current head of tree. No changes made. Taking verifications and approvals from previous patch sets. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: Ia2e79d3883b2359ea416d5fcf509c4f3c38358e2 Stagefright changes for H263 decoders Desrciption: These changes are ported from Froyo branch. The change details: H263 mime type and color format checks are added. Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Patch Set 4 : Cherry-picked on current head of tree. No changes made. Taking verifications and approvals from previous patch sets. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: Iafac582a0b426503533fcd53f62d3ced91b89b15 OMXCodec changes for buffer alignment Description: These changes are ported from Froyo branch The change details: A constant has been defined to make buffer size aligned on 32 bit boundary Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Patch Set 4 : Cherry-picked on current head of tree. No changes made. Taking verifications and approvals from previous patch sets. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I8e8850eaa907966fd9670a57a254c1328cfb1478 Non-PreAnnouncement mode for thumbnail generation Description: These changes are ported from Froyo Since tiler memory is limited we cannot have 2 instance of decoder 1 instance of encoder and camera running in parallel. This is a requirement from 1080p camcorder perceptive. To save tiler memory we are allocating only 2 actual full size buffers but remaining all buffers as dummy. The dummy buffer will help us to move to idle state. Then we would provide full allocate buffers only to ducati and then on receiving the Third EmptyThisBufferDone we would send an EOS. This will flush out the Decoded first I frame buffer back to the component. This is the frame from which we will make the thumbnail. Here we have not voilated any OMX protocol but still able to save memory. This is called as NON-PreAnnoucement mode where we dont give all the actual buffer to the OMX component before Hand for mapping on the accelerator Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Patch Set 4: Cherry-picked on current head of tree. No changes made. Taking verifications and approvals from previous patch sets. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: Icd9650f2aa51a2eb919b51962f4c9e61ca763fe5 OMXCodec changes for software codec Descritpion: These changes are ported from Froyo change details: (1) property based checks are added for software codecc Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Patch Set 4: Cherry-picked on current head of tree. No changes made. Taking verifications and approvals from previous patch sets. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I3cd522ecaf69f8d46877fd89f10000550fbd8622 OMXCodec changes to add software decoders/encoders to the list Description: The codecs table is updated with the Android software codecs. Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Patch Set 2: cherry-pick on current tree. No changes made. Verifications and approvals taken from patch set 1. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I4fdcf597fe087b54f6be10c0ad93dea0ce24bdce OMX Renderer changres for on-the-fly resize support Description: These changes are ported from Froyo. Change details: (1) Renderer interface is extended for resize (2) Init Renderer is modified to call resize instead of destroy renderer, if teh rendere is already created. Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Patch Set 4: Cherry-picked on current head of tree. No changes made. Taking verifications and approvals from previous patch sets. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I519ba180cf652cf16ea7579e98c8a5278a16d790 Stagefright media extractor and parser changes Description: These changes are ported from Froyo branch. The change details: (1) Extended MPEG4 extractor to support more format types (2) Addition of cutom enums for openmax formats and errors Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Patch Set 4: Cherry-picked on new tree. No changes made. Taking verifications and approvals from previous patch sets. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: If28b1605ea9e75f453adab7499095b5f69348af9 Stagefright and Surfaceflinger changes for S3D Description: These changes are ported from Froyo Change details: (1) custom SEI parser is added (2) Renderer creation is overloaded for s3d (3) Awesome player has been modified to create the appropriate renderer (4) Surface flinger is modified for appropriate overlay creation Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Patch Set 7: Cherry-picking patch 4 on current head. No changes made. Taking verifications and approvals from patch set 4. Just reuploading to get description right. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I9e8824ac88279bacf6ad9e71dd2a94e6fefd9c73 StageFright Audio fixes Description: These changes are ported from Froyo Change details: (1) Audio flush function is added (2) quirks are updated for MP3 and AAC codecs (3) mpeg4 extractor is updated for amr codecs Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Patch Set 4: Cherry-picked on current tree. No changes made. Taking verifications and approvals from patch set 3. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: Ic9f351b8b251aa29d36e1805014f27184c1dff22 Mediaplayer & AwesomePlayer changes for Video Cloning The changes are for porting the below patch from Froyo to Gingerbread ---------------------------------------------------------- http://review.omapzoom.org/#change,9754 Description# MediaPlayer interface and video Renderer interfaces have been extended for enabling and disabling video cloning. Awesome receives the Video mode state from mediaplayer and sets the renderer accordingly. ---------------------------------------------------------- Signed-off-by: <dnk.mohan@ti.com> Patch Set 2: Cherry-picked on current tree. No changes made. Taking approvals and verifications from patch set 1. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I0eeec627987c16cf54e361cafb927809493629a1 Awesomeplayer changes for Video Cloning on HDMI after application suspend/resume The changes are for porting the below patch from Froyo to Gingerbread ---------------------------------------------------------- http://review.omapzoom.org/#change,10447 Description# when Gallery app is suspended by pressing home button, MediaPlayer gets suspended and underlying Renderer and overlay are destroyed. But the Awesomeplayer is just reset. Hence the Videomode (normal or Clone) is left to the last value set before the suspend. Once the application is resumed, and tries to set the clone mode again, it would be filtered at the AwesomePlayer level because of the cached value. This is fixed by resetting the Video mode to normal while resetting the Awesomeplayer. ---------------------------------------------------------- Signed-off-by: <dnk.mohan@ti.com> Patch set 2: Cherry-picked on current tree. No changes made. Taking verifications and approvals from patch set 1. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: Ie346c1a81b976ad56cfd7be675a26368556caf35 Stagefright: Updating meta data with profile,level,referenceframe data. Communicate to AVC component The changes are for porting the below patch from Froyo to Gingerbread ---------------------------------------------------------- http://review.omapzoom.org/#change,9467 - Added support to parse and save Video profile,level, scan-type,number of reference frames in meta data - Communicate to ducati component - Removed earlier isinterlaced() interface, and replaced with more updatemetadata() call in TIVideoConfigParser.cpp ---------------------------------------------------------- Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Patch set 4: No changes made. Cherry-pick on current tree. Taking verification, approvals and build test from patch set 3. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I1bb89f27a19ac53461f0ed98a54b7adbee6c66a6 Flush the audio sink when resuming from a pause-->seek The changes are for porting the below patch from Froyo to Gingerbread ---------------------------------------------------------- http://review.omapzoom.org/#change,9462 1) Play an audio file 2) Pause playback 3) Seek to another position in the file 4) Resume playback ... some audio from the position before the seek is played before the audio at the new position is played. This patch resolves the issue by flusing the audio sink before resuming the playback if there had been a seek while the audio was paused ---------------------------------------------------------- Signed-off-by: <dnk.mohan@ti.com> Patch set 3: Cherry-pick on current tree. No changes made. Taking verifications, approvals and build test from patch set 2. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: Ic2b135473f4400cbcc92b4f2906e482f07aa4c1f Improve AV sync logic for accurate frame posting Current logic: 1. On Play a 10msec defalt event is posted which has a callback onVideoEvent in awesomeplayer.cpp. 2. If we find a frame in renderer comming from Ducati then we check its time stamp against system / audio time stamp 3. There is a start delta which is always adjusted from the current time. 4. If the frame is late by 50 msec we drop it 5. If the frame is early more than 100 msec then we post a event after 10msec 6. if the frame is within 10 msec of current time then post it. 7. After a frame is posted we trigger a 10msec event to go to next frame Flaws in current logic 1. we will never post it accurate; a 33 msec frame will get divided in three 10 msec windows and we will post it 3 mec early. 2. 100 msec check was wrong. 3. polling every 10 msec is increasing the MHZ 4. After displaying the frame we start a 10msec event which could have been 1 Msec to get more accurate posting results 5. Audio on OMAP4 increase the timestamp after 42 msec and we need accuracy of 1msec. So we will never have a precise posting Modified logic 1. We check 10msec for early ness as per google original logic. Required for precise posting 2. For PPM optimization 2 things are done 1. Post the first frame event after 1 msec instead of 10 msec 2. Post the exact time future event for frame posting e.g 33 msec we will have 1 msec and 32 msec 2 polls only reducing the ARM MHZ and also having precise posting of frame 3. Increase accuracy of audio by interpolating in between 2 audio frame increments. So polling in between 42 msec also provides accurate results and keeps audio buffer sizes independent of AV sync logic 4. Added safety check so that if audio dies we dont keep playing video via interpolating logic. 5. A safety modulation logic is added so that if we seek we dont wait in the event for huge time. This will cause hangs if we dont do this in seek case. 6. Added few instrumentation to know the exact delta between to postings Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Patch Set 2: Failed rebase. Patch set 3: Cherry-pick on current tree. No changes made. Taking verifications, and approvals from patch set 1. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: Ic5651df3a8e657c123c670b11724e043218fb349 OMAP4:Stagefright player changes to use Codec recommended number of O/P buffers Description: Currently there is no communication between OMX codec configuration and the TIHardware renderer wrt the number of Overlay buffers to be used for on the output port. In this patch, the Awesome player logic is enhanced to query Codec for the recommended number of buffers for output port and communicate the same down to TI Hardware Renderer. The codec recommended number is buffered with the optimal buffer count to be maintained at the DSS driver. With this patch the hardcoding for the output port buffer number is removed and also the lower limit for the buffer count is removed in TIHardware Renderer. this patch has to be merged along with 1.21-p5 ducati migration. Validation: Tested AV playback from Android Gallery for different resolution cl$ Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Patch set 2: Cherry-pick on current tree. No changes made. Taking verifications, approvals and build test from patch set 1. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I7d858108e8768294ded1b2fc2c2887429f8968a7 OMAP3: create mCodecSpecificData without CodecConfig flag This fixes a case that encoder returns the first buffer not including CodecConfig. In case of OMX.TI.Video.encoder using MPEG4 or H.264, the encoder does not return the CodecConfig buffer but returns CodecConfig and the first encoded data in one buffer without OMX_BUFFERFLAG_CODECCONFIG flag set. Concerning the compatibility of Froyo and GB, this regards only MPEG4Writer issue in GB. Change-Id: Ie4d541fd6d3ae540eebbdebed0ef235ec0d557e7 Signed-off-by: keun-o.park <sahara@ti.com> H264 encoder fixes for OMAP4 logic put in for OMAP3 h264 encoder is breaking OMAP4 h264 encoder. Making change OMAP3 specific. Also fixing debug compilation error. Signed-off-by: Dandawate Saket <dsaket@ti.com> Patch Set 3: Simple Cherry-pick on tree. Taking approvals, verfications from patch set 2. No changes made. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: Iebfd4ca74b0c7c15c4bb504399653baa8a4e4a65 OMAP: Stagefright: Added rotation support to S3D Renderer. OMX in Gingerbread need new HardwareAPI, createRendererWithRotation to create rotated overlay for play video clips which have rotation info. OMAP used old-fashion createRenderer to pass platform specific args, such as isS3D, numOfOpBuffers but, no rotation degrees passed. The function, createRendererWithRotation dynamically loaded from libstagefrighthw.so only if it is defined. If not, createRenderer will be loaded just like old times. Change-Id: I440637aab1ba9c68fdb6eeb413095cf3814b5dad Signed-off-by: Homin Lee <homin.lee@ti.com> Gingerbread Camcorder : Generic Encoder chnages. Description : These cahnges are generic to all the encoders. It sets the port configurations, I/p & O/p buffers count, Quirks for i/p * o/p ports, stride information & other generic ducati settings. Signed Off By : Sreenidhi Koti <sreenidhi@ti.com> Patch Set 4: Cherry-picking on current tree. Merge conflict resolved. Taking approvals and verifications from patch set 3. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I49d3af4f26e0e0948cf36e867d99c921ee106b2d Gingerbread Camcorder : Support for H.264 Encoder Description : Adds support for H.264 encoder. Signed Off By : Sreenidhi Koti <Sreenidhi@ti.com> Patch Set 5: Rebasing to break dependency chain. Cherry-picked on current tree. No changes made. Taking verifications and approvals from patch set 4. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: Ic2e811ac32ceadc2ae34dc7a9dc75c462df8a77c Encoder-H264 : Support for B-Frames This patch enables inclusion of B-Frames in H264 Encoded Video. Signed-off-by : Kalpesh Patil <kalpeshpatil@ti.com> Patch set 3: Simple cherry-pick to break dependency on non-existent patch. No changes made. Taking approvals and verifications fom patch set 2. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I020e5d45febe2830e7a72536043267db051be2c0 Stagefright: OMAP4 output buffer count from codec - bug fix. minimum no of buffers required on a port is communicated by codec via video.portdef.nBufferCountMin actual no. of buffers allocated on a port is communicated to codec via def.nBufferCountActual parameter. Today def.nBufferCountActual is used to set buffer count which is not intended and causing high buffer count usage Signed-off-by: Devaraj Rangasamy <dev@ti.com> Patch Set 2: Simple cherry-pick on current tree. No changes made. Taking build test, verifications and approvals from patch set 1. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: Ib9f57aa981b86408aaf7612f80b3540587d57e7a Store Stride in the meta data. Stride is required by flash to perform color conversion. Note# these changes are ported from Froyo http://review.omapzoom.org/#change,10713 Signed-off-by: Anu Sundararajan <sanuradha@ti.com> Patch Set 2: Cherry-pick on current tree. No changes made. Taking verifications, approvals and build test from patch set 1. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I3404dd2f3687f59618d50b7fc297c9d48a6301cb OMXCodec: Initialize quirk to kRequiresAllocateBufferOnOutputPorts If the quirk is set to kRequiresAllocateBufferOnOutputPorts by the OMXCodec Client, then AllocateBuffer is called on the output buffer else UseBuffer is called. UseBuffer can be called only for Overlay buffers. Ideally speaking, one should not expect the client to know these details. They must be handled internally. In the case of flash playback, it is expected to call OMXCodec::Create() with the flag kPreferAllocateBufferOnOutputPorts. This flag is a TI specific flag and hence flash is unaware of it. Furthermore, it cannot be hardcoded in flash since the enum value has been changing too. Patch Set 3: Resolved OMAP3 build issues by making it OMAP4 specific. Signed-off-by: Anu Sundararajan <sanuradha@ti.com> Patch Set 4: Simple cherry-pick on current tree. No changes made. Taking build test, approvals and verifications from patch set 3. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I8ad9697cbaf25d04b0d5e3e394fd2db66b78fe59 Stagefright: Making kRequiresAllocateBufferOnOutputPorts as default quirk breaks NPA thumbnail mode Changeset1: - Making kRequiresAllocateBufferOnOutputPorts as default quirk breaks NPA thumbnail mode Clear it for NPA thumbnail mode - Break was introduced by http://review.omapzoom.org/11427 Change-Id: I14ba6d98398903a436b306e1e5490f6d83341719 Signed-off-by: Devaraj Rangasamy <dev@ti.com> OMXCodec changes to handle overlay decided buffer count The changes are for porting the below patch from Froyo to Gingerbread ---------------------------------------------------------- http://review.omapzoom.org/#change,9211 Description: Currently, the number of buffers required on code output port are calculated in OMXcodec as well as in TIHardwareRenderer. And OMXCodec assumes that those many buffers are in deed allocated by overlay. But in some scenarios it it so possible that, Overlay might get fewer number of buffers than requested by OMXCodec. In that scenario there will be a segmentation fault in the system. In order to handle this scenario, OMX codec is enhanced to reconfigure the codec when it receives the buffers from the Hardware Renderer (through AwesomePlayer) for the first time. ---------------------------------------------------------- Signed-off-by: <dnk.mohan@ti.com> Patch Set 3: Cherry-pick on current tree. No changes made. Taking approvals and verifications from patch set 2. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: Ie1642d25eb8f520cb796526882969cb70e751acd OMAP4: Re-enable Vorbis decoder MIMETYPE of Vorbis audio decoder contents is missing after OMAP4 integration, resulting in no OGG sound Patch Set 2: No changes made. Simple cherry-pick on top of current tree. Taking verifications and approvals from patch set 1. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I24a85288ad124c345ef0a9035d18e0d247fc2af3 Stagefright: Added support for 2 new codecs - VP6 and VP7 Description# Modified OMXCodec table to include ducati VP6 and VP7 codecs. updated decoder caps for the same. And updated ducati specific checks for VP6 & VP7 as well. Note# These changes are ported from Froyo Patch Set 2: Rebased against latest. Change-Id: I6bd46ed45c862e21e80e2b11166b846881ba4406 Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Signed-off-by: Anu Sundararajan <sanuradha@ti.com> Stagefright: Enable support for dynamic port -reconfiguration while using Ducati IVAHD codecs Patchset1: - When codec detects change is width,height of the stream, it raises port reconfig event, port is disabled and enabled. - For port -reconfiguration during AVPlaybakc usecase, Since new set of overlay buffers are required before re -enabling port, defer port enable for ducati playback usecase till overlay buffers are available. - ResizeRenderer() should be aware of new output buffer count for new resolution - For port -reconfiguration during thumbnail usecase or stagefright -t tests, retry will happen in StagefrightMetaDataretriever, while output port will disable and reenable itself with allocated buffers. - Limitation: NPA mode for thumbnail is not working for now and disabled. will be enabled incrementally Patchset2: - Rebased to latest codebase Signed-off-by: Devaraj Rangasamy <dev@ti.com> Patch Set 3: Cherry picked on current tree. No changes made. Taking approvals, build test and verifications from patch set 2. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I1eabf4fb9d060dc5126b443cbe77f687687ec7d9 OMXRenderer changes to propagate display W&H on resizing Description# OMXRenderer is modified to propagate the display W&H along with the decoded buffer W&H while resizing the rendererer. This is required to update the crop window with Overlay. Awesomeplayer is modified to query the Video width and height and provide the same for resize Rendererer call. DRT#OMAPS00236082 - Multiple robustness test clips are playing with noise in the right side of screen due to incorrect port reconfig handling Note#This is one of the multiple patches for this DR this patch is dependent on http://review.omapzoom.org/#change,12705 Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Patch Set 3: Simple cherry-pick on current head. Taking approvals, verification and build test from patch set 2. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: Iceadb97202750b08dd45f8749a5337d5c69f0dc5 Surfaceflinger changes for dynamic display change Description: These changes are ported from Froyo change details: (1) custom omap mm library has been added (2) Surface class is extended for display ID settings and introduced omapmm lib as a friend class (3) Layer base and buffer class changes for display setting to the Overlay Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Patch Set 5: rebased again. Merge conflicts fixed. Patch Set 6: Patch Set 5 with a comma in include/surfaceflinger/ISurface.h. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: If13257af633958fab57a63a504b17d17c27d2537 SurfaceFlinger changes for Overlay cloning The changes are for porting the below patch from Froyo to Gingerbread ---------------------------------------------------------- http://review.omapzoom.org/#change,9708 Description# ISurface interface is extended for dynamic overlay cloning. This includes ISurface binder extension and layer buffer implemetation to call overlay data context for requesting overlay cloning. The same interface is used for enabling/disabling the overlay cloning. Hence based on whether this is enable or disable, the ISurface interface handles duping the fd for the cloned video device. ---------------------------------------------------------- Signed-off-by: <dnk.mohan@ti.com> Patch Set 2: No change made. Simple cherry-pick on current tree. Taking verfications and approvals from patch set 1. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: Ie1df963238ffa83181b36fd1cb92b9aa5ce020ce Changes made to OMXCodec.h so that a derived class can be created. Minor changes made to the class definition so that we can create a TIOMXCodec that is derived from OMXCodec. In future, all changes to OMXCodec should be made in TIOMXCodec, instead. AwesomePlayer also needs to be modified to use TIOMXCodec instead of OMXCodec. This is necessary in order to maintain compatibility for flash playback. Note# these changes are ported from Froyo http://review.omapzoom.org/#change,9014 Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Patch set 2: Simple cherry-pick. No changes made. Taking approvals, build test and verifications from patch set 1. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: Id687b5b2e84c71f1aab71276d5c0ae16770431c2 Stagefright: Re-enable NPA mode for thumbnail generation, which was disabled for port reconfiguration changes Changeset1: - Our Stagefright NPA statemachine has to be reset when PortReconfig is triggered, so as to go ahead with post port-config sequence - For 1D output buffer usecases, port config should result in nStride update as nFrameWidth will be new. No chagne for 2D output buffers, since constant 4K stride is used Changeset2: - Rebased Signed-off-by: Devaraj Rangasamy <dev@ti.com> Patch Set 3: Breaking dependency on merge commit. No changes made. Taking approvals and verifications from patch set 2. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: Ic421140a892384b8c30a9e59e2d5076b1bd8fa65 Gingerbread : Including TI Index header files & removing duplicate codes Description : Removing duplicate codes by including TI index header files. Signed Off By : Sreenidhi Koti <sreenidhi@ti.com> Patch Set 5: Cherry-picking on current tree to break the dependency on patch 9556. Taking approvals and verification from patch set 4. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I9063c273426fb1987c9c20d04af6f10633140b20 FM Rx: Added FM framework support This patch is rework of patch 6235 (cd38325421b73ae5693b1f9991aeeb5b982154c8) on p-froyo for FM Rx changes. The audio flinger directory is changed in gingerbread. Resubmitting the patch for FM Rx in gingerbread. All the changes are in OMAP_ENHANCMENT flag Description: FM Support: Added the FM support in the framework for enabling FM. Change-Id: I1ff2f6484c673522f83659d9696aba6a2060a798 Defined the DEVICE_OUT_FM_TRANSMIT for FM Tx device in Android Framework cherry picked from p-froyo commit-id b820e1009d4c619c254ef6cfaa58cf48182b4e3f Signed-off-by: Shitiz Kumar <shitiz_kumar@ti.com> Patch Set 2: Cherry pick onto current head. No changes made. Taking verification and approvals from previous patch set. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: If8c05732954fd7b2c7ca908504a9e27820b115c5 add support for Low Power and DMIC AudioService registers for intents from applications that notify of mic selections, and changes in power mode. For now, mic choice will be determined by system property only. For changes in power mode, AudioService will set the connection state of a new DEVICE_OUT_LOW_POWER and trigger policy manager to route to the low power hw device. Signed-off-by: Chris Kelly <c-kelly@ti.com> Patch Set 2: Removed whitespace error. No significant changes made. Taking approvals and verifications from patch set 1. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I9085217d76d5e897c855df31d397a604649ef04c AudioSystem: voice call record: new channel CHANNEL_IN_VOICE_UPLINK_DNLINK Voice call record is started by selecting inputsource AUDIO_SOURCE_VOICE_UPLINK or AUDIO_SOURCE_VOICE_DOWNLINK or AUDIO_SOURCE_VOICE_CALL. For inputsource AUDIO_SOURCE_VOICE_UPLINK and AUDIO_SOURCE_VOICE_DOWNLINK, there's only 1 dedicated input channel that permits to start record in mono. But for inputsource AUDIO_SOURCE_VOICE_CALL, there's no dedicated channel so the channel CHANNEL_IN_VOICE_UPLINK and CHANNEL_IN_VOICE_DNLINK are enable. Therefore the record is done in stereo. To avoid that and be inline with a voice call record uplink only or downlink only a new input channels is created. Change-Id: I6f1d383e185b51d4798db8e62f9310a52ad8da7c Add a java OMAP_ENHANCEMENT property definition Cherry picked from 3f812d8daf3ffa685104083abeb7fcb30056baf1 Change-Id: I439fc98cbb38e07044d568444ed9a729a0172e81 OMXCodec changes to overload constructor for OMXNode Id The changes are for porting the below patch from Froyo to Gingerbread ---------------------------------------------------------- http://review.omapzoom.org/#change,10897 Description# OMXCodec create function is overloaded to provide OMXNode Id handle back. The node Id is used by the Awesomeplayer for configuring the codec directly. This patch is only addition of the overloaded method, but the method is not being used at this point. ---------------------------------------------------------- Patchset2: Fixed build error for OMAP3 Change-Id: I52fb78486048f66e00608e08d31bd20b32f2c178 Signed-off-by: <dnk.mohan@ti.com> GingerBread Camcorder : Support for padded width & padded height. Adds support for padded width & padded height in Stagefright AV-Record path. Patchset-3 makes correction in width & height used for SetParameter for OMX_TI_IndexParam2DBufferAllocDimension. Signed Off By : Sreenidhi Koti <sreenidhi@ti.com> Change-Id: I60aa6a5caf01218d6650eea2f090427a16b46d02 Stagefright fix: Low resolution clips crash with ducati codec The changes are for porting the below patch from Froyo to Gingerbread ---------------------------------------------------------- http://review.omapzoom.org/#change,9651 - MediaBuffer mSize should used video padded height, rather than original video height, since output buffer size will have padded width and height. Break should've introduced when Android video proxy is updated to remove 2D buffer support. ---------------------------------------------------------- Signed-off-by: <dnk.mohan@ti.com> Patch Set 2: Cherry-picked on current head, no changes made. Taking verifications, approvals and build test from patch set 1. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I142b622a7c4455e7cfe431847001a458a8875599 OMXCodec fix for buffer size calculation. Description# When the video source meta data is maintained separately for video frame w&h and buffer w&h, the buffer size should be calculated from the padded height instead of the Video height. This was missed out earlier, this patch corrects the buffer size calculation. Change-Id: Idd46b71e050c2c3759b92330aa91aea52878591b Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Stagefright: Thumbnail corruption fix on port reconfig Patchset1: - On port reconfig, thumbnail driver or any other OMXCodec user should be aware of updated WxH MediaTrack metadata will have new WxH OMXCodec MetaData will have padded WxH (this is by default) - Whitespace changes (remove tabs) Signed-off-by: Devaraj Rangasamy <dev@ti.com> Patch Set 2: Simple cherry-pick on current tree. No changes made. Taking approvals and verifications from patch set 1. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: Ibeb7935307c49492e482dc74d779a69300e4b620 Stagefright changes to maintain buffer padded W&H along with Video W&H Description# Stagefright OMXCodec and AwesomePlayer are modified to store and use the padded width and height for the output buffers. This is required to handle port reconfiguration scenarios where in, both video dimensions and buffer dimensions are required. Earlier the OMXCodec metadata was always holding the padded width and height, hence there was no way to communicate the video dimensions to Awesomeplayer. DRT#OMAPS00236082 - Multiple robustness test clips are playing with noise in the right side of screen due to incorrect port reconfig handling Note#This is one of the multiple patches for this DR Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Patch Set 3: Simple cherry-pick on current head. Taking approvals, verfication and build test from patch set 2. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I441c95dece8b126794f749759d6b6fc651f27094 Moving Input buffer of video decoder to usebuffer call Currently we are using allocate buffer call for input buffer. These buffers are 1D tiler buffers and allocated by DOMX. We see improvement in memcopy if we ask omx il to allocate buffer and pass it to the component. THis improvement in copy time is due to cache attributes. So we have moved to use buffer than allocate buffer. This was also recomended by PSI team Defect ID: OMAPS00229223 Change-Id: Ib2d355417e479fe2be76c3d5ce5e127158fcf482 Signed-off-by: Dandawate Saket <dsaket@ti.com> Resolved VP6/7 playback issues New extended OMX parameters must be set for VP6/7 depending on the type of stream. Note# these changes are ported from Froyo http://review.omapzoom.org/#change,9653 Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Patch set 2: Cherry-pick on current tree. No changes made. Taking verifications, and approvals from patch set 1. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: Iee8d579bfc4dd7e93cb08275a89e2514aef05e32 Add support for ASF parser in Stagefright This patch adds the changes needed to support the ASF parser which is needed for playing WMV and WMA clips. This patch does not contain the parser itself but it makes the parser runtime-discoverable. Change-Id: I72bad81bbdecc5293b0528b593d9cd3df4f65815 VideoView changes to handle Dynamic display changes Description: This patch includes changes in the VideoView widget to load the custom java/jni, and send dynamic display change events to the JNI. Note# these changes are ported from Froyo branch Change-Id: I95f9ca064375985501cebf1ef228a1ed4e18d36f Signed-off-by: Sunita Nadampalli <sunitan@ti.com> VideoView changes to enable Video cloning on HDTV and LCD Description# Video view is modified to set the mediaplayer with the Omapmmlib. This mediaplyer instance is used by the Omapmmjni service to enable video cloning on media player. Validation# tested aV playback on LCD and HDMI Change-Id: Ia8fdc3ebb2c002fe07ea9321b831d63a9cc4f862 Signed-off-by: Sunita Nadampalli <sunitan@ti.com> OmapMMLibrary changes for Video Cloning The changes are for porting the below patch from Froyo to Gingerbread ---------------------------------------------------------- http://review.omapzoom.org/#change,9755 Description#OmapMMlibrary is extended to talk to mediaplayer for video cloning. Video view is modified to set the mediaplyer instance object with the omapmm custom library. ---------------------------------------------------------- Patchset2: Removed changes in videoview.java as it will be handled in another patch to avoid build issues. Change-Id: Iaa5cfeba74e3884397a4f301b6d5380b8b2f85a7 Signed-off-by: <dnk.mohan@ti.com> stagefright: Pass offset value of the frame data from camera source to omx codec When VNF is enabled the data received from camera source provides an offset value with each frame that has to be passed to the omx codec (ducati) for proper encoding. In the absence of this there were artifacts seen in the resulting output. This patch addresses this issue. Solves DR#OMAPS00233255 Verified sanity on AV record/playback. Signed-off-by: <dnk.mohan@ti.com> Patch Set 3: Addressed the formatting issues raised by Dan. Taking approvals and verifications from patch set 2 since no code was fundamentally changed. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I2081c1038195671843d83977d8940af1914731f1 Framebuffer: Support variable number of framebuffers in the UI This change defines a macro NUM_FRAME_BUFFERS to set the desired number of framebuffers to be used by the UI, instead of hard-coding 2 framebuffers. Aditional logic was added to handle the initialization and destruction of NUM_FRAME_BUFFERS buffers. Ported from FroYo Change-Id: I86c707d6deaae61ef72e5e48ae91437b2472977a Signed-off-by: Rodrigo Obregon <robregon@ti.com> Native window support for any FB. This patch allows clients of the class FrameBufferNativeWindow to be able to create a native window surface on any display. Change-Id: I8902858be85b83b287b8d9944bc80c82e7c34e1f Signed-off-by: Rodrigo Obregon <robregon@ti.com> OverlayRenderer: A new class for accessing Overlay Since only the mediaserver process has the necessary permissions to create a surface and to create an overlay, we need this new class for the flash plugin to make use of overlay. Note# these changes are ported from Froyo http://review.omapzoom.org/#change,9245 Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Patch set 2: Cherry-pick on current tree. No changes made. Taking verifications, and approvals from patch set 1. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: Ic482acffd3148d7b4b189646f4741cfe85a430a9 IOMX: implement getBuffer() call for IOMX interface, so as exteral application use own player driver The changes are for porting the below patch from Froyo to Gingerbread ---------------------------------------------------------- http://review.omapzoom.org/#change,10692 if External applicaiton creates a player driver(awesomeplayer), then H/W renderer is created by MediaServer if the AwesomePlayer, which is created by external-application wants to send buffers to the H/W Renderer, it have to send by Binder calls. This patch implements getBuffer Binder interface between H/W Renderer of MediaServer and AwesomePlayer of external application. ---------------------------------------------------------- Signed-off-by: <dnk.mohan@ti.com> Patch set 2: Cherry-pick on current tree. No changes made. Taking verifications, approvals and build test from patch set 1. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I6cddb8f06a8bbf857763839ed5de698c303c9a6a OMAP4: Enable Stride and Offset Support in Camera Framework Modify camera and stagefright framework for taking stide and offset from timestamp callback Change-Id: I19308cda849bfad3a03dbe7fe070c38ab5bdc5d4 Conflicts: services/camera/libcameraservice/CameraService.h OMAP3: SF: Fix the misuse of mLastVideoBuffer in AwesomePlayer mLastVideoBuffer is not used with OMAP_ENHANCEMENT flag. And, current code causes a segmentation fault when it tries to access mLastVideoBuffer which is not initialized at constructor. This fixes the segmentation fault in suspend function. Because there's no code for OMAP4, 'if(0) {' routine for OMAP4 was still left unchanged. Change-Id: Ie2a8abaf3f36a62235be4331956a74737c8aa896 Signed-off-by: keun-o.park <sahara@ti.com> OmapmmLib changes to fix native surface field Description# surface class mSurface field id replaced with mNativeSurface. patchset2: rebased to the latest codebase. Change-Id: I7bdc8148ea8bf58ce73a62cd6d68e0f44c6cc84e Signed-off-by: Sunita Nadampalli <sunitan@ti.com> OMXCodec fix for NPA mode thumbnail scenario Description# The mNumberOfNPABuffersSent state variable update is corrected in fillbufferdone callback. Earlier we were decrementing the state variable in FillbufferDone callback unconditionally.During port reconfiguration scenarios we were resetting this variable to "0" hence the further decrement in FillBufferDone callback was wrapping around this unsigned state variable to large value. This was resulting in no buffer sending to Ducati for thumbnail generation, hence thumbnail generator was hanging forever. This is fixed by decrementing the mNumberOfNPABuffersSent state memeber only if it non-zero positive number. DRT# OMAPS00236210 - No thumbnails generated for the clips which result in port reconfiguration Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Patch Set 2: Simple cherry-pick on current head. Taking approvals, verfication and build test from patch set 1. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: Ibaaca788497583ab7d0fadef5cc491c72dfb0486 OMXCodec changes for tearing effect Description# In the OMXCodec buffer info, a new field has been added to track the buffers which are with Player. This means the buffer could be in AV sync logic, or already with DSS for rendering in case of video buffers, or with Audio HAL incase of Audio buffers. Earlier these buffers are given back to codec for filling irrespective of whether they are with sink or free. This is fixed by adding additional state for the buffer to track the life cycle of the buffer with the sink. Validation# tested AV playback and AV record. DRT#OMAPS00234704 - Tearing video frame on display when fastford/rewind during the video playback Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Patch Set 2: Simple cherry-pick on current tree. No changes made. Taking approvals, verification and build test from patch set 1. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I1bcddddfeaf79c624f304b63f0b342625a4d6e33 OMAP4: S3D: OMX component configurations to handle SEI messages for video playback Description: Reads Codec buffer metadata to reconfigure S3D display driver - Parse output buffer for SEI MetaData - Read metadata and configure S3D display driver upon framelayout changes sent by codec Note: Patch ported from Froyo Dependencies: Patches 13385 Change-Id: I1a1afc1159248f98fc199c0aa288366a592f7e89 Signed-off-by: Gilles-Arnaud Bleu-Laine <gilles@ti.com> Gingerbread Camcorder : Fix for color distortion in Recorded Clip Encoder needs a NULL buffer pointer to be passed to OMX_UseBuffer() fucntion. Whereas Decoder needs a valid buffer pointer for the same. This patch adds an overloaded function definition for useBuffer() with extra argument 'size'. For Encoders, this size is passed to OMX_UseBuffer() along with NULL buffer pointer. For Decoders, this size is ignored. With this patch, decision is taken which argument to pass based on if component is Encoder or Decoder. Signed-off-by : Kalpesh Patil <kalpeshpatil@ti.com> Patch Set 4: Simple cherry-pick on current tree. No changes made. Taking verifications and approvals from patch set 3. Change-Id: I176881dd632af2f61e9ed6ade02f6d50e1edbc94 Signed-off-by: Jean Johnson <jean-johnson@ti.com> Patch Set 5: fixed compilation issue with OMAP3 changed #ifdef to be omap4 specific in include/media/IOMX.h OMAP4: Include OMX_TI_IVCommon.h header file to support definition of color format (PackedSemiPlanar_Sequential_TopBottom) -- Remove the definiton from Stagefright includes files as it is a TI custom index. Note: Patch ported from Froyo. Dependencies: GITS omx (http://review.omapzoom.org/#change,10685) omap3 (http://review.omapzoom.org/#change,13389 ) Change-Id: Ie45ac17d985a5008c631e5c5d8b49e3a849f5dea Signed-off-by: Gilles-Arnaud Bleu-Laine <gilles@ti.com> Avoid deadlock in OMX::freeNode By making sure OMXCodecObserver does not hold the last reference of OMXCodec object Mirroring change in OMXCodecObserver from mirror update. Mutex is removed from on_message and moved to onMessage function in OMXCodecObserver. Fixes race condition we see when stopping video record. See 6328185b from gingerbread mirror Change-Id: If5f4c92f06eb56060659547db39341b428da2b9f Code cleanup to fix some issues introduced in the ASF parser patch Fixed following issues: - Removed complete path from a #include - Removed leftover debug messages - Fixed indentation - Fixed whitespace issues Change-Id: Ia509d62cd1b93509cf6708eebcd44ae0b0808b50 Changes to support repeated PAUSE_RESUME Scenario. Consider the following scenario: 1. Buffer arrives early, means in function onVideoEvent mVideoBuffer is not set to NULL 2. Pause 3. Resume, play_l is called successfully at this point 4. In function onVideoEvent, mFirstVideoBuffer is not made NULL as mVideoBuffer is not NULL (see point 1) 5. Again Pause 6. Then Resume 7. play_l is called with mFirstVideoBuffer non-NULL 8. play_l fail in CHECK(mFirstVideoBuffer == NULL) This patch corrects this issue by releasing mFirstVideoBuffer, if it has not been released already in onVideoEvent Change-Id: Ie9de7c647936aee3c16bf2ab0ea4cb7bae3cae04 Stagefright: Awesome player and OMXCodec changes to fix some types of port reconfig Port reconfig is supported as of now. But it does not support port reconfig during playback (after playing some frames). This patch adds changes to appropriately flush the buffers towards OMX component and the renderer.Also it sends proper free buffer requests to OMX component to enable proper state transitions in OMX component. Verified with available port reconfig clips. Patchset2: For clips having Port reconfig at the beginning sometimes there was a race condition on causing failure to start playback. This is addressed by adding a delay in setbuffers before flushing the buffers with freeBuffersOnPort(). Signed-off-by: <dnk.mohan@ti.com> Patch Set 3: Simple cherry-pick on current tree; no changes made. Taking approvals and verification from patch set 2. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I5ef8feb46812f1c34e0398d208cd0336d1bdcfe2 AwesomePlayer changes to handle the render buffer failure scenario Description# Currently Awesome player local data structures are updated with the buffers with renderer after the render call returns. This would leave out a scenario where, the render call fails to successfully queue the buffer with the DSS. In this scenario the buffer can't be reclaimed as it is not registered with the Awesomeplayer. This is fixed by updating the bufferswithrenderer structure before invoking the render method. Validation# AV playback suspend/resume on LCD and HDTV DRT#OMAPS00234816 - Gallery app stop reponding after pressing END CALL key while playing a video on HDMI DRT#OMAPS00234810 - PT: PPM: AV Playback on HDMI. Video is not rendered back to HDMI after suspend/resume; instead is played distorted in the LCD Change-Id: Ib6ce15c6f87c81eeb67b4eb6316f8801cdddc816 Signed-off-by: Sunita Nadampalli <sunitan@ti.com> OMAP3: set static buffer count for video output Due to VRFB buffer limitation, it is needed to limit the buffer count of output port for OMAP3. This fixes that memcpy is used for video output. Signed-off-by: keun-o.park <sahara@ti.com> Patch set 6: Simple cherry-pick on current tree; no changes made. Taking approvals, build test and verifications from patch set 5. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I254032d9235e11bc5203560f3de1e8c728f84960 Modified Buffer Allocation logic for Video Decoders Current logic: For all video decoder usecases (thumbnail, gallery playback, stagefright tests, flash playback, etc), call OMX_UseBuffer for output port. For Non-Overlay usecases, the output buffers are allocated by MemoryDealer. For Overlay usecases, the output buffers are allocated by Overlay. This ensures that there is no memcpy even when OMXCodec(browser process) and OMXNodeInstance(mediaserver process) live in two different process contexts. Patch Set 2&3: Rebased patch on current tree. Fixed merge conflict. Change-Id: I94eecfa337f115d268ffd26ad95e93ab388529d5 Signed-off-by: Anu Sundararajan <sanuradha@ti.com> OMAP3: lib StageFright crashes on end of decoding WMA WMA Decoder sends stopped signal twice at the end of decoding. The second signal will cause Stagefright to crash due to invalid thread state. Signed-off-by: Steve Schefter <sschefter@ti.com> Patch Set 3: Simple cherry-pick on current tree. No changes made. Taking approvals, verifications and build test from previous patch sets. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I0258d3d7124479bc00f0288604a4c5c6966e26f5 Surfaceflinger changes for overlay integration Description: These changes are ported from Froyo Change Details: (1) LayerBuffer class is modified to route Layer calls to Overlay library Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Patch Set 4: Cherry-picked on current head of tree. No changes made. Broke the dependency chain. Taking verifications and approvals from previous patch sets. Change-Id: I62bb72f36d2d8f9be34c129337527f7f4742ed64 SurfaceFlinger changes to decide when to enable the color key The changes are for porting the below patch from Froyo to Gingerbread ---------------------------------------------------------- http://review.omapzoom.org/#change,9443 Description: Since color key and per-pixel alpha need to be enabled exclusively there should be a mechanism in surface flinger to decide when to enable color key and when to disable. a new method has been added to the surface flinger to query the graphic plane pixel format and then enabl/disable color key accordingly. ---------------------------------------------------------- Change-Id: Id7b08c9bcb1187e9eb90fc31f237b3b66c033f4b Signed-off-by: <dnk.mohan@ti.com> Moving Input buffer of video decoder to usebuffer call Currently we are using allocate buffer call for input buffer. These buffers are 1D tiler buffers and allocated by DOMX. We see improvement in memcopy if we ask omx il to allocate buffer and pass it to the component. THis improvement in copy time is due to cache attributes. So we have moved to use buffer than allocate buffer. This was also recomended by PSI team Defect ID: OMAPS00229223 Change-Id: I8518c1adf2389028417ee2f041f2aa8b92bb395f Signed-off-by: Dandawate Saket <dsaket@ti.com> Both OUT and IN buffers should be 128byte aligned according to DSPBridge requirement. When decoding H264 video via Flash10 Player, OUTPUT buffers are allocated by Stagefright *OMXCodec.cpp), but they have not been 128byte aligned. And it causes the DSPProcessor MAP failure. This patch applies 128byte alignment for OUTPUT buffer before allocating the memory by Stagefright. For INPUT buffers, 128byte aligned size is set by OMX before, so we don't need to re-aligned it by Stagefright again. For the Gallery usecase, OUTPUT buffers are allocated via Overlay, so we don't need to make a alignment here. Patch Set 2: Simple cherry-pick on current tree. No changes made. Taking approvals and verifications from previous patch set. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: Ib54eae1fe173f4393643f91e9dd498cfb2a4584d Reduce memcpy in mpeg4extractor for H264 Currently the file content is read into a source buffer and then parsered for NAL unit size. Then the start code and nal unit is dumped in destination buffer provided by application. The code is optimized to put the data from file directly into application buffer. Defect ID: OMAPS00229223 Change-Id: Ie6411145fcd5bc1cac4d0d76efee2cb3c133185d Signed-off-by: Dandawate Saket <dsaket@ti.com> MPEG4 Extractor memcpy logic correction Description# Currently the memcpy logic inside MPEG4Extractor works fine for mNALLengthSize = 4, but for the clips which have different mNALLengthSize the logic results in segmentation fault. The memcpy logic is corrected in this patch. Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Patch Set 2: No changes made. Taking verifications and approvals from previous patch set. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I95355367e17df9eeb172f7716ab048880af9af85 OMAP4::S3D: Fix S3D playback of recorded videos Note: -Add support for multiple SEI types per NAL Unit to support recorded videos. -Add OMAP4 flag around SEINALLength initialization Patch set 3 - fix SEINALLenght init for GB. Change-Id: I2f9a8561792d08a8b17e17566b8dee56051bc260 Signed-off-by: Gilles-Arnaud Bleu-Laine <gilles@ti.com> libstagefright: Confine port reconfiguration related changes to Ducati video decoders The below patches http://review.omapzoom.org/#change,11472 http://review.omapzoom.org/#change,11485 have port reconfiguration related changes that are relevant to Ducati video decoders only. For other omx decoders(eg:audio)they are not applicable and will cause issues at start of decoding. This patch adds additional checks for this purpose. Verified AV playback and Thumbnail generation. Signed-off-by: <dnk.mohan@ti.com> Patch Set 2: Simple cherry-pick, no changes made. Taking approvals and verifications from patch set 1. Taking build test from there too. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I2280dbb2086022fb508e21c214487f111dbd6bdb Setting mOverlay to 0 after destroying it The changes are for porting the below patch from Froyo to Gingerbread ---------------------------------------------------------- http://review.omapzoom.org/#change,4536 Setting mOverlay to 0 after destroying it This was a fix made on HTC Codebase to resolve some Seg faults. Hence migrating it from Donut to eclair to froyo. ---------------------------------------------------------- Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Patch set 2: Cherry-pick on current tree. No changes made. Taking verifications, approvals and build test from patch set 1. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I692a831441016a2a7054bfcd14928a84a59648d9 LayerBuffer fix for Dynamic Display ID change Description# HDMI Hotplug support is added by modifying the Layer dpy field from the omapmmLib. This dpy is modified inside the Layer Source on every display Change event. In this model, there is corner case possible where in We initiate the suspend/resume, but abort it immediately. This would trigger HDMI detach in the kernel and hence the detach event is propagated to LayerB But by this time if the OverlaySource is already destroyed keeping the Layer Buffer alive, we miss this Layer dpy update. Hence on immediate resume, The overlay source would see HDMI as the current dpy and configures overlay for the same even though HDMI is not yet attached in the kernel. This would result in Overlay configuration failure and hence no Video on LCD or TV. This is fixed by initializing the Layer dpy to 0 while constructing the Overlay source. DRT# OMAPS00235635 - PT: HDMI AV Playback: When resuming system, before unlocking the screen, the notification bar shows the clip playing. DRT# OMAPS00235626 - HDMI AV Playback suspend/resume: Gallery hang Change-Id: I73f66dd8049849748cc86cc1ad28e9b68294c1a7 Signed-off-by: Sunita Nadampalli <sunitan@ti.com> OMAP3: SF: fix build error This fixes 'frameworks/base/media/libstagefright/AwesomePlayer.cpp: 1368: error: 'MEDIA_MIMETYPE_AUDIO_WMA' was not declared in this scope' in OMAP3 Change-Id: I13325b54b75ff314a567ef4ab8239322630996ff Signed-off-by: keun-o.park <sahara@ti.com> libui: Ensures there isn't an uninitialised function pointer This patch fix the boot up issue in gingerbread with DDK 1.7.17.4958 for using cancelbuffer. Change-Id: I21336878b39efa0b804ce232a23eebe09e3cd5c0 Signed-off-by: Eric Luong <x0119002@ti.com> Camera Framework: Adds support for burst messages - Burst, Exposure and Temporal bracketing are being started and run with just one call to takePicture. The existing mechanism in CameraService prevents this by explicitly reseting and checking the compressed message type during each dataCallback. The new burst message type on the other hand will continue processing burst frames until the sequence completes. Signed-off-by: Emilian Peev <epeev@mm-sol.com> Patch Set 6: Simple cherry-pick on current tree. No changes made. Taking verifications and approvals. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: Ib9bfdeae1e4121b5d09f09001224acd9df3b5b40 OMAP4: Enable Camera on Gingerbread Modify CameraService to select correct overlay format Change-Id: I4c90cb9161db0d237649f706430e397a4918a1d3 Enable S3D preview in camera framework Porting over changes from Froyo to enable S3D preview. Change-Id: I47a5ab32072a5b118c8ca8ea239e92aa857e655d Gingerbread Camcorder : Support for H.263 Encoder Description : Adds support for H.263 encoder. Signed Off By : Sreenidhi Koti <Sreenidhi@ti.com> Patch Set 4: Cherry-picked on current tree. No changes made. Taking verification and approvals from patch set 3. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: Ib0ac27fa493b567279cd4a28b121183ca56a9006 OMAP4: S3D: Add SEI Video Encoding configuration support in Stagefrigth Description: Get Camcorder encoder settings and configure OMX component to incorporate SEI messages. Patch Set 7: Set preset values to userdefined in case of S3D Change-Id: I2982cb71fc8dfdfef33c3b60a97a1c044e083188 Signed-off-by: Gilles-Arnaud Bleu-Laine <gilles@ti.com> Removing initial seekTo(0) when playing back camera shutter sound. This fixes DR OMAPS00236070. After boot, with headset plugged in, when doing an image capture, the shutter sound would play twice due to an unnecessary seek from the camera service. The seek in this case is happening before the AudioPlayer is created, and thus, it gets treated as a deferred seek, which results in the AudioPlayer not being able to do a simple end of stream call. Signed-off-by: Ricky Bhatia <a0866433@ti.com> Change-Id: I7938657c3ceecc01e09ea14d4e42493e190b8146 OMAP3: Handle NULL pointer exception in RawCallback Change-Id: Ic3a4ca6d2dd58b864be60d183af16bd9562680bb Signed-off-by: Julian Shandorov <jshandorov@mm-sol.com> Gingerbread Camcorder : Setting the correct colour format for recording Descrition : Using YUV420PackedSemiPlanar color format for recording use-cases. Signed Off By : Sreenidhi Koti <Sreenidhi@ti.com> Change-Id: Iea7316ca75cf52d3e06c708f6cff742da52f4010 OMAP3: set UYVY format for YUV422I CameraSource OMX.TI.Video.encode uses YUV422ILE(Little endian) for encording. So setting YCbYCr caused the incorrect color issue when decoding the encoded video clip. Signed-off-by: keun-o.park <sahara@ti.com> Patch Set 5: Simple cherry-pick; no changes made. Taking approvals, verifications and build test from patch set 4. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: Iad509f0b4d96ec7f4c87c52765043e8281a79917 Fix for EOS buffer sending in Thumbnail mode In case of thumbnail we are providing 2 codec config buffers and one data buffer. The data buffer has EOS flag which triggers the decoding and flushing on the output port. It was seen that the input buffer also gets an callback. This was causing next input buffer to be send with EOS which is not desired. We want to send only 1 input buffer. Signed-off-by: Dandawate Saket <dsaket@ti.com> Patch Set 2: Removing whitespace errors. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Patch Set 3: Review comment fix Patch Set 4: White space removal Signed-off-by: Dandawate Saket <dsaket@ti.com> Patch Set 6: Simple cherry-pick. No changes made. Taking approvals and verifications from pathc set 5. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: Ic520417621fd4086061a5d8f4185b3d24155c926 Gingerbread Camcorder : Support for MPEG4 Encoder Description : Adds support for MPEG4 encoder. Signed Off By : Sreenidhi Koti <Sreenidhi@ti.com> Patch set 4: Simple cherry-pick on current tree. No changes made. Taking verifications and approvals from patch set 3. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I2b8c22c3426511bfe5843668885e45afae716297 stagefright: remove memcpy from mp4 parser to OMX input buffer For AV playback, mem copy from MP4 parser to OMX is a cost operation, this patch avoided the intermediate copy from MPEG4Source to OMX I/P which is currently configured to use Tiler 1D buffers, audio and NAL fragments/multi-slice mode are not impacted by this optimization. DR#OMAPS00232517 Signed-off-by: Yong Zhi <y-zhi@ti.com> Patch Set 5: Simple cherry-pick on current tree. No changes made. Taking approvals, verifications and build test from patch set 4. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I4716d16f64f164d09f7cb6f45f2f051e6f0add33 MPEG4 parser changes for ctts structure Description: These changes are ported from Froyo. Change details: MPEG4 parser currently doesnt understand the ctts structure. If decode timestamp is not sample as presentation timestamp then the frames will be presented to AV sync logic in wrong order. The mp4 parser mandates to take into account the ctts if the decode & display timestamps are not same. Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Patch Set 4: Cherry-picked on current head of tree. No changes made. Taking verifications and approvals from previous patch sets. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I53c3339f8fcba937ac3ddc13ea6810719703ff23 OMXCodec pause/resume scenario handling Description# For OMXCodec source, there is a pause state, but there is no explicit resume state. On resume of Awesomeplayer, the OMXCodec is resumed on first read call from AwesomePlayer. During this pause/resume transitions, on few iterations, there is a starvation of Codec for buffers on the input port, because of previous EMPTY_BUFFER_DONE call back couldn't initiate buffer to Codec, because of Pause assertion. This is fixed by initiating the buffer flow on I/P port in read method if the OMXCodec is resumed from pause state. Validation# Tested AV playback pause/resume multiple times. patchset2# moved input buffer drain logic before filloutput buffer to avoid deadlock. Change-Id: Id0e72e346b1c9b50e4118007f01ca4ee0610bf75 Signed-off-by: Sunita Nadampalli <sunitan@ti.com> SF: removing race condition of setting mOwnedByComponent This fixes a race condition of setting mOwnedByComponent value. Without this fix, setting mOwnedByComponent at the return of fill_buffer() call sometimes lose in the race with FillBufferDone call which also tries to set mOwnedByComponent. To avoid the race condition and keep proper meaning of mOwnedByComponent, mOwnedByComponent line should be placed right before the fill_buffer() or emtpy_buffer() call. Signed-off-by: keun-o.park <sahara@ti.com> Patch set 3: Simple cherry-pick on the current tree. No changes made. Taking verifications, approvals and build test from patch set 2. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I49a3fd18f7fac48d53956f8294e302f7362be641 Stagefright: Putting back memcpy from a previous change for OMAP3 This change will put back a memcpy removed by a previous change by setting the changes to be target specific. Signed-off-by: Juan Escamilla <juan.escamilla@ti.com> Patch set 3: Simple cherry-pick on current tree. Taking approvals, verfication and build test from previous patch set. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: Id1a11c4f85482da2eb2e07057b49e96fda6f094a OMAP3: enable two ITTIAM encoder codecs This patch enables the two ITTIAM encoder. OMX.ITTIAM.AAC.encode OMX.TI.720P.Encoder Change-Id: I84533191575e7f3be847f5dffb64d7038eb1e7b8 Signed-off-by: keun-o.park <sahara@ti.com> Camcorder : Support for No Audio feature in MediaRecorder By default NB-AMR is enabled for No-audio. This patch prevents setting of Audio Encoder Parameters for No-Audio option. This patch ports below patch from Froyo to Gingerbread. http://review.omapzoom.org/#change,5318 Patchset-2 Adds check for SystemProperties.OMAP_ENHANCEMENT Signed-off-by : Kalpesh Patil <kalpeshpatil@ti.com> Change-Id: I408c25ba5d758bd222f4e006ee7e3a7de938927b FM UI framework changes for FM Rx GUI The changes are done under OMAP_ENHANCEMENT flag for FM+ Multimedia combo use cases. cherry picked from p-froyo commit-id 541a8145f7994b59b9334d53a0448f0e43a3d4bb Change-Id: I5c9f0be1257e855dcd3341eae7eaeb9a01b18906 Signed-off-by: Shitiz Kumar <shitiz_kumar@ti.com> Disable capture message types before stopping preview If we try to stopPreview in the middle of capture, these callbacks might occur. In this case, stopPreview will already be holding mLock while the message handler will try to grab mLock. Deadlock occurs if the stopPreview and message callback dependencies are in the same thread. Issue reproduced with Image Capture/Home Key scenario. DR: 229853 Patch Set 2: Simple cherry-pick on current tree. No changes made. Taking approvals, build test and verifications from patch set 1. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I222d00f8bd69c11302a35610095efe0ddc49f876 OMAP3: CameraService: Set timeout to lockIfmessageWanted() - This prevents from entering into infinite loop often. One reason for this is when trying to lock the mLock in CameraService::Client::notifyCallback() and in the same time CameraService::Client::sendCommand() grabs mLock. In CameraHal we never return from CameraHal::sendCommand(), because we wait for callback from previewthread, which is locked in mNotifyCb(), which actually waits infinitely for mLock.tryLock() in CameraService::Client::lockIfMessageWanted(). So we never release mLock in CameraHal::sendCommand(). Change-Id: I3d5014a44b47ed0571ffdd062c9671938953fb2c Signed-off-by: Julian Shandorov <jshandorov@mm-sol.com> OMAP4: Adding support for 3D images extension (JPS/MPO) for gallery application Change-Id: I8d3ef643a12c83b3acc1159ac6700e1470b26353 Signed-off-by: Gilles-Arnaud Bleu-Laine <gilles@ti.com> OMAP4: S3D: Add support for S3D Images extension (JPS/MPO) for Android Framework Signed-off-by: Gilles-Arnaud Bleu-Laine <gilles@ti.com> Patch set 5: Simple rebase on current tree. No changes made. Taking approvals and verification from previous patch set. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: Ic430500e9693db116f44e2c630319056323c8e16 OMXCodec::read() to wait indefinitely when executing flash use case. Issue: Recently, the conditional wait [ mBufferFilled.wait() ] in OMXCodec::read() was replaced with a timed wait call [ mBufferFilled.waitRelative() ]. This breaks pause-resume functionality during flash video playback. Root cause: Flash and Awesome Player handle pause in a different manner. In the case of AwesomePlayer, when the user pauses the video, AwesomePlayer implements pause by not calling OMXCodec::read(). Flash implements pause by not providing any input data. Flash calls OMXCodec::read() even during pause state. When OMXCodec:: read() times out and returns an error, flash exits the video_decode thread, resulting in a hang. Solution: For flash usecases, we are replacing mBufferFilled.waitRelative() with mBufferFilled.wait(). That is, we will wait indefinitely. This issue has been discussed with Adobe and they are open to handling this scenario in a different manner. However, since it is past their code freeze date, no changes can be made in flash codebase for the WASABI release. Hence we will put in this temporary fix now and revert/update it later when adobe makes the necessary changes. Signed-off-by: Anu Sundararajan <sanuradha@ti.com> Patch Set 2: Simple cherry-pick on current tree. No changes made. Takin verifications and approvals from patch set 1. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I461bc8a944a050ab9cd8fcfc28e3e1d5774e3067 Making MPEG4Writer understand out of order streams Current mp4 writer doesnt understand out of order frames which is caused due to insertion of BFrames in codecs B frames is a bidirection frame and is dependent on the next frame to decode itself Current issue is the on turning on the B frames in encoder the timestamps at the output of the encoder gets organized in a pattern. e.g of 2 b frames I/p of encoder I B1 B2 P [0 33 66 99] O/p of encoder I P B1 B2 [0 99 33 66] So normal decode timestamp is 99 - 0 , 33 - 66 , 66 - 33 Now we will have negative delta for 33 - 66 which will be encoded. This is going to cause issue when presented to decoder as we will loose sign anyways. Standard doesnt allow negative delta encoding in stts structure So we have to sort the timestamps and then make the stts structure. Then make a ctts structure which will hold the offset from the decode TS Signed-off-by: Dandawate Saket <dsaket@ti.com> Patch set 6: Addressed Dan's comments and cherry-picked on current tree. Taking approvals and verifications from patch set 5. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I1a0eeec83af6cd0e340d29a00bd9f74549eefb90 GB Camcorder : Fix AV-Sync Issue in camcorder Description : 1) Stagefright recorder spawns two threads to record audio & video tracks independently. 2) Both the threads are scheduled with the standard Linux time-sharing schedule attribute SCHED_OTHER. 3) In the current implementation Audio track thread is created first followed by the video track thread. 4) The audio player is NOT started untill stagefright issues Play() command. This command is called when both AUdio & Video sources are initialized & their respective threads are ready to run. 5) Since the Audio track thread is initialized before video thread, the dynamic priority of the thread keeps increasing every quantum it's ready to run but being blocked by the scheduler (As the Audio Player start command is still not issued). 6) Once the Audio player is initialized, the scheduler allows the audio thread to execute for some time quantum & the audio thread starts reading the data immediatly. 7) At this point Video track is still not started & is blocked to execute by the scheduler. 8) By the time video gets to execute, Audio has already filled approx 512 msec of data (At 128 msec intervals, 8Khz sample rate) . And there is an offset of half a second. 9) So we will hear the Audio half a second after the video, when Audio & video are played back at the same time. This patch reverses the creation sequence of Audio & Video, so that video is created first & allowed to execute for few time quantums before audio starts. Since the update frequency of video TS are fast as compared to audio (33 msec), we will have only few video frames started early when compared to Audio. This gives perfect AV-Sync when Played back. The actual reason on why Google has cerated Audio before video for REcord needs to be examined. Defect Id : OMAPS00233256 Verified on AAC & NB-AMR audio codecs with different resolution, Frame rates & all video codecs (H264, H263 & MPEG4). Verified AV-Sync for short duration (10 secs) & long duration (10 mins) Signed Off By : Sreenidhi Koti <sreenidhi@ti.com> Change-Id: I10a64f5c5e202164157b0af8ef245479d2af3388 SF high res/bitrate av streaming support AwesomePlayer has to wait for 10 sec amount of data being buffered to start playing, currently NuCachedSource2's kHighWaterThreashold is configured to 5M bytes, this is less than 10 sec for high bitrate playback duration, so AwesomePlayer is not able to complete prepare phase, the patch made modification of following parameters: 1. NuCachedSource2/kHighWaterThreshold - sum of max prefetched bytes + gray area, changed to 13M to buffer 6 - 10 sec duration. 2. NuCachedSouece2/kLowWaterThreshold - threshhold value to trigger prefetch, changed to 3M, AwesomePlayer will pause if prefeched duration is less than 2 sec 3. AweSomePlayer/kHighWaterMarkUs - cached duration to start playback or seek, reduced to 6 sec based on 1 and 2, this is also good for seek experience. Defect: OMAPS00231728 Signed-off-by: Yong Zhi <y-zhi@ti.com> Patch Set 3: Cherry-picked on current tree. No changes made. Taking build test, approvals and verification from patch set 2. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: Ide2b7be7e1fffd2c3de1235df2448de993d18b12 libstagefright: fix lock-up condition for av streaming This fix lock-up condition when AwesomePlayer is waiting for NuCachedSource2 to fill more data while NuCachedSource2 is above kLowWaterThreshold and enters idle. Also increased kGrayArea, this value is determined by max video resolution and worst case media layout, 3Mb is about good enough to handle web oriented clips. This is a re-work of patch #11177 which has mirror update conflicts. Change-Id: Ifcd985499e7695f4971e750f3a8c5c5b6fcc8568 Signed-off-by: Yong Zhi <y-zhi@ti.com> AwesomePlayer enum correction on GingerBread Description: AwesomePlayer state machine enum is corrected to avoid conflicts with the default enum values. Validation# AV Playback from Android Gallery app Change-Id: I9b292b9d58970a6ce77e6638fa2ede937c554f99 Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Stagefright: Handling playback negative seek scenario The changes are for porting the below patch from Froyo to Gingerbread ---------------------------------------------------------- http://review.omapzoom.org/#change,5711 This patch has change to fix the issue while performing the stagefright "b 3" tests. They were failing as negative offset was calculated and used for seek. Actually in the SF middleware we have condition to check the parameters. If the seek value is < 0, then android assert is triggerred which leads to the issue. Actually as per the test app, the test has to seek and continue decoding till the EOF. Hence have modified the seek position handling accordingly. ----------------------------------------------------------- Change-Id: I0fdd8391f1134b91f7c0c03f635de97fb8b7b2cc Signed-off-by: Sunita Nadampalli <sunitan@ti.com> StageFright: Skip zero size chunks in mp4 parser Some mp4 clips were not playing with error ERROR_MALFORMED returned from stagefright mp4 parser. These clips had zero size chunks which the parser was not skipping. The patch achieves this. I can share the clips if needed. CSR#OMAPS00234409 Change-Id: Ifd9d99f735b642e8c6c9951bf35a79ec8c995453 Signed-off-by: Srinivas Spurthi G <spurthi.gs@ti.com> Stagefright parser fix: fixes to play currently failing MP4 files The changes are for porting the below patch from Froyo to Gingerbread ---------------------------------------------------------- http://review.omapzoom.org/#change,10609 - ftypwmf Few MP4 files have filetype atom as "ftypwmf". Not standard as per www.ftyps.com, but we have test samples with such headers. Either we accept it like above, or don.t return error if we get valid MOOV or MDAT atoms later. - mdat check Few MP4 containes, don.t have filetype atom "ftyp" at all. Don.t return error ahead, see if we have valid MDAT or other valid atom types. (opencore mp4 parser behavior. Path: opencore/fileformats/mp4) ---------------------------------------------------------- Patchset2# Added OMAP_ENHANCEMENT FLAG Patchset3# Corrected LOGE macro. Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Patch Set 4: Cherry-picked on current tree. No changes made. Taking approvals, verifications and build test. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I058696f93e2429ea99020285c289706c3027b9af SF: configure kPadding for high-profile AV streaming During AV seek, if one track's buffer being read first, suppose this is video, and if the corresponding audio chunk happens to be ahead of video offset, then there is cache miss, to counter this penalty, kPadding is used to read 32K bytes adhed of the requested position, adjusted to 768k to cope better with 720p/1080p. Signed-off-by: Yong Zhi <y-zhi@ti.com> Patch set 2: Simple cherry-pick - no changes made. Taking approvals, verification and build test from patch set 1. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I41de69ff0a81aa7dcf32b4e22f205c3b456232d5 SF: AV streaming bug fix for ERROR_END_OF_STREAM condition When mFinalStatus is ERROR_END_OF_STREAM, the avail size could still be greater than the requested size in both single track and multiple track cases, so move the evaluate and copy block ahead of error checking, this patch also pushed go google for review (#21967). DR#OMAPS00234827 Change-Id: I475f15fab844ade2980e67fee6461be25224cc8e Signed-off-by: Yong Zhi <y-zhi@ti.com> stagefright: OMXCodec changes to resolve regression in port reconfig The patch addresses two issues. 1. Due to recent changes to support pause/resume state awareness in OMXCodec port reconfig funtionality is impacted. 2. There is a race condition occuring some times due to which we receive multiple times INFO_FORMAT_CHANGED from OMXCodec::read() leading playback failure. Verified sanity on AV playback/thumbnail generation Fixes DR#OMAPS00235166 Change-Id: If9f4421a8ab0b04ef24afc84552df21904616b07 Signed-off-by: <dnk.mohan@ti.com> 720P HW Codec should be used for H264 BP video which H or W is bigger than 864. Stagefright always select OMX.TI.Video.Decoder for H264 BP video if its resolution is smaller than 864x480. But since the supported Width and Height by OMX.TI.Video.Decoder is up tp 864, we need to use 720P.Video.Decoder for H264 BP Video which resolution is smaller than 864x480 but the Height or Width is bigger than 864. This patch adds this if-condition. Ref:OMAPS00243751 Patch Set 2: Simple cherry-pick on current tree. No changes made. Taking approvals, verifications and build test from previous patch sets. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: If6637bdd0dd37d6642a5f0f1c3fde3313ad901da MPEG4 Sniffers fixes for files with only Audio tracks Description# There are two fixes as part of this patch: (1) In positionFileAtAtom method we are checking for atom size to be > 8. But there are few atoms like "free", "wide" etc which could be of size 8.The comparision is corrected to >= 8. (2) And there are few clips which are having only audio traks. There are no video traks hence the confidence is never changed to 0.4; this would cause those clips failing to get detected correctly. DRT# OMAPS00238282 - MPEG4 sniffer confidence issue Change-Id: I9cc5da12c35f35fb68ed609c63381de6c43f3f84 Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Stagefright changes to support SoftwareCodecs for thumbnail mode Description# findMatchingCodecs method in OMXCodec is modified to remove: the hardcoding of Hardware codecs irrespetive of the quirk. And capture frame method during thumbnail generation is modified to remove the unnecessary logic which was forcing the first frame for thumbnail if it fails during s/w decoding. DRT# OMAPS00241143-Thumbnails generation of h263,mpg4,h264 of resolution 32x32 results in media server died Change-Id: I549edfbb813ea15554a30407f3e07596b41412d4 Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Gingerbread Camcorder: Fix first I-Frame corruption issue for H264 in GB camcorder Description : The ducati codec mandatorily returns the first frame as IDR frame after codec config. GB writer extracts the sequence & picture param set info only from the codec config. And doesn't expect this info to be present in the consequent I-frame. Since our codec always sends the first frame as IDR frame, it has extra SPS, PPS & SEI specific info which GB writer does not understand. This was causing the GB writer to add these extra info as data & eventually corrupting the I-frame. This patch strips off the extra info from the IDR frames so that the parser gets the info thay way it desires. This patch (along with ducati patch) also fixes the seek issue for H264 encoder when 4 Motion Vector is enabled. The corresponding ducati patch is: https://android.dal.design.ti.com/#change,385 Signed Off By : Sreenidhi Koti <sreenidhi@ti.com> Change-Id: Ibff4060afb3809e6a811dfdcb04d954803ade1cc Adding support for the 3gpp2 file format Adding "ftyp3g2" to the Mpeg4FileTypeList to add support for 3gpp2 (.3g2) files OMAPS00231859 Change-Id: I797e2daf910df38577fa6dfe411edae8f5da1a55 Signed-off-by: Juan Escamilla <juan.escamilla@ti.com> Stagefright: Add "skm2" into known ftyp types for MPEG4 extractor In mpeg4extractor ftyp type "skm2" was not there. Found one customer clip not being played due to this. Added it to knownFileTypes. Verified sanity on AV playback and thumbnail generation. Change-Id: I92994902474be1f44922d5265fbc32ad4b9d598e Signed-off-by: <dnk.mohan@ti.com> Stagefright: Add "avc" into known ftyp types for MPEG4 extractor In mpeg4extractor ftyp type "avc" was not there. Some of the customer clips are not being played due to this. Hence added it to knownFileTypes. Verified sanity on AV playback and thumbnail generation. Fixes DR#OMAPS00237169 Patchset2: Had further check on availbale ftyp types. There is no all inclusive list available. But over time we have covered most of them.Corrected avc to avc1 as there are no other versions(like avc2, avc3 etc) avialble. There are two types with iso : isom and iso2.Hence made changed check for iso. Change-Id: I4e7919b11ab960aeb5da8ff1c1e15a0e7d1256bd Signed-off-by: <dnk.mohan@ti.com> OMAP4: S3D: Restoring SEI message to IDR frames Note: S3D decoder relies first SEI message on IDR frame to configure the display driver. Signed-off-by: Gilles-Arnaud Bleu-Laine <gilles@ti.com> Patch Set 5: Simple cherry-pick on current tree. No changes made. Taking verification and approvals from previous patch sets. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I53d9a17c2a17b54e5511ec721c9c44ec5ab2caa8 OMAP3: SF: handling multiple NALs in a output buffer In case of Ittiam's 720P encoder, it returns the output which has multiple NALs in itself. And, these multiple NALs has a start code for each NAL to parse each NAL unit. This patch make MPEG4Writer be able to handle multiple NALs in a output buffer properly. Change-Id: I58b285946c4e735cac53aee77c119783536a1942 Signed-off-by: keun-o.park <sahara@ti.com> Gingerbread Camcorder : Support for H.264 Encoder - High Profile This patch makes H264-High-profile as default profile for H264 Encoder. A check was commented in MPEG4Writer which prevents H264-High-profile encoding. Signed-off-by : Kalpesh Patil <kalpeshpatil@ti.com> Patch set 2: Simple cherry-pick onto current tree. No changes made. Taking verifications and approvals from patch set 1. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Patch set 3: Rebase again as previous patch rebased. Taking approvals and verifications from patch set 1. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I5f71dd84cab8e03dbb25687d7bfa0c14c160caf7 OMAP3:SF Fix for 1st frame corruption in MPEG4 encoding. Discard the buffer after receiving the codec specific data. Else this will lead to writing of wrong entries into the stss, stsz & other atoms. Which causes the playback of first 1 second of clip to be blank on QuickTime. TI Video encoder and Ittiam Video encoder sends only the codec specific data in the first buffer now. But, it still doesn't have the codec specific data flag set yet. Change-Id: I4174d50d7db6e866c30c0791581dcf81dca98c01 Signed-off-by: Vikram Simha <vikram.simha@ti.com> Signed-off-by: keun-o.park <sahara@ti.com> MPEG4 Writer changes to reduce time taken for Stts and Ctts Writes With Current implementation, in the for loops for entering Stts Entry as well as Ctts entry, the check for iterator was the List.size() call. This API is implemented to iterate throught the list and return the size. So when we iterate through list of size more than 10000 ( around 10 min record ) this iterator check added significant delay and hence TN generation was taking close to 1 min for a 10 min Video. This patch removes the uncessary List.size() and saves the size beforehand in a local variable. Fix for DR: OMAPS00241059 Signed-off-by: Sathya Prakash M R <a0393677@ti.com> Patch Set 2: Simple cherry-pick on current tree. No changes made. Taking approvals, verifications and build test from patch set 1. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I13d8438024b7841b2590179a8defb228f82b0592 Update Timestamps based on sample counts For non 1080p clips we are seein that the sample count is comming to be non zero quite often. This was causing a drift in timestamp. Added correction in finding difference in timestamp. This is bug in implementation and was missed. Change-Id: I3e8e2e5bdb2621217f629d2a017a39c21f1c35d9 Signed-off-by: Dandawate Saket <dsaket@ti.com> Mpeg4 doesnt meet the PPM target Mpeg4 ppm clips dont meet the validation criteria of 30fps. The issue was found to be in ctts structure not added to the stts structure causing wrong time stamp to be presented to the decoder. This was done only for H264 and not for mpeg4. DRT: OMAPS00229150 patchset2: fixed review comments. Change-Id: I71112f48564ad8f778628bfd59bc11c59fcdce6d Signed-off-by: Sunita Nadampalli <sunitan@ti.com> libstagefright: Discard SEI messages after getting the frame packing we don't recognize anything else, anyway, and some messages confuse the parser Change-Id: Ie74f5fa9dc3b50cc7108f4b252faaacf716a4c60 OMAP3: StagefrightRecoder: limit Max-bitrate by H.264 profile level. When the H.264 recording of Camera is freezed and hanged. (In case of, set high bitrate to low resolution) In the CODEC side, codec waiting for corresponding bitrate by profile level. - Added encoding parameters table. - find corresponding bitrate by calculated level and limit max-bitrate Signed-off-by: Min-su.Kim <x0154824@ti.com> Patch Set 4: Simple cherry-pick on current tree. No changes made. Taking verifications and approvals from previous patch sets. Build test done in patch set 3. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I704cbe858e8498f41497a48a0c54428da9613a01 OMAP: Configuring sample rate appropriatetly for AMR-WB record StagefrightRecorder was setting the sample rate incorrectly for AMR-WB speech codec. This change will configure this setting accordingly. Change-Id: Ibef47106b84a026719edcc001cfe75ddbeeff4c7 Signed-off-by: Juan Escamilla <juan.escamilla@ti.com> Signed-off-by: Ricky Bhatia <a0866433@ti.com> OMAP3: Support FW3A libcamera blobs FW3A libcameras support a number of extended parameters, but do not respect the standard API. camera-omap3 includes support for fw3a, but it requires a set of headers and libraries that aren't publicly available, so use BOARD_HAS_OMAP3_FW3A_LIBCAMERA to enable the blob Change-Id: Ic6e6b88576a538e015ae77eb1fd9fe9ea186a3c4 StageFright: Support for Ittiam AAC encode This patch is used to enable Ittiam AAC encode at SF level patch set 3- remove commented out code for wbamr encoder Signed-off-by: Richard Gong <rgong@ti.com> Patch Set 4: Simple cherry-pick on current tree. No changes made. Taking approvals, verification and build test from patch set 3. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I5c8cddee193f69d2e69530c05b8b9e6456419738 OMAP3: SF: Fix wrong condition check for WMV decoder This fixes the wrong condition check in the OMXCodec. And, this makes SF select proper codec by a resolution size. Signed-off-by: Sumukh HS <sumukh.hs@ittiam.com> Signed-off-by: keun-o.park <sahara@ti.com> Patch set 4: Simple cherry-pick on current tree. No changes made. Taking verifications, approvals and build test from previous patch sets. Signed-off-by: Jean Johnson <jean-johnson@ti.com> Change-Id: I7b5786b15dadae06a8241dcf0d02a9fb4d2f053b OMAP3: Allow a device to set its own number of overlay buffers This uses the same build-time variable as the corresponding liboverlay change Change-Id: Ia477f7ac3901ca64e7af46a7b6ac004b64f33c95 Change-Id: Iedba0187175e333d69d3348d2917c40fbf6a5d27
Loading
Please register or sign in to comment