Commit graph

513 commits

Author SHA1 Message Date
Wim Taymans
ecdfb96f17 video: move methods into separate files
Move different video functionalities into different files
2012-06-05 12:47:22 +02:00
Wim Taymans
887d442da4 video: don't add unknown colorimetry 2012-06-04 18:24:03 +02:00
Wim Taymans
d923f9fe70 videodecoder: only copy known colorimetry values
Avoid overriding the default colorimetry values.
2012-06-04 18:17:42 +02:00
Wim Taymans
831519364c video: add unknown colorimetry parameters as well.. 2012-06-04 18:08:11 +02:00
Wim Taymans
379eb410c8 video: use unknown colorimetry for unknown formats
Use the default RGB colorimetry into only on RGB formats and use an unknown set
of defaults for the unknown format.
2012-06-04 18:00:42 +02:00
Wim Taymans
24f0ac588f video: (de)serialize colorimetry on caps 2012-06-04 16:17:32 +02:00
Wim Taymans
8f88f015f0 video: don't add empty colorimetry to caps
Don't use extra default colorimetry entries in the table to construct an output
colorimetry shortcut because they don't have a name.
2012-06-04 16:17:32 +02:00
Wim Taymans
c76f44bebb video: fix default colorspace settings
HD content is defined as height > 576
2012-06-04 16:17:32 +02:00
Wim Taymans
b718dc26b5 video: add generic film primaries 2012-06-04 16:17:31 +02:00
Sebastian Dröge
86b36c3463 videoencoder: Don't unref frame twice if not in the list 2012-06-04 10:46:13 +02:00
Matej Knopp
e316ff5435 videodecoder: Do not unref frame if not in the list 2012-06-04 10:43:56 +02:00
Wim Taymans
1c9f9654bb video: set default colorimetry info
Set default colorimetry info when not otherwise specified in caps.
2012-06-01 12:09:44 +02:00
Tim-Philipp Müller
38df7e2d27 video: update disted orc backup files for recent changes 2012-06-01 10:02:02 +01:00
Wim Taymans
7f134c1441 video: fix paletted format
RGB8_PALETTED -> RGB8P
Fix the definition of paletted formats, store the palette in the second
plane.
Make sure we copy the palette correctly in gst_video_frame_copy()
Don't do alignment on the palette in videopool
2012-05-31 13:44:43 +02:00
Sebastian Dröge
8f92acdc86 video: And fix the build of the ORC sources 2012-05-30 13:07:57 +02:00
Sebastian Dröge
b354613556 video: Fix generation of orc sources 2012-05-30 13:06:11 +02:00
Wim Taymans
cdf55c7c7a video-blend: prepare for 0.11 porting
Remove obsolete code.
Remove the BlendInfo structure, we can do this better with GstVideoFrame
Use GstVideoFrame in the API
Prefix functions with gst_
2012-05-30 09:25:12 +02:00
Wim Taymans
a45bca53a1 video: add support for premultiplied alpha 2012-05-30 09:21:46 +02:00
Wim Taymans
69787d6f0c video: move enum difinition
c++ doesn't seem to like the typedef
2012-05-29 17:52:06 +02:00
Wim Taymans
fda981045a video: Remove duplicate formats
Remove Y800 and Y16 wich are the same as GRAY8 and GRAY16_LE
Add const to the GstVideoFormatInfo when used in argument
Add GRAY8 and GRAY16 pack/unpack functions
2012-05-29 17:52:06 +02:00
Wim Taymans
2d078e42a8 video: rename orc function names 2012-05-29 17:52:06 +02:00
Wim Taymans
abe4b0b235 video: fill in the pack/unpack functions
Add support for supporting chroma subsampling correctly in the pack
function.
Fill in the pack and unpack functions for most formats.
Add some missing pack/unpack functions to the orc file.
2012-05-29 17:52:06 +02:00
Wim Taymans
67587918f3 video-blend: remove unused defines 2012-05-29 17:52:06 +02:00
Wim Taymans
2ba36a69bf video: add flags for the pack/unpack functions
Add a flag argument to the pack and unpack function so that we can expand it
later when needed. We could for example prefer a High Quality pack/unpack
operation later.
2012-05-29 09:53:15 +02:00
Wim Taymans
3925b20e25 video: add padding 2012-05-29 09:52:40 +02:00
Wim Taymans
467f8d360a video: fix v216 format description
Fix the offsets of v216 video
Add the complex flag to some formats
2012-05-28 16:14:30 +02:00
Wim Taymans
413cd6dc2e videopool: take pixel stride into account
When we need to add borders, take the pixel stride into account to move to the
right horizintal offset.
2012-05-28 12:59:40 +02:00
Wim Taymans
59d8d73aa2 video: add 10 bits I420 format
Add 10 bits I420 format definitions
Move encoded format as second entry in the array so that it doesn't end up in a
weird place when we add formats.

See https://bugzilla.gnome.org/show_bug.cgi?id=665034
2012-05-25 17:01:19 +02:00
Raimo Järvi
d42a197c04 video: Fix printf format warnings on mingw-w64
https://bugzilla.gnome.org/show_bug.cgi?id=676442
2012-05-24 10:57:21 +02:00
Sreerenj Balachandran
38a2fe673e videodecoder: improve doc 2012-05-23 10:16:25 +02:00
Sreerenj Balachandran
a19ae16b5a videoutils: improve doc 2012-05-23 10:16:25 +02:00
Sebastian Dröge
ed6d46e156 video: Rename gst_video_codec_frame_set_hook() to gst_video_codec_frame_set_user_data()
And also add a getter and allow to set NULL user_data but still call
the passed destroy notify.
2012-05-16 14:06:12 +02:00
Tim-Philipp Müller
c1bc70300d docs: fix up video decoder/encoder docs a bit
Makes gtk-doc happy.
2012-05-16 12:40:07 +01:00
Nicolas Dufresne
c2f52f8154 video: Key unit event properties are optional
https://bugzilla.gnome.org/show_bug.cgi?id=675758
2012-05-10 16:08:58 +02:00
Sebastian Rasmussen
b7b123964b gst-libs: make pkg-config get path to pkg-config dirs from configure
When --with-pkg-config-path is supplied to configure this path is now
explicitly propagated to pkg-config.

https://bugzilla.gnome.org/show_bug.cgi?id=673377
2012-05-05 23:26:20 +01:00
Sebastian Dröge
ecd061e48c videodecoder: Also change gst_video_decoder_get_oldest_frame() to return a new reference 2012-05-01 16:59:10 +02:00
Edward Hervey
4d7cd2e638 videoencoder: _get_oldest_frame: return a reference 2012-05-01 16:59:06 +02:00
Edward Hervey
67a4c0c7b2 videoencoder: Add a reference to frame passed to subclass
We have one reference owned by the internal frame list and one reference
passed to the subclass.
2012-05-01 16:59:00 +02:00
Edward Hervey
8217575af1 videodecoder: Add a reference to frame passed to subclass
We have one reference owned by the internal frame list and one reference
passed to the subclass.
2012-05-01 16:58:55 +02:00
Wim Taymans
34bfcb2af9 videodecoder: don't leak events
When need to push out all the previously received events, concatenate all the
events from the previous frames (instead of leaking the old ones)
Improve debugging a little

Conflicts:

	gst-libs/gst/video/gstvideodecoder.c
2012-05-01 16:58:48 +02:00
Wim Taymans
8fde7850c0 videodecoder: don't leak frames
Frames receive a refcount when added to the frames list so release that refcount
in gst_video_decoder_do_finish_frame(). Also release the ref on the frame
because gst_video_decoder_do_finish_frame() takes ownership of the passed frame.
2012-05-01 15:03:40 +02:00
Wim Taymans
e8c7f57a0a videodecoder: avoid double unlock 2012-05-01 15:03:21 +02:00
Sebastian Dröge
52dfa13522 videofilter: Use a GstVideoBufferPool if none was provided 2012-05-01 13:33:20 +02:00
Sebastian Dröge
cb04d8e003 videodecoder: Do bufferpool configuration inside the default decide_allocation() implementation
This allows subclasses to override it, as is necessary for e.g. the
video-crop meta. It is now necessary that after decide_allocation()
there is always a allocator and a configured buffer pool inside the
query.
2012-05-01 13:33:20 +02:00
Sebastian Dröge
f9facc6a4a video: Remove interlaced handling from the video base classes
This must be handled by the subclasses in 0.11 because interlacing
is much more complex now and can't be handled in a generic way.
2012-04-25 18:21:03 +02:00
Wim Taymans
ae42b25c07 video: improve docs and design of multiview interlaced
Put fields of interlaced frames after eachother.
Improve the docs of the video interlaced enums.
2012-04-25 15:27:04 +02:00
Wim Taymans
07d34f576a video: add fields interlacing enum
Add an enum and docs for the fields interlace mode.
Improve the video caps docs for the fields interlace mode.
2012-04-25 14:57:40 +02:00
Wim Taymans
777d044357 videodec: remove some FIXMEs 2012-04-25 14:57:40 +02:00
Sebastian Dröge
bcef106f73 video: Fix latency query handling if the element's own max_latency is GST_CLOCK_TIME_NONE 2012-04-25 13:53:29 +02:00
Sebastian Dröge
71900c4342 video: Only use the interlacing buffer flags if the caps specify interlaced video 2012-04-25 13:46:00 +02:00
Sebastian Dröge
47e169b0b5 videoencoder: Proxy the interlaced buffer flags to the GstVideoCodecFrame 2012-04-25 13:44:30 +02:00
Sebastian Dröge
76f47979c1 videoencoder: Don't propose video-meta by default 2012-04-25 13:19:11 +02:00
Sebastian Dröge
7c165187af videodecoder: Change configure_buffer_pool() vfunc to decide_allocation() with same semantics as in basetransform 2012-04-25 13:19:11 +02:00
Sebastian Dröge
3de8d58c4e videoencoder: Add support for subclasses to propose allocation parameters 2012-04-24 22:42:59 +02:00
Sebastian Dröge
1483997207 videodecoder: Add support for subclasses to configure the buffer pool 2012-04-24 22:35:29 +02:00
Sebastian Dröge
a8c40a658c video: Some porting bugfixes 2012-04-24 21:32:08 +02:00
Sebastian Dröge
b945c01549 videodecoder: Add minimal support for buffer pools 2012-04-24 20:04:48 +02:00
Sebastian Dröge
63563e3d5e videodecoder: Require to chain up to the parent classes event functions 2012-04-24 19:51:30 +02:00
Sebastian Dröge
13b88908ce videoencoder: Require to chain up to the parent's sink event functions 2012-04-24 19:47:22 +02:00
Sebastian Dröge
f7bc9cc5ba video: Initial port of video base classes and related things to 0.11 2012-04-24 19:35:24 +02:00
Sebastian Dröge
3ab5be1cff video: Remove custom marshallers 2012-04-24 18:16:27 +02:00
Sebastian Dröge
a0e3a9e32d Merge remote-tracking branch 'origin/0.10'
Video base classes and theora plugin still needs to be ported again

Conflicts:
	docs/libs/gst-plugins-base-libs-docs.sgml
	docs/libs/gst-plugins-base-libs-sections.txt
	docs/libs/gst-plugins-base-libs.types
	ext/theora/gsttheoradec.c
	ext/theora/gsttheoradec.h
	ext/theora/gsttheoraenc.c
	ext/theora/gsttheoraenc.h
	gst-libs/gst/video/Makefile.am
	gst-libs/gst/video/video.c
	gst-libs/gst/video/video.h
	gst/playback/gsturidecodebin.c
	tests/check/libs/video.c
	tests/check/pipelines/theoraenc.c
	win32/common/libgstvideo.def
2012-04-24 18:14:31 +02:00
Edward Hervey
4f1e7eec40 video: Fix gst_video_info_to_caps
And use the 0.10 caps style
2012-04-24 17:03:40 +02:00
Edward Hervey
a744c98985 videodecoder: Detect buffers inputted with DTS
Some container formats (like AVI) set DTS on the buffers instead of
PTS.
We detect this by:
* detecting if input timestamps are non-increasing
* detecting if the order the frames come out is the same as the order
  they were inputted (meaning the implementation is reordering frames).

If the decoder reorders frames, but input buffer timestamps were not
reordered, that means the buffers has DTS and not PTS as their timestamp.
If this is the case, we use set the PTS of the outgoing frames in the
same order as they were given to the decoder.

This fixes the issue for any decoder using this base class (yay).
2012-04-24 17:03:40 +02:00
Edward Hervey
f6cfd763e4 video: Base classes for video decoders and encoders 2012-04-24 17:03:40 +02:00
Edward Hervey
a22545134d video: Add gst_video_info_is_equal 2012-04-24 10:44:44 +02:00
Edward Hervey
0a7d047b1f video: Add GST_VIDEO_FORMAT_ENCODED 2012-04-24 10:44:44 +02:00
Edward Hervey
8f00d76c97 video: Backport GstVideoInfo/GstVideoFormatInfo from 0.11 2012-04-24 10:44:44 +02:00
Wim Taymans
04a2610444 video: improve frame_flags
Rename the frame_flags to flags. Because they are flags on the frame object it
does not need the redundant frame_ prefix.
Change the order of the metadata constructor so that the flags come before the
format and dimension arguments.
2012-04-19 14:14:35 +02:00
Sebastian Dröge
91ffe7dd5e video: Clean up interlaced flags and enums
There's a new GstVideoFrameFlags enum now that contains the frame
specific flags only. GstVideoFlags does not contain the TFF/TFF/ONEFIELD
flags anymore because these are strictly frame specific.

Also add fallback to parse these fields from the GstBufferFlags in
gst_video_frame_map() if there's no GstVideoMeta attached to the buffer.
2012-04-19 12:30:57 +02:00
Wim Taymans
66615a8a6a videofilter: shortcut transform_ip when not set
We can ask the base class to not call our transform_ip method when the subclass
didn't provide an in-place transform function.
2012-04-14 11:26:28 +02:00
Víctor Manuel Jáquez Leal
3f3dceb675 videopool: fix mem leak
When setting its config, the pool increase the ref count of the allocator, but
at finalize the ref count is also increased rather than decreased.

This one-liner patch changes the gst_allocator_ref() for gst_allocator_unref()

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=674011
2012-04-14 10:36:02 +02:00
Sebastian Dröge
69b18ab09d gst-libs: Remove interfaces libs and mixer/tuner interfaces
The navigation interface is now in the video library.
2012-04-13 13:14:13 +02:00
Sebastian Dröge
65307dd132 gst: Update versioning 2012-04-04 14:55:15 +02:00
Wim Taymans
ac9a8781ba video: fix macros 2012-04-02 12:25:30 +02:00
Wim Taymans
1d60bd12e5 videometa: use new buffer methods when mapping memory
Use _find_memory and _map_range to simplify, improve and optimize the
memory mapping of video frames.
2012-04-01 18:04:10 +02:00
Wim Taymans
6f8347de9f videofilter: don't map writable in passthrough
In passthrough mode we shouldn't map the buffer in write mode because the buffer
might not be writable.
2012-04-01 18:01:15 +02:00
Edward Hervey
32c617c867 video: Fix 'comparison of unsigned enum expression < 0 is always false' compiler warning 2012-03-30 12:05:51 +02:00
Sebastian Dröge
9e13d70b2c Merge remote-tracking branch 'origin/0.10'
Conflicts:
	gst-libs/gst/video/video-overlay-composition.c
	tests/check/libs/video.c
2012-03-29 15:00:22 +02:00
Wim Taymans
18fe3ed9fa videopool: avoid caps copy
Now that the caps from the bufferpool are not returned as const we
can take a ref instead of doing a copy.
2012-03-27 15:44:59 +02:00
Wim Taymans
c6f55538e3 video: keep the buffer reffed in the videoframe
This would also ensure that the buffer is not writable while mapped.
2012-03-27 15:01:01 +02:00
Wim Taymans
bee3d7b683 update for get_param changes
Remove the const from the GstCaps.
Fix some GstStructure leaks.
2012-03-27 12:44:02 +02:00
Mark Nauwelaerts
6c260d732c video: remove bogus define 2012-03-26 18:13:13 +02:00
Tim-Philipp Müller
3242f55861 test: fix leak in video overlay composition unit test
gst_buffer_set_qdata() will leak the structure passed to it
when called incorrectly (e.g. on a non-metadata-writable buffer).
This is expected, but we must avoid doing that in valgrind.
2012-03-25 13:35:23 +01:00
Tim-Philipp Müller
35a17ac152 video: overlay-composition: blending micro-optimisation 2012-03-25 11:33:04 +01:00
Tim-Philipp Müller
79953f27a8 video: overlay-composition: try to avoid floating point maths in inner loop
Try to avoid floating point maths for each pixel to be blended in
inner loop, and try to avoid the multiplication entirely for the
most common case of the global alpha being 1. Could probably be
refactored a bit more.
2012-03-25 11:31:31 +01:00
Tim-Philipp Müller
32679e1826 video: overlay-composition: some minor clean-ups
extract_alpha and apply_global alpha always return TRUE really,
so just do away with the return value. Convert a g_return_if_fail()
into a g_assert(), since this is only to check internal consistency
and not a guard for public API. Add some locking.

https://bugzilla.gnome.org/show_bug.cgi?id=668483
2012-03-25 11:27:24 +01:00
Holger Kaelberer
76c0881549 video: overlay-composition: add support for global alpha multiplicator
https://bugzilla.gnome.org/show_bug.cgi?id=668483
2012-03-25 11:27:24 +01:00
Wim Taymans
32bd12dba9 Merge branch 'master' into 0.11
Conflicts:
	.gitignore
	common
	configure.ac
	ext/vorbis/gstvorbisdeclib.h
	gst-libs/gst/audio/gstaudioencoder.c
	gst-libs/gst/riff/riff-read.c
	gst/playback/gstplaysink.c
	gst/playback/gstplaysinkconvertbin.c
	tests/check/libs/video.c
2012-03-22 11:35:13 +01:00
Mark Nauwelaerts
d455b29db4 video: fix assertion comparison mishap 2012-03-20 11:22:29 +01:00
Wim Taymans
e620dbc57d video: add function to copy one video plane 2012-03-19 12:26:11 +01:00
Wim Taymans
1e884df1df update for bufferpool changes 2012-03-15 22:10:58 +01:00
Wim Taymans
7c0e2b5b1e update for allocation query changes 2012-03-15 20:36:51 +01:00
Wim Taymans
02dc419aae update for bufferpool api change 2012-03-15 14:06:24 +01:00
Wim Taymans
df5253b22c update for memory api changes 2012-03-15 13:32:08 +01:00
Wim Taymans
28034226c6 update for memory api changes 2012-03-14 21:35:45 +01:00
Wim Taymans
39d78762b9 take padding into account 2012-03-14 19:56:51 +01:00
Tim-Philipp Müller
2c4b379470 video: overlay-composition: fix alpha premultiply and unpremultiply
Fix component offsets for little endian systems.

https://bugzilla.gnome.org/show_bug.cgi?id=668483
2012-03-14 18:04:38 +00:00
Holger Kaelberer
027f5bb471 video: overlay-composition: fix rectangle caching after alpha (un)premultiplying
If we are asked to (un)premultiply,we need to create the new rectangle
with the right flags, so we can find it properly on subsequent cache
lookups (also because it's wrong otherwise).

https://bugzilla.gnome.org/show_bug.cgi?id=668483
2012-03-14 18:04:38 +00:00
Holger Kaelberer
7a21d1eb32 video: overlay-composition: fix crash when doing premultiplied<->unpremultiplied alpha conversion
We need to copy the pixels before messing with them, not least
because the buffer creation code below assumes it's ok to take
ownership.

Fixes crash caused by double-free.

https://bugzilla.gnome.org/show_bug.cgi?id=668483
2012-03-14 18:04:38 +00:00