in h264_encoder_core/src/h264_encoder.cpp [79:106]
AwsError set_param(AVCodec * codec) {
if (nullptr != param_) {
AWS_LOG_ERROR(__func__, "Unable to setup codec context. param_ must be null");
return AWS_ERR_FAILURE;
}
param_ = avcodec_alloc_context3(codec);
if (nullptr == param_) {
AWS_LOG_ERROR(__func__, "Could not allocate video codec context");
return AWS_ERR_MEMORY;
}
/* put sample parameters */
param_->bit_rate = bitrate_;
/* resolution must be a multiple of two */
param_->width = dst_width_;
param_->height = dst_height_;
/* frames per second */
param_->time_base = (AVRational){fps_den_, fps_num_};
frame_duration_ = (1e6 * fps_den_) / fps_num_;
param_->gop_size = static_cast<int>(ceil(kFragmentDuration * fps_num_ / fps_den_));
param_->keyint_min = param_->gop_size - 1;
param_->max_b_frames = kDefaultMaxBFrames;
param_->pix_fmt = AV_PIX_FMT_YUV420P;
param_->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
param_->flags2 &= ~AV_CODEC_FLAG2_LOCAL_HEADER;
return AWS_ERR_OK;
}