muxer_define.h 1.4 KB

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