1. 12 Aug, 2019 1 commit
    • Philippe Gorley's avatar
      encoder: fix and re-enable nvdec · 83bf28a5
      Philippe Gorley authored
      Hardware decoders output nv12, but Jami's software encoders want
      yuv420p. If using a hardware decoder, make sure the input frames are
      yuv420p. If using a hardware encoder, keep the frames as nv12.
      
      Change-Id: I5b20238786104da4ddf25bee061899be18fa0d59
      83bf28a5
  2. 09 Aug, 2019 2 commits
  3. 08 Aug, 2019 1 commit
  4. 07 Aug, 2019 1 commit
    • Philippe Gorley's avatar
      recorder: add preferences · 431cee5d
      Philippe Gorley authored
      Adds whether or not the local video feed should be overlaid on the
      remote video feed. Adds a quality setting for the recorder.
      
      Change-Id: I60bd80c6441c7d516120680bebb1acdeb3824c49
      431cee5d
  5. 22 Jul, 2019 1 commit
  6. 14 Jul, 2019 1 commit
  7. 28 Jun, 2019 1 commit
  8. 04 Jun, 2019 1 commit
  9. 03 Jun, 2019 1 commit
  10. 01 Jun, 2019 1 commit
  11. 27 May, 2019 1 commit
  12. 24 May, 2019 1 commit
  13. 12 Apr, 2019 1 commit
  14. 11 Apr, 2019 1 commit
  15. 03 Apr, 2019 1 commit
  16. 02 Apr, 2019 2 commits
  17. 26 Mar, 2019 2 commits
    • Philippe Gorley's avatar
      accel: skip main memory when hardware reencoding · 52fbc755
      Philippe Gorley authored
      If the video input is being decoded on the hardware, use the hardware
      frames directly when encoding. Skips the transfer back to software in
      the video sender and the transfer to hardware in the encoder.
      
      Falls back to using the main memory as a middle man if the link between
      encoder and decoder fails.
      
      Change-Id: I59850e95e6952df71a461aad8e7dddda65f05ffb
      52fbc755
    • Philippe Gorley's avatar
      encoder: lazy initialize video stream · dfdee183
      Philippe Gorley authored
      Sets up video streams upon receiving the first video frame. Audio
      streams are still initialized as soon as possible.
      
      This allows a video encoder to use the pixel format of its received
      frames, and to set up a hardware transcoding pipeline if it receives
      a hardware frame.
      
      Change-Id: I622fc44b6096d63d7423837d2f2ec15680548a83
      dfdee183
  18. 06 Mar, 2019 1 commit
    • Philippe Gorley's avatar
      accel: add hardware encoding · 12932733
      Philippe Gorley authored
      Adds VAAPI and VideoToolbox hardware encoders.
      
      Abstracts hardware related field accesses from the encoder and decoder
      to put them in HardwareAccel. They are freed in ~HardwareAccel.
      
      Limits bitrate when hardware encoding h264, else it can easily go up to
      a few MiB/s.
      
      Change-Id: I7d847d8ab3e4c9692341f038ce6d5dd76562e606
      12932733
  19. 18 Feb, 2019 1 commit
  20. 12 Feb, 2019 1 commit
    • Philippe Gorley's avatar
      encoder: cleanup and simplify · e059062a
      Philippe Gorley authored
      Cleans up the encoder a bit and removes methods that weren't used or did
      nothing. In any case, it should not be the encoder's responsibility to
      mute audio/video.
      
      Removes direct accesses to private data. All these options are accessible
      through the av_opt_* API with the AV_OPT_SEARCH_CHILDREN flag.
      
      Adding streams to the encoder is now done separately than opening an RTP
      output in an effort to streamline the encoder setup (file vs RTP).
      
      Change-Id: I7a868d098fa942697cfbe3246f368fb9fc7bfb0f
      e059062a
  21. 28 Jan, 2019 1 commit
    • Philippe Gorley's avatar
      encoder: fix recording · 53da9361
      Philippe Gorley authored
      Recorder has multiple streams, and needs to know which streams it's
      writing the packet to. Also reverts the change to a hardcoded timebase
      of 1/20.
      
      Change-Id: I75989ceafe4e4956ebb1adbbd53d13564aa942ea
      53da9361
  22. 26 Jan, 2019 1 commit
  23. 25 Jan, 2019 3 commits
    • Philippe Gorley's avatar
      encoder: allow config to override some settings · aff0eda4
      Philippe Gorley authored
      MediaEncoder sets some of AVCodecContext's fields. Allow the
      configuration file to override these fields.
      
      Change-Id: Ic44da217344aca2da0634e81bf247d4a21bb9510
      Reviewed-by: Sébastien Blin's avatarSébastien Blin <sebastien.blin@savoirfairelinux.com>
      aff0eda4
    • Philippe Gorley's avatar
      encoder: support loading per encoder config · 19442e3b
      Philippe Gorley authored
      This allows users to use different configurations than the one provided
      by Jami. File settings overwrite Jami's existing configuration options.
      
      Note that only codec-level options are supported, format-level is not
      implemented.
      
      The following options are ignored, as they are set by going into the
      settings page: width, height, framerate, sample_rate, channels,
      frame_size, parameters (internal option for h264's profile level id).
      
      If a file encoder.json exists in the same folder as dring.yml, it is
      loaded into the encoder's configuration options. The config file is
      separated by codec. Multiple configurations can exist for the same codec
      family (ex: libx264 and h264_vaapi) because each encoder has different
      options. Section name should be the codec implementation's name and not
      the codec's name (h264 won't work, but libx264 will).
      
      Example configuration file:
      {
          "libx264": {
              "crf": 15,
              "preset": "ultrafast"
          },
          "h264_vaapi": {
              "low_power": 1
          },
          "libopus": {
              "application": "voip"
          }
      }
      
      Change-Id: Ia6bb184af382638d4016256b393ac7295408ed82
      Gitlab: #75Reviewed-by: Sébastien Blin's avatarSébastien Blin <sebastien.blin@savoirfairelinux.com>
      19442e3b
    • Philippe Gorley's avatar
      libav_utils: add shortcut to set dictionary values · abb09e1e
      Philippe Gorley authored
      Change-Id: Iab880ac674e15dc2f0baba260632ead4cb6e4870
      Reviewed-by: Sébastien Blin's avatarSébastien Blin <sebastien.blin@savoirfairelinux.com>
      abb09e1e
  24. 04 Jan, 2019 1 commit
  25. 02 Jan, 2019 1 commit
  26. 28 Dec, 2018 1 commit
    • Philippe Gorley's avatar
      encoder: make resolution even · db6c3ddf
      Philippe Gorley authored
      An even width/height is required by at least x264. This is especially
      for image and gif streaming, as video usually already has an even
      width/height.
      
      Change-Id: Ie660d8eb61dca48641cba89dd02e187481e3a127
      db6c3ddf
  27. 23 Nov, 2018 1 commit
    • Jinbo Li's avatar
      encoder: add error checking to videoFrameSize · c499a22b
      Jinbo Li authored
      av_image_get_buffer_size can return a negative error code. Prevents
      casting such an error to a large positive integer that may cause a
      bad_alloc exception on the subsequent buffer allocation.
      
      Change-Id: Ie8a7987dcf16957a21496e791c34957bb2e35bfc
      c499a22b
  28. 19 Nov, 2018 1 commit
  29. 08 Nov, 2018 1 commit
    • 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
      d36d4d6e
  30. 22 Oct, 2018 1 commit
    • 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
      222ce2c0
  31. 14 Sep, 2018 1 commit
  32. 11 Sep, 2018 1 commit
  33. 23 Aug, 2018 1 commit
  34. 14 Aug, 2018 1 commit
  35. 27 Jul, 2018 1 commit
    • Philippe Gorley's avatar
      audiobuffer: add conversion to AVFrame · e6ed1e1f
      Philippe Gorley authored
      Moves the AudioBuffer to AVFrame conversion logic outside of the
      MediaEncoder, so the latter only deals with AVFrame.
      
      Does not copy the buffer, the resulting AVFrame will simply point to the
      existing buffer.
      
      This is the first in a series of patches attempting to rid Ring of its
      RingBuffer/RingBufferPool system.
      
      Change-Id: I17c9fcdb96dc945c3eeace647303339d558bcf38
      Reviewed-by: Adrien Béraud's avatarAdrien Béraud <adrien.beraud@savoirfairelinux.com>
      e6ed1e1f