AwsError set_param()

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;
  }