1 2 /* 3 * Copyright (C) Roman Arutyunyan 4 */ 5 6 7 #ifndef _NGX_RTMP_CMD_H_INCLUDED_ 8 #define _NGX_RTMP_CMD_H_INCLUDED_ 9 10 11 #include <ngx_config.h> 12 #include <ngx_core.h> 13 #include <ngx_event.h> 14 #include "ngx_rtmp.h" 15 16 17 #define NGX_RTMP_MAX_NAME 2048 18 #define NGX_RTMP_MAX_URL 4096 19 #define NGX_RTMP_MAX_ARGS NGX_RTMP_MAX_NAME 20 21 22 /* Basic RTMP call support */ 23 24 typedef struct { 25 double trans; 26 u_char app[NGX_RTMP_MAX_NAME]; 27 u_char args[NGX_RTMP_MAX_ARGS]; 28 u_char flashver[64]; 29 u_char swf_url[NGX_RTMP_MAX_URL]; 30 u_char tc_url[NGX_RTMP_MAX_URL]; 31 double acodecs; 32 double vcodecs; 33 u_char page_url[NGX_RTMP_MAX_URL]; 34 double object_encoding; 35 } ngx_rtmp_connect_t; 36 37 38 typedef struct { 39 double trans; 40 double stream; 41 } ngx_rtmp_create_stream_t; 42 43 44 typedef struct { 45 double stream; 46 } ngx_rtmp_delete_stream_t; 47 48 49 typedef struct { 50 double stream; 51 } ngx_rtmp_close_stream_t; 52 53 54 typedef struct { 55 u_char name[NGX_RTMP_MAX_NAME]; 56 u_char args[NGX_RTMP_MAX_ARGS]; 57 u_char type[16]; 58 int silent; 59 } ngx_rtmp_publish_t; 60 61 62 typedef struct { 63 ngx_str_t playlist; 64 ngx_str_t module; 65 } ngx_rtmp_playlist_t; 66 67 68 typedef struct { 69 u_char name[NGX_RTMP_MAX_NAME]; 70 u_char args[NGX_RTMP_MAX_ARGS]; 71 double start; 72 double duration; 73 int reset; 74 int silent; 75 } ngx_rtmp_play_t; 76 77 78 typedef struct { 79 double offset; 80 } ngx_rtmp_seek_t; 81 82 83 typedef struct { 84 uint8_t pause; 85 double position; 86 } ngx_rtmp_pause_t; 87 88 89 typedef struct { 90 uint32_t msid; 91 } ngx_rtmp_msid_t; 92 93 94 typedef ngx_rtmp_msid_t ngx_rtmp_stream_begin_t; 95 typedef ngx_rtmp_msid_t ngx_rtmp_stream_eof_t; 96 typedef ngx_rtmp_msid_t ngx_rtmp_stream_dry_t; 97 typedef ngx_rtmp_msid_t ngx_rtmp_recorded_t; 98 99 100 typedef struct { 101 uint32_t msid; 102 uint32_t buflen; 103 } ngx_rtmp_set_buflen_t; 104 105 106 void ngx_rtmp_cmd_fill_args(u_char name[NGX_RTMP_MAX_NAME], 107 u_char args[NGX_RTMP_MAX_ARGS]); 108 109 110 typedef ngx_int_t (*ngx_rtmp_connect_pt)(ngx_rtmp_session_t *s, 111 ngx_rtmp_connect_t *v); 112 typedef ngx_int_t (*ngx_rtmp_disconnect_pt)(ngx_rtmp_session_t *s); 113 typedef ngx_int_t (*ngx_rtmp_create_stream_pt)(ngx_rtmp_session_t *s, 114 ngx_rtmp_create_stream_t *v); 115 typedef ngx_int_t (*ngx_rtmp_close_stream_pt)(ngx_rtmp_session_t *s, 116 ngx_rtmp_close_stream_t *v); 117 typedef ngx_int_t (*ngx_rtmp_delete_stream_pt)(ngx_rtmp_session_t *s, 118 ngx_rtmp_delete_stream_t *v); 119 typedef ngx_int_t (*ngx_rtmp_publish_pt)(ngx_rtmp_session_t *s, 120 ngx_rtmp_publish_t *v); 121 typedef ngx_int_t (*ngx_rtmp_play_pt)(ngx_rtmp_session_t *s, 122 ngx_rtmp_play_t *v); 123 typedef ngx_int_t (*ngx_rtmp_seek_pt)(ngx_rtmp_session_t *s, 124 ngx_rtmp_seek_t *v); 125 typedef ngx_int_t (*ngx_rtmp_pause_pt)(ngx_rtmp_session_t *s, 126 ngx_rtmp_pause_t *v); 127 128 typedef ngx_int_t (*ngx_rtmp_stream_begin_pt)(ngx_rtmp_session_t *s, 129 ngx_rtmp_stream_begin_t *v); 130 typedef ngx_int_t (*ngx_rtmp_stream_eof_pt)(ngx_rtmp_session_t *s, 131 ngx_rtmp_stream_eof_t *v); 132 typedef ngx_int_t (*ngx_rtmp_stream_dry_pt)(ngx_rtmp_session_t *s, 133 ngx_rtmp_stream_dry_t *v); 134 typedef ngx_int_t (*ngx_rtmp_recorded_pt)(ngx_rtmp_session_t *s, 135 ngx_rtmp_recorded_t *v); 136 typedef ngx_int_t (*ngx_rtmp_set_buflen_pt)(ngx_rtmp_session_t *s, 137 ngx_rtmp_set_buflen_t *v); 138 139 typedef ngx_int_t (*ngx_rtmp_playlist_pt)(ngx_rtmp_session_t *s, ngx_rtmp_playlist_t *v); 140 141 extern ngx_rtmp_connect_pt ngx_rtmp_connect; 142 extern ngx_rtmp_disconnect_pt ngx_rtmp_disconnect; 143 extern ngx_rtmp_create_stream_pt ngx_rtmp_create_stream; 144 extern ngx_rtmp_close_stream_pt ngx_rtmp_close_stream; 145 extern ngx_rtmp_delete_stream_pt ngx_rtmp_delete_stream; 146 extern ngx_rtmp_publish_pt ngx_rtmp_publish; 147 extern ngx_rtmp_play_pt ngx_rtmp_play; 148 extern ngx_rtmp_seek_pt ngx_rtmp_seek; 149 extern ngx_rtmp_pause_pt ngx_rtmp_pause; 150 151 extern ngx_rtmp_stream_begin_pt ngx_rtmp_stream_begin; 152 extern ngx_rtmp_stream_eof_pt ngx_rtmp_stream_eof; 153 extern ngx_rtmp_stream_dry_pt ngx_rtmp_stream_dry; 154 extern ngx_rtmp_set_buflen_pt ngx_rtmp_set_buflen; 155 extern ngx_rtmp_recorded_pt ngx_rtmp_recorded; 156 157 extern ngx_rtmp_playlist_pt ngx_rtmp_playlist; 158 159 #endif /*_NGX_RTMP_CMD_H_INCLUDED_ */ 160