## ThibaultBee/StreamPack — 3.0.2…3.1.0

_85 commits._

### Features
- **feat(core): audio: use `AudioSource.CAMCORDER` as the default audio source** (3a27066)
- **feat(*): preview: add a timeout for autofocus trigger** (ee2640a)
- **feat(*): replace krtmp with komuxer** (4f887fe)
- **feat(demos): camera: make startStream cancellable** (94c85a8)
- **feat(*): move composite endpoints to the endpoints package** (3a70574)
- **feat(*): replace rtmp and flv by krtmp** (f3aa59d)

### Fixes
- **fix(buildSrc): add a default description if project description is missing.** (dd89ad1)
- **fix(core): fix a warning due to nullable in media codec helper** (6433bd9)
- **fix(core): camera: close session controller when removing last output** (e378ae5)
- **fix(core): avoid adding the same surface to the `DefaultSurfaceProcessor`** (12555c8)
- **fix(*): fixes multiple race condition/issue when polling start/stop preview quickly** (4ab64ea)
- **fix(*): the user is now responsible of the mutex of the preview interface methods.** (31f7237)
- **fix(*): fix a race condition when going to/from settings quickly** (ee8f7a2)
- **fix(*): fix a black preview when going back from the settings** (4e22976)
- **fix(README.md): fix streamer elements relative link** (997aca9)
- **fix(*): fix few issues with the preview view and camera source for preview** (0c5d72f)
- **fix(ui): call stop preview to a specific dispatcher and use SharedFlow for surface flow** (6090051)
- **fix(core): streamer: in lifecycle observer call suspending methods on the lifecycleScope instead of run blocking** (3c001f4)
- **fix(demos): camera: prevent task with mutex to be called on the `viewModelScope` dispatcher (Main)** (9ddfa79)
- **fix(core): camera: dispatch task with mutex to a specific dispatcher** (600ced3)
- **fix(core): fix a dealock in the streamer pipeline** (294856a)
- **fix(demos): camera: call permission in `onResume` instead of `onStart` to fix a preview freeze when going quickly to settings and back** (78f1dc2)
- **fix(core): make open and close run on a specific lock.** (127af6b)
- **fix(rtmp): call connect on the ioDispatcher thread** (1bdd2c9)
- **fix(demos): camera: return the exception type in the error live data if message is null** (c0b954a)
- **fix(core): microphone: add the audiosource in the microphone source factory** (6eb0527)
- **fix(core): camera: only use one mutex to avoid race condition** (489195a)
- **fix(*): force a cameraId to the camera source factory so that the `isSourceEquals` could work.** (ff3e458)
- **fix(demos): camera: fix a regression on the support of the selected fps by the cameras** (97cc2e8)
- **fix(core): camera: call setRepeatingSession when fps is set directly** (3855e9c)
- **fix(core): set sensor frame duration as the same time as AE target fps range** (ddb9e2b)
- **fix(ui): dispatch the zoom scale to avoid a possible ANR** (481f45b)
- **fix(*): removing few dokka warnings** (6962bc9)
- **fix(*): removing few warnings** (851edd2)
- **fix(core): processor: force to reload the video timebase converter at stopStream** (ea67514)
- **fix(core): fix the timestamp after lock.** (7f51535)
- **fix(core): camera: try to fix the autofocus point on front camera** (1190412)
- **fix(core): camera: try/catch the cancel autofocus.** (bc29824)
- **fix(core): camera: stop the autofocus synchronously during the ontap trigger before to trigger again** (593b8bf)
- **fix(core): camera: fix focus on tap orientation on front camera** (e27bd6a)
- **fix(core): camera: remove burst session for camera settings as StreamPack must only use repeating sessions** (4ed022d)
- **fix(buildSrc): remove javadoc from artifact to avoid `.UnsupportedOperationException: PermittedSubclasses requires ASM9`** (8bf454c)
- **fix(*): properly returns the message closed exception message when only a cause is passed as a parameter** (ee3f86e)
- **fix(core): fix a crash on stopStream when an async error is thrown and the pipeline is released** (a675dd5)
- **fix(core): fix a regression in dynamic endpoint unit test** (a9f3fbd)
- **fix(core): fix a regression in the test of OpusCsdParser** (8c7de4b)
- **fix(demos): screenrecorder: add missing flv dependencies** (9ea0f2a)
- **fix(rtmp): workaround for excessive memory allocations for kotlinx-io segment pool** (e0fdc8a)
- **fix(rtmp): workaround for RTMP exception when connection is lost** (2b585ee)
- **fix(rtmp): multiple fixes to correctly stops an async endpoint** (e4906ff)
- **fix(rtmp): drop negative timestamp and correctly close FLVData** (a44255b)
- **fix(rtmp): make add stream suspendable** (67c6333)
- **fix(core): make frame pts and dts immutable** (4e2ab2a)
- **fix(core): fix a regression in TS PES test due to a missing mock** (e136e67)

### Backend
- **clean(core): remove unused package in the previewable interface** (709c194)

### Chore
- **chore(version): bump to 3.1.0** (7fa1fbc)
- **chore(README.md): add a note for custom output** (cec0673)
- **refactor(ui): remove the usage of a stateflow as it could drop events** (ee5047c)
- **refactor(ui): simplify the preview view in order to fix a deadlock with the preview** (edddbab)
- **refactor(*): remove few `runBlocking`** (717a2a7)
- **refactor(core): camera: pass the camera characteristics to the camera controller** (4d19c00)
- **chore(deps): upgrading komuxer to 0.3.2** (d6a8f7c)
- **refactor(srt): move _isOpenFlow to invokeOnCompletion** (779c542)
- **refactor(*): remove calls to `runBlocking`** (113ea7e)
- **refactor(core): add an API to set timebase instead of recreating the source output surface.** (9a65220)
- **refactor(core): codec: avoid modifying the BufferInfo.** (2bb3c64)
- **refactor(*): camera settings are now suspendable to avoid using runBlocking** (d3e2055)
- **refactor(buildSrc): upgrade java version to 18** (a1dcfd8)
- **refactor(*): move to convention plugin and upgrade dokka** (e538d0f)
- **chore(version):bump to 3.1.0 snapshot** (f2ae95b)
- **refactor(core): file: use file output stream to write buffer as ByteBuffer** (827e04f)
- **refactor(core): camera: pass camera characteristics instead of the camera manager in the camera settings** (5a5b56a)
- **chore(deps): upgrade srtdroid to add support for `packetfilter`** (7087b84)
- **refactor(*): move packet and srt packet to endpoint package** (d759780)
- **refactor(*): rewrite frame to improve memory allocation** (dc21337)
- **chore(deps): upgrade komuxer to 0.3.1 to fix RTMPS connection** (cf2e4ff)
- **chore(settings.gradle): remove `mavenLocal` from the list of repositories** (5cb4228)
- **refactor(*): use a separate muxer for tab builder and muxer/rtmp client in RTMP and FLV endpoints** (4f9670b)
- **refactor(*): move closed exception to endpoint package** (8603a9b)
- **refactor(core): make closed exception inherit from IOException instead of Exception** (c6a5f16)
- **refactor(core): pass the flv frame to the RTMP client or the file write by a dedicated channel** (305d66b)
- **refactor(core): endpoint: add a way to returns asynchronous throwable that happens on stream** (28bc232)
- **chore(deps): bump kotlin from 2.2.10 to 2.2.20** (3198d85)
- **chore(deps): bump androidxNavigation from 2.9.3 to 2.9.5** (857f49a)
- **chore(deps): bump com.google.guava:guava** (e7b3d92)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/ThibaultBee/StreamPack?utm_source=github-action)._