Skip to content
Snippets Groups Projects
  1. Jun 19, 2020
    • Joshua C. Colp's avatar
      app_stream_echo: Fix state of added streams. · 00a52b47
      Joshua C. Colp authored
      When stream support was added to Asterisk the stream state
      was used inconsistently, resulting in odd behavior. This
      was then standardized to be the state of a stream from the
      perspective of Asterisk.
      
      This change updates the StreamEcho dialplan application
      to use the correct state, send only, since we are only
      sending to the endpoint and not expecting them to send us
      multiple video streams.
      
      ASTERISK-28954
      
      Change-Id: I35bfd533ef1184ffe62586b22bbd253c82872a56
      00a52b47
  2. Sep 23, 2017
    • Sean Bright's avatar
      app_stream_echo: Don't echo declined streams · 0fad11f2
      Sean Bright authored
      Discovered while experimenting with Cyber Mega Phone 2K Ultimate Dynamic
      Edition after accepting the audio request but declining the video one.
      
      Change-Id: Iaa86d41fccfbc1b559a30ccf740d78a3b5f8a98c
      0fad11f2
  3. Jun 30, 2017
    • Kevin Harwell's avatar
      app_stream_echo: misc bug fixes · e7d41050
      Kevin Harwell authored
      Fixed the following bugs:
      
      * calls to stream_echo_write had the last two parameters swapped
      * ast_read should have been ast_read_stream
      * added a null check on the frame's subclass format
      
      This also resets the update_sent flag upon receiving SRRCHANGE control frame.
      This will then force a video update.
      
      ASTERISK-26997
      
      Change-Id: I6ad7c8253559b800800433c52339e7f5aa583566
      e7d41050
  4. May 30, 2017
    • Mark Michelson's avatar
      Add primitive SFU support to bridge_softmix. · 2da86940
      Mark Michelson authored
      This sets up the "plumbing" in bridge_softmix to
      be able to accommodate Asterisk asking as an SFU
      (selective forwarding unit) for conferences.
      
      The way this works is that whenever a channel enters or leaves a
      conference, all participants in the bridge get sent a stream topology
      change request. The topologies consist of the channels' original
      topology, along with video destination streams corresponding to each
      participants' source video streams. So for instance, if Alice, Bob, and
      Carol are in the conference, and each supplies one video stream, then
      the topologies for each would look like so:
      
      Alice:
      Audio,
      Source video(Alice),
      Destination Video(Bob),
      Destination video (Carol)
      
      Bob:
      Audio,
      Source video(Bob)
      Destination Video(Alice),
      Destination video (Carol)
      
      Carol:
      Audio,
      Source video(Carol)
      Destination Video(Alice),
      Destination video (Bob)
      
      This way, video that arrives from a source video stream can then be
      copied out to the destination video streams on the other participants'
      channels.
      
      Once the bridge gets told that a topology on a channel has changed, the
      bridge constructs a map in order to get the video frames routed to the
      proper destination streams. This is done using the bridge channel's
      stream_map.
      
      This change is bare-bones with regards to SFU support. Some key features
      are missing at this point:
      
      * Stream limits. This commit makes no effort to limit the number of
        streams on a specific channel. This means that if there were 50 video
        callers in a conference, bridge_softmix will happily send out topology
        change requests to every channel in the bridge, requesting 50+
        streams.
      
      * Configuration. The plumbing has been added to bridge_softmix, but
        there has been nothing added as of yet to app_confbridge to enable SFU
        video mode.
      
      * Testing. Some functions included here have unit tests.
        However, the functionality as a whole has only been verified by
        hand-tracing the code.
      
      * Selectivenss. For a "selective" forwarding unit, this does not
        currently have any means of being selective.
      
      * Features. Presumably, someone might wish to only receive video from
        specific sources. There are no external-facing functions at the moment
        that allow for users to select who they receive video from.
      
      * Efficiency. The current scheme treats all video streams as being
        unidirectional. We could be re-using a source video stream as a
        desetnation, too. But to simplify things on this first round, I did it
        this way.
      
      Change-Id: I7c44a829cc63acf8b596a337b2dc3c13898a6c4d
      2da86940
  5. May 17, 2017
    • Kevin Harwell's avatar
      app_stream_echo: Added a multi-stream echo application · a60d1f39
      Kevin Harwell authored
      If the channel does not have multi-stream support then this application acts
      just like app_echo. If it does have multi-stream support then each stream is
      echoed back to itself (one-to-one).
      
      If a "num" is specified, then a new topology is made that contains clones (from
      the channel's topology) of all media types that are not equal to the given
      "type". If the media type differs then the first stream matching the "type" is
      cloned into the new topology and then up to "num" - 1 of the same stream are
      also cloned into it. Any additional streams from the original topology matching
      the "type" are subsequently ignored (i.e. not added to the new topology).
      
      For this same case when a frame is read from a stream that frame is still
      echoed back like before, but now that frame is also echoed out to the
      additional streams that matched on the specified "type".
      
      ASTERISK-26997 #close
      
      Change-Id: I254144486734178e196c7f590a26ffc13543ff2c
      a60d1f39
Loading