Comments (40)
Is this related to missing hardware video decoding?
not implemented: PPB_VideoDecoder(Dev);0.16
so far, the usual workarounds/config edits for Flash for enabling VDPAU don't seem to work here.
from freshplayerplugin.
Is this related to missing hardware video decoding?
Yes, it is. When the issue was opened there were no such messages in a log. They appeared after only after enable_hw_video_decode=1
was passed as "command line arguments" to Flash player. Now when it asks for appropriate interface, there is high probability it will work once those interfaces get implemented (both PPB_VideoDecoder(Dev)
and PPP_VideoDecoder(Dev)
).
the usual workarounds/config edits for Flash for enabling VDPAU don't seem to work here.
Pepper Flash uses solely PPAPI for every interaction with browser and/or OS. Since Chromium runs PPAPI plug-ins in a sandbox, there is no way to directly use system level API, such as VDPAU.
from freshplayerplugin.
Ubuntu 14.04 64 bits
NVIDIA proprietary drivers installed, downloaded from NVIDIA website
PepperFlash version 16.0.0.305
My /etc/freshwrapper.conf
:
# "Command-line" arguments for Flash
flash_command_line = "enable_hw_video_decode=1,enable_stagevideo_auto=1"
# enable 3d and stage 3d
enable_3d = 1
# when set to 1, limits output to warnings and errors only
quiet = 1
# Enables DNS query case randomization to partially protect against DNS
# poisoning attacks. It was reported that some Mikrotik routers do not
# support this trick. Set parameter to 0 if you have an affected model
randomize_dns_case = 1
Where can I find a guide of these parameters? Why do I have to enable the 3D to enable the hardware acceleration?
But when I play any video this is showed in stats:
Why no hardware acceleration is enabled?
from freshplayerplugin.
@simonbcn, I don't have an access to a machine with nVidia hardware at the moment, and only can guess.
Where can I find a guide of these parameters?
freshwrapper.conf.example
is the only guide available (aside source code). flash_command_line
and enable_3d
are the values passed to PepperFlash when it asks for them.
Why do I have to enable the 3D to enable the hardware acceleration?
Because hardware acceleration is the same as OpenGL|ES 2 support. 3d
for short. PepperFlash uses OpenGL|ES 2 to scale video. Video decoding interface is also depends on OpenGL|ES 2. But accelerated video decoding is not implemented.
Why no hardware acceleration is enabled?
GLES 2 should be available and it's probably not, on your machine. I currently use GLX to acquire context, but rather than GL, I ask for GLES 2, which is exposed by driver as GLX_ARB_create_context
, GLX_ARB_create_context_profile
, and GLX_EXT_create_context_es2_profile
extensions. Ensure they are amongst server glx extensions in glxinfo
output.
from freshplayerplugin.
That isn't the problem:
$ glxinfo
name of display: :0
display: :0 screen: 0
direct rendering: Yes
server glx vendor string: NVIDIA Corporation
server glx version string: 1.4
server glx extensions:
GLX_ARB_create_context, GLX_ARB_create_context_profile,
GLX_ARB_create_context_robustness, GLX_ARB_fbconfig_float,
GLX_ARB_multisample, GLX_EXT_buffer_age,
GLX_EXT_create_context_es2_profile, GLX_EXT_create_context_es_profile,
GLX_EXT_framebuffer_sRGB, GLX_EXT_stereo_tree, GLX_EXT_swap_control,
GLX_EXT_swap_control_tear, GLX_EXT_texture_from_pixmap,
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_NV_delay_before_swap,
GLX_NV_float_buffer, GLX_NV_multisample_coverage, GLX_SGIX_fbconfig,
GLX_SGIX_pbuffer, GLX_SGI_swap_control, GLX_SGI_video_sync
client glx vendor string: NVIDIA Corporation
client glx version string: 1.4
client glx extensions:
GLX_ARB_create_context, GLX_ARB_create_context_profile,
GLX_ARB_create_context_robustness, GLX_ARB_fbconfig_float,
GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_buffer_age,
GLX_EXT_create_context_es2_profile, GLX_EXT_create_context_es_profile,
GLX_EXT_fbconfig_packed_float, GLX_EXT_framebuffer_sRGB,
GLX_EXT_import_context, GLX_EXT_stereo_tree, GLX_EXT_swap_control,
GLX_EXT_swap_control_tear, GLX_EXT_texture_from_pixmap,
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_NV_copy_image,
GLX_NV_delay_before_swap, GLX_NV_float_buffer,
GLX_NV_multisample_coverage, GLX_NV_present_video, GLX_NV_swap_group,
GLX_NV_video_capture, GLX_NV_video_out, GLX_SGIX_fbconfig,
GLX_SGIX_pbuffer, GLX_SGI_swap_control, GLX_SGI_video_sync
GLX version: 1.4
GLX extensions:
GLX_ARB_create_context, GLX_ARB_create_context_profile,
GLX_ARB_create_context_robustness, GLX_ARB_fbconfig_float,
GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_buffer_age,
GLX_EXT_create_context_es2_profile, GLX_EXT_create_context_es_profile,
GLX_EXT_framebuffer_sRGB, GLX_EXT_stereo_tree, GLX_EXT_swap_control,
GLX_EXT_swap_control_tear, GLX_EXT_texture_from_pixmap,
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_NV_delay_before_swap,
GLX_NV_float_buffer, GLX_NV_multisample_coverage, GLX_SGIX_fbconfig,
GLX_SGIX_pbuffer, GLX_SGI_swap_control, GLX_SGI_video_sync
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GT 220/PCIe/SSE2
OpenGL core profile version string: 3.3.0 NVIDIA 340.76
OpenGL core profile shading language version string: 3.30 NVIDIA via Cg compiler
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
GL_ARB_ES2_compatibility, GL_ARB_ES3_compatibility,
GL_ARB_arrays_of_arrays, GL_ARB_base_instance, GL_ARB_blend_func_extended,
GL_ARB_clear_buffer_object, GL_ARB_color_buffer_float,
GL_ARB_compressed_texture_pixel_storage, GL_ARB_conservative_depth,
GL_ARB_copy_buffer, GL_ARB_copy_image, GL_ARB_debug_output,
GL_ARB_depth_buffer_float, GL_ARB_depth_clamp, GL_ARB_depth_texture,
GL_ARB_draw_buffers, GL_ARB_draw_buffers_blend,
GL_ARB_draw_elements_base_vertex, GL_ARB_draw_instanced,
GL_ARB_enhanced_layouts, GL_ARB_explicit_attrib_location,
GL_ARB_explicit_uniform_location, GL_ARB_fragment_coord_conventions,
GL_ARB_fragment_layer_viewport, GL_ARB_fragment_program,
GL_ARB_fragment_program_shadow, GL_ARB_fragment_shader,
GL_ARB_framebuffer_no_attachments, GL_ARB_framebuffer_object,
GL_ARB_framebuffer_sRGB, GL_ARB_geometry_shader4,
GL_ARB_get_program_binary, GL_ARB_half_float_pixel,
GL_ARB_half_float_vertex, GL_ARB_imaging, GL_ARB_instanced_arrays,
GL_ARB_internalformat_query, GL_ARB_internalformat_query2,
GL_ARB_invalidate_subdata, GL_ARB_map_buffer_alignment,
GL_ARB_map_buffer_range, GL_ARB_multi_bind, GL_ARB_multisample,
GL_ARB_multitexture, GL_ARB_occlusion_query, GL_ARB_occlusion_query2,
GL_ARB_pixel_buffer_object, GL_ARB_point_parameters, GL_ARB_point_sprite,
GL_ARB_program_interface_query, GL_ARB_provoking_vertex,
GL_ARB_robust_buffer_access_behavior, GL_ARB_robustness,
GL_ARB_sample_shading, GL_ARB_sampler_objects, GL_ARB_seamless_cube_map,
GL_ARB_separate_shader_objects, GL_ARB_shader_bit_encoding,
GL_ARB_shader_objects, GL_ARB_shader_texture_lod,
GL_ARB_shading_language_100, GL_ARB_shading_language_420pack,
GL_ARB_shading_language_include, GL_ARB_shading_language_packing,
GL_ARB_shadow, GL_ARB_stencil_texturing, GL_ARB_sync,
GL_ARB_texture_border_clamp, GL_ARB_texture_buffer_object,
GL_ARB_texture_buffer_range, GL_ARB_texture_compression,
GL_ARB_texture_compression_rgtc, GL_ARB_texture_cube_map,
GL_ARB_texture_cube_map_array, GL_ARB_texture_env_add,
GL_ARB_texture_env_combine, GL_ARB_texture_env_crossbar,
GL_ARB_texture_env_dot3, GL_ARB_texture_float, GL_ARB_texture_gather,
GL_ARB_texture_mirror_clamp_to_edge, GL_ARB_texture_mirrored_repeat,
GL_ARB_texture_multisample, GL_ARB_texture_non_power_of_two,
GL_ARB_texture_query_levels, GL_ARB_texture_query_lod,
GL_ARB_texture_rectangle, GL_ARB_texture_rg, GL_ARB_texture_rgb10_a2ui,
GL_ARB_texture_stencil8, GL_ARB_texture_storage,
GL_ARB_texture_storage_multisample, GL_ARB_texture_swizzle,
GL_ARB_texture_view, GL_ARB_timer_query, GL_ARB_transform_feedback2,
GL_ARB_transform_feedback_instanced, GL_ARB_transpose_matrix,
GL_ARB_uniform_buffer_object, GL_ARB_vertex_array_bgra,
GL_ARB_vertex_array_object, GL_ARB_vertex_attrib_binding,
GL_ARB_vertex_buffer_object, GL_ARB_vertex_program, GL_ARB_vertex_shader,
GL_ARB_vertex_type_10f_11f_11f_rev, GL_ARB_vertex_type_2_10_10_10_rev,
GL_ARB_viewport_array, GL_ARB_window_pos, GL_ATI_draw_buffers,
GL_ATI_texture_float, GL_ATI_texture_mirror_once,
GL_EXTX_framebuffer_mixed_formats, GL_EXT_Cg_shader, GL_EXT_abgr,
GL_EXT_bgra, GL_EXT_bindable_uniform, GL_EXT_blend_color,
GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate,
GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_compiled_vertex_array,
GL_EXT_depth_bounds_test, GL_EXT_direct_state_access,
GL_EXT_draw_buffers2, GL_EXT_draw_instanced, GL_EXT_draw_range_elements,
GL_EXT_fog_coord, GL_EXT_framebuffer_blit, GL_EXT_framebuffer_multisample,
GL_EXT_framebuffer_multisample_blit_scaled, GL_EXT_framebuffer_object,
GL_EXT_framebuffer_sRGB, GL_EXT_geometry_shader4,
GL_EXT_gpu_program_parameters, GL_EXT_gpu_shader4,
GL_EXT_import_sync_object, GL_EXT_multi_draw_arrays,
GL_EXT_packed_depth_stencil, GL_EXT_packed_float, GL_EXT_packed_pixels,
GL_EXT_pixel_buffer_object, GL_EXT_point_parameters,
GL_EXT_provoking_vertex, GL_EXT_rescale_normal, GL_EXT_secondary_color,
GL_EXT_separate_shader_objects, GL_EXT_separate_specular_color,
GL_EXT_shader_integer_mix, GL_EXT_shadow_funcs, GL_EXT_stencil_two_side,
GL_EXT_stencil_wrap, GL_EXT_texture3D, GL_EXT_texture_array,
GL_EXT_texture_buffer_object, GL_EXT_texture_compression_dxt1,
GL_EXT_texture_compression_latc, GL_EXT_texture_compression_rgtc,
GL_EXT_texture_compression_s3tc, GL_EXT_texture_cube_map,
GL_EXT_texture_edge_clamp, GL_EXT_texture_env_add,
GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3,
GL_EXT_texture_filter_anisotropic, GL_EXT_texture_integer,
GL_EXT_texture_lod, GL_EXT_texture_lod_bias, GL_EXT_texture_mirror_clamp,
GL_EXT_texture_object, GL_EXT_texture_sRGB, GL_EXT_texture_sRGB_decode,
GL_EXT_texture_shared_exponent, GL_EXT_texture_storage,
GL_EXT_texture_swizzle, GL_EXT_timer_query, GL_EXT_transform_feedback2,
GL_EXT_vertex_array, GL_EXT_vertex_array_bgra, GL_EXT_x11_sync_object,
GL_IBM_rasterpos_clip, GL_IBM_texture_mirrored_repeat, GL_KHR_debug,
GL_KTX_buffer_region, GL_NVX_conditional_render, GL_NVX_gpu_memory_info,
GL_NV_ES1_1_compatibility, GL_NV_blend_square, GL_NV_conditional_render,
GL_NV_copy_depth_to_color, GL_NV_copy_image, GL_NV_depth_buffer_float,
GL_NV_depth_clamp, GL_NV_explicit_multisample, GL_NV_fence,
GL_NV_float_buffer, GL_NV_fog_distance, GL_NV_fragment_program,
GL_NV_fragment_program2, GL_NV_fragment_program_option,
GL_NV_framebuffer_multisample_coverage, GL_NV_geometry_shader4,
GL_NV_gpu_program4, GL_NV_gpu_program4_1, GL_NV_half_float,
GL_NV_light_max_exponent, GL_NV_multisample_coverage,
GL_NV_multisample_filter_hint, GL_NV_occlusion_query,
GL_NV_packed_depth_stencil, GL_NV_parameter_buffer_object,
GL_NV_parameter_buffer_object2, GL_NV_path_rendering,
GL_NV_pixel_data_range, GL_NV_point_sprite, GL_NV_primitive_restart,
GL_NV_register_combiners, GL_NV_register_combiners2,
GL_NV_shader_buffer_load, GL_NV_texgen_reflection, GL_NV_texture_barrier,
GL_NV_texture_compression_vtc, GL_NV_texture_env_combine4,
GL_NV_texture_expand_normal, GL_NV_texture_multisample,
GL_NV_texture_rectangle, GL_NV_texture_shader, GL_NV_texture_shader2,
GL_NV_texture_shader3, GL_NV_transform_feedback,
GL_NV_transform_feedback2, GL_NV_vdpau_interop, GL_NV_vertex_array_range,
GL_NV_vertex_array_range2, GL_NV_vertex_buffer_unified_memory,
GL_NV_vertex_program, GL_NV_vertex_program1_1, GL_NV_vertex_program2,
GL_NV_vertex_program2_option, GL_NV_vertex_program3, GL_S3_s3tc,
GL_SGIS_generate_mipmap, GL_SGIS_texture_lod, GL_SGIX_depth_texture,
GL_SGIX_shadow, GL_SUN_slice_accum
OpenGL version string: 3.3.0 NVIDIA 340.76
OpenGL shading language version string: 3.30 NVIDIA via Cg compiler
OpenGL context flags: (none)
OpenGL profile mask: (none)
OpenGL extensions:
GL_ARB_ES2_compatibility, GL_ARB_ES3_compatibility,
GL_ARB_arrays_of_arrays, GL_ARB_base_instance, GL_ARB_blend_func_extended,
GL_ARB_clear_buffer_object, GL_ARB_color_buffer_float,
GL_ARB_compatibility, GL_ARB_compressed_texture_pixel_storage,
GL_ARB_conservative_depth, GL_ARB_copy_buffer, GL_ARB_copy_image,
GL_ARB_debug_output, GL_ARB_depth_buffer_float, GL_ARB_depth_clamp,
GL_ARB_depth_texture, GL_ARB_draw_buffers, GL_ARB_draw_buffers_blend,
GL_ARB_draw_elements_base_vertex, GL_ARB_draw_instanced,
GL_ARB_enhanced_layouts, GL_ARB_explicit_attrib_location,
GL_ARB_explicit_uniform_location, GL_ARB_fragment_coord_conventions,
GL_ARB_fragment_layer_viewport, GL_ARB_fragment_program,
GL_ARB_fragment_program_shadow, GL_ARB_fragment_shader,
GL_ARB_framebuffer_no_attachments, GL_ARB_framebuffer_object,
GL_ARB_framebuffer_sRGB, GL_ARB_geometry_shader4,
GL_ARB_get_program_binary, GL_ARB_half_float_pixel,
GL_ARB_half_float_vertex, GL_ARB_imaging, GL_ARB_instanced_arrays,
GL_ARB_internalformat_query, GL_ARB_internalformat_query2,
GL_ARB_invalidate_subdata, GL_ARB_map_buffer_alignment,
GL_ARB_map_buffer_range, GL_ARB_multi_bind, GL_ARB_multisample,
GL_ARB_multitexture, GL_ARB_occlusion_query, GL_ARB_occlusion_query2,
GL_ARB_pixel_buffer_object, GL_ARB_point_parameters, GL_ARB_point_sprite,
GL_ARB_program_interface_query, GL_ARB_provoking_vertex,
GL_ARB_robust_buffer_access_behavior, GL_ARB_robustness,
GL_ARB_sample_shading, GL_ARB_sampler_objects, GL_ARB_seamless_cube_map,
GL_ARB_separate_shader_objects, GL_ARB_shader_bit_encoding,
GL_ARB_shader_objects, GL_ARB_shader_texture_lod,
GL_ARB_shading_language_100, GL_ARB_shading_language_420pack,
GL_ARB_shading_language_include, GL_ARB_shading_language_packing,
GL_ARB_shadow, GL_ARB_stencil_texturing, GL_ARB_sync,
GL_ARB_texture_border_clamp, GL_ARB_texture_buffer_object,
GL_ARB_texture_buffer_range, GL_ARB_texture_compression,
GL_ARB_texture_compression_rgtc, GL_ARB_texture_cube_map,
GL_ARB_texture_cube_map_array, GL_ARB_texture_env_add,
GL_ARB_texture_env_combine, GL_ARB_texture_env_crossbar,
GL_ARB_texture_env_dot3, GL_ARB_texture_float, GL_ARB_texture_gather,
GL_ARB_texture_mirror_clamp_to_edge, GL_ARB_texture_mirrored_repeat,
GL_ARB_texture_multisample, GL_ARB_texture_non_power_of_two,
GL_ARB_texture_query_levels, GL_ARB_texture_query_lod,
GL_ARB_texture_rectangle, GL_ARB_texture_rg, GL_ARB_texture_rgb10_a2ui,
GL_ARB_texture_stencil8, GL_ARB_texture_storage,
GL_ARB_texture_storage_multisample, GL_ARB_texture_swizzle,
GL_ARB_texture_view, GL_ARB_timer_query, GL_ARB_transform_feedback2,
GL_ARB_transform_feedback_instanced, GL_ARB_transpose_matrix,
GL_ARB_uniform_buffer_object, GL_ARB_vertex_array_bgra,
GL_ARB_vertex_array_object, GL_ARB_vertex_attrib_binding,
GL_ARB_vertex_buffer_object, GL_ARB_vertex_program, GL_ARB_vertex_shader,
GL_ARB_vertex_type_10f_11f_11f_rev, GL_ARB_vertex_type_2_10_10_10_rev,
GL_ARB_viewport_array, GL_ARB_window_pos, GL_ATI_draw_buffers,
GL_ATI_texture_float, GL_ATI_texture_mirror_once,
GL_EXTX_framebuffer_mixed_formats, GL_EXT_Cg_shader, GL_EXT_abgr,
GL_EXT_bgra, GL_EXT_bindable_uniform, GL_EXT_blend_color,
GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate,
GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_compiled_vertex_array,
GL_EXT_depth_bounds_test, GL_EXT_direct_state_access,
GL_EXT_draw_buffers2, GL_EXT_draw_instanced, GL_EXT_draw_range_elements,
GL_EXT_fog_coord, GL_EXT_framebuffer_blit, GL_EXT_framebuffer_multisample,
GL_EXT_framebuffer_multisample_blit_scaled, GL_EXT_framebuffer_object,
GL_EXT_framebuffer_sRGB, GL_EXT_geometry_shader4,
GL_EXT_gpu_program_parameters, GL_EXT_gpu_shader4,
GL_EXT_import_sync_object, GL_EXT_multi_draw_arrays,
GL_EXT_packed_depth_stencil, GL_EXT_packed_float, GL_EXT_packed_pixels,
GL_EXT_pixel_buffer_object, GL_EXT_point_parameters,
GL_EXT_provoking_vertex, GL_EXT_rescale_normal, GL_EXT_secondary_color,
GL_EXT_separate_shader_objects, GL_EXT_separate_specular_color,
GL_EXT_shader_integer_mix, GL_EXT_shadow_funcs, GL_EXT_stencil_two_side,
GL_EXT_stencil_wrap, GL_EXT_texture3D, GL_EXT_texture_array,
GL_EXT_texture_buffer_object, GL_EXT_texture_compression_dxt1,
GL_EXT_texture_compression_latc, GL_EXT_texture_compression_rgtc,
GL_EXT_texture_compression_s3tc, GL_EXT_texture_cube_map,
GL_EXT_texture_edge_clamp, GL_EXT_texture_env_add,
GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3,
GL_EXT_texture_filter_anisotropic, GL_EXT_texture_integer,
GL_EXT_texture_lod, GL_EXT_texture_lod_bias, GL_EXT_texture_mirror_clamp,
GL_EXT_texture_object, GL_EXT_texture_sRGB, GL_EXT_texture_sRGB_decode,
GL_EXT_texture_shared_exponent, GL_EXT_texture_storage,
GL_EXT_texture_swizzle, GL_EXT_timer_query, GL_EXT_transform_feedback2,
GL_EXT_vertex_array, GL_EXT_vertex_array_bgra, GL_EXT_x11_sync_object,
GL_IBM_rasterpos_clip, GL_IBM_texture_mirrored_repeat, GL_KHR_debug,
GL_KTX_buffer_region, GL_NVX_conditional_render, GL_NVX_gpu_memory_info,
GL_NV_ES1_1_compatibility, GL_NV_blend_square, GL_NV_conditional_render,
GL_NV_copy_depth_to_color, GL_NV_copy_image, GL_NV_depth_buffer_float,
GL_NV_depth_clamp, GL_NV_explicit_multisample, GL_NV_fence,
GL_NV_float_buffer, GL_NV_fog_distance, GL_NV_fragment_program,
GL_NV_fragment_program2, GL_NV_fragment_program_option,
GL_NV_framebuffer_multisample_coverage, GL_NV_geometry_shader4,
GL_NV_gpu_program4, GL_NV_gpu_program4_1, GL_NV_half_float,
GL_NV_light_max_exponent, GL_NV_multisample_coverage,
GL_NV_multisample_filter_hint, GL_NV_occlusion_query,
GL_NV_packed_depth_stencil, GL_NV_parameter_buffer_object,
GL_NV_parameter_buffer_object2, GL_NV_path_rendering,
GL_NV_pixel_data_range, GL_NV_point_sprite, GL_NV_primitive_restart,
GL_NV_register_combiners, GL_NV_register_combiners2,
GL_NV_shader_buffer_load, GL_NV_texgen_reflection, GL_NV_texture_barrier,
GL_NV_texture_compression_vtc, GL_NV_texture_env_combine4,
GL_NV_texture_expand_normal, GL_NV_texture_multisample,
GL_NV_texture_rectangle, GL_NV_texture_shader, GL_NV_texture_shader2,
GL_NV_texture_shader3, GL_NV_transform_feedback,
GL_NV_transform_feedback2, GL_NV_vdpau_interop, GL_NV_vertex_array_range,
GL_NV_vertex_array_range2, GL_NV_vertex_buffer_unified_memory,
GL_NV_vertex_program, GL_NV_vertex_program1_1, GL_NV_vertex_program2,
GL_NV_vertex_program2_option, GL_NV_vertex_program3, GL_S3_s3tc,
GL_SGIS_generate_mipmap, GL_SGIS_texture_lod, GL_SGIX_depth_texture,
GL_SGIX_shadow, GL_SUN_slice_accum
$ glxinfo | grep GLX_ARB_create_context
GLX_ARB_create_context, GLX_ARB_create_context_profile,
GLX_ARB_create_context_robustness, GLX_ARB_fbconfig_float,
GLX_ARB_create_context, GLX_ARB_create_context_profile,
GLX_ARB_create_context_robustness, GLX_ARB_fbconfig_float,
GLX_ARB_create_context, GLX_ARB_create_context_profile,
GLX_ARB_create_context_robustness, GLX_ARB_fbconfig_float,
$ glxinfo | grep GLX_EXT_create_context
GLX_EXT_create_context_es2_profile, GLX_EXT_create_context_es_profile,
GLX_EXT_create_context_es2_profile, GLX_EXT_create_context_es_profile,
GLX_EXT_create_context_es2_profile, GLX_EXT_create_context_es_profile,
from freshplayerplugin.
Are there any error messages in stdout/stderr?
Build with cmake -DTRACE_ALL=1 .. && make
and collect trace output (will be large). Does it contain ppb_graphics3d_*
calls?
from freshplayerplugin.
This is the output: https://dl.dropboxusercontent.com/u/1466192/firefox.log
The errors:
$ grep -i error firefox.log
###!!! [Parent][MessageChannel::Call] Error: Channel error: cannot send/recv
[fresh] [error] [NP] caught Xlib error 8
[fresh] [error] [NP] caught Xlib error 8
[fresh] [error] [NP] caught Xlib error 171
[fresh] [error] [NP] caught Xlib error 171
[fresh] [error] ppb_graphics3d_create, glXMakeCurrent failed
[fresh] [error] ppb_graphics3d_create, glXMakeCurrent failed
[fresh 21810] [PPB] {full} ppb_var_add_ref var={STRING:1:0x7fae05ff3fe8:onError}
[fresh 21810] [PPB] {full} ppb_var_add_ref var={STRING:1:0x7fae05ee60a0:ytPlayeronErrorplayer_uid_731855904_1}
[fresh 21810] [PPB] {full} ppb_var_var_to_utf8 var={STRING:2:0x7fae05ff3fe8:onError}
[fresh 21810] [PPB] {full} ppb_var_var_to_utf8 var={STRING:2:0x7fae05ee60a0:ytPlayeronErrorplayer_uid_731855904_1}
[fresh 21810] [PPB] {full} ppb_var_release var={STRING:2:0x7fae05ff3fe8:onError}
[fresh 21810] [PPB] {full} ppb_var_release var={STRING:2:0x7fae05ee60a0:ytPlayeronErrorplayer_uid_731855904_1}
[fresh 21810] [PPB] {full} ppb_var_var_from_utf8 data=try { __flash__toXML(ytPlayeronErrorplayer_uid_731855904_1(0)) ; } catch (e) { "<undefined/>"; }, len=96
[fresh 21810] [PPB] {full} ppb_instance_execute_script instance=10, script={STRING:1:0x7fae07714400:try { __flash__toXML(ytPlayeronErrorplayer_uid_731855904_1(0)) ; } catch (e) { "<undefined/>"; }}
[fresh 21810] [PPB] {full} ppb_var_release var={STRING:1:0x7fae07714400:try { __flash__toXML(ytPlayeronErrorplayer_uid_731855904_1(0)) ; } catch (e) { "<undefined/>"; }}
[fresh 21810] [PPB] {full} ppb_var_var_from_utf8 data=An error occurred, please try again later. BEGIN_LINKLearn MoreEND_LINK, len=71
[fresh 21810] [PPB] {full} ppb_browser_font_measure_text font=2901, text={.text={STRING:1:0x7fae05ec4740:An error occurred, please try again later. BEGIN_LINKLearn MoreEND_LINK}, .rtl=0, .override_direction=0}
[fresh 21810] [PPB] {full} ppb_var_release var={STRING:1:0x7fae05ec4740:An error occurred, please try again later. BEGIN_LINKLearn MoreEND_LINK}
[fresh 21810] [PPB] {full} ppb_var_var_from_utf8 data=An error occurred, please try again later. BEGIN_LINKLearn , len=59
[fresh 21810] [PPB] {full} ppb_browser_font_measure_text font=2901, text={.text={STRING:1:0x7fae05ec6900:An error occurred, please try again later. BEGIN_LINKLearn }, .rtl=0, .override_direction=0}
[fresh 21810] [PPB] {full} ppb_var_release var={STRING:1:0x7fae05ec6900:An error occurred, please try again later. BEGIN_LINKLearn }
[fresh 21810] [PPB] {full} ppb_var_var_from_utf8 data=An error occurred, please try again later. BEGIN_LINKLearn MoreEND_LINK, len=71
[fresh 21810] [PPB] {full} ppb_browser_font_measure_text font=2903, text={.text={STRING:1:0x7fae05ec4740:An error occurred, please try again later. BEGIN_LINKLearn MoreEND_LINK}, .rtl=0, .override_direction=0}
[fresh 21810] [PPB] {full} ppb_var_release var={STRING:1:0x7fae05ec4740:An error occurred, please try again later. BEGIN_LINKLearn MoreEND_LINK}
[fresh 21810] [PPB] {full} ppb_var_var_from_utf8 data=An error occurred, please try again later. , len=43
[fresh 21810] [PPB] {full} ppb_browser_font_measure_text font=2905, text={.text={STRING:1:0x7fae05ecefa0:An error occurred, please try again later. }, .rtl=0, .override_direction=0}
[fresh 21810] [PPB] {full} ppb_var_release var={STRING:1:0x7fae05ecefa0:An error occurred, please try again later. }
[fresh 21810] [PPB] {full} ppb_var_var_from_utf8 data=An error occurred, please try again later. , len=43
[fresh 21810] [PPB] {full} ppb_browser_font_measure_text font=2907, text={.text={STRING:1:0x7fae05ecefa0:An error occurred, please try again later. }, .rtl=0, .override_direction=0}
[fresh 21810] [PPB] {full} ppb_var_release var={STRING:1:0x7fae05ecefa0:An error occurred, please try again later. }
[fresh 21810] [PPB] {full} ppb_var_var_from_utf8 data=An error occurred, please try again later. , len=43
[fresh 21810] [PPB] {full} ppb_browser_font_measure_text font=2909, text={.text={STRING:1:0x7fae05ecefa0:An error occurred, please try again later. }, .rtl=0, .override_direction=0}
[fresh 21810] [PPB] {full} ppb_var_release var={STRING:1:0x7fae05ecefa0:An error occurred, please try again later. }
[fresh 21810] [PPB] {full} ppb_var_var_from_utf8 data=An error occurred, please try again later. , len=43
[fresh 21810] [PPB] {full} ppb_browser_font_measure_text font=2913, text={.text={STRING:1:0x7fae05ecefa0:An error occurred, please try again later. }, .rtl=0, .override_direction=0}
[fresh 21810] [PPB] {full} ppb_var_release var={STRING:1:0x7fae05ecefa0:An error occurred, please try again later. }
[fresh 21810] [PPB] {full} ppb_var_var_from_utf8 data=An error occurred, please try again later. , len=43
[fresh 21810] [PPB] {full} ppb_browser_font_measure_text font=2915, text={.text={STRING:1:0x7fae05ecefa0:An error occurred, please try again later. }, .rtl=0, .override_direction=0}
[fresh 21810] [PPB] {full} ppb_var_release var={STRING:1:0x7fae05ecefa0:An error occurred, please try again later. }
[fresh 21810] [PPB] {full} ppb_var_var_from_utf8 data=An error occurred, please try again later. , len=43
[fresh 21810] [PPB] {full} ppb_browser_font_measure_text font=2917, text={.text={STRING:1:0x7fae05ecefa0:An error occurred, please try again later. }, .rtl=0, .override_direction=0}
[fresh 21810] [PPB] {full} ppb_var_release var={STRING:1:0x7fae05ecefa0:An error occurred, please try again later. }
[fresh 21810] [PPB] {full} ppb_var_var_from_utf8 data=An error occurred, please try again later. , len=43
[fresh 21810] [PPB] {full} ppb_browser_font_measure_text font=2923, text={.text={STRING:1:0x7fae05ecefa0:An error occurred, please try again later. }, .rtl=0, .override_direction=0}
[fresh 21810] [PPB] {full} ppb_var_release var={STRING:1:0x7fae05ecefa0:An error occurred, please try again later. }
[fresh 21810] [PPB] {full} ppb_var_var_from_utf8 data=An error occurred, please try again later. , len=43
[fresh 21810] [PPB] {full} ppb_browser_font_draw_text_at font=2923, image_data=2924, text={.text={STRING:1:0x7fae05ecefa0:An error occurred, please try again later. }, .rtl=0, .override_direction=0}, position={.x=0, .y=15}, color=0xffffffff, clip={.x=-246, .y=0, .w=860, .h=19}, image_data_is_opaque=0
[fresh 21810] [PPB] {full} ppb_var_release var={STRING:1:0x7fae05ecefa0:An error occurred, please try again later. }
[fresh 21810] [PPB] {full} ppb_var_var_from_utf8 data=An error occurred, please t, len=27
[fresh 21810] [PPB] {full} ppb_browser_font_measure_text font=3389, text={.text={STRING:1:0x7fae05f6ac00:An error occurred, please t}, .rtl=0, .override_direction=0}
[fresh 21810] [PPB] {full} ppb_var_release var={STRING:1:0x7fae05f6ac00:An error occurred, please t}
[fresh 21810] [PPB] {full} ppb_var_var_from_utf8 data=An error occu, len=13
[fresh 21810] [PPB] {full} ppb_browser_font_measure_text font=3389, text={.text={STRING:1:0x7fae0746e6c0:An error occu}, .rtl=0, .override_direction=0}
[fresh 21810] [PPB] {full} ppb_var_release var={STRING:1:0x7fae0746e6c0:An error occu}
[fresh 21810] [PPB] {full} ppb_var_var_from_utf8 data=An error occurred, please t, len=27
[fresh 21810] [PPB] {full} ppb_browser_font_measure_text font=3391, text={.text={STRING:1:0x7fae05f6ac00:An error occurred, please t}, .rtl=0, .override_direction=0}
[fresh 21810] [PPB] {full} ppb_var_release var={STRING:1:0x7fae05f6ac00:An error occurred, please t}
[fresh 21810] [PPB] {full} ppb_var_var_from_utf8 data=An error occu, len=13
[fresh 21810] [PPB] {full} ppb_browser_font_measure_text font=3391, text={.text={STRING:1:0x7fae0746e6c0:An error occu}, .rtl=0, .override_direction=0}
[fresh 21810] [PPB] {full} ppb_var_release var={STRING:1:0x7fae0746e6c0:An error occu}
###!!! [Parent][MessageChannel::Call] Error: Channel error: cannot send/recv
###!!! [Parent][OnMaybeDequeueOne] Error: Channel error: cannot send/recv
###!!! [Parent][OnMaybeDequeueOne] Error: Channel error: cannot send/recv
[fresh] [error] [NP] caught Xlib error 8
[fresh] [error] [NP] caught Xlib error 8
[fresh] [error] [NP] caught Xlib error 171
[fresh] [error] [NP] caught Xlib error 171
[fresh] [error] ppb_graphics3d_create, glXMakeCurrent failed
[fresh] [error] ppb_graphics3d_create, glXMakeCurrent failed
[fresh 22208] [PPB] {full} ppb_var_add_ref var={STRING:1:0x7f646bc66fd0:onError}
[fresh 22208] [PPB] {full} ppb_var_add_ref var={STRING:1:0x7f646bcc0370:ytPlayeronErrorplayer_uid_949439993_1}
[fresh 22208] [PPB] {full} ppb_var_var_to_utf8 var={STRING:2:0x7f646bc66fd0:onError}
[fresh 22208] [PPB] {full} ppb_var_var_to_utf8 var={STRING:2:0x7f646bcc0370:ytPlayeronErrorplayer_uid_949439993_1}
[fresh 22208] [PPB] {full} ppb_var_release var={STRING:2:0x7f646bc66fd0:onError}
[fresh 22208] [PPB] {full} ppb_var_release var={STRING:2:0x7f646bcc0370:ytPlayeronErrorplayer_uid_949439993_1}
###!!! [Parent][MessageChannel::Call] Error: Channel error: cannot send/recv
###!!! [Parent][OnMaybeDequeueOne] Error: Channel error: cannot send/recv
And the lines with ppb_graphics3d_*
:
$ grep -i ppb_graphics3d firefox.log
[fresh 21444] [PPB] {full} ppb_get_interface interface_name=PPB_Graphics3D;1.0
[fresh 21804] [PPB] {full} ppb_get_interface interface_name=PPB_Graphics3D;1.0
[fresh 21810] [PPB] {full} ppb_get_interface interface_name=PPB_Graphics3D;1.0
[fresh 21810] [PPB] {full} ppb_graphics3d_create intance=10, share_context=0, attrib_list={TODO}
[fresh 21810] ppb_graphics3d_create, glXChooseFBConfig returned 36 configs, choosing first one
[fresh] [error] ppb_graphics3d_create, glXMakeCurrent failed
[fresh] [error] ppb_graphics3d_create, glXMakeCurrent failed
[fresh 22202] [PPB] {full} ppb_get_interface interface_name=PPB_Graphics3D;1.0
[fresh 22208] [PPB] {full} ppb_get_interface interface_name=PPB_Graphics3D;1.0
[fresh 22208] [PPB] {full} ppb_graphics3d_create intance=10, share_context=0, attrib_list={TODO}
[fresh 22208] ppb_graphics3d_create, glXChooseFBConfig returned 36 configs, choosing first one
[fresh] [error] ppb_graphics3d_create, glXMakeCurrent failed
[fresh] [error] ppb_graphics3d_create, glXMakeCurrent failed
from freshplayerplugin.
@simonbcn, try code from xr-24-32-bit branch. I think there was a color depth conflict, which should be fixed by a patch.
from freshplayerplugin.
In console it shows these messages:
NOT SANDBOXED
[fresh 7639] not implemented: PPB_OpenGLES2DrawBuffers(Dev);1.0
[fresh 7639] not implemented: PPB_VideoDecoder(Dev);0.16
[fresh] [error] ppb_core_call_on_browser_thread, no alive instance available
[fresh] [error] ppb_core_call_on_browser_thread, no alive instance available
###!!! [Parent][MessageChannel::Call] Error: Channel error: cannot send/recv
###!!! [Parent][OnMaybeDequeueOne] Error: Channel error: cannot send/recv
###!!! [Parent][OnMaybeDequeueOne] Error: Channel error: cannot send/recv
from freshplayerplugin.
OK, good, pushed patch to the master
branch.
You can also check if both opaque and transparent modes are working well on this test page. First entry with "wmode=transparent" text in it should be oval shaped.
from freshplayerplugin.
Yes, both opaque and transparent modes are working well:
from freshplayerplugin.
I'm interested in it too.
I'm on ArchLinux and I'm using the git AUR package (so, it's built against latest sources) and I've the same message of simonbcn (accellerated video rendering, software video decoding).
Just to know, what actually the video decoding part is up to?
from freshplayerplugin.
Just to know, what actually the video decoding part is up to?
Most functions are implemented as interfaces in PPAPI. For video decoding it's PPB_VideoDecoder(Dev)
. As always, one need to implement all functions that are used by PepperFlash. Their implementation can in turn depend on some other interface implementations, and so on. Total interface count is limited, so one day or another process will converge. :-)
I started once, but work stagnated, and I decided to postpone it for a while. I think either ffmpeg, libav or gstreamer could be used to provide actual decoding. But interface translation glue code still needs to be created.
from freshplayerplugin.
Got it! I'm almost sure GStreamer would be one of the best choices (usually WebkitGTK has GStreamer as dependency for HTML5 video playback), but that's just my idea/opinion ;-)
from freshplayerplugin.
Funny fact: using Flash Player on Youtube with Intel Graphics on Windows 8.1 gives me software rendering, hardware decoding, while your open-source implementation gives us on Linux hardware rendering, software decoding.
You just could work at Adobe/Google or else ;P
from freshplayerplugin.
gives us on Linux hardware rendering
Having hardware accelerated rendering for embedded videos was the most significant reason for this project to start. While NPAPI Flash's hardware acceleration via VDPAU is limited to windowed plugin mode only, freshplayerplugin
can utilize rendering to offscreen pixmap trick to offload scaling to GPU for all modes, including windowless one.
From libvdpau-va-gl
I learned that accelerated scaling lowers CPU consumption from, say 100-110% to about 30% on 720p H.264 content, but accelerated decoding lowers it further only to 10-15%. So for 720p, hw decoding gives only a fifth as much performance gain as hw scaling.
Of course video decode cost for >=1080p is higher, and hw decoding is still nice feature to have.
from freshplayerplugin.
Added H.264 decoding via VA-API in ca4607e (and a half a dozen follow-up commits).
from freshplayerplugin.
IT WORKS
At least, for me
ENHANCE
As a "first try" is amazing :D
from freshplayerplugin.
Adding VDPAU support is too messy for older ffmpeg versions, so I'm going to postpone it indefinitely. There is vdpau-va-driver driver exists which can provide VA-API interface, so that's not a big impairment anyway.
from freshplayerplugin.
Ubuntu 14.04 64 bits
NVIDIA proprietary drivers installed, downloaded from NVIDIA website
PepperFlash version 18.0.0.160
My /etc/freshwrapper.conf
:
# "Command-line" arguments for Flash
flash_command_line = "enable_hw_video_decode=1,enable_stagevideo_auto=1"
# enable 3d and stage 3d
enable_3d = 1
# when set to 1, limits output to warnings and errors only
quiet = 1
# Enables DNS query case randomization to partially protect against DNS
# poisoning attacks. It was reported that some Mikrotik routers do not
# support this trick. Set parameter to 0 if you have an affected model
randomize_dns_case = 1
There isn't accelerated video decoding
.
from freshplayerplugin.
It works partially to me
Actually, doesn't work at all. This issue is only about video decoding, not rendering.
But that's expected, since hwdec is disabled by default. Add enable_hwdec=1
line to freshwrapper.conf
to enable it. You'll also need vdpau-va-driver to translate VA-API calls to nVidia's native VDPAU interface.
from freshplayerplugin.
It still doesn't work.
$ cat /etc/freshwrapper.conf
# "Command-line" arguments for Flash
flash_command_line="enable_hw_video_decode=1,enable_stagevideo_auto=1"
# enable 3d and stage 3d
enable_3d=1
enable_hwdec=1
# when set to 1, limits output to warnings and errors only
quiet=1
# Enables DNS query case randomization to partially protect against DNS
# poisoning attacks. It was reported that some Mikrotik routers do not
# support this trick. Set parameter to 0 if you have an affected model
randomize_dns_case=1
$ apt-cache policy vdpau-va-driver
vdpau-va-driver:
Installed: 0.7.3-2ubuntu1.2
from freshplayerplugin.
@simonbcn,
Are there any error messages in the stderr output? You need to launch browser from terminal emulator to see them.
from freshplayerplugin.
@i-rinat this is the output log: https://dl.dropboxusercontent.com/u/1466192/firefox.log
from freshplayerplugin.
Here is those lines:
vdpau_video: VdpVideoSurfaceCreate(): status 20: The size of a supplied object does not match the object it is being used with.
[fresh] [error] prepare_vaapi_context, can't create VA surfaces
[fresh] [error] prepare_vaapi_context, can't create VA surfaces
Error 20 is VDP_STATUS_INVALID_SIZE
which matches error description, but doesn't make any sense for VdpVideoSurfaceCreate
. Unfortunately, I don't have an nVidia card now to test it.
from freshplayerplugin.
I have problems on Ubuntu too; I have 12.04, with the git package from Webupd8 PPA.
I've an Optimus laptop, so I'm using Intel Graphics by default.
I've also FFMpeg installed (maybe is too old?)
from freshplayerplugin.
What kind of problems? Did you try version from master
branch?
from freshplayerplugin.
It works now. I had an outdated version of ffmpeg installed. I didn't know that it used this program.
But I can't use it because it plays very slow. 😢
Thanks for your work. 👍
from freshplayerplugin.
Well, then I'm closing this issue. Feel free to open another.
(This one was about implementation itself, which is completed. Compatibility issues are better tracked in separate threads, there they have smaller chances to be missed).
from freshplayerplugin.
Decoding via VDPAU was added in commits from fbd4b16 to 5ea6d4b.
Note, VDPAU is used only if VA-API wasn't found, so if you have vdpau-va-driver installed, it will get in the way. Either remove that driver, or add enable_vaapi = 0
line to ~/.config/freshwrapper.conf
. Latter will prevent freshwrapper from trying VA-API at all.
from freshplayerplugin.
@simonbcn where did you find it? I still have the Ubuntu Precise one :/
from freshplayerplugin.
@ItachiSan I use the ffmpeg git version compiled by me.
from freshplayerplugin.
@simonbcn ok mate, thanks for the info! If that's the case, I'll probably backport some FFMPEG package to Precise ;)
from freshplayerplugin.
I broke compilation against older ffmpeg versions when added VDPAU code. It uses hwaccel infrastructure which VDPAU code in ffmpeg was ported to only recently.
After efa056d it should be compilable again.
It's worth to note, acceleration via VDPAU won't work with older ffmpeg versions, but vdpau-va-driver
compatibility layer can still help there.
from freshplayerplugin.
@i-rinat which is the minimum libav/ffmpeg version needed? So I can build Ubuntu packages for me ;)
from freshplayerplugin.
I don't know exactly which version is OK, but 0.8.7 from Ubuntu Precise should be fine. VDPAU code won't work until you have:
2013-01-13 - 8ee7b38 / 44e065d - lavc 54.87.100 / 54.36.0 - vdpau.h
Add AVVDPAUContext struct for VDPAU hardware-accelerated decoding.
2013-01-12 - dae382b / 169fb94 - lavu 52.14.100 / 52.4.0 - pixdesc.h
Add AV_PIX_FMT_VDPAU flag.
That's the excerpt from APIchanges
from ffmpeg source code. A bit later there is a "FFmpeg 1.0" cut, so 1.0 and later should be OK in VDPAU sense.
from freshplayerplugin.
Actually, I'm trying compiling LibAV instead of FFMpeg (as the first one) is supported from Ubuntu; if I have no success, I'll build FFMpeg instead.
from freshplayerplugin.
Ok, I'm backporting lots of stuff; just to know @i-rinat which is the minimum VA-API version needed?
So I can stop bothering you here :)
from freshplayerplugin.
@ItachiSan, I don't know exactly. 1.0.15
from Ubuntu Precise should be fine.
from freshplayerplugin.
It is not... :/
But it is not specific of the implementation, so I'll move this discussion in another issue, so it will be more clear.
from freshplayerplugin.
Related Issues (20)
- drm test works with intel but not Nvidia HOT 4
- 32 bit build error HOT 2
- [firefox] "[fresh] [error] n2p_call_ptac, NPN_Invoke failed (or there were no npp)" HOT 6
- Some webcams return green screen HOT 1
- Build failure HOT 5
- Missing include for sys/ioctl.h in src/ppb_video_capture.c HOT 1
- (question): use with other browsers still limited to the NPAPI? HOT 9
- using Chromebook flash for desktop Chrome HOT 2
- Fullscreen showing very small window HOT 5
- Chromebook's flash used by firefox works on test but fails in real life HOT 9
- freshwrapper crashing with Firefox 61 and ChromeOS's Flash HOT 2
- Is v0.3.10 production-ready? HOT 1
- asoundlib.h: No such file or directory HOT 4
- Wayland support? HOT 1
- Trouble on XWayland
- FreshPlugin as browser extension HOT 1
- libfreshplayer does not show up in Firefox 69.0.1 64bit HOT 9
- advice on fixing https://gitlab.com/Mis012/flashplayer-standalone to make it work with freshplayer HOT 9
- Does freshplayerplugin can be used a plugin on chromium[version:69] HOT 19
- Error when using make HOT 9
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from freshplayerplugin.