diff options
-rw-r--r-- | ChangeLog | 12 | ||||
-rw-r--r-- | ext/swfdec/gstswfdec.c | 18 | ||||
-rw-r--r-- | ext/wavpack/gstwavpackdec.c | 3 | ||||
-rw-r--r-- | gst/qtdemux/qtdemux.c | 13 |
4 files changed, 38 insertions, 8 deletions
@@ -1,3 +1,15 @@ +2005-12-19 Edward Hervey <edward@fluendo.com> + + * ext/swfdec/gstswfdec.c: (gst_swfdec_class_init), + (gst_swfdec_chain), (gst_swfdec_render): + Add debugging category and return GstFlowReturn in the right places + * ext/wavpack/gstwavpackdec.c: (gst_wavpack_dec_link): + Get something from the peer pad once we've checked if there is a peer pad. + * gst/qtdemux/qtdemux.c: (gst_qtdemux_change_state), + (qtdemux_tree_get_child_by_type), (qtdemux_parse_trak), + (qtdemux_video_caps): + Couple of fixes + 2005-12-19 Edgard Lima <edgard.lima@indt.org.br> * ext/divx/Makefile.am: diff --git a/ext/swfdec/gstswfdec.c b/ext/swfdec/gstswfdec.c index bd983b58..9b11b0cf 100644 --- a/ext/swfdec/gstswfdec.c +++ b/ext/swfdec/gstswfdec.c @@ -26,6 +26,9 @@ #include <gst/video/video.h> #include <swfdec_buffer.h> +GST_DEBUG_CATEGORY_STATIC (swfdec_debug); +#define GST_CAT_DEFAULT swfdec_debug + /* elementfactory information */ static GstElementDetails gst_swfdec_details = GST_ELEMENT_DETAILS ("SWF video decoder", @@ -243,6 +246,9 @@ gst_swfdec_class_init (GstSwfdecClass * klass) G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstSwfdecClass, embed_url), NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); + + GST_DEBUG_CATEGORY_INIT (swfdec_debug, "swfdec", 0, "Flash decoder plugin"); + } static GstCaps * @@ -332,11 +338,13 @@ gst_swfdec_chain (GstPad * pad, GstBuffer * buffer) GstSwfdec *swfdec = GST_SWFDEC (GST_PAD_PARENT (pad)); g_static_rec_mutex_lock (&swfdec->mutex); + GST_DEBUG_OBJECT (swfdec, "about to call swfdec_decoder_parse"); ret = swfdec_decoder_parse (swfdec->decoder); if (ret == SWF_NEEDBITS) { guint buf_size; GstBuffer *prev_buffer; + GST_DEBUG_OBJECT (swfdec, "SWF_NEEDBITS, feeding data to swfdec-decoder"); buf_size = gst_adapter_available (swfdec->adapter); if (buf_size) { prev_buffer = gst_buffer_new_and_alloc (buf_size); @@ -351,8 +359,6 @@ gst_swfdec_chain (GstPad * pad, GstBuffer * buffer) swfdec_decoder_add_buffer (swfdec->decoder, gst_swfdec_buffer_to_swf (buffer)); - - } else if (ret == SWF_CHANGE) { GstCaps *caps; @@ -363,6 +369,7 @@ gst_swfdec_chain (GstPad * pad, GstBuffer * buffer) GstTagList *taglist; #endif + GST_DEBUG_OBJECT (swfdec, "SWF_CHANGE"); gst_adapter_push (swfdec->adapter, buffer); swfdec_decoder_get_image_size (swfdec->decoder, @@ -411,6 +418,7 @@ gst_swfdec_chain (GstPad * pad, GstBuffer * buffer) #endif } else if (ret == SWF_EOF) { + GST_DEBUG_OBJECT (swfdec, "SWF_EOF"); gst_swfdec_render (swfdec, ret); gst_task_start (swfdec->task); } @@ -439,8 +447,10 @@ gst_swfdec_render (GstSwfdec * swfdec, int ret) GstBuffer *videobuf; GstBuffer *audiobuf; gboolean ret; + GstFlowReturn res; const char *url; + GST_DEBUG_OBJECT (swfdec, "render:SWF_EOF"); swfdec_decoder_set_mouse (swfdec->decoder, swfdec->x, swfdec->y, swfdec->button); @@ -448,8 +458,8 @@ gst_swfdec_render (GstSwfdec * swfdec, int ret) if (!ret) { gst_task_stop (swfdec->task); - gst_pad_push_event (swfdec->videopad, gst_event_new_eos ()); - gst_pad_push_event (swfdec->audiopad, gst_event_new_eos ()); + res = gst_pad_push_event (swfdec->videopad, gst_event_new_eos ()); + res = gst_pad_push_event (swfdec->audiopad, gst_event_new_eos ()); return; } diff --git a/ext/wavpack/gstwavpackdec.c b/ext/wavpack/gstwavpackdec.c index f3f9d750..d8a4308e 100644 --- a/ext/wavpack/gstwavpackdec.c +++ b/ext/wavpack/gstwavpackdec.c @@ -83,13 +83,14 @@ static GstPadLinkReturn gst_wavpack_dec_link (GstPad * pad, GstPad * peer) { GstWavpackDec *wavpackdec = GST_WAVPACK_DEC (gst_pad_get_parent (pad)); - GstStructure *structure = gst_caps_get_structure (GST_PAD_CAPS (peer), 0); + GstStructure *structure; GstCaps *srccaps; gint bits; if (!gst_caps_is_fixed (GST_PAD_CAPS (peer))) return GST_PAD_LINK_REFUSED; + structure = gst_caps_get_structure (GST_PAD_CAPS (peer), 0); gst_structure_get_int (structure, "rate", (gint32 *) & wavpackdec->samplerate); gst_structure_get_int (structure, "channels", diff --git a/gst/qtdemux/qtdemux.c b/gst/qtdemux/qtdemux.c index 84c2facb..ce01f649 100644 --- a/gst/qtdemux/qtdemux.c +++ b/gst/qtdemux/qtdemux.c @@ -473,7 +473,8 @@ gst_qtdemux_change_state (GstElement * element, GstStateChange transition) for (n = 0; n < qtdemux->n_streams; n++) { gst_element_remove_pad (element, qtdemux->streams[n]->pad); g_free (qtdemux->streams[n]->samples); - gst_caps_unref (qtdemux->streams[n]->caps); + if (qtdemux->streams[n]->caps) + gst_caps_unref (qtdemux->streams[n]->caps); g_free (qtdemux->streams[n]); } qtdemux->n_streams = 0; @@ -1765,7 +1766,13 @@ qtdemux_tree_get_child_by_type (GNode * node, guint32 fourcc) child = g_node_next_sibling (child)) { buffer = child->data; + child_fourcc = GST_READ_UINT32_LE (buffer); + GST_LOG ("First chunk of buffer %p is [%" GST_FOURCC_FORMAT "]", + buffer, GST_FOURCC_ARGS (child_fourcc)); + child_fourcc = GST_READ_UINT32_LE (buffer + 4); + GST_LOG ("buffer %p has fourcc [%" GST_FOURCC_FORMAT "]", + buffer, GST_FOURCC_ARGS (child_fourcc)); if (child_fourcc == fourcc) { return child; @@ -1899,7 +1906,7 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) stream = g_new0 (QtDemuxStream, 1); tkhd = qtdemux_tree_get_child_by_type (trak, FOURCC_tkhd); - g_assert (tkhd); + g_return_if_fail (tkhd); GST_LOG ("track[tkhd] version/flags: 0x%08x", QTDEMUX_GUINT32_GET (tkhd->data + 8)); @@ -2621,7 +2628,7 @@ qtdemux_video_caps (GstQTDemux * qtdemux, guint32 fourcc, return gst_caps_from_string ("image/jpeg"); case GST_MAKE_FOURCC ('m', 'j', 'p', 'b'): _codec ("Motion-JPEG format B"); - return gst_caps_from_string ("image/jpeg-b"); + return gst_caps_from_string ("video/x-mjpeg-b"); case GST_MAKE_FOURCC ('S', 'V', 'Q', '3'): _codec ("Sorensen video v.3"); return gst_caps_from_string ("video/x-svq, " "svqversion = (int) 3"); |