Commit graph

217 commits

Author SHA1 Message Date
Tim-Philipp Müller
6e764e5b11 mxfdemux: implement simple KEY_UNIT seeking
If a KEY_UNIT seek was requested, adjust segment
start to position of the key frame.
2014-04-08 14:37:34 +01:00
Tim-Philipp Müller
4898a51afe mxfdemux: fix seeking, send data starting from a key unit
Fixes multiple seeking issues. When doing ACCURATE or normal
non-KEYUNIT seeks, mxfdemux would just send data from the
edit unit that covered the seek position, whether that's
a keyframe or not. Decoders would only output things from
the next keyframe then, which means there's a gap between
the start of the segment and the first decoded data in
some cases. In combination with gst-editing-services this
might result in a frozen picture for the duration of that
gap at the beginning (if videorate fixes up the first
buffer's start timestamp to cover the entire gap), or
a black frame (if no videorate is used and videomixer
fills the gap). Also fixes A/V sync issue when requesting
a KEYUNIT seek.
2014-04-08 13:26:49 +01:00
Sjoerd Simons
f6da7ea8bb mxfdemux: Don't go into pull mode when the sequential flag is set
When the scheduling query results has GST_SCHEDULING_FLAG_SEQUENTIAL set
in its flags don't go into pull mode to prevent over-eager seeking.

https://bugzilla.gnome.org/show_bug.cgi?id=722934
2014-01-24 22:14:47 +01:00
Sebastian Dröge
6812f96de4 gst: Don't swap start/stop for negative rates in the SEGMENT query 2013-07-29 12:14:08 +02:00
Sebastian Dröge
6b78fa336d mxfdemux: Implement SEGMENT query 2013-07-29 11:02:54 +02:00
Sebastian Dröge
46e85b4a6c mxfdemux: Add support for group-id in the stream-start event 2013-07-23 10:33:31 +02:00
Stefan Sauer
2991e1ed48 mfxdemus: update todo (ther eis a muxer) 2013-04-11 10:06:23 +02:00
David Schleef
65cb59912b mxfdemux: Use %03u for format in gst_pad_create_stream_id_printf() 2013-03-25 18:57:32 -07:00
Tim-Philipp Müller
dee6536421 mxfdemux: fix taglist leak
Don't leak demuxer tag list.
2013-02-11 20:24:14 +00:00
Tim-Philipp Müller
453438a9dd mxfdemux: fix push mode unit test failure
In the sink event handler we end up sending multiple EOS
events per pad. Don't return FALSE when sending the
second EOS on an already-EOS pad fails. Not sure if there
was a reason for sending a second EOS, so leaving the
code in there for now, but assume all went fine if there
are source pads, which is slightly less wrong than before.
This function needs work.
2013-02-11 19:59:20 +00:00
Marc Leeman
6aa399ec9f mxfdemux: deprecated GStaticRWLock -> GRWLock
https://bugzilla.gnome.org/show_bug.cgi?id=693322
2013-02-09 18:35:48 +00:00
Thijs Vermeir
35a5100bc3 mxf: use appropriate printf format for gsize 2012-12-18 16:50:37 +01:00
Tim-Philipp Müller
b0c30383ca mxfdemux: printf format fixes for debug messages 2012-12-12 18:50:09 +00:00
Sebastian Dröge
3478231790 mxfdemux: Don't allow any wrapping other than frame wrapping
Bad things will happen otherwise, like reading a complete,
multiple GB large video track into a single buffer.

Conflicts:
	gst/mxf/mxfdemux.c
2012-12-06 10:10:05 +01:00
Tim-Philipp Müller
9e1b75fda3 Fix FSF address
https://bugzilla.gnome.org/show_bug.cgi?id=687520
2012-11-04 00:09:59 +00:00
Michael Smith
0c8a7fa46f mxf: Port mxfdemux to 1.0
Also ports mxfmux to 1.0 to the extent that it compiles, but is 100% untested,
so remains disabled.

Conflicts:
	gst/mxf/mxfdemux.c
	gst/mxf/mxfmux.c
2012-10-26 13:48:06 -07:00
Tim-Philipp Müller
32ba17cd0f Use gst_element_class_set_static_metadata()
where possible. Avoids some string copies. Also re-indent
some stuff. Also some indent fixes here and there.
2012-10-17 17:46:34 +01:00
Mark Nauwelaerts
578861abea replace gst_element_class_set_details_simple with gst_element_class_set_metadata 2012-09-14 17:27:49 +02:00
Tim-Philipp Müller
489b102a43 gst_tag_list_free -> gst_tag_list_unref 2012-08-04 16:31:30 +01:00
Sebastian Dröge
9c7d7498bb gst: Implement segment-done event 2012-07-05 13:18:47 +02:00
Wim Taymans
dbed726057 update for task api change 2012-06-20 10:40:42 +02:00
Sebastian Dröge
860ccd414d Merge remote-tracking branch 'origin/0.10'
Conflicts:
	NEWS
	RELEASE
	common
	configure.ac
	docs/libs/gst-plugins-bad-libs-sections.txt
	docs/plugins/gst-plugins-bad-plugins.args
	docs/plugins/gst-plugins-bad-plugins.hierarchy
	docs/plugins/gst-plugins-bad-plugins.interfaces
	docs/plugins/inspect/plugin-adpcmdec.xml
	docs/plugins/inspect/plugin-adpcmenc.xml
	docs/plugins/inspect/plugin-assrender.xml
	docs/plugins/inspect/plugin-audiovisualizers.xml
	docs/plugins/inspect/plugin-autoconvert.xml
	docs/plugins/inspect/plugin-bayer.xml
	docs/plugins/inspect/plugin-bz2.xml
	docs/plugins/inspect/plugin-camerabin2.xml
	docs/plugins/inspect/plugin-celt.xml
	docs/plugins/inspect/plugin-dataurisrc.xml
	docs/plugins/inspect/plugin-debugutilsbad.xml
	docs/plugins/inspect/plugin-dtmf.xml
	docs/plugins/inspect/plugin-dtsdec.xml
	docs/plugins/inspect/plugin-dvbsuboverlay.xml
	docs/plugins/inspect/plugin-dvdspu.xml
	docs/plugins/inspect/plugin-faac.xml
	docs/plugins/inspect/plugin-faad.xml
	docs/plugins/inspect/plugin-gsm.xml
	docs/plugins/inspect/plugin-h264parse.xml
	docs/plugins/inspect/plugin-mms.xml
	docs/plugins/inspect/plugin-modplug.xml
	docs/plugins/inspect/plugin-mpeg2enc.xml
	docs/plugins/inspect/plugin-mpegdemux2.xml
	docs/plugins/inspect/plugin-mpegtsdemux.xml
	docs/plugins/inspect/plugin-mpegvideoparse.xml
	docs/plugins/inspect/plugin-mplex.xml
	docs/plugins/inspect/plugin-pcapparse.xml
	docs/plugins/inspect/plugin-rawparse.xml
	docs/plugins/inspect/plugin-rtpmux.xml
	docs/plugins/inspect/plugin-rtpvp8.xml
	docs/plugins/inspect/plugin-scaletempo.xml
	docs/plugins/inspect/plugin-schro.xml
	docs/plugins/inspect/plugin-sdp.xml
	docs/plugins/inspect/plugin-segmentclip.xml
	docs/plugins/inspect/plugin-shm.xml
	docs/plugins/inspect/plugin-videomaxrate.xml
	docs/plugins/inspect/plugin-videoparsersbad.xml
	docs/plugins/inspect/plugin-vp8.xml
	docs/plugins/inspect/plugin-y4mdec.xml
	ext/celt/gstceltdec.c
	ext/dts/gstdtsdec.c
	ext/modplug/gstmodplug.cc
	ext/opus/gstopusenc.c
	gst-libs/gst/video/gstbasevideocodec.c
	gst-libs/gst/video/gstbasevideocodec.h
	gst-libs/gst/video/gstbasevideodecoder.c
	gst-libs/gst/video/gstbasevideodecoder.h
	gst-libs/gst/video/gstbasevideoencoder.c
	gst-libs/gst/video/gstbasevideoencoder.h
	gst/adpcmdec/Makefile.am
	gst/audiovisualizers/gstbaseaudiovisualizer.c
	gst/h264parse/gsth264parse.c
	gst/mpegdemux/mpegtsparse.c
	gst/mpegtsdemux/mpegtsbase.c
	gst/mpegtsdemux/mpegtspacketizer.c
	gst/mpegtsdemux/mpegtsparse.c
	gst/mpegtsdemux/tsdemux.c
	gst/mpegtsdemux/tsdemux.h
	gst/mxf/mxfdemux.c
	gst/rawparse/gstaudioparse.c
	gst/videoparsers/gsth263parse.c
	gst/videoparsers/gsth264parse.c
	sys/d3dvideosink/d3dvideosink.c
	sys/decklink/gstdecklinksink.cpp
	sys/dvb/gstdvbsrc.c
	sys/shm/gstshmsrc.c
	sys/vdpau/h264/gstvdph264dec.c
	sys/vdpau/mpeg/gstvdpmpegdec.c
	tests/examples/opencv/gst_element_print_properties.c
	win32/common/config.h
2012-03-29 17:41:53 +02:00
Wim Taymans
bc38bc27b7 don't pass random pointers to pull_range 2012-03-16 21:47:39 +01:00
Sebastian Dröge
b292b19c59 mxfdemux: Fix 'comparison of unsigned expression >= 0 is always true' compiler warning 2012-03-06 14:46:03 +01:00
Wim Taymans
1119f6ee41 Merge branch 'master' into 0.11
Conflicts:
	ext/chromaprint/gstchromaprint.c
	ext/mpeg2enc/Makefile.am
	ext/voaacenc/gstvoaacenc.c
	gst/dvbsuboverlay/gstdvbsuboverlay.c
	gst/mpegtsdemux/mpegtsbase.c
	gst/sdp/gstsdpdemux.c
	gst/videoparsers/gsth264parse.c
	sys/d3dvideosink/d3dvideosink.c
	tests/examples/camerabin/gst-camera-perf.c
	tests/examples/camerabin/gst-camerabin-test.c
	tests/examples/camerabin2/gst-camerabin2-test.c
	tests/examples/mxf/mxfdemux-structure.c
	tests/examples/scaletempo/demo-main.c
2012-02-10 16:46:50 +01:00
Wim Taymans
de1f89bf07 GST_FLOW_WRONG_STATE -> GST_FLOW_FLUSHING 2012-02-08 16:37:13 +01:00
Vincent Penquerc'h
8147669971 plenty: fixup glib deprecations 2012-01-27 15:47:07 +00:00
Vincent Penquerc'h
7521b597f4 various: fix pad template ref leaks
https://bugzilla.gnome.org/show_bug.cgi?id=662664
2011-11-28 13:08:27 +00:00
Wim Taymans
01b9b5002f Merge branch 'master' into 0.11
Conflicts:
	common
	configure.ac
	gst/colorspace/colorspace.c
	gst/colorspace/colorspace.h
	gst/colorspace/gstcolorspace.c
2011-08-04 09:36:07 +02:00
Sebastian Dröge
6f2c2609ac mxfdemux: Properly return seeking errors if the requested position can't be found 2011-07-08 11:52:17 +02:00
Wim Taymans
2694086ace mxf: fix class struct
Fix class parent structure
Metadata is now GObject
2011-02-28 12:06:57 +01:00
Wim Taymans
2eb38991c6 Merge branch 'master' into 0.11
Conflicts:
	configure.ac
	win32/common/config.h
2011-02-28 12:06:12 +01:00
Thiago Santos
cbbdfee98a mxfdemux: Fix unitialized variable warning 2011-01-18 18:18:03 -03:00
Sebastian Dröge
dd8ae4e027 mxfdemux: Don't use GST_FLOW_IS_FATAL() 2010-09-21 12:26:35 +02:00
Benjamin Otte
f96e4f1581 Add -Wmissing-declarations -Wmissing-prototypes to configure flags
And fix all warnings
2010-03-21 21:39:18 +01:00
Sebastian Dröge
53128c5b4f mxf: Unconditionally use GLib 2.16 API 2009-08-31 08:14:11 +02:00
Sebastian Dröge
86af4924cc mxfdemux: Implement SEEKING query 2009-07-21 13:51:20 +02:00
Tim-Philipp Müller
3b99292629 mxfdemux: fix stray semicolons that mess up if statement 2009-06-18 21:17:24 +01:00
Sebastian Dröge
f5ba4904f7 mxfdemux: Use a RW lock to protect metadata and add all pads at once without a lock held
This makes it possible, among other things, to do a query in the
pad-added callback.

Fixes bug #582656.
2009-05-15 11:49:20 +02:00
Sebastian Dröge
0fa50e9d77 mxfdemux: Don't use invalid buffer offsets, instead assume offset == 0 2009-04-07 15:49:00 +02:00
Sebastian Dröge
f22494b6fe mxf: Use mxf_u{l,uid}_is_equal() and friends instead of memcmp() 2009-03-26 13:20:18 +01:00
Sebastian Dröge
c1c8b40d42 mxf: Differentiate between UL and UUID 2009-03-26 13:11:07 +01:00
Sebastian Dröge
ce01236e32 mxf: Source files and #include cleanup 2009-03-26 12:46:22 +01:00
Sebastian Dröge
6c126cbfdf mxfdemux: Error out directly if pushing a packet downstream failed 2009-03-21 10:19:48 +01:00
Jan Schmidt
cf4485133b mxfdemux: Fix build on GLib < 2.16 some more 2009-03-18 10:35:43 +00:00
Zaheer Merali
43117a8d86 mxf: Replace g_hash_table_get_values with code working with glib 2.6.
Fixes #575565
2009-03-16 17:33:45 +00:00
Sebastian Dröge
6b51d475b5 mxfdemux: Store and use the seqnum of the currently running segment everywhere 2009-03-06 17:46:37 +01:00
Sebastian Dröge
b7f617ad58 mxfdemux: Add read-only property to get the structural metadata 2009-02-21 17:45:09 +01:00
Sebastian Dröge
acc6a316ce mxfdemux: Post structural metadata tree as tag on the bus
This will later be used to keep the structural metadata when
remuxing an MXF file and can also be used in Pitivi for example
to know the file structure and to select what should be used
and played.
2009-02-21 17:38:49 +01:00
Sebastian Dröge
8172830d47 mxfdemux: Only store the main descriptor in source packages
For the tracks we still resolve the descriptors but the
source package only contains the descriptor it really references
instead of all subdescriptors of multiple descriptors.

This makes it easier later to serialize the structural metadata
again.
2009-02-21 16:16:32 +01:00
Sebastian Dröge
e11f0be161 mxfdemux: Set free'd memory to NULL to prevent a double free later in some cases 2009-02-21 16:16:32 +01:00
Sebastian Dröge
2a93712ea1 mxfdemux: Don't use generic metadata parsers for unknown metadata, the results are useless anyway 2009-02-21 16:16:32 +01:00
Sebastian Dröge
e8efc4d020 mxfdemux: Also include the picture/sound/data essence coding in the unknown caps 2009-02-12 11:00:07 +01:00
Sebastian Dröge
25e84ff223 mxfdemux: Update TODO, we should support the drop-frame property of timecode tracks 2009-02-12 11:00:07 +01:00
Sebastian Dröge
144466e2cd mxfdemux: Update TODO 2009-02-12 11:00:07 +01:00
Sebastian Dröge
08aadd31dc mxfdemux: After pulling the footer metadata reset essence track positions to 0 2009-02-09 18:14:14 +01:00
Sebastian Dröge
1229f0a149 mxfdemux: When trying to find an essence track position try to find position+1 too
By searching for the following position we will add the complete
generic container (i.e. all tracks) at the same position to the
index which should make finding positions for more than one track
a bit faster.
2009-02-09 17:55:05 +01:00
Sebastian Dröge
df0dd0b378 mxfdemux: For new essence tracks only set the position to 0 if it starts in the current partition 2009-02-09 17:48:38 +01:00
Sebastian Dröge
1ae9334355 mxfdemux: Check if the length of the src/essence track arrays are 0, not the array itself 2009-02-09 17:44:43 +01:00
Sebastian Dröge
32dc77f853 mxfdemux: Make sure that the srcpad and essence track arrays always exist 2009-02-09 17:25:35 +01:00
Sebastian Dröge
ae4b0fcb7c mxfdemux: Change some GST_ERRORs to something less critical 2009-02-09 16:40:44 +01:00
Sebastian Dröge
3f9400d968 mxfdemux: Only go into EOS and send segment-done after all tracks are finished 2009-02-09 16:40:44 +01:00
Sebastian Dröge
15c0db9c38 mxfdemux: Update TODO 2009-02-09 16:40:44 +01:00
Sebastian Dröge
dc408bb28b mxfdemux: Fix seeking to the end of file
When seeking to a position where no new offset can be
found or after the end of a track don't set the EOS flag
to TRUE as we don't (and can't) push EOS downstream then.
Instead set the current essence track position to then
end of the essence track and let the loop or chain function
set everything to EOS and push EOS downstream.

Also restart the pad's task if resolving metadata failed
(playback will continue as before) and return FALSE from
the seek if no new offset could be found.
2009-02-09 07:33:41 +01:00
Sebastian Dröge
f169201c24 mxfdemux: Fix last_stop calculation when seeking 2009-02-08 21:52:03 +01:00
Sebastian Dröge
2b566be795 mxfdemux: Correctly implement timestamping in all cases
When the material package track and source package track
edit rate are different the source package track edit
rate applies to the stored essence and the material track
edit rate only applies to the values in the track's sequence
and components.
2009-02-08 21:23:03 +01:00
Sebastian Dröge
3cc77d4dd6 mxfdemux: Correctly handle DURATION queries with a negative duration 2009-02-08 21:22:17 +01:00
Sebastian Dröge
81fb90748f mxfdemux: When changing to the component after the last component update the essence track position 2009-02-08 21:17:11 +01:00
Sebastian Dröge
c33678dab3 mxfdemux: Small cleanup and an additional check
Update TODO list, reduce size of a stack allocated string
and don't allow essence tracks with an invalid edit rate
2009-02-08 21:12:21 +01:00
Sebastian Dröge
8dc9f2ea4d mxfdemux: Add support for non-standard Avid MXF files containing DNxHD essence
Avid uses a custom essence container UL and custom essence element keys
that are fortunately compatible with the generic container essence
elements. Partially fixes bug #561922.
2009-02-07 10:38:26 +01:00
Sebastian Dröge
3c3dff6869 mxfdemux: Make essence track creation a bit more robust against broken files
Some files contain multiple tracks with the same track number but different
track id inside the same source package. This is invalid and we simply ignore
the second and following of such traacks now instead of overwriting the
information of the first one.
2009-02-07 10:13:54 +01:00
Sebastian Dröge
86088f92be mxfdemux: For tracks with no known mapping use dummy caps 2009-02-06 11:55:45 +01:00
Sebastian Dröge
6eef7983fb mxfdemux: Don't remove invalid new essence track twice from the GPtrArray 2009-02-06 11:21:00 +01:00
Sebastian Dröge
0d8099685d mxfdemux: Handle some more special cases when setting the position when seeking 2009-02-06 10:46:47 +01:00
Sebastian Dröge
bb11522f1d mxfdemux: Adjust last_stop to the last keyframe when seeking 2009-02-06 10:46:09 +01:00
Sebastian Dröge
22cb259f19 mxfdemux: Fix logic for finding the previous keyframe 2009-02-06 10:06:59 +01:00
Sebastian Dröge
c9f6a8b586 mxfdemux: Protect the metadata with a lock against concurrent access 2009-02-05 21:29:29 +01:00
Sebastian Dröge
ad2a64870c Update TODO 2009-02-04 11:12:14 +01:00
Sebastian Dröge
3e2a880c6b Post an UMID tag with the current package's UMID 2009-02-04 11:12:14 +01:00
Sebastian Dröge
c0557df34d Reset the current partition after seeking and NEWSEGMENT events 2009-02-04 11:12:13 +01:00
Sebastian Dröge
2ee7e7768d In push mode play all remaining parts of the file on EOS if there are any 2009-02-04 11:12:13 +01:00
Sebastian Dröge
cc5699340d Add property to set the maximum allowed time difference between tracks 2009-02-04 11:12:13 +01:00
Sebastian Dröge
fd72ef34f6 Always set the current package, not only when it was changed
This is necessary as the current package link will be set to NULL
when updated metadata is parsed and should be set here again.
2009-02-04 11:12:13 +01:00
Sebastian Dröge
a79c4e0314 Try to resolve all synchronization issues, not only the first 2009-02-04 11:12:13 +01:00
Sebastian Dröge
c4a0bc9887 Remove some checks that will always be TRUE 2009-02-04 11:12:13 +01:00
Sebastian Dröge
18e2ffa484 Cleanup playback package selection and notify about the current package 2009-02-02 17:48:47 +01:00
Sebastian Dröge
5277650a20 Update tags properly, especially on component switch 2009-02-02 16:23:30 +01:00
Sebastian Dröge
0c756199c0 Error out if no pads could be created 2009-02-02 16:05:14 +01:00
Sebastian Dröge
ee131d8af7 Resolve metadata and update tracks if necessary before seeking 2009-02-02 15:54:23 +01:00
Sebastian Dröge
5e57a0a052 Don't go after the last component of a track 2009-02-02 15:54:00 +01:00
Sebastian Dröge
92f372ba30 Return an error if updating an already existing pad fails 2009-02-02 15:53:32 +01:00
Sebastian Dröge
60f5c6f03f Fix seeking if the source clip duration is unknown 2009-02-02 07:44:12 +01:00
Sebastian Dröge
0ac0645de6 Add initial support for seeking in push mode 2009-02-01 17:00:33 +01:00
Sebastian Dröge
99298da3d5 Fix deadlocks when seeking in pull mode failed and check new offset before using it 2009-02-01 17:00:33 +01:00
Sebastian Dröge
43ade6cf71 Update offset in push mode and handle events properly 2009-02-01 17:00:23 +01:00
Sebastian Dröge
58a3220dde Implement initial seeking support (pull mode only) 2009-02-01 15:07:09 +01:00
Sebastian Dröge
6a09f5f4fe Don't use GLib 2.16 API unconditionally 2009-01-31 11:29:20 +01:00
Sebastian Dröge
93a2b5c9ea Check for EOS on all pads after adjusting the essence track durations 2009-01-31 11:02:26 +01:00
Sebastian Dröge
ebd8b8dbaf Fix duration calculation for essence tracks 2009-01-31 11:02:26 +01:00
Sebastian Dröge
f638caef57 Implement GstElement::query/get_query_types vfuncs 2009-01-31 11:02:26 +01:00