summaryrefslogtreecommitdiffstats
path: root/binding/afm-mediaplayer-binding.c
AgeCommit message (Collapse)AuthorFilesLines
2021-05-25mediaplayer: s/pwaudiosink/pipewiresink/koi_11.0.5koi_11.0.4koi_11.0.3koi_11.0.2koi/11.0.5koi/11.0.4koi/11.0.3koi/11.0.211.0.511.0.411.0.311.0.2koiGeorge Kiagiadakis1-2/+2
This is the one and only pipewire sink now Bug-AGL: SPEC-3844 Change-Id: I3618577bf96cac1ccee12b0b7434d79d4c65dd66 Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2020-03-04mediaplayer: don't execute PLAY_CMD if already playingMatt Ranostay1-0/+6
Using Mediaplayer UI it is possible to send multiple play events before the Pause button is displayed. This seems to cause unexpected side effects on playback. Bug-AGL: SPEC-3197 Change-Id: Iad6b0998e8bcc1331cb78d8f45081d0e6185913a Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2020-01-13steering-wheel: add event.media.mode functionalityicefish_8.99.5icefish/8.99.58.99.5Matt Ranostay1-1/+5
Allow mode event to switch between AVRCP and local media. Bug-AGL: SPEC-3047 Change-Id: Id7f697b8608695fd56a57a4f41eafc4c7c31a26d Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2019-12-19Some fixes for corked state trackingicefish_8.99.4icefish/8.99.48.99.4Scott Murray1-0/+8
Fixes: - Clear the corked state flag on stop and track changes to keep it in sync. - Add changing of pipeline state in response to the GstBus GST_MESSAGE_REQUEST_STATE message, this is required to have the second request to switch back to PLAYING state be sent, and hence properly keeping track of corked state. Bug-AGL: SPEC-3061, SPEC-3047 Signed-off-by: Scott Murray <scott.murray@konsulko.com> Change-Id: I7a7727e1671b82aaafe816d30481bef720f19037
2019-12-17steering-wheel: add AVRCP controls to signal-composer eventsMatt Ranostay1-10/+18
Add Previous/Next AVRCP controls to respective events from signal-composer. Bug-AGL: SPEC-3047 Change-Id: I3f8d2576508ce03d667273f273202726aea50ceb Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2019-12-17Add workaround for Wireplumber policy implementationScott Murray1-0/+23
Add hopefully temporary workarounds for current Wireplumber policy implementation that requires taking gstreamer state to READY or STOPPED to trigger policy. Bug-AGL: SPEC-3061 Signed-off-by: Scott Murray <scott.murray@konsulko.com> Change-Id: I9ade3615945b6821ce78c22ffea292b16a4fb93c
2019-12-14mediaplayer: check for corking from PipeWireicefish_8.99.3icefish/8.99.38.99.3Matt Ranostay1-0/+28
Check if PipeWire is corking the audio stream and if so don't process signal-composer events till uncorked. Bug-AGL: SPEC-3023 Change-Id: Ib4d4de1f1627426d69e3f19501d38ff2d3c88a62 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2019-12-13steering-wheel: add AFB_WARNING for unimplemented featuresMatt Ranostay1-2/+8
Currently the steering wheel events from the signal-composer binding aren't handled for AVRCP. Put in AFB_WARNINGs for when events are triggered. Bug-AGL: SPEC-3047 Change-Id: I755ef4e89065560bea08b9d0a874746914fe9a14 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2019-12-12Initial steering wheel event supportScott Murray1-1/+75
Add initial basic support for next/previous events from signal composer, mapping them to track forward/back. More work will be required to handle the issues around both mediaplayer and radio both being running and differentiating which should handle the events. Bug-AGL: SPEC-3047 Signed-off-by: Scott Murray <scott.murray@konsulko.com> Change-Id: I789181e1921aa55f4a9ec84deffe3f27560289c3
2019-09-12mediaplayer: report metadata on playlist events and subscriptionMatt Ranostay1-0/+10
Report metadata on initial metadata event subsciption, and also when the playlist changes. Bug-AGL: SPEC-2774 Change-Id: Ieb68d6d5e53af889ad66c52887023b8c94c40080 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2019-09-05binding: mediaplayer: process audio tags in message handlerMatt Ranostay1-26/+31
To reduce blocking api calls, and to avoid race conditions interactions beween UI and binding on startup, change to parsing album art from GST_MESSAGE_TAG event. Bug-AGL: SPEC-2774 Change-Id: I67463824a6966f175bf2c3c423d75d0edd183c4d Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2019-08-26binding: mediaplayer: switch from pthread mutexes to GMutexMatt Ranostay1-21/+21
For allowing of the use of other glib functionality switch to GMutex wrapper over using pthread mutexes directly. Bug-AGL: SPEC-2774 Change-Id: I85fa6260e2e2c5b38bf4d94477b1ef1567d91ab6 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2019-08-26binding: mediaplayer: fix compiler warning from gst_util_set_object_arg callMatt Ranostay1-1/+2
First argument to the gst_util_set_object_arg call should be cast via G_OBJECT macro afm-mediaplayer-binding.c: In function ‘gstreamer_init’: afm-mediaplayer-binding.c:883:30: warning: passing argument 1 of ‘gst_util_set_object_arg’ from incompatible pointer type [-Wincompatible-pointer-types] gst_util_set_object_arg(data.audio_sink, "stream-properties", "p,media.role=Multimedia"); Bug-AGL: SPEC-2774 Change-Id: I5c93e7e6621f2db229a2a154f0c9d09853c78981 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2019-07-12mediaplayer: gstreamer: use pwaudiosink instead of alsasinkhalibut_8.0.0halibut_7.99.3halibut/8.0.0halibut/7.99.38.0.07.99.3George Kiagiadakis1-8/+9
This native pipewire sink has better performance and allows 1) properly selecting the role of the app 2) proper handling of the situation where another app with higher priority has taken over the audio stream Bug-AGL: SPEC-2634 Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com> Change-Id: Ib40300ee6a74804c8491451267041d0554215d05
2019-06-10binding: remove support for 4A and use plain alsasinkGeorge Kiagiadakis1-44/+1
GStreamer alsasink will redirect the stream to pipewire. Bug-AGL: SPEC-2473 Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com> Change-Id: I696b338e99d28f97f1e0fe3c466e711d2171d1ad
2019-06-05binding: mediaplayer: fix refcount imbalanceMatt Ranostay1-0/+1
JSON response that was passed to onevent callback was being resent in an event without refcount being increased. Resulting assertion failure: json_object_put: Assertion `jso->_ref_count > 0' failed. Bug-AGL: SPEC-2488 Change-Id: I40cf36f0e7e96c5974bd6b6c49b5044bbe199b77 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2019-04-30binding: mediaplayer: fix segfault in volume commandhalibut_7.99.1halibut/7.99.17.99.1Matt Ranostay1-1/+9
When no volume field is passed it caused a null pointer dereference Bug-AGL: SPEC-2368 Change-Id: Ia11ae28b38455a597d1b31a044a711e21928b0cc Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2019-04-03binding: mediaplayer: correct g_object_unref on non-gobjectMatt Ranostay1-2/+1
Calling g_object_unref on gchar* is incorrect since it isn't an gobject, and thus g_free should be used instead. Change-Id: I5a982a4f083e2b7de340deaa26be99fb6caf63de Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2019-03-05binding: mediaplayer: add functionality to switch loop playback typesMatt Ranostay1-8/+42
Allow client to request between playlist and track looping Bug-AGL: SPEC-2181 Change-Id: I05097426e827a891e14811dad1763944d3f2fd89 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-12-19binding: mediaplayer: fix segfault without playlist and A2DP connectedhalibut_7.90.0halibut/7.90.0guppy_6.99.4guppy_6.99.3guppy/6.99.4guppy/6.99.37.90.06.99.46.99.3Matt Ranostay1-0/+4
A2DP connection and events with no local media playlist will result in segfaults. Change-Id: I8034d5ae88d2f81ffd74263800c32ded0645d4d8 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-12-19binding: mediaplayer: allow open/close of mediaplayer rolesMatt Ranostay1-41/+70
When streams are paused or stopped the mediaplayer role needs to be released to allow playback from other applications (i.e. radio) Change-Id: Idd324d0695bfaa35401f05a95380d56df848009e Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-12-17binding: mediaplayer: fix reporting to mediaplayer UIMatt Ranostay1-2/+19
1) local media wasn't stopping playback when a2dp transport was connected 2) when disconnecting a2dp the local media metadata wasn't being displayed 3) pausing wasn't sending an event to the UI subscriber Bug-AGL: SPEC-1630 Change-Id: I67eee3af44169c8138d03aff591200884f1dd6ae Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-12-14binding: mediaplayer: fix connect/disconnect of a2dp/avrcp profilesMatt Ranostay1-12/+21
Bug-AGL: SPEC-1630 Change-Id: I38fc2c131b3d56a4b5a0a87f3bcd0eb27af5bb66 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-11-23Fix an issue in 4a support due to change in APIv3guppy_6.99.2guppy_6.99.1guppy/6.99.2guppy/6.99.16.99.26.99.1Loïc Collignon1-12/+7
In APIv3 there is a change in the response json from a call to an API. This prevent multimedia to get the right device to play audio on. Bug: SPEC-1974 Change-Id: Iea60421e229a3f24633065b9b81ab4b5c574fcc4 Signed-off-by: Loïc Collignon <loic.collignon@iot.bzh>
2018-11-16binding: mediaplayer: remove metadata verbMatt Ranostay1-15/+0
Since no client actually uses the metadata verb, but just the events this can be removed. Also the verb wouldn't show avrcp metadata. Bug-AGL: SPEC-1630 Change-Id: Iae7ba5a2e63107cb920566c83507bb2c7365a168 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-11-16binding: mediaplayer: add avrcp supportMatt Ranostay1-26/+108
Proxy avrcp metadata from bluetooth binding to mediaplayer service subscribers. Also allow transparent access to local and avrcp controls. Bug-AGL: SPEC-1630 Change-Id: I75cfd71ee62976a9312474b81469b8eb13a06015 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-11-16binding: mediaplayer: update local media metadata to match avrcpMatt Ranostay1-8/+13
To allow the mediaplayer application to not care if an media is local or a2dp stream the reported metadata events should be the same. Bug-AGL: SPEC-1630 Change-Id: I0fb00aa94d8b44e4babced0c87f3eeb6c3dd15e5 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-10-18binding: mediaplayer: upgrade to version 3 of afb frameworkMatt Ranostay1-21/+19
Change-Id: I8b3ff798f022da30cf6a05b54cfcfdca399dac5b Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-10-18binding: mediaplayer: quiet some compile warningsMatt Ranostay1-1/+3
Change-Id: I48d54c05bfb8f74f280ac914f13aa30ce79fad00 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-08-13Mediaplayer now works on 4a rolesguppy_6.90.0guppy/6.90.0flounder_5.99.6flounder_5.99.5flounder_5.99.4flounder_5.99.3flounder/5.99.6flounder/5.99.5flounder/5.99.4flounder/5.99.36.90.05.99.65.99.55.99.45.99.3Loïc Collignon1-10/+40
Fixes the issue that makes the mediaplayer not playing anything on 4a. Also added a lot a debugging messages to help to understand what is going on. Change-Id: I313da264ecb2bcc7075018c29595df3cdce52557 Signed-off-by: Loïc Collignon <loic.collignon@iot.bzh>
2018-06-14afm-mediaplayer-binding.c: Fix coding styleflounder_5.99.2flounder_5.99.1flounder/5.99.2flounder/5.99.15.99.25.99.1Leon Anavi1-2/+4
Set the opening brace at the beginning of the next line for each function. Bug-AGL: SPEC-1515 Change-Id: I8277e52fd2093e0df5ab998e990bed3d5c2ab32c Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
2018-06-12binding: mediaplayer: fix race condition with initial album artMatt Ranostay1-5/+8
gst_init and audio sinks weren't always getting setup in time for a subscriber to get the initial album art. Solution is to move the setup out of the pthread callback and confirm they are ran before .init() returns Bug-AGL: SPEC-1496 Change-Id: I70779bcb1ca539146c98718f5b0edd781f9899b4 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-05-08binding: mediaplayer: fix duplicate entries being added to playlistMatt Ranostay1-1/+7
Check playlist for an entry with the current media_path and refuse to add to the list if it exists Bug-AGL: SPEC-1375 Change-Id: Idc5fb4b2570ed7ac9cf63aa3c37e44b8e35d6b34 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-04-09binding: mediaplayer: add image metadata to eventMatt Ranostay1-19/+49
Give new subscribers to metadata image data, and also give metadata image data in event when track changes. Bug-AGL: SPEC-1375 Change-Id: Ic32d1f3004948fe3bc38c958a136fd0cf9967e53 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-04-06binding: mediaplayer: give initial playlist to new subscribersMatt Ranostay1-0/+9
On initial subscription to playlist event request the playlist via event Bug-AGL: SPEC-1375 Change-Id: Id2d7565b384ce117873827392c1e5f2a3e123098 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-01-18binding: mediaplayer: add check GST_TAG_PREVIEW_IMAGE for album artMatt Ranostay1-3/+14
Add support for using GST_TAG_PREVIEW_IMAGE in case GST_TAG_IMAGE tags aren't available Bug-AGL: SPEC-1241 Change-Id: I3bb4edf8c9350deffa3cf407285a333042403ec9 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2018-01-11binding: mediaplayer: only get audio resultsMatt Ranostay1-2/+14
Since video playback doesn't work yet don't populate the playlist with video media entries. Bug-AGL: SPEC-1236 Change-Id: I3b161351d975442e512bdbf2215174be2301069d Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2017-12-21Add 4A supportRonan Le Martret1-0/+29
Add conditional compilation option to enable using the 4A high-level API to request Multimedia role access. Change-Id: I85c19e33a355f9133bdda837e9374776fc92efe9 Signed-off-by: Ronan Le Martret <ronan.lemartret@iot.bzh> Signed-off-by: Scott Murray <scott.murray@konsulko.com> (cherry picked from commit d03590991d2c7104e7cd4b2a18e710008b2759ab)
2017-11-28Fix a crash when playing empty listJosé Bollo1-3/+10
Change-Id: I4037ab08715bea231bb8e9d725ffba9718c7daca Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2017-11-13binding: mediaplayer: add tag size checkeel_4.99.3eel/4.99.34.99.3Matt Ranostay1-1/+2
Slight chance to have an infinite tag check for album art data, and this patchset avoids that possibility by checking the max index of tags. Bug-AGL: SPEC-1091 Change-Id: I63836ea6e9795c97cfd0c07231c556bbbb8d9528 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2017-11-06binding: mediaplayer: add support for initial metadata on startupMatt Ranostay1-8/+27
Use a fakesink to get initial album art metadata on startup of service Bug-AGL: SPEC-1052 Change-Id: If3563e65480ba1a159d60e04d8fe7e63d12301a4 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2017-10-25binding: mediaplayer: assume play after seek commandeel_4.99.2eel/4.99.24.99.2Matt Ranostay1-2/+3
Assume to enter playing state when next/previous track commands, and this allows loading of metadata via gstreamer Bug-AGL: SPEC-931 Change-Id: Id7eeb1e354d3c2e7ad63a166b8dbd64afb453332 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2017-10-25binding: mediaplayer: fixup double conversion for volumeMatt Ranostay1-3/+3
Fix compiler warning of incorrect 'long int' to double conversions that for volume settings Bug-AGL: SPEC-931 Change-Id: I6645506f5636adb589256f101763b5433fc66603 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2017-10-25binding: mediaplayer: signaling of selected track during updateMatt Ranostay1-10/+21
Notify subscribers of the current playing selection on a playlist update. This is used to keep the UI selection of media in a playlist correct. Bug-AGL: SPEC-931 Change-Id: I8888bb6c1882695ba8ffd4a8aed2914ad0441388 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2017-10-23binding: mediaplayer: add stop verb for playbackMatt Ranostay1-0/+3
Add stop verb mostly for resetting playback on media removal Bug-AGL: SPEC-931 Change-Id: Ic564d2329aab300bbff0bb8afcf47a65dc73103b Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2017-10-23binding: mediaplayer: ending of playlist needs to send an eventMatt Ranostay1-1/+18
When ending a playlist an event needs to be sent to notify the UI Bug-AGL: SPEC-931 Change-Id: Ib96ee49775a90d9ca969031443cb9e9e2ec4610e Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2017-10-23binding: mediaplayer: add looping of playlistMatt Ranostay1-1/+11
Allow playlist to be looped when it reachs the end of it. Bug-AGL: SPEC-931 Change-Id: I482c51d12234a5e70f76fbb981249a643b6b78fc Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2017-10-23binding: mediaplayer: fix index/volume selectionMatt Ranostay1-2/+2
First track or volume of 0% couldn't ever be selected due to a invalid logic condition Bug-AGL: SPEC-931 Change-Id: I6bc7d9026eac24eef66ab1ec13b1a8766da7d586 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2017-10-19binding: mediaplayer: previous command on first track rewinds to beginningMatt Ranostay1-25/+30
If on first track on playlist and get previous track commands just rewind to beginning of that track. Bug-AGL: SPEC-931 Change-Id: Ie3decb70bd0826ad5199bdc9641befcc52cfd40a Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
2017-10-19binding: mediaplayer: add base64 album art reportingMatt Ranostay1-0/+62
Report the album art if any via the metadata verb in base64 data URI format. Bug-AGL: SPEC-931 Change-Id: Ifa9f5d799161a2b6a5a163e35b53a182f29fbd4b Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>