Commit Graph

6540 Commits

Author SHA1 Message Date
Jaewan Kim
009c393ca1 MediaSession2: Refactor incoming binder calls to the MediaSession2Stub
This CL refactors methods in MediaSession2Stub that handles incoming
binder calls from the controller by adding methods to do followings
in one place.
  1. Check if the session hasn't closed.
  2. Check if the controller is allowed for the command
  3. Call SessionCallback#onCommandRequest() for APIs that would be
     sent directly to the MediaPlayerBase or MediaPlaylistAgent if
     allowed.

This CL also adds missing command code for setRating().

Bug: 74581821
Test: Run CTS tests with MediaComponents/runcts.sh
Change-Id: I9b96e26b7644cff3c54269773590c73ff30f956c
2018-03-14 10:02:36 +09:00
Hyundo Moon
15d3ba624c Merge "MediaSession2: Replace PlaybackState2" into pi-dev 2018-03-13 12:03:55 +00:00
Hyundo Moon
c006dc2a85 MediaSession2: Replace PlaybackState2
This CL removes PlaybackState2 and replaces it with other APIs.

Bug: 74370608, Bug: 73971431
Test: Passed CTS
Change-Id: Ifa16b1d551957ab4bb06979ddf29b18772093035
2018-03-13 17:05:55 +09:00
Christofer Åkersten
623122cd98 Ensure members are non-null in callback
Bug: 74570008
Test: runtest-cts-MediaComponents -r 100
Change-Id: I59590afae4e67fa8a90f8a7b4a6be58ce54e2806
2018-03-13 06:23:34 +00:00
Jaewan Kim
c3efa17bdd Merge changes from topics "session2_additem", "session2_playlistmetadata", "session2_getplaylist" into pi-dev
* changes:
  MediaSession2: Implement add/remove/replacePlaylistItem()
  MediaSession2: Implement update/getPlaylistMetadata()
  MediaSession2: Implement get/setPlaylist()
2018-03-13 04:30:50 +00:00
Jaewan Kim
8562fd9504 MediaSession2: Implement add/remove/replacePlaylistItem()
Bug: 73149584
Test: Run CTS with MediaComponents/runcts.sh
Change-Id: I29804f52eaca45de21fd66634e4eeee2c72a9a25
2018-03-13 11:59:18 +09:00
Jaewan Kim
dc5ab8095a MediaSession2: Implement update/getPlaylistMetadata()
Bug: 74174649
Test: Run CTS with MediaComponents/runcts.sh
Change-Id: I3ac2dabfc7f532bf7d7262940e3dc309e97fd45a
2018-03-13 11:55:55 +09:00
Jaewan Kim
25db3cdb93 MediaSession2: Implement get/setPlaylist()
Bug: 74326040
Test: Run CtsMediaTests for MediaSession2
Change-Id: Ib799c03edd2f79c6f9ffa989aea1137018ec55b3
2018-03-13 11:48:30 +09:00
TreeHugger Robot
8807436378 Merge "heif: add option for specifying bitmap pixel format" into pi-dev 2018-03-13 02:29:25 +00:00
TreeHugger Robot
2b83982b2b Merge "Make MP2 operations asynchronous and send matching notifications" into pi-dev 2018-03-13 00:09:02 +00:00
Chong Zhang
a89f6e1bb2 heif: add option for specifying bitmap pixel format
Add an option similar to BitmapFactory.Options to the bitmap
extraction APIs added in P to allow the app to specify bitmap's
pixel format. MediaMetadataRetriever's old getFrameAtTime()
only allows extraction in RGB565, for image use case the bitdepth
could be too low.

Also change return type of getFramesAtIndex to List as
Lint is complaining about returning raw arrays.

bug: 63633199
bug: 73886998

Change-Id: I40f0a421c767483e32c7744180dc5a187681e066
2018-03-12 21:23:00 +00:00
Chong Zhang
f78a08c2d9 Merge "heif: add definition for HEVC Main Still Picture profile" into pi-dev 2018-03-12 19:40:00 +00:00
Dongwon Kang
69d2d51a59 Make MP2 operations asynchronous and send matching notifications
Test: testPlayVideo & testEventCallback & testPlaylist
Bug: 74204782
Change-Id: I7a0f7d1ba5334c68380ef928294dc52cae76c185
2018-03-12 11:33:34 -07:00
TreeHugger Robot
89a2b6c560 Merge "Implement CodecProfileLevel.{equals|hashCode}" into pi-dev 2018-03-12 17:45:57 +00:00
TreeHugger Robot
2e94d509b3 Merge "MediaPlayer2Impl: fix getBufferedPosition" into pi-dev 2018-03-10 01:00:35 +00:00
Marco Nelissen
6db0f4dac8 Merge "Rework thumbnail cleanup" into oc-mr1-dev
am: b20a329f4c

Change-Id: I17b77312edb4fa03af1e89543ed5c27f4501d51c
2018-03-09 23:00:20 +00:00
Wei Jia
c3725a94bb MediaPlayer2Impl: fix getBufferedPosition
Test: MediaPlayer2 plays
Bug: 74204684
Change-Id: Ide7c2ebe7e29c16d427a8aa6aa4b0384e8a2539f
2018-03-09 14:50:04 -08:00
Wonsik Kim
62b01c7d26 Implement CodecProfileLevel.{equals|hashCode}
Bug: 74435947
Test: atest CtsMediaTestCases:MediaCodecListTest
Change-Id: Ia77182538c5a151bb561f7d273f7cbaa29671a4c
2018-03-09 19:15:39 +00:00
Hyundo Moon
5cef8984ba Merge "MediaSession2: Ensure NonNull/Nullable for parameters of public methods" into pi-dev 2018-03-09 08:28:08 +00:00
Hyundo Moon
c896d9d7e6 MediaSession2: Ensure NonNull/Nullable for parameters of public methods
Bug: 73863865
Test: runtest-MediaComponents
Change-Id: Id40f221ae60b1e63afd9ff71950589fe13a7f526
2018-03-09 14:00:11 +09:00
TreeHugger Robot
790a31ee31 Merge "MediaSession2: Implement MediaSession2#updatePlayer()" into pi-dev 2018-03-09 04:37:29 +00:00
TreeHugger Robot
af6cb35749 Merge "MediaPlayer2Impl: fix getPlayerState." into pi-dev 2018-03-09 03:10:41 +00:00
Wei Jia
be6e3024bd MediaPlayer2Impl: fix getPlayerState.
Test: MediaPlayer2 plays
Bug: 74204684
Change-Id: Ib27930287485f074be6a8df4a90fb78023153ccd
2018-03-08 13:56:42 -08:00
Marco Nelissen
6d2096f388 Rework thumbnail cleanup
Bug: 63766886
Test: ran CTS tests
Change-Id: I1f92bb014e275eafe3f42aef1f8c817f187c6608
2018-03-08 21:46:15 +00:00
Jaewan Kim
9af5bc8370 MediaSession2: Implement MediaSession2#updatePlayer()
Bug: 74364873
Test: Run MediaSession2Test in CTS
Change-Id: I5161c0d771afd5036e2c09b2cc2a165f80c534f7
2018-03-08 18:11:55 +09:00
Sungsoo Lim
5f8a8ee0e5 Make MediaPlaylistAgent updatable
Bug: 74366050
Test: build
Change-Id: Iea8e4d9b6a11393bd837da90394d95529fdbe5eb
2018-03-08 17:28:23 +09:00
Sungsoo Lim
ec75d51e74 VideoView2: Remove setRouteAttributes
Being consistent, create route player internally and do not expose it
since VideoView2 creats a MediaPlayer inside and do not expose it.

Bug: 72527212
Test: manually with VideoViewTest
Change-Id: I6db3bc668f6ab77587fed49b2d34611bc3c30465
2018-03-08 13:55:21 +09:00
Jaewan Kim
525c88c2b7 MediaSession2: Clean up TODOs under frameworks/base
This change includes
  - Addressed trivial TODOs (takes less than 1min)
  - Renamed playlist controller to playlist agent
  - Renamed mplc to playlistAgent
  - Renamed mpb to player
  - Assigned buganizer issues for TODOs

Bug: 74361045
Test: Run MediaComponentsTest
Change-Id: I45e97081b5a3f24988c3daadd007edcb51be5288
2018-03-08 13:54:34 +09:00
Jean-Michel Trivi
4e532f59dc Merge "AudioService: don't send BECOMING_NOISY when dyn policy affects media" into pi-dev 2018-03-07 21:37:55 +00:00
Chong Zhang
e536bf7b22 heif: add definition for HEVC Main Still Picture profile
Add corresponding def to OMX for HEVC Main Still Picture.

bug: 63633199
Change-Id: I2d968f5871e3afcd08758c2d5e1452b6c13d0862
2018-03-07 19:48:45 +00:00
TreeHugger Robot
5a169cf2f6 Merge "System sounds get its own dnd toggle" into pi-dev 2018-03-07 16:39:40 +00:00
TreeHugger Robot
aa79f03ca6 Merge "MediaSession2: Fix random NPE in MediaBrowser2Test" into pi-dev 2018-03-07 11:23:29 +00:00
Sungsoo Lim
be1033fda2 Merge changes from topics "mplc", "session2_onDataSourceMissingHelper" into pi-dev
* changes:
  Remove MediaPlaylistController, add MediaPlaylistAgent
  MediaSession2: Add SessionCallback#onCurrentMediaItemChanged()
  MediaSession2: Add onDataSourceMissingHelper
2018-03-07 07:59:53 +00:00
Sungsoo Lim
df0e8fdffd Remove MediaPlaylistController, add MediaPlaylistAgent
MediaPlaylistAgent is the abstract class an application needs to
derive from to pass an object to a MediaSession2 that will override
default playlist handling behaviors. It contains a set of notify*
methods to signal MediaSession2 that playlist-related state has
changed.

Bug: 64098437
Test: make update-api
Change-Id: Icb3c57ddc14eba276f49d4ba85f11adbeb3e0917
2018-03-07 16:41:19 +09:00
Jaewan Kim
87086f59ad MediaSession2: Add SessionCallback#onCurrentMediaItemChanged()
Added callback for session to know the currently playing media item has
changed.

Note that the callback is called in response to the
MediaPlayerBase#PlayerEventCallback#onCurrentDataSourceChanged(mpb, dsd
is called. Session will translate dsd to the media item and calls
onCurrentMediaItemChanged().

Following changes are also included
  - Removed MediaPlaylistController#getCurrentPlaylistItem(),
    because currently playing item is managed by the MediaPlayerBase.
  - Renamed ControllerCallback#onCurrentPlaylistItemChanged() to the
    ControllerCallback#onCurrentMediaItemChanged(), to make it more
    obvious that the event is from MediaPlayerBase, not
    MediaPlaylistController.
  - Added SessionCallback#onCurrentMediaItemChanged()

Bug: 64098437
Test: Run MediaComponents test
Change-Id: I78b124a7da0f968b097b2576507b9a73e36081ec
2018-03-07 16:31:56 +09:00
Jaewan Kim
4d4a8c95ae MediaSession2: Add onDataSourceMissingHelper
This allows a developer to create DataSourceDesc when the item is about
to be played. Typical example of the usages are,

    1. For a playlist consists of FileDescriptors, its developer may not
        want to open all files when MediaSession2.setPlaylist() is
        called.
    2. A controller has called setPlaylist(), addPlaylistItem(), or
        replacePlaylistItem(). Controller cannot know the
        DataSourceDesc, and only the session developer can know about
        it.

Bug: 64098437
Test: Run MediaComponents test
Change-Id: I73f27ca0a799b1cddf5046b41f0ca01d08037103
2018-03-07 16:31:53 +09:00
TreeHugger Robot
c943614f2c Merge "MediaPlayer2: embed header in uri" into pi-dev 2018-03-07 04:26:18 +00:00
Robert Shih
3164cbd536 MediaPlayer2: embed header in uri
Bug: 63934228
Change-Id: I3eba4a0ee8e8e784f6dcf79c739a756e957025c9
2018-03-06 18:18:52 -08:00
Jaewan Kim
ccf41b87a9 Merge changes from topic "session2-pi-listcallback" into pi-dev
* changes:
  MediaSession2: Pass player info for the callbacks from MediaPlayerBase
  MediaSession2: Add MediaPlaylistController.PlaylistEventCallback
2018-03-07 00:02:09 +00:00
TreeHugger Robot
e9238246b7 Merge "MediaSession2: Ask server whether a controller is trusted" into pi-dev 2018-03-06 23:06:18 +00:00
Jean-Michel Trivi
7db2d8f1cc AudioService: don't send BECOMING_NOISY when dyn policy affects media
Only send ACTION_AUDIO_BECOMING_NOISY when there is no dynamic
  policy registered that affects media.

Bug: 67610473
Test: see bug
Change-Id: I0768718fbde35ea53c36c309086529567dfa82ac
2018-03-06 13:54:23 -08:00
Jaewan Kim
42a36c341d MediaSession2: Pass player info for the callbacks from MediaPlayerBase
Player can be updated meantime, and player event from the previous
player can be sent after the update. Providing player information will
provide developers more opportunity to filter out unecessary callbacks.

Bug: 64098437
Test: Run MediaComponents test
Change-Id: I9c23101df139e26351c008462c726ae7069130eb
2018-03-07 00:12:14 +09:00
Jaewan Kim
273130dc9a MediaSession2: Add MediaPlaylistController.PlaylistEventCallback
This includes following changes per offline discussion
  - Add MediaPlaylistController.PlaylistEventCallback
  - Add following APIs to the MediaPlaylistController
    * registerPlaylistControllerCallback() /
      unregisterPlaylistControllerCallback()
    * getRepeatMode() / setRepeatMode()
    * getShuffleMode() / setShuffleMode()
    * setPlaylist() with metadata
    * setPlaylistMetadata() / getPlaylistMetadata()
  - Add following APIs to the SessionCallback
    * onMediaPrepared()
    * onPlayerStateChanged()
    * onBufferingStateChanged()
  - Remove following methods from ControllerCallback
    * onPlaylistChanged()

Bug: 64098437
Bug: 74157064
Test: passed MediaComponentTest
Change-Id: I5ad12a9a5d6a7d9e23a577dca8ea26fbacb8f259
2018-03-07 00:11:25 +09:00
Beverly
d696476fb3 System sounds get its own dnd toggle
- Added logic for streams to be muted by dnd (unassociated with ringer)

Test: runtest -x frameworks/base/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java
Bug: 73362490
Change-Id: I1101e67282f7331497e91eb510d2bf4f1ea6b4b1
2018-03-06 09:08:29 -05:00
Jaewan Kim
b10e372284 MediaSession2: Fix random NPE in MediaBrowser2Test
MediaSessionService#getSession() may be null until the
MediaSessionService#onCreate(), and its session callback can be called
before that. (e.g. System service can try connecting to the session
in another thread)

Don't use MediaSessionService#getSession() when it's unclear whether
the MediaSessionService#onCreate() is finished.

Bug: 74177171
Test: Run MediaComponents test 10 times
Change-Id: I89f3d1a59f84f5d950a14a7b412cfbbdad2c8bee
2018-03-06 19:48:32 +09:00
TreeHugger Robot
9bc5610869 Merge "MediaSession2: Update Builder" into pi-dev 2018-03-06 08:59:13 +00:00
Hyundo Moon
66bc3c1f78 MediaSession2: Update Builder
This CL updates following APIs of session builder:
 - setPlayer
 - setPlaylistController
 - setVolumeController

Bug: 74093082
Test: runtest-MediaComponents
Change-Id: I88365e740df7e14edf439cbed2106f788d027f53
2018-03-06 15:56:34 +09:00
Jaewan Kim
fed495078e MediaSession2: Ask server whether a controller is trusted
Bug: 73150040
Test: Run all MediaComponents tests once
Change-Id: Ic003a40654a45e6fd367d7389216fddf320a8edc
2018-03-06 14:24:06 +09:00
Wei Jia
97d579d1ee Merge "MediaPlayer2: clarify sync/async for API's" into pi-dev 2018-03-06 03:42:25 +00:00
TreeHugger Robot
cefe0c6518 Merge "Check mMediaProvider for null" into pi-dev 2018-03-06 01:59:14 +00:00