Closed Bug 1325558 Opened 6 years ago Closed 6 years ago

[EME][Fennec] Handle "Sample wait for key" for OOP decoding case.

Categories

(Core :: Audio/Video: Playback, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla53
Tracking Status
firefox53 --- fixed

People

(Reporter: JamesCheng, Assigned: JamesCheng)

References

Details

Attachments

(1 file)

We did input sample to decoder when key is usable by [1] for in process decoding.

We should do the same thing on OOP scenario.

[1]
http://searchfox.org/mozilla-central/rev/ac40ca3ec39efe85bfb111274c10ee4ceea5bb7a/dom/media/platforms/android/MediaCodecDataDecoder.cpp#162
Attachment #8821463 - Flags: review?(kikuo)
Comment on attachment 8821463 [details]
Bug 1325558 - [EME][Fennec] Handle Sample wait for key for OOP decoding case.

https://reviewboard.mozilla.org/r/100766/#review101242

Thanks.

::: dom/media/platforms/android/MediaCodecDataDecoder.cpp:147
(Diff revision 1)
> -   , mSamplesWaitingForKey(new SamplesWaitingForKey(this, aCallback,
> +    , mSamplesWaitingForKey(new SamplesWaitingForKey(this, aCallback,
>                                                      aTaskQueue, aProxy))

Not aligned intent.

::: dom/media/platforms/android/MediaCodecDataDecoder.cpp:265
(Diff revision 1)
> -   , mSamplesWaitingForKey(new SamplesWaitingForKey(this, aCallback,
> +    , mSamplesWaitingForKey(new SamplesWaitingForKey(this, aCallback,
>                                                      aTaskQueue, aProxy))

ditto

::: dom/media/platforms/android/RemoteDataDecoder.cpp:102
(Diff revision 1)
>  
>  protected:
>    MediaDataDecoderCallback* mDecoderCallback;
>  };
>  
> -class RemoteVideoDecoder final : public RemoteDataDecoder
> +class RemoteVideoDecoder : public RemoteDataDecoder

I think it's possible to put the SamplesWaitForKey object into base class, i.e. MediaCodecDataDecoder, RemoteDataDecoder.  So, SamplesWaitForKey can be initialized according to the input arguments.

By that, we're able to call |mSamplesWaitingForKey->WaitIfKeyNotUsable(aSample)| inside the MediaCodecDataDecoder::Input or RemoteDataDecoder::Input.   Same in |Shutdown| as well. We could reduce these codes for derived classes.

Maybe in a follow-up bug.

::: dom/media/platforms/android/RemoteDataDecoder.cpp:328
(Diff revision 1)
> +    , mSamplesWaitingForKey(new SamplesWaitingForKey(this, aCallback,
> +                                                   aTaskQueue, aProxy))

ditto

::: dom/media/platforms/android/RemoteDataDecoder.cpp:495
(Diff revision 1)
> +    , mSamplesWaitingForKey(new SamplesWaitingForKey(this, aCallback,
> +                                                    aTaskQueue, aProxy))

ditto

::: dom/media/platforms/android/RemoteDataDecoder.cpp:546
(Diff revision 1)
>  RemoteDataDecoder::CreateVideoDecoder(const VideoInfo& aConfig,
>                                            MediaFormat::Param aFormat,
>                                            MediaDataDecoderCallback* aCallback,
>                                            layers::ImageContainer* aImageContainer,
> -                                          const nsString& aDrmStubId)
> +                                          const nsString& aDrmStubId,
> +                                          CDMProxy* aProxy,
> +                                          TaskQueue* aTaskQueue)

ditto.

::: dom/media/platforms/android/RemoteDataDecoder.cpp:558
(Diff revision 1)
> +                                     aFormat,
> +                                    aCallback,
> +                                    aImageContainer,
> +                                    aDrmStubId,
> +                                    aProxy,
> +                                    aTaskQueue);

ditto.
Attachment #8821463 - Flags: review?(kikuo) → review+
Thank you, mSamplesWaitingForKey is not suitable to put it into base class, so I keep it in derived class.

It could be refined into a better style, may refine it in the future.
Pushed by jacheng@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/84c93e608797
[EME][Fennec] Handle Sample wait for key for OOP decoding case. r=kikuo
https://hg.mozilla.org/mozilla-central/rev/84c93e608797
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla53
You need to log in before you can comment on or make changes to this bug.