Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Skip to content
Commit 1a6862fd authored by Ricardo Cerqueira's avatar Ricardo Cerqueira
Browse files

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: default avatarSunita 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: default avatarSunita 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: default avatarSunita 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: default avatarJean 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: default avatarSunita 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: default avatarJean 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: default avatarSunita 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: default avatarJean 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: default avatarSunita 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: default avatarJean 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: default avatarSunita 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: default avatarJean 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: default avatarSunita 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: default avatarJean 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: default avatarSunita 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: default avatarJean 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: default avatarSunita 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: default avatarJean 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: default avatarSunita 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: default avatarJean 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: default avatarSunita 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: default avatarJean 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: default avatarSunita 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: default avatarJean 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: default avatar <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: default avatarJean 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: default avatar <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: default avatarJean 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: default avatarSunita 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: default avatarJean 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: default avatar <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: default avatarJean 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: default avatarSunita 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: default avatarJean 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: default avatarSunita 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: default avatarJean 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: default avatarkeun-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: default avatarDandawate 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: default avatarJean 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: default avatarHomin 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: default avatarJean 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: default avatarJean 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: default avatarJean 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: default avatarDevaraj 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: default avatarJean 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: default avatarAnu 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: default avatarJean 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: default avatarAnu 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: default avatarJean 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: default avatarDevaraj 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: default avatar <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: default avatarJean 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: default avatarJean 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: default avatarSunita Nadampalli <sunitan@ti.com>
Signed-off-by: default avatarAnu 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: default avatarDevaraj 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: default avatarJean 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: default avatarSunita 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: default avatarJean 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: default avatarSunita 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: default avatarJean 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: default avatar <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: default avatarJean 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: default avatarSunita 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: default avatarJean 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: default avatarDevaraj 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: default avatarJean 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: default avatarJean 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: default avatarShitiz 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: default avatarJean 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: default avatarChris 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: default avatarJean 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: default avatar <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: default avatar <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: default avatarJean 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: default avatarSunita 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: default avatarDevaraj 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: default avatarJean 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: default avatarSunita 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: default avatarJean 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: default avatarDandawate 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: default avatarSunita 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: default avatarJean 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: default avatarSunita 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: default avatarSunita 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: default avatar <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: default avatar <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: default avatarJean 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: default avatarRodrigo 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: default avatarRodrigo 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: default avatarSunita 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: default avatarJean 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: default avatar <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: default avatarJean 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: default avatarkeun-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: default avatarSunita 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: default avatarSunita 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: default avatarJean 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: default avatarSunita 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: default avatarJean 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: default avatarGilles-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: default avatarJean 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: default avatarGilles-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: default avatar <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: default avatarJean 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: default avatarSunita 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: default avatarkeun-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: default avatarJean 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: default avatarAnu 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: default avatarSteve 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: default avatarJean 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: default avatarSunita 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: default avatar <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: default avatarDandawate 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: default avatarJean 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: default avatarDandawate 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: default avatarSunita Nadampalli <sunitan@ti.com>

Patch Set 2:  No changes made.  Taking verifications and approvals
from previous patch set.
Signed-off-by: default avatarJean 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: default avatarGilles-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: default avatar <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: default avatarJean 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: default avatarSunita 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: default avatarJean 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: default avatarSunita 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: default avatarkeun-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: default avatarEric 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: default avatarEmilian Peev <epeev@mm-sol.com>

Patch Set 6: Simple cherry-pick on current tree.  No changes made.
Taking verifications and approvals.
Signed-off-by: default avatarJean 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: default avatarJean 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: default avatarGilles-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: default avatarRicky Bhatia <a0866433@ti.com>

Change-Id: I7938657c3ceecc01e09ea14d4e42493e190b8146

OMAP3: Handle NULL pointer exception in RawCallback

Change-Id: Ic3a4ca6d2dd58b864be60d183af16bd9562680bb
Signed-off-by: default avatarJulian 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: default avatarkeun-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: default avatarJean 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: default avatarDandawate Saket <dsaket@ti.com>

Patch Set 2: Removing whitespace errors.
Signed-off-by: default avatarJean Johnson <jean-johnson@ti.com>

Patch Set 3: Review comment fix

Patch Set 4: White space removal

Signed-off-by: default avatarDandawate Saket <dsaket@ti.com>

Patch Set 6:  Simple cherry-pick.  No changes made.  Taking
approvals and verifications from pathc set 5.
Signed-off-by: default avatarJean 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: default avatarJean 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: default avatarYong 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: default avatarJean 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: default avatarSunita 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: default avatarJean 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: default avatarSunita 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: default avatarkeun-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: default avatarJean 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: default avatarJuan 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: default avatarJean 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: default avatarkeun-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: default avatarShitiz 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: default avatarJean 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: default avatarJulian Shandorov <jshandorov@mm-sol.com>

OMAP4: Adding support for 3D images extension (JPS/MPO) for gallery application

Change-Id: I8d3ef643a12c83b3acc1159ac6700e1470b26353
Signed-off-by: default avatarGilles-Arnaud Bleu-Laine <gilles@ti.com>

OMAP4: S3D: Add support for S3D Images extension (JPS/MPO) for Android Framework

Signed-off-by: default avatarGilles-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: default avatarJean 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: default avatarAnu 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: default avatarJean 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: default avatarDandawate 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: default avatarJean 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: default avatarYong 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: default avatarJean 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: default avatarYong 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: default avatarSunita 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: default avatarSunita 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: default avatarSrinivas 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: default avatarSunita Nadampalli <sunitan@ti.com>

Patch Set 4: Cherry-picked on current tree.  No changes made.
Taking approvals, verifications and build test.
Signed-off-by: default avatarJean 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: default avatarYong 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: default avatarJean 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: default avatarYong 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: default avatar <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: default avatarJean 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: default avatarSunita 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: default avatarSunita 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: default avatarJuan 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: default avatar <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: default avatar <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: default avatarGilles-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: default avatarJean 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: default avatarkeun-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: default avatarJean 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: default avatarJean 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: default avatarVikram Simha <vikram.simha@ti.com>
Signed-off-by: default avatarkeun-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: default avatarSathya 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: default avatarJean 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: default avatarDandawate 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: default avatarSunita 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: default avatarMin-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: default avatarJean 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: default avatarJuan Escamilla <juan.escamilla@ti.com>
Signed-off-by: default avatarRicky 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: default avatarRichard 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: default avatarJean 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: default avatarSumukh HS <sumukh.hs@ittiam.com>
Signed-off-by: default avatarkeun-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: default avatarJean 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
parent 8d9994ab
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment