sp<MediaSource> RtspExtractor::getTrack(size_t index) { NS_ENSURE_TRUE(index < countTracks(), nullptr); sp<MetaData> meta = getTrackMetaData(index); sp<MediaSource> source = new RtspMediaSource(mRtspResource, index, FRAME_DEFAULT_SIZE, meta); return source; }
sp<MediaSource> DRMExtractor::getTrack(size_t index) { sp<MediaSource> originalMediaSource = mOriginalExtractor->getTrack(index); originalMediaSource->getFormat()->setInt32(kKeyIsDRM, 1); int32_t trackID; CHECK(getTrackMetaData(index, 0)->findInt32(kKeyTrackID, &trackID)); DrmBuffer ipmpBox; ipmpBox.data = mOriginalExtractor->getDrmTrackInfo(trackID, &(ipmpBox.length)); CHECK(ipmpBox.length > 0); return new DRMSource(originalMediaSource, mDecryptHandle, mDrmManagerClient, trackID, &ipmpBox); }