Commit graph

3337 commits

Author SHA1 Message Date
Sebastian Dröge
e1702d62a0 audiodecoder: Decouple setting of output format and downstream negotiation
This makes the audio decoder base class more similar to the video
decoder base class.
2012-08-09 15:02:27 +02:00
Sebastian Dröge
e37bb460bd videoencoder: Add negotiate vfunc that is used to negotiate with downstream
The default implementation negotiates a buffer pool and allocator
with downstream.
2012-08-09 14:47:46 +02:00
Sebastian Dröge
7cb22ef241 videodecoder: Add negotiate vfunc that is used to negotiate with downstream
The default implementation negotiates a buffer pool and allocator
with downstream.
2012-08-09 14:47:46 +02:00
Sebastian Dröge
7bdcb12b41 gst: Set alignment at the correct place of GstAllocationParams 2012-08-08 17:41:19 +02:00
Andoni Morales Alastruey
d8326a8eda videoencoder: add proper format for gsize 2012-08-08 17:41:19 +02:00
Andoni Morales Alastruey
d2aebc7f94 rtpbuffer: use proper format for gsize 2012-08-08 17:41:19 +02:00
Sebastian Dröge
98983e08ae videoencoder: Always propose a video buffer pool when the subclass didn't provide one
And also request 16-byte aligned buffers if the subclass didn't
set anything else.
2012-08-08 17:41:19 +02:00
Sebastian Dröge
8b916da6d7 videofilter: Really add a buffer pool if none was provided
And also use the allocation parameters from the query if any
and if there are none set our own (16-byte alignment) on the
query.
2012-08-08 12:19:31 +02:00
Sreerenj Balachandran
8707546345 videofilter: Fix the crash in propose_allocation
Always set a buffer pool if none is provided and don't
set/unref a NULL buffer pool on the query.

https://bugzilla.gnome.org/show_bug.cgi?id=681436
2012-08-08 12:03:05 +02:00
Tim-Philipp Müller
17c839c8a1 No statements with side-effects in g_assert() or g_return_*() please 2012-08-08 10:11:48 +01:00
Tim-Philipp Müller
6422f2d085 Update .gitignore 2012-08-08 09:06:30 +01:00
Руслан Ижбулатов
8f33ad80d0 discoverer: Add source-setup signal for GstDiscoverer
https://bugzilla.gnome.org/show_bug.cgi?id=681260
2012-08-06 14:42:25 +02:00
Sebastian Dröge
880b9a20a6 tagdemux: Add stream-id to stream-start event 2012-08-06 14:01:28 +02:00
Tim-Philipp Müller
211cc1cf68 video: make sure g-i doesn't parse orc-generated video-orc.h file
It's not public API.
2012-08-05 14:40:03 +01:00
Tim-Philipp Müller
284f96765c pbutils: use generic marshaller for discoverer's "discovered" signal
If this change causes build issues, run git clean -x -d -f; ./autogen.sh
2012-08-05 14:06:14 +01:00
Tim-Philipp Müller
07158ff1f2 riff: fix build on big endian systems 2012-08-04 19:33:32 +01:00
Thiago Santos
6d4f94f45e appsrc: send caps event when the user updates appsrc caps
As buffer don't have caps anymore, the caps event needs to be pushed
before buffers are pushed.
2012-08-02 19:00:35 -03:00
Tim-Philipp Müller
36f32d3f93 tag: fix month/day extraction in ID3v2 tags
We were passing month/day in the wrong order to
gst_date_time_new_ymd().
2012-08-02 00:23:28 +01:00
René Stadler
39aa4dc674 discoverer: fix discover_uri returning finalized info object 2012-07-31 01:19:36 +02:00
Tim-Philipp Müller
063dc1712e tag: fix up EXIF writer for GstBuffer -> GstSample 2012-07-28 11:54:38 +01:00
Tim-Philipp Müller
ca31913c04 audiocdsrc: update for TOC API change 2012-07-28 11:13:12 +01:00
Sebastian Dröge
99d73c94e9 tag: Update for taglist/tag event API changes 2012-07-28 00:35:02 +02:00
Wim Taymans
683a38ad65 update for new variable names 2012-07-27 15:24:43 +02:00
Edward Hervey
6423a4027e video: Make all frame_number guint32
Unifies the code and ensures that:
* subclasses needing to use the frame_number on a void* field will
  always work
* wraparounds will be automatically taken care of if we have to deal
  with more than 2**32 frames
2012-07-26 18:38:42 +02:00
Wim Taymans
40a0624e99 audio-format: fix shift for 18 bits samples
The 18bits of the sample are in the LSB so we need to shift them 14 positions to
bring them to 32 bits.
2012-07-26 15:42:38 +02:00
Mark Nauwelaerts
7b135e8810 video{de,en}coder: delay input caps processing until processing data
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=680614
2012-07-26 14:35:45 +02:00
Mark Nauwelaerts
c91615bd82 audio{de,en}coder: delay input caps processing until processing data
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=680614
2012-07-26 14:35:30 +02:00
Arnaud Vrac
8ab19ba9ca video-frame: fix invalid plane id on video frame mapping error 2012-07-26 01:52:25 +02:00
Mark Nauwelaerts
28537dc73c audioencoder: avoid setting output caps twice
... which may not be handled or appreciated well downstream,
e.g. muxers only performing header setup once.
2012-07-25 15:58:19 +02:00
Mark Nauwelaerts
1f962bc108 audioencoder: also consider filter caps in getcaps 2012-07-25 15:58:19 +02:00
Mark Nauwelaerts
e1137b8c66 videoencoder: minor doc fix 2012-07-25 15:58:19 +02:00
Mark Nauwelaerts
26d74941fb Revert "audioencoder: plug caps ref leak"
This reverts commit 08ff5899a7.

Was not a leak to begin with as we did not have ownership of caps.
2012-07-25 12:30:54 +02:00
Mark Nauwelaerts
08ff5899a7 audioencoder: plug caps ref leak 2012-07-25 11:58:26 +02:00
Mark Nauwelaerts
473371f943 audiodecoder: hold caps ref while needed 2012-07-25 11:58:26 +02:00
Mark Nauwelaerts
d55529621c audioencoder: correctly compare audio info positions
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=680553
2012-07-25 11:58:26 +02:00
Vivia Nikolaidou
d2e1b64e0c videoencoder: Expose _negotiate function
This is to be called by encoders once they have set the output format
in order for (re)negotiation to be triggered as early as possible.

https://bugzilla.gnome.org/show_bug.cgi?id=679878
2012-07-24 20:42:49 +02:00
Mark Nauwelaerts
65ea6dee60 audiodecoder: only arrange to reconfigure if data provided
... otherwise audio format need not be known already.
2012-07-24 14:48:59 +02:00
Sreerenj Balachandran
1256d5ed71 video-blend: Doc fix 2012-07-24 12:56:46 +02:00
Marc Leeman
791163aba2 gst-rtsptransports: no warning Transport end with semicolumn 2012-07-24 12:49:29 +02:00
Mark Nauwelaerts
d63a4024b8 audiodecoder: minor doc fix 2012-07-24 12:30:21 +02:00
Jens Georg
bde0f9b992 pbutils: Update ownership annotation of gst_container_add_profile
https://bugzilla.gnome.org/show_bug.cgi?id=680488
2012-07-23 22:36:23 +01:00
Wim Taymans
5ff002b47a audio: prefix orc_* functions with audio_orc_*
To avoid potential conflicts in other modules when statically linking
2012-07-23 17:16:34 +02:00
Wim Taymans
38552a2a8a video: rename gst_video_orc_* to video_orc_*
Because then the functions would not be exported
2012-07-23 17:10:08 +02:00
Wim Taymans
e98c8538c5 orc: prefix orc functions with gst_video_orc_
See https://bugzilla.gnome.org/show_bug.cgi?id=680025
2012-07-23 16:56:55 +02:00
Wim Taymans
b392b28179 orc: rename to video-orc* 2012-07-23 16:52:33 +02:00
Robert Swain
5be353ed5e video-frame: Add missing closing brakcets on flag macros 2012-07-23 14:23:39 +02:00
Wim Taymans
9e08343d5c video-frame: add macros to get frame flags 2012-07-23 13:58:07 +02:00
Wim Taymans
f9de2f499b video-frame: use interlacing buffer flags
Also use the buffer flags to enhance the GstVideoInfo flags in the case where
there was metadata on the buffers.
2012-07-23 13:32:59 +02:00
Sebastian Dröge
fcf5e389ce videoencoder: Hold the stream lock when reconfiguring the element 2012-07-23 12:06:16 +02:00
Sebastian Dröge
d55d7fdc38 audio: Renegotiate if necessary
And also correct usage of the base class stream lock.
2012-07-23 12:01:12 +02:00
Sebastian Dröge
df08e333d2 video: Correct usage of the base class stream lock
And also renegotiate if the srcpad requires reconfiguration
2012-07-23 11:50:11 +02:00
Sebastian Dröge
7b06c34868 audiodecoder: Handle allocation query 2012-07-23 11:42:22 +02:00
Sebastian Dröge
0814d38e98 audiodecoder: Add propose_allocation, decide_allocation vfuncs and functions to allocate buffers with information from the allocation query results 2012-07-23 10:28:05 +02:00
Sebastian Dröge
0513d3d9f4 audioencoder: Add propose_allocation, decide_allocation vfuncs and functions to allocate buffers with information from the allocation query results 2012-07-23 10:20:05 +02:00
Sebastian Dröge
1645ea4a90 video: Rename alloc_output_buffer() to allocate_output_buffer() 2012-07-23 10:18:41 +02:00
Sebastian Dröge
97ba363092 videoencoder: Minor cleanup 2012-07-23 10:04:48 +02:00
Sebastian Dröge
fc24035790 videoencoder: Fix parameters names in header 2012-07-23 09:54:50 +02:00
Sebastian Dröge
cce1078fe9 videoencoder: Add decide_allocation vfunc and functions to allocate buffers with the information from the allocation query 2012-07-23 09:39:47 +02:00
Wim Taymans
4b56b731d2 video-frame: add interlace flag
Add an interlace flag so that we can see if a frame is interlaced or progressive
in the mixed interlace-mode.
2012-07-20 10:20:38 +02:00
Anton Belka
0ee355e4da riff: add "labl" tag
Add GST_RIFF_TAG_labl which is needed for wavparse:
https://bugzilla.gnome.org/show_bug.cgi?id=677306
2012-07-20 09:54:07 +02:00
Tim-Philipp Müller
ed8504e590 video-overlay-composition: fix GSlice alloc/free size mismatch
Fix copy'n'paste bug which made us allocate a slice of the
size of a rectangle for the overlay composition, but then
free it passing the size of an overlay composition, which
is not something GSlice takes to kindly, resulting in scary
aborts like:

***MEMORY-ERROR***: GSlice: assertion failed: sinfo->n_allocated > 0

Also, g_slice_new already includes a cast, so remove our
own casts, without which the compiler would probably have
told us about this ages ago.

https://bugzilla.gnome.org/show_bug.cgi?id=680091
2012-07-19 13:39:25 +01:00
Edward Hervey
55f692eff6 audiodecoder: Don't assert on pad caps not being set
The decoder might have been de-activated in the meantime (resulting
in NULL pad caps).

If the decoder really isn't configured, then it will error out further
down when checking whether the GST_AUDIO_INFO_IS_VALID()

https://bugzilla.gnome.org/show_bug.cgi?id=667562
2012-07-19 10:55:53 +02:00
Edward Hervey
8feaebb6eb videodecoder: Expose _negotiate function
This is to be called by decoders once they have set the output format
in order for (re)negotiation to be triggered as early as possible.

https://bugzilla.gnome.org/show_bug.cgi?id=679878
2012-07-18 18:17:57 +02:00
Mark Nauwelaerts
f89c7b605f videooverlaycomposition: replace API parameters with required video meta on pixel data 2012-07-17 18:08:11 +02:00
Mark Nauwelaerts
d8a9c18e81 videooverlaycomposition: use GstVideoInfo internally and streamline stride handling 2012-07-17 18:08:11 +02:00
Mark Nauwelaerts
d03f926162 videoblend: use correct stride when scaling 2012-07-17 18:08:11 +02:00
Wim Taymans
11a494d5c9 rtp: Add support for multiple memory blocks in RTP
Add support RTP buffers with multiple memory blocks. We allow one block for the
header, one for the extension data, N for data and one memory block for the
padding.
Remove the validate function, we validate now when we map because we need to
parse things in order to map multiple memory blocks.
2012-07-17 16:41:36 +02:00
Evan Nemerson
abcba2d0d7 sdpmessage: add some missing introspection annotations 2012-07-17 11:10:43 +02:00
Evan Nemerson
f21c4667b9 rtp: add many missing annotations on RTP/RTCP buffer functions 2012-07-17 11:10:37 +02:00
Evan Nemerson
63579633f5 rtpbaseaudiopayload: add transfer annotation to get_adapter return 2012-07-17 11:10:04 +02:00
Evan Nemerson
207a6b5fe1 discoverer: minor GTK-Doc fixes 2012-07-17 11:07:24 +02:00
Evan Nemerson
7a7374f2ef audiometa: add missing array array annotations 2012-07-17 11:07:18 +02:00
Evan Nemerson
17815020fd audio: add missing array and element-type annotations for binary data 2012-07-17 11:06:57 +02:00
Evan Nemerson
fd91104636 audio-channels: add missing array-related annotations 2012-07-17 11:06:47 +02:00
Evan Nemerson
1606028c08 audioencoder: add missing element-type to set_headers method 2012-07-17 11:06:22 +02:00
Evan Nemerson
e61a87ea1d appsrc, appsink: fix documentation syntax and mismatched arguments 2012-07-17 10:21:07 +02:00
Tim-Philipp Müller
be369ff630 riff: use GST_TAG_DATE_TIME instead of GST_TAG_DATE here as well 2012-07-15 00:22:38 +01:00
Tim-Philipp Müller
f46c383818 tag: use GST_TAG_DATE_TIME for storing dates instead of GST_TAG_DATE
So we can express partial dates.
2012-07-15 00:14:36 +01:00
Tim-Philipp Müller
54e9581a59 tag: extract dates from ID3v2 tags into GstDateTime instead of GDate
We may only have a year, or year and month+day, or (in future)
both date and time.
2012-07-14 15:37:46 +01:00
Tim-Philipp Müller
a1d1bd0517 tag: extract year from ID3v1 tag as GstDateTime instead of GDate
So we can signal properly that only the year is valid.
2012-07-14 15:34:56 +01:00
Wim Taymans
eacb9ee554 video: add method to get offset and scale for a format
Add a method to get the offset and scale values to transform the color values of
a format to their normalized [0.0 .. 1.0] range. This is usually required as
the first step of a colorspace conversion.
2012-07-13 17:13:10 +02:00
Wim Taymans
a18c098f82 video: add option to unpack and truncate the range
Add an unpack option to specify what to do with the least significant bits of
the destination when the source format has less bits than the destination. By
default we will now copy the most significant bits of the source into the least
significant bits of the destination so that the full color range is represented.
Add an option to leave the extra destination bits 0, which may be faster and
could be compensated for in the element algorithm.
2012-07-13 15:42:26 +02:00
Wim Taymans
866bf89dfe video: fix endianness of the pack formats 2012-07-13 15:35:27 +02:00
Wim Taymans
bc78df5d2d video: fix r210 format
It is an RGB format.
2012-07-13 15:22:57 +02:00
Edward Hervey
3eb5378247 video-blend: Fix argument signedness
The x/y values are meant to be signed.

This bug was introduced by 76c0881549

Conflicts:

	gst-libs/gst/video/video-blend.c
	gst-libs/gst/video/video-blend.h
2012-07-13 12:18:29 +02:00
Edward Hervey
2817bdadc9 libs: Remove "Since" markers and minor doc fixups 2012-07-13 12:11:06 +02:00
Edward Hervey
666716a0f0 tagdemux: Push a STREAM_START on new caps 2012-07-13 12:10:01 +02:00
Edward Hervey
c9428c96b1 baseaudiosink: Resync when ringbuffer resets
When the ringbuffer gets restarted (like in setcaps), we *will* have
to resync against the new values.

Without this we end up blindly assuming the new samples align to the
old ones.
2012-07-12 09:51:35 +02:00
Ognyan Tonchev
de9aeb0c72 rtsp: Update the initial_buffer when merging RTSP Connections
See https://bugzilla.gnome.org/show_bug.cgi?id=679337
2012-07-10 11:34:47 +02:00
Wim Taymans
0dd87d7eb7 fix for allocator API changes 2012-07-09 16:28:25 +02:00
Mark Nauwelaerts
edbd1784bf riff: rename field in gst_riff_strf_auds
... which is supposed to align with WAVEFORMATEX, but has confusing
names compared to the last 2 fields in the latter (and still
misses 1 field compared to the latter).
2012-07-09 12:27:56 +02:00
Mark Nauwelaerts
713b80f191 riff: fixup 0.11 port mishap in reading extra data length field
Fixes #679437.
2012-07-06 15:05:31 +02:00
Wim Taymans
53fc1f3fca update for query api changes 2012-07-06 11:50:44 +02:00
Wim Taymans
bc5ba349b7 update for allocation query changes 2012-07-06 11:05:09 +02:00
Mark Nauwelaerts
db3ce93c51 Revert "videooverlaycomposition: ensure proper buffer copy"
This reverts commit 1d413ace64.

Plain gst_buffer_copy() is now doing the expected ...

See https://bugzilla.gnome.org/show_bug.cgi?id=678384.
2012-07-05 16:39:17 +02:00
Sebastian Dröge
9002471c93 video: Document buffer ownership of the GstVideoCodecFrame more explicit
And also the implications of calling the finish() functions.
2012-07-05 14:29:42 +02:00
Sebastian Dröge
7803ae97e9 videodecoder: Make sure the buffer is writable before changing fields in finish_frame() too
We can't be sure that we have the one and only reference here either.
2012-07-05 13:38:48 +02:00
Sebastian Dröge
8e15a2c28d videodecoder: Create a complete subbuffer before pushing
Otherwise we can't be sure that we are allowed to change the
buffer fields later for clipping.
2012-07-05 13:37:37 +02:00
Sebastian Dröge
74c7524b49 gst: Implement segment-done event 2012-07-05 13:06:04 +02:00
Sebastian Dröge
9de1b170b3 audiocdsrc: Remove the TOC query handling 2012-07-05 12:35:35 +02:00
Sebastian Dröge
0ac1596d8d audiocdsrc: Update for TOC API changes 2012-07-05 12:29:00 +02:00
Wim Taymans
f7f2c13efc update for miniobject changes 2012-07-04 17:06:28 +02:00
Wim Taymans
676375ecfe videodec: add some assert 2012-07-04 09:15:26 +02:00
Wim Taymans
c7cfb66467 videodec: clear the right variable 2012-07-04 09:15:26 +02:00
Sebastian Dröge
b362ec3a57 audiocdsrc: Only push TOC event, the TOC message is handled by the sinks 2012-07-03 17:31:54 +02:00
Mark Nauwelaerts
bcc5a89a98 videooverlaycomposition: make API meta oriented
... and as such more consistent with other buffer meta components.
2012-07-03 14:27:35 +02:00
Mark Nauwelaerts
fa72c94a53 videooverlaycomposition: remove some post-port obsolete parts 2012-07-03 14:27:34 +02:00
Mark Nauwelaerts
1d413ace64 videooverlaycomposition: ensure proper buffer copy
This is only temporary and could and should be modified to use
regular buffer copy once https://bugzilla.gnome.org/show_bug.cgi?id=679145
is resolved.
2012-07-02 14:34:14 +02:00
Mark Nauwelaerts
0fba95a7b1 videooverlaycomposition: fix some refcounting and avoid possible NULL use 2012-06-29 18:56:09 +02:00
Tim-Philipp Müller
df70b2d2ce audiocdsrc: send TOC event downstream if we're in continuous mode
If we're in continuous mode where we'll play the entire CD from
start to finish, send a TOC event downstream so any downstream
muxers can write a TOC to indicate where the various tracks
start and end.
2012-06-28 23:41:16 +01:00
Mark Nauwelaerts
e94022806f videooverlaycomposition: port to 0.11
... which also entails porting video-blend

Fixes #678384.
2012-06-28 18:16:20 +02: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
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
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
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
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
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
c003efcc63 audiobasesink: fix for basesink API change 2012-06-18 11:40:36 +02:00
Sebastian Dröge
1e635f682f videodecoder: Add GstVideoDecoder::propose_allocation() vfunc 2012-06-15 16:38:16 +02:00
Jan Schmidt
f865729e95 videodecoder: Fix initial timestamp in ogg, and a warning.
Don't replace the initial frame's timestamp with a bogus
one calculated from the (incorrect for Ogg) frame number just
because the 'sync time' hasn't changed.

Also, don't output a bogus warning about the output_frame being
NULL when it's being dropped/skipped due to QoS.
2012-06-13 01:58:05 +10:00
Jan Schmidt
d9740bf9ba audio decoder: Add some debug output for bad caps from children 2012-06-12 23:52:35 +10:00
Vincent Penquerc'h
f8b8711081 audiodecoder: push queued events only when we have a first buffer
https://bugzilla.gnome.org/show_bug.cgi?id=675812
2012-06-11 11:29:13 +01:00
Wim Taymans
9d6967fe9a Add generated orc files 2012-06-08 17:57:43 +02:00
Wim Taymans
12ac9f0aa2 Also build the orc generated code 2012-06-08 17:57:43 +02:00
Wim Taymans
3f8c5ea036 audio: add orc enabled pack and unpack functions 2012-06-08 17:57:43 +02:00
Wim Taymans
8e393d898a audio: add flag to mark possible unpack formats
Make a new flag to mark formats that can be used in pack and unpack functions.
Mark S32NE and F64NE as those unpack formats
2012-06-08 17:57:43 +02:00
Vincent Penquerc'h
8b10be67e4 videodecoder: use GST_CLOCK_TIME_IS_VALID where appropriate 2012-06-08 13:59:53 +01:00
Wim Taymans
c2112cb402 video: mark unpack formats with a flag
Add a new _UNPACK flag and use it to mark potential unpack formats.
2012-06-08 11:50:57 +02:00
Sebastian Dröge
462c4cc3d8 audio: Remove unused, generated marshallers 2012-06-08 11:28:56 +02:00
Wim Taymans
3da0b71876 audio: split audio header into logical parts 2012-06-08 10:10:08 +02:00
Vincent Penquerc'h
d7ee6a9c57 videodecoder: do not do timestamp arithmetic from an invalid timestamp
This fixes untimestampped buffers from being rejected by the segment clipper.

https://bugzilla.gnome.org/show_bug.cgi?id=676022
2012-06-07 16:59:09 +01:00
Vincent Penquerc'h
fd35793c38 video: fix memory leak 2012-06-07 11:23:21 +01:00
Wim Taymans
90b3f525e9 rtspconnection: handle cancellation correctly 2012-06-06 16:41:03 +02:00
Wim Taymans
baa2fac2f8 audiopayload: disable broken bufferlist handling
The bufferlist handling is broken so make sure it is never enabled.
2012-06-06 16:40:24 +02:00
David Svensson Fors
0b0dde7ce1 rtsp: don't leak address and socket
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=677466
2012-06-06 14:53:43 +02:00
Wim Taymans
a2172bdb4b update for tag event change 2012-06-06 13:05:47 +02:00
Wim Taymans
bc221fba78 video: add pack_lines variable
Use a separate variable to describe the amount of lines that will be used in
packing instead of abusing the h_sub variable. Some formats might have no
subsampling but need to operate on multipe lines.
2012-06-06 11:38:00 +02:00
Wim Taymans
a96acd3dbe video: add macro for component depth 2012-06-06 11:18:56 +02:00
Edward Hervey
eee5cec41e pbutils: Add descriptor for E-AC3 and PGS subtitles 2012-06-06 10:33:56 +02:00
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
Sebastian Dröge
2667d4bb82 Revert "audiodecoder: Error out earlier in a few places if something goes wrong"
This reverts commit eb68a2d5a7.

This sometimes errors out too early now, needs some more thoughts.
2012-06-04 10:01:42 +02:00
Sebastian Dröge
f609b3a627 audiodecoder: Return setcaps return value instead of always TRUE 2012-06-04 09:56:30 +02:00
Sebastian Dröge
eb68a2d5a7 audiodecoder: Error out earlier in a few places if something goes wrong 2012-06-02 17:16:13 +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
c66da2c74b audio: 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:54:43 +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
Tim-Philipp Müller
af7dc60479 tag: don't use GstStructure API on tag lists 2012-05-26 19:56:30 +01: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
Arun Raghavan
9c29cd70ee audio: Fix DTS IEC61937 payloading
DTS type I-III specify the burst length in bits. Only type IV (which we
do not currently support) needs it to be specified in bytes. Thanks to
Julien Moutte for pointing this out.
2012-05-25 12:38:32 +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
fc537ad667 discoverer: Put back accidentially deleted line 2012-05-21 10:08:33 +02:00
Anton Belka
42cb4bdf67 discoverer: Add TOC support to discoverer and add -c/--toc parameters to gst-discoverer utility 2012-05-21 08:52:05 +02:00
Wim Taymans
b0cc0a31e2 rtsp: unref sockets in _close
When closing the connection, unref the currently used sockets. This should close
them when not in use. We need to do this because else we cannot reconnect
anymore after a close, the connect function requires that the sockets are NULL.
2012-05-18 09:47:26 +02:00
Wim Taymans
2cd15bbef8 rtsp: clear the GError for pending connect
Clear the GError after g_socket_connect tells us that the connection is pending.
If we don't do this, glib complains when we try to reuse the non-NULL GError
variable a little below.
2012-05-18 09:47:26 +02:00
Tim-Philipp Müller
892cefe651 appsrc: simplify get_property for "caps" property 2012-05-17 22:11:27 +01:00
Tim-Philipp Müller
e110d8b6f4 appsrc: remove filter argument from gst_app_src_get_caps()
Was presumably added by mistaken in the grand _get_caps()
conversion. Doesn't really make sense for a property accessor.
2012-05-17 22:04:24 +01: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
Tim-Philipp Müller
0e216d1f4c typefinding, ogg: don't bother with annodex media types
They're hardly used, and probably more confusing than anything
else, and it's not clear that anyone would really need to be
able to tell them apart at the media type level.
2012-05-13 18:49:31 +01:00
Vivia Nikolaidou
34d6031974 discoverer: Ported fix for bug #673504 to 0.11 2012-05-11 16:44:15 +02:00
Vivia Nikolaidou
4d9d707e32 discoverer: Wait until an update/filler newsegment event or buffer for subtitle streams
This makes sure that we wait until we received all tags for the
subtitle streams and have all information that is collected by
the discoverer.

Fixes bug #673504.
2012-05-11 16:44:15 +02: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
Tim-Philipp Müller
9c09fbda52 tag: improve gobject-introspection annotations 2012-04-29 17:16:38 +01:00
Tim-Philipp Müller
885df9cace pbutils: update descriptions for new webm/matroska media types 2012-04-28 15:51:08 +01: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