muxer_define.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #ifndef MUXER_DEFINE
  2. #define MUXER_DEFINE
  3. #include "encoder_video_define.h"
  4. namespace am {
  5. typedef struct {
  6. uint8_t *buff;
  7. int size;
  8. int sample_in;
  9. }AUDIO_SAMPLE;
  10. class encoder_video;
  11. class record_desktop;
  12. class sws_helper;
  13. class encoder_aac;
  14. class filter_amix;
  15. class filter_aresample;
  16. class record_audio;
  17. typedef struct MUX_SETTING_T {
  18. int v_frame_rate;
  19. int v_bit_rate;
  20. int v_width;
  21. int v_height;
  22. int v_out_width;
  23. int v_out_height;
  24. int v_qb;
  25. ENCODER_VIDEO_ID v_encoder_id;
  26. int a_nb_channel;
  27. int a_sample_rate;
  28. AVSampleFormat a_sample_fmt;
  29. int a_bit_rate;
  30. }MUX_SETTING;
  31. typedef struct MUX_STREAM_T {
  32. //common
  33. AVStream *st; // av stream
  34. AVBitStreamFilterContext *filter; //pps|sps adt
  35. uint64_t pre_pts;
  36. MUX_SETTING setting; // output setting
  37. //video
  38. encoder_video *v_enc; // video encoder
  39. record_desktop *v_src; // video source
  40. sws_helper *v_sws; // video sws
  41. //audio
  42. encoder_aac *a_enc; // audio encoder
  43. filter_amix *a_filter_amix; // audio mixer
  44. filter_aresample **a_filter_aresample; // audio resamplers
  45. int a_nb; // audio source num
  46. record_audio **a_src; // audio sources
  47. AUDIO_SAMPLE **a_samples; // audio sample data
  48. AUDIO_SAMPLE **a_resamples; // audio resampled data
  49. }MUX_STREAM;
  50. }
  51. #endif