diff options
author | Vivia Nikolaidou <vivia@ahiru.eu> | 2019-11-05 13:52:55 +0000 |
---|---|---|
committer | GStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org> | 2019-11-05 13:52:55 +0000 |
commit | 2386858a9179aff2ec249bdffa904bf407de455f (patch) | |
tree | 46bf7595022397f01c369ec1ca808c0e3963b2e2 /gst/rtmp2/TODO | |
parent | 5320bb9085ac3332d89ed9bfa3120b95ca2c1d97 (diff) | |
download | gstreamer-plugins-bad-2386858a9179aff2ec249bdffa904bf407de455f.tar.gz |
Add files from gst-rtmp
For master, without autotools.
Diffstat (limited to 'gst/rtmp2/TODO')
-rw-r--r-- | gst/rtmp2/TODO | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/gst/rtmp2/TODO b/gst/rtmp2/TODO new file mode 100644 index 000000000..a43e48d8d --- /dev/null +++ b/gst/rtmp2/TODO @@ -0,0 +1,63 @@ +- rtmp2sink: Should look into reconnecting and resuming stream without + deleting and recreating stream, which drops clients. + +- Move AMF parser/serializer to GstRtmpMeta? +- Move AMF nodes from g_slice to GstMiniObject? + +- First video frame that comes from Wowza seems to be out-of-order; librtmp + does not have this problem + +- Refactor connection, pull out the ad-hoc read and write handling and put it + with the chunk layer into GBuffered{In,Out}putStream subclasses + +- Refactor elements and pull out the common connection+mainloop handling code + into a context object + +- Change the location properties into something with less boilerplate? + + Perhaps a GstStructure-based prop, custom GValue transforms or GstValue + (de)serializing + +- Use glib-mkenums to generate GEnumClasses + +- Post-connect onStatus handling (needed for src EOS and async errors?) + +- Better mux/demux, at the cost of losing compatibility with flvmux/demux. + + Something like (a/x = application/x-rtmp-messages): + + rtmp2src ! a/x ! rtmp2demux ! a/x,type=video ! rtmp2videodecode ! h264parse + ! a/x,type=audio ! rtmp2audiodecode ! aacparse + + x264enc ! rtmp2videoencode ! a/x,type=video ! rtmp2mux ! a/x ! rtmp2sink + fdkaacenc ! rtmp2audioencode ! a/x,type=audio ! + + And also, in case no muxing is required: + + x264enc ! rtmp2videoencode ! a/x,type=video ! rtmp2sink + fdkaacenc ! rtmp2audioencode ! a/x,type=video ! rtmp2sink + + Proper GstBuffer timestamps need proper timestamp wraparound handling + +- Better client element, which generalizes the existing sink/src to allow + multiple streams over one connection + - Request src pad to play a stream + - Request sink pad to publish a stream (base it on GstAggregator?) + - rtmp2sink/src just specialize the client element with a static pad + +- Server implementation + +- Support more protocols + - rtmpe (App-layer encryption) + - rtmpt (HTTP tunneling) + - rtmpte (HTTP tunneling + App-layer encryption) + - rtmpts (HTTPS tunneling) + - rtmfp (UDP) + +Needed testing: + +- AMF parsing + +- connection closure by peer + +- connection timeouts |