mirror of
https://github.com/pion/mediadevices.git
synced 2025-10-30 03:21:55 +08:00
* Added the set bitrate function for openh264 * add examples * Format --------- Co-authored-by: Jingyang Kang <3drxkjy@gmail.com>
51 lines
1002 B
C++
51 lines
1002 B
C++
#pragma once
|
|
|
|
#include <openh264/codec_api.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
typedef struct Slice {
|
|
unsigned char *data;
|
|
int data_len;
|
|
} Slice;
|
|
|
|
typedef struct Frame {
|
|
void *y, *u, *v;
|
|
int ystride;
|
|
int cstride;
|
|
int height;
|
|
int width;
|
|
} Frame;
|
|
|
|
typedef struct EncoderOptions {
|
|
int width, height;
|
|
int target_bitrate;
|
|
float max_fps;
|
|
EUsageType usage_type;
|
|
RC_MODES rc_mode;
|
|
bool enable_frame_skip;
|
|
unsigned int max_nal_size;
|
|
unsigned int intra_period;
|
|
int multiple_thread_idc;
|
|
unsigned int slice_num;
|
|
SliceModeEnum slice_mode;
|
|
unsigned int slice_size_constraint;
|
|
} EncoderOptions;
|
|
|
|
typedef struct Encoder {
|
|
SEncParamExt params;
|
|
ISVCEncoder *engine;
|
|
unsigned char *buff;
|
|
int buff_size;
|
|
int force_key_frame;
|
|
} Encoder;
|
|
|
|
Encoder *enc_new(const EncoderOptions params, int *eresult);
|
|
void enc_free(Encoder *e, int *eresult);
|
|
Slice enc_encode(Encoder *e, Frame f, int *eresult);
|
|
void enc_set_bitrate(Encoder *e, int bitrate);
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|