Modular DRM for MediaPlayer: L3 playback fails at OMX mmap; preparDrm preparing
Bug: 34559906
Bug: 38390836
Bug: 38039230
Bug: 62194380
Test: GTS Tests
Change-Id: I51e2479f745a4c3e271628abdd79efcb97368ec2
diff --git a/media/libmedia/mediaplayer.cpp b/media/libmedia/mediaplayer.cpp
index 685065a..b976721 100644
--- a/media/libmedia/mediaplayer.cpp
+++ b/media/libmedia/mediaplayer.cpp
@@ -1023,9 +1023,12 @@
return NO_INIT;
}
- // Only allowing it in player's prepared state
- if (!(mCurrentState & MEDIA_PLAYER_PREPARED)) {
- ALOGE("prepareDrm must only be called in the prepared state.");
+ // Only allowed it in player's preparing/prepared state.
+ // We get here only if MEDIA_DRM_INFO has already arrived (e.g., prepare is half-way through or
+ // completed) so the state change to "prepared" might not have happened yet (e.g., buffering).
+ // Still, we can allow prepareDrm for the use case of being called in OnDrmInfoListener.
+ if (!(mCurrentState & (MEDIA_PLAYER_PREPARING | MEDIA_PLAYER_PREPARED))) {
+ ALOGE("prepareDrm is called in the wrong state (%d).", mCurrentState);
return INVALID_OPERATION;
}