muxer_define.h 1.5 KB

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