RenderHeads / UnityPlugin-AVProVideo

AVPro Video is a multi-platform Unity plugin for advanced video playback
https://www.renderheads.com/products/avpro-video/
231 stars 28 forks source link

Video render fails on iOS 10.x and unity 2019.3.10f1 #325

Closed ralphtherapper closed 4 years ago

ralphtherapper commented 4 years ago

Unity 2019.3.10f1 min iOS is targeting iOS 10 which includes 2 devices families that don't support metal rendering. These devices (iphone 5 and ipad 4) use opengl es 2 graphic API. We use AVpro to render video in our unity applications in several places and can verify that Display uGui and ApplyToMaterial scripts fail to render video. Audio and video playback end work fine still.

Your Setup (please complete the following information):

To Reproduce

  1. Create unity project
  2. Enable opengl es 2 graph api in the player settings for ios (note to submit update of old application this step is required as otherwise unity will add metal requirement to info.plist since metal is the default graphic api)
  3. make scene with either ApplyToMaterial or Display uGui
  4. compile and run the build on iPhone 5 classic or iPad 4 that default to opengl es 2 target as they dont run on metal
  5. see that video won't render

Logs Currently we don't have logs as we disable avpro logging. I will update the ticket once I get some.

Screenshots It appear that either that nothing gets drawn by the avpro components.. no screenshot needed

Will make smaller reproduce project and send invite to support.

ralphtherapper commented 4 years ago

Link to reproduce project has been sent to unitysupport@renderheads.com

ralphtherapper commented 4 years ago

Device log: 2020-04-24 05:14:33.982602-0700 avproissue[640:354315] Built from '2019.3/release' branch, Version '2019.3.4f1 (4f139db2fdbd)', Build type 'Release', Scripting Backend 'il2cpp' -> applicationDidFinishLaunching() -> applicationDidBecomeActive() GfxDevice: creating device client; threaded=1 Renderer: PowerVR SGX 554 Vendor: Imagination Technologies Version: OpenGL ES 2.0 IMGSGX554-129 GLES: 2 GL_OES_depth_texture GL_OES_depth24 GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_mapbuffer GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_texture_float GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_vertex_array_object GL_EXT_blend_minmax GL_EXT_color_buffer_half_float GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_discard_framebuffer GL_EXT_draw_instanced GL_EXT_instanced_arrays GL_EXT_map_buffer_range GL_EXT_occlusion_query_boolean GL_EXT_pvrtc_sRGB GL_EXT_read_format_bgra GL_EXT_separate_shader_objects GL_EXT_shader_framebuffer_fetch GL_EXT_shader_texture_lod GL_EXT_shadow_samplers GL_EXT_sRGB GL_EXT_texture_filter_anisotropic GL_EXT_texture_rg GL_EXT_texture_storage GL_APPLE_clip_distance GL_APPLE_color_buffer_packed_float GL_APPLE_copy_texture_levels GL_APPLE_framebuffer_multisample GL_APPLE_rgb_422 GL_APPLE_sync GL_APPLE_texture_format_BGRA8888 GL_APPLE_texture_max_level GL_APPLE_texture_packed_float GL_IMG_read_format GL_IMG_texture_com pression_pvrtc OPENGL LOG: Creating OpenGL ES 2.0 graphics device ; Context level <OpenGL ES 2.0> ; Context handle 358487248 OPENGL LOG: OpenGLES2 is deprecated on this platform Initialize engine version: 2019.3.4f1 (4f139db2fdbd) UnloadTime: 0.239083 ms SceneLogic: AppIntro got language FINNISH (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)

SceneLogic: TriggerNextStep (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)

SceneLogic: PlayIntroVideo (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)

[AVProVideo] Initialising AVPro Video (script v1.10.3 plugin v1.10.3) on PowerVR SGX 554/OpenGL ES 2.0 IMGSGX554-129 (MT True) on IPhonePlayer iOS 10.3.4 RenderHeads.Media.AVProVideo.MediaPlayer:Start()

(Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)

[AVProVideo] Opening /var/containers/Bundle/Application/68C883FD-97D7-425D-A4BB-C42C2A40457A/avproissue.app/Data/Raw/Intro_video.mp4 (offset 0) with API
(Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)

Setting up 1 worker threads for Enlighten. Thread -> id: 40309000 -> priority: 1 Initialising for graphics device type OpenGLES 2.0 Failed to create texture cache, error -6661 [AVProVideo] Using playback path: AVFoundation (1280x720@25,00) RenderHeads.Media.AVProVideo.MediaPlayer:Update()

(Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)

SceneLogic: OnAVEvent: MetaDataReady RenderHeads.Media.AVProVideo.MediaPlayer:UpdateEvents()

(Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)

SceneLogic: OnAVEvent: Started RenderHeads.Media.AVProVideo.MediaPlayer:UpdateEvents()

(Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)

SceneLogic: OnAVEvent: FinishedPlaying RenderHeads.Media.AVProVideo.MediaPlayer:UpdateEvents()

(Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)

Video playback done! Yle.Common.AppIntro:OnAVEvent(MediaPlayer, EventType, ErrorCode) RenderHeads.Media.AVProVideo.MediaPlayer:UpdateEvents()

(Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)

ralphtherapper commented 4 years ago

Note that this issue is preproducible with 2019.3.4f1 and 2019.3.10f1

MorrisRH commented 4 years ago

You need to disable multithreaded rendering. A fix for this will be available in the next release.

ralphtherapper commented 4 years ago

@MorrisRH Thanks for the reply. When the next release will be available?

MorrisRH commented 4 years ago

Later this week if all goes to plan.

AndrewRH commented 4 years ago

@ralphtherapper version 1.11.0 has just been released which contains this fix. Thanks,

ralphtherapper commented 4 years ago

@AndrewRH thanks we will plugin the new version straightaway!