// // Created by 倪路朋 on 10/24/24. // #ifndef LIVEPROJECT_SERVER_GLOBAL_H #define LIVEPROJECT_SERVER_GLOBAL_H #include "pusher/live_pusher.h" #include "mini_view_data.h" #include #include #include "yuv_data.h" #include "video_channel.h" #include "audio_channel.h" extern "C"{ #include } extern std::map pushers; extern vector pushMiniDatas; extern MiniViewData *mainView; extern int mainStreamCode; extern pthread_mutex_t pushVideoMutex,pushAudioMutex; extern pthread_mutex_t pushNV21Mutex; extern pthread_mutex_t loadSurfaceMutex; extern ANativeWindow *nativeMainWindow; extern SafeQueue mainSurfaceFrames; extern SafeQueue pushFrames; const int FRAME_WIDTH = 1080,FRAME_HEIGHT = 1920,FRAME_PS = 30,FRAME_RATE = 4000; extern AudioChannel *audioChannel; extern VideoChannel *videoChannel; extern uint8_t *blackYUV[3]; extern uint32_t start_time; void packetCallBack(RTMPPacket *packet); int CopyRTMPPacket(RTMPPacket *dest, const RTMPPacket *src); int getIndexOfStream(int streamCode); int getIndexOfMain(); MiniViewData *getMainViewData(); MiniViewData *getMiniView(int streamCode); void scaleYUV(uint8_t *yuvData[3],int width,int height,int dstWidth,int dstHeight,uint8_t *dstData[3]); void rotate_yuv(uint8_t* srcData[3], int width, int height,int angle,uint8_t* dstData[3],int dstWidth,int dstHeight); void cutYUV(uint8_t *yuvData[3],int width,int height,float positionRate,uint8_t *dstData[]); void cutYUV(uint8_t *yuvData[3],int width,int height,int cropX,int cropY,uint8_t *dstData[],int dstWidth,int dstHeight); void copyYUV(uint8_t *yuvData[3],int width,int height, uint8_t *dstData[3]); void pushYUV(int streamCode, uint8_t *yuvData[3]); void pushYUYV(int streamCode,jbyte *data); void waterYUV(uint8_t *mainData[3]); void waterYUV(int index,uint8_t *mainData[3]); void getPushYUV(int index,uint8_t *mainData[3]); uint8_t* yuvToRGBA(uint8_t *yuvData[3],int width,int height); void pushRGBA(int streamCode,uint8_t *rgbaData); void pushNV21(int streamCode, jbyte *data); void pushNV21(int streamCode,uint8_t *yData,uint8_t *uData,uint8_t *vData,jint y_stride, jint u_stride,jint v_stride, jint uv_stride,jint angle,jint width,jint height); void loadSurface(ANativeWindow *nativeWindow,uint8_t *yuvData[3],int width,int height); void addBlackBorder(uint8_t *yuvData[3],int width,int height,int borderWidth); void addCornerAndBlackBorder(uint8_t *yuvData[3],int width,int height,int borderWidth,int cornerRadius); void playPCM(uint8_t *out_buffer,int out_buffer_size); void pushPCM(int8_t *data); int64_t getCurrentTimestamp(); void releaseYuvDataCallBack(YUVData **data); void releaseYuvData(uint8_t *data[3]); void releaseYuvFrameData(YUVData *data); #endif //LIVEPROJECT_SERVER_GLOBAL_H