After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 729686 - Wifi display (miracast) support on gstreamer
Wifi display (miracast) support on gstreamer
Status: RESOLVED NOTABUG
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
1.3.2
Other Linux
: Normal enhancement
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2014-05-07 02:11 UTC by Hyunjun Ko
Modified: 2018-05-01 07:00 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Patch for mpegtsmux to support wifi display (15.84 KB, patch)
2014-05-07 15:59 UTC, Hyunjun Ko
none Details | Review
Modified patch for wifi display TS (13.59 KB, patch)
2014-05-11 08:12 UTC, Hyunjun Ko
none Details | Review
Rebased from the latest master (13.61 KB, patch)
2014-07-16 12:10 UTC, Hyunjun Ko
none Details | Review

Description Hyunjun Ko 2014-05-07 02:11:29 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.
Comment 1 Edward Hervey 2014-05-07 08:09:00 UTC
(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 ?
Comment 2 Tim-Philipp Müller 2014-05-07 08:18:51 UTC
Are you aware of this effort https://fosdem.org/2014/schedule/event/miracast/ which also uses GStreamer?
Comment 3 Hyunjun Ko 2014-05-07 09:06:20 UTC
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.
Comment 4 Hyunjun Ko 2014-05-07 09:54:51 UTC
(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 :-)
Comment 5 Hyunjun Ko 2014-05-07 15:59:20 UTC
Created attachment 276080 [details] [review]
Patch for mpegtsmux to support wifi display

Upload mpegtsmux patch to support wifi display
Comment 6 Hyunjun Ko 2014-05-11 08:12:37 UTC
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.
Comment 7 Hyunjun Ko 2014-07-16 12:10:19 UTC
Created attachment 280823 [details] [review]
Rebased from the latest master
Comment 8 stic 2014-09-25 08:04:57 UTC
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.
Comment 9 Hyunjun Ko 2014-09-28 14:01:10 UTC
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.
Comment 10 Nicolas Dufresne (ndufresne) 2015-10-24 01:20:53 UTC
(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.
Comment 11 Olivier Crête 2015-10-24 03:15:45 UTC
Have you also looked at Intel's Miracast implementation https://github.com/01org/wds ?
Comment 12 Hyunjun Ko 2015-10-26 06:17:03 UTC
(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.
Comment 13 Hyunjun Ko 2015-10-26 06:18:24 UTC
(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.
Comment 14 Edward Hervey 2018-05-01 07:00:10 UTC
There doesn't seem to be anything specific required in GStreamer since the downstream project (miraclecast) uses GStreamer already and is actively maintained.

Closing.