platform/upstream/gst-plugins-bad.git
13 years agodvbsuboverlay: scale subtitles according to the display size
Janne Grunau [Sat, 11 Dec 2010 16:25:29 +0000 (17:25 +0100)]
dvbsuboverlay: scale subtitles according to the display size

Display size is either transmitted in the display definition segment or
implicitly defined to 720x576. The subtitle window information also present in
the display definition segment is not yet used.

13 years agodvbsuboverlay: implement display definition segment parsing
Janne Grunau [Sat, 11 Dec 2010 16:10:25 +0000 (17:10 +0100)]
dvbsuboverlay: implement display definition segment parsing

13 years agodvbsuboverlay: fix luma stride for scaled subtitles (display width != width)
Janne Grunau [Fri, 10 Dec 2010 11:27:54 +0000 (12:27 +0100)]
dvbsuboverlay: fix luma stride for scaled subtitles (display width != width)

13 years agorsvgoverlay: Don't set uint on an int property
Edward Hervey [Wed, 15 Dec 2010 15:48:15 +0000 (16:48 +0100)]
rsvgoverlay: Don't set uint on an int property

13 years agoAutomatic update of common submodule
Stefan Kost [Wed, 15 Dec 2010 12:56:19 +0000 (14:56 +0200)]
Automatic update of common submodule

From 20742ae to 169462a

13 years agoelement-maker: improve generation of several classes
David Schleef [Wed, 15 Dec 2010 03:03:09 +0000 (19:03 -0800)]
element-maker: improve generation of several classes

Better creation of pads, test and fix many other classes.  Most
classes work now, although might not create functional elements.

13 years agoy4mdec: Add y4mdec
David Schleef [Tue, 14 Dec 2010 07:32:30 +0000 (23:32 -0800)]
y4mdec: Add y4mdec

Feel the y4m love.  It seeks.  It works in pitivi.

13 years agogdiscreencapsrc: fix memory leak
Francis Rammeloo [Mon, 13 Dec 2010 23:15:05 +0000 (23:15 +0000)]
gdiscreencapsrc: fix memory leak

Structure members of ICONINFO struct filled by GetIconInfo() must
be deleted when no longer needed according to the API reference.

https://bugzilla.gnome.org/show_bug.cgi?id=611428

13 years agojpegparse: avoid leaking tag event
Mark Nauwelaerts [Mon, 13 Dec 2010 15:23:37 +0000 (16:23 +0100)]
jpegparse: avoid leaking tag event

13 years agoac3parse: relax bsid checking
Mark Nauwelaerts [Mon, 13 Dec 2010 14:17:29 +0000 (15:17 +0100)]
ac3parse: relax bsid checking

... to the widest possible spec interpretation.

Fixes #637062.

13 years agoAutomatic update of common submodule
Stefan Kost [Mon, 13 Dec 2010 14:23:45 +0000 (16:23 +0200)]
Automatic update of common submodule

From 011bcc8 to 20742ae

13 years agorfbsrc: fail more gracefully if source gets disconnected or geometry changes
Matthew Ife [Sun, 12 Dec 2010 23:34:02 +0000 (23:34 +0000)]
rfbsrc: fail more gracefully if source gets disconnected or geometry changes

Don't get caught in an infinite loop if the source gets disconnected and also
support gracefully failing upon detecting the frame geometry has increased
(rather than segfaulting).

https://bugzilla.gnome.org/show_bug.cgi?id=635397

13 years agojpegparse: avoid leaking converted comment string
Mark Nauwelaerts [Sun, 12 Dec 2010 21:13:13 +0000 (22:13 +0100)]
jpegparse: avoid leaking converted comment string

13 years agossim: Set classification to Filter/Analyzer/Video instead of Filter/Converter/Video
Sebastian Dröge [Sun, 12 Dec 2010 11:01:38 +0000 (12:01 +0100)]
ssim: Set classification to Filter/Analyzer/Video instead of Filter/Converter/Video

Fixes bug #636109.

13 years agogaudieffects: Avoid divide by 0 in burn element
Jan Schmidt [Sat, 11 Dec 2010 15:24:00 +0000 (02:24 +1100)]
gaudieffects: Avoid divide by 0 in burn element

13 years agoresindvd: Defer pushing tag updates until streaming.
Jan Schmidt [Sat, 11 Dec 2010 15:16:49 +0000 (02:16 +1100)]
resindvd: Defer pushing tag updates until streaming.

Push tag/title info updates in the streaming thread, avoiding
spurious losses of the downstream events when flushing.

See: https://bugzilla.gnome.org/show_bug.cgi?id=594222

13 years agoresindvd: Attempt to use glib language setting for DVD menus/audio
Jan Schmidt [Tue, 16 Nov 2010 06:18:33 +0000 (17:18 +1100)]
resindvd: Attempt to use glib language setting for DVD menus/audio

13 years agoresindvd: Fix silly typo in button state tracking.
Jan Schmidt [Tue, 16 Nov 2010 06:09:06 +0000 (17:09 +1100)]
resindvd: Fix silly typo in button state tracking.

13 years agoapplemedia: only enqueue buffers in the VideoToolbox callbacks
Ole André Vadla Ravnås [Thu, 9 Dec 2010 23:58:58 +0000 (00:58 +0100)]
applemedia: only enqueue buffers in the VideoToolbox callbacks

These callbacks may fire from any thread, hence we should only enqueue
buffers and let the streaming thread take care of the rest as soon as
the blocking encode or decode operation has finished.

13 years agoapplemedia: bring back Leopard compatibility
Ole André Vadla Ravnås [Fri, 19 Nov 2010 14:53:55 +0000 (15:53 +0100)]
applemedia: bring back Leopard compatibility

At least as far as miovideosrc is concerned. Turns out that CoreVideo's
CVPixelBufferGetIOSurface is not present in Leopard's version of CoreVideo.
We solve this by making it possible for symbols to be marked as optional.

13 years agowinks: fix framerate fraction range mapping
Christian Berentsen [Mon, 29 Nov 2010 12:47:11 +0000 (13:47 +0100)]
winks: fix framerate fraction range mapping

Min and max may be slightly different but compress to the same fraction.

13 years agojasperdec: don't fail hard on decoding error
Wim Taymans [Thu, 9 Dec 2010 17:06:38 +0000 (18:06 +0100)]
jasperdec: don't fail hard on decoding error

don't post an error and return GST_FLOW_ERROR on a simple decoding error. We can
just resume and continue decoding the next image.

13 years agoqtkitvideosrc: reset the queue condition to NO_FRAMES in unlockStop.
Alessandro Decina [Thu, 9 Dec 2010 10:54:17 +0000 (11:54 +0100)]
qtkitvideosrc: reset the queue condition to NO_FRAMES in unlockStop.

Fixes a segfault in create: when going PLAYING -> PAUSED -> PLAYING.

13 years agoqtkitvideosrc: run the mainRunLoop for a while if not running.
Alessandro Decina [Thu, 9 Dec 2010 10:04:19 +0000 (11:04 +0100)]
qtkitvideosrc: run the mainRunLoop for a while if not running.

QTCaptureSession::addInput and QTCaptureSession::addOutput call
NSObject::performSelectorOnMainThread internally so they need the mainRunLoop to
run at least for a while to complete.

13 years agobasecamerasrc: Remove ghostpads
Thiago Santos [Tue, 7 Dec 2010 22:40:28 +0000 (19:40 -0300)]
basecamerasrc: Remove ghostpads

Remove ghost pads from basecamerasrc. Different implementations
of camera sources might not use ghostpads and use default pads.

13 years agobasecamerasrc: Removing ununsed methods
Thiago Santos [Tue, 7 Dec 2010 22:12:40 +0000 (19:12 -0300)]
basecamerasrc: Removing ununsed methods

Remove one unused method _finish_image_capture()

13 years agocamerabin2: Only run tests if experimental is enabled
Thiago Santos [Mon, 6 Dec 2010 14:05:17 +0000 (11:05 -0300)]
camerabin2: Only run tests if experimental is enabled

Only run camerabin2 tests and build examples if experimental
plugins are enabled

13 years agocamerabin2: Cleanup
Thiago Santos [Mon, 6 Dec 2010 13:06:37 +0000 (10:06 -0300)]
camerabin2: Cleanup

Removing commented code

13 years agobasecamerasrc: Move start/stop capture signals to basecamerasrc
Thiago Santos [Sun, 5 Dec 2010 14:18:09 +0000 (11:18 -0300)]
basecamerasrc: Move start/stop capture signals to basecamerasrc

Move start/stop signals and ready-for-capture to basecamerasrc
as this should be present on all camera sources

13 years agobasecamerasrc: Add mode property
Thiago Santos [Sat, 4 Dec 2010 13:15:34 +0000 (10:15 -0300)]
basecamerasrc: Add mode property

Move mode property from v4l2camerasrc to basecamerasrc, as all
camera sources should handle it.

13 years agocamerabin2: Reset all elements on video recording branch before capture
Thiago Santos [Sat, 4 Dec 2010 03:27:17 +0000 (00:27 -0300)]
camerabin2: Reset all elements on video recording branch before capture

We need to reset the elements from the video recording branch, including
the queue and capsfilter in order to clear the eos state and activate
the pads.

This makes it possible to record multiple videos with camerabin2 in a
sequence, otherwise the source would get a unexpected return and
push EOS, stopping the whole pipeline.

13 years agocamerabin2: Fix tests capture location creation
Thiago Santos [Fri, 3 Dec 2010 15:13:07 +0000 (12:13 -0300)]
camerabin2: Fix tests capture location creation

Fixes capture location creation to use multifilesink location
like strings. E.g. using capture_%d instead of capture_0 to let
camerabin2 handle the %d replacing

13 years agocamerabin2: More debug logs
Thiago Santos [Fri, 3 Dec 2010 15:12:32 +0000 (12:12 -0300)]
camerabin2: More debug logs

Sprinkle some more debugging logs

13 years agoexamples: camerabin2: Print more info
Thiago Santos [Fri, 3 Dec 2010 15:11:59 +0000 (12:11 -0300)]
examples: camerabin2: Print more info

Add some printing for error/eos cases.

13 years agocamerabin2: Various fixes
Thiago Santos [Thu, 2 Dec 2010 06:44:37 +0000 (03:44 -0300)]
camerabin2: Various fixes

As video recording bin's state is locked, we should always
remember of setting it to NULL when camerabin2 goes to NULL

Be more careful when using elements that might not
have been created yet

And do not set location property recursively on videorecordingbin

13 years agocamerabin2: Adding tests for camerabin2
Thiago Santos [Thu, 2 Dec 2010 06:08:52 +0000 (03:08 -0300)]
camerabin2: Adding tests for camerabin2

Adds some basic tests for camerabin2

13 years agotests: camerabin2: adds tests for elements
Thiago Santos [Thu, 2 Dec 2010 05:21:49 +0000 (02:21 -0300)]
tests: camerabin2: adds tests for elements

Adds basic tests for both imagecapturebin and for
videorecordingbin elements

13 years agoviewfinderbin: Improve elements creation
Thiago Santos [Thu, 2 Dec 2010 04:33:19 +0000 (01:33 -0300)]
viewfinderbin: Improve elements creation

Be more careful with cleanup of elements. Also add some logs and
improve docs a little.

13 years agocamerabin2: remove unused code
Thiago Santos [Thu, 2 Dec 2010 03:19:05 +0000 (00:19 -0300)]
camerabin2: remove unused code

General cleanup, removing unused bits

13 years agocamerabin2: adds location property
Thiago Santos [Tue, 30 Nov 2010 23:13:27 +0000 (20:13 -0300)]
camerabin2: adds location property

Adds a location property to enable applications to select
the captured files names. Locations are handled just like
multifilesink ones

Also disables -Wformat-nonliteral to allow to use non-literals
on g_strdup_printf on camerabin and generate a sequence of
locations for captures.

13 years agocamerabin2: Fix set/get property function names
Thiago Santos [Tue, 30 Nov 2010 23:15:47 +0000 (20:15 -0300)]
camerabin2: Fix set/get property function names

Add more consistency to the function names by using
gst_camera_bin as the other functions.

13 years agocamerabin2: Handle vidbin state change individually
Thiago Santos [Tue, 30 Nov 2010 21:19:20 +0000 (18:19 -0300)]
camerabin2: Handle vidbin state change individually

Keep vidbin state locked to avoid it going to playing without
being used and leaving an empty file created.

Check the docs on the code for details on the handling.

13 years agocamerabin2: Keep it under --enable-experimental
Thiago Santos [Tue, 30 Nov 2010 14:40:18 +0000 (11:40 -0300)]
camerabin2: Keep it under --enable-experimental

camerabin2 is still under heavy development, activate it only if
the --enable-experimental flag is on.

Also add a note to the docs.

13 years agov4l2camerasrc: Add ready-for-capture property
Thiago Santos [Tue, 30 Nov 2010 14:06:33 +0000 (11:06 -0300)]
v4l2camerasrc: Add ready-for-capture property

Adds property that informs if v4l2camerasrc is available
for starting a new capture.

It is useful for applications to know (via deep-notify) when the
property changes and a new capture is possible. Note, however, that
starting a new capture from the notify callback will cause a deadlock.

13 years agocamerabin2: Update v4l2camerasrc to use start/stop signals
Thiago Santos [Tue, 30 Nov 2010 12:28:50 +0000 (09:28 -0300)]
camerabin2: Update v4l2camerasrc to use start/stop signals

Removes the old logic for v4l2camerasrc that used the mode
property switching to start/stop captures to make it identical
to camerabin2 behavior and to allow the future addition of
pausing a video recording.

This also removes the MODE_PREVIEW as it became useless.

13 years agocamerabin2: Cleanup capturing flag
Thiago Santos [Mon, 29 Nov 2010 21:53:34 +0000 (18:53 -0300)]
camerabin2: Cleanup capturing flag

Cleanup capturing flag when the source switches back to the
viewfinder mode

13 years agov4l2camerasrc: Remove unnecessary padding
Thiago Santos [Mon, 29 Nov 2010 21:24:35 +0000 (18:24 -0300)]
v4l2camerasrc: Remove unnecessary padding

13 years agov4l2camerasrc: Implement video capture
Thiago Santos [Mon, 29 Nov 2010 18:49:26 +0000 (15:49 -0300)]
v4l2camerasrc: Implement video capture

Implements video capture on v4l2camerasrc by using the mode property,
when mode is set to video, the pad probe pushes a new segment
and starts pushing buffers on the pad, when it the property is
sent back to preview, the pad probe pushes an EOS and stops
pushing buffers.

This is controlled by a Recording State variable, that is protected
by the GST_OBJECT_LOCK. I don't think locking for every buffer is
nice, so we could find an alternative lockless way here.

13 years agov4l2camerasrc: Fix image capture
Thiago Santos [Mon, 29 Nov 2010 15:57:21 +0000 (12:57 -0300)]
v4l2camerasrc: Fix image capture

Once a image is captured, v4l2camerasrc should return to the
preview mode and stop capturing.

13 years agocamerabin2: Keep mode definition at -enum file
Thiago Santos [Mon, 29 Nov 2010 14:31:26 +0000 (11:31 -0300)]
camerabin2: Keep mode definition at -enum file

Use 'mode' enum definition from gstcamerabin-enum file to avoid
conflicts between v4l2camerasrc and gstcamerabin2 modes.

For now there is a MODE_PREVIEW there that is only used on the
camerasrc, not sure if we are keeping it at the future, but for
now this works.

13 years agov4l2camerasrc: Adds mode property
Thiago Santos [Mon, 29 Nov 2010 13:46:38 +0000 (10:46 -0300)]
v4l2camerasrc: Adds mode property

Adds mode property to v4l2camerasrc

13 years agocamerabin2: Adding debug categories
Thiago Santos [Mon, 29 Nov 2010 13:45:30 +0000 (10:45 -0300)]
camerabin2: Adding debug categories

Adding debug categories to v4l2camerasrc and camerabin2, also
removing generic category from camerabingeneral.

13 years agoexamples: Adds camerabin2 example
Thiago Santos [Sat, 27 Nov 2010 02:55:12 +0000 (23:55 -0300)]
examples: Adds camerabin2 example

Adds gtk camerabin2 example app

13 years agocamerabin2: Adding basic property and signals
Thiago Santos [Fri, 26 Nov 2010 20:24:58 +0000 (17:24 -0300)]
camerabin2: Adding basic property and signals

Adds mode property to camerabin2, allowing users to
select between video and stills capture. Also adds
start/stop capture actions to trigger and stop
capturing

13 years agocamerabin2: Set filesink's async to FALSE
Thiago Santos [Fri, 26 Nov 2010 18:55:39 +0000 (15:55 -0300)]
camerabin2: Set filesink's async to FALSE

In order to preroll, camerabin2 should have its filesinks in
the imagecapturebin and videorecordingbin with async=FALSE.

13 years agocamerabin2: Adding basic elements
Thiago Santos [Fri, 26 Nov 2010 17:51:30 +0000 (14:51 -0300)]
camerabin2: Adding basic elements

Instantiating and linking basic elements on camerabin2
so it at least shows the viewfinder when running.

13 years agocamerabin2: Adds a stub element for camerabin2
Thiago Santos [Fri, 26 Nov 2010 13:14:46 +0000 (10:14 -0300)]
camerabin2: Adds a stub element for camerabin2

Adds camerabin2 element, it is now a pile of stubs.

13 years agocamerabin2: v4l2camerasrc: Remove platform specific code
Thiago Santos [Fri, 26 Nov 2010 01:05:39 +0000 (22:05 -0300)]
camerabin2: v4l2camerasrc: Remove platform specific code

Remove platform specific code

13 years agocamerabin2: Removing uneeded properties
Thiago Santos [Fri, 26 Nov 2010 00:49:47 +0000 (21:49 -0300)]
camerabin2: Removing uneeded properties

Removing uneeded and unregistered properties.

13 years agocamerabin2: v4l2camerasrc: Fix property warning
Thiago Santos [Thu, 25 Nov 2010 23:55:36 +0000 (20:55 -0300)]
camerabin2: v4l2camerasrc: Fix property warning

Avoid setting a property that doesn't exist.

13 years agocamerabin2: v4l2camerasrc: Remove unused variable
Thiago Santos [Thu, 25 Nov 2010 23:53:04 +0000 (20:53 -0300)]
camerabin2: v4l2camerasrc: Remove unused variable

Removed unused leftover variable

13 years agocamerabin2: Adds video recording bin
Thiago Santos [Thu, 25 Nov 2010 17:57:13 +0000 (14:57 -0300)]
camerabin2: Adds video recording bin

Adds an bin that is responsible for encoding and saving video
streams to files.

For now it is simply a ffmpegcolorspace ! theoraenc ! oggmux !
 filesink bin.

Still uncapable of recording audio.

13 years agocamerabin2: Adding v4l2camerasrc from robclark's branch
Thiago Santos [Thu, 25 Nov 2010 16:00:50 +0000 (13:00 -0300)]
camerabin2: Adding v4l2camerasrc from robclark's branch

Adds 3-pad v4l2 camera source from Rob Clark's camerabin
branch on http://gitorious.org/robclark-gstreamer/gst-plugins-bad

13 years agocamerabin2: Adds new imagecapturebin
Thiago Santos [Wed, 24 Nov 2010 23:31:33 +0000 (20:31 -0300)]
camerabin2: Adds new imagecapturebin

Adds an bin that is responsible for image captures.

It is a simple ffmpegcolorspace ! jpegenc ! jifmux ! multifilesink
for now.

13 years agocamerabin2: Move plugin init to a separate file
Thiago Santos [Wed, 24 Nov 2010 23:15:38 +0000 (20:15 -0300)]
camerabin2: Move plugin init to a separate file

Moves plugin init to gstplugin.c to allow multiple
elements to register themselves.

13 years agocamerabin2: viewfinderbin: Adds viewfinderbin element
Thiago Santos [Wed, 24 Nov 2010 20:28:57 +0000 (17:28 -0300)]
camerabin2: viewfinderbin: Adds viewfinderbin element

Adds viewfinder bin element, one of the modules of camerabin2
that is responsible for displaying the video from the camera.

For now it is only a bin with ffmpegcolorspace ! videoscale !
 autovideosink

13 years agodvbsuboverlay: fix compiler warnings on OSX.
Alessandro Decina [Wed, 8 Dec 2010 18:36:48 +0000 (19:36 +0100)]
dvbsuboverlay: fix compiler warnings on OSX.

13 years agooutput-selector-test: don't hardcode videosinks and use more colorspace conv.
Stefan Kost [Wed, 24 Nov 2010 10:22:01 +0000 (12:22 +0200)]
output-selector-test: don't hardcode videosinks and use more colorspace conv.

Use autovideosink instead of hardcoded sinks. Use an additional colorspace
converter between videotestsrc and timeoverlay.

13 years agoconfigure: require released versions of core/base instead of old git
Tim-Philipp Müller [Wed, 8 Dec 2010 15:18:32 +0000 (15:18 +0000)]
configure: require released versions of core/base instead of old git

13 years agompeg4videoparse: re-use cleanup() in finalize()
Mark Nauwelaerts [Tue, 7 Dec 2010 14:44:00 +0000 (15:44 +0100)]
mpeg4videoparse: re-use cleanup() in finalize()

... and also favor finalize() rather than dispose().

13 years agompeg4videoparse: Set srcpad caps before forwarding newsegment
Arun Raghavan [Thu, 18 Nov 2010 08:09:23 +0000 (13:39 +0530)]
mpeg4videoparse: Set srcpad caps before forwarding newsegment

This holds all newsegement and most other events till there is enough
data to set srcpad caps, so that the downstream link is properly
negotiated before data starts flowing.

https://bugzilla.gnome.org/show_bug.cgi?id=635204

13 years agompeg4videoparse: Use sinkpad caps as base for srcpad caps
Arun Raghavan [Thu, 18 Nov 2010 17:59:51 +0000 (23:29 +0530)]
mpeg4videoparse: Use sinkpad caps as base for srcpad caps

This way, we don't lose additional fields that come from upstream (like
profile/level for now).

https://bugzilla.gnome.org/show_bug.cgi?id=635202

13 years agompeg4videoparse: minor fix to error handling
Mark Nauwelaerts [Tue, 7 Dec 2010 14:20:29 +0000 (15:20 +0100)]
mpeg4videoparse: minor fix to error handling

We weren't handling unparseable codec_data in some cases.

https://bugzilla.gnome.org/show_bug.cgi?id=635202

13 years agodvbsuboverlay: Implement nearest neighbour scaling for the subpictures
Sebastian Dröge [Tue, 7 Dec 2010 16:17:44 +0000 (17:17 +0100)]
dvbsuboverlay: Implement nearest neighbour scaling for the subpictures

This becomes necessary when SDTV subtitles are used for HDTV videos.

13 years agoh264parse: align code with comment
Mark Nauwelaerts [Tue, 7 Dec 2010 13:55:28 +0000 (14:55 +0100)]
h264parse: align code with comment

13 years agoh264parse: re-use reset() in finalize()
Mark Nauwelaerts [Tue, 7 Dec 2010 13:55:15 +0000 (14:55 +0100)]
h264parse: re-use reset() in finalize()

13 years agoh264parse: Set srcpad caps before forwarding newsegment
Arun Raghavan [Wed, 17 Nov 2010 13:46:12 +0000 (19:16 +0530)]
h264parse: Set srcpad caps before forwarding newsegment

This holds all newsegement and most other events till there is enough
data to set srcpad caps, so that the downstream link is properly
negotiated before data starts flowing.

https://bugzilla.gnome.org/show_bug.cgi?id=635205

13 years agojpegparse: try to convert comment tag to UTF-8
Mark Nauwelaerts [Mon, 6 Dec 2010 18:00:28 +0000 (19:00 +0100)]
jpegparse: try to convert comment tag to UTF-8

13 years agojpegparse: discard incomplete image
Mark Nauwelaerts [Mon, 6 Dec 2010 17:19:20 +0000 (18:19 +0100)]
jpegparse: discard incomplete image

... as determined when finding SOI next image before an EOI.

13 years agojpegparse: avoid infinite loop when resyncing
Mark Nauwelaerts [Mon, 6 Dec 2010 17:18:11 +0000 (18:18 +0100)]
jpegparse: avoid infinite loop when resyncing

13 years agoaudioparse: Allow implicit channel map for 1-/2-channel audio
Arun Raghavan [Mon, 6 Dec 2010 17:18:09 +0000 (22:48 +0530)]
audioparse: Allow implicit channel map for 1-/2-channel audio

This makes sure we don't set an empty channel map array for 1-/2-channel
audio, causing an assert later on.

13 years agodvbsuboverlay: Revert some parts of last commit that shouldn't be committed
Sebastian Dröge [Mon, 6 Dec 2010 16:08:55 +0000 (17:08 +0100)]
dvbsuboverlay: Revert some parts of last commit that shouldn't be committed

13 years agodvbsuboverlay: Really choose the latest possible subpictures
Sebastian Dröge [Mon, 6 Dec 2010 16:05:28 +0000 (17:05 +0100)]
dvbsuboverlay: Really choose the latest possible subpictures

And not the first subpictures that are still valid according to the
page timeout.

13 years agodvbsuboverlay: Refactor blending function and take average of all chroma values
Sebastian Dröge [Mon, 6 Dec 2010 15:44:11 +0000 (16:44 +0100)]
dvbsuboverlay: Refactor blending function and take average of all chroma values

13 years agodvbsuboverlay: Improve selection of current to be displayed subpictures
Sebastian Dröge [Fri, 3 Dec 2010 16:35:36 +0000 (17:35 +0100)]
dvbsuboverlay: Improve selection of current to be displayed subpictures

Drop all subpictures that are too old anyway and clear the currently
displayed subpictures if num_rects==0 happens.

13 years agodvbsuboverlay: Implement clipping of video buffers
Sebastian Dröge [Fri, 3 Dec 2010 15:21:15 +0000 (16:21 +0100)]
dvbsuboverlay: Implement clipping of video buffers

Also don't clip subpicture buffers, they have no duration and
clipping them doesn't make much sense here.

13 years agodvbsuboverlay: Clean up locking some more
Sebastian Dröge [Fri, 3 Dec 2010 15:08:13 +0000 (16:08 +0100)]
dvbsuboverlay: Clean up locking some more

13 years agodvbsuboverlay: Flush subtitles and all internal state when needed
Sebastian Dröge [Fri, 3 Dec 2010 15:05:56 +0000 (16:05 +0100)]
dvbsuboverlay: Flush subtitles and all internal state when needed

13 years agodvbsuboverlay: Set the global library log function exactly once
Sebastian Dröge [Fri, 3 Dec 2010 14:52:21 +0000 (15:52 +0100)]
dvbsuboverlay: Set the global library log function exactly once

And don't use one of the possibly many renderer instances, this is only
calling for crashes.

13 years agodvbsuboverlay: Remove lots of commented out and unused code and clean up locking
Sebastian Dröge [Fri, 3 Dec 2010 14:46:40 +0000 (15:46 +0100)]
dvbsuboverlay: Remove lots of commented out and unused code and clean up locking

13 years agodvbsuboverlay: Fix more of the blending, so it looks quite good now
Mart Raudsepp [Wed, 1 Dec 2010 07:59:14 +0000 (09:59 +0200)]
dvbsuboverlay: Fix more of the blending, so it looks quite good now

* libdvbsub gives us alpha channel already, not transparency level, so
don't do another "alpha = 255 - alpha", this is done by libdvbsub.
* Fix alpha channel handling in interpolation - assrender had an additional
1bpp alpha bitmap as a possible mask, we don't. So don't use the palette
index array as alpha values; bug from quick code porting long ago to
changing pixel colors (assrender has a single pixel color for whole
regions or something, unlike dvbsub, which has indexed colors).
* Don't forget to reassign our YUV and other local pixel color variables
after shifting to work on the bottom part of a 2x2 subsample block, or
it's obviously very blocky.

Remaining issues in blending:

* Should probably be interpolating or doing something else useful with the
resulting U and V channels, so that most of the source pixel UV values would
actually be actually cared about, except for just one out of possibly four.

* Don't convert AYUV to ARGB in libdvbsub, and then back from ARGB to AYUV in
dvbsuboverlay for no reason

* Re-factor the whole thing to something more like textoverlay blending
* Related to that, perhaps cache the current spu in a good format for quick
blending on each frame, after which the more often called blending parts
might become more straightforward

13 years agodvbsuboverlay: Fix blending bug regarding color channel addressing.
Mart Raudsepp [Wed, 1 Dec 2010 05:26:03 +0000 (07:26 +0200)]
dvbsuboverlay: Fix blending bug regarding color channel addressing.

libdvbsub gives us ARGB ordered pixels right now, not RGBA.

13 years agodvbsuboverlay: Do blending calls when appropriate
Mart Raudsepp [Wed, 1 Dec 2010 05:20:07 +0000 (07:20 +0200)]
dvbsuboverlay: Do blending calls when appropriate

This gives us actually shown subtitles, however with bugs in the
current blitting code, resulting in very transparent subtitles.

13 years agodvbsuboverlay: Implement fallback page_time_out honoring
Mart Raudsepp [Wed, 1 Dec 2010 05:06:35 +0000 (07:06 +0200)]
dvbsuboverlay: Implement fallback page_time_out honoring

The spec has a page_time_out in the page composition segment to ensure
subtitles don't get stuck on screen for too much longer than intended,
when future page composition segments get lost on bad reception, or other
problems. Honor it in the gst plugin side.

13 years agodvbsuboverlay: Implement subtitle queueing and syncing with video
Mart Raudsepp [Wed, 1 Dec 2010 04:01:15 +0000 (06:01 +0200)]
dvbsuboverlay: Implement subtitle queueing and syncing with video

Push incoming subtitle pages in a FIFO queue (pending_subtitles)
and dequeue the head when it's time to show it (when video running
time reaches the subtitle page running time).
Keep the subtitle page, that is supposed to be blended on top of video
currently, in a separate object variable (current_subtitle). As a
next step we can then pre-render current_subtitle to a better to blend
format.

13 years agodvbsuboverlay: Make the new dvb_subtitles_free() accept NULL
Mart Raudsepp [Wed, 1 Dec 2010 03:49:22 +0000 (05:49 +0200)]
dvbsuboverlay: Make the new dvb_subtitles_free() accept NULL

Don't crash if dvb_subtitles_free(NULL) gets passed, like most other
*_free functions are happy with.

13 years agodvbsuboverlay: Pass page_time_out and pts with the DVBSubtitles structure
Mart Raudsepp [Wed, 1 Dec 2010 03:26:02 +0000 (05:26 +0200)]
dvbsuboverlay: Pass page_time_out and pts with the DVBSubtitles structure

Eases holding onto the information in gst plugins side queue of
DVBSubtitles, so we won't need to create yet another temporary struct
to keep the pts and page_time_out too.
And this really logically belongs at the toplevel information set anyway
and in that struct...

13 years agodvbsuboverlay: Make the libdvbsub callback handler responsible for memory cleanup
Mart Raudsepp [Wed, 1 Dec 2010 02:28:02 +0000 (04:28 +0200)]
dvbsuboverlay: Make the libdvbsub callback handler responsible for memory cleanup

We want to allow queueing of raw region image data in the gst plugin side,
and keep the data around until we pop the item from the queue. So make
the callback handler responsible for memory cleanup, if one is installed.

13 years agodvbsuboverlay: Work with GstClockTime instead of PTS for subtitle timing
Mart Raudsepp [Tue, 30 Nov 2010 02:45:54 +0000 (04:45 +0200)]
dvbsuboverlay: Work with GstClockTime instead of PTS for subtitle timing

Abuse libdvbsub PTS tracking to just store our running time in it, to get
it back in the callbacks. As GStreamer does its own PTS handling behind our
back (especially for video), we should just sync with video per running time,
not try to do it with PTS, which doesn't seem well accessible for video chain.
We can later relabel dvb-sub.c pts naming convention if wanted, it's just
passing along guint64 values, which GstClockTime fortunately is too.

The current idea is to collect the regions returned by the callback into
a FIFO buffer and pop and pre-render the top one into a separate
quick-to-blend cached format, which is then appropriately blended in the
video chain until the next one on top of the stack reaches the video chains
running time (or the fallback timer hits).

13 years agodvbsuboverlay: Add FIXME note about non-constant PTS for a display set handling.
Mart Raudsepp [Tue, 30 Nov 2010 01:56:32 +0000 (03:56 +0200)]
dvbsuboverlay: Add FIXME note about non-constant PTS for a display set handling.