Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ONVIF backchannel support #35

Open
stalkerg opened this issue Sep 13, 2021 · 3 comments
Open

ONVIF backchannel support #35

stalkerg opened this issue Sep 13, 2021 · 3 comments
Labels
enhancement New feature or request

Comments

@stalkerg
Copy link

stalkerg commented Sep 13, 2021

Hello,
I know it's not implemented yet but I want to understand a future interface and maybe implement it.
Currently, Session<Subscribe> has not had so many options.

@scottlamb
Copy link
Owner

Sounds great!

Looks like backchannel is defined in the ONVIF Streaming Specification, section 5.3.

Here are my first thoughts on the interface:

  • We probably want a knob in the retina::client::SessionOptions to say if the caller is interested in the backchannel, defaulting to no. If we always check for it, when the caller doesn't want backchannel and the server doesn't support it there'd be a useless round trip where the server says 551 Not Supported in response to the DESCRIBE.
  • We need a new accessor in retina::client::Stream so the caller can know if the stream is for receiving or sending.
  • retina::client::Session<Playing> would have to implement futures::sink::Sink as well as futures::sink::Stream so the caller can send things. I think most likely the item should be similar to a retina::client::Packet but not exactly the same. Packet has context information for a received packet; we probably want to just leave that out. I say Packet rather than PacketItem because I don't think we want/need a way for the caller to just directly send RTCP; most likely Retina should handle the RTCP sender reports/receiver reports itself.
  • The struct returned by retina::client::Session<Playing>::demuxed should also implement Sink for the higher-level API that handles the RTP- and codec-specific logic for "muxing" / "payloading" / "packetization". (We should probably also should rename the method/struct, as demuxed is now confusing.) The sink would take another item type similar to retina::codec::CodecItem.

How does that match what you're thinking?

@scottlamb scottlamb added the enhancement New feature or request label Sep 13, 2021
@cody-the-casual-dev
Copy link

Would you still be interested in reviewing a PR for this?

@stalkerg
Copy link
Author

stalkerg commented Jul 9, 2023

@cody-the-casual-dev yes I can try to review. I have no my doorbell cams anymore but still can check (I changed my job :) ).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants