您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

135 行
3.0KB

  1. /*
  2. * Copyright (c) 2016 The ZLMediaKit project authors. All Rights Reserved.
  3. *
  4. * This file is part of ZLMediaKit(https://github.com/xia-chu/ZLMediaKit).
  5. *
  6. * Use of this source code is governed by MIT license that can be found in the
  7. * LICENSE file in the root of the source tree. All contributing project authors
  8. * may be found in the AUTHORS file in the root of the source tree.
  9. */
  10. #ifndef ZLMEDIAKIT_MK_TRACK_H
  11. #define ZLMEDIAKIT_MK_TRACK_H
  12. #include "mk_common.h"
  13. #include "mk_frame.h"
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif
  17. //音视频轨道
  18. typedef void* mk_track;
  19. //输出frame回调
  20. typedef void(API_CALL *on_mk_frame_out)(void *user_data, mk_frame frame);
  21. //track创建参数
  22. typedef union {
  23. struct {
  24. int width;
  25. int height;
  26. int fps;
  27. } video;
  28. struct {
  29. int channels;
  30. int sample_rate;
  31. } audio;
  32. } codec_args;
  33. /**
  34. * 创建track对象引用
  35. * @param codec_id 请参考MKCodecXXX 常量定义
  36. * @param args 视频或音频参数
  37. * @return track对象引用
  38. */
  39. API_EXPORT mk_track API_CALL mk_track_create(int codec_id, codec_args *args);
  40. /**
  41. * 减引用track对象
  42. * @param track track对象
  43. */
  44. API_EXPORT void API_CALL mk_track_unref(mk_track track);
  45. /**
  46. * 引用track对象
  47. * @param track track对象
  48. * @return 新的track引用对象
  49. */
  50. API_EXPORT mk_track API_CALL mk_track_ref(mk_track track);
  51. /**
  52. * 获取track 编码codec类型,请参考MKCodecXXX定义
  53. */
  54. API_EXPORT int API_CALL mk_track_codec_id(mk_track track);
  55. /**
  56. * 获取编码codec名称
  57. */
  58. API_EXPORT const char* API_CALL mk_track_codec_name(mk_track track);
  59. /**
  60. * 获取比特率信息
  61. */
  62. API_EXPORT int API_CALL mk_track_bit_rate(mk_track track);
  63. /**
  64. * 监听frame输出事件
  65. * @param track track对象
  66. * @param cb frame输出回调
  67. * @param user_data frame输出回调用户指针参数
  68. */
  69. API_EXPORT void *API_CALL mk_track_add_delegate(mk_track track, on_mk_frame_out cb, void *user_data);
  70. /**
  71. * 取消frame输出事件监听
  72. * @param track track对象
  73. * @param tag mk_track_add_delegate返回值
  74. */
  75. API_EXPORT void API_CALL mk_track_del_delegate(mk_track track, void *tag);
  76. /**
  77. * 输入frame到track,通常你不需要调用此api
  78. */
  79. API_EXPORT void API_CALL mk_track_input_frame(mk_track track, mk_frame frame);
  80. /**
  81. * track是否为视频
  82. */
  83. API_EXPORT int API_CALL mk_track_is_video(mk_track track);
  84. /**
  85. * 获取视频宽度
  86. */
  87. API_EXPORT int API_CALL mk_track_video_width(mk_track track);
  88. /**
  89. * 获取视频高度
  90. */
  91. API_EXPORT int API_CALL mk_track_video_height(mk_track track);
  92. /**
  93. * 获取视频帧率
  94. */
  95. API_EXPORT int API_CALL mk_track_video_fps(mk_track track);
  96. /**
  97. * 获取音频采样率
  98. */
  99. API_EXPORT int API_CALL mk_track_audio_sample_rate(mk_track track);
  100. /**
  101. * 获取音频通道数
  102. */
  103. API_EXPORT int API_CALL mk_track_audio_channel(mk_track track);
  104. /**
  105. * 获取音频位数,一般为16bit
  106. */
  107. API_EXPORT int API_CALL mk_track_audio_sample_bit(mk_track track);
  108. #ifdef __cplusplus
  109. }
  110. #endif
  111. #endif //ZLMEDIAKIT_MK_TRACK_H