|
32 | 32 | zero. |
33 | 33 | * Allow the user to select the built-in speaker for playback on Wear OS |
34 | 34 | API 35+ (where the device advertises support for this). |
35 | | - * Handle preload callbacks asynchronously in `PreloadMediaSource` |
36 | | - ([#1568](https://github.com/androidx/media/issues/1568)). |
37 | 35 | * Defer the blocking call to |
38 | 36 | `Context.getSystemService(Context.AUDIO_SERVICE)` until audio focus |
39 | 37 | handling is enabled. This ensures the blocking call isn't done if audio |
40 | 38 | focus handling is not enabled |
41 | 39 | ([#1616](https://github.com/androidx/media/pull/1616)). |
42 | | - * Allow playback regardless of buffered duration when loading fails |
43 | | - ([#1571](https://github.com/androidx/media/issues/1571)). |
44 | 40 | * Transformer: |
45 | 41 | * Add `SurfaceAssetLoader`, which supports queueing video data to |
46 | 42 | Transformer via a `Surface`. |
|
50 | 46 | * Extractors: |
51 | 47 | * Allow `Mp4Extractor` and `FragmentedMp4Extractor` to identify H264 |
52 | 48 | samples that are not used as reference by subsequent samples. |
53 | | - * MP3: Fix `Searched too many bytes` error by correctly ignoring trailing |
54 | | - non-MP3 data based on the length field in an `Info` frame |
55 | | - ([#1480](https://github.com/androidx/media/issues/1480)). |
56 | 49 | * Add option to enable index-based seeking in `AmrExtractor`. |
57 | 50 | * DataSource: |
58 | 51 | * Update `HttpEngineDataSource` to allow use starting at version S |
|
70 | 63 | to remove a previously set `Surface` if the codec supports this |
71 | 64 | (`MediaCodecInfo.detachedSurfaceSupported`). |
72 | 65 | * Text: |
73 | | - * TTML: Fix handling of percentage `tts:fontSize` values to ensure they |
74 | | - are correctly inherited from parent nodes with percentage `tts:fontSize` |
75 | | - values. |
76 | | - * Fix `IndexOutOfBoundsException` in `LegacySubtitleUtil` due to |
77 | | - incorrectly handling the case of the requested output start time being |
78 | | - greater than or equal to the final event time in the `Subtitle` |
79 | | - ([#1516](https://github.com/androidx/media/issues/1516)). |
80 | 66 | * Metadata: |
81 | 67 | * Image: |
82 | 68 | * Add `ExternallyLoadedImageDecoder` for simplified integration with |
|
86 | 72 | read from a `FileDescriptor` |
87 | 73 | ([#3757](https://github.com/google/ExoPlayer/issues/3757)). |
88 | 74 | * DRM: |
89 | | - * Fix `android.media.MediaCodec$CryptoException: Operation not supported |
90 | | - in this configuration: ERROR_DRM_CANNOT_HANDLE` error on API 31+ devices |
91 | | - playing L1 Widevine content. This error is caused by an incomplete |
92 | | - implementation of the framework |
93 | | - [`MediaDrm.requiresSecureDecoder`](https://developer.android.com/reference/android/media/MediaDrm#requiresSecureDecoder\(java.lang.String\)) |
94 | | - method ([#1603](https://github.com/google/ExoPlayer/issues/1603)). |
95 | 75 | * Effect: |
96 | 76 | * Add `DefaultVideoFrameProcessor` workaround for minor `SurfaceTexture` |
97 | 77 | scaling. `SurfaceTexture` may include a small scaling that cuts off a |
98 | 78 | 1-texel border around the edge of a cropped buffer. This is now handled |
99 | 79 | such that output is closer to expected. |
100 | 80 | * Speed up `DefaultVideoFrameProcessor.queueInputBitmap()`. As a result, |
101 | 81 | exporting images to videos with `Transformer` is faster. |
102 | | - * Add a `release()` method to `GlObjectsProvider`. |
103 | 82 | * Muxers: |
104 | 83 | * IMA extension: |
105 | 84 | * Fix bug where clearing the playlist may cause an |
|
112 | 91 | playback can't be suppressed without the system crashing the service |
113 | 92 | with a `ForegroundServiceDidNotStartInTimeException` |
114 | 93 | ([#1528](https://github.com/google/ExoPlayer/issues/1528)). |
115 | | - * Transform a double-tap of `KEYCODE_HEADSETHOOK` into a 'seek to next' |
116 | | - action, as |
117 | | - [documented](https://developer.android.com/reference/androidx/media3/session/MediaSession#media-key-events-mapping) |
118 | | - ([#1493](https://github.com/androidx/media/issues/1493)). |
119 | | - * Handle `KEYCODE_HEADSETHOOK` as a 'play' command in |
120 | | - `MediaButtonReceiver` when deciding whether to ignore it to avoid a |
121 | | - `ForegroundServiceDidNotStartInTimeException` |
122 | | - ([#1581](https://github.com/google/ExoPlayer/issues/1581)). |
123 | 94 | * UI: |
124 | 95 | * Downloads: |
125 | 96 | * OkHttp Extension: |
|
128 | 99 | * HLS Extension: |
129 | 100 | * Smooth Streaming Extension: |
130 | 101 | * RTSP Extension: |
131 | | - * Skip invalid Media Descriptions in SDP parsing |
132 | | - ([#1087](https://github.com/androidx/media/issues/1472)). |
133 | 102 | * Decoder Extensions (FFmpeg, VP9, AV1, etc.): |
134 | 103 | * MIDI extension: |
135 | 104 | * Leanback extension: |
|
148 | 117 |
|
149 | 118 | ## 1.4 |
150 | 119 |
|
| 120 | +### 1.4.1 (2024-08-23) |
| 121 | + |
| 122 | +This release includes the following changes since the |
| 123 | +[1.4.0 release](#140-2024-07-24): |
| 124 | + |
| 125 | +* ExoPlayer: |
| 126 | + * Handle preload callbacks asynchronously in `PreloadMediaSource` |
| 127 | + ([#1568](https://github.com/androidx/media/issues/1568)). |
| 128 | + * Allow playback regardless of buffered duration when loading fails |
| 129 | + ([#1571](https://github.com/androidx/media/issues/1571)). |
| 130 | +* Extractors: |
| 131 | + * MP3: Fix `Searched too many bytes` error by correctly ignoring trailing |
| 132 | + non-MP3 data based on the length field in an `Info` frame |
| 133 | + ([#1480](https://github.com/androidx/media/issues/1480)). |
| 134 | +* Text: |
| 135 | + * TTML: Fix handling of percentage `tts:fontSize` values to ensure they |
| 136 | + are correctly inherited from parent nodes with percentage `tts:fontSize` |
| 137 | + values. |
| 138 | + * Fix `IndexOutOfBoundsException` in `LegacySubtitleUtil` due to |
| 139 | + incorrectly handling the case of the requested output start time being |
| 140 | + greater than or equal to the final event time in the `Subtitle` |
| 141 | + ([#1516](https://github.com/androidx/media/issues/1516)). |
| 142 | +* DRM: |
| 143 | + * Fix `android.media.MediaCodec$CryptoException: Operation not supported |
| 144 | + in this configuration: ERROR_DRM_CANNOT_HANDLE` error on API 31+ devices |
| 145 | + playing L1 Widevine content. This error is caused by an incomplete |
| 146 | + implementation of the framework |
| 147 | + [`MediaDrm.requiresSecureDecoder`](https://developer.android.com/reference/android/media/MediaDrm#requiresSecureDecoder\(java.lang.String\)) |
| 148 | + method ([#1603](https://github.com/androidx/media/issues/1603)). |
| 149 | +* Effect: |
| 150 | + * Add a `release()` method to `GlObjectsProvider`. |
| 151 | +* Session: |
| 152 | + * Transform a double-tap of `KEYCODE_HEADSETHOOK` into a 'seek to next' |
| 153 | + action, as |
| 154 | + [documented](https://developer.android.com/reference/androidx/media3/session/MediaSession#media-key-events-mapping) |
| 155 | + ([#1493](https://github.com/androidx/media/issues/1493)). |
| 156 | + * Handle `KEYCODE_HEADSETHOOK` as a 'play' command in |
| 157 | + `MediaButtonReceiver` when deciding whether to ignore it to avoid a |
| 158 | + `ForegroundServiceDidNotStartInTimeException` |
| 159 | + ([#1581](https://github.com/androidx/media/issues/1581)). |
| 160 | +* RTSP Extension: |
| 161 | + * Skip invalid Media Descriptions in SDP parsing |
| 162 | + ([#1087](https://github.com/androidx/media/issues/1472)). |
| 163 | + |
151 | 164 | ### 1.4.0 (2024-07-24) |
152 | 165 |
|
153 | 166 | This release includes the following changes since the |
|
0 commit comments