Closed Bug 874351 Opened 11 years ago Closed 9 years ago

Support cameras that don't include I420 video format in their capabilities

Categories

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

defect

Tracking

()

RESOLVED FIXED

People

(Reporter: jesup, Assigned: jesup)

References

Details

(Whiteboard: [getUserMedia] [blocking-gum-])

For example, see the Logitech 5500 camera in bug 873854 - it supports "unknown", MJPEG and YUY2, but not I420.

I believe libyuv::ConvertToI420() will handle most of the work for everything except MJPEG or compressed H.xxx frames.  However, we will pretty strongly prefer I420 when available to avoid CPU-processing every pixel on every frame (though some conversions are fairly simple memcpy-ish operations).

This will make ChooseCapability() and DeliverFrame() a rather more complex (in MediaEngineWebRTCVideo.cpp)

libjingle has considerable support for selecting conversions; see webrtcvideoframe.cc, videocapturer.cc and webrtcvideocapturer.cc

As a stopgap we should check the type for I420, and make ChooseCapability failable (or filter out sources earlier if they don't support any I420 modes, perhaps with a console error).
Whiteboard: [getUserMedia] [blocking-gum-]
Blocks: 889624
Cc-ing :nl as a possible bug to work on (this might be a bit more advanced, but also incremental work can be done here)
Depends on: 963907
backlog: --- → webRTC+
Rank: 35
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.