123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- #include "video_encoder_api.h"
- #include "video_stream_encoder.h"
- #include "base/video_coding_log.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- struct _VideoEncoderApi {
- video_coding::VideoStreamEncoder *encoder_;
- };
- VideoEncoderApi *video_encoder_api_new(
- VideoEncoderObserver *encoder_stats_observer, VideoCodingLogCallBack* log_func){
- video_coding_setup_log(log_func);
- video_coding_debug(VIDEO_CODING_DEBUG_ENABLE, "video_encoder_api_new");
-
- VideoEncoderApi *obj = (VideoEncoderApi *)malloc(sizeof(VideoEncoderApi));
- memset(obj, 0, sizeof(VideoEncoderApi));
-
- obj->encoder_ = video_coding::video_stream_encoder_new(encoder_stats_observer);
-
-
- return obj;
- }
- void video_encoder_api_destroy(VideoEncoderApi *obj){
- if (obj != NULL){
- video_stream_encoder_destroy(obj->encoder_);
- obj->encoder_ = NULL;
-
- free(obj);
- video_coding_debug(VIDEO_CODING_DEBUG_ENABLE, "video_encoder_api_destroy");
- }
- video_coding_unsetup_log();
- }
- void video_encoder_api_configure_encoder(VideoEncoderApi *obj, VideoEncoderConfig *config,
- size_t max_data_payload_length){
- if (obj != NULL){
- video_coding_debug(VIDEO_CODING_DEBUG_ENCODER_API, "video_encoder_api_configure_encoder max_data_payload_length: %d",
- max_data_payload_length);
-
- video_stream_encoder_configure_encoder(obj->encoder_, config, max_data_payload_length);
- }
- }
- void video_encoder_api_stop(VideoEncoderApi *obj){
- if (obj != NULL){
- video_stream_encoder_stop(obj->encoder_);
- video_coding_debug(VIDEO_CODING_DEBUG_ENCODER_API, "video_encoder_api_stop.");
- }
- }
- void video_encoder_api_send_key_frame(VideoEncoderApi *obj){
- if (obj != NULL){
- video_coding_debug(VIDEO_CODING_DEBUG_ENCODER_API, "video_encoder_api_send_key_frame.");
-
- video_stream_encoder_send_key_frame(obj->encoder_);
- }
- }
- void video_encoder_api_on_bitrate_updated(VideoEncoderApi *obj, uint32_t target_bitrate,
- uint8_t fraction_lost,
- int64_t round_trip_time_ms){
- if (obj != NULL){
- video_coding_debug(VIDEO_CODING_DEBUG_ENCODER_API, "video_encoder_api_on_bitrate_updated target_bitrate: %d fraction_lost: %d round_trip_time_ms: %d.",
- target_bitrate, fraction_lost, round_trip_time_ms);
-
- video_stream_encoder_on_bitrate_updated(obj->encoder_, target_bitrate, target_bitrate, fraction_lost, round_trip_time_ms);
- }
- }
- void video_encoder_api_on_frame(VideoEncoderApi *obj, unsigned pt, const video_frame *frame){
- if (obj != NULL){
- video_coding_debug(VIDEO_CODING_DEBUG_ENCODER_API, "video_encoder_api_on_frame width: %d height: %d format: %d.",
- frame->width, frame->height, frame->format);
-
- video_stream_encoder_on_frame(obj->encoder_, pt, frame);
- }
- }
- void video_encoder_api_on_discarded_frame(VideoEncoderApi *obj){
- if (obj != NULL){
- video_coding_debug(VIDEO_CODING_DEBUG_ENCODER_API, "video_encoder_api_on_discarded_frame.");
-
- video_stream_encoder_on_discarded_frame(obj->encoder_);
- }
- }
- #ifdef __cplusplus
- }
- #endif /* end of __cplusplus */
|