Closed
Bug 1099318
Opened 11 years ago
Closed 11 years ago
VideoConduit stuff doesn't work if the transmit conduit is created before the receive conduit
Categories
(Core :: WebRTC: Audio/Video, defect)
Core
WebRTC: Audio/Video
Tracking
()
RESOLVED
FIXED
mozilla38
People
(Reporter: bwc, Assigned: pkerr)
References
Details
Attachments
(1 file, 5 obsolete files)
|
11.65 KB,
patch
|
pkerr
:
review+
|
Details | Diff | Splinter Review |
While fixing up the patches for bug 1091242, I noticed that we were not linking the transmit/receive conduits for video like we should have been. However, when this was fixed, video stopped working, because the receive conduit was now using the transmit conduit's VideoEngine, which was apparently not created properly. Switching the order of creation such that the receive conduit came first, and constructed the shared VideoEngine, got things working again.
This is going to be a blocker for renegotiation, I think, because we cannot control the order in which these things are created (ie; renegotiation takes us from sendonly to sendrecv).
| Assignee | ||
Updated•11 years ago
|
Assignee: nobody → pkerr
| Assignee | ||
Updated•11 years ago
|
Status: NEW → ASSIGNED
| Reporter | ||
Comment 1•11 years ago
|
||
I should point out that fixing bug 1108248 might fix this one too.
See Also: → 1108248
| Assignee | ||
Comment 2•11 years ago
|
||
The problem appears to be in VideoConduit.cpp WebVideoConduit::Init. While most of the code deals with creating the VideoEngine, attaching the peer conduits to each other, and looking up interfaces there are two calls which make the assumption as to the direction of the conduit and pass 'this' as a parameter. The one that breaks the system when the send conduit is created first is the call to mPtrViERender->AddRenderer(). Here 'this' is passed cast as an ExternalRenderer whenever the first conduit is created. But, if the first conduit is a sender, this will prevent anything from being rendered.
I tested this by calling AddRenderer when the second conduit is created: the other argument is non-null, and the send conduit is created first followed by the receive conduit (the current failure case). This temporary change fixed the problem.
The real fix is to move the AddRenderer() and RegisterSendTransport() outside of this method, which has no knowledge of the conduit directions, to a level where each conduit is created.
(The call to RegisterSendTransport() is, I believe, wrong in the current code arrangement but does not have such a visible side effect.)
| Assignee | ||
Comment 3•11 years ago
|
||
WIP: Fixed by making Renderer and SendTransport assigments based on conduit direction. This should be tighened up to move directional knowledge out of the WebrtcVideoConduit class.
| Assignee | ||
Comment 4•11 years ago
|
||
fix broken mochitests
| Assignee | ||
Updated•11 years ago
|
Attachment #8555580 -
Attachment is obsolete: true
| Assignee | ||
Comment 5•11 years ago
|
||
| Assignee | ||
Updated•11 years ago
|
Attachment #8555989 -
Attachment is obsolete: true
| Assignee | ||
Comment 6•11 years ago
|
||
| Assignee | ||
Updated•11 years ago
|
Attachment #8556068 -
Attachment is obsolete: true
| Assignee | ||
Comment 7•11 years ago
|
||
| Assignee | ||
Updated•11 years ago
|
Attachment #8556526 -
Attachment is obsolete: true
| Assignee | ||
Updated•11 years ago
|
Attachment #8556528 -
Flags: review?(docfaraday)
| Reporter | ||
Comment 8•11 years ago
|
||
Comment on attachment 8556528 [details] [diff] [review]
Fix for conduit receive then send creation order issue. Now insensitive to order."
Review of attachment 8556528 [details] [diff] [review]:
-----------------------------------------------------------------
This all looks good to me, although you probably want to run it by jesup too.
::: media/webrtc/signaling/src/media-conduit/VideoConduit.cpp
@@ +428,5 @@
> mPtrViEBase->LastError());
> return kMediaConduitChannelError;
> }
>
> + if (mPtrViENetwork->RegisterSendTransport(mChannel, *this) == -1)
It looks like the convention here is to have no space between "if" and "(", so let's just leave this be.
Attachment #8556528 -
Flags: review?(docfaraday) → review+
| Assignee | ||
Comment 9•11 years ago
|
||
Incorporate review feedback.
| Assignee | ||
Updated•11 years ago
|
Attachment #8556528 -
Attachment is obsolete: true
| Assignee | ||
Comment 10•11 years ago
|
||
Comment on attachment 8556624 [details] [diff] [review]
Fix for conduit receive then send creation order issue. Now insensitive to order
Carry forward bwc r+
Attachment #8556624 -
Flags: review+
| Assignee | ||
Comment 11•11 years ago
|
||
Comment 12•11 years ago
|
||
Status: ASSIGNED → RESOLVED
Closed: 11 years ago
Flags: in-testsuite+
Resolution: --- → FIXED
Target Milestone: --- → mozilla38
You need to log in
before you can comment on or make changes to this bug.
Description
•