WebKit Bugzilla
Attachment 358001 Details for
Bug 192848
: RTCRtpSender.setParameters() should set active parameter
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-192848-20181221162817.patch (text/plain), 6.81 KB, created by
youenn fablet
on 2018-12-21 16:28:18 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
youenn fablet
Created:
2018-12-21 16:28:18 PST
Size:
6.81 KB
patch
obsolete
>Subversion Revision: 239503 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 05da896f04b2ef8b31af37519e937ea997cac821..a2b49c427269126e40d1c9baf006243fb5cea1d2 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,16 @@ >+2018-12-21 Youenn Fablet <youenn@apple.com> >+ >+ RTCRtpSender.setParameters() does set active parameter >+ https://bugs.webkit.org/show_bug.cgi?id=192848 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Covered by updated test. >+ >+ * Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp: >+ (WebCore::updateRTCRtpSendParameters): >+ The routine was updating the local value, not the out parameter. >+ > 2018-12-21 Youenn Fablet <youenn@apple.com> > > [Fetch API] Implement abortable fetch >diff --git a/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp b/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp >index ddbb5f013fa8a3d4c59a191399db2b32b8f5c9b8..fa91dc6449e6ba722a1965af87507bf919606769 100644 >--- a/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp >+++ b/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp >@@ -160,10 +160,8 @@ RTCRtpSendParameters toRTCRtpSendParameters(const webrtc::RtpParameters& rtcPara > return parameters; > } > >-void updateRTCRtpSendParameters(const RTCRtpSendParameters& parameters, webrtc::RtpParameters& currentParameters) >+void updateRTCRtpSendParameters(const RTCRtpSendParameters& parameters, webrtc::RtpParameters& rtcParameters) > { >- webrtc::RtpParameters rtcParameters = currentParameters; >- > rtcParameters.transaction_id = parameters.transactionId.utf8().data(); > > if (parameters.encodings.size() != rtcParameters.encodings.size()) { >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 2acd43f8627e24c33f2172d91f587fa47d6c8a7d..cc34d42f2de4dcfa38cb7a54bb669ef945f18c71 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,14 @@ >+2018-12-21 Youenn Fablet <youenn@apple.com> >+ >+ RTCRtpSender.setParameters() does set active parameter >+ https://bugs.webkit.org/show_bug.cgi?id=192848 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * webrtc/video.html: >+ Add a check for active value. >+ Test video freezing through canvas instead of stats. >+ > 2018-12-21 Youenn Fablet <youenn@apple.com> > > [Fetch API] Implement abortable fetch >diff --git a/LayoutTests/webrtc/video.html b/LayoutTests/webrtc/video.html >index f75a46028a19381605646cdb0277fd279367a400..c4180e96436773fa95175b8bf465e14348a4c94d 100644 >--- a/LayoutTests/webrtc/video.html >+++ b/LayoutTests/webrtc/video.html >@@ -14,14 +14,18 @@ > video = document.getElementById("video"); > canvas = document.getElementById("canvas"); > >-function testImage() >+function grabFrameData(x, y, w, h) > { > canvas.width = video.videoWidth; > canvas.height = video.videoHeight; >- canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height); > >- imageData = canvas.getContext('2d').getImageData(10, 325, 250, 1); >- data = imageData.data; >+ canvas.getContext('2d').drawImage(video, x, y, w, h, x, y, w, h); >+ return canvas.getContext('2d').getImageData(x, y, w, h).data; >+} >+ >+function testImage() >+{ >+ const data = grabFrameData(10, 325, 250, 1); > > var index = 20; > assert_true(data[index] < 100); >@@ -72,69 +76,50 @@ promise_test(async (test) => { > testImage(); > }, "Basic video exchange"); > >-async function getInboundRTPStatsNumberOfDecodedFrames(connection) >+function getCircleImageData() > { >- var report = await connection.getStats(); >- var framesDecoded; >- report.forEach((statItem) => { >- if (statItem.type === "inbound-rtp") >- framesDecoded = statItem.framesDecoded; >- }); >- return framesDecoded; >+ return grabFrameData(450, 100, 150, 100); > } > >-async function testFrameDecodedIncreased(connection, count, previousFramesNumber) >+async function checkVideoIsUpdated(shouldBeUpdated, count, referenceData) > { >- if (previousFramesNumber === undefined) { >- let number = await getInboundRTPStatsNumberOfDecodedFrames(connection); >- await waitFor(1000); >- return testFrameDecodedIncreased(connection, 0, number); >- } >- >- var number = await getInboundRTPStatsNumberOfDecodedFrames(connection); >- if (previousFramesNumber && number > previousFramesNumber) >- return; >+ if (count === undefined) >+ count = 0; >+ else if (count >= 20) >+ return Promise.reject("checkVideoIsUpdated timed out :" + shouldBeUpdated + " " + count); > >- if (count >= 20) >- return Promise.reject("test increasing frame encoded timed out"); >+ if (referenceData === undefined) >+ referenceData = getCircleImageData(); > >- await waitFor(1000); >- return testFrameDecodedIncreased(connection, ++count, previousFramesNumber); >-} >+ await waitFor(200); >+ const newData = getCircleImageData(); > >-async function testFrameDecodedDidNotIncreased(connection, count, previousFramesNumber) >-{ >- if (previousFramesNumber === undefined) { >- let number = await getInboundRTPStatsNumberOfDecodedFrames(connection); >- await waitFor(100); >- return testFrameDecodedDidNotIncreased(connection, 0, number); >- } >- >- var number = await getInboundRTPStatsNumberOfDecodedFrames(connection); >- if (previousFramesNumber && number == previousFramesNumber) >+ if (shouldBeUpdated === (JSON.stringify(referenceData) !== JSON.stringify(newData))) > return; > >- if (count >= 20) >- return Promise.reject("test increasing frame encoded timed out"); >- >- await waitFor(100); >- return testFrameDecodedIncreased(connection, ++count, number); >+ await checkVideoIsUpdated(shouldBeUpdated, ++count, newData); > } > > promise_test(async (test) => { >- let p = pc1.getSenders()[0].getParameters(); >- p.encodings[0].active = false; >- await pc1.getSenders()[0].setParameters(p); >+ const sender = pc1.getSenders()[0]; >+ let p = sender.getParameters(); >+ p.encodings[0].active = false; >+ await sender.setParameters(p); >+ >+ assert_false(sender.getParameters().encodings[0].active, "encodings[0].active should be false"); > >- await testFrameDecodedDidNotIncreased(pc2); >+ await checkVideoIsUpdated(false); > }, "Call setParameters to disable sending a given encoding"); > > promise_test(async (test) => { >- let p = pc1.getSenders()[0].getParameters(); >- p.encodings[0].active = true; >- await pc1.getSenders()[0].setParameters(p); >+ const sender = pc1.getSenders()[0]; >+ let p = sender.getParameters(); >+ p.encodings[0].active = true; >+ await sender.setParameters(p); >+ >+ assert_true(sender.getParameters().encodings[0].active, "encodings[0].active should be true"); > >- await testFrameDecodedIncreased(pc2); >+ await checkVideoIsUpdated(true); > }, "Call setParameters to reenable sending a given encoding"); > </script> > </body>
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 192848
:
357667
| 358001