From: <sl...@ke...> - 2008-11-28 18:55:20
|
CVS Root: /cvs/gstreamer Module: gst-plugins-bad Changes by: slomo Date: Fri Nov 28 2008 18:55:15 UTC Log message: * gst/mxf/mxfdemux.c: (gst_mxf_demux_pull_random_index_pack): Only try to pull the random index pack at the end of file one time and not for every single packet if it fails. Modified files: . : ChangeLog gst/mxf : mxfdemux.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/ChangeLog.diff?r1=1.3762&r2=1.3763 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mxf/mxfdemux.c.diff?r1=1.14&r2=1.15 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-bad/ChangeLog,v retrieving revision 1.3762 retrieving revision 1.3763 diff -u -d -r1.3762 -r1.3763 --- ChangeLog 28 Nov 2008 18:13:27 -0000 1.3762 +++ ChangeLog 28 Nov 2008 18:55:00 -0000 1.3763 @@ -1,5 +1,11 @@ 2008-11-28 Sebastian Dröge <seb...@co...> + * gst/mxf/mxfdemux.c: (gst_mxf_demux_pull_random_index_pack): + Only try to pull the random index pack at the end of file one time + and not for every single packet if it fails. + +2008-11-28 Sebastian Dröge <seb...@co...> * gst/mxf/Makefile.am: * gst/mxf/mxfaes-bwf.c: (mxf_bwf_create_caps): * gst/mxf/mxfalaw.c: (mxf_is_alaw_audio_essence_track), Index: mxfdemux.c RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mxf/mxfdemux.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- mxfdemux.c 28 Nov 2008 18:13:30 -0000 1.14 +++ mxfdemux.c 28 Nov 2008 18:55:01 -0000 1.15 @@ -1292,9 +1292,8 @@ MXFMetadataEssenceContainerData, i); for (j = 0; j < demux->content_storage.n_essence_container_data; j++) { - if (mxf_ul_is_equal (&demux-> - content_storage.essence_container_data_uids[j], - &data->instance_uid)) { + if (mxf_ul_is_equal (&demux->content_storage. + essence_container_data_uids[j], &data->instance_uid)) { demux->content_storage.essence_container_data[j] = data; break; } @@ -2301,7 +2300,7 @@ if (!gst_pad_query_peer_duration (demux->sinkpad, &fmt, &filesize) || fmt != GST_FORMAT_BYTES || filesize == -1) { GST_DEBUG_OBJECT (demux, "Can't query upstream size"); - return; + goto out; } g_assert (filesize > 4); @@ -2310,7 +2309,7 @@ gst_mxf_demux_pull_range (demux, filesize - 4, 4, &buffer)) != GST_FLOW_OK) { GST_DEBUG_OBJECT (demux, "Failed pulling last 4 bytes"); pack_size = GST_READ_UINT32_BE (GST_BUFFER_DATA (buffer)); @@ -2319,17 +2318,17 @@ if (pack_size < 20) { GST_DEBUG_OBJECT (demux, "Too small pack size"); } else if (pack_size > filesize - 20) { GST_DEBUG_OBJECT (demux, "Too large pack size"); if ((ret = gst_mxf_demux_pull_range (demux, filesize - pack_size, 16, GST_DEBUG_OBJECT (demux, "Failed pulling random index pack key"); memcpy (&key, GST_BUFFER_DATA (buffer), 16); @@ -2337,20 +2336,21 @@ if (!mxf_is_random_index_pack (&key)) { GST_DEBUG_OBJECT (demux, "No random index pack"); gst_mxf_demux_pull_klv_packet (demux, filesize - pack_size, &key, &buffer, NULL)) != GST_FLOW_OK) { GST_DEBUG_OBJECT (demux, "Failed pulling random index pack"); gst_mxf_demux_handle_random_index_pack (demux, &key, buffer); gst_buffer_unref (buffer); +out: if (!demux->partition_index) demux->partition_index = g_array_new (FALSE, FALSE, sizeof (MXFRandomIndexPackEntry)); |