1. 24 Jan, 2019 1 commit
  2. 10 Jan, 2019 1 commit
  3. 02 Jan, 2019 1 commit
  4. 28 Dec, 2018 1 commit
  5. 27 Dec, 2018 3 commits
  6. 21 Dec, 2018 2 commits
    • Philippe Gorley's avatar
      decoder: better audio stream selection · af8ec439
      Philippe Gorley authored
      When decoding files, their audio is rematrixed to mono or stereo
      depending on the negotiated format. Libswresample does not support
      rematrixing from Dolby Surround 5.1, so skip over streams with this
      layout. If the file only contains Dolby 5.1, switch back to default
      audio input device.
      Change-Id: I526e3c9b2ec92794818e74f8c369a8c8f3c41b27
    • Philippe Gorley's avatar
      audio: add file streaming support · 005c6ffd
      Philippe Gorley authored
      When sharing a file, its audio will also be decoded and sent. Audio and
      video are synchronized for the first loop of the file only. Further
      loops desynchronize them as the audio and video are decoded separately
      instead of with the same decoder.
      Device audio is muted while streaming. Mixing of the microphone with the
      file audio will be added in a later patch.
      Adds common audio decoders for file streaming.
      Change-Id: Id0593ce4f2d32c249eb7a9672b0091c0d6e07a00
  7. 06 Dec, 2018 3 commits
    • Philippe Gorley's avatar
      media: make observers/obervables use MediaFrame · fc83b1f8
      Philippe Gorley authored
      Makes it so observers don't need to implement Observer<T> twice to
      receive audio and video frames.
      Change-Id: Id73c384342bd786b4f83950937b4dbd13a31fc41
    • Philippe Gorley's avatar
      audio: add ability to get stream information · ec03a19e
      Philippe Gorley authored
      Changes name from getStream to getInfo.
      Change-Id: I17b2eedb03dd707146b30062e755c5cd80c559fb
    • Philippe Gorley's avatar
      recorder: subscribe to audio/video sources · 351856e7
      Philippe Gorley authored
      Makes the MediaRecorder an observer on AudioInput, AudioReceiveThread,
      VideoInput and VideoReceiveThread, so they no longer need a reference
      to the recorder.
      Makes sure the framerate is set for the recorder by adding a way to get
      the stream parameters from the video receiver and input, since AVFrame
      does not carry framerate and time base information.
      Adds way to detach the recorder from the media sources, so it can be
      reattached on subsequent records.
      Change-Id: I71bac0825541f6445861f4f949288e1c62416f05
  8. 03 Dec, 2018 1 commit
    • Philippe Gorley's avatar
      audio: implement switch input · 10126454
      Philippe Gorley authored
      Lays the groundwork for file streaming by allowing the audio source to
      be changed while an audio input is active.
      Don't notify observers if there's no frame.
      Renames videoInput_ to mediaInput_ now that it is also used for audio.
      Change-Id: I0a10d4a339e77b890ee006a5f977383e8942505b
  9. 19 Nov, 2018 1 commit
    • Philippe Gorley's avatar
      recorder: sync local audio with peer audio · a4757b67
      Philippe Gorley authored
      Local audio timestamps would always start at 0, while peer audio would
      start at the right value, causing audio to be out of sync.
      Change-Id: I5c3c2967128b88b2867c5bd26d5f7de1e93f4171
  10. 08 Nov, 2018 2 commits
    • Philippe Gorley's avatar
      media: simplify timestamp computation · d36d4d6e
      Philippe Gorley authored
      Audio time bases are always the inverse of the sample rate, meaning the
      increment is always the number of samples in a frame. Video usually has
      a time base inverse of its framerate, but this is not always the case.
      Change-Id: I50d2d84d073052f8b3a832e8b99725b9d66b12a8
    • Philippe Gorley's avatar
      audio: stash active inputs in videomanager · e86600b6
      Philippe Gorley authored
      Needed for audio streaming because the audio input needs to be accessed
      at call level so it can tell the input to switch to a file or a
      different input.
      Getting a shared pointer to an AudioInput should only be done during
      setup, so as to not walk the whole map in audio processing loops.
      Change-Id: I49be1cb3c641b50e6f70356f330d40e1c27bef61
  11. 01 Nov, 2018 1 commit
    • Philippe Gorley's avatar
      audio: use input as audio source · ddcda82e
      Philippe Gorley authored
      AudioInput now manages audio frames, not AudioSender.
      Makes AudioInput observable.
      AudioSender subscribes to AudioInput.
      LocalRecorder does not need to observe AudioInput or VideoInput because
      these already record frames. Will be done in future work on the recording
      Change-Id: I011d742063386498d59b2962f7c333b999d0921c
  12. 22 Oct, 2018 2 commits
    • Philippe Gorley's avatar
      audiobuffer: use raii when dealing with AVFrame · 222ce2c0
      Philippe Gorley authored
      Returns AudioFrame instead of raw AVFRame pointer when calling
      AudioBuffer.toAVFrame, and take AudioFrame as parameter when appending
      an AVFrame to an AudioBuffer.
      No longer need to free AVFrame during encoding/conversions.
      Change-Id: I28aa992a5483f84f6cb1a5157718c11c3a69518c
    • Philippe Gorley's avatar
      audio_input: add resampler · 34e72c5a
      Philippe Gorley authored
      RingBufferPool::getData overrides the format of the AudioBuffer, so
      resampling may be required.
      Protects AudioFormat with a mutex to avoid data races.
      Change-Id: I0a9d8686f142c192f912887b175a42bacb0c1a57
  13. 16 Oct, 2018 2 commits
  14. 12 Sep, 2018 1 commit
  15. 11 Sep, 2018 1 commit
    • Hugo Lefeuvre's avatar
      audio: implement audio_input class · a774e0f4
      Hugo Lefeuvre authored
      The audioInput class allows easy retrieval of local audio stream
      without being in a running call. For now it is only used to record
      audio data but might be employed for other purposes with little design
      Change-Id: Icdf6a9799f341367b0c50aaff76b8642f42d0d1c