зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1154194 - Fix regression by bug 1132832 and remove VideoResourceListener. r=sotaro
This commit is contained in:
Родитель
9a3bbcae4e
Коммит
29b4ee90d8
|
@ -67,33 +67,6 @@ IsValidTimestampUs(int64_t aTimestamp)
|
|||
return aTimestamp >= INT64_C(0);
|
||||
}
|
||||
|
||||
MediaCodecReader::VideoResourceListener::VideoResourceListener(
|
||||
MediaCodecReader* aReader)
|
||||
: mReader(aReader)
|
||||
{
|
||||
}
|
||||
|
||||
MediaCodecReader::VideoResourceListener::~VideoResourceListener()
|
||||
{
|
||||
mReader = nullptr;
|
||||
}
|
||||
|
||||
void
|
||||
MediaCodecReader::VideoResourceListener::codecReserved()
|
||||
{
|
||||
if (mReader) {
|
||||
mReader->VideoCodecReserved();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MediaCodecReader::VideoResourceListener::codecCanceled()
|
||||
{
|
||||
if (mReader) {
|
||||
mReader->VideoCodecCanceled();
|
||||
}
|
||||
}
|
||||
|
||||
MediaCodecReader::TrackInputCopier::~TrackInputCopier()
|
||||
{
|
||||
}
|
||||
|
@ -276,7 +249,6 @@ MediaCodecReader::MediaCodecReader(AbstractMediaDecoder* aDecoder)
|
|||
, mNextParserPosition(INT64_C(0))
|
||||
, mParsedDataLength(INT64_C(0))
|
||||
{
|
||||
mVideoListener = new VideoResourceListener(this);
|
||||
}
|
||||
|
||||
MediaCodecReader::~MediaCodecReader()
|
||||
|
@ -676,14 +648,6 @@ MediaCodecReader::ReadMetadata(MediaInfo* aInfo,
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
// Configure video codec after the codecReserved.
|
||||
if (mVideoTrack.mSource != nullptr) {
|
||||
if (!ConfigureMediaCodec(mVideoTrack)) {
|
||||
DestroyMediaCodec(mVideoTrack);
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: start streaming
|
||||
|
||||
if (!UpdateDuration()) {
|
||||
|
@ -1295,8 +1259,8 @@ MediaCodecReader::CreateTaskQueues()
|
|||
bool
|
||||
MediaCodecReader::CreateMediaCodecs()
|
||||
{
|
||||
if (CreateMediaCodec(mLooper, mAudioTrack, false, nullptr) &&
|
||||
CreateMediaCodec(mLooper, mVideoTrack, true, mVideoListener)) {
|
||||
if (CreateMediaCodec(mLooper, mAudioTrack, nullptr) &&
|
||||
CreateMediaCodec(mLooper, mVideoTrack, nullptr)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -1306,7 +1270,6 @@ MediaCodecReader::CreateMediaCodecs()
|
|||
bool
|
||||
MediaCodecReader::CreateMediaCodec(sp<ALooper>& aLooper,
|
||||
Track& aTrack,
|
||||
bool aAsync,
|
||||
wp<MediaCodecProxy::CodecResourceListener> aListener)
|
||||
{
|
||||
if (aTrack.mSource != nullptr && aTrack.mCodec == nullptr) {
|
||||
|
@ -1321,6 +1284,10 @@ MediaCodecReader::CreateMediaCodec(sp<ALooper>& aLooper,
|
|||
NS_WARNING("Couldn't create MediaCodecProxy");
|
||||
return false;
|
||||
}
|
||||
if (!aTrack.mCodec->AskMediaCodecAndWait()) {
|
||||
NS_WARNING("AskMediaCodecAndWait fail");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_VORBIS)) {
|
||||
aTrack.mInputCopier = new VorbisInputCopier;
|
||||
|
@ -1343,14 +1310,10 @@ MediaCodecReader::CreateMediaCodec(sp<ALooper>& aLooper,
|
|||
#endif
|
||||
}
|
||||
|
||||
if (!aAsync) {
|
||||
// Pending configure() and start() to codecReserved() if the creation
|
||||
// should be asynchronous.
|
||||
if (!aTrack.mCodec->allocated() || !ConfigureMediaCodec(aTrack)){
|
||||
NS_WARNING("Couldn't create and configure MediaCodec synchronously");
|
||||
DestroyMediaCodec(aTrack);
|
||||
return false;
|
||||
}
|
||||
if (!aTrack.mCodec->allocated() || !ConfigureMediaCodec(aTrack)) {
|
||||
NS_WARNING("Couldn't create and configure MediaCodec synchronously");
|
||||
DestroyMediaCodec(aTrack);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1912,22 +1875,4 @@ MediaCodecReader::ClearColorConverterBuffer()
|
|||
mColorConverterBufferSize = 0;
|
||||
}
|
||||
|
||||
// Called on Binder thread.
|
||||
void
|
||||
MediaCodecReader::VideoCodecReserved()
|
||||
{
|
||||
mDecoder->NotifyWaitingForResourcesStatusChanged();
|
||||
}
|
||||
|
||||
// Called on Binder thread.
|
||||
void
|
||||
MediaCodecReader::VideoCodecCanceled()
|
||||
{
|
||||
if (mVideoTrack.mTaskQueue) {
|
||||
RefPtr<nsIRunnable> task =
|
||||
NS_NewRunnableMethod(this, &MediaCodecReader::ReleaseCriticalResources);
|
||||
mVideoTrack.mTaskQueue->Dispatch(task.forget());
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace mozilla
|
||||
|
|
|
@ -177,11 +177,6 @@ protected:
|
|||
// Called on MediaCodecReader::mLooper thread.
|
||||
void onMessageReceived(const android::sp<android::AMessage>& aMessage);
|
||||
|
||||
// Receive a notify from ResourceListener.
|
||||
// Called on Binder thread.
|
||||
virtual void VideoCodecReserved();
|
||||
virtual void VideoCodecCanceled();
|
||||
|
||||
virtual bool CreateExtractor();
|
||||
|
||||
// Check the underlying HW resource is available and store the result in
|
||||
|
@ -194,28 +189,6 @@ protected:
|
|||
bool mIsWaitingResources;
|
||||
|
||||
private:
|
||||
|
||||
// An intermediary class that can be managed by android::sp<T>.
|
||||
// Redirect codecReserved() and codecCanceled() to MediaCodecReader.
|
||||
class VideoResourceListener : public android::MediaCodecProxy::CodecResourceListener
|
||||
{
|
||||
public:
|
||||
VideoResourceListener(MediaCodecReader* aReader);
|
||||
~VideoResourceListener();
|
||||
|
||||
virtual void codecReserved();
|
||||
virtual void codecCanceled();
|
||||
|
||||
private:
|
||||
// Forbidden
|
||||
VideoResourceListener() = delete;
|
||||
VideoResourceListener(const VideoResourceListener& rhs) = delete;
|
||||
const VideoResourceListener& operator=(const VideoResourceListener& rhs) = delete;
|
||||
|
||||
MediaCodecReader* mReader;
|
||||
};
|
||||
friend class VideoResourceListener;
|
||||
|
||||
class VorbisInputCopier : public TrackInputCopier
|
||||
{
|
||||
virtual bool Copy(android::MediaBuffer* aSourceBuffer,
|
||||
|
@ -354,7 +327,6 @@ private:
|
|||
bool CreateMediaCodecs();
|
||||
static bool CreateMediaCodec(android::sp<android::ALooper>& aLooper,
|
||||
Track& aTrack,
|
||||
bool aAsync,
|
||||
android::wp<android::MediaCodecProxy::CodecResourceListener> aListener);
|
||||
static bool ConfigureMediaCodec(Track& aTrack);
|
||||
void DestroyMediaCodecs();
|
||||
|
@ -415,8 +387,6 @@ private:
|
|||
|
||||
void ReleaseAllTextureClients();
|
||||
|
||||
android::sp<VideoResourceListener> mVideoListener;
|
||||
|
||||
android::sp<android::ALooper> mLooper;
|
||||
android::sp<android::MetaData> mMetaData;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче