mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	app_echo: forward and generate VIDUPDATE frames
When using app_echo via WebRTC with VP8 video the video would appear only after a few minutes, because there would be nothing to request a full reference frame. This fixes the problem in both ways: - echos any VIDUPDATE frames received on the channel - sends one such frame when first video frame is to be forwarded This makes the echo work with Firefox and Chrome WebRTC implementation. ASTERISK-25867 #close Change-Id: I73bda87bf7532ee8bfb28d917045a21034908c1e
This commit is contained in:
		
				
					committed by
					
						 Joshua Colp
						Joshua Colp
					
				
			
			
				
	
			
			
			
						parent
						
							6ce25bd62a
						
					
				
				
					commit
					9785e8d090
				
			| @@ -58,6 +58,7 @@ static const char app[] = "Echo"; | ||||
| static int echo_exec(struct ast_channel *chan, const char *data) | ||||
| { | ||||
| 	int res = -1; | ||||
| 	int fir_sent = 0; | ||||
|  | ||||
| 	while (ast_waitfor(chan, -1) > -1) { | ||||
| 		struct ast_frame *f = ast_read(chan); | ||||
| @@ -66,6 +67,22 @@ static int echo_exec(struct ast_channel *chan, const char *data) | ||||
| 		} | ||||
| 		f->delivery.tv_sec = 0; | ||||
| 		f->delivery.tv_usec = 0; | ||||
| 		if (f->frametype == AST_FRAME_CONTROL | ||||
| 			&& f->subclass.integer == AST_CONTROL_VIDUPDATE) { | ||||
| 			if (ast_write(chan, f) < 0) { | ||||
| 				ast_frfree(f); | ||||
| 				goto end; | ||||
| 			} | ||||
| 			fir_sent = 1; | ||||
| 		} | ||||
| 		if (!fir_sent && f->frametype == AST_FRAME_VIDEO) { | ||||
| 			struct ast_frame frame = { | ||||
| 				.frametype = AST_FRAME_CONTROL, | ||||
| 				.subclass.integer = AST_CONTROL_VIDUPDATE, | ||||
| 			}; | ||||
| 			ast_write(chan, &frame); | ||||
| 			fir_sent = 1; | ||||
| 		} | ||||
| 		if (f->frametype != AST_FRAME_CONTROL | ||||
| 			&& f->frametype != AST_FRAME_MODEM | ||||
| 			&& f->frametype != AST_FRAME_NULL | ||||
|   | ||||
		Reference in New Issue
	
	Block a user