diff --git a/doc/hacking/bugs/bgo-650785/bgo-650785.otl b/doc/hacking/bugs/bgo-650785/bgo-650785.otl new file mode 100644 index 0000000..b5a98bf --- /dev/null +++ b/doc/hacking/bugs/bgo-650785/bgo-650785.otl @@ -0,0 +1,19 @@ +bugzilla 650785 + bisecting -good + notes + using teuf's C test case, but fixing the spaces between quotes and ! + tested on F17 ana + commits + e0cadab + teuf fails + 8823ae251a72bd18fc93322914c70390fc16c6b3 + slomo's patch from bz report + teuf works + 8229709 + 1 patch after 0.10.30 + teuf works + a53540346a18d27b94f5254ac2582cb844e9bde0 + tim's fix for bugzilla 650785 + commit a53540346a18d27b94f5254ac2582cb844e9bde0 + Author: Tim-Philipp Müller + Date: Mon May 23 13:50:46 2011 +0100 diff --git a/doc/hacking/bugs/bgo-650785/bisect.sh b/doc/hacking/bugs/bgo-650785/bisect.sh new file mode 100755 index 0000000..8e6f9f2 --- /dev/null +++ b/doc/hacking/bugs/bgo-650785/bisect.sh @@ -0,0 +1,10 @@ +GOOD=/home/thomas/gst/git/gst-plugins-good/gst/audioparsers +MORI=/home/thomas/dev/own/morituri + +cd $GOOD +make + +GST_PLUGIN_PATH=$GOOD gst-inspect flacparse | grep ersion: + +cd $MORI +GST_PLUGIN_PATH=$GOOD ./flacparse-testcase $MORI/morituri/test/track.flac diff --git a/doc/hacking/bugs/bgo-650785/flacparse-testcase.c b/doc/hacking/bugs/bgo-650785/flacparse-testcase.c new file mode 100644 index 0000000..4d90940 --- /dev/null +++ b/doc/hacking/bugs/bgo-650785/flacparse-testcase.c @@ -0,0 +1,64 @@ +/* gcc -Wall $(pkg-config --cflags --libs gstreamer-0.10) -g3 -ggdb3 -o flacparse-testcase ./flacparse-testcase.c */ +#include + +static const char PIPELINE[] = "filesrc location=%s " \ + "! decodebin ! audio/x-raw-int " \ + "! appsink name=sink sync=False " \ + "emit-signals=True"; + +int main(int argc, char **argv) +{ + GstElement *pipeline; + GstElement *sink; + gchar *pipeline_str; + GstStateChangeReturn state_change_status; + gint64 duration; + GstFormat query_format; + gboolean query_success; + + gst_init(&argc, &argv); + + if (argc != 2) { + g_print("Usage: %s filename\n", argv[0]); + return 1; + } + + pipeline_str = g_strdup_printf(PIPELINE, argv[1]); + pipeline = gst_parse_launch(pipeline_str, NULL); + if (pipeline == NULL) { + g_print("Failed to create pipeline\n"); + g_print("%s\n", pipeline_str); + return 2; + } + g_free(pipeline_str); + + gst_element_set_state(pipeline, GST_STATE_PAUSED); + state_change_status = gst_element_get_state(pipeline, NULL, NULL, + GST_CLOCK_TIME_NONE); + if (state_change_status != GST_STATE_CHANGE_SUCCESS) { + g_print("Failed to set pipeline to PAUSED\n"); + return 3; + } + + sink = gst_bin_get_by_name(GST_BIN(pipeline), "sink"); + if (sink == NULL) { + g_print("Couldn't find sink in pipeline\n"); + return 4; + } + + query_format = GST_FORMAT_DEFAULT; + query_success = gst_element_query_duration(sink, &query_format, + &duration); + if (query_success) { + g_print("%s duration is %"G_GINT64_FORMAT"\n", argv[1], duration); + return 0; + } else { + g_print("Couldn't get duration for %s\n", argv[1]); + return 5; + } + + gst_object_unref(GST_OBJECT(sink)); + gst_object_unref(GST_OBJECT(pipeline)); + + return 6; +}