raster pushed a commit to branch master.

http://git.enlightenment.org/apps/rage.git/commit/?id=de57f6735cacf007e72dc57c1e6c3947f8725a4b

commit de57f6735cacf007e72dc57c1e6c3947f8725a4b
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date:   Sat Nov 18 12:23:16 2017 +0900

    mpris support - tidy up
    
    make sure XXX's are for things to do still, list all the mime types
    fully that i can find (well ok - should get from emotion but it doesnt
    expose this), and dont expose functions that don't work in the dbus
    api and note what is imcomplete at the top
    
    this should dot i's and cross t's on the mpris support for now.
---
 src/bin/mpris.c | 422 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 406 insertions(+), 16 deletions(-)

diff --git a/src/bin/mpris.c b/src/bin/mpris.c
index 17303b6..2820c12 100644
--- a/src/bin/mpris.c
+++ b/src/bin/mpris.c
@@ -17,9 +17,11 @@ static Eldbus_Service_Interface *iface_player = NULL;
 #define PATH    "/org/mpris/MediaPlayer2"
 
 static void
-_cb_name_request(void *data EINA_UNUSED, const Eldbus_Message *msg,
+_cb_name_request(void *data EINA_UNUSED, const Eldbus_Message *msg EINA_UNUSED,
                  Eldbus_Pending *pending EINA_UNUSED)
 {
+   return;
+/*
    unsigned int flag;
 
    if (eldbus_message_error_get(msg, NULL, NULL))
@@ -34,10 +36,23 @@ _cb_name_request(void *data EINA_UNUSED, const 
Eldbus_Message *msg,
      }
    if (!(flag & ELDBUS_NAME_REQUEST_REPLY_PRIMARY_OWNER))
      fprintf(stderr, "Name already in use\n");
+ */
 }
 
-/*
+/* Implementing almost all of:
+ * 
 https://specifications.freedesktop.org/mpris-spec/latest/Player_Interface.html
+ * 
+ * Not implemented:
+ * Tracklist objects
+ * Metadata
+ * SetPosition (requires Tracklist objects)
+ * 
+ * In rage generally and here:
+ * 
+ * Loop playlist vs just loop current
+ * Shuffle play
+ * Playback rate
  */
 
 #define API(fn) \
@@ -106,6 +121,7 @@ GETTER(can_raise)
 
 GETTER(has_track_list)
 {
+   // XXX: Implement Tracklist
    eldbus_message_iter_arguments_append(iter, "b", EINA_FALSE);
    return EINA_TRUE;
 }
@@ -113,7 +129,6 @@ GETTER(has_track_list)
 GETTER(identity)
 {
    char buf[] = "Rage";
-
    eldbus_message_iter_arguments_append(iter, "s", buf);
    return EINA_TRUE;
 }
@@ -130,11 +145,383 @@ GETTER(supported_mime_types)
    Eldbus_Message_Iter *array = NULL;
 
    eldbus_message_iter_arguments_append(iter, "as", &array);
-   eldbus_message_iter_arguments_append(array, "s", "application/ogg");
-   eldbus_message_iter_arguments_append(array, "s", "video/mpeg");
-   eldbus_message_iter_arguments_append(array, "s", "audio/*");
-   eldbus_message_iter_arguments_append(array, "s", "video/*");
-   eldbus_message_iter_arguments_append(array, "s", "item3");
+#define A(s) eldbus_message_iter_arguments_append(array, "s", s)
+   A("application/ogg");
+
+   A("audio/1d-interleaved-parityfec");
+   A("audio/32kadpcm");
+   A("audio/3gpp");
+   A("audio/3gpp2");
+   A("audio/AMR");
+   A("audio/AMR-WB");
+   A("audio/ATRAC-ADVANCED-LOSSLESS");
+   A("audio/ATRAC-X");
+   A("audio/ATRAC3");
+   A("audio/BV16");
+   A("audio/BV32");
+   A("audio/CN");
+   A("audio/DAT12");
+   A("audio/DV");
+   A("audio/DVI4");
+   A("audio/EVRC");
+   A("audio/EVRC-QCP");
+   A("audio/EVRC0");
+   A("audio/EVRC1");
+   A("audio/EVRCB");
+   A("audio/EVRCB0");
+   A("audio/EVRCB1");
+   A("audio/EVRCWB");
+   A("audio/EVRCWB0");
+   A("audio/EVRCWB1");
+   A("audio/G719");
+   A("audio/G722");
+   A("audio/G7221");
+   A("audio/G723");
+   A("audio/G726-16");
+   A("audio/G726-24");
+   A("audio/G726-32");
+   A("audio/G726-40");
+   A("audio/G728");
+   A("audio/G729");
+   A("audio/G7291");
+   A("audio/G729D");
+   A("audio/G729E");
+   A("audio/GSM");
+   A("audio/GSM-EFR");
+   A("audio/GSM-HR-08");
+   A("audio/L16");
+   A("audio/L20");
+   A("audio/L24");
+   A("audio/L8");
+   A("audio/LPC");
+   A("audio/MP4A-LATM");
+   A("audio/MPA");
+   A("audio/PCMA");
+   A("audio/PCMA-WB");
+   A("audio/PCMU");
+   A("audio/PCMU-WB");
+   A("audio/QCELP");
+   A("audio/RED");
+   A("audio/SMV");
+   A("audio/SMV-QCP");
+   A("audio/SMV0");
+   A("audio/UEMCLIP");
+   A("audio/VDVI");
+   A("audio/VMR-WB");
+   A("audio/aac");
+   A("audio/ac3");
+   A("audio/adpcm");
+   A("audio/amr");
+   A("audio/amr-wb");
+   A("audio/amr-wb+");
+   A("audio/annodex");
+   A("audio/asc");
+   A("audio/basic");
+   A("audio/bv16");
+   A("audio/bv32");
+   A("audio/clearmode");
+   A("audio/cn");
+   A("audio/csound");
+   A("audio/dat12");
+   A("audio/dls");
+   A("audio/dsr-es201108");
+   A("audio/dsr-es202050");
+   A("audio/dsr-es202211");
+   A("audio/dsr-es202212");
+   A("audio/dvi4");
+   A("audio/eac3");
+   A("audio/evrc");
+   A("audio/evrc-qcp");
+   A("audio/evrc0");
+   A("audio/evrc1");
+   A("audio/evrcb");
+   A("audio/evrcb0");
+   A("audio/evrcb1");
+   A("audio/evrcwb");
+   A("audio/evrcwb0");
+   A("audio/evrcwb1");
+   A("audio/example");
+   A("audio/flac");
+   A("audio/fwdred");
+   A("audio/g.722.1");
+   A("audio/g719");
+   A("audio/g722");
+   A("audio/g7221");
+   A("audio/g723");
+   A("audio/g726-16");
+   A("audio/g726-24");
+   A("audio/g726-32");
+   A("audio/g726-40");
+   A("audio/g728");
+   A("audio/g729");
+   A("audio/g7291");
+   A("audio/g729d");
+   A("audio/g729e");
+   A("audio/gsm");
+   A("audio/gsm-efr");
+   A("audio/iLBC");
+   A("audio/ilbc");
+   A("audio/ip-mr_v2.5");
+   A("audio/l16");
+   A("audio/l20");
+   A("audio/l24");
+   A("audio/l8");
+   A("audio/lpc");
+   A("audio/midi");
+   A("audio/mobile-xmf");
+   A("audio/mp2");
+   A("audio/mp4");
+   A("audio/mp4a-latm");
+   A("audio/mpa");
+   A("audio/mpa-robust");
+   A("audio/mpeg");
+   A("audio/mpeg4-generic");
+   A("audio/mpegurl");
+   A("audio/ogg");
+   A("audio/parityfec");
+   A("audio/pcma");
+   A("audio/pcma-wb");
+   A("audio/pcmu");
+   A("audio/pcmu-wb");
+   A("audio/prs.sid");
+   A("audio/qcelp");
+   A("audio/raptorfec");
+   A("audio/red");
+   A("audio/rtp-enc-aescm128");
+   A("audio/rtp-midi");
+   A("audio/rtx");
+   A("audio/s3m");
+   A("audio/silk");
+   A("audio/smv");
+   A("audio/smv-qcp");
+   A("audio/smv0");
+   A("audio/sp-midi");
+   A("audio/speex");
+   A("audio/t140c");
+   A("audio/t38");
+   A("audio/telephone-event");
+   A("audio/tone");
+   A("audio/ulpfec");
+   A("audio/vdvi");
+   A("audio/vmr-wb");
+   A("audio/vnd.3gpp.iufp");
+   A("audio/vnd.4SB");
+   A("audio/vnd.4sb");
+   A("audio/vnd.CELP");
+   A("audio/vnd.audiokoz");
+   A("audio/vnd.celp");
+   A("audio/vnd.cisco.nse");
+   A("audio/vnd.cmles.radio-events");
+   A("audio/vnd.cns.anp1");
+   A("audio/vnd.cns.inf1");
+   A("audio/vnd.dece.audio");
+   A("audio/vnd.digital-winds");
+   A("audio/vnd.dlna.adts");
+   A("audio/vnd.dolby.heaac.1");
+   A("audio/vnd.dolby.heaac.2");
+   A("audio/vnd.dolby.mlp");
+   A("audio/vnd.dolby.mps");
+   A("audio/vnd.dolby.pl2");
+   A("audio/vnd.dolby.pl2x");
+   A("audio/vnd.dolby.pl2z");
+   A("audio/vnd.dolby.pulse.1");
+   A("audio/vnd.dra");
+   A("audio/vnd.dts");
+   A("audio/vnd.dts.hd");
+   A("audio/vnd.dvb.file");
+   A("audio/vnd.everad.plj");
+   A("audio/vnd.hns.audio");
+   A("audio/vnd.lucent.voice");
+   A("audio/vnd.rn-realaudio");
+   A("audio/vnd.ms-playready.media.pya");
+   A("audio/vnd.nokia.mobile-xmf");
+   A("audio/vnd.nortel.vbk");
+   A("audio/vnd.nuera.ecelp4800");
+   A("audio/vnd.nuera.ecelp7470");
+   A("audio/vnd.nuera.ecelp9600");
+   A("audio/vnd.octel.sbc");
+   A("audio/vnd.qcelp");
+   A("audio/vnd.rhetorex.32kadpcm");
+   A("audio/vnd.rip");
+   A("audio/vnd.sealedmedia.softseal.mpeg");
+   A("audio/vnd.vmx.cvsd");
+   A("audio/vorbis");
+   A("audio/vorbis-config");
+   A("audio/webm");
+   A("audio/x-aac");
+   A("audio/x-adpcm");
+   A("audio/x-aifc");
+   A("audio/x-aiff");
+   A("audio/x-amzxml");
+   A("audio/x-ape");
+   A("audio/x-caf");
+   A("audio/x-flac");
+   A("audio/x-flac+ogg");
+   A("audio/x-gsm");
+   A("audio/x-iriver-pla");
+   A("audio/x-it");
+   A("audio/x-m4b");
+   A("audio/x-matroska");
+   A("audio/x-minipsf");
+   A("audio/x-mo3");
+   A("audio/x-mod");
+   A("audio/x-mpegurl");
+   A("audio/x-ms-asx");
+   A("audio/x-ms-wax");
+   A("audio/x-ms-wma");
+   A("audio/x-musepack");
+   A("audio/x-opus+ogg");
+   A("audio/x-pn-audibleaudio");
+   A("audio/x-pn-realaudio");
+   A("audio/x-pn-realaudio-plugin");
+   A("audio/x-psf");
+   A("audio/x-psflib");
+   A("audio/x-realaudio");
+   A("audio/x-riff");
+   A("audio/x-s3m");
+   A("audio/x-scpls");
+   A("audio/x-sd2");
+   A("audio/x-speex");
+   A("audio/x-speex+ogg");
+   A("audio/x-stm");
+   A("audio/x-tta");
+   A("audio/x-voc");
+   A("audio/x-vorbis+ogg");
+   A("audio/x-wav");
+   A("audio/x-wavpack");
+   A("audio/x-wavpack-correction");
+   A("audio/x-xi");
+   A("audio/x-xm");
+   A("audio/x-xmf");
+   A("audio/xm");
+
+   A("video/1d-interleaved-parityfec");
+   A("video/3gpp");
+   A("video/3gpp-tt");
+   A("video/3gpp2");
+   A("video/BMPEG");
+   A("video/BT656");
+   A("video/CelB");
+   A("video/DV");
+   A("video/H261");
+   A("video/H263");
+   A("video/H263-1998");
+   A("video/H263-2000");
+   A("video/H264");
+   A("video/H264-RCDO");
+   A("video/H264-SVC");
+   A("video/JPEG");
+   A("video/MJ2");
+   A("video/MP1S");
+   A("video/MP2P");
+   A("video/MP2T");
+   A("video/MP4V-ES");
+   A("video/MPV");
+   A("video/SMPTE292M");
+   A("video/annodex");
+   A("video/bmpeg");
+   A("video/bt656");
+   A("video/celb");
+   A("video/dl");
+   A("video/dv");
+   A("video/example");
+   A("video/fli");
+   A("video/gl");
+   A("video/h261");
+   A("video/h263");
+   A("video/h263-1998");
+   A("video/h263-2000");
+   A("video/h264");
+   A("video/isivideo");
+   A("video/jpeg");
+   A("video/jpeg2000");
+   A("video/jpm");
+   A("video/mj2");
+   A("video/mp1s");
+   A("video/mp2p");
+   A("video/mp2t");
+   A("video/mp4");
+   A("video/mp4v-es");
+   A("video/mpeg");
+   A("video/mpeg4-generic");
+   A("video/mpv");
+   A("video/nv");
+   A("video/ogg");
+   A("video/parityfec");
+   A("video/pointer");
+   A("video/quicktime");
+   A("video/raptorfec");
+   A("video/raw");
+   A("video/rtp-enc-aescm128");
+   A("video/rtx");
+   A("video/smpte292m");
+   A("video/ulpfec");
+   A("video/vc1");
+   A("video/vnd.CCTV");
+   A("video/vnd.cctv");
+   A("video/vnd.dece.hd");
+   A("video/vnd.dece.mobile");
+   A("video/vnd.dece.mp4");
+   A("video/vnd.dece.pd");
+   A("video/vnd.dece.sd");
+   A("video/vnd.dece.video");
+   A("video/vnd.directv.mpeg");
+   A("video/vnd.directv.mpeg-tts");
+   A("video/vnd.dlna.mpeg-tts");
+   A("video/vnd.dvb.file");
+   A("video/vnd.fvt");
+   A("video/vnd.hns.video");
+   A("video/vnd.iptvforum.1dparityfec-1010");
+   A("video/vnd.iptvforum.1dparityfec-2005");
+   A("video/vnd.iptvforum.2dparityfec-1010");
+   A("video/vnd.iptvforum.2dparityfec-2005");
+   A("video/vnd.iptvforum.ttsavc");
+   A("video/vnd.iptvforum.ttsmpeg2");
+   A("video/vnd.motorola.video");
+   A("video/vnd.motorola.videop");
+   A("video/vnd.mpegurl");
+   A("video/vnd.ms-playready.media.pyv");
+   A("video/vnd.mts");
+   A("video/vnd.nokia.interleaved-multimedia");
+   A("video/vnd.nokia.videovoip");
+   A("video/vnd.objectvideo");
+   A("video/vnd.rn-realvideo");
+   A("video/vnd.sealed.mpeg1");
+   A("video/vnd.sealed.mpeg4");
+   A("video/vnd.sealed.swf");
+   A("video/vnd.sealedmedia.softseal.mov");
+   A("video/vnd.uvvu.mp4");
+   A("video/vnd.vivo");
+   A("video/wavelet");
+   A("video/webm");
+   A("video/x-anim");
+   A("video/x-f4v");
+   A("video/x-fli");
+   A("video/x-flic");
+   A("video/x-flv");
+   A("video/x-javafx");
+   A("video/x-la-asf");
+   A("video/x-m4v");
+   A("video/x-matroska");
+   A("video/x-matroska-3d");
+   A("video/x-mng");
+   A("video/x-ms-asf");
+   A("video/x-ms-vob");
+   A("video/x-ms-wm");
+   A("video/x-ms-wmp");
+   A("video/x-ms-wmv");
+   A("video/x-ms-wmx");
+   A("video/x-ms-wvx");
+   A("video/x-msvideo");
+   A("video/x-nsv");
+   A("video/x-ogm+ogg");
+   A("video/x-sgi-movie");
+   A("video/x-smv");
+   A("video/x-theora+ogg");
+
+   // hope the other end understands globs?
+   A("video/*");
+   A("audio/*");
    eldbus_message_iter_container_close(iter, array);
    return EINA_TRUE;
 }
@@ -144,10 +531,10 @@ GETTER(supported_uri_schemes)
    Eldbus_Message_Iter *array = NULL;
 
    eldbus_message_iter_arguments_append(iter, "as", &array);
-   eldbus_message_iter_arguments_append(array, "s", "file");
-   eldbus_message_iter_arguments_append(array, "s", "http");
-   eldbus_message_iter_arguments_append(array, "s", "https");
-   eldbus_message_iter_arguments_append(array, "s", "rtsp");
+   A("file");
+   A("http");
+   A("https");
+   A("rtsp");
    eldbus_message_iter_container_close(iter, array);
    return EINA_TRUE;
 }
@@ -260,6 +647,7 @@ end:
 GETTER(rate)
 {
    double rate = 1.0;
+   // XXX: Implement playback rate
    eldbus_message_iter_arguments_append(iter, "d", rate);
    return EINA_TRUE;
 }
@@ -267,6 +655,7 @@ GETTER(rate)
 SETTER(rate)
 {
    double rate = 1.0;
+   // XXX: Implement playback rate
    eldbus_message_iter_arguments_get(iter, "d", &rate);
    return eldbus_message_method_return_new(msg);
 }
@@ -274,6 +663,7 @@ SETTER(rate)
 GETTER(shuffle)
 {
    Eina_Bool shuffle = EINA_FALSE;
+   // XXX: Implement shuffle mode
    eldbus_message_iter_arguments_append(iter, "b", shuffle);
    return EINA_TRUE;
 }
@@ -281,6 +671,7 @@ GETTER(shuffle)
 SETTER(shuffle)
 {
    Eina_Bool shuffle = EINA_FALSE;
+   // XXX: Implement shuffle mode
    fprintf(stderr, "Cannot set shuffle mode yet.\n");
    eldbus_message_iter_arguments_get(iter, "b", &shuffle);
    return eldbus_message_method_return_new(msg);
@@ -467,7 +858,6 @@ API(seek)
 
    if (!inf) goto end;
    if (browser_visible()) goto end;
-   // XXX: seek to pos in usec
    if (!eldbus_message_arguments_get(msg, "x", &pos))
      return eldbus_message_error_new(msg, "Invalid arguments", "Error getting 
position");
    video_position_set(inf->vid, (double)pos / 1000000.0);
@@ -475,18 +865,19 @@ end:
    return eldbus_message_method_return_new(msg);
 }
 
+/*
 API(set_position)
 {
    fprintf(stderr, "Cannot do set_position yet.\n");
    // XXX: get track + position
    return eldbus_message_method_return_new(msg);
 }
+*/
 
 API(open_uri)
 {
    char *uri = NULL;
 
-   // XXX: handle uri open
    if (!eldbus_message_arguments_get(msg, "s", &uri))
      return eldbus_message_error_new(msg, "Invalid arguments", "Error getting 
URI string");
    win_video_insert(mainwin, uri);
@@ -505,7 +896,7 @@ static const Eldbus_Method methods_player[] =
    METHOD("Stop", NULL, stop),
    METHOD("Play", NULL, play),
    METHOD("Seek", ELDBUS_ARGS({"x", "Offset"}), seek),
-   METHOD("SetPosition", ELDBUS_ARGS({ "ox", "Path,Position"}), set_position),
+//   METHOD("SetPosition", ELDBUS_ARGS({ "ox", "Path,Position"}), 
set_position),
    METHOD("OpenUri", ELDBUS_ARGS({"s", "Uri"}), open_uri),
    { 0 }
 };
@@ -515,7 +906,6 @@ static const Eldbus_Signal signals_player[] =
    [ 0 ] = { "Seeked", ELDBUS_ARGS({ "x", "Position" }), 0 },
    { 0 }
 };
-// XXX: Signal: Seeked (x: Position)
 
 static const Eldbus_Service_Interface_Desc desc_player = {
    "org.mpris.MediaPlayer2.Player", methods_player, signals_player, 
properties_player, NULL, NULL

-- 


Reply via email to