The video to switch playing on a new surface (seamlessly?).
Actual result
On the generic Amlogic 2.0 device, the playback errors out:
2023-06-12 13:30:23.217 4593-4605 a3.demo.surfac androidx.media3.demo.surface I Background concurrent copying GC freed 4736(320KB) AllocSpace objects, 0(0B) LOS objects, 24% free, 2MB/3MB, paused 1.850ms total 121.740ms
2023-06-12 13:30:33.306 4593-4701 SurfaceUtils androidx.media3.demo.surface D connecting to surface 0x93dfb008, reason connectToSurface
2023-06-12 13:30:33.306 4593-4701 MediaCodec androidx.media3.demo.surface I [OMX.amlogic.avc.decoder.awesome] setting surface generation to 4703234
2023-06-12 13:30:33.306 4593-4701 SurfaceUtils androidx.media3.demo.surface D disconnecting from surface 0x93dfb008, reason connectToSurface(reconnect)
2023-06-12 13:30:33.306 4593-4701 SurfaceUtils androidx.media3.demo.surface D connecting to surface 0x93dfb008, reason connectToSurface(reconnect)
2023-06-12 13:30:33.308 4593-4702 SurfaceUtils androidx.media3.demo.surface D disconnecting from surface 0x93dfb008, reason setNativeWindowSizeFormatAndUsage
2023-06-12 13:30:33.308 4593-4702 SurfaceUtils androidx.media3.demo.surface D connecting to surface 0x93dfb008, reason setNativeWindowSizeFormatAndUsage
2023-06-12 13:30:33.308 4593-4702 SurfaceUtils androidx.media3.demo.surface D set up nativeWindow 0x93dfb008 for 1280x720, color 0x11, rotation 0, usage 0x402b00
2023-06-12 13:30:33.308 4593-4702 ACodec androidx.media3.demo.surface W cannot change usage from 0x402933 to 0x402b00
2023-06-12 13:30:33.325 4593-4634 ExoPlayerImplInternal androidx.media3.demo.surface E Playback error
androidx.media3.exoplayer.ExoPlaybackException: Unexpected runtime error
at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:636)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:193)
at android.os.HandlerThread.run(HandlerThread.java:65)
Caused by: java.lang.IllegalArgumentException
at android.media.MediaCodec.native_setSurface(Native Method)
at android.media.MediaCodec.setOutputSurface(MediaCodec.java:1979)
at androidx.media3.exoplayer.mediacodec.SynchronousMediaCodecAdapter.setOutputSurface(SynchronousMediaCodecAdapter.java:191)
at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.setOutputSurfaceV23(MediaCodecVideoRenderer.java:1503)
at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.setOutput(MediaCodecVideoRenderer.java:697)
at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.handleMessage(MediaCodecVideoRenderer.java:635)
at androidx.media3.exoplayer.ExoPlayerImplInternal.deliverMessage(ExoPlayerImplInternal.java:1574)
at androidx.media3.exoplayer.ExoPlayerImplInternal.sendMessageToTarget(ExoPlayerImplInternal.java:1538)
at androidx.media3.exoplayer.ExoPlayerImplInternal.sendMessageInternal(ExoPlayerImplInternal.java:1513)
at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:541)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:193)
at android.os.HandlerThread.run(HandlerThread.java:65)
2023-06-12 13:30:33.767 4593-4701 SurfaceUtils androidx.media3.demo.surface D disconnecting from surface 0x9410d008, reason disconnectFromSurface
Media3 Version
Media3 1.1.0-alpha01
Devices that reproduce the issue
Devices that do not reproduce the issue
Reproducible in the demo app?
Yes
Reproduction steps
In the
demo-surface
apply the following diff:For clarity, the updated
reparent
method implementation:Expected result
The video to switch playing on a new surface (seamlessly?).
Actual result
On the generic Amlogic 2.0 device, the playback errors out:
https://github.com/androidx/media/assets/879060/c82b15c0-a633-4016-821d-ef7982400ee9
On the MiBox 4, it eventually starts playing on the new surface, but takes a while (~5 seconds).
https://github.com/androidx/media/assets/879060/5b476a3a-dbd7-4b2b-8f03-d702a8ae2ab6
Media
Default media for the surface demo / Not applicable.
Bug Report
adb bugreport
to dev.exoplayer@gmail.com after filing this issue.