Commit graph

266 commits

Author SHA1 Message Date
Edward Hervey
994a5190d6 video: More documentation 2012-02-21 16:53:37 +01:00
Edward Hervey
f9e6af08c7 basevideocodec: Document structures 2012-02-21 16:52:49 +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
Vincent Penquerc'h
8147669971 plenty: fixup glib deprecations 2012-01-27 15:47:07 +00:00
Sebastian Dröge
a2a4300241 Merge branch 'master' into 0.11
Conflicts:
	configure.ac
	ext/kate/gstkateenc.c
	gst/colorspace/colorspace.c
	gst/mpegvideoparse/mpegvideoparse.c
2012-01-25 13:22:43 +01:00
Mark Nauwelaerts
b5c5fb58a3 basevideoencoder: fix parameter sanity check 2012-01-23 14:13:38 +01:00
Wim Taymans
27ee60a27b port to new gthread API 2012-01-19 11:34:26 +01:00
Sebastian Dröge
a01a4ea2d3 Merge branch 'master' into 0.11
Conflicts:
	gst/mpegtsdemux/tsdemux.c
	gst/videoparsers/gsth264parse.c
	tests/check/elements/camerabin2.c
2012-01-10 15:50:37 +01:00
Oleksij Rempel (Alexey Fisher)
1d0507af89 basevideodecoder: add option to hande alt frame data
altref/invisible 'frame' do not describe some frame directly, so it can't be
displayed and timestamps should not be updated.

Fix bug: https://bugzilla.gnome.org/show_bug.cgi?id=655245
Signed-off-by: Oleksij Rempel (Alexey Fisher) <bug-track@fisher-privat.net>
2012-01-10 08:48:45 +01:00
Wim Taymans
b592f431e3 GST_FLOW_UNEXPECTED -> GST_FLOW_EOS 2012-01-03 15:26:54 +01:00
Edward Hervey
4917e16458 Merge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	tests/examples/camerabin2/Makefile.am
2011-12-30 11:49:27 +01:00
Edward Hervey
f70a623418 Merge remote-tracking branch 'origin/master' into 0.11-premerge
Conflicts:
	docs/libs/Makefile.am
	ext/kate/gstkatetiger.c
	ext/opus/gstopusdec.c
	ext/xvid/gstxvidenc.c
	gst-libs/gst/basecamerabinsrc/Makefile.am
	gst-libs/gst/basecamerabinsrc/gstbasecamerasrc.c
	gst-libs/gst/basecamerabinsrc/gstbasecamerasrc.h
	gst-libs/gst/video/gstbasevideocodec.c
	gst-libs/gst/video/gstbasevideocodec.h
	gst-libs/gst/video/gstbasevideodecoder.c
	gst-libs/gst/video/gstbasevideoencoder.c
	gst/asfmux/gstasfmux.c
	gst/audiovisualizers/gstwavescope.c
	gst/camerabin2/gstcamerabin2.c
	gst/debugutils/gstcompare.c
	gst/frei0r/gstfrei0rmixer.c
	gst/mpegpsmux/mpegpsmux.c
	gst/mpegtsmux/mpegtsmux.c
	gst/mxf/mxfmux.c
	gst/videomeasure/gstvideomeasure_ssim.c
	gst/videoparsers/gsth264parse.c
	gst/videoparsers/gstmpeg4videoparse.c
2011-12-30 11:41:17 +01:00
Thiago Santos
51f399686e basevideocodec: Reset should reset current caps
New caps will need to be negotiated when reset happens
(PAUSED to READY). Without reseting the internal
stored format, basevideoencoder/decoder wouldn't call the
configuration function when the same caps was negotiated
again as they would believe this was the same caps as before.

The issue is that _stop has been called when going to READY and
the elements would have reset their internal codec libs/state as
well. A new configuration should be done.
2011-12-30 00:02:46 -03:00
Sebastian Dröge
c869b21b17 basevideocodec: Don't use G_TYPE_REGISTER_BOXED() yet
This would require GLib 2.26.
2011-12-13 10:18:24 +01:00
Matej Knopp
4342eea637 basevideo: Make framestate a reference counted boxed object
...and also clear all existing frames when resetting the decoder or encoder.
2011-12-12 14:16:28 +01:00
Matej Knopp
70d13bbb32 basevideo: Make GstVideoFrame a reference counted boxed object
...and also clear all existing frames when resetting the decoder or encoder.
2011-12-12 14:12:36 +01:00
Sebastian Dröge
811a2ef7aa basevideoencoder: Only make the header buffer metadata writable, not the buffer 2011-12-08 11:51:36 +01:00
Sebastian Dröge
fd828c4ac7 basevideoencoder: Fix handling of force-keyunit events 2011-12-08 10:19:40 +01:00
Matej Knopp
27b677d179 basevideodecoder: Fix reference counting of codec_data 2011-12-05 09:41:34 +01:00
Sebastian Dröge
e98b17a8dc basevideoencoder: Pass the all-headers field of the force-key-unit event to the subclass 2011-11-29 12:18:20 +01:00
Sebastian Dröge
de6782cce4 basevideoencoder: Implement full support for the new force-key-unit event
Including support for the running-time and count fields.
2011-11-29 12:18:20 +01:00
Sebastian Dröge
97515ca050 basevideoencoder: Use new force-keyunit event API from gst-plugins-base 2011-11-29 12:18:20 +01:00
Sebastian Dröge
904eed3547 basevideoencoder: Adjusting padding is not required for -bad libraries 2011-11-29 12:18:19 +01:00
Sebastian Dröge
25002df594 basevideoencoder: Move some fields to the private part of the instance struct 2011-11-29 12:18:19 +01:00
Sebastian Dröge
b0000b9041 basevideoencoder: Make headers metadata writable before pushing downstream
The timestamp, duration, etc of the headers has to be changed.
2011-11-29 12:18:19 +01:00
Sebastian Dröge
4501412af3 basevideoencoder: Push the downstream force-keyframe event after the next keyframe
Even if the corresponding GstVideoFrame doesn't have the is_sync_point
flag set.
2011-11-29 12:18:19 +01:00
Sebastian Dröge
209ea84ef4 basevideoencoder: Don't push an upstream force-keyunit event downstream 2011-11-29 12:18:19 +01:00
Jonas Larsson
54cb226009 basevideoencoder: Add initial support for the all-headers field of the force-keyframe event
See bug #607742.
2011-11-29 12:18:19 +01:00
Tim-Philipp Müller
77361e2919 Merge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	ext/opus/gstopusdec.c
	ext/opus/gstopusparse.c
	gst-libs/gst/video/gstbasevideodecoder.c
	gst-libs/gst/video/gstbasevideodecoder.h
2011-11-26 15:37:25 +00:00
Tim-Philipp Müller
f78e9e1684 basevideodecoder: some more debug logging 2011-11-25 11:37:57 +00:00
Tim-Philipp Müller
a039499bf1 basevideodecoder: add API to drop a frame and post a QoS message on the bus
https://bugzilla.gnome.org/show_bug.cgi?id=640017

API: gst_base_video_decoder_drop_frame()
2011-11-25 11:37:57 +00:00
Matej Knopp
9d0bdcf6d7 Fix printf format compiler warnings on OS X / 64 bit
https://bugzilla.gnome.org/show_bug.cgi?id=662618
2011-11-23 23:43:15 +00:00
Wim Taymans
0a9387c43c Merge branch 'master' into 0.11
Conflicts:
	ext/opus/gstopusdec.c
	ext/opus/gstopusenc.c
	ext/opus/gstopusparse.c
	gst/audiovisualizers/gstwavescope.c
	gst/filter/Makefile.am
	gst/filter/gstfilter.c
	gst/filter/gstiir.c
	gst/playondemand/gstplayondemand.c
2011-11-23 11:08:39 +01:00
Tim-Philipp Müller
27556bd668 docs: fix comment in gst_base_video_decoder_get_max_decode_time() docs 2011-11-22 23:04:49 +00:00
Tim-Philipp Müller
c75922b96b basevideodecoder: fix weird event list handling
Get rid of weird code that copies a list manually, taking
ownership of the elements and then frees the old list. Instead,
just take over the old list entirely. (If the intent was to
reverse the list, one could use g_list_reverse() instead).

Then, push events in the list out from last to first (since they
were prepended as they came in) instead of just pushing out the
last in the list and leaking the others.
2011-11-22 20:04:13 +00:00
Sebastian Dröge
022cdfc5d3 basevideoencoder: Only call ::reset once in READY->PAUSED 2011-11-17 10:34:07 -08:00
Wim Taymans
940de5b195 add parent to pad functions 2011-11-17 15:53:42 +01:00
Wim Taymans
6d92ecac75 add parent to query function 2011-11-16 17:30:38 +01:00
Wim Taymans
85afc77dea _query_peer_*() -> _peer_query_*() 2011-11-15 17:55:50 +01:00
Wim Taymans
03713e5045 change getcaps to query 2011-11-15 16:34:13 +01:00
Thijs Vermeir
e40ca78278 fix documentation typo 2011-11-09 12:00:05 +01:00
Wim Taymans
0d0444e0fa remove query types 2011-11-09 11:55:14 +01:00
Wim Taymans
8e5579c594 video: port somewhat to 0.11
In 0.11 this should be done differently
2011-11-04 11:24:53 +01:00
Wim Taymans
f4c283a9cc Merge branch 'master' into 0.11 2011-11-04 11:01:42 +01:00
Olivier Crête
9f76573bda surfaceconverter: Remove duplicated forward declaration
It seems that some compilers don't like duplicated typedefs.
2011-11-03 17:17:10 -04:00
Wim Taymans
3f6e6053c6 videoenc: fix compiler warning 2011-11-03 16:57:29 +01:00
Wim Taymans
65d306e1f7 video: fix for metadata API change 2011-11-03 16:57:17 +01:00
Edward Hervey
c8561e7e1b libs/video: Finish porting to 0.11 2011-11-03 13:57:20 +01:00
Nicolas Dufresne
149c058209 video: Add GstVideoContext interface
This interface will be used to implement video context sharing. Those
context could be X11 Display, VaDisplay, etc.
2011-11-03 10:41:55 +01:00
Nicolas Dufresne
2808290592 video: Abstract surface API for HW accelerated codecs 2011-11-03 10:33:11 +01:00
Tim-Philipp Müller
93ed9cd687 Merge remote-tracking branch 'origin/master' into 0.11 2011-10-31 14:51:32 +00:00
Alessandro Decina
16ce440e7f basevideoencoder: handle failures in start() and stop() 2011-10-31 11:38:58 +01:00
Wim Taymans
4381a0a3a2 basevideodecoder: more porting 2011-10-05 12:53:07 +02:00
Wim Taymans
6b59788bb1 video: start porting some base classes 2011-10-04 14:27:32 +02:00
Vincent Penquerc'h
8a044de701 basevideoenc: do not try to calculate latency from an unknown framerate
It'll divide by zero, and latency is unknown for an unknown framerate.

Fixes an assert in the schroenc test.

https://bugzilla.gnome.org/show_bug.cgi?id=657419
2011-09-05 12:08:00 +02:00
Vincent Penquerc'h
f3cb4439cf basevideoencoder: fix element leak
and this concludes an hour of yelling at the bloody test failing,
only to track down the problem not being in the test.

https://bugzilla.gnome.org/show_bug.cgi?id=657368
2011-08-26 10:25:46 +02:00
Sebastian Dröge
8c743fbc0f basevideo: Fix locking, especially if both pads have different streaming threads 2011-08-18 10:23:32 +02:00
Sebastian Dröge
a081501a90 basevideo: Don't call g_type_class_peek_parent() in class_init
This is already done by the GObject boilerplate macro
2011-08-18 10:15:20 +02:00
Sebastian Dröge
d576e23aa4 basevideoencoder: Proxy the width/height/framerate/PAR constraints of downstream caps to upstream
This allows to specify constraints on the compressed downstream caps
by muxers or capsfilters, which will then be forwarded to upstream
and allows video converters to fulfill the constraints.

Code based on Mark Nauwelaerts audio encoder base class.
2011-08-12 12:25:03 +02:00
Sebastian Dröge
92c3aaa6e5 basevideoencoder: Remove old ::getcaps() comment 2011-08-12 12:13:45 +02:00
Sebastian Dröge
4a76d3a978 basevideoencoder: Remove ::get_caps() vfunc
Subclasses can set the caps more efficiently and this only
caused additional indirections.
2011-08-12 12:06:23 +02:00
Sebastian Dröge
6e4e4e107c basevideodecoder: Use the cached video frame size instead of recalculating it 2011-08-09 10:43:55 +02:00
Sebastian Dröge
ce0655c275 basevideoencoder: Make access to the list of frames threadsafe 2011-08-03 09:41:20 +02:00
Sebastian Dröge
976d372f9b basevideoencoder: Allow finishing of frames with no src_buffer to drop/free the GstVideoFrame 2011-07-21 08:09:11 +02:00
Sebastian Dröge
e5be8aa8ff basevideoencoder: Only get caps from the subclass if they were not set yet by the subclass 2011-07-21 08:09:11 +02:00
Sebastian Dröge
b2525a3044 basevideoencoder: Delay sending of serialized sink events until finish_frame() 2011-07-21 08:09:11 +02:00
Sebastian Dröge
f011e59943 basevideoencoder: Add ::reset vfunc and handle ::reset/::finish the same way as in the decoder 2011-07-21 08:09:10 +02:00
Sebastian Dröge
2dbd24ca84 basevideoencoder: Use a temporary GstVideoState until the subclass accepted the caps
Also store the caps in the GstVideoState and assume a PAR of 1/1 instead
of 0/1 if no PAR is specified in the caps.
2011-07-19 12:52:31 +02:00
Sebastian Dröge
83c4e8814e basevideodecoder: First inform subclass about resetting before resetting/freeing all internal state
The subclass might want to access the old state.
2011-07-11 12:59:07 +02:00
Sebastian Dröge
a59246c1d1 basevideodecoder: Track present position on discont before resetting it 2011-07-11 12:36:42 +02:00
Sebastian Dröge
08823f80d6 basevideodecoder: Also protect the list of pending frames from concurrent access when pushing all pendings events 2011-07-11 11:52:48 +02:00
Sebastian Dröge
81f4c9e8bf basevideocodec: Protect access to the list of pending frames with the object lock
This is required if ::finish_frame() and all buffer output happens
on a different thread than the sinkpad streaming thread.
2011-07-11 11:28:40 +02:00
Sebastian Dröge
caed64c720 basevideodecoder: Set the correct lists to NULL after freeing 2011-07-11 09:35:25 +02:00
Sebastian Dröge
584859488b basevideodecoder: Work with a copy of the GstVideoState in setcaps until the caps are accepted
Also fix a refcount problem with the codec_data.
2011-07-11 09:19:28 +02:00
Sebastian Dröge
e61d3d1a0c basevideo: Move the utils from the codec header to its own header 2011-07-09 11:40:17 +02:00
Sebastian Dröge
5f55a74571 basevideo: Use GSlice for allocating GstVideoFrame and don't duplicate code in the decoder base class 2011-07-09 11:09:12 +02:00
Sebastian Dröge
f341386b64 basevideodecoder: Don't reorder serialized src events
And allow to drop EOS by the subclass if ::finish returns
DROPPED. This requires that the subclass sends EOS manually later.

Fixes bug #653544.
2011-07-09 11:04:18 +02:00
Sebastian Dröge
525875727a basevideo: Add the caps to the GstVideoState and clean up caps/codec_data properly
Having access to the caps in ::set_format can be useful if
non-standard caps fields like the h264 alignment must be accessed.
2011-07-09 11:02:01 +02:00
Sebastian Dröge
fc93c66d3b basevideo: Add destroy notify for the coder_hook to prevent memory leaks
Fixes bug #654293.
2011-07-09 11:00:28 +02:00
David Schleef
929603d56c basevideodecoder: Better handling of invalid par 2011-06-04 14:09:29 -07:00
Debarshi Ray
03bb5dc8ba Remove unused but set variables
This is needed to satisfy the new -Wunused-but-set-variable added in
GCC 4.6: http://gcc.gnu.org/gcc-4.6/changes.html
2011-05-30 22:52:03 +10:00
Mark Nauwelaerts
9b6e819247 basevideodecoder: handle missing framerate when calculating timestamp 2011-05-16 20:32:24 +02:00
Mark Nauwelaerts
cfe85ad780 basevideodecoder: debug code style fixes 2011-05-16 20:32:24 +02:00
Mark Nauwelaerts
2f6af91f09 basevideodecoder: tune parsing sink caps into video state
... to provide subclass with more information w.r.t. original caps.
2011-05-16 20:32:24 +02:00
Mark Nauwelaerts
380a443be4 basevideodecoder: video state reference to codec_data is not refcounted
... but rather implicitly valid as long as sink caps are not modified.
2011-05-16 20:32:24 +02:00
Mark Nauwelaerts
a1825bd5e2 basevideodecoder: improve glitch resilience
Provide a replacement for GST_ELEMENT_ERROR to avoid aborting at the first
atom out of place, while on the other hand not failing indefinitely.
2011-05-16 20:32:24 +02:00
Mark Nauwelaerts
1588ed321c basevideodecoder: reverse playback support 2011-05-16 20:32:23 +02:00
Mark Nauwelaerts
1d99e8eafa basevideodecoder: use basevideocodec discont field 2011-05-16 20:32:23 +02:00
Mark Nauwelaerts
1b151caf11 basevideodecoder: really and only set src pad caps whenever requested
... since subclass is expected to be wise enough to know when to do so.
2011-05-16 20:32:23 +02:00
Mark Nauwelaerts
550237347b basevideodecoder: add some sanity enforcing 2011-05-16 20:32:23 +02:00
Mark Nauwelaerts
f72658435b basevideodecoder: add documentation
... and remove some more stray unused code and methods.
2011-05-16 20:32:23 +02:00
Mark Nauwelaerts
04f4a583dd basevideocodec: fully free video frame 2011-05-16 20:32:23 +02:00
Mark Nauwelaerts
a085acb586 basevideodecoder: streamline discont, flush and reset handling
... which is not to say there is no room for further tweaking ...
2011-05-16 20:32:23 +02:00
Mark Nauwelaerts
444b169188 basevideodecoder: add some header commentary 2011-05-16 20:32:22 +02:00
Mark Nauwelaerts
cfc65b14b1 basevideodecoder: remove (almost) unused fields
... and also some more unused code.
2011-05-16 20:32:22 +02:00
Mark Nauwelaerts
f591361d2f basevideodecoder: invoke subclass start method at state change and use set_format
While this changes API slightly (e.g. actually uses set_format now), which is OK
for unstable API, it has following merits:
* symmetric w.r.t. stop at state change
* in line with other base class practice
* otherwise no subclass method at state change (global activation time)
Moreover, subclassese are either unaffected or trivially adjusted accordingly.
2011-05-16 20:32:22 +02:00
Mark Nauwelaerts
04a34b4ab7 basevideodecoder: fixup tweak 2011-05-16 20:32:22 +02:00
Mark Nauwelaerts
39fb2fa74a basevideodecoder: add and tweak debug statements 2011-05-16 20:32:22 +02:00
Mark Nauwelaerts
fc705cf8fd basevideodecoder: arrange for limited legacy seeking support
In particular, tweak src query and event handling to provide for
byte <-> time conversion.
2011-05-16 20:32:22 +02:00
Mark Nauwelaerts
3bd16a48b4 basevideo: cater for format conversion 2011-05-16 20:32:22 +02:00