mp3parse->freerate = 0;
mp3parse->hdr_bitrate = 0;
+ mp3parse->bitrate_is_constant = TRUE;
mp3parse->xing_flags = 0;
mp3parse->xing_bitrate = 0;
(version == 1) ? 10 : 30, 2);
}
+ if (mp3parse->hdr_bitrate && mp3parse->hdr_bitrate != bitrate) {
+ mp3parse->bitrate_is_constant = FALSE;
+ }
mp3parse->hdr_bitrate = bitrate;
/* For first frame; check for seek tables and output a codec tag */
return TRUE;
}
+ /* If we have had a constant bit rate (so far), use it directly, as it
+ * may give slightly more accurate results than the base class. */
+ if (mp3parse->bitrate_is_constant && mp3parse->hdr_bitrate) {
+ *bytepos = gst_util_uint64_scale (ts, mp3parse->hdr_bitrate,
+ 8 * GST_SECOND);
+ return TRUE;
+ }
+
return FALSE;
}
return TRUE;
}
+ /* If we have had a constant bit rate (so far), use it directly, as it
+ * may give slightly more accurate results than the base class. */
+ if (mp3parse->bitrate_is_constant && mp3parse->hdr_bitrate) {
+ *ts = gst_util_uint64_scale (bytepos, 8 * GST_SECOND,
+ mp3parse->hdr_bitrate);
+ return TRUE;
+ }
+
return FALSE;
}