Hello guys,
I have several issues to discuss here. First of all, let me specify that our current project works closely with Chromium Embedded Framework (CEF) and Intel RealSense Integrated 3D Camera. While we were trying to integrate the support of this device into Chromium we figured out that:
1) When camera device provides video in ARGB format (like Intel RealSense Camera), Chromium enumerator shows this cam (as ARGB is in the allowed list), but at the same time sink_input_pin_win doesn't want to connect as it doesn't support ARGB. I fixed this issue. Please, see the patch attached.
2) In DirectShow all RGB formats (including ARGB) are flipped. What is the reason not to flip ARGB data in video_capture_device_client.cc in VideoCaptureDeviceClient::OnIncomingCapturedData() method? Flip parameter is set to true for RGB24 and RGB32 there but not for ARGB. So, if we allow captured data in ARGB format as described in #1, we will see the result picture upside down, that's why I also set "flip = true" in "case media::PIXEL_FORMAT_ARGB" in the method mentioned above. The result picture after that looks ok but is it correct fix for all the cases?
3) As we saw in the Chromium code, all captured formats are converted to I420. Why not to convert all RGB-based formats to any single RGB format and all YUV-based formats to any single YUV format (I420, for instance)? RGB to YUV conversion is not much effective on the CPU.
4) One of our tasks with Intel RealSense Camera is to provide video with alpha-channel from camera to the web view in such a way which allows us to display video with real transparency. I managed to pass captured video in the format VideoFrame::ARGB, but all I can see now is just simple video without any transparency. Any advises on how we can do that? I saw that Chromium can display WebM video with transparency (
http://simpl.info/videoalpha/). Is it possible to do something like that for the captured video?