Closed i-rinat closed 9 years ago
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.
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.
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?
In flash config is enabled:
But when I play any video this is showed in stats:
Why no hardware acceleration is enabled?
@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.
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,
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?
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
@simonbcn, try code from xr-24-32-bit branch. I think there was a color depth conflict, which should be fixed by a patch.
Ok, it seems that now works:
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
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.
Yes, both opaque and transparent modes are working well:
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?
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.
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 ;-)
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
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.
Added H.264 decoding via VA-API in ca4607e1f59f6e08b97ab541366dc2d61c02124f (and a half a dozen follow-up commits).
IT WORKS At least, for me ENHANCE As a "first try" is amazing :D
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.
It works partially to me:
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
.
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.
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
@simonbcn, Are there any error messages in the stderr output? You need to launch browser from terminal emulator to see them.
@i-rinat this is the output log: https://dl.dropboxusercontent.com/u/1466192/firefox.log
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.
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?)
What kind of problems? Did you try version from master
branch?
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. :cry: Thanks for your work. :+1:
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).
Decoding via VDPAU was added in commits from fbd4b16585c6e7fa19a3ed528b6f8b1f5dc24307 to 5ea6d4bee1686c919cd9da6f61d8304b0ede8b7e.
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.
@simonbcn where did you find it? I still have the Ubuntu Precise one :/
@ItachiSan I use the ffmpeg git version compiled by me.
@simonbcn ok mate, thanks for the info! If that's the case, I'll probably backport some FFMPEG package to Precise ;)
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 efa056dc9d61ca445acc0016e0eb3eefb1bef2f0 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.
@i-rinat which is the minimum libav/ffmpeg version needed? So I can build Ubuntu packages for me ;)
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.
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.
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 :)
@ItachiSan, I don't know exactly. 1.0.15
from Ubuntu Precise should be fine.
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.
There is some API that mention hwaccel. Try to implement them and see what comes out.