roc-streaming / roc-droid Goto Github PK
View Code? Open in Web Editor NEWRoc for Android!
Home Page: https://roc-streaming.org
License: Mozilla Public License 2.0
Roc for Android!
Home Page: https://roc-streaming.org
License: Mozilla Public License 2.0
There is a potential race in startStopReceiver and startStopSender.
fun startStopReceiver(@Suppress("UNUSED_PARAMETER") view: View) {
if (senderReceiverService.isReceiverAlive()) {
senderReceiverService.stopReceiver()
} else {
senderReceiverService.startReceiver()
}
}
Assume that the user presses STOP, startStopReceiver() is invoked, and it calls stopReceiver(). Then receiver thread receives interrupt exception and invokes senderChanged(false). UI thread handles it and renames button from STOP to START. Then user presses START button and startStopReceiver() is invoked again.
The code above expects that in this situation isReceiverAlive() will return false, so that we will call startReceiver().
However, it's possible that the receiver thread already called senderChanged(), but didn't finish yet, and isReceiverAlive() will report true. In result, the user presses START, but we call stopReceiver() and don't try to start anything.
This race is present for both receiver and sender.
add on f-droid
This is the same problem as roc-streaming/roc-java#72. The solution would be also the same - update gradle version.
Any sound playing through Chrome or Firefox browsers is not captured.
Create entirely white icon for the notification bar
We can use github actions to run build on each tag, build apk, and publish it as release asset. Such assets will be attached to releases on this page: https://github.com/roc-streaming/roc-droid/releases
In result, we can just push a tag, and prebuilt APK will be automatically available for users.
roc-droid Flutter migration child issue.
Update various parts of current continuous Integration processes.
adb: failed to install roc-droid-0.0.5.apk: Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE: Package org.rocstreaming.rocdroid signatures do not match previously installed version; ignoring!]
Is this expected?
Register foreground service with persistent notification to allow sender and receiver to run even if the app is closed. We would also need a button in the notification that stops and terminates the service.
See also #1, the implementation of these issues might overlap.
Add CI for two platforms:
In #5 we've implemented recording from mic and sending to remote sender. It would be also nice to be able to grab sound played by other apps on phone instead of reading it from mic. It should be feasible using playback capture API introduced in Android 10.
Currently we use notification with two small text buttons to stop sender and receiver. If the user started sender, notification will have "stop sender" button. The same for receiver. If the user didn't start anything, no notification is present.
Probably the following behavior would be more convenient:
Rationale:
the user usually decides once what they need (sender or receiver or both) and then most times needs to start and stop them according to that decision; so it would be reasonable to have a quick button for that;
one big button to start or stop everything is easier to use;
if the user stopped everything via notification, chances are that they will want to start them back after a while, so it's better to keep notification.
Add https://github.com/gavv/pull-request-artifacts to CI, so that for a pull request, it will automatically build APK and attach it to PR.
roc-droid Flutter migration child issue.
Replicate current UI with Dart/Flutter
I have the following pipewire config which works with another pipewire instance, but doesn't work with roc-droid (I only hear awful noises):
{
"context.modules": [
{
"args": {
"fec.code": "ldpc",
"remote.ip": "192.168.0.110",
"sink.name": "ROC sink droid",
"sink.props": {
"node.description": "ROC sink droid",
"node.name": "roc-sink-droid"
}
},
"name": "libpipewire-module-roc-sink"
}
]
}
When I remove "fec.code": "ldpc",
line, it starts to work.
Using this app at night hurts my eyes :)
Hi,
This is a feature request:
Is it possible to add 2 options for Latency:
One for the actual device DSP Buffer Size and one for the Network Buffer Size?
Im getting around 200-300 ms of latency, and I want to be able to reduce that to like 40 (I have tested it out on my Laptop, our network Infrastructure can handle such small latency).
Hope this feature get's added soon!
Hello, the android app on my S9+ has a very large amount of latency, measured when using jack_delay.
Line in - headphone direct loop using standard aux cable
Line in loop = 17-18ms
ROC direct localhost loop measured acceptable, when setting sess_delay to 30ms (any lower and it stopped working consitently)
ROC - Localhost loop = 45-50ms
ROC using USB tether while connecting headphone directly to line IN, ping between devices measured about 4-5ms was ludicrously high for the setup
ROC - USB tether = 350-365ms average, but consistent.
as a comparison to similar real time audio setup, I tested sonobus
I didn't test a localhost loop, but the monitor alone was around 42ms.
sonobus when connected via usb network, same loop with headphones and same cord
sonobus - USB tether = 80-75ms with spikes to 90ms.
I unfortunately do not have any other devices to test with
the app does not remember the last used address, and resets it to 192.168.0.1 whenever it's closed. android 13
We should allow the user to select devices for playback (receiver) and recording (sender).
This may be useful: https://github.com/googlearchive/android-audio-high-performance/tree/master/audio-device/src/main/java/com/google/sample/audio_device (AudioDeviceSpinner is a widget to select audio device).
I have been using it as a receiver and have no problem but I have an issue while using it as a sender, I also try playing several different apps.
Device: Asus X01BD running on /e/OS 1.8.1
Remote (PC): EndeavourOS ArchLinux x86_64
Receiver command: roc-recv -vv -s rtp+rs8m://<REMOTE_IP>:10001 -r rs8m://<REMOTE_IP>:10002 -o alsa://default
I don't see any activity indicating audio is received:
roc-droid Flutter migration child issue.
Prepare Flutter project for future development.
We show allow to record audio from microphone or local apps (i.e. capture their playback) and pass it to Roc sender.
We should allow the user to select the input device and to configure the address of the remote receiver to which to connect the sender.
roc-droid Flutter migration child issue.
org.rocstreaming.rocdroid
(as in current release)roc-droid.apk
, roc-droid.app
, roc-droid.exe
(as in current release)Roc Droid
Roc for Android!
Roc Streaming
Roc Streaming authors
There is also an issue to make notification persistent: #17
Add a page that displays list of all dependencies and their licenses (including transitive ones).
Java dependencies can be gathered from gradle (I believe there should be gradle plugins for that). Information about roc license and dependencies can be found here:
Currently APK is building with debugging enabled.
We need to sign release apk (probably with https://github.com/marketplace/actions/sign-android-release) and attach release apk to github release instead of debug apk.
Would be using a high performance android audio lib like oboe be helpful at lowering latency? https://github.com/google/oboe?tab=readme-ov-file
Adapt app layout to the screen size to support less typical cases:
What we need to adjust:
Has anybody tried this on Android TV ?
Currently I stream pulseaudio-dlna but ROC seems like a better option.
The main issues that come up tend to be: ensuring an icon can appear on the TV homescreen (these are a bit different to the ones on phones and tablets).
Adjusting the manifest so Google Play knows this works on TVs.
Ensuring the UI works sensibly with cursor keys and enter (on a remote this is the up/down/left/right and the OK button), there is also a back button.
I pressed Stop and Start several times and the sound disappeared. The sender on PC is still running. After restarting the app and pressing Start again, it started working again.
Probably it can be fixed by creating a dedicated thread that manages sender and receiver threads, and sending tasks to it when we want to start or stop them.
We should add some indication in the UI whether a remote Roc sender is currently connected to the local Roc receiver, or not. Such an indication would be handy when a sender is connected, but there is no sound for other reasons (e.g. it plays silence or a wrong output device is selected in the app).
Currently libroc API doesn't provide a way to determine whether there are connected clients. We should add it to core and java bindings.
Both for sender and receiver. Currently they're hardcoded.
When I press COPY on IP address or PORT field on Android 13, I see two duplicate toasts:
Thanks for making the APK available for everyone here! Checking it I noticed its versioning doesn't match the tag name. Could you please keep an eye on this?
versionName
reflect the (human readable) version, i.e. what you expect people report along with issuesversionCode
with each new release, as that's what Android uses to keep versions apart (it only considers higher versionCodes to represent updates)Thanks!
It worked fine earlier, but now crashing for both apk with the new design and apk from last github release. I've created new emulator but it did't help.
Works fine with real devices.
That's what I have in the logs
01-27 13:10:02.953 1404 1442 I PeriodicStatsRunner: PeriodicStatsRunner.call():180 call()
01-27 13:10:02.953 1404 1442 I PeriodicStatsRunner: PeriodicStatsRunner.call():184 No submit PeriodicStats since input started.
01-27 13:10:04.984 7024 7024 D [rocdroid.SenderReceiverService]: Checking If Sender Alive
01-27 13:10:04.984 7024 7024 D [rocdroid.fragment.SenderFragment]: Starting Sender
01-27 13:10:04.987 7024 7024 D [rocdroid.SenderReceiverService]: Prestart Sender
01-27 13:10:04.987 7024 7024 D [rocdroid.SenderReceiverService]: Checking If Receiver Alive
01-27 13:10:04.987 7024 7024 D [rocdroid.SenderReceiverService]: Starting Foreground Service for Sender
01-27 13:10:04.987 7024 7024 D [rocdroid.SenderReceiverService]: Building Notification for Sender
01-27 13:10:04.990 531 2533 I system_server: oneway function results will be dropped but finished with status OK and parcel size 4
01-27 13:10:04.991 531 2533 I system_server: oneway function results will be dropped but finished with status OK and parcel size 4
01-27 13:10:04.991 7024 7024 D [rocdroid.SenderReceiverService]: Getting Notification Content Text
01-27 13:10:04.998 531 2533 W ActivityManager: Unable to start service Intent { cmp=com.android.systemui/.media.MediaProjectionPermissionActivity } U=0: not found
01-27 13:10:05.001 531 2533 I ActivityTaskManager: START u0 {cmp=com.android.systemui/.media.MediaProjectionPermissionActivity} from uid 10153
01-27 13:10:05.001 531 572 D EventSequenceValidator: Transition from INTENT_FAILED to INTENT_STARTED
01-27 13:10:05.008 428 428 I perfetto: ing_service_impl.cc:758 Configured tracing session 17, #sources:1, duration:5000 ms, #buffers:1, total buffer size:4096 KB, total sessions:1, uid:1071 session name: ""
01-27 13:10:05.008 427 427 I perfetto: probes_producer.cc:230 Ftrace setup (target_buf=17)
01-27 13:10:05.008 531 572 D EventSequenceValidator: Transition from INTENT_STARTED to ACTIVITY_LAUNCHED
01-27 13:10:05.018 531 3163 W ActivityTaskManager: Tried to set launchTime (0) < mLastActivityLaunchTime (602962)
01-27 13:10:05.019 531 3163 W InputReader: Device virtio_input_multi_touch_10 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:05.020 531 3163 W InputReader: Device virtio_input_multi_touch_9 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:05.020 531 3163 W InputReader: Device virtio_input_multi_touch_7 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:05.020 531 3163 W InputReader: Device virtio_input_multi_touch_4 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:05.020 531 3163 W InputReader: Device virtio_input_multi_touch_11 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:05.020 531 3163 W InputReader: Device virtio_input_multi_touch_5 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:05.020 531 3163 W InputReader: Device virtio_input_multi_touch_2 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:05.020 531 3163 W InputReader: Device virtio_input_multi_touch_6 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:05.020 531 3163 W InputReader: Device virtio_input_multi_touch_3 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:05.020 531 3163 W InputReader: Device virtio_input_multi_touch_8 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:05.021 531 3163 W InputReader: Device virtio_input_multi_touch_10 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:05.021 531 3163 W InputReader: Device virtio_input_multi_touch_9 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:05.021 531 3163 W InputReader: Device virtio_input_multi_touch_7 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:05.021 531 3163 W InputReader: Device virtio_input_multi_touch_4 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:05.021 531 3163 W InputReader: Device virtio_input_multi_touch_11 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:05.021 531 3163 W InputReader: Device virtio_input_multi_touch_5 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:05.021 531 3163 W InputReader: Device virtio_input_multi_touch_2 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:05.021 531 3163 W InputReader: Device virtio_input_multi_touch_6 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:05.021 531 3163 W InputReader: Device virtio_input_multi_touch_3 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:05.021 531 3163 W InputReader: Device virtio_input_multi_touch_8 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:05.060 427 427 I perfetto: ftrace_procfs.cc:176 enabled ftrace
01-27 13:10:05.048 0 0 W perfetto: enabled ftrace
01-27 13:10:05.137 321 7001 D goldfish-address-space: claimShared: Ask to claim region [0x3ef330000 0x3efb42000]
01-27 13:10:05.143 321 7001 D goldfish-address-space: claimShared: Ask to claim region [0x3ec000000 0x3ec812000]
01-27 13:10:05.144 531 3163 I system_server: oneway function results will be dropped but finished with status OK and parcel size 4
01-27 13:10:05.147 321 7001 D goldfish-address-space: claimShared: Ask to claim region [0x3f2520000 0x3f2d32000]
01-27 13:10:05.160 321 7001 D goldfish-address-space: claimShared: Ask to claim region [0x3efb42000 0x3efb43000]
01-27 13:10:05.166 321 7001 D goldfish-address-space: claimShared: Ask to claim region [0x3efb43000 0x3efb44000]
01-27 13:10:05.167 321 369 D goldfish-address-space: claimShared: Ask to claim region [0x3efb44000 0x3efb45000]
01-27 13:10:05.176 531 572 D EventSequenceValidator: Transition from ACTIVITY_LAUNCHED to ACTIVITY_FINISHED
01-27 13:10:05.177 531 577 D ArtManagerInternalImpl: /data/misc/iorapd/com.android.systemui/30/com.android.systemui.media.MediaProjectionPermissionActivity/compiled_traces/compiled_trace.pb doesn't exist
01-27 13:10:05.182 531 577 I ActivityTaskManager: Displayed com.android.systemui/.media.MediaProjectionPermissionActivity: +170ms
01-27 13:10:05.198 531 531 D NotificationService: 0|org.rocstreaming.rocdroid|1|null|10153: granting content://settings/system/notification_sound
01-27 13:10:05.199 531 531 I chatty : uid=1000(system) Binder:531_3 identical 2 lines
01-27 13:10:05.199 531 531 D NotificationService: 0|org.rocstreaming.rocdroid|1|null|10153: granting content://settings/system/notification_sound
01-27 13:10:05.201 531 531 W NotificationHistory: Attempted to add notif for locked/gone/disabled user 0
01-27 13:10:05.211 757 757 D InterruptionStateProvider: No bubble up: not allowed to bubble: 0|org.rocstreaming.rocdroid|1|null|10153
01-27 13:10:05.213 757 757 D InterruptionStateProvider: No heads up: unimportant notification: 0|org.rocstreaming.rocdroid|1|null|10153
01-27 13:10:05.215 531 572 D CompatibilityChangeReporter: Compat change id reported: 136219221; UID 10153; state: DISABLED
01-27 13:10:06.658 531 2535 I system_server: oneway function results will be dropped but finished with status OK and parcel size 4
01-27 13:10:06.660 757 1108 D OpenGLRenderer: endAllActiveAnimators on 0xb20d42b0 (RippleDrawable) with handle 0xb751c130
01-27 13:10:06.674 321 369 D goldfish-address-space: claimShared: Ask to claim region [0x3f2d32000 0x3f3632000]
01-27 13:10:06.693 531 2535 W InputReader: Device virtio_input_multi_touch_10 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:06.693 531 2535 W InputReader: Device virtio_input_multi_touch_9 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:06.693 531 2535 W InputReader: Device virtio_input_multi_touch_7 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:06.693 531 2535 W InputReader: Device virtio_input_multi_touch_4 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:06.693 531 2535 W InputReader: Device virtio_input_multi_touch_11 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:06.693 531 2535 W InputReader: Device virtio_input_multi_touch_5 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:06.693 531 2535 W InputReader: Device virtio_input_multi_touch_2 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:06.693 531 2535 W InputReader: Device virtio_input_multi_touch_6 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:06.693 531 2535 W InputReader: Device virtio_input_multi_touch_3 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:06.693 531 2535 W InputReader: Device virtio_input_multi_touch_8 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:06.694 531 2535 W InputReader: Device virtio_input_multi_touch_10 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:06.694 531 2535 W InputReader: Device virtio_input_multi_touch_9 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:06.694 531 2535 W InputReader: Device virtio_input_multi_touch_7 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:06.694 531 2535 W InputReader: Device virtio_input_multi_touch_4 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:06.694 531 2535 W InputReader: Device virtio_input_multi_touch_11 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:06.694 531 2535 W InputReader: Device virtio_input_multi_touch_5 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:06.694 531 2535 W InputReader: Device virtio_input_multi_touch_2 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:06.694 531 2535 W InputReader: Device virtio_input_multi_touch_6 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:06.694 531 2535 W InputReader: Device virtio_input_multi_touch_3 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:06.694 531 2535 W InputReader: Device virtio_input_multi_touch_8 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:06.701 7024 7024 D [rocdroid.SenderReceiverService]: Starting Sender
01-27 13:10:06.708 7024 7070 D [rocdroid.SenderReceiverService]: Creating Audio Record
01-27 13:10:06.711 395 484 D AudioFlinger: ro.audio.silent is ignored since no output device is set
01-27 13:10:06.712 307 501 E android.hardware.audio.service.ranchu: device/generic/goldfish/audio/util.cpp:checkAudioConfig:138 failure: false
01-27 13:10:06.712 307 501 E android.hardware.audio.service.ranchu: PrimaryDevice::getInputBufferSize:90 failed
01-27 13:10:06.712 307 501 E android.hardware.audio.service.ranchu: device/generic/goldfish/audio/primary_device.cpp:getInputBufferSize:91 failure: Result::INVALID_ARGUMENTS
01-27 13:10:06.712 307 501 E android.hardware.audio.service.ranchu: device/generic/goldfish/audio/util.cpp:checkAudioConfig:138 failure: false
01-27 13:10:06.712 307 501 E android.hardware.audio.service.ranchu: PrimaryDevice::getInputBufferSize:90 failed
01-27 13:10:06.713 307 501 E android.hardware.audio.service.ranchu: device/generic/goldfish/audio/primary_device.cpp:getInputBufferSize:91 failure: Result::INVALID_ARGUMENTS
01-27 13:10:06.713 7024 7070 D [rocdroid.SenderReceiverService]: Creating Playback Record
01-27 13:10:06.715 531 843 I system_server: oneway function results will be dropped but finished with status OK and parcel size 4
01-27 13:10:06.716 531 2533 I AS.AudioService: registerAudioPolicy for android.os.BinderProxy@a9e4ec8 with config:android.media.audiopolicy.AudioPolicyConfig@ab8e10c7
01-27 13:10:06.716 531 843 I system_server: oneway function results will be dropped but finished with status OK and parcel size 4
01-27 13:10:06.716 395 5934 D APM_AudioPolicyMix: registerMix(): adding mix for dev=0x8000 addr=-1416752953:ap:4mixp:0
01-27 13:10:06.718 307 496 D r_submix: adev_open_input_stream(addr=-1416752953:ap:4mixp:0)
01-27 13:10:06.718 307 496 D r_submix: submix_audio_device_create_pipe_l(addr=-1416752953:ap:4mixp:0, idx=9)
01-27 13:10:06.718 307 496 D r_submix: now using address -1416752953:ap:4mixp:0 for route 9
01-27 13:10:06.729 395 7071 I AudioFlinger: AudioFlinger's thread 0xed6e2030 tid=7071 ready to run
01-27 13:10:06.729 307 496 I r_submix: in_standby()
01-27 13:10:06.731 307 496 I r_submix: in_standby()
01-27 13:10:06.734 531 3567 I system_server: oneway function results will be dropped but finished with status OK and parcel size 4
01-27 13:10:06.735 531 3567 I chatty : uid=1000(system) Binder:531_1E identical 2 lines
01-27 13:10:06.785 531 3567 I system_server: oneway function results will be dropped but finished with status OK and parcel size 4
01-27 13:10:06.786 531 2535 I system_server: oneway function results will be dropped but finished with status OK and parcel size 4
01-27 13:10:06.786 531 2535 I system_server: oneway function results will be dropped but finished with status OK and parcel size 4
01-27 13:10:06.786 307 496 D r_submix: adev_close_input_stream()
01-27 13:10:06.786 307 496 D r_submix: submix_audio_device_release_pipe_l(idx=9) addr=-1416752953:ap:4mixp:0
01-27 13:10:06.786 307 496 D r_submix: submix_audio_device_destroy_pipe_l(): pipe destroyed
01-27 13:10:06.786 531 2535 I system_server: oneway function results will be dropped but finished with status OK and parcel size 4
01-27 13:10:06.787 395 5934 W APM::AudioPolicyEngine: getDevicesForStrategy() unknown strategy: -1
01-27 13:10:06.787 7024 7070 V AudioPolicy: Null context, checking permission via ActivityManager
01-27 13:10:06.789 531 531 I Telecom : WiredHeadsetManager: ACTION_HEADSET_PLUG event, plugged in: false, : WHC.oADA@AMg
01-27 13:10:06.787 395 5934 W APM::AudioPolicyEngine: getDevicesForStrategy() unknown strategy: -1
01-27 13:10:06.790 7024 7070 V android.media.AudioRecord: Will record from REMOTE_SUBMIX at full fixed volume
01-27 13:10:06.792 395 395 D APM_AudioPolicyMix: getInputMixForAttr found addr=-1416752953:ap:4mixp:0 dev=0x8000
01-27 13:10:06.792 307 496 D r_submix: adev_open_input_stream(addr=-1416752953:ap:4mixp:0)
01-27 13:10:06.792 307 496 D r_submix: submix_audio_device_create_pipe_l(addr=-1416752953:ap:4mixp:0, idx=9)
01-27 13:10:06.792 307 496 D r_submix: now using address -1416752953:ap:4mixp:0 for route 9
01-27 13:10:06.794 395 7074 I AudioFlinger: AudioFlinger's thread 0xed6e2030 tid=7074 ready to run
01-27 13:10:06.794 307 496 I r_submix: in_standby()
01-27 13:10:06.795 531 843 I system_server: oneway function results will be dropped but finished with status OK and parcel size 4
01-27 13:10:06.795 531 843 I system_server: oneway function results will be dropped but finished with status OK and parcel size 4
01-27 13:10:06.796 307 496 I r_submix: in_standby()
01-27 13:10:06.797 531 3567 I system_server: oneway function results will be dropped but finished with status OK and parcel size 4
01-27 13:10:06.811 531 843 I system_server: oneway function results will be dropped but finished with status OK and parcel size 4
01-27 13:10:06.813 531 843 I system_server: oneway function results will be dropped but finished with status OK and parcel size 4
01-27 13:10:06.817 395 395 I AudioFlinger: openOutput() this 0xeb287600, module 18 Device type:0x8000,@:-1416752953:ap:4mixp:0, SamplingRate 44100, Format 0x000005, Channels 0x3, flags 0
01-27 13:10:06.817 307 496 D r_submix: adev_open_output_stream(address=-1416752953:ap:4mixp:0)
01-27 13:10:06.817 307 496 D r_submix: submix_audio_device_create_pipe_l(addr=-1416752953:ap:4mixp:0, idx=9)
01-27 13:10:06.817 307 496 D r_submix: now using address -1416752953:ap:4mixp:0 for route 9
01-27 13:10:06.818 395 395 I AudioFlinger: HAL output buffer size 1024 frames, normal sink buffer size 1024 frames
01-27 13:10:06.818 395 395 E AudioFlinger: Failed to add event callback
01-27 13:10:06.820 395 7076 I AudioFlinger: AudioFlinger's thread 0xed4b5030 tid=7076 ready to run
01-27 13:10:06.821 531 843 I system_server: oneway function results will be dropped but finished with status OK and parcel size 4
01-27 13:10:06.821 531 843 I system_server: oneway function results will be dropped but finished with status OK and parcel size 4
01-27 13:10:06.822 395 7076 D AudioFlinger: ro.audio.silent is ignored since no output device is set
01-27 13:10:06.822 307 496 I r_submix: out_standby()
01-27 13:10:06.823 531 843 I system_server: oneway function results will be dropped but finished with status OK and parcel size 4
01-27 13:10:06.824 531 843 I chatty : uid=1000(system) Binder:531_7 identical 1 line
01-27 13:10:06.825 531 843 I system_server: oneway function results will be dropped but finished with status OK and parcel size 4
01-27 13:10:06.825 395 7076 D AudioFlinger: ro.audio.silent is ignored since no output device is set
01-27 13:10:06.881 395 7076 D AudioFlinger: ro.audio.silent will be ignored for threads on AUDIO_DEVICE_OUT_REMOTE_SUBMIX
01-27 13:10:06.887 307 496 E android.hardware.audio.service.ranchu: device/generic/goldfish/audio/primary_device.cpp:getParameters:234 failure: Result::NOT_SUPPORTED
01-27 13:10:06.888 395 395 W APM::AudioPolicyEngine: getDevicesForStrategy() unknown strategy: -1
01-27 13:10:06.888 395 395 W APM::AudioPolicyEngine: getDevicesForStrategy() unknown strategy: -1
01-27 13:10:06.891 307 496 E FMQ : grantorIdx must be less than 3
01-27 13:10:06.891 531 3567 I AudioService.RecordingActivityMonitor: rec update riid:63 uid:10153 session:49 src:REMOTE_SUBMIX pack:org.rocstreaming.rocdroid
01-27 13:10:06.891 307 496 E FMQ : grantorIdx must be less than 3
01-27 13:10:06.891 395 7074 E FMQ : grantorIdx must be less than 3
01-27 13:10:06.892 395 7074 E FMQ : grantorIdx must be less than 3
01-27 13:10:06.894 531 843 W AS.AudioService: Trying to call forceRemoteSubmixFullVolume() without CAPTURE_AUDIO_OUTPUT
01-27 13:10:06.898 531 531 I Telecom : WiredHeadsetManager: ACTION_HEADSET_PLUG event, plugged in: false, : WHC.oADA@AMk
01-27 13:10:06.916 7024 7075 F libc : Fatal signal 31 (SIGSYS), code 1 (SYS_SECCOMP) in tid 7075 (Thread-2), pid 7024 (eaming.rocdroid)
01-27 13:10:06.948 531 541 I system_server: NativeAlloc concurrent copying GC freed 203554(9319KB) AllocSpace objects, 26(2088KB) LOS objects, 49% free, 13MB/27MB, paused 68us total 126.356ms
01-27 13:10:06.958 531 542 W JavaBinder: BinderProxy is being destroyed but the application did not call unlinkToDeath to unlink all of its death recipients beforehand. Releasing leaked death recipient: com.android.server.AlarmManagerService$2
01-27 13:10:06.958 531 542 I BpBinder: onLastStrongRef automatically unlinking death recipients: <uncached descriptor>
01-27 13:10:06.966 531 542 W JavaBinder: BinderProxy is being destroyed but the application did not call unlinkToDeath to unlink all of its death recipients beforehand. Releasing leaked death recipient: com.android.server.AlarmManagerService$2
01-27 13:10:06.966 531 542 I BpBinder: onLastStrongRef automatically unlinking death recipients: <uncached descriptor>
01-27 13:10:07.014 7080 7080 I crash_dump32: obtaining output fd from tombstoned, type: kDebuggerdTombstone
01-27 13:10:07.016 295 295 I tombstoned: received crash request for pid 7075
01-27 13:10:07.017 7080 7080 I crash_dump32: performing dump of process 7024 (target tid = 7075)
01-27 13:10:07.022 7080 7080 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
01-27 13:10:07.022 7080 7080 F DEBUG : Build fingerprint: 'google/sdk_gphone_x86_arm/generic_x86_arm:11/RSR1.201013.001/6903271:userdebug/dev-keys'
01-27 13:10:07.023 7080 7080 F DEBUG : Revision: '0'
01-27 13:10:07.023 7080 7080 F DEBUG : ABI: 'x86'
01-27 13:10:07.024 7080 7080 F DEBUG : Timestamp: 2023-01-27 13:10:07+0400
01-27 13:10:07.024 7080 7080 F DEBUG : pid: 7024, tid: 7075, name: Thread-2 >>> org.rocstreaming.rocdroid <<<
01-27 13:10:07.024 7080 7080 F DEBUG : uid: 10153
01-27 13:10:07.024 7080 7080 F DEBUG : signal 31 (SIGSYS), code 1 (SYS_SECCOMP), fault addr --------
01-27 13:10:07.024 7080 7080 F DEBUG : Cause: seccomp prevented call to disallowed x86 system call 345
01-27 13:10:07.024 7080 7080 F DEBUG : eax 00000159 ebx 00000055 ecx 00000000 edx 00000000
01-27 13:10:07.025 7080 7080 F DEBUG : edi 00000000 esi 00000000
01-27 13:10:07.025 7080 7080 F DEBUG : ebp 910a532e esp ba84d518 eip eb6e4b99
01-27 13:10:07.068 7080 7080 F DEBUG : backtrace:
01-27 13:10:07.068 7080 7080 F DEBUG : #00 pc 00000b99 [vdso] (__kernel_vsyscall+9)
01-27 13:10:07.068 7080 7080 F DEBUG : #01 pc 0005ad68 /apex/com.android.runtime/lib/bionic/libc.so (syscall+40) (BuildId: 6e3a0180fa6637b68c0d181c343e6806)
01-27 13:10:07.068 7080 7080 F DEBUG : #02 pc 000453de /data/app/~~yD7DUEvEj10Nc2kfVQgpgw==/org.rocstreaming.rocdroid-BLYF5bxDTN3tlclXto0b3g==/base.apk!libroc.so (offset 0x13000)
01-27 13:10:07.068 7080 7080 F DEBUG : #03 pc 00042bfa /data/app/~~yD7DUEvEj10Nc2kfVQgpgw==/org.rocstreaming.rocdroid-BLYF5bxDTN3tlclXto0b3g==/base.apk!libroc.so (offset 0x13000)
01-27 13:10:07.068 7080 7080 F DEBUG : #04 pc 000e86f0 /apex/com.android.runtime/lib/bionic/libc.so (pthread_once+96) (BuildId: 6e3a0180fa6637b68c0d181c343e6806)
01-27 13:10:07.068 7080 7080 F DEBUG : #05 pc 00040bb3 /data/app/~~yD7DUEvEj10Nc2kfVQgpgw==/org.rocstreaming.rocdroid-BLYF5bxDTN3tlclXto0b3g==/base.apk!libroc.so (offset 0x13000)
01-27 13:10:07.068 7080 7080 F DEBUG : #06 pc 0004175f /data/app/~~yD7DUEvEj10Nc2kfVQgpgw==/org.rocstreaming.rocdroid-BLYF5bxDTN3tlclXto0b3g==/base.apk!libroc.so (offset 0x13000)
01-27 13:10:07.068 7080 7080 F DEBUG : #07 pc 000415d1 /data/app/~~yD7DUEvEj10Nc2kfVQgpgw==/org.rocstreaming.rocdroid-BLYF5bxDTN3tlclXto0b3g==/base.apk!libroc.so (offset 0x13000)
01-27 13:10:07.068 7080 7080 F DEBUG : #08 pc 00037b51 /data/app/~~yD7DUEvEj10Nc2kfVQgpgw==/org.rocstreaming.rocdroid-BLYF5bxDTN3tlclXto0b3g==/base.apk!libroc.so (offset 0x13000)
01-27 13:10:07.068 7080 7080 F DEBUG : #09 pc 00012e1f /data/app/~~yD7DUEvEj10Nc2kfVQgpgw==/org.rocstreaming.rocdroid-BLYF5bxDTN3tlclXto0b3g==/base.apk!libroc.so (offset 0x13000)
01-27 13:10:07.171 0 0 D logd : logdr: UID=10153 GID=10153 PID=7080 n tail=50 logMask=8 pid=7024 start=0ns timeout=0ns
01-27 13:10:07.173 0 0 D logd : logdr: UID=10153 GID=10153 PID=7080 n tail=50 logMask=1 pid=7024 start=0ns timeout=0ns
01-27 13:10:07.295 0 0 D logd : logdr: UID=10153 GID=10153 PID=7080 n tail=0 logMask=8 pid=7024 start=0ns timeout=0ns
01-27 13:10:07.297 0 0 D logd : logdr: UID=10153 GID=10153 PID=7080 n tail=0 logMask=1 pid=7024 start=0ns timeout=0ns
01-27 13:10:07.310 295 295 E tombstoned: Tombstone written to: /data/tombstones/tombstone_04
01-27 13:10:07.311 531 7087 W ActivityTaskManager: Force finishing activity org.rocstreaming.rocdroid/.MainActivity
01-27 13:10:07.313 321 369 D goldfish-address-space: claimShared: Ask to claim region [0x3eea30000 0x3ef330000]
01-27 13:10:07.314 531 7088 I DropBoxManagerService: add tag=data_app_native_crash isTagEnabled=true flags=0x2
01-27 13:10:07.317 531 586 I BootReceiver: Copying /data/tombstones/tombstone_04 to DropBox (SYSTEM_TOMBSTONE)
01-27 13:10:07.318 531 586 I DropBoxManagerService: add tag=SYSTEM_TOMBSTONE isTagEnabled=true flags=0x2
01-27 13:10:07.323 0 0 I init : Untracked pid 7080 exited with status 0
01-27 13:10:07.328 531 578 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (has extras) } to com.google.android.gms/.stats.service.DropBoxEntryAddedReceiver
01-27 13:10:07.328 531 578 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (has extras) } to com.google.android.gms/.chimera.GmsIntentOperationService$PersistentTrustedReceiver
01-27 13:10:07.328 531 843 W InputReader: Device virtio_input_multi_touch_10 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:07.328 531 843 W InputReader: Device virtio_input_multi_touch_9 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:07.328 531 843 W InputReader: Device virtio_input_multi_touch_7 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:07.328 531 843 W InputReader: Device virtio_input_multi_touch_4 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:07.328 531 843 W InputReader: Device virtio_input_multi_touch_11 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:07.328 531 843 W InputReader: Device virtio_input_multi_touch_5 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:07.330 0 0 I init : Untracked pid 7082 exited with status 0
01-27 13:10:07.328 531 843 W InputReader: Device virtio_input_multi_touch_2 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:07.328 531 843 W InputReader: Device virtio_input_multi_touch_6 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:07.328 531 843 W InputReader: Device virtio_input_multi_touch_3 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:07.328 531 843 W InputReader: Device virtio_input_multi_touch_8 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:07.328 531 843 W InputReader: Device virtio_input_multi_touch_10 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:07.328 531 843 W InputReader: Device virtio_input_multi_touch_9 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:07.328 531 843 W InputReader: Device virtio_input_multi_touch_7 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:07.328 531 843 W InputReader: Device virtio_input_multi_touch_4 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:07.328 531 843 W InputReader: Device virtio_input_multi_touch_11 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:07.328 531 843 W InputReader: Device virtio_input_multi_touch_5 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:07.328 531 843 W InputReader: Device virtio_input_multi_touch_2 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:07.328 531 843 W InputReader: Device virtio_input_multi_touch_6 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:07.328 531 843 W InputReader: Device virtio_input_multi_touch_3 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:07.328 531 843 W InputReader: Device virtio_input_multi_touch_8 is associated with display ADISPLAY_ID_NONE.
01-27 13:10:07.349 531 578 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (has extras) } to com.google.android.gms/.stats.service.DropBoxEntryAddedReceiver
01-27 13:10:07.349 531 578 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (has extras) } to com.google.android.gms/.chimera.GmsIntentOperationService$PersistentTrustedReceiver
01-27 13:10:07.367 531 583 E libprocessgroup: AddTidToCgroup failed to write '7089'; fd=111: Invalid argument
01-27 13:10:07.367 531 583 E libprocessgroup: Failed to add task into cgroup
01-27 13:10:07.367 531 583 W libprocessgroup: ExecuteForTask failed for aggregate profile: Invalid argument
01-27 13:10:07.377 321 369 D goldfish-address-space: claimShared: Ask to claim region [0x3ec000000 0x3ece10000]
01-27 13:10:07.397 321 7001 D goldfish-address-space: claimShared: Ask to claim region [0x3f4000000 0x3f4e10000]
01-27 13:10:07.401 321 369 D goldfish-address-space: claimShared: Ask to claim region [0x3f4e10000 0x3f5c20000]
01-27 13:10:07.401 321 369 D goldfish-address-space: claimShared: Ask to claim region [0x3f5c20000 0x3f6a30000]
01-27 13:10:07.406 321 369 D goldfish-address-space: claimShared: Ask to claim region [0x3f8000000 0x3f8e10000]
01-27 13:10:07.406 321 369 D goldfish-address-space: claimShared: Ask to claim region [0x3f8e10000 0x3f9c20000]
01-27 13:10:07.416 531 2535 I AudioPolicyProxy: audio policy android.media.audiopolicy.IAudioPolicyCallback$Stub$Proxy@ecb69b1 died
01-27 13:10:07.417 395 5934 D APM_AudioPolicyMix: unregisterMix(): removing mix for dev=0x8000 addr=-1416752953:ap:4mixp:0
01-27 13:10:07.418 531 843 I WindowManager: WIN DEATH: Window{ce2d690 u0 org.rocstreaming.rocdroid/org.rocstreaming.rocdroid.MainActivity}
01-27 13:10:07.418 531 843 W InputDispatcher: Attempted to unregister already unregistered input channel 'ce2d690 org.rocstreaming.rocdroid/org.rocstreaming.rocdroid.MainActivity (server)'
01-27 13:10:07.419 531 2319 I ActivityManager: Process org.rocstreaming.rocdroid (pid 7024) has died: fg +50 FGS
01-27 13:10:07.406 0 0 I binder : undelivered transaction 506204, process died.
01-27 13:10:07.411 0 0 I binder : undelivered transaction 506436, process died.
01-27 13:10:07.430 531 2090 I system_server: oneway function results will be dropped but finished with status OK and parcel size 4
01-27 13:10:07.431 302 302 I Zygote : Process 7024 exited due to signal 31 (Bad system call)
01-27 13:10:07.431 307 501 I r_submix: in_standby()
01-27 13:10:07.433 395 5934 W APM::AudioInputDescriptor: close client with port ID 65 still active on input 64
01-27 13:10:07.438 531 3567 I system_server: oneway function results will be dropped but finished with status OK and parcel size 4
01-27 13:10:07.443 531 572 W ActivityManager: setHasOverlayUi called on unknown pid: 7024
01-27 13:10:07.461 531 580 I libprocessgroup: Successfully killed process cgroup uid 10153 pid 7024 in 41ms
01-27 13:10:07.475 2331 2594 W ThreadPoolDumper: Queue length for executor EventBus is now 11. Perhaps some tasks are too long, or the pool is too small.
01-27 13:10:07.481 2331 2435 W LocationOracle: No location history returned by ContextManager
01-27 13:10:07.510 2331 2331 I BgTaskExecutorImpl: Starting EXCLUSIVE background task TNG_MINUS_ONE_SYNC.
01-27 13:10:07.514 2331 2448 E MDD : DownloadProgressMonitor: Can't find file group for uri: android://com.google.android.googlequicksearchbox/files/sharedminusonemodule/shared/SharedMinusOneData.pb.tmp
01-27 13:10:07.522 2331 2594 I TngMinusOneSync: Syncing TNG:-1
01-27 13:10:07.544 1225 2541 W GCoreFlp: No location to return for getLastLocation()
01-27 13:10:07.635 395 5934 W APM::AudioPolicyEngine: getDevicesForStrategy() unknown strategy: -1
01-27 13:10:07.635 395 5934 W APM::AudioPolicyEngine: getDevicesForStrategy() unknown strategy: -1
01-27 13:10:07.635 531 2099 I system_server: oneway function results will be dropped but finished with status OK and parcel size 4
01-27 13:10:07.635 531 2099 I chatty : uid=1000(system) Binder:531_15 identical 1 line
01-27 13:10:07.637 531 2099 I system_server: oneway function results will be dropped but finished with status OK and parcel size 4
01-27 13:10:07.842 307 501 D r_submix: out_set_parameters(): shutting down MonoPipe sink
01-27 13:10:07.842 307 501 D r_submix: adev_close_output_stream() addr = -1416752953:ap:4mixp:0
01-27 13:10:07.843 531 2099 I system_server: oneway function results will be dropped but finished with status OK and parcel size 4
01-27 13:10:07.844 395 5934 W APM::AudioPolicyEngine: getDevicesForStrategy() unknown strategy: -1
01-27 13:10:07.844 395 5934 W APM::AudioPolicyEngine: getDevicesForStrategy() unknown strategy: -1
01-27 13:10:07.850 395 395 W APM_AudioPolicyManager: stopInput no input for client 65
01-27 13:10:07.850 307 501 D r_submix: adev_close_input_stream()
01-27 13:10:07.850 307 501 D r_submix: submix_audio_device_release_pipe_l(idx=9) addr=-1416752953:ap:4mixp:0
01-27 13:10:07.850 307 501 D r_submix: submix_audio_device_destroy_pipe_l(): pipe destroyed
01-27 13:10:07.852 395 395 W APM_AudioPolicyManager: releaseInput no input for client 65
01-27 13:10:07.855 531 531 I Telecom : WiredHeadsetManager: ACTION_HEADSET_PLUG event, plugged in: false, : WHC.oADR@AMo
01-27 13:10:08.390 531 2535 D WifiNl80211Manager: Scan result ready event
01-27 13:10:08.390 531 2535 D WifiNative: Scan result ready event
roc-droid Flutter migration child issue.
Create a view model to control the GUI via Dart.
roc-droid Flutter migration child issue.
Restore original gradle features
If the user started sender or receiver and the closed the app, we can continue running and preserve notification. If the user taps notification, we should open the app. When the app is opened (manually or via notification tap), it should attach to the sender-receiver service running in the background.
./gradlew build
> Task :app:lint
Execution optimizations have been disabled for task ':app:lint' to ensure correctness due to the following reasons:
- In plugin 'com.android.internal.version-check' type 'com.android.build.gradle.tasks.LintGlobalTask' property 'allInputs' cannot be resolved: Cannot convert the provided notation to a File or URI: kotlin-android-extensions-runtime-1.3.71.jar (org.jetbrains.kotlin:kotlin-android-extensions-runtime:1.3.71). The following types/formats are supported: - A String or CharSequence path, for example 'src/main/java' or '/usr/include'. - A String or CharSequence URI, for example 'file:/usr/include'. - A File instance. - A Path instance. - A Directory instance. - A RegularFile instance. - A URI or URL instance. - A TextResource instance. Reason: An input file collection couldn't be resolved, making it impossible to determine task inputs. Please refer to https://docs.gradle.org/7.6/userguide/validation_problems.html#unresolvable_input for more details about this problem.
Ran lint on variant debug: 5 issues found
Ran lint on variant release: 5 issues found
Wrote HTML report to file:///home/victor/dev/roc-streaming/roc-droid/app/build/reports/lint-results.html
Wrote XML report to file:///home/victor/dev/roc-streaming/roc-droid/app/build/reports/lint-results.xml
Hello there,
The volume is always on maximum when streaming from my phone (Asus ZenFone 8 with default Android 13), and I'm not sure if the volume is supposed to by synchronized with Android or if it's a missing feature?
Volume buttons have no effect for some reason. See also #11 (comment)
When I insert headphones into the jack port, the sound is duplicated both to internal speakers and to the headphones.
roc-droid Flutter migration child issue.
Add logger
roc-droid Flutter migration child issue.
Add GUI model connection to backend services.
Need to configure callback for roc logs and log them to android logger
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.