Closed
Bug 1067442
Opened 11 years ago
Closed 11 years ago
H.264 OMX video isn't encoded in Webrtc on b2g 2.2
Categories
(Core :: WebRTC: Audio/Video, defect)
Tracking
()
RESOLVED
FIXED
mozilla35
People
(Reporter: opatinobugzilla, Assigned: jhlin)
References
Details
Attachments
(1 file)
|
2.81 KB,
patch
|
jesup
:
review+
|
Details | Diff | Splinter Review |
I'm working with two mobiles. If both devices have Master branch installed, when running loop I can't see any video on screen, although I can hear audio.
I don't know yet if video is not being tx, or decoding is failing, or maybe both.
| Reporter | ||
Comment 1•11 years ago
|
||
Randell, do you know if there has been any change that could affect video decoding or tx in Master branch?
Thanks
Flags: needinfo?(rjesup)
Comment 2•11 years ago
|
||
There is a problem that was causing loss of chroma (color info); depending on how it manifests itself this could cause black video - though I can't say that is the cause here.
See bug 1066410, which landed on inbound today, and likely will be in nightly tomorrow.
Flags: needinfo?(rjesup)
| Reporter | ||
Comment 3•11 years ago
|
||
I tested flame with last version against fire-e with v2.0. No video on any side. I think this bug is a duplicate of https://bugzilla.mozilla.org/show_bug.cgi?id=1068394
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → DUPLICATE
Comment 4•11 years ago
|
||
This turned out to be a different bug than bug 10638394 - that is a decoder bug, this is an issue with img->IsValid() failing for PlanarYCrCb buffers which were created with SetDataNoCopy(data)
This is a regression from the landing of bug 997593
Blocks: 997593
Status: RESOLVED → REOPENED
Resolution: DUPLICATE → ---
Summary: No video is displayed in firefox hello when running Master branch (v2.2) → H.264 OMX video isn't encoded in Webrtc on b2g 2.2
| Assignee | ||
Comment 6•11 years ago
|
||
My response about InValid() failing in bug 1068394 comment 30 is in fact not correct! Sorry about that.
Turns out that although SetDataNoCopy() doesn't set mBufferSize, calling AllocateAndGetNewBuffer() at [1] does it.
Anyway, I built latest m-c and did some tests. On my flames those camera images were rejected at [2] and never were sent to encoder. Randell, do you know about this?
[1] http://dxr.mozilla.org/mozilla-central/source/content/media/webrtc/MediaEngineWebRTCVideo.cpp#1015
[2] http://dxr.mozilla.org/mozilla-central/source/media/webrtc/signaling/src/mediapipeline/MediaPipeline.cpp#982
Flags: needinfo?(jolin) → needinfo?(rjesup)
Updated•11 years ago
|
Severity: major → normal
blocking-b2g: --- → 2.2?
| Assignee | ||
Comment 7•11 years ago
|
||
(In reply to John Lin[:jolin][:jhlin] from comment #6)
> My response about InValid() failing in bug 1068394 comment 30 is in fact not
> correct! Sorry about that.
> Turns out that although SetDataNoCopy() doesn't set mBufferSize, calling
> AllocateAndGetNewBuffer() at [1] does it.
Oops! Just found that [1] is where it fails. I'll upload the patch later.
[1] http://dxr.mozilla.org/mozilla-central/source/media/webrtc/signaling/src/media-conduit/WebrtcOMXH264VideoCodec.cpp#940
| Assignee | ||
Comment 8•11 years ago
|
||
Attachment #8494421 -
Flags: review?(rjesup)
Comment 9•11 years ago
|
||
Comment on attachment 8494421 [details] [diff] [review]
Validate input image using Y channel pointer in mData.
Review of attachment 8494421 [details] [diff] [review]:
-----------------------------------------------------------------
::: content/media/omx/OMXCodecWrapper.cpp
@@ +396,5 @@
> NS_ENSURE_TRUE(aWidth == size.width, NS_ERROR_INVALID_ARG);
> NS_ENSURE_TRUE(aHeight == size.height, NS_ERROR_INVALID_ARG);
> if (format == ImageFormat::PLANAR_YCBCR) {
> + const PlanarYCbCrData* yuv = static_cast<PlanarYCbCrImage*>(img)->GetData();
> + NS_ENSURE_TRUE(yuv->mYChannel, NS_ERROR_INVALID_ARG);
Add comment "// test that works with SetDataNoCopy() on empty image" or equivalent
::: media/webrtc/signaling/src/media-conduit/WebrtcOMXH264VideoCodec.cpp
@@ +936,5 @@
> (yuvData.mYSize.height + 1) / 2);
> yuvData.mPicSize = yuvData.mYSize;
> yuvData.mStereoMode = StereoMode::MONO;
> layers::PlanarYCbCrImage img(nullptr);
> + // SetDataNoCopy() w/o AllocateAndGetNewBuffer() only works with OMXVideoEncoder.
There are other users of SetDataNoCopy() without AllocateAndGetNewBuffer() (GStreamerReader, MediaData). Probably say OMXVideoEncoder doesn't need AllocateAndGetNewBuffer() when SetDataNoCopy is used.
Attachment #8494421 -
Flags: review?(rjesup) → review+
Comment 10•11 years ago
|
||
Flags: needinfo?(rjesup)
Target Milestone: --- → mozilla35
Comment 11•11 years ago
|
||
Assignee: nobody → jolin
Status: REOPENED → RESOLVED
Closed: 11 years ago → 11 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•