v0.9.1-android #25
akashskypatel
announced in
Releases
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Version 0.9.1
dummyvideo driver +softwarerender driver. Each decoded frame is read from SDL's in-memory back-buffer viaSDL_RenderReadPixelsand blitted row-by-row to the registeredANativeWindowviaANativeWindow_lock/post. ASDL_CreateWindowinterceptor inffplay_lib.clogs dimensions and forwards to SDL without requiringSDLActivity. Newffmpeg_kit_android.cprovides JNI glue that retains theANativeWindowfor the playback session.SDL_AUDIODRIVER=openslESon Android to use the fully-native OpenSL ES backend (noJavaVM/JNI_OnLoadrequired). AAudio is also compiled in for API 26+ devices.FFplayKitAndroid.java(com.akashskypatel.ffmpegkit) exposingsetAndroidSurface(Surface)for binding aSurfaceVieworTextureViewsurface before playback. AddedgetNativeWindowPtr(Surface)→longandreleaseNativeWindowPtr(long)for acquiring and releasingANativeWindow*references directly from Dart FFI.ffplay_set_android_window(ANativeWindow*)inffplay_lib.hfor native-layer surface control. Added C wrapper functionsffplay_kit_set_android_surface_ptr(int64_t)andffplay_kit_clear_android_surface()for direct Android surface management from Dart FFI. Addedffplay_kit_register_frame_callback()/ffplay_kit_unregister_frame_callback()andFFplayKitFrameCallbacktypedef for desktop (Linux/Windows) pixel delivery. Addedffmpeg_kit_get_build_stamp()for DLL version verification.configurepath (dropped in SDL2 2.x) with a CMake build using the Android NDK toolchain. EnablesSDL_OPENSL,SDL_AAUDIO,SDL_VIDEO, andSDL_RENDERbackends.android-aar.shonce after all arch builds complete. Added--no-bundleand conditional--cleanflags for Android build steps.create_bundleflag), correctedjniLibsoutput path to useWORKDIR/host_platform, fixed Maven Central namespace toio.github.akashskypatel.ffmpegkit, and corrected package status check return value.ffplay_has_video_stream(path)toffplay_lib.handffplay_kit_has_video_stream(path)to the C ABI wrapper. Probes a file or URL for a video stream usingavformat_open_input+avformat_find_stream_infowithout decoding. Returns 1 (video present), 0 (audio-only), or -1 (error). Thread-safe.FFplaySession::getVideoWidth()andFFplaySession::getVideoHeight()to the C++ session API. Returns the current decoded frame dimensions from an active FFplay session, or 0 if no video stream is open.ffplay_get_video_size()now returns0×0when no video stream is present (video_st == NULL), preventing FFplay's audio-visualization window dimensions from being mistaken for video dimensions.ffplay_get_video_sizeThread Safety: Addedffplay_api_mutexlock andactive_ffplay_ctx == ctxvalidation toffplay_get_video_size(), matching the pattern used by all other getters. Prevents use-after-free ifffplay_free()races with a concurrentgetVideoWidth()/getVideoHeight()call.ANativeWindow_acquire()ingetNativeWindowPtr()—ANativeWindow_fromSurface()already transfers ownership.releaseNativeWindowPtr()now correctly balances the single reference.FFplayKit::setAndroidSurfaceReference Leak Fix: Added a static retainedANativeWindow*in the C++ path so the reference fromANativeWindow_fromSurface()is properly released on the next call, mirroring theg_retained_windowlifecycle inffmpeg_kit_android.c.av_malloc/av_freeinffplay_step()(both Android blit and desktop callback paths) with a static reusable buffer that is only reallocated when frame dimensions increase. Eliminates ~240 MB/s of allocation churn at 1080p/30fps.ANDROID_PLATFORM_ARCHSarray is now populated only whenplatform == android, preventing spurious non-Android arch entries (e.g.android-x86_64from a Linux build pass) from being passed toandroid-aar.shin mixed-platform builds.What's Changed
Full Changelog: v0.9.0-android...v0.9.1-android
This discussion was created from the release v0.9.1-android.
All reactions