- Add 16KB page size support, required for Android 15 #277 by @vamshi-dhulipala
- Release file descriptor even when releasing of android muxer fails #274 by @vamshi-dhulipala
- Refactors TransformationJob to handle terminal states in a more determisitic fashion #273 by @vamshi-dhulipala
- Fixes a null pointer crash (Github Issue #269) #271 by @vamshi-dhulipala
- Fixes a crash in demo app due to a null pointer #270 by @vamshi-dhulipala
- Fix potential buffer overflow issue #263 by @Nailik
- Always set TargetFormat value in TrackTransformationInfo object #262 by @vamshi-dhulipala
- Muxers: integrate native muxer with LiTr #253 by @IanDBird
- Upgrade Build Tools / SDK / Kotlin #249 by @IanDBird
- Muxers: Add native muxer implementation #248 by @IanDBird
- Add missing duration target track metadata to decoder output format #247
- Muxers: Clean up old artifacts if build fails #246 by @IanDBird
- Add missing duration target track metadata when adding track to muxer #244
- Muxers: Add native headers required for building (Alt) #243 by @IanDBird
- Implement skeleton of native litr-muxers module #239 by @IanDBird
- Move RecordCamera2Fragment to fragment package #234 by @IanDBird
- Implement Camera2 support as a MediaSource [#232] (#232) by @IanDBird
- Add missing duration target track metadata when adding track to muxer [#244] (#244)
- Add missing duration target track metadata to decoder output format [#247] (#247)
- Enforce transcoding of incompatible audio track(s) to compatible codecs [#220] (#220)
- Add TransformationOptions parameter to remove metadata tracks [#221] (#221)
- Fix for incorrect audio frame presentation time when trimming [#225] (#225)
- Default to 30 fps target frame rate if parameter is missing [#227] (#227)
- Set default buffer size when creating VideoRendererInputSurface [#228] (#228)
- Implement AudioRecord support for audio track [#229] (#229) by @IanDBird
- Allow transcoders advance to next track or EoS past selection end [#230] (#230)
- Implementation of audio overlay filter [#199] (#199)
- Release BufferFilter's when renderer is released [#200] (#200)
- Allocate/deallocate native input/output buffers on init/release [#202] (#202)
- Add ability to reduce the target video's frame rate [#208] (#208) by @niekdev
- Add TransformationOptions flag to remove audio track(s) [#209] (#209)
- Fix for incorrect bitrate extraction in size estimation [#212] (#212)
- Use source (or default) frame rate when creating video MediaFormat [#213] (#213)
- Use null target MediaFormat for generic tracks [#214] (#214)
- Audio filter that changes track volume [#193] (#193)
- Fix ConcurrentModificationException when removing jobs [#195] (#195) by @ReallyVasiliy
- Notify TransformationListener before releasing TransformationJob [#198] (#198) by @simekadam
- Fix for incorrect orientation angle calculation during MVP matrix initialization [#185] (#185) by @kolesnikov-pasha
- AudioRenderer now picks correct AudioProcessor when audio format changes during transcoding [#190] (#190)
- Fix for error callback is not called with InsufficientDiskSpace exception [#179] (#179) by @mikeshuttjuvo
- Add new transform method that accepts output URI [#182] (#182)
- Support for transcoding video to VP8/VP9 [#183] (#183)
- Remove deprecated MediaTransformer methods [#184] (#184)
- Fix for missing documentation jar in release
- Fix for not yet started thumbnail jobs not being cleared when cancelled #177
This release introduces a lot of audio processing improvements and fixes:
- A new AudioRenderer, focused solely on audio processing
- Capability to change sampling rate with high performance and high quality, provided by integrating Oboe resampler.
- Capability to mix stereo audio to mono and vice versa.
- Support for audio filters.
- Support for writing raw audio into WAV file.
- Fix for dropped audio frames.
- Allow non-negative reads from source buffer during transcoding #133
- Fix GlVideoRenderer.hasFilters() logic #135
- Obtain frame rate and interval from MediaFormat as either float or int #138
- Do not set "profile" (MediaCodec.KEY_PROFILE) on the encoder #139
- Add new target size estimation APIs to MediaTransformer #155
- Fix for incorrect size estimation with range #154
- New AudioRenderer implementation, with a render queue #159
- Support for extracting a series of video thumbnails #146
- New MockVideoMediaSource and PassthroughDecoder implementations #122 which provide capability to create "empty" video
- Remove fallback codec lookup configuration flags #114
- Bump dependencies
- Bump build tools and compile/target SDK levels to 30
- Enable Kotlin
- Support writing to Uri (by @Ma7moudHatem) #114
- Support for reducing audio sampling rate (by @Ma7moudHatem) #111
- Enhance the logic for finding a media codec for a media format (by @Ma7moudHatem) #109
- Release unused anymore MediaMetadataRetriever instance (by @Ma7moudHatem) #106
- Make the default FRAME_WAIT_TIMEOUT equals to zero, because on some device the previous value cause a very very long processing time (by @Ma7moudHatem) #105
- Fix a DivideByZero exception when track duration is shorter than 1 sec (by @Ma7moudHatem) #104
- Fix renderFrame logic in PassthroughSoftwareRenderer (by @Ma7moudHatem) #103
- Fix the fallbackToGetCodecByType logic (by @Ma7moudHatem) #98
- Moved artifact publishing from JCenter to Maven Central #95