Closed Bug 1336358 Opened 8 years ago Closed 8 years ago

Re-enable RemoteDataDecoder

Categories

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

Unspecified
Android
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla54
Tracking Status
firefox54 --- fixed

People

(Reporter: jya, Assigned: jya)

References

Details

Attachments

(5 files, 3 obsolete files)

In bug 1319987, we disabled the RemoteDataDecoder for intermittent failure. There appears to be data races occurring causing either the DrainComplete or InputExhausted callbacks to never be called. This bug aim to track what's going on and re-enable it
The attached patch print some logs on the adb log thingy. here is the output for the dom/media/mediasource/test/test_EndedEvent.html 02-05 22:08:47.592 12527 13056 I MFRDataDecoder: HandledDemuxedSample: supportRecycling=0 NeedDraining 02-05 22:08:47.592 12527 13056 I MFRDataDecoder: MFR::DrainDecoder 02-05 22:08:47.592 12527 13056 I MFRDataDecoder: MFR::DrainDecoder nothing to drain 02-05 22:08:47.592 12527 13056 I RemoteDataDecoder: Shutdown started 02-05 22:08:47.724 12527 13057 I MFRDataDecoder: Start Decode Video dts:3600000 pts:3600000 02-05 22:08:47.724 12527 13057 I RemoteDataDecoder: Decode started: dts:3600000 pts:3600000 02-05 22:08:47.740 12527 13091 E GeckoRemoteCodecProxy: onInputExhausted mEndOfInput=false 02-05 22:08:47.741 12527 13058 I RemoteDataDecoder: InputExhausted 02-05 22:08:47.747 12527 13057 I MFRDataDecoder: Start Decode Video dts:3633000 pts:3633000 02-05 22:08:47.747 12527 13057 I RemoteDataDecoder: Decode started: dts:3633000 pts:3633000 02-05 22:08:47.757 12527 12540 E GeckoRemoteCodecProxy: onInputExhausted mEndOfInput=false 02-05 22:08:47.757 12527 13108 I RemoteDataDecoder: InputExhausted 02-05 22:08:47.757 12527 13057 I MFRDataDecoder: Start Decode Video dts:3667000 pts:3667000 02-05 22:08:47.757 12527 13057 I RemoteDataDecoder: Decode started: dts:3667000 pts:3667000 02-05 22:08:47.759 12527 12541 E GeckoRemoteCodecProxy: onInputExhausted mEndOfInput=false 02-05 22:08:47.760 12527 13108 I RemoteDataDecoder: InputExhausted 02-05 22:08:47.760 12527 13057 I MFRDataDecoder: Start Decode Video dts:3700000 pts:3700000 02-05 22:08:47.760 12527 13057 I RemoteDataDecoder: Decode started: dts:3700000 pts:3700000 02-05 22:08:47.763 12527 13091 E GeckoRemoteCodecProxy: onInputExhausted mEndOfInput=false 02-05 22:08:47.763 12527 13108 I RemoteDataDecoder: InputExhausted 02-05 22:08:47.763 12527 13057 I MFRDataDecoder: Start Decode Video dts:3733000 pts:3733000 02-05 22:08:47.763 12527 13057 I RemoteDataDecoder: Decode started: dts:3733000 pts:3733000 02-05 22:08:47.829 12527 12540 E GeckoRemoteCodecProxy: onInputExhausted mEndOfInput=false 02-05 22:08:47.829 12527 13108 I RemoteDataDecoder: InputExhausted 02-05 22:08:47.830 12527 13057 I MFRDataDecoder: Start Decode Video dts:3767000 pts:3767000 02-05 22:08:47.830 12527 13057 I RemoteDataDecoder: Decode started: dts:3767000 pts:3767000 02-05 22:08:47.838 12527 12540 E GeckoRemoteCodecProxy: onInputExhausted mEndOfInput=false 02-05 22:08:47.839 12527 13108 I RemoteDataDecoder: InputExhausted 02-05 22:08:47.839 12527 13055 I MFRDataDecoder: Start Decode Video dts:3800000 pts:3800000 02-05 22:08:47.839 12527 13055 I RemoteDataDecoder: Decode started: dts:3800000 pts:3800000 02-05 22:08:47.841 12527 13091 E GeckoRemoteCodecProxy: onInputExhausted mEndOfInput=false 02-05 22:08:47.842 12527 13108 I RemoteDataDecoder: InputExhausted 02-05 22:08:47.842 12527 13056 I MFRDataDecoder: Start Decode Video dts:3833000 pts:3833000 02-05 22:08:47.842 12527 13056 I RemoteDataDecoder: Decode started: dts:3833000 pts:3833000 02-05 22:08:47.848 12527 12541 E GeckoRemoteCodecProxy: onInputExhausted mEndOfInput=false 02-05 22:08:47.848 12527 13108 I RemoteDataDecoder: InputExhausted 02-05 22:08:47.848 12527 13054 I MFRDataDecoder: Start Decode Video dts:3867000 pts:3867000 02-05 22:08:47.848 12527 13054 I RemoteDataDecoder: Decode started: dts:3867000 pts:3867000 02-05 22:08:47.853 12527 13091 I RemoteDataDecoder: HandleOutputFormatChanged 02-05 22:08:47.854 12527 12540 E GeckoRemoteCodecProxy: onInputExhausted mEndOfInput=false 02-05 22:08:47.854 12527 13108 I RemoteDataDecoder: InputExhausted 02-05 22:08:47.855 12527 13057 I MFRDataDecoder: Start Decode Video dts:3900000 pts:3900000 02-05 22:08:47.855 12527 13057 I RemoteDataDecoder: Decode started: dts:3900000 pts:3900000 02-05 22:08:47.858 12527 12541 E GeckoRemoteCodecProxy: onOutput sample={ buffer=org.mozilla.gecko.media.Sample$ArrayBuffer@df6fceb, info={ offset=0, size=8, pts=3600000, flags=1 } } 02-05 22:08:47.858 12527 12541 I RemoteDataDecoder: HandleOutput: pts:3600000 flags:1 size:8 02-05 22:08:47.858 12527 13108 I RemoteDataDecoder: Output 02-05 22:08:47.859 12527 12541 E GeckoRemoteCodecProxy: onInputExhausted mEndOfInput=false 02-05 22:08:47.860 12527 13058 I RemoteDataDecoder: InputExhausted 02-05 22:08:47.860 12527 13057 I MFRDataDecoder: Start Decode Video dts:3933000 pts:3933000 02-05 22:08:47.860 12527 13057 I RemoteDataDecoder: Decode started: dts:3933000 pts:3933000 02-05 22:08:47.861 12527 12540 E GeckoRemoteCodecProxy: onOutput sample={ buffer=org.mozilla.gecko.media.Sample$ArrayBuffer@bfb7a48, info={ offset=0, size=8, pts=3633000, flags=0 } } 02-05 22:08:47.861 12527 12540 I RemoteDataDecoder: HandleOutput: pts:3633000 flags:0 size:8 02-05 22:08:47.863 12527 13108 I RemoteDataDecoder: Output 02-05 22:08:47.872 12527 13091 E GeckoRemoteCodecProxy: onOutput sample={ buffer=org.mozilla.gecko.media.Sample$ArrayBuffer@50530e1, info={ offset=0, size=8, pts=3667000, flags=0 } } 02-05 22:08:47.872 12527 13091 I RemoteDataDecoder: HandleOutput: pts:3667000 flags:0 size:8 02-05 22:08:47.872 12527 13108 I RemoteDataDecoder: Output 02-05 22:08:47.884 12527 12541 E GeckoRemoteCodecProxy: onOutput sample={ buffer=org.mozilla.gecko.media.Sample$ArrayBuffer@7208e06, info={ offset=0, size=8, pts=3700000, flags=0 } } 02-05 22:08:47.884 12527 12541 I RemoteDataDecoder: HandleOutput: pts:3700000 flags:0 size:8 02-05 22:08:47.885 12527 13058 I RemoteDataDecoder: Output 02-05 22:08:47.885 12527 12541 E GeckoRemoteCodecProxy: onOutput sample={ buffer=org.mozilla.gecko.media.Sample$ArrayBuffer@2c67cc7, info={ offset=0, size=8, pts=3733000, flags=0 } } 02-05 22:08:47.885 12527 12541 I RemoteDataDecoder: HandleOutput: pts:3733000 flags:0 size:8 02-05 22:08:47.886 12527 13108 I RemoteDataDecoder: Output 02-05 22:08:47.897 12527 12540 E GeckoRemoteCodecProxy: onOutput sample={ buffer=org.mozilla.gecko.media.Sample$ArrayBuffer@171f2f4, info={ offset=0, size=8, pts=3767000, flags=0 } } 02-05 22:08:47.897 12527 12540 I RemoteDataDecoder: HandleOutput: pts:3767000 flags:0 size:8 02-05 22:08:47.897 12527 13058 I RemoteDataDecoder: Output 02-05 22:13:46.394 12527 13646 I RemoteDataDecoder: Flush started 02-05 22:13:46.421 12527 13647 I RemoteDataDecoder: Shutdown started 02-05 22:13:46.422 12527 13649 W GeckoRemoteCodecProxy: release codec when 5 output buffers unhandled In this log we can see that even afted a call to CodecProxy::RemoteDataDecoder::Input was called, no onInputExhausted came, even though onOutput was called. So here the test timedout because the MFR won't use the MediaDataDecoder until the decode promise got resolved. Here is the log where, all onnputExhausted were called, but after draining no sample with BUFFER_FLAG_END_OF_STREAM flag set was ever returned. jyavenard@jyaaeroubuntu:~/Work/android-studio$ adb logcat -v threadtime | grep '\(DataDecoder\|GeckoRemoteCodecProxy\)' 02-06 09:05:33.570 4503 4774 I MFRDataDecoder: HandledDemuxedSample: supportRecycling=0 NeedDraining 02-06 09:05:33.570 4503 4774 I MFRDataDecoder: MFR::DrainDecoder 02-06 09:05:33.570 4503 4774 I MFRDataDecoder: MFR::DrainDecoder nothing to drain 02-06 09:05:33.570 4503 4774 I MediaCodecDataDecoder: Shutdown Started 02-06 09:05:33.598 4503 4774 I MediaCodecDataDecoder: Shutdown Started 02-06 09:05:33.641 4503 4774 I MFRDataDecoder: Start Decode Video dts:3600000 pts:3600000 02-06 09:05:33.641 4503 4774 I MediaCodecDataDecoder: Decode Started 02-06 09:05:33.653 4503 4796 I MediaCodecDataDecoder: WaitForInput: InputExhausted 02-06 09:05:33.653 4503 4774 I MFRDataDecoder: Start Decode Video dts:3633000 pts:3633000 02-06 09:05:33.653 4503 4774 I MediaCodecDataDecoder: Decode Started 02-06 09:05:33.665 4503 4796 I MediaCodecDataDecoder: WaitForInput: InputExhausted 02-06 09:05:33.665 4503 4770 I MFRDataDecoder: Start Decode Video dts:3667000 pts:3667000 02-06 09:05:33.665 4503 4770 I MediaCodecDataDecoder: Decode Started 02-06 09:05:33.674 4503 4796 I MediaCodecDataDecoder: WaitForInput: InputExhausted 02-06 09:05:33.674 4503 4776 I MFRDataDecoder: Start Decode Video dts:3700000 pts:3700000 02-06 09:05:33.674 4503 4776 I MediaCodecDataDecoder: Decode Started 02-06 09:05:33.677 4503 4796 I MediaCodecDataDecoder: WaitForInput: InputExhausted 02-06 09:05:33.678 4503 4774 I MFRDataDecoder: Start Decode Video dts:3733000 pts:3733000 02-06 09:05:33.678 4503 4774 I MediaCodecDataDecoder: Decode Started 02-06 09:05:33.685 4503 4796 I MediaCodecDataDecoder: WaitForInput: InputExhausted 02-06 09:05:33.686 4503 4774 I MFRDataDecoder: Start Decode Video dts:3767000 pts:3767000 02-06 09:05:33.686 4503 4774 I MediaCodecDataDecoder: Decode Started 02-06 09:05:33.688 4503 4796 I MediaCodecDataDecoder: WaitForInput: InputExhausted 02-06 09:05:33.689 4503 4776 I MFRDataDecoder: Start Decode Video dts:3800000 pts:3800000 02-06 09:05:33.689 4503 4776 I MediaCodecDataDecoder: Decode Started 02-06 09:05:33.695 4503 4796 I MediaCodecDataDecoder: WaitForInput: InputExhausted 02-06 09:05:33.696 4503 4771 I MFRDataDecoder: Start Decode Video dts:3833000 pts:3833000 02-06 09:05:33.696 4503 4771 I MediaCodecDataDecoder: Decode Started 02-06 09:05:33.701 4503 4796 I MediaCodecDataDecoder: WaitForInput: InputExhausted 02-06 09:05:33.701 4503 4774 I MFRDataDecoder: Start Decode Video dts:3867000 pts:3867000 02-06 09:05:33.701 4503 4774 I MediaCodecDataDecoder: Decode Started 02-06 09:05:33.706 4503 4796 I MediaCodecDataDecoder: WaitForInput: InputExhausted 02-06 09:05:33.707 4503 4776 I MFRDataDecoder: Start Decode Video dts:3900000 pts:3900000 02-06 09:05:33.707 4503 4776 I MediaCodecDataDecoder: Decode Started 02-06 09:05:33.713 4503 4796 I MediaCodecDataDecoder: WaitForInput: InputExhausted 02-06 09:05:33.714 4503 4776 I MFRDataDecoder: Start Decode Video dts:3933000 pts:3933000 02-06 09:05:33.714 4503 4776 I MediaCodecDataDecoder: Decode Started 02-06 09:05:33.722 4503 4796 I MediaCodecDataDecoder: WaitForInput: InputExhausted 02-06 09:05:33.723 4503 4771 I MFRDataDecoder: Start Decode Video dts:3967000 pts:3967000 02-06 09:05:33.723 4503 4771 I MediaCodecDataDecoder: Decode Started 02-06 09:05:33.727 4503 4796 I MediaCodecDataDecoder: WaitForInput: InputExhausted 02-06 09:05:33.728 4503 4774 I MFRDataDecoder: OnDemuxFailed EOS need draining 02-06 09:05:33.728 4503 4774 I MFRDataDecoder: MFR::DrainDecoder 02-06 09:05:33.728 4503 4774 I MFRDataDecoder: MFR::DrainDecoder start 02-06 09:05:33.728 4503 4774 I MediaCodecDataDecoder: Drain Started 02-06 09:05:33.748 4503 4796 I MediaCodecDataDecoder: HandleEOS: DrainComplete 02-06 09:05:33.748 4503 4796 I MediaCodecDataDecoder: WaitForInput: InputExhausted 02-06 09:05:33.751 4503 4776 I MediaCodecDataDecoder: Flush Started 02-06 09:05:33.757 4503 4796 I MediaCodecDataDecoder: WaitForInput: InputExhausted 02-06 09:05:33.758 4503 4776 I MediaCodecDataDecoder: Shutdown Started 02-06 09:05:33.794 4503 4776 I MediaCodecDataDecoder: Shutdown Started 02-06 09:19:24.950 5852 6646 I MFRDataDecoder: HandledDemuxedSample: supportRecycling=0 NeedDraining 02-06 09:19:24.950 5852 6646 I MFRDataDecoder: MFR::DrainDecoder 02-06 09:19:24.950 5852 6646 I MFRDataDecoder: MFR::DrainDecoder nothing to drain 02-06 09:19:24.950 5852 6646 I RemoteDataDecoder: Shutdown started 02-06 09:19:25.054 5852 6646 I MFRDataDecoder: Start Decode Video dts:3600000 pts:3600000 02-06 09:19:25.054 5852 6646 I RemoteDataDecoder: Decode started: dts:3600000 pts:3600000 02-06 09:19:25.058 5852 5865 E GeckoRemoteCodecProxy: onInputExhausted mEndOfInput=false 02-06 09:19:25.060 5852 6650 I RemoteDataDecoder: InputExhausted 02-06 09:19:25.061 5852 6648 I MFRDataDecoder: Start Decode Video dts:3633000 pts:3633000 02-06 09:19:25.061 5852 6648 I RemoteDataDecoder: Decode started: dts:3633000 pts:3633000 02-06 09:19:25.112 5852 5866 E GeckoRemoteCodecProxy: onInputExhausted mEndOfInput=false 02-06 09:19:25.114 5852 6650 I RemoteDataDecoder: InputExhausted 02-06 09:19:25.115 5852 6649 I MFRDataDecoder: Start Decode Video dts:3667000 pts:3667000 02-06 09:19:25.115 5852 6649 I RemoteDataDecoder: Decode started: dts:3667000 pts:3667000 02-06 09:19:25.119 5852 5865 E GeckoRemoteCodecProxy: onInputExhausted mEndOfInput=false 02-06 09:19:25.120 5852 6650 I RemoteDataDecoder: InputExhausted 02-06 09:19:25.124 5852 6646 I MFRDataDecoder: Start Decode Video dts:3700000 pts:3700000 02-06 09:19:25.124 5852 6646 I RemoteDataDecoder: Decode started: dts:3700000 pts:3700000 02-06 09:19:25.131 5852 5865 E GeckoRemoteCodecProxy: onInputExhausted mEndOfInput=false 02-06 09:19:25.131 5852 6711 I RemoteDataDecoder: InputExhausted 02-06 09:19:25.132 5852 6648 I MFRDataDecoder: Start Decode Video dts:3733000 pts:3733000 02-06 09:19:25.132 5852 6648 I RemoteDataDecoder: Decode started: dts:3733000 pts:3733000 02-06 09:19:25.152 5852 5866 I RemoteDataDecoder: HandleOutputFormatChanged 02-06 09:19:25.152 5852 5865 E GeckoRemoteCodecProxy: onInputExhausted mEndOfInput=false 02-06 09:19:25.152 5852 6711 I RemoteDataDecoder: InputExhausted 02-06 09:19:25.153 5852 6647 I MFRDataDecoder: Start Decode Video dts:3767000 pts:3767000 02-06 09:19:25.153 5852 6647 I RemoteDataDecoder: Decode started: dts:3767000 pts:3767000 02-06 09:19:25.160 5852 5865 E GeckoRemoteCodecProxy: onInputExhausted mEndOfInput=false 02-06 09:19:25.160 5852 6711 I RemoteDataDecoder: InputExhausted 02-06 09:19:25.161 5852 6649 I MFRDataDecoder: Start Decode Video dts:3800000 pts:3800000 02-06 09:19:25.161 5852 6649 I RemoteDataDecoder: Decode started: dts:3800000 pts:3800000 02-06 09:19:25.163 5852 5865 E GeckoRemoteCodecProxy: onOutput sample={ buffer=org.mozilla.gecko.media.Sample$ArrayBuffer@6e9b273, info={ offset=0, size=8, pts=3600000, flags=1 } } 02-06 09:19:25.163 5852 5865 I RemoteDataDecoder: HandleOutput: pts:3600000 flags:1 size:8 02-06 09:19:25.163 5852 6711 I RemoteDataDecoder: Output 02-06 09:19:25.163 5852 6713 E GeckoRemoteCodecProxy: onInputExhausted mEndOfInput=false 02-06 09:19:25.164 5852 6650 I RemoteDataDecoder: InputExhausted 02-06 09:19:25.164 5852 6646 I MFRDataDecoder: Start Decode Video dts:3833000 pts:3833000 02-06 09:19:25.164 5852 6646 I RemoteDataDecoder: Decode started: dts:3833000 pts:3833000 02-06 09:19:25.167 5852 5866 E GeckoRemoteCodecProxy: onInputExhausted mEndOfInput=false 02-06 09:19:25.167 5852 6650 I RemoteDataDecoder: InputExhausted 02-06 09:19:25.168 5852 6647 I MFRDataDecoder: Start Decode Video dts:3867000 pts:3867000 02-06 09:19:25.168 5852 6647 I RemoteDataDecoder: Decode started: dts:3867000 pts:3867000 02-06 09:19:25.168 5852 5865 E GeckoRemoteCodecProxy: onOutput sample={ buffer=org.mozilla.gecko.media.Sample$ArrayBuffer@dd23530, info={ offset=0, size=8, pts=3633000, flags=0 } } 02-06 09:19:25.168 5852 5865 I RemoteDataDecoder: HandleOutput: pts:3633000 flags:0 size:8 02-06 09:19:25.169 5852 6711 I RemoteDataDecoder: Output 02-06 09:19:25.169 5852 5866 E GeckoRemoteCodecProxy: onOutput sample={ buffer=org.mozilla.gecko.media.Sample$ArrayBuffer@1d575a9, info={ offset=0, size=8, pts=3667000, flags=0 } } 02-06 09:19:25.169 5852 5866 I RemoteDataDecoder: HandleOutput: pts:3667000 flags:0 size:8 02-06 09:19:25.169 5852 6711 I RemoteDataDecoder: Output 02-06 09:19:25.174 5852 5865 E GeckoRemoteCodecProxy: onInputExhausted mEndOfInput=false 02-06 09:19:25.174 5852 6650 I RemoteDataDecoder: InputExhausted 02-06 09:19:25.175 5852 6646 I MFRDataDecoder: Start Decode Video dts:3900000 pts:3900000 02-06 09:19:25.175 5852 6646 I RemoteDataDecoder: Decode started: dts:3900000 pts:3900000 02-06 09:19:25.176 5852 6713 E GeckoRemoteCodecProxy: onOutput sample={ buffer=org.mozilla.gecko.media.Sample$ArrayBuffer@b72c72e, info={ offset=0, size=8, pts=3700000, flags=0 } } 02-06 09:19:25.176 5852 6713 I RemoteDataDecoder: HandleOutput: pts:3700000 flags:0 size:8 02-06 09:19:25.176 5852 6711 I RemoteDataDecoder: Output 02-06 09:19:25.180 5852 5865 E GeckoRemoteCodecProxy: onInputExhausted mEndOfInput=false 02-06 09:19:25.180 5852 6711 I RemoteDataDecoder: InputExhausted 02-06 09:19:25.181 5852 6713 E GeckoRemoteCodecProxy: onOutput sample={ buffer=org.mozilla.gecko.media.Sample$ArrayBuffer@42302cf, info={ offset=0, size=8, pts=3733000, flags=0 } } 02-06 09:19:25.181 5852 6713 I RemoteDataDecoder: HandleOutput: pts:3733000 flags:0 size:8 02-06 09:19:25.181 5852 6650 I RemoteDataDecoder: Output 02-06 09:19:25.181 5852 6647 I MFRDataDecoder: Start Decode Video dts:3933000 pts:3933000 02-06 09:19:25.181 5852 6647 I RemoteDataDecoder: Decode started: dts:3933000 pts:3933000 02-06 09:19:25.182 5852 5866 E GeckoRemoteCodecProxy: onOutput sample={ buffer=org.mozilla.gecko.media.Sample$ArrayBuffer@8dd745c, info={ offset=0, size=8, pts=3767000, flags=0 } } 02-06 09:19:25.182 5852 5866 I RemoteDataDecoder: HandleOutput: pts:3767000 flags:0 size:8 02-06 09:19:25.182 5852 6650 I RemoteDataDecoder: Output 02-06 09:19:25.187 5852 6713 E GeckoRemoteCodecProxy: onInputExhausted mEndOfInput=false 02-06 09:19:25.187 5852 6711 I RemoteDataDecoder: InputExhausted 02-06 09:19:25.188 5852 6647 I MFRDataDecoder: Start Decode Video dts:3967000 pts:3967000 02-06 09:19:25.188 5852 6647 I RemoteDataDecoder: Decode started: dts:3967000 pts:3967000 02-06 09:19:25.189 5852 5866 E GeckoRemoteCodecProxy: onOutput sample={ buffer=org.mozilla.gecko.media.Sample$ArrayBuffer@ae6c365, info={ offset=0, size=8, pts=3800000, flags=0 } } 02-06 09:19:25.189 5852 5866 I RemoteDataDecoder: HandleOutput: pts:3800000 flags:0 size:8 02-06 09:19:25.190 5852 6650 I RemoteDataDecoder: Output 02-06 09:19:25.194 5852 5865 E GeckoRemoteCodecProxy: onInputExhausted mEndOfInput=false 02-06 09:19:25.194 5852 6650 I RemoteDataDecoder: InputExhausted 02-06 09:19:25.195 5852 6649 I MFRDataDecoder: OnDemuxFailed EOS need draining 02-06 09:19:25.195 5852 6649 I MFRDataDecoder: MFR::DrainDecoder 02-06 09:19:25.195 5852 6649 I MFRDataDecoder: MFR::DrainDecoder start 02-06 09:19:25.195 5852 6649 I RemoteDataDecoder: Drain started 02-06 09:19:25.196 5852 6713 E GeckoRemoteCodecProxy: onOutput sample={ buffer=org.mozilla.gecko.media.Sample$ArrayBuffer@8e8283a, info={ offset=0, size=8, pts=3833000, flags=0 } } 02-06 09:19:25.196 5852 6713 I RemoteDataDecoder: HandleOutput: pts:3833000 flags:0 size:8 02-06 09:19:25.196 5852 6650 I RemoteDataDecoder: Output 02-06 09:19:25.202 5852 5865 E GeckoRemoteCodecProxy: onOutput sample={ buffer=org.mozilla.gecko.media.Sample$ArrayBuffer@df6fceb, info={ offset=0, size=8, pts=3867000, flags=0 } } 02-06 09:19:25.202 5852 5865 I RemoteDataDecoder: HandleOutput: pts:3867000 flags:0 size:8 02-06 09:19:25.202 5852 6711 I RemoteDataDecoder: Output 02-06 09:19:25.207 5852 6713 E GeckoRemoteCodecProxy: onOutput sample={ buffer=org.mozilla.gecko.media.Sample$ArrayBuffer@bfb7a48, info={ offset=0, size=8, pts=3900000, flags=0 } } 02-06 09:19:25.207 5852 6713 I RemoteDataDecoder: HandleOutput: pts:3900000 flags:0 size:8 02-06 09:19:25.207 5852 6650 I RemoteDataDecoder: Output 02-06 09:19:25.213 5852 5866 E GeckoRemoteCodecProxy: onOutput sample={ buffer=org.mozilla.gecko.media.Sample$ArrayBuffer@50530e1, info={ offset=0, size=8, pts=3933000, flags=0 } } 02-06 09:19:25.213 5852 5866 I RemoteDataDecoder: HandleOutput: pts:3933000 flags:0 size:8 02-06 09:19:25.213 5852 6711 I RemoteDataDecoder: Output
Attached file debug.log (obsolete) —
Attached patch debug.patchSplinter Review
Attachment #8833888 - Attachment is obsolete: true
Depends on: 1336947
The "no EOS sample after draining" issue happened because all output buffers were hold in mDecodedData and there was none left for MediaCodec to use. I made a patch based on your suggestion in bug 1319987 comment 113 (use duration queue size to resolve drain promise) and run test_EndedEvent.html 1000 times without failure. Will upload it for review later. So far haven't met the other issue with the patch applied. Will keep monitoring.
I'll take the solution proposed in bug 1336947 instead, which will call Drain multiple times instead. While it may work for now in this particular case, there's no guarantee that all drained frames can be returned due to the lack of free buffer. That would depend on the phone I guess.
Cool. I'll cancel the review then. :)
Attachment #8834335 - Attachment is obsolete: true
Attachment #8834335 - Flags: review?(jyavenard)
Attachment #8834336 - Attachment is obsolete: true
Attachment #8834336 - Flags: review?(jyavenard)
Attachment #8834632 - Flags: review?(jolin)
Attachment #8834633 - Flags: review?(jolin)
Comment on attachment 8834633 [details] Bug 1336358: P2. Drain Android's RemoteDataDecoder one frame at a time. https://reviewboard.mozilla.org/r/110496/#review111852 ::: dom/media/platforms/android/RemoteDataDecoder.cpp:533 (Diff revision 4) > return InvokeAsync(mTaskQueue, __func__, [self, this]() { > + RefPtr<DecodePromise> p = mDrainPromise.Ensure(__func__); > + if (mDrained) { > + // There's no operation to perform other than returning any already > + // decoded data. > + InputExhausted(); Now that `InputExhausted` doesn't request input at all, perhaps rename it to `ReturnDecodedData`?
Attachment #8834633 - Flags: review?(jolin) → review+
Attachment #8834632 - Flags: review?(jolin) → review+
Pushed by jyavenard@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/1ffc124c5fc1 P1. Revert "Bug 1319987: P12. Disable RemoteDataDecoder.". r=jolin https://hg.mozilla.org/integration/autoland/rev/c474e07f9ad8 P2. Drain Android's RemoteDataDecoder one frame at a time. r=jolin
This also fails the Android 4.3 debug mda dom/media/webaudio/test/test_mediaElementAudioSourceNodeVideo.html with: Test timed out. https://treeherder.mozilla.org/logviewer.html#?job_id=75627866&repo=autoland
Comment on attachment 8836914 [details] Bug 1336358: P3. Fix incorrect arguments in DurationMap. https://reviewboard.mozilla.org/r/112230/#review113568 Cannot believe that it was not caught in my local tests! :$ Thanks a lot for saving my ***!
Attachment #8836914 - Flags: review?(jolin) → review+
Comment on attachment 8836914 [details] Bug 1336358: P3. Fix incorrect arguments in DurationMap. https://reviewboard.mozilla.org/r/112230/#review113568 The RemoteDataDecoder is disabled in central. Easy to miss, and I didnt see in the firet review either
Depends on: 1339449
Attachment #8837163 - Flags: review?(padenot) → review+
Pushed by jyavenard@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/e1505ae7e25f P1. Revert "Bug 1319987: P12. Disable RemoteDataDecoder.". r=jolin https://hg.mozilla.org/integration/autoland/rev/fb0a390994d7 P2. Drain Android's RemoteDataDecoder one frame at a time. r=jolin https://hg.mozilla.org/integration/autoland/rev/5dcc211ab7fe P3. Fix incorrect arguments in DurationMap. r=jolin https://hg.mozilla.org/integration/autoland/rev/d59dd0dca619 P4. Disable some noisy tests on Android. r=padenot
The other commit in the push also made it to m-c, the bug marking tool got thrown off by the word "revert" so skipped over it. https://hg.mozilla.org/mozilla-central/rev/e1505ae7e25f
Flags: needinfo?(jyavenard)
Assignee: nobody → jyavenard
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: