44 keyFrameFreq_ =
static_cast<int>(
opts.frameRate.numerator() * KEY_FRAME_PERIOD);
45 videoEncoder_->openOutput(
dest,
"rtp");
46 videoEncoder_->setOptions(
opts);
47 videoEncoder_->setOptions(
args);
51 videoEncoder_->addStream(*
args.codec);
52 videoEncoder_->setInitSeqVal(
seqVal);
53 videoEncoder_->setIOContext(muxContext_->getContext());
57VideoSender::encodeAndSendVideo(
const std::shared_ptr<VideoFrame>&
input_frame)
60 if (rotation_ !=
angle) {
62 if (changeOrientationCallback_)
63 changeOrientationCallback_(rotation_);
67 videoEncoder_->send(*packet);
69 bool is_keyframe = forceKeyFrame_ > 0
or (keyFrameFreq_ > 0
and (frameNumber_ % keyFrameFreq_) == 0);
78 if (frameNumber_ == 1)
79 videoEncoder_->print_sdp();
86 encodeAndSendVideo(std::dynamic_pointer_cast<VideoFrame>(
frame_p));
99 return videoEncoder_->getLastSeqValue();
105 changeOrientationCallback_ = std::move(
cb);
116 return videoEncoder_->setBitrate(
br);
static LIBJAMI_TEST_EXPORT Manager & instance()
VideoSender(const std::string &dest, const MediaStream &opts, const MediaDescription &args, SocketPair &socketPair, const uint16_t seqVal, uint16_t mtu, bool allowHwAccel=true)
void update(Observable< std::shared_ptr< MediaFrame > > *obs, const std::shared_ptr< MediaFrame > &frame_p) override
uint16_t getLastSeqValue()
void setChangeOrientationCallback(std::function< void(int)> cb)
int setBitrate(uint64_t br)
void emitSignal(Args... args)