Open Bug 1540976 Opened 5 years ago Updated 2 years ago

Bad video playback performance on Intel Celeron N3060 based Lenova 110s

Categories

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

66 Branch
defect

Tracking

()

REOPENED

People

(Reporter: michael, Unassigned)

Details

User Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:66.0) Gecko/20100101 Firefox/66.0

Steps to reproduce:

Play video on Youtube or Periscope.

Actual results:

Youtube and Periscope video playback performance is very bad. Dropped frames. Freezes and audio drop outs, along with very slow page elements like comments and animations when video is playing.

Expected results:

I can play all video normally using other software. For example using VLC to play a video from Youtube is perfect. Smooth video, no dropped frames or audio drop out. Video playback is also much better in Google Chrome Browser on Periscope or Youtube.

I have tried running FF in safe mode which makes no difference.

I have checked the about: page and my GPU is shown as visible and enabled.

I should repeat that even though this laptop (Lenova 110s) is not a massively high performance model, I can play video normally in VLC and Google Chrome, so this is not a problem with device hardware performance.

I also tried enabling AzureCanvasAccelerated but it would not turn on.

Cheers

Component: Untriaged → Audio/Video: Playback
Product: Firefox → Core

Thanks for the report!

Can you install the extension at [1], then when you're playing a video with bad performance, open devtools and the "Media-WebRTC" tab, then its "Media" tab, select (so it expands) the playing media element, and copy the text here?

It should give us some data on codecs used and where frames are dropped.

[1] https://addons.mozilla.org/en-US/firefox/addon/devtools-media-panel/

Flags: needinfo?(michael)

Cheers. Here are a couple of examples ...

=================================================================================================

https://www.pscp.tv/w/1ypKdOZwXDgxW

Media
Webrtc

0: blob:https://www.pscp.tv/0c05bf7d-f7bc-44c3-8b52-cfa785f27fc0 ▶️27
"MediaInfo":{
"HTMLMediaElement":{
"autoplay":false
"buffered":[
0:{
"start":0.08
"end":57.124
}
]
"controls":false
"crossOrigin":NULL
"currentSrc":"blob:https://www.pscp.tv/0c05bf7d-f7bc-44c3-8b52-cfa785f27fc0"
"currentTime":26.523916
"defaultMuted":false
"defaultPlaybackRate":1
"duration":5437.8929
"ended":false
"error":NULL
"loop":false
"mozAudioCaptured":false
"mozFragmentEnd":5437.8929
"muted":false
"networkState":2
"networkState_name":"NETWORK_LOADING"
"paused":false
"playbackRate":1
"played":[
0:{
"start":0.08
"end":26.523916
}
]
"preload":"metadata"
"readyState":4
"seekable":[
0:{
"start":0
"end":5437.8929
}
]
"seeking":false
"src":"blob:https://www.pscp.tv/0c05bf7d-f7bc-44c3-8b52-cfa785f27fc0"
"srcObject":NULL
"volume":1
}
"HTMLVideoElement":{
"height":0
"mozDecodedFrames":812
"mozFrameDelay":0.014264023
"mozHasAudio":true
"mozPaintedFrames":592
"mozParsedFrames":817
"mozPresentedFrames":795
"videoHeight":720
"videoWidth":1280
"width":0
}
"videoPlaybackQuality":{
"ratio":"99%"
"droppedVideoFrames":4
"corruptedVideoFrames":0
}
"mozMediaSourceObject":[
0:{
"sourceBuffers":[
0:{
"start":0.067
"end":57.124
}
]
}
1:{
"sourceBuffers":[
0:{
"start":0.08
"end":57.125666
}
]
}
]
"debugInfo":{
"Container Type":"MediaSource"
"Audio Decoder(audio/mp4a-latm, 2 channels @ 48.0kHz)":"ffmpeg audio decoder"
"Audio Frames Decoded":"1359"
"Audio State":"ni=0 no=0 wp=0 demuxr=0 demuxq=0 decoder=0 tt=-1.0 tths=-1 in=1345 out=1345 qs=0 pending=0 wfd=0 eos=0 ds=0 wfk=0 sid=11"
"Video Decoder(video/avc, 1280x720 @ 29.86)":"ffmpeg video decoder"
"Hardware Video Decoding":"disabled"
"Video Frames Decoded":"812 (skipped=0)"
"Video State":"ni=0 no=0 wp=0 demuxr=0 demuxq=0 decoder=0 tt=-1.0 tths=-1 in=812 out=810 qs=2 pending:0 wfd=0 eos=0 ds=0 wfk=0 sid=10"
"Dumping Data for Demuxer":"7f9548dda400"
"Dumping Audio Track Buffer(audio/mp4)":"mLastAudioTime=28.752666"
"Audio Track Buffer Details":"NumSamples=2676 Size=1557603 Evictable=783017 NextGetSampleIndex=1345 NextInsertionIndex=2676"
"Audio Track Buffered":"ranges=[(0.080000, 57.125666)]"
"Dumping Video Track Buffer(video/mp4)":"mLastVideoTime=27.161000"
"Video Track Buffer Details":"NumSamples=1710 Size=4070203 Evictable=1626266 NextGetSampleIndex=812 NextInsertionIndex=1710"
"Video Track Buffered":"ranges=[(0.067000, 57.124000)]"
"Compositor dropped frame(including when element's invisible)":"4"
"MediaDecoder=7f95564c4000":"channels=2 rate=48000 hasAudio=1 hasVideo=1 mPlayState=PLAYING"
"MDSM":"duration=57124000 GetMediaTime=26736437 GetClock=26746895 mMediaSink=7f954baaa700 state=DECODING mPlayState=3 mSentFirstFrameLoadedEvent=1 IsPlaying=1 mAudioStatus=idle mVideoStatus=idle mDecodedAudioEndTime=28752666 mDecodedVideoEndTime=27095000 mAudioCompleted=0 mVideoCompleted=0 mIsPrerolling=0"
"VideoSink":"IsStarted=1 IsPlaying=1 VideoQueue(finished=0 size=11) mVideoFrameEndTime=26760000 mHasVideo=1 mVideoSinkEndRequest.Exists()=0 mEndPromiseHolder.IsEmpty()=0"
"AudioSinkWrapper":"IsStarted=1 IsPlaying=1 AudioEnded=0"
}
}

=================================================================================================

https://www.youtube.com/watch?v=r4n5bjMRXaA

Media
Webrtc

0: blob:https://www.youtube.com/e65c9b99-cd0c-472b-8462-32ff3c18c88f ▶️7156
"MediaInfo":{
"HTMLMediaElement":{
"autoplay":false
"buffered":[
0:{
"start":7090.001
"end":7277.867
}
]
"controls":false
"crossOrigin":NULL
"currentSrc":"blob:https://www.youtube.com/e65c9b99-cd0c-472b-8462-32ff3c18c88f"
"currentTime":7155.934019
"defaultMuted":false
"defaultPlaybackRate":1
"duration":12552.767
"ended":false
"error":NULL
"loop":false
"mozAudioCaptured":false
"mozFragmentEnd":12552.767
"muted":false
"networkState":2
"networkState_name":"NETWORK_LOADING"
"paused":false
"playbackRate":1
"played":[
0:{
"start":7090.353666
"end":7155.934019
}
]
"preload":""
"readyState":4
"seekable":[
0:{
"start":0
"end":12552.767
}
]
"seeking":false
"src":"blob:https://www.youtube.com/e65c9b99-cd0c-472b-8462-32ff3c18c88f"
"srcObject":NULL
"volume":0.9873019549267269
}
"HTMLVideoElement":{
"height":0
"mozDecodedFrames":1851
"mozFrameDelay":0.034271604
"mozHasAudio":true
"mozPaintedFrames":141
"mozParsedFrames":4147
"mozPresentedFrames":166
"videoHeight":720
"videoWidth":1280
"width":0
}
"videoPlaybackQuality":{
"ratio":"4%"
"droppedVideoFrames":3679
"corruptedVideoFrames":0
}
"mozMediaSourceObject":[
0:{
"sourceBuffers":[
0:{
"start":7090.001
"end":7280.001
}
]
}
1:{
"sourceBuffers":[
0:{
"start":7085.333
"end":7277.867
}
]
}
]
"debugInfo":{
"Container Type":"MediaSource"
"Audio Decoder(audio/opus, 2 channels @ 48.0kHz)":"opus audio decoder"
"Audio Frames Decoded":"3387"
"Audio State":"ni=0 no=0 wp=0 demuxr=0 demuxq=0 decoder=0 tt=-1.0 tths=-1 in=3387 out=3387 qs=0 pending=0 wfd=0 eos=0 ds=0 wfk=0 sid=16"
"Video Decoder(video/vp9, 1280x720 @ 60.05)":"ffvpx video decoder"
"Hardware Video Decoding":"disabled"
"Video Frames Decoded":"1851 (skipped=2295)"
"Video State":"ni=0 no=1 wp=0 demuxr=0 demuxq=0 decoder=1 tt=-1.0 tths=-1 in=195 out=194 qs=1 pending:0 wfd=0 eos=0 ds=0 wfk=0 sid=17"
"Dumping Data for Demuxer":"7f9545849000"
"Dumping Audio Track Buffer(audio/webm)":"mLastAudioTime=7158.001000"
"Audio Track Buffer Details":"NumSamples=9500 Size=6060447 Evictable=2176228 NextGetSampleIndex=3400 NextInsertionIndex=9500"
"Audio Track Buffered":"ranges=[(7090.001000, 7280.001000)]"
"Dumping Video Track Buffer(video/webm)":"mLastVideoTime=7154.450000"
"Video Track Buffer Details":"NumSamples=11552 Size=66605804 Evictable=22864452 NextGetSampleIndex=4147 NextInsertionIndex=11552"
"Video Track Buffered":"ranges=[(7085.333000, 7277.867000)]"
"Compositor dropped frame(including when element's invisible)":"3"
"MediaDecoder=7f9555a5c800":"channels=2 rate=48000 hasAudio=1 hasVideo=1 mPlayState=PLAYING"
"MDSM":"duration=12552767000 GetMediaTime=7155976665 GetClock=7155979082 mMediaSink=7f95601fec40 state=DECODING mPlayState=3 mSentFirstFrameLoadedEvent=1 IsPlaying=1 mAudioStatus=idle mVideoStatus=pending mDecodedAudioEndTime=7157994500 mDecodedVideoEndTime=7154433000 mAudioCompleted=0 mVideoCompleted=0 mIsPrerolling=0"
"VideoSink":"IsStarted=1 IsPlaying=1 VideoQueue(finished=0 size=0) mVideoFrameEndTime=7154433000 mHasVideo=1 mVideoSinkEndRequest.Exists()=0 mEndPromiseHolder.IsEmpty()=0"
"AudioSinkWrapper":"IsStarted=1 IsPlaying=1 AudioEnded=0"
}
}

Flags: needinfo?(michael)

Thanks!

jya, do the numbers above make sense to you?

That this machine has trouble playing 720p@60 VP9 content from youtube doesn't seem too surprising, but that it gets served this is, I'd say, without know too much about Youtube's selection algorithm or our MediaCapabilities impl.

Flags: needinfo?(jyavenard)

(In reply to Andreas Pehrson [:pehrsons] from comment #3)

Thanks!

jya, do the numbers above make sense to you?

That this machine has trouble playing 720p@60 VP9 content from youtube doesn't seem too surprising

Hi. Your statement is inaccurate. As I stated above I can play 720p content perfectly in Chrome and using VLC. I just confirmed this again by playing this 60fps video in Chrome - https://www.youtube.com/watch?v=lfwjzNB--5k ... in FF frames are dropped. It's noticeable and interferes with the experience of watching the media. I could just switch to Chrome, but I like FF too much. The syncing works for me really well. Also FF has a large addon ecosystem that Chrome seems to lack, plus I have some issues with using Google technology. Cheers.

Right. There are other differences also so my statement should be read in the light of how Firefox is usually expected to perform on your hardware.

Out of curiosity though, since you mentioned audio dropouts:
If you go to "about:config" and set "media.cubeb.sandbox" to false, does that affect performance at all?

Flags: needinfo?(michael)

(In reply to Andreas Pehrson [:pehrsons] from comment #3)

Thanks!

jya, do the numbers above make sense to you?

That this machine has trouble playing 720p@60 VP9 content from youtube doesn't seem too surprising, but that it gets served this is, I'd say, without know too much about Youtube's selection algorithm or our MediaCapabilities impl.

MediaCapabilities doesn't prevent the user from choosing 720p60 in the list of resolution. It only provides a guideline on what we can play smoothly which is what YT will use if you leave the resolution selection to "Auto"

In the post provided earlier, the frames were dropped because we were too slow at painting them.

First thing to start, it making sure that HW accelerated layers are enabled, in about:config, set layers.acceleration.force-enabled to true and restart Firefox.

I don't expect the basic compositor to perform properly with 60fps content.

Flags: needinfo?(jyavenard)

VLC will use HW decoding most of the time on Linux. We don't support HW decoding on Linux (but neither does Chrome)

Keywords: stalled

Bad video playback performance on Intel Celeron N3060 based Lenova 110s

(Andreas Pehrson [:pehrsons] from comment #3)

That this machine has trouble playing 720p@60 VP9 content from youtube doesn't seem too surprising

(Jean-Yves Avenard [:jya] from comment #6)

In the post provided earlier, the frames were dropped because we were too slow at painting them.

First thing to start, it making sure that HW accelerated layers are enabled, in about:config, set layers.acceleration.force-enabled to true and restart Firefox.

I don't expect the basic compositor to perform properly with 60fps content.

(Jean-Yves Avenard [:jya] from comment #7)

VLC will use HW decoding most of the time on Linux. We don't support HW decoding on Linux (but neither does Chrome)

https://en.wikichip.org/wiki/intel/celeron/n3060

Video decode hardware acceleration including support for H.263, MPEG4, H.264, H.265 (HEVC), VP8, VP9, MVC, MPEG2, VC1, JPEG.

Status: UNCONFIRMED → RESOLVED
Closed: 5 years ago
Resolution: --- → DUPLICATE
Status: RESOLVED → REOPENED
Ever confirmed: true
Resolution: DUPLICATE → ---
Flags: needinfo?(michael)
Priority: -- → P3
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.