Skip to content

Migrate to VLC based player to fix video decoding on Android 12 and older#228

Draft
Renarde-dev wants to merge 17 commits intodevelopfrom
migrate-to-vlc-player
Draft

Migrate to VLC based player to fix video decoding on Android 12 and older#228
Renarde-dev wants to merge 17 commits intodevelopfrom
migrate-to-vlc-player

Conversation

@Renarde-dev
Copy link
Copy Markdown
Collaborator

@Renarde-dev Renarde-dev commented Aug 8, 2025

Some code as been ported from receive-image-share, may cause conflict down the line.

The player show a green/black screen when trying to play AV1 encoded video on Android 12L and older. Video seems to also display with corrupted images or only sound play.
There seems to be some bug report on https://pub.dev/packages/video_player but they are mostly ignored.

This PR aims to try https://pub.dev/packages/flutter_vlc_player to see if it fixes the issues.

@Renarde-dev Renarde-dev changed the title Upgrade player - ported from receive-image-share Migrate to VLC based player to fix video decoding on Android 11 and older Aug 8, 2025
@Renarde-dev Renarde-dev changed the title Migrate to VLC based player to fix video decoding on Android 11 and older Migrate to VLC based player to fix video decoding on Android 12 and older Aug 8, 2025
@Renarde-dev
Copy link
Copy Markdown
Collaborator Author

24e9cfd Remove sharing intent from the package lock, when merging to develop it need to be double checked

Need specific fix from image-share branch, does not compile !!!
@Renarde-dev Renarde-dev force-pushed the migrate-to-vlc-player branch from 24e9cfd to 445f199 Compare August 22, 2025 11:55
@Renarde-dev
Copy link
Copy Markdown
Collaborator Author

Rebase on develop post merge

@Renarde-dev
Copy link
Copy Markdown
Collaborator Author

Fix work on A12 and not bellow

Add proguard rules,
Pass modern minify args
Ask gradle to shrink android resources
Default to share libc++ lib
Add vlc player as a dependency

Remove experimental option android.jetifier.ignorelist=bcprov-jdk15on
Since the toolchain is set to Java17 with a resolver it should be ok to remove it
@Renarde-dev
Copy link
Copy Markdown
Collaborator Author

Renarde-dev commented Sep 26, 2025

Currently testing VLC player

image

A few issue are still left :

  • Fixing Button not changing when pausing
  • Add a seekbar
  • Integrate properly video player
  • Cleanup dependencies to chewie and flutter_player
  • Investigate potential video tearing / distortion -> see Distortion of videos in portrait mode (regression) #233
  • Set android edge to edge or fullscreen mode

This player implementation support fullscreen with media controls and seekbar
@Renarde-dev
Copy link
Copy Markdown
Collaborator Author

Video is distorted when ended and rotated, restored when playing

@Renarde-dev
Copy link
Copy Markdown
Collaborator Author

The videos aren't loading for some reason

Error Logs

The video is working when used in test environement outside of piwigo NG
Gradle and progard are the same as the test project

I/VRI[MainActivity]@2ed987d(25565): call setFrameRateCategory for touch hint category=no preference, reason=boost timeout, vri=VRI[MainActivity]@2ed987d
I/VRI[MainActivity]@2ed987d(25565): call setFrameRateCategory for touch hint category=high hint, reason=touch, vri=VRI[MainActivity]@2ed987d
I/flutter (25565): https://piwigo.la-taniere-solidaire.gay/upload/2025/07/28/20250728092520-1862f29f.webm
W/iwigo.piwigo_ng(25565): ApkAssets: Deleting an ApkAssets object '<empty> and /system/priv-app/SamsungPass/SamsungPass.apk' with 1 weak references
W/iwigo.piwigo_ng(25565): ApkAssets: Deleting an ApkAssets object '<empty> and /data/app/~~0rrvZSD56Z0eNjuyaeRqLQ==/com.duckduckgo.mobile.android-wZ8eCG8ayEMSMBy3YZX5Ug==/base.apk' with 1 weak references
W/iwigo.piwigo_ng(25565): ApkAssets: Deleting an ApkAssets object '<empty> and /data/app/~~0rrvZSD56Z0eNjuyaeRqLQ==/com.duckduckgo.mobile.android-wZ8eCG8ayEMSMBy3YZX5Ug==/split_config.arm64_v8a.apk' with 1 weak references
W/iwigo.piwigo_ng(25565): ApkAssets: Deleting an ApkAssets object '<empty> and /data/app/~~0rrvZSD56Z0eNjuyaeRqLQ==/com.duckduckgo.mobile.android-wZ8eCG8ayEMSMBy3YZX5Ug==/split_config.fr.apk' with 1 weak references
W/iwigo.piwigo_ng(25565): ApkAssets: Deleting an ApkAssets object '<empty> and /data/app/~~0rrvZSD56Z0eNjuyaeRqLQ==/com.duckduckgo.mobile.android-wZ8eCG8ayEMSMBy3YZX5Ug==/split_config.xxhdpi.apk' with 1 weak references
E/flutter (25565): [ERROR:flutter/runtime/dart_vm_initializer.cc(40)] Unhandled Exception: PlatformException(channel-error, Unable to establish connection on channel., null, null)
E/flutter (25565): #0      VlcPlayerApi.initialize (package:flutter_vlc_player_platform_interface/src/messages/messages.dart:632:7)
E/flutter (25565): <asynchronous suspension>
E/flutter (25565): 
I/flutter (25565): [IMPORTANT:flutter/shell/platform/android/platform_view_android.cc(356)] Flutter recommends migrating plugins that create and register surface textures to the new surface producer API. See https://docs.flutter.dev/release/breaking-changes/android-surface-plugins
W/libc    (25565): Access denied finding property "vendor.display.enable_optimal_refresh_rate"
W/libc    (25565): Access denied finding property "vendor.gpp.create_frc_extension"
I/PlatformViewsController(25565): Hosting view in view hierarchy for platform view: 0
I/PlatformViewsController(25565): PlatformView is using SurfaceProducer backend
W/libc    (25565): Access denied finding property "vendor.display.enable_optimal_refresh_rate"
W/libc    (25565): Access denied finding property "vendor.gpp.create_frc_extension"
D/NativeCustomFrequencyManager(25565): [NativeCFMS] BpCustomFrequencyManager::BpCustomFrequencyManager()
D/HWUI    (25565): CFMS:: SetUp Pid : 25565    Tid : 25586
I/InsetsController(25565): setRequestedVisibleTypes: visible=false, mask=statusBars navigationBars captionBar, host=com.piwigo.piwigo_ng/com.remi.piwigo_ng.MainActivity, from=android.view.InsetsController.controlAnimationUnchecked:1498 android.view.InsetsController.applyAnimation:2228 android.view.InsetsController.applyAnimation:2159 android.view.InsetsController.hide:1452 android.view.InsetsController.hide:1368 android.view.ViewRootImpl.controlInsetsForCompatibility:3953 android.view.ViewRootImpl.performTraversals:4497 android.view.ViewRootImpl.doTraversal:3708 android.view.ViewRootImpl$TraversalRunnable.run:12542 android.view.Choreographer$CallbackRecord.run:1751 
I/InsetsController(25565): controlAnimationUncheckedInner: Added types=statusBars navigationBars, animType=1, host=com.piwigo.piwigo_ng/com.remi.piwigo_ng.MainActivity, from=android.view.InsetsController.controlAnimationUnchecked:1502 android.view.InsetsController.applyAnimation:2228 android.view.InsetsController.applyAnimation:2159 
I/BLASTBufferQueue_Java(25565): update, w= 1080 h= 2340 mName = VRI[MainActivity]@2ed987d mNativeObject= 0xb400006fe0738450 sc.mNativeObject= 0xb40000703074cd90 format= -3 caller= android.view.ViewRootImpl.updateBlastSurfaceIfNeeded:3386 android.view.ViewRootImpl.relayoutWindow:11361 android.view.ViewRootImpl.performTraversals:4544 android.view.ViewRootImpl.doTraversal:3708 android.view.ViewRootImpl$TraversalRunnable.run:12542 android.view.Choreographer$CallbackRecord.run:1751 
I/VRI[MainActivity]@2ed987d(25565): Relayout returned: old=(0,0,1080,2340) new=(0,0,1080,2340) relayoutAsync=true req=(1080,2340)0 dur=0 res=0x0 s={true 0xb400006f70775c60} ch=false seqId=0
W/InteractionJankMonitor(25565): Initializing without READ_DEVICE_CONFIG permission. enabled=false, interval=1, missedFrameThreshold=3, frameTimeThreshold=64, package=com.piwigo.piwigo_ng
I/VRI[MainActivity]@2ed987d(25565): registerCallbackForPendingTransactions
W/libc    (25565): Access denied finding property "vendor.display.enable_optimal_refresh_rate"
W/libc    (25565): Access denied finding property "vendor.gpp.create_frc_extension"
D/NativeCustomFrequencyManager(25565): [NativeCFMS] BpCustomFrequencyManager::BpCustomFrequencyManager()
D/HWUI    (25565): CFMS:: SetUp Pid : 25565    Tid : 25586
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed0789290 mBlastBufferQueue=0xb400006fe0738450 fn= 2 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed0787a10 mBlastBufferQueue=0xb400006fe0738450 fn= 2 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.ViewRootImpl$9.onFrameDraw:6276 android.view.ViewRootImpl$3.onFrameDraw:2440 android.view.ThreadedRenderer$1.onFrameDraw:761 
E/flutter (25565): [ERROR:flutter/runtime/dart_vm_initializer.cc(40)] Unhandled Exception: PlatformException(channel-error, Unable to establish connection on channel., null, null)
E/flutter (25565): #0      VlcPlayerApi.create (package:flutter_vlc_player_platform_interface/src/messages/messages.dart:658:7)
E/flutter (25565): <asynchronous suspension>
E/flutter (25565): #1      VlcPlayerController.initialize (package:flutter_vlc_player/src/vlc_player_controller.dart:191:5)
E/flutter (25565): <asynchronous suspension>
E/flutter (25565): #2      VlcPlayerController.onPlatformViewCreated (package:flutter_vlc_player/src/vlc_player_controller.dart:969:7)
E/flutter (25565): <asynchronous suspension>
E/flutter (25565): 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed077e8d0 mBlastBufferQueue=0xb400006fe0738450 fn= 3 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/InsetsController(25565): onStateChanged: host=com.piwigo.piwigo_ng/com.remi.piwigo_ng.MainActivity, from=android.view.ViewRootImpl.handleResized:2789, state=InsetsState: {mDisplayFrame=Rect(0, 0 - 1080, 2340), mDisplayCutout=DisplayCutout{insets=Rect(0, 99 - 0, 0) waterfall=Insets{left=0, top=0, right=0, bottom=0} boundingRect={Bounds=[Rect(0, 0 - 0, 0), Rect(505, 0 - 575, 99), Rect(0, 0 - 0, 0), Rect(0, 0 - 0, 0)]} cutoutPathParserInfo={CutoutPathParserInfo{displayWidth=1080 displayHeight=2340 physicalDisplayWidth=1080 physicalDisplayHeight=2340 density={3.0} cutoutSpec={M 0,0 M 0,29 a 35,35 0 1,0 0,70 a 35,35 0 1,0 0,-70 Z} rotation={0} scale={1.0} physicalPixelDisplaySizeRatio={1.0}}} sideOverrides={}}, mRoundedCorners=RoundedCorners{[RoundedCorner{position=TopLeft, radius=108, center=Point(108, 108)}, RoundedCorner{position=TopRight, radius=108, center=Point(972, 108)}, RoundedCorner{position=BottomRight, radius=108, center=Point(972, 2232)}, RoundedCorner{position=BottomLeft, radius=108, center=Point(108, 2232)}]}  mRoundedCornerFrame=Rect(0, 0 - 1080, 2340), mPrivacyIndicatorBounds=PrivacyIndicatorBounds {static bounds=Rect(948, 0 - 1080, 99) rotation=0}, mDisplayShape=DisplayShape{ spec=-311912193 displayWidth=1080 displayHeight=2340 physicalPixelDisplaySizeRatio=1.0 rotation=0 offsetX=0 offsetY=0 scale=1.0}, mSources= { InsetsSource: {3 mType=ime mFrame=[0,0][0,0] mVisible=false mFlags= mSideHint=NONE mBoundingRects=null}, InsetsSource: {27 mType=displayCutout mFrame=[0,0][1080,99] mVisible=true mFlags= mSideHint=TOP mBoundingRects=null}, InsetsSource: {6c70000 mType=statusBars mFrame=[0,0][1080,99] mVisible=false mFlags= mSideHint=TOP mBoundingRects=null}, InsetsSource: {6c70005 mType=mandatorySystemGestures mFrame=[0,0][1080,135] mVisible=true mFlags= mSideHint=TOP mBoundingRects=null}, InsetsSource: {6c70006 mType=tappableElement mFrame=[0,0][1080,99] mVisible=true mFlags= mSideHint=TOP mBoundingRects=null}, InsetsSource: {42410001 mType=navigationBars mFrame=[0,2196][1080,2340] mVisible=false mFlags= mSideHint=BOTTOM mBoundingRects=null}, InsetsSource: {42410004 mType=systemGestures mFrame=[0,0][0,0] mVisible=true mFlags= mSideHint=NONE mBoundingRects=null}, InsetsSource: {42410005 mType=mandatorySystemGestures mFrame=[0,2196][1080,2340] mVisible=true mFlags= mSideHint=BOTTOM mBoundingRects=null}, InsetsSource: {42410006 mType=tappableElement mFrame=[0,2196][1080,2340] mVisible=true mFlags= mSideHint=BOTTOM mBoundingRects=null}, InsetsSource: {42410024 mType=systemGestures mFrame=[0,0][0,0] mVisible=true mFlags= mSideHint=NONE mBoundingRects=null} }
I/VRI[MainActivity]@2ed987d(25565): handleResized, frames=ClientWindowFrames{frame=[0,0][1080,2340] display=[0,0][1080,2340] parentFrame=[0,0][0,0]} displayId=0 dragResizing=false compatScale=1.0 frameChanged=false attachedFrameChanged=false configChanged=false displayChanged=false compatScaleChanged=false dragResizingChanged=false
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed0760790 mBlastBufferQueue=0xb400006fe0738450 fn= 4 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed077c950 mBlastBufferQueue=0xb400006fe0738450 fn= 5 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed0779bd0 mBlastBufferQueue=0xb400006fe0738450 fn= 6 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed0786dd0 mBlastBufferQueue=0xb400006fe0738450 fn= 7 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed0774ed0 mBlastBufferQueue=0xb400006fe0738450 fn= 8 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed077cb10 mBlastBufferQueue=0xb400006fe0738450 fn= 9 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed0752cd0 mBlastBufferQueue=0xb400006fe0738450 fn= 10 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed07843d0 mBlastBufferQueue=0xb400006fe0738450 fn= 11 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed0783090 mBlastBufferQueue=0xb400006fe0738450 fn= 12 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed0781b90 mBlastBufferQueue=0xb400006fe0738450 fn= 13 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed0784050 mBlastBufferQueue=0xb400006fe0738450 fn= 14 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed07858d0 mBlastBufferQueue=0xb400006fe0738450 fn= 15 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed0785390 mBlastBufferQueue=0xb400006fe0738450 fn= 16 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed0766990 mBlastBufferQueue=0xb400006fe0738450 fn= 17 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed0784210 mBlastBufferQueue=0xb400006fe0738450 fn= 18 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed0781d50 mBlastBufferQueue=0xb400006fe0738450 fn= 19 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed0740a50 mBlastBufferQueue=0xb400006fe0738450 fn= 20 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed0783250 mBlastBufferQueue=0xb400006fe0738450 fn= 21 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed0764850 mBlastBufferQueue=0xb400006fe0738450 fn= 22 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed0782290 mBlastBufferQueue=0xb400006fe0738450 fn= 23 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed0762c50 mBlastBufferQueue=0xb400006fe0738450 fn= 24 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed0784e50 mBlastBufferQueue=0xb400006fe0738450 fn= 25 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed073f550 mBlastBufferQueue=0xb400006fe0738450 fn= 26 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed0782ed0 mBlastBufferQueue=0xb400006fe0738450 fn= 27 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed0764a10 mBlastBufferQueue=0xb400006fe0738450 fn= 28 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed0783410 mBlastBufferQueue=0xb400006fe0738450 fn= 29 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed0773490 mBlastBufferQueue=0xb400006fe0738450 fn= 30 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed0780d90 mBlastBufferQueue=0xb400006fe0738450 fn= 31 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed07786d0 mBlastBufferQueue=0xb400006fe0738450 fn= 32 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed075ca50 mBlastBufferQueue=0xb400006fe0738450 fn= 33 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed075e2d0 mBlastBufferQueue=0xb400006fe0738450 fn= 34 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed076e790 mBlastBufferQueue=0xb400006fe0738450 fn= 35 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed080c850 mBlastBufferQueue=0xb400006fe0738450 fn= 36 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed0816410 mBlastBufferQueue=0xb400006fe0738450 fn= 37 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/InsetsController(25565): cancelAnimation: types=statusBars navigationBars, animType=1, host=com.piwigo.piwigo_ng/com.remi.piwigo_ng.MainActivity, from=android.view.InsetsController.notifyFinished:1890 android.view.InsetsAnimationControlImpl.applyChangeInsets:307 android.view.InsetsController.lambda$new$3:932 
I/VRI[MainActivity]@2ed987d(25565): mWNT: t=0xb400006ed0816090 mBlastBufferQueue=0xb400006fe0738450 fn= 38 HdrRenderState mRenderHdrSdrRatio=1.0 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0:69 android.view.SyncRtSurfaceTransactionApplier.$r8$lambda$afI4fXg3U3-nBZQEDQMiNy-B06s:0 
I/VRI[MainActivity]@2ed987d(25565): call setFrameRateCategory for touch hint category=no preference, reason=boost timeout, vri=VRI[MainActivity]@2ed987d
I/VRI[MainActivity]@2ed987d(25565): call setFrameRateCategory for touch hint category=high hint, reason=touch, vri=VRI[MainActivity]@2ed987d

@Renarde-dev
Copy link
Copy Markdown
Collaborator Author

A refactor is underway to allow VLC player to work

@Renarde-dev Renarde-dev requested a review from LintyDev October 17, 2025 11:55
@Renarde-dev Renarde-dev self-assigned this Oct 17, 2025
@Renarde-dev Renarde-dev marked this pull request as ready for review October 17, 2025 11:55
# Conflicts:
#	android/gradle.properties
#	android/settings.gradle.kts
#	pubspec.lock
#	pubspec.yaml
@Renarde-dev
Copy link
Copy Markdown
Collaborator Author

Renarde-dev commented Oct 17, 2025

Video thumbnail during upload is broken

Async issue

@Renarde-dev
Copy link
Copy Markdown
Collaborator Author

Renarde-dev commented Oct 20, 2025

Need to fix video metadata in lib/components/cards/image_details_card.dart and VLC not working :

  • Display actual duration rather than "duration"
  • Get video resolution Width x Height
  • Fix VLC player inconsistencies

@Renarde-dev
Copy link
Copy Markdown
Collaborator Author

Unable to properly integrate vlc for now.

@Renarde-dev Renarde-dev marked this pull request as draft November 24, 2025 10:55
@Renarde-dev Renarde-dev added dependencies Linked to dependencies / Awaiting upstream fix Video labels Nov 24, 2025
@Renarde-dev
Copy link
Copy Markdown
Collaborator Author

For people tracking this PR the issue is related to VLC player is solid-software/flutter_vlc_player#546 and using 16Kb version doesn't work either.

@Renarde-dev Renarde-dev removed the request for review from LintyDev December 8, 2025 07:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Linked to dependencies / Awaiting upstream fix Video

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants