summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThibaut Mattern <tmattern@users.sourceforge.net>2003-12-06 19:09:38 +0000
committerThibaut Mattern <tmattern@users.sourceforge.net>2003-12-06 19:09:38 +0000
commitda813518f937804962b7c32cff1889647116d1a6 (patch)
tree251508071243aadeb577983f8ab6d7072f682840
parente10a0d0a4a9ce65a4999b451673fc4cbe79767fe (diff)
downloadxine-lib-da813518f937804962b7c32cff1889647116d1a6.tar.gz
xine-lib-da813518f937804962b7c32cff1889647116d1a6.tar.bz2
Do not set stream/meta info if the demuxer has already done the job.
CVS patchset: 5856 CVS date: 2003/12/06 19:09:38
-rw-r--r--src/libmad/xine_decoder.c46
1 files changed, 27 insertions, 19 deletions
diff --git a/src/libmad/xine_decoder.c b/src/libmad/xine_decoder.c
index 01c5a7edc..517403ed3 100644
--- a/src/libmad/xine_decoder.c
+++ b/src/libmad/xine_decoder.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: xine_decoder.c,v 1.45 2003/12/05 15:54:59 f1rmb Exp $
+ * $Id: xine_decoder.c,v 1.46 2003/12/06 19:09:38 tmattern Exp $
*
* stuff needed to turn libmad into a xine decoder plugin
*/
@@ -191,24 +191,32 @@ static void mad_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) {
lprintf ("audio sample rate %d mode %08x\n", this->frame.header.samplerate, mode);
- _x_stream_info_set(this->xstream, XINE_STREAM_INFO_AUDIO_BITRATE, this->frame.header.bitrate);
- switch (this->frame.header.layer) {
- case MAD_LAYER_I:
- _x_meta_info_set(this->xstream, XINE_META_INFO_AUDIOCODEC,
- "MPEG audio layer 1");
- break;
- case MAD_LAYER_II:
- _x_meta_info_set(this->xstream, XINE_META_INFO_AUDIOCODEC,
- "MPEG audio layer 2");
- break;
- case MAD_LAYER_III:
- _x_meta_info_set(this->xstream, XINE_META_INFO_AUDIOCODEC,
- "MPEG audio layer 3");
- break;
- default:
- _x_meta_info_set(this->xstream, XINE_META_INFO_AUDIOCODEC,
- "MPEG audio");
- }
+ /* the mpeg audio demuxer can set audio bitrate */
+ if (! _x_stream_info_get(this->xstream, XINE_STREAM_INFO_AUDIO_BITRATE)) {
+ _x_stream_info_set(this->xstream, XINE_STREAM_INFO_AUDIO_BITRATE,
+ this->frame.header.bitrate);
+ }
+
+ /* the mpeg audio demuxer can set this meta info */
+ if (! _x_meta_info_get(this->xstream, XINE_META_INFO_AUDIOCODEC)) {
+ switch (this->frame.header.layer) {
+ case MAD_LAYER_I:
+ _x_meta_info_set(this->xstream, XINE_META_INFO_AUDIOCODEC,
+ "MPEG audio layer 1");
+ break;
+ case MAD_LAYER_II:
+ _x_meta_info_set(this->xstream, XINE_META_INFO_AUDIOCODEC,
+ "MPEG audio layer 2");
+ break;
+ case MAD_LAYER_III:
+ _x_meta_info_set(this->xstream, XINE_META_INFO_AUDIOCODEC,
+ "MPEG audio layer 3");
+ break;
+ default:
+ _x_meta_info_set(this->xstream, XINE_META_INFO_AUDIOCODEC,
+ "MPEG audio");
+ }
+ }
if (this->output_open) {
this->xstream->audio_out->close (this->xstream->audio_out, this->xstream);