gst-libs/gst/riff/riff-read.c: Don't bail on unknown events.
Original commit message from CVS: * gst-libs/gst/riff/riff-read.c: (gst_riff_read_use_event): Don't bail on unknown events. * gst/audioscale/gstaudioscale.c: (gst_audioscale_chain): Don't crash on events before negotiation. * gst/avi/gstavidemux.c: (gst_avi_demux_add_stream): Send tags on pads, too. * gst/playback/gststreamselector.c: (gst_stream_selector_request_new_pad): Forward events on first pad if no input was selected yet.
This commit is contained in:
parent
b92d30f44d
commit
5024a7c5b6
12
ChangeLog
12
ChangeLog
@ -1,3 +1,15 @@
|
|||||||
|
2005-01-10 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
|
||||||
|
|
||||||
|
* gst-libs/gst/riff/riff-read.c: (gst_riff_read_use_event):
|
||||||
|
Don't bail on unknown events.
|
||||||
|
* gst/audioscale/gstaudioscale.c: (gst_audioscale_chain):
|
||||||
|
Don't crash on events before negotiation.
|
||||||
|
* gst/avi/gstavidemux.c: (gst_avi_demux_add_stream):
|
||||||
|
Send tags on pads, too.
|
||||||
|
* gst/playback/gststreamselector.c:
|
||||||
|
(gst_stream_selector_request_new_pad):
|
||||||
|
Forward events on first pad if no input was selected yet.
|
||||||
|
|
||||||
2005-01-10 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
|
2005-01-10 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
|
||||||
|
|
||||||
* gst/playback/gstplaybasebin.c: (setup_substreams):
|
* gst/playback/gstplaybasebin.c: (setup_substreams):
|
||||||
|
@ -885,6 +885,8 @@ gst_avi_demux_add_stream (GstAviDemux * avi)
|
|||||||
avi_stream_context *stream;
|
avi_stream_context *stream;
|
||||||
gint blockalign = 0, bitrate = 0;
|
gint blockalign = 0, bitrate = 0;
|
||||||
guint64 *locations = NULL;
|
guint64 *locations = NULL;
|
||||||
|
GstTagList *list = gst_tag_list_new ();
|
||||||
|
gboolean have_tag = FALSE;
|
||||||
union
|
union
|
||||||
{
|
{
|
||||||
gst_riff_strf_vids *vids;
|
gst_riff_strf_vids *vids;
|
||||||
@ -984,7 +986,6 @@ gst_avi_demux_add_stream (GstAviDemux * avi)
|
|||||||
case GST_RIFF_FCC_vids:
|
case GST_RIFF_FCC_vids:
|
||||||
{
|
{
|
||||||
char *codec_name = NULL;
|
char *codec_name = NULL;
|
||||||
GstTagList *list = gst_tag_list_new ();
|
|
||||||
guint32 tag;
|
guint32 tag;
|
||||||
|
|
||||||
padname = g_strdup_printf ("video_%02d", avi->num_v_streams);
|
padname = g_strdup_printf ("video_%02d", avi->num_v_streams);
|
||||||
@ -995,12 +996,12 @@ gst_avi_demux_add_stream (GstAviDemux * avi)
|
|||||||
tag = strh->fcc_handler;
|
tag = strh->fcc_handler;
|
||||||
caps = gst_riff_create_video_caps_with_data (tag,
|
caps = gst_riff_create_video_caps_with_data (tag,
|
||||||
strh, strf.vids, extradata, initdata, &codec_name);
|
strh, strf.vids, extradata, initdata, &codec_name);
|
||||||
gst_tag_list_add (list, GST_TAG_MERGE_APPEND, GST_TAG_VIDEO_CODEC,
|
if (codec_name) {
|
||||||
codec_name, NULL);
|
gst_tag_list_add (list, GST_TAG_MERGE_APPEND, GST_TAG_VIDEO_CODEC,
|
||||||
gst_element_found_tags (GST_ELEMENT (avi), list);
|
codec_name, NULL);
|
||||||
gst_tag_list_free (list);
|
have_tag = TRUE;
|
||||||
if (codec_name)
|
|
||||||
g_free (codec_name);
|
g_free (codec_name);
|
||||||
|
}
|
||||||
g_free (strf.vids);
|
g_free (strf.vids);
|
||||||
avi->num_v_streams++;
|
avi->num_v_streams++;
|
||||||
break;
|
break;
|
||||||
@ -1008,19 +1009,18 @@ gst_avi_demux_add_stream (GstAviDemux * avi)
|
|||||||
case GST_RIFF_FCC_auds:
|
case GST_RIFF_FCC_auds:
|
||||||
{
|
{
|
||||||
char *codec_name = NULL;
|
char *codec_name = NULL;
|
||||||
GstTagList *list = gst_tag_list_new ();
|
|
||||||
|
|
||||||
padname = g_strdup_printf ("audio_%02d", avi->num_a_streams);
|
padname = g_strdup_printf ("audio_%02d", avi->num_a_streams);
|
||||||
templ = gst_element_class_get_pad_template (klass, "audio_%02d");
|
templ = gst_element_class_get_pad_template (klass, "audio_%02d");
|
||||||
caps =
|
caps =
|
||||||
gst_riff_create_audio_caps_with_data (strf.auds->format, strh,
|
gst_riff_create_audio_caps_with_data (strf.auds->format, strh,
|
||||||
strf.auds, extradata, initdata, &codec_name);
|
strf.auds, extradata, initdata, &codec_name);
|
||||||
gst_tag_list_add (list, GST_TAG_MERGE_APPEND, GST_TAG_AUDIO_CODEC,
|
if (codec_name) {
|
||||||
codec_name, NULL);
|
gst_tag_list_add (list, GST_TAG_MERGE_APPEND, GST_TAG_AUDIO_CODEC,
|
||||||
gst_element_found_tags (GST_ELEMENT (avi), list);
|
codec_name, NULL);
|
||||||
gst_tag_list_free (list);
|
have_tag = TRUE;
|
||||||
if (codec_name)
|
|
||||||
g_free (codec_name);
|
g_free (codec_name);
|
||||||
|
}
|
||||||
blockalign = strf.auds->blockalign;
|
blockalign = strf.auds->blockalign;
|
||||||
bitrate = strf.auds->av_bps;
|
bitrate = strf.auds->av_bps;
|
||||||
g_free (strf.auds);
|
g_free (strf.auds);
|
||||||
@ -1030,18 +1030,17 @@ gst_avi_demux_add_stream (GstAviDemux * avi)
|
|||||||
case GST_RIFF_FCC_iavs:
|
case GST_RIFF_FCC_iavs:
|
||||||
{
|
{
|
||||||
char *codec_name = NULL;
|
char *codec_name = NULL;
|
||||||
GstTagList *list = gst_tag_list_new ();
|
|
||||||
|
|
||||||
padname = g_strdup_printf ("video_%02d", avi->num_v_streams);
|
padname = g_strdup_printf ("video_%02d", avi->num_v_streams);
|
||||||
templ = gst_element_class_get_pad_template (klass, "video_%02d");
|
templ = gst_element_class_get_pad_template (klass, "video_%02d");
|
||||||
caps = gst_riff_create_iavs_caps (strh->fcc_handler, strh, strf.iavs,
|
caps = gst_riff_create_iavs_caps (strh->fcc_handler, strh, strf.iavs,
|
||||||
&codec_name);
|
&codec_name);
|
||||||
gst_tag_list_add (list, GST_TAG_MERGE_APPEND, GST_TAG_VIDEO_CODEC,
|
if (codec_name) {
|
||||||
codec_name, NULL);
|
gst_tag_list_add (list, GST_TAG_MERGE_APPEND, GST_TAG_VIDEO_CODEC,
|
||||||
gst_element_found_tags (GST_ELEMENT (avi), list);
|
codec_name, NULL);
|
||||||
gst_tag_list_free (list);
|
have_tag = TRUE;
|
||||||
if (codec_name)
|
|
||||||
g_free (codec_name);
|
g_free (codec_name);
|
||||||
|
}
|
||||||
g_free (strf.iavs);
|
g_free (strf.iavs);
|
||||||
avi->num_v_streams++;
|
avi->num_v_streams++;
|
||||||
break;
|
break;
|
||||||
@ -1089,6 +1088,15 @@ gst_avi_demux_add_stream (GstAviDemux * avi)
|
|||||||
if (extradata)
|
if (extradata)
|
||||||
gst_buffer_unref (extradata);
|
gst_buffer_unref (extradata);
|
||||||
|
|
||||||
|
if (have_tag) {
|
||||||
|
GstEvent *event = gst_event_new_tag (list);
|
||||||
|
|
||||||
|
gst_element_found_tags (GST_ELEMENT (avi), list);
|
||||||
|
gst_pad_push (pad, GST_DATA (event));
|
||||||
|
} else {
|
||||||
|
gst_tag_list_free (list);
|
||||||
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
skip_stream:
|
skip_stream:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user