mpg123 decoder: report bitrate
This commit is contained in:
		
				
					committed by
					
						
						Max Kellermann
					
				
			
			
				
	
			
			
			
						parent
						
							18b30b5019
						
					
				
				
					commit
					731ea9b489
				
			@@ -105,6 +105,7 @@ mpd_mpg123_file_decode(struct decoder *decoder, const char *path_fs)
 | 
			
		||||
	int error;
 | 
			
		||||
	off_t num_samples;
 | 
			
		||||
	enum decoder_command cmd;
 | 
			
		||||
	struct mpg123_frameinfo info;
 | 
			
		||||
 | 
			
		||||
	/* open the file */
 | 
			
		||||
 | 
			
		||||
@@ -128,6 +129,21 @@ mpd_mpg123_file_decode(struct decoder *decoder, const char *path_fs)
 | 
			
		||||
			    (float)num_samples /
 | 
			
		||||
			    (float)audio_format.sample_rate);
 | 
			
		||||
 | 
			
		||||
	if (mpg123_info(handle, &info) != MPG123_OK) {
 | 
			
		||||
		info.vbr = MPG123_CBR;
 | 
			
		||||
		info.bitrate = 0;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	switch (info.vbr) {
 | 
			
		||||
	case MPG123_ABR:
 | 
			
		||||
		info.bitrate = info.abr_rate;
 | 
			
		||||
		break;
 | 
			
		||||
	case MPG123_CBR:
 | 
			
		||||
		break;
 | 
			
		||||
	default:
 | 
			
		||||
		info.bitrate = 0;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* the decoder main loop */
 | 
			
		||||
 | 
			
		||||
	do {
 | 
			
		||||
@@ -144,9 +160,17 @@ mpd_mpg123_file_decode(struct decoder *decoder, const char *path_fs)
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/* update bitrate for ABR/VBR */
 | 
			
		||||
		if (info.vbr != MPG123_CBR) {
 | 
			
		||||
			/* FIXME: maybe skip, as too expensive? */
 | 
			
		||||
			/* FIXME: maybe, (info.vbr == MPG123_VBR) ? */
 | 
			
		||||
			if (mpg123_info (handle, &info) != MPG123_OK)
 | 
			
		||||
				info.bitrate = 0;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/* send to MPD */
 | 
			
		||||
 | 
			
		||||
		cmd = decoder_data(decoder, NULL, buffer, nbytes, 0);
 | 
			
		||||
		cmd = decoder_data(decoder, NULL, buffer, nbytes, info.bitrate);
 | 
			
		||||
 | 
			
		||||
		/* seeking not yet implemented */
 | 
			
		||||
	} while (cmd == DECODE_COMMAND_NONE);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user