Android MediaDrm PlayReady - вызовы API зависают

Я использую Android NDK MediaDrm API для дешифрования блоков доступа к видео с помощью PlayReady.

Я обнаружил, что некоторые вызовы API зависают бесконечно. Эти призы все успешны в этом порядке:

AMediaDrm_createByUUID()
AMediaDrm_openSession()
AMediaDrm_getKeyRequest()
AMediaDrm_provideKeyResponse()

Но после AMediaDrm_provideKeyResponse()звонка любой звонок AMediaDrm_closeSession()или AMediaDrm_decrypt()будет вечно вечно. Рассматривая разборку в обоих случаях, мы застреваем на линии, прыгающей на себя, например:

0xf2ea9dec: jmp 0xf2ea9dec

AMediaDrm_closeSession()работает при вызове сразу после AMediaDrm_openSession()или AMediaDrm_getKeyRequest().

Кто-нибудь испытал эту проблему раньше? С чем я могу ошибиться AMediaDrm_provideKeyResponse()?

android,android-ndk,drm,playready,

1

Ответов: 2


0

Возможно, вы пытаетесь сделать это под эмулятором или с прикрепленным отладчиком? Технологии DRM, как правило, имеют очень туманный взгляд на любой из них и отключают себя, когда предпринимаются такие действия.


0

Поэтому я просто наткнулся на это сам. Я тестирую Android 6 прямо сейчас, поэтому я надеюсь, что это исправлено в A7 или в какой-то будущей версии (API для закрытия сеанса, который висит, кажется ужасной идеей, поэтому я предполагаю, что это ошибка).

Однако я придумал решение. Я подозреваю, что мы оба не использовали API, как предполагалось, потому что, если я выпущу ключи из сеанса перед закрытием сессии drm, все будет работать отлично. Вот так:

AMediaDrm*           mediadrm = NULL;
AMediaDrmKeySetId    keySetId;
AMediaDrmSessionId   drmsessionid;

< ... Code to do everything else that you need to do before you get to this point ... >

AMediaDrm_provideKeyResponse(mediadrm, &drmsessionid, &drmKey[0], drmKey.size(), &keySetId); 

< ... Use your session to playback some DRM protected content ... >

AMediaDrm_removeKeys(mediadrm,&keySetId);
AMediaDrm_closeSession(mediadrm, &drmsessionid);
AMediaDrm_release(mediadrm);

Я знаю, что это немного поздно, поэтому я надеюсь, что вы нашли решение своей проблемы.

андроид, андроид-NDK, ЦУП, PlayReady,
Похожие вопросы