Commit graph

106 commits

Author SHA1 Message Date
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
Sebastian Dröge
061a96fa94 Reset all internal state in finalize 2009-01-31 11:02:26 +01:00
Sebastian Dröge
02769b4a4d Improve EOS detection and fix push mode for the last pushed in buffer 2009-01-31 11:02:26 +01:00
Sebastian Dröge
707136fe5d Keep track of essence track position when playing source packages
This ensures that the correct essence elements are played and
that we seek to the correct essence elements.
2009-01-31 11:02:26 +01:00
Sebastian Dröge
dfa0e43848 Compensate for timestamp/duration rounding errors 2009-01-31 11:02:25 +01:00
Sebastian Dröge
a930b36adc Improve EOS logic to check all pads when pulling a packet returned EOS
This makes sure that we finish all pads that are at EOS now instead of
just finishing one and returning to this point over and over again.
2009-01-31 11:02:25 +01:00
Sebastian Dröge
2dbe706330 Only push buffers for pads that are not more than 500ms before other pads 2009-01-31 11:02:25 +01:00
Sebastian Dröge
91ed2ef166 Improve EOS logic to only go into EOS after all tracks are finished 2009-01-31 11:02:25 +01:00
Sebastian Dröge
b783f38813 Update TODO list 2009-01-31 11:02:25 +01:00
Sebastian Dröge
20c92a4db3 Try to keep the timestamp difference between tracks lower than 500ms 2009-01-31 11:02:25 +01:00
Sebastian Dröge
742fc4e80d Fix playback of atom files 2009-01-31 11:02:25 +01:00
Sebastian Dröge
f404262adf Keep track of current playback position 2009-01-31 11:02:25 +01:00