New issue
Advanced search Search tips

Issue 750431 link

Starred by 1 user

Issue metadata

Status: Started
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 2
Type: Bug



Sign in to add a comment

Logitech C922 who is using MJPEG compression limit to max 10fps with current webrtc Camera capture !

Reported by dannymen...@gmail.com, Jul 29 2017

Issue description

UserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36

Example URL:

Steps to reproduce the problem:
see attached movie
1. i open the xsplit to show difference between using C922 MJPG compression vs YUY2

XSplit selecting YUY2 configuration 
------------------------------------
720p with YUV gives you max 10fps
1080 with YUV gives you max 5fps
recording link - 
http://www.maspick.co.il/records/c922_YUV2_XSplit.webm

XSplit selecting MJPG configuration 
-----------------------------------
720p with MJPG gives you max 60fps
1080 with MJPG gives you max 30fps
recording link - 
http://www.maspick.co.il/records/C922_MJPG_XSplit.webm

now let see that chromium camera native capture if c922 device gives you same XSplit YUV2 720p - 10fps experience 
instead of smooth MJPG 720p with - 30fps expereince
recording link - 
http://www.maspick.co.il/records/C922_chrome_nativedevice_capture.webm

BUT if i'm using the XSplit mirror drive ("XSplitBroadcaster") inside chrome i get smoother nearer 30fps experience (when chrome not using its internal chrome device capture implementation)
recording link - 
http://www.maspick.co.il/records/C922_chrome_XSPlitBroadcasterMirror_capture.webm

What is the expected behavior?
expected behavior is having 
camera capture 
60fps on 720p
30fps on 1080p
which are the logitech c922 pro device capabilities!

What went wrong?
my hunt is chromium current implementation doesn't recognize the 'MJPG' compression used on modern cameras such as logitech C922 as default by the camera encoder
so camera capture stuck on 10 fps limitation!!! when dealing with HD resultion (720p or 1080p)
so the motion looks very not smooth / slow and blur off course

Did this work before? N/A 

Is it a problem with Flash or HTML5? HTML5

Does this work in other browsers? Yes

Chrome version: 60.0.3112.78  Channel: stable
OS Version: 10.0
Flash Version: 

Contents of chrome://gpu: 
Graphics Feature Status
Canvas: Hardware accelerated
CheckerImaging: Disabled
Flash: Hardware accelerated
Flash Stage3D: Hardware accelerated
Flash Stage3D Baseline profile: Hardware accelerated
Compositing: Hardware accelerated
Multiple Raster Threads: Enabled
Native GpuMemoryBuffers: Software only. Hardware acceleration disabled
Rasterization: Hardware accelerated
Video Decode: Hardware accelerated
Video Encode: Hardware accelerated
WebGL: Hardware accelerated
WebGL2: Hardware accelerated
Driver Bug Workarounds
clear_uniforms_before_first_program_use
decode_encode_srgb_for_generatemipmap
disable_accelerated_vpx_decode
disable_discard_framebuffer
disable_framebuffer_cmaa
disable_larger_than_screen_overlays
exit_on_context_lost
force_cube_complete
msaa_is_slow
scalarize_vec_and_mat_constructor_args
texsubimage_faster_than_teximage
Problems Detected
Some drivers are unable to reset the D3D device in the GPU process sandbox
Applied Workarounds: exit_on_context_lost
TexSubImage is faster for full uploads on ANGLE
Applied Workarounds: texsubimage_faster_than_teximage
Clear uniforms before first program use on all platforms: 124764, 349137
Applied Workarounds: clear_uniforms_before_first_program_use
Always rewrite vec/mat constructors to be consistent: 398694
Applied Workarounds: scalarize_vec_and_mat_constructor_args
ANGLE crash on glReadPixels from incomplete cube map texture: 518889
Applied Workarounds: force_cube_complete
On Intel GPUs MSAA performance is not acceptable for GPU rasterization: 527565
Applied Workarounds: msaa_is_slow
Framebuffer discarding can hurt performance on non-tilers: 570897
Applied Workarounds: disable_discard_framebuffer
Limited enabling of Chromium GL_INTEL_framebuffer_CMAA: 535198
Applied Workarounds: disable_framebuffer_cmaa
Disable KHR_blend_equation_advanced until cc shaders are updated: 661715
Decode and Encode before generateMipmap for srgb format textures on Windows: 634519
Applied Workarounds: decode_encode_srgb_for_generatemipmap
Accelerated VPx decoding is hanging on some videos.: 654111
Applied Workarounds: disable_accelerated_vpx_decode
Overlay sizes bigger than screen aren't accelerated on some Intel drivers: 720059
Applied Workarounds: disable_larger_than_screen_overlays
Native GpuMemoryBuffers have been disabled, either via about:flags or command line.
Disabled Features: native_gpu_memory_buffers
Checker-imaging has been disabled via finch trial or the command line.
Disabled Features: checker_imaging
Version Information
Data exported	7/29/2017, 2:08:21 PM
Chrome version	Chrome/60.0.3112.78
Operating system	Windows NT 10.0.15063
Software rendering list version	13.8
Driver bug list version	10.93
ANGLE commit id	3e6a61fecba9
2D graphics backend	Skia/60 a20ae70af542208b06c21413f13c4c86269c0b84-
Command Line	"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --flag-switches-begin --flag-switches-end
Driver Information
Initialization time	123
In-process GPU	false
Passthrough Command Decoder	false
Supports overlays	false
Sandboxed	false
GPU0	VENDOR = 0x8086, DEVICE= 0x0416 *ACTIVE*
GPU1	VENDOR = 0x10de, DEVICE= 0x0fe4
Optimus	false
Optimus	false
AMD switchable	false
Desktop compositing	Aero Glass
Diagonal Monitor Size of \\.\DISPLAY1	15.5"
Diagonal Monitor Size of \\.\DISPLAY1	7.2"
Driver vendor	Intel Corporation
Driver version	10.18.15.4279
Driver date	8-24-2015
Pixel shader version	5.0
Vertex shader version	5.0
Max. MSAA samples	8
Machine model name	
Machine model version	
GL_VENDOR	Google Inc.
GL_RENDERER	ANGLE (Intel(R) HD Graphics 4600 Direct3D11 vs_5_0 ps_5_0)
GL_VERSION	OpenGL ES 3.0 (ANGLE 2.1.0.3e6a61fecba9)
GL_EXTENSIONS	GL_ANGLE_client_arrays GL_ANGLE_depth_texture GL_ANGLE_framebuffer_blit GL_ANGLE_framebuffer_multisample GL_ANGLE_instanced_arrays GL_ANGLE_lossy_etc_decode GL_ANGLE_pack_reverse_row_order GL_ANGLE_request_extension GL_ANGLE_robust_client_memory GL_ANGLE_robust_resource_initialization GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_ANGLE_texture_usage GL_ANGLE_translated_shader_source GL_CHROMIUM_bind_generates_resource GL_CHROMIUM_bind_uniform_location GL_CHROMIUM_color_buffer_float_rgb GL_CHROMIUM_color_buffer_float_rgba GL_CHROMIUM_copy_compressed_texture GL_CHROMIUM_copy_texture GL_CHROMIUM_sync_query GL_EXT_blend_minmax GL_EXT_color_buffer_float GL_EXT_color_buffer_half_float GL_EXT_debug_marker GL_EXT_discard_framebuffer GL_EXT_disjoint_timer_query GL_EXT_draw_buffers GL_EXT_frag_depth GL_EXT_map_buffer_range GL_EXT_occlusion_query_boolean GL_EXT_read_format_bgra GL_EXT_robustness GL_EXT_sRGB GL_EXT_shader_texture_lod GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_s3tc_srgb GL_EXT_texture_filter_anisotropic GL_EXT_texture_format_BGRA8888 GL_EXT_texture_norm16 GL_EXT_texture_rg GL_EXT_texture_storage GL_EXT_unpack_subimage GL_KHR_debug GL_NV_EGL_stream_consumer_external GL_NV_fence GL_NV_pack_subimage GL_NV_pixel_buffer_object GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_image_external_essl3 GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth32 GL_OES_element_index_uint GL_OES_get_program_binary GL_OES_mapbuffer GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_texture_float GL_OES_texture_float_linear GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_vertex_array_object
Disabled Extensions	GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent
Window system binding vendor	Google Inc. (adapter LUID: 000000000000c814)
Window system binding version	1.4 (ANGLE 2.1.0.3e6a61fecba9)
Window system binding extensions	EGL_EXT_create_context_robustness EGL_ANGLE_d3d_share_handle_client_buffer EGL_ANGLE_d3d_texture_client_buffer EGL_ANGLE_surface_d3d_texture_2d_share_handle EGL_ANGLE_query_surface_pointer EGL_ANGLE_window_fixed_size EGL_ANGLE_keyed_mutex EGL_ANGLE_surface_orientation EGL_ANGLE_direct_composition EGL_NV_post_sub_buffer EGL_KHR_create_context EGL_EXT_device_query EGL_KHR_image EGL_KHR_image_base EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image EGL_KHR_get_all_proc_addresses EGL_KHR_stream EGL_KHR_stream_consumer_gltexture EGL_NV_stream_consumer_gltexture_yuv EGL_ANGLE_flexible_surface_compatibility EGL_ANGLE_stream_producer_d3d_texture_nv12 EGL_ANGLE_create_context_webgl_compatibility EGL_CHROMIUM_create_context_bind_generates_resource EGL_CHROMIUM_sync_control EGL_EXT_pixel_format_float EGL_ANGLE_display_texture_share_group EGL_ANGLE_create_context_client_arrays EGL_ANGLE_create_context_robust_resource_initialization
Direct rendering	Yes
Reset notification strategy	0x8252
GPU process crash count	0
Compositor Information
Tile Update Mode	One-copy
Partial Raster	Enabled
GpuMemoryBuffers Status
ATC	Software only
ATCIA	Software only
DXT1	Software only
DXT5	Software only
ETC1	Software only
R_8	Software only
RG_88	Software only
BGR_565	Software only
RGBA_4444	Software only
RGBX_8888	Software only
RGBA_8888	Software only
BGRX_8888	Software only
BGRA_8888	Software only
RGBA_F16	Software only
YVU_420	Software only
YUV_420_BIPLANAR	Software only
UYVY_422	Software only
Diagnostics
... loading ...

WEBRTC is used with our application to show remote p2p stream experience not just the camera capture preview.
 
hi, any response?
Cc: mcasas@chromium.org chfremer@chromium.org
Components: -Internals>Media Internals>Media>Capture
Please let us know what supported formats are reported for your camera in the Video tab at chrome://media-internals/ (camera needs to have been initialized/used after Chrome startup for this to populate).

Comment 4 Deleted

Comment 5 Deleted

attached pdf
Media Internals.pdf
127 KB Download
In general, Chrome does support cameras sending Mjpeg.
I just tested with a Logitech C920, which reports the same supported formats as your C922. I can get smooth looking 30fps at 1920x1080 when testing on https://webrtc.github.io/samples/src/content/getusermedia/resolution/ 

Could you give the above link a try as well on your system and let me know what you find?

please try the "HD" button on this link (1280x720) in my case
it gives only 10fps, although like you have reported above
1920x1080 gives me 30fps

let me know if you also get same experience like myself.
thanks!

Tried with both a C920 and a C930e. Both work fine on my Windows laptop at both HD and Full HD. While testing, I noticed that for the C930e, at first, switching from Full HD to HD, the website ended up switching from the C930e to the laptop internal camera. I fixed that by going to the content settings in Chrome and selecting the C930e as default.
so the webrtcp resultion sample link reveals the same result like recorded before using my own application.

i prepare for you another recording, showing all modes in c922.
you will notice everything works smoothly BESIDE 'HD' mode (1280x720).

recording ->
http://www.maspick.co.il/records/c922HD10fps.webm

conclusion:

A. it is not hardware issue, the cameras works perfectly with native windows 10 apps such as XSplit (demonstrated in above recording) BUT using MJPG compression.

B. chrome 'HD' need instant fixing for c922 and perhaps other modern cameras as well. c920 you had been testing is an older less modern camera (2-3 years old model i believe).

C. remote p2p webrtc sessions
Certainly i would not want to force users to stream to remote users using "Full HD" for webrtc p2p video sessions camera capture as it takes too much of bandwidth with very few advantage over 'HD', most of users can not use such high bandwidth conditions especially if you add also screen share in parallel.

many many thanks
Danny  

Cc: -chfremer@chromium.org
Owner: chfremer@chromium.org
Difficult to say what is causing this. I will need to reproduce this locally and add some debug logs to see more of what is going on. I assume your theory is that Chrome for some reason opens the camera in YUV mode, leading to a low frame rate.

I have ordered a C922, which should arrive later this week. Will post an update as soon as I get my hands on it.
Labels: Needs-Triage-M60
thanks, looking forward to hear from you soon
Status: Assigned (was: Unconfirmed)
Status: Started (was: Assigned)
Got the camera this morning.
The reported issue reproduces on my laptop. 720p comes out at too low of a frame rate while 1080p works as expected.

I am going to dig into this and see what I can find.
Analysis of what is happening:

The list of supported formats as reported in chrome://media-internals shows 
720p @ 30Hz. This is what gets requested when opening the camera.
The code that handles the request now tries to find the best match against 
a more detailed list of formats supported by the camera. As opposed to the list 
that can be seen in media-internals, this list differentiates between pixel 
formats, in this case YUV2 and MJPEG. In this more detailed list, there are two
entries for 720p which are
1. 10fps via YUV2 and
2. 60fps via MJPEG. 
The code selects 10fps, because the absolute difference to the requested 30fps 
is samller than for 60fps.

Even though it is questionable that selecting 10fps is better than 60fps if 
30fps was requested, it seems the root of the problem is that the list of 
supported formats exposed to the Web client is inconsistent with the list that 
the device code uses to make a final decision.

In addition to that, it seems problematic that in the detailed list, 720p with 
MJPEG does not appear with lower fps than 60.

I will start working on fixing these things. 

Since this is not a regression, I don't think this will warrants a merge into 
M60 stable, and will probably also not meet the bar for a merge into M61 beta.
Let's see how the fix works out first, and then we can check with the release 
owners whether or not they feel it should be included in the respective 
milestones.

very interesting indeed.

i can reassure you that 720p (30/60 fps) mode is most wanted & preferred webrtc camera p2p desire. so this bug fixing / enhancement really is most wanted feature for webrtc users! it will truly upscale the webrtc experience for users who want to use chrome for their online video meetings.

many thanks
Danny
hi, any updates with this fix ?
Cc: guidou@chromium.org
I created a local patch that consolidates the logic that creates the lists of supported formats. With that, the frame rate for 720p for the C922 now gets listed as 60 fps, and when opening https://webrtc.github.io/samples/src/content/getusermedia/resolution/ and choosing HD, I do get 60 fps.

However, this is probably not what we really want. I believe what we do want is to have all supported frame rates for each resolution get listed as supported. Currently there is logic in place that filters out all frame rates except the highest one. This may have made sense in the past where it may have been a sound assumption that the user always wants the highest supported frame rate. But with cameras supporting 60fps, this is probably no longer the case.

I will continue by testing what happens if we list all supported frame rates, and if nothing breaks because of it, I will put the patch up for review.

guidou@, mcasas@: Are you aware of any reasons why we should not list all supported frame rates?
guidou@: I'm not aware of the historical reasons not to list all supported frame rates. I think all of them should be listed. The application can use constraints to control which mode is selected.
If no constraints are given, getUserMedia selects the mode with area closest to 640x480 and frame rate closest to 30Hz.
guidou@: While we are already discussing exposing more detailed lists of supported formats ... is there any Web exposed constraint for selecting which pixel format a capture device should deliver? Besides I420, there can be Y16 for depth cameras. But if a single capture device were to offer both I420 and Y16 at the same resolution and frame rate, with today's code, only one of the two would show up in the list of supported formats. If the JavaScript side can select the desired format, then we probably want to make sure we list both formats in such cases.
chfremer@: there isn't any constraint for selecting pixel format. I guess the way to go is to propose one. Can you file an issue in https://github.com/w3c/mediacapture-main/issues ?
Just not to run out of my bug context,

using 1080 mode (30 or even 60 fps) isn't possible for smooth webrtc p2p sessions, as it occupy too much bandwidth, comparing to a 720p capture. because of the only pick of 10fps we are forced to downgrade to lower resultion (VGA -640x480px) in order to gain the wanted 30/60fps experience hence users who invested on better equipped hardware such as c922 users can not actually take care of their advance cameras.
IMHO this doesn't make too much sense to hold to the existing support of formats, perhaps in the past it was the best choose, not any more.

many thanks


Code review is up: https://chromium-review.googlesource.com/c/611183

With the change, 720p @ 30fps is working on the C922. And other fps including the 60 fps should work when requested via the getUserMedia constraints. Here is what the list of supported formats on chrome://media-internals shows before/after the change:

C922 Pro Stream Webcam (046d:085c)

Before:
resolution  fps storage
160x90  30.00 CPU
160x120 30.00 CPU
176x144 30.00 CPU
320x180 30.00 CPU
320x240 30.00 CPU
352x288 30.00 CPU
432x240 30.00 CPU
640x360 30.00 CPU
640x480 30.00 CPU
800x448 30.00 CPU
864x480 30.00 CPU
800x600 30.00 CPU
1024x576  30.00 CPU
960x720 30.00 CPU
1280x720  30.00 CPU
1600x896  30.00 CPU
1920x1080 30.00 CPU
2304x1296 2.00  CPU
2304x1536 2.00  CPU

After:
resolution  fps storage
160x90  30.00 CPU
160x90  24.00 CPU
160x90  20.00 CPU
160x90  15.00 CPU
160x90  10.00 CPU
160x90  7.50  CPU
160x90  5.00  CPU
160x120 30.00 CPU
160x120 24.00 CPU
160x120 20.00 CPU
160x120 15.00 CPU
160x120 10.00 CPU
160x120 7.50  CPU
160x120 5.00  CPU
176x144 30.00 CPU
176x144 24.00 CPU
176x144 20.00 CPU
176x144 15.00 CPU
176x144 10.00 CPU
176x144 7.50  CPU
176x144 5.00  CPU
320x180 30.00 CPU
320x180 24.00 CPU
320x180 20.00 CPU
320x180 15.00 CPU
320x180 10.00 CPU
320x180 7.50  CPU
320x180 5.00  CPU
320x240 30.00 CPU
320x240 24.00 CPU
320x240 20.00 CPU
320x240 15.00 CPU
320x240 10.00 CPU
320x240 7.50  CPU
320x240 5.00  CPU
352x288 30.00 CPU
352x288 24.00 CPU
352x288 20.00 CPU
352x288 15.00 CPU
352x288 10.00 CPU
352x288 7.50  CPU
352x288 5.00  CPU
432x240 30.00 CPU
432x240 24.00 CPU
432x240 20.00 CPU
432x240 15.00 CPU
432x240 10.00 CPU
432x240 7.50  CPU
432x240 5.00  CPU
640x360 30.00 CPU
640x360 24.00 CPU
640x360 20.00 CPU
640x360 15.00 CPU
640x360 10.00 CPU
640x360 7.50  CPU
640x360 5.00  CPU
640x480 30.00 CPU
640x480 24.00 CPU
640x480 20.00 CPU
640x480 15.00 CPU
640x480 10.00 CPU
640x480 7.50  CPU
640x480 5.00  CPU
800x448 30.00 CPU
800x448 24.00 CPU
800x448 20.00 CPU
800x448 15.00 CPU
800x448 10.00 CPU
800x448 7.50  CPU
800x448 5.00  CPU
864x480 30.00 CPU
864x480 24.00 CPU
864x480 20.00 CPU
864x480 15.00 CPU
864x480 10.00 CPU
864x480 7.50  CPU
864x480 5.00  CPU
800x600 30.00 CPU
800x600 24.00 CPU
800x600 20.00 CPU
800x600 15.00 CPU
800x600 10.00 CPU
800x600 7.50  CPU
800x600 5.00  CPU
1024x576  30.00 CPU
1024x576  24.00 CPU
1024x576  20.00 CPU
1024x576  15.00 CPU
1024x576  10.00 CPU
1024x576  7.50  CPU
1024x576  5.00  CPU
960x720 30.00 CPU
960x720 24.00 CPU
960x720 20.00 CPU
960x720 15.00 CPU
960x720 10.00 CPU
960x720 7.50  CPU
960x720 5.00  CPU
1280x720  60.00 CPU
1280x720  30.00 CPU
1280x720  24.00 CPU
1280x720  20.00 CPU
1280x720  15.00 CPU
1280x720  10.00 CPU
1280x720  7.50  CPU
1280x720  5.00  CPU
1600x896  30.00 CPU
1600x896  24.00 CPU
1600x896  20.00 CPU
1600x896  15.00 CPU
1600x896  10.00 CPU
1600x896  7.50  CPU
1600x896  5.00  CPU
1920x1080 30.00 CPU
1920x1080 24.00 CPU
1920x1080 20.00 CPU
1920x1080 15.00 CPU
1920x1080 10.00 CPU
1920x1080 7.50  CPU
1920x1080 5.00  CPU
2304x1296 2.00  CPU
2304x1536 2.00  CPU
can you provide a download link for binary including this patch (win64 exe) for testing ?
Project Member

Comment 26 by bugdroid1@chromium.org, Aug 12 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8d5627c41dac13bffda1741cfc9b578c7fafd093

commit 8d5627c41dac13bffda1741cfc9b578c7fafd093
Author: Christian Fremerey <chfremer@chromium.org>
Date: Sat Aug 12 03:15:11 2017

[Video Capture, Windows] List all supported frame rates instead of just highest

Before this CL, there were two almost identical code paths for obtaining a list
of supported capture formats from a device on Windows. One path was used for
reporting a simplified list (only one frame rate per resolution) of supported
formats to JavaScript clients as well as device and format selection logic. The
other path was used for deciding at the device-level which actual format to use
based on an incoming request.

This CL consolidates the two code paths into one, so that the same list of
supported format is output in both cases.

Bug: 750431
Change-Id: I232f72c1c98fb22e0e2408eee889fb3f2c590590
Reviewed-on: https://chromium-review.googlesource.com/611183
Commit-Queue: Christian Fremerey <chfremer@chromium.org>
Reviewed-by: Guido Urdaneta <guidou@chromium.org>
Reviewed-by: Emircan Uysaler <emircan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#493950}
[modify] https://crrev.com/8d5627c41dac13bffda1741cfc9b578c7fafd093/media/capture/video/video_capture_system_impl.cc
[modify] https://crrev.com/8d5627c41dac13bffda1741cfc9b578c7fafd093/media/capture/video/win/video_capture_device_factory_win.cc
[modify] https://crrev.com/8d5627c41dac13bffda1741cfc9b578c7fafd093/media/capture/video/win/video_capture_device_win.cc
[modify] https://crrev.com/8d5627c41dac13bffda1741cfc9b578c7fafd093/media/capture/video/win/video_capture_device_win.h

The change has landed and can be tested in Canary builds starting with 62.0.3184.0. Please let me know if it works with your configuration.

Comment 28 Deleted

hi,

1. webrtc resolution sample works smoothly 720p on canary - great!
2. however unfortunately something broke with canary webrtc video P2P streaming camera/mic permissions with regard of the RTCPeerConnection demos who need access to the camera/mic for permissions are currently not longer working at all with our canary testings. 
so sadly i can not test it with real-time p2p webrtc sessions till feature owner will fix this serious permission issue on canary.

many thanks
if you not able not run those RTCPeerConnection demos perhaps we should somehow report this permission bug to the feature owner ?
Thanks for testing. I filed https://bugs.chromium.org/p/chromium/issues/detail?id=755248 for the issues with accessing the video.
danny@: Assuming the issue with the permissions is fixed in the latest Canaries, did you have a chance to verify the fix is working for your use case?
chfremer@:

we have tested webrtc getUserMedia() in latest canary Version 62.0.3188.0 
with following constrains

width: {
  ideal: 1280,
  max: 1920
},
height: {
  ideal: 720,
  max: 1080
},
frameRate: {
  ideal: 60,
  max: 60
}

and found that webrtc doesn't respect those conditions of 60 fps despite the fact that camera (922) DOES offcourse 60 fps.

and also we have tried to use "exact" instead of "ideal" and we got the same result - which is very strange cause to our understanding, it should result with failed media stream if it can not provide exact same specified fps, but for some reason it returns the media with same 30 fps.

interestingly with

frameRate: {
  min: 60,
  max: 60
}

we manage to simulate the "exact" behavior of 60 fps and get required media stream.
Labels: Needs-Feedback
dannymendelmn@: Can you provide some examples with the exact constraint strings you have given to getUserMedia and the result of invoking getSettings() on the video track contained in the MediaStream returned by getUserMedia?

dannymedelmn@: Also, please provide the output of the "Video Capture" section of chrome://media-internals so that we can manually compare constraints against the video modes reported to Chrome.

I have tried with a C920 and C930e, but neither of them reports 1280x720@60Hz (or any mode with 60Hz) as a supported mode on Linux, so I cannot reproduce dannymedlmn@'s problem.
chfremer@ on
Comment 15 you wrote you got the c922 and test it. do you still need my output?
if so attached 
Media Internals.pdf
165 KB Download
dannymendelmn@: thanks for the output.
Can you try with https://jsfiddle.net/guidou/q4mLuhbt/ and see what output do you get?
Feel free to update the script to replace exact with min, ideal or any other constraint strings that provide unexpected results.
test results in attached ideal.png and exact.png
i would expect with frameRate: {ideal: 60,max: 60} to have 60fps stream and not 30fps as resulted in the testing (as camera support 60fps as we know)


ideal.png
91.0 KB View Download
exact.png
101 KB View Download
dannymedelmn@:

You are right that ideal:60 should give you 60fps if it's available.
I don't have a C922 available for testing, but will try to find out what the problem is.
If you can, please use the jsfiddle in #37 to try to report more unexpected results.
guidou@:

my testings reveals that using ideal:60 brings actual 24fps on c922 on following resolutions:
1280x720x24fps
640x360x24fps
320x180x24fps
(webrtc-internals: googFrameRateInput = 24)

instead of expected c922 following specs:
1280x720X60fps
640x360x30fps
320x180x30fps






guidou@: Any updates on your investigation?
Since I have a C922 available, I can take another look at this.
No updates, due to lack of hardware.
Please take another look with your C922.
I tested the constraints algorithm using fake device entries based on the modes provided by dannymendelmn@gmail.com and it returned the expected values, so something else might be going on.

Comment 44 Deleted

1. chfremer@: can you verify that you as c922 owner like me gets same result?

using ideal:60 brings actual 24fps on c922 on following resolutions:
1280x720x24fps
640x360x24fps
320x180x24fps
(webrtc-internals: googFrameRateInput = 24)

instead of expected c922 following specs:
1280x720X60fps
640x360x30fps
320x180x30fps

2. i have a strong belief that this bug may be common to all latest/modern logitech cameras such as 
4K PRO WEBCAM, 
Pro Webcam,
BRIO,
C930E WEBCAM,
C925e WEBCAM

and might be also interesting to compare with 2years old webcam such as
HD Pro Webcam C920

so perhaps it will be nice to test more devices, as i suspect the bug effect much wider circles of usage not just the c922 owners.

thanks
re #44: I am on it. What do you use to get webrtc-internals to populate while being able to pass custom constraints to getUserMedia?


use
1. go with latest canary to https://webrtc.github.io/samples/src/content/peerconnection/constraints/
2. provide one of the following width/height for both min/max values
1280x720 or 640x360 or 320x180
3. use min/max framerate of 60fps
4. click "get media" + "connect"
5. open another chrome tab with chrome://webrtc-internals/
6. locate the capture streaming active tab (with highest number)
7. locate "ssrc_xxxxxxx_recv (ssrc)" (xxx will be dynamic identifier)
8. locate the googFrameRateDecoded / googFrameRateOutput / googFrameRateReceived	
in my c922 case it is ~23/24fps instead of expected 60fps

attached pics


test
chrome://webrtc-internals/




2017-09-16 01_11_27-.png
85.4 KB View Download
Thanks, that is a good way of testing.

I tried with my C922 on the latest canary and I get 30fps when requesting 60fps.
I confirmed that the frame_rate [1] that is requested from the DirectShow code is 60. It looks like all of the Chromium-side code "believes" that 60fps is being used, but for some reason DirectShow only delivers 30fps back to it.

Interesting that you are getting 24fps with the same settings. Not sure what the difference is here. 

Sign in to add a comment