fix byte order of DHCP_SERVER_ID option
If miraclecat is GO, miracle-dhcp runs as server, it send out SERVER_ID
option in little endian, causes non-GO peer connect to wrong IP address, so
RTSP connection can't be established.
In scenario like, say Android (GO) <-> miracalcast (non-GO), the DHCP service
is provided by Android, in this case, the SERVER_ID is in expected byte order
(big endian).
set audio=False by default
since gstplayer has argument --audio to enable audio support but no
way to disable it, audio=False might a better choise.
If we left audio=True and incoming stream has video only, the whole
pipeline will be blocked and wait for audio stream.
init copy & modify
calculate array size of resolutions at build time instead of tailing null element
match resolution from high to low
init source side implementation
add option [-f|--full-screen] to switch to full screen mode at start up
initial sender implementation
integrate miracle-sender with miracast-srcctl
stop sender when peer freed
source implement + sender talk via dbus
miracle-wifid: fix some leaks of wpas_message
stability: increase gcc warning level
miracle-sender: change bus name from org.freedesktop.miracle.Sender to org.freedesktop.miracle
gstplayer: set sync=false to reduce latency
miracle-wifid: fix call waitid() with NULL pointer issue reported by valgrind
rename dbus name back to org.freedesktop.miracle.Sender and variety kinds of tunning
encode video with x264enc temperarily to prevent decoding issue on dongle
stop sender properly after session end
miracle-srcctl: fix memory management issues
Make miracle-wifid conexists with other network tools
The new option --lazy-managed will let miracle-wifid don't managed the
links automatically. Instead, the link will be managed only when the new
DBus property Managed was set to true. So this will be possible that
miracle-wifid could be conexists with other network tools like
networkmanager.
For example, unmange the device in networkmanager with setting the DBus
property org.freedesktop.NetworkManager.Device.Managed to false and
manage it in miracle-wifid with setting
org.freedesktop.miracle.wifi.Link.Managed to true, then both them could
works and don't need to kill each other.
Besides, there is new command named make-managed in miracle-wifictl and
miracle-sinkctla.
miracle-wifid: add dbus & systemd service files to support dbus activation
miracle-wifid: remove duplicated link & peer dbus nodes by checking prefix
miracle-srcctl: fix some warming
miracle-wifid: add MACAddress property to link
miracle-wfdctl: init commit
miracle-*ctl: remove some debugging log messages
miracle-*ctl: resolve object parsing issue in ctl_wifi_fetch()
while parsing ctl_peer and ctl_link objects, if a ctl_peer appear prior
to its related ctl_link, -EINVAL is reported, and miracle-*ctl will quit
immediately.
miracle-*ctl: fix label leak
miracle-wifid: let the format of wfd_dev_info compliant with wfd_subelems to ease parsing
miracle-*ctl: remove N_ELEMENTS() and use SHL_ARRAY_LENGTH() instead
miracle-*ctl: rename resolution_bitmap to wfd_resolution and add progressive field
remove vim settings from files
miracle-srcctl: rename ctl_src to wfd_src
miracle-wfdctl: first revision which can create TCP connection of WFD session between peers, controled through DBus
In this revision, the procedure of session negotiation is not yet
completed but only TCP connection can be established between peers.
You can try it by run script `res/miracle-wfdctl-demo` to see how it
work.
miracle-wfdctl-demo: wait for property chainging and object apperance by
busctl instead of sleep
miracle-*ctl: update links and peers when wifid up or down
miracle-wfdctl-demo: cleanup before exit
ignore .vimrc from being managed by git
miracle-wfdctl: now we can establish WFD session multiple times
in this revision, the source side RTSP protocol is not implemented
completely, the focus is on stability, DBus interfaces.
add debian support prepared by Guo Shuang
miracle-wfdctl-demo: add an optional argument to specify link index of
NetworkManager
miracle-wfdctl: refactoring to remove repeated snippets and centralize the
dispatching of request and reply
add -fstack-protector-strong to capture more stack issues
add miraclecast.links to create symlink for DBus activated systemd
services
miracle-wfdctl: return -EINVAL instead of being aborted by assert() when
rtsp message ID is invalid
miracle-*ctl: add *_from_string() and *_to_string() for wfd-video-formats and
wfd-audio-codecs
miracle-wfdctl: finish migration of source side rtsp protocol
remove unused files
fix links of services for debian package
move down trap command to prevent triggered by runing with no argument
remove unused #include
miracle-wfdctl: add timeout value and Range header to the reply of PLAY request
test compiler flag -fstack-protector-strong before set
miracle-wfdctl: run gst-launch to generate video stream with hardcoded
environment
miracle-wfdctl: fix return uninitialized variable value issue
add struct wfd_arg to generalize passing of arguments
miracle-*ctl: fix and enhance wfd_subelement parser
miracle-wfdctl: remove unused function and improve log message for
peer new & delete
rename macro arguement from v to _v to prevent name confliction
add support for signed and unsigned int for wfd_arg
refactoring getter/setter for dict type of wfd_arg to remove declaration
of temp variable
add wfd_arg_list type of wfd_arg
miracle_wfdctl: control flow and passing arguments with wfd_arg instead
of keep adding new structure fields
miracle-wfdctl: print friendly name when peer shows up
miracle-wfdctl: fix mapping from rtsp_message to rtsp_message_id
miracle-wfctl: reply 'request not implemented' instead of abort by assert()
check gcc version to ensure c11 generic select feature
update dependencies for debian based distro
miracle-wfdctl: acquire DISPLAY, XAUTHORITY and XDG_RUNTIME_DIR from
environment, instead of hardcode
miracle-wfdctl: fix wfd_session_end() recursive calling issue
miracle-wfdctl: add handler for PAUSE, PLAY and TEARDOWN methods
miracle-wfdctl: clarify teardown procedure of session
miracle-wfdctl: delay for 100ms before start sending stream to sink
miracle-wfdctl: compare wfd-standby and wfd-idr-request by message body
miracle-wfdctl: user now can select video mode through DBus interface
miracle-wfdctl: fix typo in systemd service file
miracle-wfdctl: change session type from uint64_t to unsigned int
miracle-wfdctl: do not launch gstreamer if DO_NOT_LAUNCH_GST environment
variable is set while miracle-wfdctl running
miracle-wfdctl: remove unused Range header from reply
add compiler flag to do sanity check of undefined behaviours.
relax permissions checking to let non-privileged use miracalcast.
we will enhance this by fine grained permission conrol latter.
since we relaxed the permissions to talk to wifid and wfdctl, so there is
no need to run miracle-wfdctl-demo with sudo. but to kill these two
privileged services, the killall still need sudo
miracle-wfdctl: integrate sd_event with GMainLoop for running gstreamer
in process instead of fork n exec gst-launch
miracle-wfdctl: encoding video stream with gstreamer library instead of
gst-launch-1.0
miracle-wfdctl-demo: run tcpdump with sudo
miracle-wifid: change managed property of link by method call instead of
set property due to wpa_supplicant needs time to get ready
miracle-wfdctl: include header <gst/gst.h> for resolving compiler warning
miracle-wfdctl: add rtcp and audio supporting to gstreamer pipeline
miracle-wfdctl: fix session removal dbus notification
miracle-wfdctl: fix variety kinds of dbus interface issues
miracle-wfdctl: fix sink removal notifcation
fix typo in miracle-wifid.service
miracle-wfdctl: set XAUTHORITY and DISPLAY before create gstreamer
pipeline, and now we can pass device name to pulseaudio
miraclw-wfdctl: fix typo of dbus signal names
miraclw-wfdctl: now you can cast only specified xid or xname to sink
miracle-wfdctl: fine tune gstreamer pipeline
miracle-wfdctl: fix argument passing for ximagesrc
miracle-wfdctl: send video only stream if no audio device specified
update dependencies of systemd services
miracle-wfdctl: reply rtsp request with date header in locale
en_US.UTF-8
miracle-wrdctl-demo: capture packets on p2p wnic with tshark instead of
tcpdump
miracle-wfdctl: set ximagesrc as live mode to prvent it preroll in pause
state
miracle-wfdctl: fine tune codec to compliant with WFD spec + H264
profile/level
miracle-wfdctl: disable audio encoding temparary
miracle-wfdctl: save captured packets to .pcap file instead of print out
on console
update dependency information
miracle-wfdctl: remove extra NULL parameter
miracle-wfdctl: do not expose rtsp_message_id_to_string() to outside
world
miracle-wfdctl: handle gst messages and reflect state onto session
miracle-wfdctl: encode audio with voaacenc instead of avenc_aac to get
closer to WFD spec
rename miracle-wfdctl to miracle-dispd
change argument types of wfd_sink_start_session()
To workaround valac issue
miracle-wfdctl: fix pointer check issue
add a demostration for wifid + dispd
reorganize demo, make it looks like running in sequential instead of trigger by async events
miracle-dispd: fix monitor geometry calculation issue
remove miracle-wfdctl-demo, replaced by demo/miracle-wfdctl
demo/miracle-wfdctl: fix some build issues for GDK version older then
3.22
update dependencies in debian/ for demo/
update cmake minimum requirement from 2.8 to 3.0.2 due to usage of version comparasion of if command
check valac version to decide whether or not to use new Gdk.Monitor class
add install() for demo/miracle-wfdctl
add mission dependencies to debian/control
miracle-dispd: merge patch from Meelis
acquire ownership through Link.Manage()/Link.Unmanage() instead of set Link.Managed property
demo/miracle-wfdctl: better handling session tearing down
move definitions related to miracle-dispd from src/ctl to src/disp
demo/miracle-wfdctl: handle SIGINT to exit gracefully
miracle-dispd: relax checking for peer with empty wfd_subelements
miracle-dispd: fix symlink for dbus-org.freedesktop.miracle.wfd.service
which is an alias of miracle-dispd.service
demo/miracle-wfdctl: log message tweaks
miracle-dispd: add watchdog and SIGKILL for it
to prevent no reponse and unable to be terminated issue. this is a temp solution
miracle-wifid: fix signal emittion of FormationFailure
miracle-wfdctl: update description of DBus interfaces
miracle-dispd: notify systemd about the service readiness
miracle-wifid: postpone the emittion of managed signal after the status
query
demo/miracle-wfdctl: maintain DBus interfaces by .vala files instead of generate from .xml which have only sync methods
miracle-dispd: use software codec instead of vaapi accelerated codec
miracle-dispd: add error report log to handle_replay()
miracle-dispd, demo/miracle-wfdctl: improve error handling and reporting
miracle-dispd: fix output resolution to 1080p@30
miracle-wifid: add Link.P2PState for checking P2P supporting status
demo/miracle-wfdctl: Wait for P2PState changing before do P2P scanning
add missing build-time dependencies
fix loop boundary checking
miracle-dispd: fix some uninitialized variable accessing issues
demo/miracle-wfdctl: remove unused files
add meson build supporting
remove install script and install scripts with install_data()
handle meson optoins properly
quote string entries with configuration_data.set_quoted() instead of by ourself with configureation_data.set()
remove starting `/` in front of installation path of DBus policy file
demo/miracle-wfdctl: rollback method definitions in dbus interfaces from async to sync
demo/miracle-wfdctl: teardown session more gracefully
miracle-dispd: stablizing and removing memory leak
miracle-dispd: put back gstreamer
in this version, the pipeline can be stopped properly, but the gst &
glib allocated memory can't be release cleanly (which won't
accumulate)
Change-Id: I242b106158db647070e7852b84f6f90b6bbd96f4
miracle-dispd: remove some compiler warmings
Change-Id: Ief2ae8e2992c2fee34fe560af73deb955a9186de
demo/miracle-wfdctl: log more info about DBus operation
Change-Id: Ic44a6a2ca4585e6aa1983885b4730ccee6fd3d33
remove address sanitizer flag from default options
let user or packaging system to decide whether or not to use it
Change-Id: I27e7f7eae3f79431a1ec7dc69d5f372677dadbad
miracle-wifid: rename link_set_managed()
rename to prevent confusing with managed event notification
Change-Id: I0f0d01f97156044bbb225e199b2717d5ea9c1a24
miracle-wifid: remove unused function
Change-Id: Ic2709a3661914fd9e0708c33649118feededa7f6
miracle-wifid: cleanup change notification of Link.Managed property
Change-Id: Ia5b056151e07219f0e6cc34dbc9fc2149f929a36
miracle-wifid: minor tweaks of log messages and identation
Change-Id: Id9e98583f3256c83cf48f18cf08740849ded3cca
miracle-wifid: fix crashing on link removing issue
wifid crashes when link removing (either unplug usb wlan dongle or
unload kernel module) due to double
Change-Id: I9480a095659752343e505eb41b380d1ab3cd322a
miracle-wifid: fine tune P2P state notification timing
Change-Id: Idb111b90109010733b96d653c2d6d7855ebc781f
miracle-disp: extracting encoder, part1
Change-Id: Ic9293e9cf379d352c75701834f17fa553f0bf52d
miracle-dispd: refactory session startup function
Change-Id: If1940a5823171d35230d29051d79c9827efc054f
use meson default build type instead of debugoptimized
Change-Id: I39bdc3e9df61c681b7ec5800a9e57fc7e9971cb0
migrate more gstreamer code to res/gstencoder
Change-Id: Id5098e37fb1eabb2906505f26969e6d8cedad519
miracle-dispd: add struct dispd_encoder as encoder client
since wait for the availability of newly spawned process and communicate
with it is a highly async task, wrapping in a isolated class is a better
choise.
Change-Id: I7201da49f379c65014123269ed9e0279bcb8c918
miracle-dispd: cleanup and reorganize header
Change-Id: I0067d59d89f79af53ae7291894191edb33789ab2
miracle-dispd: rename field from ref_count to ref
Change-Id: Ia8138c0609b0100dd2784734287a4b3964beacbd
miracle-dispd: unify log message
Change-Id: I17c7cb0c64ddaecd09ff59f65dcb0e745f6b7174
miracle-dispd: log if a function call returns error
it is easier to trace back to the location where the error occured
by logging the return code instead of simply return a error number
Change-Id: Ic711af32a1e80d9da9317269521a4745099e30cc
miracle-dispd: extract encoder from dispd, part 2
Change-Id: Ie61daa87a83b875013c525fe3f15222bf9057926
miracle-dispd: complete cmake build for extracted encoder
Change-Id: I5635bffdb8e1a0a693893e22837de6a8a0071fbe
miracle-dispd: improve encoder lifecycle management
Change-Id: Ic651e4795e4c9579978fe3e3529d8d61e739ffd1
miracle-dispd: replace assert() with assert_?ret?()
for capturing more information about buggy behaviours, more
validations and loggings are added
Change-Id: I57e11d201324ed10b2218c9e72627759aae619c9
remove valgrind checking since now it is optional
Change-Id: I39dc6b3e23307fd039775983b6d68878547523ba
miracle-wifid: fix the timing of notification of P2P availability
Change-Id: I86c453256b614022db5d941d64984f9eecd4ef39
miracle-dispd: fix definition of wfd_session_is_established()
Change-Id: I61638bcb4e17059b5b9e37252894ab35d524d7cf
gstencoder: exit if pipeline encounter error, EOS or enter NULL state
Change-Id: Id9934d144bf023b301d92b24cc1cafcf2bac3b8e
miracle-dispd: add timer to ensure the termination of encoder process
Change-Id: I282136c79392137f2501f82009154087ee9649be
gstencoder: add license declaration
Change-Id: Ia2d7458d028e7d0406c3eb2489211c5daa86149d
gstencoder: print final pipeline description to ease debugging
Change-Id: Ib5d9bfea0760f401033b7e8982a14ae23f70d601
miracle-dispd: do not link with gstreamer libraries
Change-Id: Ie178235579429647de6e7e4cf738ce814e835424
miracle-dispd: minor value returning style tunning
Change-Id: I608154ffcbe0f25b4bfa9f78d0f457afe1e4fb89
miracle-dispd: more logging and assertions
Change-Id: I0450b9144390b12eed0646c4a4eacf6beed6ae91
miracle-dispd: improve session life cycle management
Change-Id: Icb43664439002f76d7f64252f4ba79533d04ba43
miracle-dispd: run encoder with user privilege
now we run encoder with unprivileged user and talk through session bus
Change-Id: I09b3b8b15e5a7c7e9b883b7c9dbac601c13f458c
gstencoder: fix untested execution path which has pipeline syntax issue
Change-Id: I1d170666852c33e96c989468fc733d065f777bd4
miracle-wfdctl: add options -b and -r
add options -b and -r to control whether or not to acquiring or
releasing ownershipt of WNIC
Change-Id: Iaa9fdac15a7d1e23053b57500b978e0c026fa50c
miracle-dispd: fix session leaking issue
Change-Id: I1ececf598fedf601edfd7c7208ffce72a750f8cd
miracle-dispd: terminate with SIGTERM instead of SIGKILL
Change-Id: I3b46d3d50fc11c8f3487cc241947b556196e8ba6
miracle-dispd: ignore peers which has no valid wfd_supplicant
Change-Id: Ifd7225a944fb0312eb3fe0c575b82a9c95c6ab14
miracle-dispd: minor log message tweaks
Change-Id: I75cf47bb2640270729d1643487ae5cc7f8617446
fix creation paths of symlinks of DBus activated systemd services
prepend $ENV{DESTDIR} to the path which is abs path get from systemd.pc
Change-Id: Id07801a1f513fb421f653cb4b2c943d8841a74f6
demo/miracle-wfdctl: broadcast as source only device
Change-Id: Id159332fc644e09990abdebffa8fa4b9f8b2fc28
reload systemd units after installation
Change-Id: I98cf764f5dbbe5fe06a136e3633a3304e8e4401e
miracle-dispd: add hardware accelection video encoding back to gstencoder
Change-Id: I577082a70da61b6266e67c0b8611662ae9bc316c
build vala code with cmake modules instead of custom_command()
Change-Id: Ib0bc561441c3664c00e73e66864597343f3f75e8
remove 'org.freedesktop.' prefix from dbus interface source files
Change-Id: Ice1ef49ca1ad3b8f36c8b4a5f8f35769df262eb9
move miracle-wfdctl from demo/ to res/
Change-Id: I37df75135e4713a73d3c63353c9a17dc248e2d7e
gstencoder: fallback to sw encoder if vaapi encoder not available
Change-Id: I8329fc191d60188c2098434d5db8a4aa2b3fbec2
miracle-dispd: minor interface tweaks betwen wfd_session and wfd_out_session
Change-Id: Ib0c65ab64d543d5fce8908f6c47dbfc2acf47763
miracle-dispd: add keep-alive messages
Change-Id: Ib8fc055789a1bd0a6df3075b176385407c17a74c
miracle-dispd: remove unused log messages
Change-Id: I7460f6173815f054c0dc51accf96a531f6faf4b1
miracle-dispd: minor tweaks of object life cycle transfering
Change-Id: Iafefe39652d9ade06c58e41f091a30df274cb091
update gstreamer1.0-vaapi version we depend on
Change-Id: Iacf53af83c151c6746f778a97201ed3f7bd55504
miracle-wifid: reduce caps from .service file
Change-Id: I8434fe9dfcf141156635d7a6f8a9c2aaa4469263
miracle-dispd: reduce caps from .service file
Change-Id: Ibfc14aca1c03b8cd6b50a49d5128da8597acb898
miracle-dispd: set no new priviledge flag before exec encoder
Change-Id: I1b7f18a704203fc60a35b67f09936095ae6398f0
miracle-dispd: rename files and class names to make naming consistent
Change-Id: Id2f5a8d6bbfbbd205dbe25e8b8bc0ddd289591e5
remove tests for security related compiler flags
Change-Id: Ia51167abc10c4c8bc03f58883aca06e05879c6e9
miracle-dispctl: fine tune ctrl+c handling
Change-Id: Ic5752cea7b64307c3c2d8dd0a8389d3b18ab3339
miracle-wfdctl: enhance handling of user termination (ctrl+c)
Change-Id: Ifa2b1ee85b2abf4cc0d9d7f40c452517cb94761d
miracle-wfdctl: fix GIOChannel ref leak
Change-Id: I12e647f9b4f13aaa0aedf81907aa251675d2be32
miracle-dispd: fix session life-cycle managed issue
when a session is destroyed due to peer free event, dispd_out_session must
detach from sink to it won't cause double free.
Change-Id: I71ad7e977fa71ec84f12f5e914786aa24a650f34
miracle-sinkctl: do not quote the value of 'Public' header of OPTION method
Change-Id: I1e3994517f492aa7d9996494110077c81acc41b4
miracle-dispd, gstencoder: enable audio supporting
Change-Id: I4d72782516ffff487010cd94cc47ec68133ff257
relates #4
The new option --lazy-managed will let miracle-wifid don't managed the
links automatically. Instead, the link will be managed only when the new
DBus property Managed was set to true. So this will be possible that
miracle-wifid could be coexists with other network tools like
networkmanager.
For example, unmanage the device in networkmanager with setting the DBus
property org.freedesktop.NetworkManager.Device.Managed to false and
manage it in miracle-wifid with setting
org.freedesktop.miracle.wifi.Link.Managed to true, then both them could
works and don't need to kill each other.
Besides, there is new command named make-managed in miracle-wifictl and
miracle-sinkctl.
closes#135, #75