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;
 | 
						int error;
 | 
				
			||||||
	off_t num_samples;
 | 
						off_t num_samples;
 | 
				
			||||||
	enum decoder_command cmd;
 | 
						enum decoder_command cmd;
 | 
				
			||||||
 | 
						struct mpg123_frameinfo info;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* open the file */
 | 
						/* open the file */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -128,6 +129,21 @@ mpd_mpg123_file_decode(struct decoder *decoder, const char *path_fs)
 | 
				
			|||||||
			    (float)num_samples /
 | 
								    (float)num_samples /
 | 
				
			||||||
			    (float)audio_format.sample_rate);
 | 
								    (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 */
 | 
						/* the decoder main loop */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	do {
 | 
						do {
 | 
				
			||||||
@@ -144,9 +160,17 @@ mpd_mpg123_file_decode(struct decoder *decoder, const char *path_fs)
 | 
				
			|||||||
			break;
 | 
								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 */
 | 
							/* send to MPD */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		cmd = decoder_data(decoder, NULL, buffer, nbytes, 0);
 | 
							cmd = decoder_data(decoder, NULL, buffer, nbytes, info.bitrate);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		/* seeking not yet implemented */
 | 
							/* seeking not yet implemented */
 | 
				
			||||||
	} while (cmd == DECODE_COMMAND_NONE);
 | 
						} while (cmd == DECODE_COMMAND_NONE);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user