GNOME Bugzilla – Bug 729686
Wifi display (miracast) support on gstreamer
Last modified: 2018-05-01 07:00:10 UTC
Hello all. I'm developing wifi display feature on linux device using gstreamer. And I found something to contribute to this open source to develop wifi display feature. 1. Mpeg TS There are some instructions on wifi display specification about TS as below. - PID for PMT : 0x0100 - PID for PCR : 0x1000 - Elementary PID - Video : 0x1011 - Audio : starting from 0x1100 - PMT/PAT repeatition : the WFD Source shall transmit PAT/PMT repeatedly with a maximum time interval of 100 msec between repetition. - LPCM support - Descriptions and etc. 2. miracast src/sink plugins. This is doing like rtspsink based on wifi display spec. I know there is no rtspsink, that's why i contribute new plugin. These plugins have to handle rtsp msgs based on wifi display and send/receive rtp data. I think these plugins are running with rtpbin like udpsink. First of all, I think I can write a patch for mpegtsmux about #1. I'm going to upload new patch soon. Anyway, what do you think about this feature. I want to listen to your opinions. Thanks.
(In reply to comment #0) > Hello all. > > I'm developing wifi display feature on linux device using gstreamer. > And I found something to contribute to this open source to develop wifi display > feature. > Great idea > 1. Mpeg TS > There are some instructions on wifi display specification about TS as below. > - PID for PMT : 0x0100 > - PID for PCR : 0x1000 > - Elementary PID > - Video : 0x1011 > - Audio : starting from 0x1100 > - PMT/PAT repeatition : the WFD Source shall transmit PAT/PMT repeatedly > with a maximum time interval of 100 msec between repetition. > - LPCM support > - Descriptions and etc. You can now specify all of this through: * request pad names * custom GstMpegTsPMT and GstMpegTSPAT and send them as event onto the mpeg ts muxer. > > 2. miracast src/sink plugins. > This is doing like rtspsink based on wifi display spec. > I know there is no rtspsink, that's why i contribute new plugin. > These plugins have to handle rtsp msgs based on wifi display and send/receive > rtp data. > I think these plugins are running with rtpbin like udpsink. > Why not just use gst-rtsp-server ?
Are you aware of this effort https://fosdem.org/2014/schedule/event/miracast/ which also uses GStreamer?
I(In reply to comment #1) > Great idea Thank you :-) > You can now specify all of this through: > * request pad names > * custom GstMpegTsPMT and GstMpegTSPAT and send them as event onto the mpeg > ts muxer. > I think I can create new property like "miracast-mode" or "wfd-mode" and user can set it to create wifi display TS. What do you think about this approach? > Why not just use gst-rtsp-server ? gst-rtsp-server is another option for me. Actually, I'm using this module in my working project, but to implement wifi display feature, there need to be a lot of added codes, which means that it contaminated origin source codes. And miracast needs just a little bit of gst-rtsp-server code, because this spec needs just p2p connection and one pipeline in it. I think once a plugin for miracast is created, it would be very useful to developers who wants to create something mirroring.
(In reply to comment #2) > Are you aware of this effort https://fosdem.org/2014/schedule/event/miracast/ > which also uses GStreamer? I heard this project from Thiago. And already read http://dvdhrm.wordpress.com/2014/02/17/on-wifi-democratic-republics-and-miracles/ I'm sure that my contribution will be very helpful to this project :-)
Created attachment 276080 [details] [review] Patch for mpegtsmux to support wifi display Upload mpegtsmux patch to support wifi display
Created attachment 276317 [details] [review] Modified patch for wifi display TS Changed my patch 1. get elementary id from user by request_pad. 2. modify testsuite for mpegtsmux.
Created attachment 280823 [details] [review] Rebased from the latest master
Hi, this sounds quite interesting, are there any updates about it ? I haven't seen the src/sink plugins you were talking about, it is already available for testing ? Thanks.
Thanks for interest. Actually, src is implemented based on gst-rtsp-server currently. You can refer to the https://github.com/Samsung/gst-rtsp-server-wfd about this. It's working on Linux PC on Ubuntu 12.04.
(In reply to Hyunjun from comment #9) > Thanks for interest. > Actually, src is implemented based on gst-rtsp-server currently. > > You can refer to the https://github.com/Samsung/gst-rtsp-server-wfd about > this. > It's working on Linux PC on Ubuntu 12.04. I would suggest to try and propose patch to the server (or side library if nothing internal is needed) rather then forking it.
Have you also looked at Intel's Miracast implementation https://github.com/01org/wds ?
(In reply to Nicolas Dufresne (stormer) from comment #10) > > I would suggest to try and propose patch to the server (or side library if > nothing internal is needed) rather then forking it. I should have done this before:-) But I still plan to propose to this community in the near future.
(In reply to Olivier Crête from comment #11) > Have you also looked at Intel's Miracast implementation > https://github.com/01org/wds ? Sure :) And I'm watching https://github.com/albfan/miraclecast also.
There doesn't seem to be anything specific required in GStreamer since the downstream project (miraclecast) uses GStreamer already and is actively maintained. Closing.