Tusky-App-Android/app/src/main/java/com/keylesspalace/tusky
Konrad Pozniak f1b0e0fbc2
enableDecoderFallback for ExoPlayer (#4360)
This helps playing some media even if there is a problem with the
primary decoder.
E.g. [this
video](https://mastodon.social/@krzyzanowskim/112208964123517040) fails
on my Fairphone 4 without this change.


<img
src="https://github.com/tuskyapp/Tusky/assets/10157047/215d932c-9ed1-4ee8-8be7-e6ca28ddec23"
width="200"/>

<details>
  <summary>Stacktrace</summary>

```
androidx.media3.exoplayer.ExoPlaybackException: MediaCodecVideoRenderer error, index=0, format=Format(1, null, null, video/avc, avc1.640034, -1, null, [1920, 1440, 119.99593, ColorInfo(BT709, Limited range, sRGB, false, 8bit Luma, 8bit Chroma)], [-1, -1]), format_supported=YES
      at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:620)
      at android.os.Handler.dispatchMessage(Handler.java:102)
      at android.os.Looper.loopOnce(Looper.java:201)
      at android.os.Looper.loop(Looper.java:288)
      at android.os.HandlerThread.run(HandlerThread.java:67)
  Caused by: androidx.media3.exoplayer.mediacodec.MediaCodecRenderer$DecoderInitializationException: Decoder init failed: OMX.qcom.video.decoder.avc, Format(1, null, null, video/avc, avc1.640034, -1, null, [1920, 1440, 119.99593, ColorInfo(BT709, Limited range, sRGB, false, 8bit Luma, 8bit Chroma)], [-1, -1])
      at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.maybeInitCodecWithFallback(MediaCodecRenderer.java:1114)
      at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.maybeInitCodecOrBypass(MediaCodecRenderer.java:551)
      at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1560)
      at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:1152)
      at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.readSourceOmittingSampleData(MediaCodecRenderer.java:994)
      at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:814)
      at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.render(MediaCodecVideoRenderer.java:940)
      at androidx.media3.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:1102)
      at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:541)
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loopOnce(Looper.java:201) 
      at android.os.Looper.loop(Looper.java:288) 
      at android.os.HandlerThread.run(HandlerThread.java:67) 
  Caused by: android.media.MediaCodec$CodecException: Error 0xfffffff4
      at android.media.MediaCodec.native_configure(Native Method)
      at android.media.MediaCodec.configure(MediaCodec.java:2215)
      at android.media.MediaCodec.configure(MediaCodec.java:2131)
      at androidx.media3.exoplayer.mediacodec.AsynchronousMediaCodecAdapter.initialize(AsynchronousMediaCodecAdapter.java:174)
      at androidx.media3.exoplayer.mediacodec.AsynchronousMediaCodecAdapter.access$100(AsynchronousMediaCodecAdapter.java:54)
      at androidx.media3.exoplayer.mediacodec.AsynchronousMediaCodecAdapter$Factory.createAdapter(AsynchronousMediaCodecAdapter.java:119)
      at androidx.media3.exoplayer.mediacodec.DefaultMediaCodecAdapterFactory.createAdapter(DefaultMediaCodecAdapterFactory.java:117)
      at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.initCodec(MediaCodecRenderer.java:1195)
      at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.maybeInitCodecWithFallback(MediaCodecRenderer.java:1103)
      at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.maybeInitCodecOrBypass(MediaCodecRenderer.java:551) 
      at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1560) 
      at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:1152) 
      at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.readSourceOmittingSampleData(MediaCodecRenderer.java:994) 
      at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:814) 
      at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.render(MediaCodecVideoRenderer.java:940) 
      at androidx.media3.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:1102) 
      at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:541) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loopOnce(Looper.java:201) 
      at android.os.Looper.loop(Looper.java:288) 
      at android.os.HandlerThread.run(HandlerThread.java:67) 
```

</details>
2024-04-10 21:46:52 +02:00
..
adapter Replace Gson library with Moshi (#4309) 2024-04-02 21:01:04 +02:00
appstore Replace Gson library with Moshi (#4309) 2024-04-02 21:01:04 +02:00
components show rules of the correct instance on the auth screen (#4358) 2024-04-05 12:01:54 +02:00
db Replace Gson library with Moshi (#4309) 2024-04-02 21:01:04 +02:00
di enableDecoderFallback for ExoPlayer (#4360) 2024-04-10 21:46:52 +02:00
entity Replace Gson library with Moshi (#4309) 2024-04-02 21:01:04 +02:00
fragment Replace Gson library with Moshi (#4309) 2024-04-02 21:01:04 +02:00
interfaces Machine translation of posts (#4307) 2024-03-09 16:12:18 +01:00
json Replace Gson library with Moshi (#4309) 2024-04-02 21:01:04 +02:00
network show rules of the correct instance on the auth screen (#4358) 2024-04-05 12:01:54 +02:00
pager upgrade ktlint plugin to 12.0.3 (#4169) 2024-01-04 17:00:55 +01:00
receiver Replace Gson library with Moshi (#4309) 2024-04-02 21:01:04 +02:00
service change SendStatusService type to shortService (#4292) 2024-02-29 12:21:15 +01:00
settings Fix some warnings & recreate lint-baseline.xml (#4278) 2024-02-25 16:20:26 +01:00
usecase Retrofit 2.10.0 (#4330) 2024-03-19 08:32:14 +01:00
util Replace Gson library with Moshi (#4309) 2024-04-02 21:01:04 +02:00
view full sdk 34 support (#4224) 2024-02-23 10:27:19 +01:00
viewdata Replace Gson library with Moshi (#4309) 2024-04-02 21:01:04 +02:00
viewmodel Remove redundant crossinline (#4348) 2024-03-29 21:12:49 +01:00
worker upgrade ktlint plugin to 12.0.3 (#4169) 2024-01-04 17:00:55 +01:00
AboutActivity.kt Machine translation of posts (#4307) 2024-03-09 16:12:18 +01:00
AccountsInListFragment.kt upgrade ktlint plugin to 12.0.3 (#4169) 2024-01-04 17:00:55 +01:00
BaseActivity.java improve MainActivity / LoginActivity transitions (#4301) 2024-03-09 11:04:29 +01:00
BottomSheetActivity.kt Replace RxJava3 code with coroutines (#4290) 2024-02-29 15:28:48 +01:00
EditProfileActivity.kt Migrate LiveData to Flow (#4337) 2024-03-27 11:34:17 +01:00
LicenseActivity.kt update ktlint plugin to 11.3.1, format code (#3442) 2023-03-13 13:16:39 +01:00
ListsActivity.kt full sdk 34 support (#4224) 2024-02-23 10:27:19 +01:00
MainActivity.kt improve MainActivity / LoginActivity transitions (#4301) 2024-03-09 11:04:29 +01:00
SplashActivity.kt remove legacy notification channel cleanup (#2550) 2022-05-25 20:54:25 +02:00
StatusListActivity.kt full sdk 34 support (#4224) 2024-02-23 10:27:19 +01:00
TabData.kt upgrade ktlint plugin to 12.0.3 (#4169) 2024-01-04 17:00:55 +01:00
TabPreferenceActivity.kt fix check that ensures only one bookmark tab is added (#4217) 2024-01-28 19:07:17 +01:00
TuskyApplication.kt Replace RxJava3 code with coroutines (#4290) 2024-02-29 15:28:48 +01:00
ViewMediaActivity.kt Replace RxJava3 code with coroutines (#4290) 2024-02-29 15:28:48 +01:00