gst/mpegaudioparse/gstmpegaudioparse.c: Send a new duration message if the average bitrate changed and we don't know ...

Original commit message from CVS:
* gst/mpegaudioparse/gstmpegaudioparse.c:
(gst_mp3parse_emit_frame):
Send a new duration message if the average bitrate changed and
we don't know the duration from the Xing or VBRI header.
Fixes bug #321857.
This commit is contained in:
Sebastian Dröge 2008-05-05 08:43:38 +00:00
parent dc920d924b
commit 744d36d359
2 changed files with 23 additions and 5 deletions

View file

@ -1,3 +1,11 @@
2008-05-05 Sebastian Dröge <slomo@circular-chaos.org>
* gst/mpegaudioparse/gstmpegaudioparse.c:
(gst_mp3parse_emit_frame):
Send a new duration message if the average bitrate changed and
we don't know the duration from the Xing or VBRI header.
Fixes bug #321857.
2008-04-30 Wim Taymans <wim.taymans@collabora.co.uk> 2008-04-30 Wim Taymans <wim.taymans@collabora.co.uk>
* gst/realmedia/rtspreal.c: (rtsp_ext_real_before_send), * gst/realmedia/rtspreal.c: (rtsp_ext_real_before_send),

View file

@ -39,6 +39,11 @@ GST_DEBUG_CATEGORY_STATIC (mp3parse_debug);
#define CRC_PROTECTED 0 #define CRC_PROTECTED 0
#define CRC_NOT_PROTECTED 1 #define CRC_NOT_PROTECTED 1
#define XING_FRAMES_FLAG 0x0001
#define XING_BYTES_FLAG 0x0002
#define XING_TOC_FLAG 0x0004
#define XING_VBR_SCALE_FLAG 0x0008
#define GST_READ_UINT24_BE(p) (p[2] | (p[1] << 8) | (p[0] << 16)) #define GST_READ_UINT24_BE(p) (p[2] | (p[1] << 8) | (p[0] << 16))
static inline MPEGAudioSeekEntry * static inline MPEGAudioSeekEntry *
@ -690,6 +695,16 @@ gst_mp3parse_emit_frame (GstMPEGAudioParse * mp3parse, guint size,
mp3parse->last_posted_bitrate = bitrate; mp3parse->last_posted_bitrate = bitrate;
gst_tag_list_add (taglist, GST_TAG_MERGE_REPLACE, GST_TAG_BITRATE, gst_tag_list_add (taglist, GST_TAG_MERGE_REPLACE, GST_TAG_BITRATE,
mp3parse->last_posted_bitrate, NULL); mp3parse->last_posted_bitrate, NULL);
/* Post a new duration message if the average bitrate changes that much
* so applications can update their cached values
*/
if ((mp3parse->xing_flags & XING_TOC_FLAG) == 0
&& mp3parse->vbri_total_time == 0) {
gst_element_post_message (GST_ELEMENT (mp3parse),
gst_message_new_duration (GST_OBJECT (mp3parse), GST_FORMAT_TIME,
-1));
}
} }
if (mp3parse->last_posted_crc != crc) { if (mp3parse->last_posted_crc != crc) {
@ -805,11 +820,6 @@ gst_mp3parse_emit_frame (GstMPEGAudioParse * mp3parse, guint size,
return ret; return ret;
} }
#define XING_FRAMES_FLAG 0x0001
#define XING_BYTES_FLAG 0x0002
#define XING_TOC_FLAG 0x0004
#define XING_VBR_SCALE_FLAG 0x0008
static void static void
gst_mp3parse_handle_first_frame (GstMPEGAudioParse * mp3parse) gst_mp3parse_handle_first_frame (GstMPEGAudioParse * mp3parse)
{ {