mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 06:54:49 +00:00
ext/mad/gstmad.c: Include AUDIO_CODEC tag with tags posted if input is not framed (#334258). Use _scale() util functi...
Original commit message from CVS: * ext/mad/gstmad.c: (gst_mad_convert_sink), (gst_mad_update_info), (gst_mad_sink_event), (gst_mad_change_state): Include AUDIO_CODEC tag with tags posted if input is not framed (#334258). Use _scale() util functions in more places.
This commit is contained in:
parent
6b069c0c1e
commit
5ed66b9e38
2 changed files with 24 additions and 2 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2006-03-14 Tim-Philipp Müller <tim at centricular dot net>
|
||||||
|
|
||||||
|
* ext/mad/gstmad.c: (gst_mad_convert_sink), (gst_mad_update_info),
|
||||||
|
(gst_mad_sink_event), (gst_mad_change_state):
|
||||||
|
Include AUDIO_CODEC tag with tags posted if input is not
|
||||||
|
framed (#334258). Use _scale() util functions in more places.
|
||||||
|
|
||||||
2006-03-12 Christophe Fergeau <teuf@gnome.org>
|
2006-03-12 Christophe Fergeau <teuf@gnome.org>
|
||||||
|
|
||||||
Reviewed by: Tim-Philipp Müller <tim at centricular dot net>
|
Reviewed by: Tim-Philipp Müller <tim at centricular dot net>
|
||||||
|
|
|
@ -85,6 +85,8 @@ struct _GstMad
|
||||||
|
|
||||||
gboolean check_for_xing;
|
gboolean check_for_xing;
|
||||||
gboolean xing_found;
|
gboolean xing_found;
|
||||||
|
|
||||||
|
gboolean framed; /* whether there is a demuxer in front of us */
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _GstMadClass
|
struct _GstMadClass
|
||||||
|
@ -445,7 +447,8 @@ gst_mad_convert_sink (GstPad * pad, GstFormat src_format, gint64 src_value,
|
||||||
switch (*dest_format) {
|
switch (*dest_format) {
|
||||||
case GST_FORMAT_TIME:
|
case GST_FORMAT_TIME:
|
||||||
/* multiply by 8 because vbr is in bits/second */
|
/* multiply by 8 because vbr is in bits/second */
|
||||||
*dest_value = src_value * 8 * GST_SECOND / mad->vbr_average;
|
*dest_value = gst_util_uint64_scale (src_value, 8 * GST_SECOND,
|
||||||
|
mad->vbr_average);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
res = FALSE;
|
res = FALSE;
|
||||||
|
@ -455,7 +458,8 @@ gst_mad_convert_sink (GstPad * pad, GstFormat src_format, gint64 src_value,
|
||||||
switch (*dest_format) {
|
switch (*dest_format) {
|
||||||
case GST_FORMAT_BYTES:
|
case GST_FORMAT_BYTES:
|
||||||
/* multiply by 8 because vbr is in bits/second */
|
/* multiply by 8 because vbr is in bits/second */
|
||||||
*dest_value = src_value * mad->vbr_average / (8 * GST_SECOND);
|
*dest_value = gst_util_uint64_scale (src_value, mad->vbr_average,
|
||||||
|
8 * GST_SECOND);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
res = FALSE;
|
res = FALSE;
|
||||||
|
@ -1008,6 +1012,14 @@ G_STMT_START{ \
|
||||||
GST_TAG_LAYER, mad->header.layer,
|
GST_TAG_LAYER, mad->header.layer,
|
||||||
GST_TAG_MODE, mode->value_nick,
|
GST_TAG_MODE, mode->value_nick,
|
||||||
GST_TAG_EMPHASIS, emphasis->value_nick, NULL);
|
GST_TAG_EMPHASIS, emphasis->value_nick, NULL);
|
||||||
|
if (!mad->framed) {
|
||||||
|
gchar *str;
|
||||||
|
|
||||||
|
str = g_strdup_printf ("MPEG-1 layer %d", mad->header.layer);
|
||||||
|
gst_tag_list_add (list, GST_TAG_MERGE_REPLACE,
|
||||||
|
GST_TAG_AUDIO_CODEC, str, NULL);
|
||||||
|
g_free (str);
|
||||||
|
}
|
||||||
if (!mad->xing_found) {
|
if (!mad->xing_found) {
|
||||||
gst_tag_list_add (list, GST_TAG_MERGE_REPLACE,
|
gst_tag_list_add (list, GST_TAG_MERGE_REPLACE,
|
||||||
GST_TAG_BITRATE, mad->header.bitrate, NULL);
|
GST_TAG_BITRATE, mad->header.bitrate, NULL);
|
||||||
|
@ -1040,6 +1052,7 @@ gst_mad_sink_event (GstPad * pad, GstEvent * event)
|
||||||
result = gst_pad_push_event (mad->srcpad, event);
|
result = gst_pad_push_event (mad->srcpad, event);
|
||||||
/* we don't need to restart when we get here */
|
/* we don't need to restart when we get here */
|
||||||
mad->restart = FALSE;
|
mad->restart = FALSE;
|
||||||
|
mad->framed = TRUE;
|
||||||
} else {
|
} else {
|
||||||
GST_DEBUG ("dropping newsegment event in format %s",
|
GST_DEBUG ("dropping newsegment event in format %s",
|
||||||
gst_format_get_name (format));
|
gst_format_get_name (format));
|
||||||
|
@ -1048,6 +1061,7 @@ gst_mad_sink_event (GstPad * pad, GstEvent * event)
|
||||||
mad->restart = TRUE;
|
mad->restart = TRUE;
|
||||||
gst_event_unref (event);
|
gst_event_unref (event);
|
||||||
mad->tempsize = 0;
|
mad->tempsize = 0;
|
||||||
|
mad->framed = FALSE;
|
||||||
result = TRUE;
|
result = TRUE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1677,6 +1691,7 @@ gst_mad_change_state (GstElement * element, GstStateChange transition)
|
||||||
mad->vbr_average = 0;
|
mad->vbr_average = 0;
|
||||||
mad->segment_start = 0;
|
mad->segment_start = 0;
|
||||||
mad->new_header = TRUE;
|
mad->new_header = TRUE;
|
||||||
|
mad->framed = FALSE;
|
||||||
mad->framecount = 0;
|
mad->framecount = 0;
|
||||||
mad->vbr_rate = 0;
|
mad->vbr_rate = 0;
|
||||||
mad->frame.header.samplerate = 0;
|
mad->frame.header.samplerate = 0;
|
||||||
|
|
Loading…
Reference in a new issue