Bug 1368954 - [Part2] Modify HLSDemuxer native code to accommondate wrapper interface change.
MozReview-Commit-ID: IGhJPLp1A6R
--- a/dom/media/hls/HLSDecoder.cpp
+++ b/dom/media/hls/HLSDecoder.cpp
@@ -3,32 +3,37 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "HLSDecoder.h"
#include "AndroidBridge.h"
#include "DecoderTraits.h"
#include "HLSDemuxer.h"
+#include "HLSResource.h"
#include "HLSUtils.h"
#include "MediaContainerType.h"
#include "MediaDecoderStateMachine.h"
#include "MediaFormatReader.h"
#include "MediaPrefs.h"
namespace mozilla {
MediaDecoderStateMachine*
HLSDecoder::CreateStateMachine()
{
MOZ_ASSERT(NS_IsMainThread());
+ MediaResource* resource = GetResource();
+ MOZ_ASSERT(resource);
+ auto resourceWrapper = static_cast<HLSResource*>(resource)->GetResourceWrapper();
+ MOZ_ASSERT(resourceWrapper);
mReader =
new MediaFormatReader(this,
- new HLSDemuxer(GetResource()),
+ new HLSDemuxer(resourceWrapper->GetPlayerId()),
GetVideoFrameContainer());
return new MediaDecoderStateMachine(this, mReader);
}
MediaDecoder*
HLSDecoder::Clone(MediaDecoderInit& aInit)
{
--- a/dom/media/hls/HLSDemuxer.cpp
+++ b/dom/media/hls/HLSDemuxer.cpp
@@ -5,17 +5,16 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "HLSDemuxer.h"
#include <algorithm>
#include <limits>
#include <stdint.h>
-#include "HLSResource.h"
#include "HLSUtils.h"
#include "MediaCodec.h"
#include "mozilla/Unused.h"
#include "nsPrintfCString.h"
using namespace mozilla::java;
namespace mozilla {
@@ -113,34 +112,31 @@ public:
Mutex mMutex;
private:
~HLSDemuxerCallbacksSupport() { }
HLSDemuxer* mDemuxer;
};
-HLSDemuxer::HLSDemuxer(MediaResource* aResource)
- : mResource(aResource)
- , mTaskQueue(new AutoTaskQueue(GetMediaThreadPool(MediaThreadType::PLAYBACK),
+HLSDemuxer::HLSDemuxer(int aPlayerId)
+ : mTaskQueue(new AutoTaskQueue(GetMediaThreadPool(MediaThreadType::PLAYBACK),
/* aSupportsTailDispatch = */ false))
, mMutex("HLSDemuxer")
{
MOZ_ASSERT(NS_IsMainThread());
- MOZ_ASSERT(aResource);
HLSDemuxerCallbacksSupport::Init();
mJavaCallbacks = GeckoHLSDemuxerWrapper::Callbacks::New();
MOZ_ASSERT(mJavaCallbacks);
mCallbackSupport = new HLSDemuxerCallbacksSupport(this);
HLSDemuxerCallbacksSupport::AttachNative(mJavaCallbacks,
mCallbackSupport);
- auto resourceWrapper = static_cast<HLSResource*>(aResource)->GetResourceWrapper();
- mHLSDemuxerWrapper = GeckoHLSDemuxerWrapper::Create(resourceWrapper->GetPlayer(), mJavaCallbacks);
+ mHLSDemuxerWrapper = GeckoHLSDemuxerWrapper::Create(aPlayerId, mJavaCallbacks);
MOZ_ASSERT(mHLSDemuxerWrapper);
}
void
HLSDemuxer::OnInitialized(bool aHasAudio, bool aHasVideo)
{
MOZ_ASSERT(OnTaskQueue());
--- a/dom/media/hls/HLSDemuxer.h
+++ b/dom/media/hls/HLSDemuxer.h
@@ -24,17 +24,17 @@ namespace mozilla {
class AbstractThread;
class MediaResult;
class HLSTrackDemuxer;
class HLSDemuxer final : public MediaDataDemuxer
{
class HLSDemuxerCallbacksSupport;
public:
- explicit HLSDemuxer(MediaResource* aResource);
+ explicit HLSDemuxer(int aPlayerId);
RefPtr<InitPromise> Init() override;
bool HasTrackType(TrackInfo::TrackType aType) const override;
uint32_t GetNumberTracks(TrackInfo::TrackType aType) const override;
already_AddRefed<MediaTrackDemuxer>
@@ -53,17 +53,16 @@ public:
private:
media::TimeUnit GetNextKeyFrameTime();
void UpdateVideoInfo(int index);
void UpdateAudioInfo(int index);
bool OnTaskQueue() const;
TrackInfo* GetTrackInfo(TrackInfo::TrackType);
~HLSDemuxer();
- RefPtr<MediaResource> mResource;
friend class HLSTrackDemuxer;
const RefPtr<AutoTaskQueue> mTaskQueue;
nsTArray<RefPtr<HLSTrackDemuxer>> mDemuxers;
MozPromiseHolder<InitPromise> mInitPromise;
RefPtr<HLSDemuxerCallbacksSupport> mCallbackSupport;