Skip to content

1.0.0-beta03

Pre-release
Pre-release
Compare
Choose a tag to compare
@microkatz microkatz released this 23 Nov 12:02
· 5485 commits to release since this release
c2cbb63
  • Core library:
    • Add ExoPlayer.isTunnelingEnabled to check if tunneling is enabled for the currently selected tracks (google/ExoPlayer#2518).
    • Add WrappingMediaSource to simplify wrapping a single MediaSource (google/ExoPlayer#7279).
    • Discard back buffer before playback gets stuck due to insufficient available memory.
    • Close the Tracing "doSomeWork" block when offload is enabled.
    • Fix session tracking problem with fast seeks in PlaybackStatsListener (#180).
    • Send missing onMediaItemTransition callback when calling seekToNext or seekToPrevious in a single-item playlist (google/ExoPlayer#10667).
    • Add Player.getSurfaceSize that returns the size of the surface on which the video is rendered.
    • Fix bug where removing listeners during the player release can cause an IllegalStateException (google/ExoPlayer#10758).
  • Build:
    • Enforce minimum compileSdkVersion to avoid compilation errors (google/ExoPlayer#10684).
    • Avoid publishing block when included in another gradle build.
  • Track selection:
  • Downloads:
    • Fix potential infinite loop in ProgressiveDownloader caused by simultaneous download and playback with the same PriorityTaskManager (google/ExoPlayer#10570).
    • Make download notification appear immediately (#183).
    • Limit parallel download removals to 1 to avoid excessive thread creation (google/ExoPlayer#10458).
  • Video:
  • Audio:
    • Use SingleThreadExecutor for releasing AudioTrack instances to avoid OutOfMemory errors when releasing multiple players at the same time (google/ExoPlayer#10057).
    • Adds AudioOffloadListener.onExperimentalOffloadedPlayback for the AudioTrack offload state. (#134).
    • Make AudioTrackBufferSizeProvider a public interface.
    • Add ExoPlayer.setPreferredAudioDevice to set the preferred audio output device (#135).
    • Rename androidx.media3.exoplayer.audio.AudioProcessor to androidx.media3.common.audio.AudioProcessor.
    • Map 8-channel and 12-channel audio to the 7.1 and 7.1.4 channel masks respectively on all Android versions (google/ExoPlayer#10701).
  • Metadata:
    • MetadataRenderer can now be configured to render metadata as soon as they are available. Create an instance with MetadataRenderer(MetadataOutput, Looper, MetadataDecoderFactory, boolean) to specify whether the renderer will output metadata early or in sync with the player position.
  • DRM:
    • Work around a bug in the Android 13 ClearKey implementation that returns a non-empty but invalid license URL.
    • Fix setMediaDrmSession failed: session not opened error when switching between DRM schemes in a playlist (e.g. Widevine to ClearKey).
  • Text:
  • DASH:
  • UI:
  • Session:
    • Ensure commands are always executed in the correct order even if some require asynchronous resolution (#85).
    • Add DefaultMediaNotificationProvider.Builder to build DefaultMediaNotificationProvider instances. The builder can configure the notification ID, the notification channel ID and the notification channel name used by the provider. Also, add method DefaultMediaNotificationProvider.setSmallIcon(int) to set the notifications small icon. (#104).
    • Ensure commands sent before MediaController.release() are not dropped (#99).
    • SimpleBitmapLoader can load bitmap from file:// URIs (#108).
    • Fix assertion that prevents MediaController to seek over an ad in a period (#122).
    • When playback ends, the MediaSessionService is stopped from the foreground and a notification is shown to restart playback of the last played media item (#112).
    • Don't start a foreground service with a pending intent for pause (#167).
    • Manually hide the 'badge' associated with the notification created by DefaultNotificationProvider on API 26 and API 27 (the badge is automatically hidden on API 28+) (#131).
    • Fix bug where a second binder connection from a legacy MediaSession to a Media3 MediaController causes IllegalStateExceptions (#49).
  • RTSP:
    • Add H263 fragmented packet handling (#119).
    • Add support for MP4A-LATM (#162).
  • IMA:
    • Add timeout for loading ad information to handle cases where the IMA SDK gets stuck loading an ad (google/ExoPlayer#10510).
    • Prevent skipping mid-roll ads when seeking to the end of the content (google/ExoPlayer#10685).
    • Correctly calculate window duration for live streams with server-side inserted ads, for example IMA DAI (google/ExoPlayer#10764).
  • FFmpeg extension:
    • Add newly required flags to link FFmpeg libraries with NDK 23.1.7779620 and above (google/ExoPlayer#9933).
  • AV1 extension:
    • Update CMake version to avoid incompatibilities with the latest Android Studio releases (google/ExoPlayer#9933).
  • Cast extension:
    • Implement getDeviceInfo() to be able to identify CastPlayer when controlling playback with a MediaController (#142).
  • Transformer:
    • Add muxer watchdog timer to detect when generating an output sample is too slow.
  • Remove deprecated symbols:
    • Remove Transformer.Builder.setOutputMimeType(String). This feature has been removed. The MIME type will always be MP4 when the default muxer is used.