mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	app_mp3: Force output to 16 bits in mpg123
In new mpg123 versions (since 1.26) the default output is 32 bits Asterisk expects the output in 16 bits, so we force the output to be on 16 bits. It will work wit new and old versions of mpg123. Thanks Thomas Orgis <thomas-forum@orgis.org> for giving the key! ASTERISK-29635 #close Change-Id: I88c7740118b5af4e895bd8b765b68ed5c11fc816
This commit is contained in:
		
				
					committed by
					
						 Friendly Automation
						Friendly Automation
					
				
			
			
				
	
			
			
			
						parent
						
							203e73f5af
						
					
				
				
					commit
					ad1f7fae70
				
			| @@ -100,37 +100,37 @@ static int mp3play(const char *filename, unsigned int sampling_rate, int fd) | ||||
| 	    char buffer_size_str[8]; | ||||
| 	    snprintf(buffer_size_str, 8, "%u", (int) 0.5*2*sampling_rate/1000); // 0.5 seconds for a live stream | ||||
| 		/* Most commonly installed in /usr/local/bin */ | ||||
| 	    execl(LOCAL_MPG_123, "mpg123", "-q", "-s", "-b", buffer_size_str, "-f", "8192", "--mono", "-r", sampling_rate_str, "-@", filename, (char *)NULL); | ||||
| 	    execl(LOCAL_MPG_123, "mpg123", "-e", "s16", "-q", "-s", "-b", buffer_size_str, "-f", "8192", "--mono", "-r", sampling_rate_str, "-@", filename, (char *)NULL); | ||||
| 		/* But many places has it in /usr/bin */ | ||||
| 	    execl(MPG_123, "mpg123", "-q", "-s", "-b", buffer_size_str, "-f", "8192", "--mono", "-r", sampling_rate_str, "-@", filename, (char *)NULL); | ||||
| 	    execl(MPG_123, "mpg123", "-e", "s16", "-q", "-s", "-b", buffer_size_str, "-f", "8192", "--mono", "-r", sampling_rate_str, "-@", filename, (char *)NULL); | ||||
| 		/* As a last-ditch effort, try to use PATH */ | ||||
| 	    execlp("mpg123", "mpg123", "-q", "-s", "-b", buffer_size_str, "-f", "8192", "--mono", "-r", sampling_rate_str, "-@", filename, (char *)NULL); | ||||
| 	    execlp("mpg123", "mpg123", "-e", "s16", "-q", "-s", "-b", buffer_size_str, "-f", "8192", "--mono", "-r", sampling_rate_str, "-@", filename, (char *)NULL); | ||||
| 	} | ||||
| 	else if (!strncasecmp(filename, "http://", 7)) { | ||||
| 	    char buffer_size_str[8]; | ||||
| 	    snprintf(buffer_size_str, 8, "%u", 6*2*sampling_rate/1000); // 6 seconds for a remote MP3 file | ||||
| 		/* Most commonly installed in /usr/local/bin */ | ||||
| 	    execl(LOCAL_MPG_123, "mpg123", "-q", "-s", "-b", buffer_size_str, "-f", "8192", "--mono", "-r", sampling_rate_str, filename, (char *)NULL); | ||||
| 	    execl(LOCAL_MPG_123, "mpg123", "-e", "s16", "-q", "-s", "-b", buffer_size_str, "-f", "8192", "--mono", "-r", sampling_rate_str, filename, (char *)NULL); | ||||
| 		/* But many places has it in /usr/bin */ | ||||
| 	    execl(MPG_123, "mpg123", "-q", "-s", "-b", buffer_size_str, "-f", "8192", "--mono", "-r", sampling_rate_str, filename, (char *)NULL); | ||||
| 	    execl(MPG_123, "mpg123", "-e", "s16", "-q", "-s", "-b", buffer_size_str, "-f", "8192", "--mono", "-r", sampling_rate_str, filename, (char *)NULL); | ||||
| 		/* As a last-ditch effort, try to use PATH */ | ||||
| 	    execlp("mpg123", "mpg123", "-q", "-s", "-b", buffer_size_str, "-f", "8192", "--mono", "-r", sampling_rate_str, filename, (char *)NULL); | ||||
| 	    execlp("mpg123", "mpg123", "-e", "s16", "-q", "-s", "-b", buffer_size_str, "-f", "8192", "--mono", "-r", sampling_rate_str, filename, (char *)NULL); | ||||
| 	} | ||||
| 	else if (strstr(filename, ".m3u")) { | ||||
| 		/* Most commonly installed in /usr/local/bin */ | ||||
| 	    execl(LOCAL_MPG_123, "mpg123", "-q", "-z", "-s", "-f", "8192", "--mono", "-r", sampling_rate_str, "-@", filename, (char *)NULL); | ||||
| 	    execl(LOCAL_MPG_123, "mpg123", "-e", "s16", "-q", "-z", "-s", "-f", "8192", "--mono", "-r", sampling_rate_str, "-@", filename, (char *)NULL); | ||||
| 		/* But many places has it in /usr/bin */ | ||||
| 	    execl(MPG_123, "mpg123", "-q", "-z", "-s", "-f", "8192", "--mono", "-r", sampling_rate_str, "-@", filename, (char *)NULL); | ||||
| 	    execl(MPG_123, "mpg123", "-e", "s16", "-q", "-z", "-s", "-f", "8192", "--mono", "-r", sampling_rate_str, "-@", filename, (char *)NULL); | ||||
| 		/* As a last-ditch effort, try to use PATH */ | ||||
| 	    execlp("mpg123", "mpg123", "-q", "-z", "-s",  "-f", "8192", "--mono", "-r", sampling_rate_str, "-@", filename, (char *)NULL); | ||||
| 	    execlp("mpg123", "mpg123", "-e", "s16", "-q", "-z", "-s",  "-f", "8192", "--mono", "-r", sampling_rate_str, "-@", filename, (char *)NULL); | ||||
| 	} | ||||
| 	else { | ||||
| 		/* Most commonly installed in /usr/local/bin */ | ||||
| 	    execl(MPG_123, "mpg123", "-q", "-s", "-f", "8192", "--mono", "-r", sampling_rate_str, filename, (char *)NULL); | ||||
| 	    execl(MPG_123, "mpg123", "-e", "s16", "-q", "-s", "-f", "8192", "--mono", "-r", sampling_rate_str, filename, (char *)NULL); | ||||
| 		/* But many places has it in /usr/bin */ | ||||
| 	    execl(LOCAL_MPG_123, "mpg123", "-q", "-s", "-f", "8192", "--mono", "-r", sampling_rate_str, filename, (char *)NULL); | ||||
| 	    execl(LOCAL_MPG_123, "mpg123", "-e", "s16", "-q", "-s", "-f", "8192", "--mono", "-r", sampling_rate_str, filename, (char *)NULL); | ||||
| 		/* As a last-ditch effort, try to use PATH */ | ||||
| 	    execlp("mpg123", "mpg123", "-q", "-s", "-f", "8192", "--mono", "-r", sampling_rate_str, filename, (char *)NULL); | ||||
| 	    execlp("mpg123", "mpg123", "-e", "s16", "-q", "-s", "-f", "8192", "--mono", "-r", sampling_rate_str, filename, (char *)NULL); | ||||
| 	} | ||||
| 	/* Can't use ast_log since FD's are closed */ | ||||
| 	fprintf(stderr, "Execute of mpg123 failed\n"); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user