Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dev v3 #176

Open
wants to merge 161 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
161 commits
Select commit Hold shift + click to select a range
a4a4711
refactor(*): move views to a specific package
ThibaultBee Feb 26, 2024
73d5629
feat(*): introducing endpoint component
ThibaultBee Mar 6, 2024
40929db
feat(*): add a media muxer endpoint
ThibaultBee Mar 8, 2024
038be40
refactor(core): refactor how the encoder are handled. Avoid to recrea…
ThibaultBee Feb 26, 2024
b4fa4ad
fix(core): only create codec surface once
ThibaultBee Mar 6, 2024
b31b28e
feat(encoder): properly set their visibility
ThibaultBee Apr 24, 2024
58b4a85
fix(core): silence unchecked cast in camera settings
ThibaultBee Apr 24, 2024
afd92d4
feat(*): streamer elements have are accessible and have a public API …
ThibaultBee Apr 24, 2024
0689378
feat(*): rename helpers to info
ThibaultBee Apr 24, 2024
713768f
feat(*): add public interface for endpoint
ThibaultBee Apr 25, 2024
6fb4f4a
chore(core): move internal source folder
ThibaultBee Apr 25, 2024
3803f3b
refactor(core): rename file writer to file sink
ThibaultBee May 14, 2024
0654322
refactor(core): remove listener from constructor.
ThibaultBee May 14, 2024
ea85be4
refactor(core): remove listener from constructors
ThibaultBee May 15, 2024
db10994
feat(*): introducing a unique streamer not dependent of the endpoint
ThibaultBee May 23, 2024
671d6f5
refactor(*): move streampack core package to `streampack.core`
ThibaultBee Jun 24, 2024
4f1f03e
chore(*): move repositories to `streampack`
ThibaultBee Jun 24, 2024
e774042
refactor(*): rename streamer `exception` to `throwable`
ThibaultBee Jun 24, 2024
93437ff
fix(*): fix exception that happens when the stream is stopped
ThibaultBee Jun 24, 2024
85c2446
feat(srt): use srtdroid coroutine socket
ThibaultBee Jul 10, 2024
e7c4b8e
chore(rtmp): improve exception
ThibaultBee Jul 10, 2024
a2d23c7
refactor(demo): remove runBlocking
ThibaultBee Jul 11, 2024
ba77644
refactor(*): use Kotlin DSL instead of groovy
ThibaultBee Jul 17, 2024
2057c33
chore(ci): upgrade actions
ThibaultBee Jul 17, 2024
6f32f97
feat(services): adapt to streamer open/close mechanism
ThibaultBee Jul 17, 2024
c67c6b8
feat(srt): make srtdroid available
ThibaultBee Aug 8, 2024
c02ea4e
style(core): remove empty end of line
ThibaultBee Aug 8, 2024
ea3e889
feat(core): made sink write return written length
ThibaultBee Aug 8, 2024
f497859
fix(core): synchronize media muxer endpoint
ThibaultBee Aug 8, 2024
bbe4939
test(core): add test on endpoints
ThibaultBee Aug 8, 2024
493a024
refactor(core): clean and rename few parameters
ThibaultBee Aug 8, 2024
1bbaf6a
fix(core): return when `stopStream` is called on CodecSurface
ThibaultBee Aug 8, 2024
2e77b66
fix(core): microphone: isRunning is a getter
ThibaultBee Aug 8, 2024
8ad966d
refactor(core): endpoint: move release to the interface
ThibaultBee Aug 9, 2024
3315cd5
chore(demo): fix a typo
ThibaultBee Aug 9, 2024
d836f6e
feat(core): return a specific exception when we fail to infer from th…
ThibaultBee Aug 9, 2024
bf7ad16
fix(core): fix dynamic endpoint isOpened
ThibaultBee Aug 9, 2024
7f80e91
test(core): add test on dynamic endpoint
ThibaultBee Aug 9, 2024
f43f1fe
refactor(core): lazify object properties
ThibaultBee Aug 14, 2024
f183343
feat(srt): add SrtMediaDescriptor from string
ThibaultBee Aug 16, 2024
753fbbb
fix(srt): add support for stream id with #! format
ThibaultBee Aug 26, 2024
4a4842e
feat(core): add possibility to stream without preview
ThibaultBee Aug 28, 2024
310e8e2
test(core): add test on camera streamer
ThibaultBee Aug 28, 2024
90a8454
fix(*): multiple fixes on screen recorder services
ThibaultBee Aug 29, 2024
8670095
refactor(*): use `requireNotNull` instead of `require` != null
ThibaultBee Aug 29, 2024
ce88d9f
fix(demos): camera: uncheck live button when application is put to ba…
ThibaultBee Aug 30, 2024
41b12e0
fix(core): streamer `close` must stop stream prior to `close`
ThibaultBee Aug 30, 2024
8889fba
refactor(extension): make srt and rtmp socket nullable
ThibaultBee Aug 30, 2024
18e079f
clean(core): remove useless try/catch
ThibaultBee Sep 2, 2024
96643f3
feat(core): add `String` API for `UriMediaDescriptor`
ThibaultBee Sep 2, 2024
e9be929
fix(srt): properly handle when srt connection is remotely closed
ThibaultBee Sep 2, 2024
694f292
refactor(*): rename `isOpened` to `isOpen`
ThibaultBee Sep 2, 2024
280ee01
refactor(*): catch `Throwable` instead of `Exception`
ThibaultBee Sep 2, 2024
541d170
refactor(core): move public extensions to specific package
ThibaultBee Sep 2, 2024
c0aa8e1
feat(*): introducing `ClosedException`
ThibaultBee Sep 2, 2024
a15a877
feat(*): add streamer extension to open with Uri and String
ThibaultBee Sep 3, 2024
4d84504
chore(core): improve comment on `DynamicEndpoint`
ThibaultBee Sep 3, 2024
cdc8622
fix(ui): make `getPreviewOutputSize` public for backward compatibility
ThibaultBee Sep 3, 2024
428dfca
chore(core): remove deprecated comment
ThibaultBee Sep 3, 2024
4b5ce27
fix(ci): fix CodeQL workflow due to using custom gradle kts
ThibaultBee Sep 5, 2024
9386803
clean(core): refactor chunk output stream
ThibaultBee Sep 5, 2024
647fbd4
docs(core): add comment on `UriMediaDescriptor`
ThibaultBee Sep 5, 2024
b942684
fix(demos): camera: fix the part where extension is removed
ThibaultBee Sep 5, 2024
43fbc3c
test(core): add tests for camera preview
ThibaultBee Sep 9, 2024
79cae70
chore(ci): get emulator logcat and only test for API 34
ThibaultBee Sep 9, 2024
83df111
refactor(core): move streamer extensions to streamer package
ThibaultBee Sep 9, 2024
bdb6cb2
feat(core): make bitrate and co more readable
ThibaultBee Sep 9, 2024
59c8974
test(*): add long running live streaming test to api.video
ThibaultBee Sep 9, 2024
53c16a9
feat(core): add an onclose reason for callback streamer
ThibaultBee Sep 10, 2024
824d90a
chore(deps): upgrade srtdroid to fix a crash on close
ThibaultBee Sep 11, 2024
5dfaf9e
fix(core): mediacodec: do not reconfigure if stream has not been running
ThibaultBee Sep 11, 2024
652dd71
feat(core): streamer: add a camera callback streamer
ThibaultBee Sep 11, 2024
bff206a
fix(*): sink and endpoint return instead of throwing on `open`
ThibaultBee Sep 12, 2024
b3072d7
fix(ci): do not run test on build workflow
ThibaultBee Sep 12, 2024
18b80f0
feat(core): rename public and internal interfaces
ThibaultBee Sep 12, 2024
ca55752
feat(core): streamer: use extension for camera streamer startPreview …
ThibaultBee Sep 13, 2024
82b090d
refactor(test): use parametrized test instead of inheritance
ThibaultBee Sep 13, 2024
5015ab8
feat(test): add test for streamer
ThibaultBee Sep 13, 2024
55a5110
feat(test): core: add test for sink and endpoint state
ThibaultBee Sep 16, 2024
6ac147e
fix(core): source: throw exception if source was running when calling…
ThibaultBee Sep 16, 2024
cb2ec1e
feat(core): config: add isEquals and hashcode for config
ThibaultBee Sep 16, 2024
5d0d35d
feat(core): add experimental support of other AAC mime type
ThibaultBee Sep 16, 2024
2fed3e4
fix(srt): remove ttl to avoid spurious frame drop
ThibaultBee Sep 17, 2024
f9293ee
refactor(*): move streamer extension to their parent interface
ThibaultBee Sep 18, 2024
9ad54dc
fix(srt): fix remote disconnection on SrtSink
ThibaultBee Sep 19, 2024
acc4944
chore(deps): upgrade few dependencies
ThibaultBee Sep 19, 2024
2aa2665
docs(*): improve comment for callback streamer
ThibaultBee Sep 23, 2024
dcf67c0
chore(deps): bump view finder to alpha08
ThibaultBee Sep 23, 2024
6790d8b
fix(core): streamer: fix camera streamers video source interface
ThibaultBee Sep 23, 2024
a98107d
feat(core): streamer: add a way to pass a specific audio source
ThibaultBee Sep 23, 2024
eb70c17
refactor(core): source: rename screen source to media projection source
ThibaultBee Sep 24, 2024
167fadc
refactor(core): move enable noise suppressor and enable echo cancelle…
ThibaultBee Sep 24, 2024
7003519
feat(core): add media projection audio source
ThibaultBee Sep 24, 2024
d4f6097
feat(core): add an API to get current audio and video config
ThibaultBee Sep 25, 2024
3e8aaff
feat(core): camera: add an API to get whether camera is previewing
ThibaultBee Sep 30, 2024
1826aa3
chore(core): make string extension internal
ThibaultBee Oct 2, 2024
7d03c5b
feat(ui): add preview API for camerax CameraViewFinder
ThibaultBee Oct 2, 2024
961ad46
fix(core): source: camera: replace logger
ThibaultBee Oct 3, 2024
f75109a
fix(demos): camera: do not release streamer in the lifecycle observer…
ThibaultBee Oct 3, 2024
fe018c6
refactor(ui): simplify PreviewView
ThibaultBee Oct 3, 2024
7b75776
fix(core): streamer: make dispatcher private
ThibaultBee Oct 9, 2024
a08b390
chore(deps): srt: upgrade to srtdroid 1.8.4
ThibaultBee Oct 24, 2024
4da0a6b
fix(demos): screenrecorder: fix enableAudio flag
ThibaultBee Nov 13, 2024
7eed21c
chore(deps): upgrade dependencies
ThibaultBee Nov 14, 2024
a03a66e
fix(demos): camera: avoid to recreate a view model on device rotation
ThibaultBee Nov 15, 2024
920109e
refactor(core): replace CodecSurface by the SurfaceProcessor
ThibaultBee Oct 5, 2024
afd83e1
fix(demos): camera: add support for audio only streamer
ThibaultBee Nov 20, 2024
d8eaa4c
fix(tests): core: fix record tests when devices is in landscape
ThibaultBee Nov 21, 2024
7b2e848
feat(*): add new audio effects
ThibaultBee Nov 17, 2024
0a20b67
feat(core): camera: add an API to set custom camera settings
ThibaultBee Nov 25, 2024
60d5195
chore(version): bump to 3.0.0-SNAPSHOT
ThibaultBee Nov 25, 2024
2c7a25e
fix(srt): hide SrtEndpoint constructor
ThibaultBee Nov 25, 2024
1d92641
fix(core): streamer: do not update transformation when config has not…
ThibaultBee Nov 26, 2024
6f88155
clean(core): ts: use class instead of package
ThibaultBee Nov 26, 2024
7676c8c
fix(core): streamer: recreate a SurfaceTexture on stopStream if the e…
ThibaultBee Nov 26, 2024
ca297d3
refactor(core): rename deviceRotation to displayRotation as it only f…
ThibaultBee Nov 26, 2024
69c43ac
fix(core): streamer: fix requires permission for camera
ThibaultBee Nov 27, 2024
2c4bf69
feat(core): data: add IntDef annotation for byte format and channel c…
ThibaultBee Nov 27, 2024
0d1e69b
feat(ui): restart preview if previous was running
ThibaultBee Nov 30, 2024
eb99947
refactor(core): rename `camera` setter/getter to `cameraId`
ThibaultBee Nov 30, 2024
698d86f
fix(core): fix concurrent access on outputSurfaces when releasing sur…
ThibaultBee Nov 30, 2024
6e08816
fix(demo): camera: fix switch to audio enable/disable for the camera …
ThibaultBee Dec 2, 2024
49288b0
fix(core): muxer: on send pmt/pat/... when muxer is started
ThibaultBee Dec 3, 2024
793f455
fix(core): fix crash on camera on few qualcomm board.
ThibaultBee Dec 9, 2024
30f7d59
feat(core): improve the way camera and encoder are stopped
ThibaultBee Dec 9, 2024
a122ef8
fix(core): regulator: fix video bitrate range unit
ThibaultBee Dec 11, 2024
1cd08aa
refactor(demos): camera: move to better architecture
ThibaultBee Dec 11, 2024
f2bef1c
feat(test): add more descriptors to `CameraStreamerMultiStreamTest`
ThibaultBee Dec 11, 2024
cfccc91
feat(core): add multiple endpoints: combine, dual, dynamic local
ThibaultBee Dec 11, 2024
7947dce
chore(core): fix a type on releasable interface
ThibaultBee Dec 11, 2024
0aef739
chore(deps): upgrade dependencies
ThibaultBee Dec 12, 2024
965349e
feat(core): add a new rotation provider: from display listener
ThibaultBee Dec 13, 2024
13e7cfb
fix(extensions): upgrade srtdroid to fix a resource leak at `connect`
ThibaultBee Dec 16, 2024
0e82c3b
feat(core): camera: add an API for the AWB lock
ThibaultBee Dec 16, 2024
00a48e5
feat(*): sinks: add an abstract sink
ThibaultBee Dec 17, 2024
0797c29
feat(core): avoid restarting the camera on rotation update
ThibaultBee Dec 17, 2024
19b472f
fix(demos): camera: fix default parameters
ThibaultBee Dec 17, 2024
dd758ab
refactor(*): move error to their own classes
ThibaultBee Dec 17, 2024
e98ab3a
chore(*): clean packages
ThibaultBee Dec 18, 2024
d8caec8
chore(test): add add test on internal mp4 muxer
ThibaultBee Dec 18, 2024
c7179e5
Fixed hevc vps parsing and assembly sequence errors
moliyadi Dec 17, 2024
ee414cf
docs(core): improve comments for camera extensions
ThibaultBee Dec 18, 2024
772e026
docs(README.md): improve StreamPack description
ThibaultBee Dec 18, 2024
bed2a6d
feat(core): add a lifecycle observer for view models
ThibaultBee Dec 19, 2024
b11b2c9
docs(core): fix a @throws comment
ThibaultBee Dec 19, 2024
f0dda84
fix(core): streamer: remove usage of source info provider
ThibaultBee Dec 19, 2024
b77e556
feat(core): add specific config for codec and sources
ThibaultBee Dec 21, 2024
65f3e0c
refactor(*): move current streamer to single
ThibaultBee Dec 21, 2024
89d2595
refactor(*): rename preview view to camera preview view
ThibaultBee Dec 21, 2024
25c8cc5
fix(core): use single streamer instead of coroutine single streamer
ThibaultBee Jan 6, 2025
4327e8c
fix(core): fix concurrency exception due to camera source
ThibaultBee Jan 6, 2025
e382aca
fix(core): made packet and srt packet properties non mutable
ThibaultBee Jan 8, 2025
bfb8159
refactor(core): rename internal package to elements
ThibaultBee Jan 10, 2025
b9a22ee
feat(core): camera: add a setting to lock auto exposure
ThibaultBee Jan 10, 2025
09cee4b
refactor(core): make muxer name pascal case
ThibaultBee Jan 10, 2025
67245ed
docs(*): update documentation with v3 features
ThibaultBee Jan 10, 2025
6c2c12d
chore(deps): upgrade to AGP 8.8.0
ThibaultBee Jan 11, 2025
2e3e965
refactor(core): move global extensions to specific packages
ThibaultBee Jan 13, 2025
c96327d
fix(core): rename composite endpoint interface
ThibaultBee Jan 13, 2025
257ab70
refactor(core): use 2 different interfaces for audio and video source…
ThibaultBee Jan 14, 2025
7920b7b
fix(core): endpoint info union should be name intersect instead
ThibaultBee Jan 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 3 additions & 5 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,16 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v3
- uses: actions/setup-java@v4
with:
java-version: 17
distribution: 'adopt'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build
run: ./gradlew build
- name: Assemble
run: ./gradlew assembleDebug
run: ./gradlew assemble
- name: Upload APKs
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: apks
path: |
Expand Down
10 changes: 2 additions & 8 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ jobs:
matrix:
include:
- language: java-kotlin
build-mode: autobuild
build-mode: manual
# CodeQL supports the following values keywords for 'language': 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift'
# Use `c-cpp` to analyze code written in C, C++ or both
# Use 'java-kotlin' to analyze code written in Java, Kotlin or both
Expand Down Expand Up @@ -84,13 +84,7 @@ jobs:
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
- if: matrix.build-mode == 'manual'
shell: bash
run: |
echo 'If you are using a "manual" build mode for one or more of the' \
'languages you are analyzing, replace this with the commands to build' \
'your code, for example:'
echo ' make bootstrap'
echo ' make release'
exit 1
run: ./gradlew --scan --full-stacktrace -Dorg.gradle.dependency.verification=off compileDebugAndroidTestSources

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v3
- uses: actions/setup-java@v4
with:
java-version: 17
distribution: 'adopt'
Expand Down
18 changes: 9 additions & 9 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,22 @@ jobs:
packages: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v3
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'adopt'
- name: Setup git config (for patch command)
run: |
git config --global user.name "GitHub Actions Bot"
git config --global user.email "<>"
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@v1
- name: Decode the secret key
run: echo $GPG_KEYRING_FILE_CONTENT | base64 --decode > ~/secring.gpg
env:
GPG_KEYRING_FILE_CONTENT: "${{ secrets.GPG_KEYRING_FILE_CONTENT }}"
- name: Publish package
run: ./gradlew publish -Psigning.secretKeyRingFile=$(echo ~/secring.gpg) -Psigning.password=$GPG_PASSPHRASE -Psigning.keyId=$GPG_KEY_ID
run: ./gradlew publish
env:
MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}
GPG_KEY: ${{ secrets.GPG_KEY }}
GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }}
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
GPG_PASSWORD: ${{ secrets.GPG_PASSWORD }}
18 changes: 14 additions & 4 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v3
- uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'adopt'
Expand All @@ -29,7 +29,7 @@ jobs:
timeout-minutes: 55
strategy:
matrix:
api-level: [ 26, 34 ]
api-level: [ 34 ]
steps:
- name: Enable KVM group perms
run: |
Expand All @@ -51,10 +51,20 @@ jobs:
arch: x86_64
disable-animations: true
emulator-options: -no-snapshot -no-window -no-boot-anim -camera-back emulated -camera-front emulated -gpu swiftshader_indirect
script: ./gradlew connectedCheck
script: |
adb root
adb logcat -c
touch emulator.log
chmod 777 emulator.log
adb logcat >> emulator.log &
./gradlew -Pandroid.testInstrumentationRunnerArguments.INTEGRATION_TESTS_API_KEY=$INTEGRATION_TESTS_API_KEY connectedCheck
env:
INTEGRATION_TESTS_API_KEY: ${{ secrets.INTEGRATION_TESTS_API_KEY }}
- name: Upload test reports
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
with:
name: test-reports-${{ matrix.api-level }}
path: '**/build/reports/androidTests'
path: |
'**/build/reports/androidTests'
emulator.log
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ build
/captures
.externalNativeBuild
.cxx
.kotlin
112 changes: 0 additions & 112 deletions DEVELOPER_README.md

This file was deleted.

Loading
Loading