@@ -33,13 +33,16 @@ static void ngx_rtmp_live_stop(ngx_rtmp_session_t *s);
3333
3434static ngx_int_t ngx_rtmp_live_send_message (ngx_rtmp_session_t * s ,
3535 ngx_chain_t * in , unsigned int priority );
36+ static ngx_chain_t * ngx_rtmp_live_meta_message (ngx_rtmp_session_t * s ,
37+ ngx_chain_t * in );
3638static ngx_chain_t * ngx_rtmp_live_append_message (ngx_rtmp_session_t * s ,
3739 ngx_rtmp_header_t * h , ngx_rtmp_header_t * lh , ngx_chain_t * in );
3840static void ngx_rtmp_live_free_message (ngx_rtmp_session_t * s , ngx_chain_t * in );
3941
4042
4143ngx_rtmp_process_handler_t ngx_rtmp_live_process_handler = {
4244 ngx_rtmp_live_send_message ,
45+ ngx_rtmp_live_meta_message ,
4346 ngx_rtmp_live_append_message ,
4447 ngx_rtmp_live_free_message
4548};
@@ -162,15 +165,29 @@ ngx_module_t ngx_rtmp_live_module = {
162165
163166ngx_int_t
164167ngx_rtmp_live_send_message (ngx_rtmp_session_t * s ,
165- ngx_chain_t * in , unsigned int priority )
168+ ngx_chain_t * in , unsigned int priority )
166169{
167170 return ngx_rtmp_send_message (s , in , priority );
168171}
169172
170173
174+ ngx_chain_t *
175+ ngx_rtmp_live_meta_message (ngx_rtmp_session_t * s , ngx_chain_t * in )
176+ {
177+ ngx_rtmp_core_srv_conf_t * cscf ;
178+
179+ cscf = ngx_rtmp_get_module_srv_conf (s , ngx_rtmp_core_module );
180+ if (cscf == NULL ) {
181+ return NULL ;
182+ }
183+
184+ return ngx_rtmp_append_shared_bufs (cscf , NULL , in );
185+ }
186+
187+
171188ngx_chain_t *
172189ngx_rtmp_live_append_message (ngx_rtmp_session_t * s ,
173- ngx_rtmp_header_t * h , ngx_rtmp_header_t * lh , ngx_chain_t * in )
190+ ngx_rtmp_header_t * h , ngx_rtmp_header_t * lh , ngx_chain_t * in )
174191{
175192 ngx_rtmp_core_srv_conf_t * cscf ;
176193 ngx_chain_t * pkt ;
@@ -783,7 +800,7 @@ ngx_rtmp_live_av(ngx_rtmp_session_t *s, ngx_rtmp_header_t *h,
783800 ngx_rtmp_core_srv_conf_t * cscf ;
784801 ngx_rtmp_live_app_conf_t * lacf ;
785802 ngx_rtmp_session_t * ss ;
786- ngx_rtmp_header_t ch , lh , clh , mch ;
803+ ngx_rtmp_header_t ch , lh , clh ;
787804 ngx_int_t rc , mandatory ;
788805 ngx_uint_t prio ;
789806 ngx_uint_t peers ;
@@ -846,9 +863,6 @@ ngx_rtmp_live_av(ngx_rtmp_session_t *s, ngx_rtmp_header_t *h,
846863 prio = (h -> type == NGX_RTMP_MSG_VIDEO ?
847864 ngx_rtmp_get_video_frame_type (in ) : 0 );
848865
849- mch .timestamp = 0 ;
850- mch .type = NGX_RTMP_MSG_AMF_META ;
851-
852866 cscf = ngx_rtmp_get_module_srv_conf (s , ngx_rtmp_core_module );
853867
854868 csidx = !(lacf -> interleave || h -> type == NGX_RTMP_MSG_VIDEO );
@@ -972,24 +986,13 @@ ngx_rtmp_live_av(ngx_rtmp_session_t *s, ngx_rtmp_header_t *h,
972986 hctx -> header_sent = 1 ;
973987 ngx_http_flv_live_send_header (ss );
974988 }
975-
976- if (meta == NULL && meta_version != pctx -> meta_version ) {
977- if (hctx -> chunked ) {
978- meta = ngx_http_flv_live_append_shared_bufs (cscf ,
979- & mch , codec_ctx -> meta , 1 );
980- } else {
981- meta = ngx_http_flv_live_append_shared_bufs (cscf ,
982- & mch , codec_ctx -> meta , 0 );
983- }
984- }
985- } else {
986- if (meta == NULL && meta_version != pctx -> meta_version ) {
987- meta = ngx_rtmp_append_shared_bufs (cscf , NULL ,
988- codec_ctx -> meta );
989- }
990989 }
991990 }
992991
992+ if (meta == NULL && meta_version != pctx -> meta_version ) {
993+ meta = handler -> meta_message_pt (ss , codec_ctx -> meta );
994+ }
995+
993996 if (meta && meta_version != pctx -> meta_version ) {
994997 ngx_log_debug0 (NGX_LOG_DEBUG_RTMP , ss -> connection -> log , 0 ,
995998 "live: meta" );
0 commit comments