Commit graph

11599 commits

Author SHA1 Message Date
Tim-Philipp Müller 3a1b53c117 tests: update unit test for vorbistag change to GST_TAG_DATE_TIME
https://bugzilla.gnome.org/show_bug.cgi?id=677712
2012-06-27 23:50:07 +01:00
Oleksij Rempel bc94374a8f vorbistag: store DATE tag in GST_TAG_DATE_TIME instead of GST_TAG_DATE
The DATE field may contain dates, partial dates, or dates with
time. Store the result in GST_TAG_DATE_TIME, so we can express
properly which fields are present or not, and can store the
time if there is one, and can serialise and deserialise the
tag without loss of information and without making up
information that's not there.

Instead of using short YYYY-MM-DD form we will store
long YYYY-MM-DDTHH:MM:SS+TS date and time.

According to this documentation we can do it:
http://wiki.xiph.org/VorbisComment#Date_and_time

This datetime format is needed by apps where more information
is needed. For example voice, meeting recording, etc.

https://bugzilla.gnome.org/show_bug.cgi?id=677712
2012-06-27 23:49:02 +01:00
Wim Taymans 044afd72eb videotestsrc: set DTS and PTS, sync on DTS 2012-06-27 17:18:35 +02:00
Wim Taymans 136a3fd37f videoencoder: make PTS and DTS handling more explicit 2012-06-27 16:56:22 +02:00
Wim Taymans c68683c15f videodecoder: avoid crash when getting duration
Check that we have a valid output_state before attempting to use it to calculate
the duration of a buffer. It is possible that we don't have a state yet, for
example when we are dropping the first buffers.
2012-06-27 16:56:22 +02:00
Sebastian Dröge 43e94eea98 videodecoder: Use GSlice to allocate the timestamp tracking structures 2012-06-27 16:42:10 +02:00
Wim Taymans 3327d13f1b videodecoder: small cleanups 2012-06-27 14:13:02 +02:00
Wim Taymans 9f591a0bd1 videodecoder: improve PTS and DTS handling
Also keep track of the DTS and use it to set PTS on keyframes.
Set DTS on outgoing buffers.
2012-06-27 13:48:58 +02:00
Tim-Philipp Müller b27c649a48 audiocdsrc: post TOC message on the bus on start-up
First attempt at implement the various GstToc API
bits in GstAudioCdSrc.

https://bugzilla.gnome.org/show_bug.cgi?id=668996
2012-06-26 19:53:35 +01:00
Wim Taymans f28e2e7bea fix interlace-mode 2012-06-26 17:15:49 +02:00
Jan Schmidt 1718697ae2 videodecoder: Don't leak a ref to frames in reverse playback 2012-06-26 22:26:57 +10:00
Wim Taymans 1ed29bdb90 video-frame: handle map errors
Error out when something failed
2012-06-26 11:12:00 +02:00
Wim Taymans 59e99e827e videometa: improve debug error reporting 2012-06-26 11:12:00 +02:00
Sebastian Dröge 6e4d7e466d playsink: The default signal handler should be the one that triggers pad blocks and reconfiguration
Conflicts:

	gst/playback/gstplaysink.c
2012-06-26 11:05:42 +02:00
Sebastian Dröge 78b2fc762b playsink: Make sure to always block all pads before reconfiguring the pipeline
Fixes bug #678762.

Conflicts:

	gst/playback/gstplaysink.c
2012-06-26 10:59:59 +02:00
Sebastian Dröge 7ab77c6b32 playsink: Prevent NULL pointer dereference in last change 2012-06-25 16:08:47 +02:00
Sebastian Dröge a038e5e583 playsink: Unlink pads when switching between enabling/disabling the deinterlace chain
See bug #678762.
2012-06-25 16:02:23 +02:00
Sebastian Dröge 67bbfdde4e playsink: Connect to the value-changed signal of the child colorbalance element and proxy it 2012-06-25 15:23:19 +02:00
Sebastian Dröge c290fabf36 playsink: Only remove the xoverlay/colorbalance elements when necessary
They are not added again by every code path, e.g. when switching
only the deinterlace flag and are missing then.

Fixes bug #678763.

Conflicts:

	gst/playback/gstplaysink.c
2012-06-25 15:22:55 +02:00
Sreerenj Balachandran a44058c12e videoutils: Use g_list_free_full instead of g_list_foreach and g_list_free 2012-06-25 11:39:08 +02:00
Tim-Philipp Müller a9d12f7bae pbutils: update discoverer for GstToc API changes 2012-06-24 22:47:05 +01:00
Tim-Philipp Müller a821d428bb audio: make sure g-i doesn't parse orc-generated gstaudiopack.h file 2012-06-24 00:28:40 +01:00
Tim-Philipp Müller 100fe89aa2 tags: use gst_tag_register_static() 2012-06-23 15:44:16 +01:00
Tim-Philipp Müller 95442368bd smartencoder: use gst_quark_from_static_string() 2012-06-23 14:55:51 +01:00
Tim-Philipp Müller 43e4b44bb1 uridecodebin, tests: update for gst_element_make_from_uri() changes 2012-06-23 14:55:31 +01:00
Sebastian Dröge df63268e5a appsrc: Actually store any URI that is set and return this when asked for the URI 2012-06-21 11:16:36 +01:00
Wim Taymans fcc1e1f457 update for bus api changes 2012-06-20 12:34:01 +02:00
Andreas Frisch 92c04f12cc fix compiler warning 2012-06-20 12:34:01 +02:00
Arnaud Vrac b1ff7f95ad playsinkconvertbin: Fix conversion bin when sink has both raw and non-raw caps
Fixes bug #678403.
2012-06-20 11:12:26 +01:00
Wim Taymans 21e9f64ab2 update for task api change 2012-06-20 10:33:24 +02:00
Jan Schmidt b7759a4d42 videodecoder: Don't give out bogus frame deadlines
Make sure the frame deadline was set before calculating the
max_decode_time. Fixes problems with ffmpeg skipping frames when
it doesn't need to, when the input doesn't have full timestamping
(divx in avi)
2012-06-20 03:45:14 +10:00
Jan Schmidt 9a79a145b1 videodecoder: Remove gst_video_decoder_get_timestamp function
Interpolating the timestamps from the picture numbers
does more harm than good, getting it wrong in a lot of
cases (especially reverse playback). Removing it in favour
of simply incrementing the timestamps until there's
something better
2012-06-20 03:40:29 +10:00
Jan Schmidt 45cf9f651b videodecoder: EOS handling for reverse mode.
Handle EOS correctly in reverse mode by treating it
as a final discont and flushing out whatever we can.
2012-06-20 01:43:36 +10:00
Jan Schmidt 6718f0cfff videodecoder: misc improvements/changes
Use g_list_free_full instead of walking lists twice when freeing
them.

Remove pointless clause in gst_video_decoder_chain that doesn't
actually have any effect.

Other changes to make the code slightly more like the 0.11
version.
2012-06-20 01:43:31 +10:00
Jan Schmidt ffd0f28460 videodecoder: Improve timestamp handling.
Fix problems with timestamp calculations when the incoming
buffers have sparse timestamps (as for theora) and reverse
playback. Fixes #675773
2012-06-20 01:43:26 +10:00
Jan Schmidt 1935cf0022 videodecoder: Re-work reverse playback handling
Move processing of the gather list into the flush_parse function.

Add a last ditch attempt to apply timestamps to outgoing buffers
when walking backwards through decoded frames. Requires that each
gathered region has at least one timestamp.

Make sure to remove decoded packets from the decode list when
they are sent - otherwise the list just grows on each cycle, with
more and more frames being decoded and then clipped away.

Break out of the processing loop early on a bad flow return to make
seeking more responsive.

Use the gst_video_decoder_clip_and_push_buf function in reverse
mode, instead of pushing all buffers arbitrarily.

A couple of small efficiency gains in the list handling, by moving
list elements directly and not reallocating, and by reversing
and concatenating the gather list instead of moving it one node
at a time.

Rename the gst_video_decoder_do_finish_frame function to
gst_video_decoder_release_frame.
2012-06-20 01:34:44 +10:00
Jan Schmidt 5dc7d4ea3a videodecoder: Split gst_video_decoder_finish_frame
Split the 2nd half of the gst_video_decoder_finish_frame function
out to gst_video_decoder_clip_and_push_buf.
2012-06-20 01:32:05 +10:00
Jan Schmidt c977aa2c01 videodecoder: Rename queued list to output_queued for clarity.
Use g_list_free_full instead of g_list_foreach + g_list_free
2012-06-20 01:32:05 +10:00
Jan Schmidt 487e5348e0 videodecoder: Small cleanups
Remove extra deref using a local var, and add/change some doc comments
and debug statements
2012-06-20 01:32:05 +10:00
Jan Schmidt 2d770ac406 videodecoder: Rename gst_video_decoder_have_frame_2 function
Rename gst_video_decoder_have_frame_2 to
gst_video_decoder_decode_frame and pass the frame to process
directly, rather than using the current_frame pointer as a holding
pen.

Move the negative rate handling out of the function to where it
is needed, and remove the process flag.
2012-06-20 01:32:05 +10:00
Jan Schmidt ca09aaabc7 videodecoder: Extend docs and add comments
Update the documentation block for the base class, and add a comment
block about the reverse-playback logic and implementation.
2012-06-20 01:32:03 +10:00
Sebastian Dröge bdb4f7c101 videofilter: Don't duplicate code to create a new buffer pool if none is in the query 2012-06-19 13:57:00 +01:00
Sebastian Dröge cb6b835d11 videoencoder: Ensure buffers don't disappear early
The frames are the owners of the buffers
2012-06-19 09:34:49 +01:00
Edward Hervey 4b946e8cee videodecoder: Ensure buffers don't disappear early
The frames are the owners of the buffers. In cases where a decoder
would keep around reference frames, we need to ensure they don't
disappear early.
To handle this, we pass downstream a complete sub-buffer of the output
buffer, ensuring that the buffer will only be released when downstream
is done with it *AND* the frame is no longer used.

Conflicts:

	gst-libs/gst/video/gstvideodecoder.c
2012-06-19 09:33:03 +01:00
Sebastian Dröge 4119246081 videoencoder,videodecoder: Return new references from _get_frame() 2012-06-19 09:26:36 +01:00
Wim Taymans f35f0b6548 sys: fix some bufferpool leaks 2012-06-18 12:17:25 +02:00
Wim Taymans c003efcc63 audiobasesink: fix for basesink API change 2012-06-18 11:40:36 +02:00
Jan Schmidt 30c9bb709b theoradec: Remove use of NEED_DATA
Remove the confusing internal-only use of
the GST_VIDEO_DECODER_FLOW_NEED_DATA return code.
2012-06-17 12:42:08 +10:00
Wim Taymans f3fdfd9ec8 x11: handle case where no bufferpool is suggested 2012-06-15 16:45:16 +02:00
Sebastian Dröge 1e635f682f videodecoder: Add GstVideoDecoder::propose_allocation() vfunc 2012-06-15 16:38:16 +02:00