kenburns plugin

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

kenburns plugin

Lane Brooks
I have written a kenburns plugin
(http://en.wikipedia.org/wiki/Ken_burns_effect) that does smooth
zooming/panning simultaneously.

I have it committed in a git repo at https://github.com/dirjud/kenburns

There are some gst-launch samples in the src/gstkenburns.c file.

Currently I have only implemented nearest neighbor sampling, so it is
fast but can show aliasing artifacts.

Is this something that the developers would be interested in seeing
integrated into gstreamer?

Any feedback would be appreciated.

Thanks,
Lane

------------------------------------------------------------------------------
Gaining the trust of online customers is vital for the success of any company
that requires sensitive data to be transmitted over the Web.   Learn how to
best implement a security strategy that keeps consumers' information secure
and instills the confidence they need to proceed with transactions.
http://p.sf.net/sfu/oracle-sfdevnl 
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: kenburns plugin

Gruenke, Matt
Speaking for myself, I'm interested in an efficient, high-quality element that zooms, shifts, and crops.  At least one of the sampling options should be a low-pass filter that can be used to do any interpolation, decimation, and phase-shifting in one pass.  The number of taps should be selectable and either use an optimal filter or at least support some common window functions.
 
IMO, this is the hard part.  Once you have it, then the Ken Burns Effect can be implemented via Dynamic Parameters (see Plugin Writer's Guide: Ch. 15).  However, the benefit of making it a generic element is that you can also just use it as a fast, high-quality way to statically zoom and/or crop.
 
 
Matt
 

________________________________

From: Lane Brooks [mailto:[hidden email]]
Sent: Mon 1/10/2011 3:51 PM
To: Discussion of the development of GStreamer
Subject: [gst-devel] kenburns plugin



I have written a kenburns plugin
(http://en.wikipedia.org/wiki/Ken_burns_effect) that does smooth
zooming/panning simultaneously.

I have it committed in a git repo at https://github.com/dirjud/kenburns

There are some gst-launch samples in the src/gstkenburns.c file.

Currently I have only implemented nearest neighbor sampling, so it is
fast but can show aliasing artifacts.

Is this something that the developers would be interested in seeing
integrated into gstreamer?

Any feedback would be appreciated.

Thanks,
Lane

------------------------------------------------------------------------------
Gaining the trust of online customers is vital for the success of any company
that requires sensitive data to be transmitted over the Web.   Learn how to
best implement a security strategy that keeps consumers' information secure
and instills the confidence they need to proceed with transactions.
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel



------------------------------------------------------------------------------
Gaining the trust of online customers is vital for the success of any company
that requires sensitive data to be transmitted over the Web.   Learn how to
best implement a security strategy that keeps consumers' information secure
and instills the confidence they need to proceed with transactions.
http://p.sf.net/sfu/oracle-sfdevnl 
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel

winmail.dat (6K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: kenburns plugin

Stefan Sauer
In reply to this post by Lane Brooks
On 10.01.2011 22:51, Lane Brooks wrote:
> I have written a kenburns plugin
> (http://en.wikipedia.org/wiki/Ken_burns_effect) that does smooth
> zooming/panning simultaneously.
>
> I have it committed in a git repo at https://github.com/dirjud/kenburns
>
> There are some gst-launch samples in the src/gstkenburns.c file.

Such a plugin would be welcome. Make a patch against gst-plugins-bad and
put it to bugzilla. Add yourself to the copyright comment.
> Currently I have only implemented nearest neighbor sampling, so it is
> fast but can show aliasing artifacts.
Yes, n-tap filtering would be nice to have, but thats no show-stopper
for getting it into bad.

Do you know about GstController? I would prefer to only have "zoom",
"xcenter", "ycenter" properties, make then controllable and leave the
animations to GstController. With that you get envelops and LFOs right now.

Stefan

> Is this something that the developers would be interested in seeing
> integrated into gstreamer?
>
> Any feedback would be appreciated.
>
> Thanks,
> Lane
>
> ------------------------------------------------------------------------------
> Gaining the trust of online customers is vital for the success of any company
> that requires sensitive data to be transmitted over the Web.   Learn how to
> best implement a security strategy that keeps consumers' information secure
> and instills the confidence they need to proceed with transactions.
> http://p.sf.net/sfu/oracle-sfdevnl 
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel


------------------------------------------------------------------------------
Protect Your Site and Customers from Malware Attacks
Learn about various malware tactics and how to avoid them. Understand
malware threats, the impact they can have on your business, and how you
can protect your company and customers by using code signing.
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: kenburns plugin

Lane Brooks
On 01/12/2011 08:24 AM, Stefan Kost wrote:

> On 10.01.2011 22:51, Lane Brooks wrote:
>> I have written a kenburns plugin
>> (http://en.wikipedia.org/wiki/Ken_burns_effect) that does smooth
>> zooming/panning simultaneously.
>>
>> I have it committed in a git repo at https://github.com/dirjud/kenburns
>>
>> There are some gst-launch samples in the src/gstkenburns.c file.
>
> Such a plugin would be welcome. Make a patch against gst-plugins-bad and
> put it to bugzilla. Add yourself to the copyright comment.
>> Currently I have only implemented nearest neighbor sampling, so it is
>> fast but can show aliasing artifacts.
> Yes, n-tap filtering would be nice to have, but thats no show-stopper
> for getting it into bad.
>
> Do you know about GstController? I would prefer to only have "zoom",
> "xcenter", "ycenter" properties, make then controllable and leave the
> animations to GstController. With that you get envelops and LFOs right now.

I do know about controllers and opted not to use them because of the
complication I thought it would put on the user for anything other than
the linear case. For example, I implemented an internal controller that
ramps up the velocity linearly until it reaches a paramaterized time.
It then holds the velocity constant until it reaches the parameter
mirror at the end where it ramps the velocity back down. This gives a
nice looking effect. It requires taking some time derivatives
(converting velocity to position) and what not. I wanted to have nice
movement options that did not require the user to do a lot of math.

That said, not enabling external controllers does limit the
functionality. For example, my current implementation only allows for
one pan/zoom on a linear path. Using controllers, you could do curved
paths or whatever. Let me play a little with the controllers to see if I
can get similarly nice movement with them. Controllers would make it
more generic, but I don't want to loose the ease of use.

Actually, I just had another thought. Currently I have a few different
user selectable internal controllers like the velocity ramping one
described above. Would it work to add another option that lets the user
select to use an external controller instead? Then for the simple use
case, you just set "zoom1", "xcenter1", "ycenter1", "zoom2", "xcenter2",
"ycenter2", and "duration". For the more advanced usage, you instead put
a controller on "zoom1", "xcenter1", and "ycenter1" and select to
disable the internal controller.

Lane

------------------------------------------------------------------------------
Protect Your Site and Customers from Malware Attacks
Learn about various malware tactics and how to avoid them. Understand
malware threats, the impact they can have on your business, and how you
can protect your company and customers by using code signing.
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: kenburns plugin

Gruenke, Matt
I'd recommend making a custom bin to encapsulate the full controls with
a set of simplified parameters.  You could add a controller interface to
kenburns, and then make a custom bin called kenburns_easy, for instance,
that provides a simplified interface by using an internal controller.

One example of this is rtspsrc, which is a bin.  It encapsulates a lot
of other elements that one can also use in a stand-alone fashion.


Matt


-----Original Message-----
From: Lane Brooks [mailto:[hidden email]]
Sent: Wednesday, January 12, 2011 18:49
To: Discussion of the development of GStreamer
Subject: Re: [gst-devel] kenburns plugin

On 01/12/2011 08:24 AM, Stefan Kost wrote:
> On 10.01.2011 22:51, Lane Brooks wrote:

<snip/>

Actually, I just had another thought. Currently I have a few different
user selectable internal controllers like the velocity ramping one
described above. Would it work to add another option that lets the user
select to use an external controller instead? Then for the simple use
case, you just set "zoom1", "xcenter1", "ycenter1", "zoom2", "xcenter2",

"ycenter2", and "duration". For the more advanced usage, you instead put

a controller on "zoom1", "xcenter1", and "ycenter1" and select to
disable the internal controller.

Lane

------------------------------------------------------------------------------
Protect Your Site and Customers from Malware Attacks
Learn about various malware tactics and how to avoid them. Understand
malware threats, the impact they can have on your business, and how you
can protect your company and customers by using code signing.
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: kenburns plugin

Stefan Sauer
Hi matt & Lane,

On 13.01.2011 08:27, Gruenke, Matt wrote:
> I'd recommend making a custom bin to encapsulate the full controls with
> a set of simplified parameters.  You could add a controller interface to
> kenburns, and then make a custom bin called kenburns_easy, for instance,
> that provides a simplified interface by using an internal controller.
>
> One example of this is rtspsrc, which is a bin.  It encapsulates a lot
> of other elements that one can also use in a stand-alone fashion.
>

Not necessarily a bin, but yes. What about having a kenburns plugins
with several elements, all sharing the same codebase. One can provide
single controlable zoom, x/y-center props and the other has what you
have now.

Stefan

> Matt
>
>
> -----Original Message-----
> From: Lane Brooks [mailto:[hidden email]]
> Sent: Wednesday, January 12, 2011 18:49
> To: Discussion of the development of GStreamer
> Subject: Re: [gst-devel] kenburns plugin
>
> On 01/12/2011 08:24 AM, Stefan Kost wrote:
>> On 10.01.2011 22:51, Lane Brooks wrote:
> <snip/>
>
> Actually, I just had another thought. Currently I have a few different
> user selectable internal controllers like the velocity ramping one
> described above. Would it work to add another option that lets the user
> select to use an external controller instead? Then for the simple use
> case, you just set "zoom1", "xcenter1", "ycenter1", "zoom2", "xcenter2",
>
> "ycenter2", and "duration". For the more advanced usage, you instead put
>
> a controller on "zoom1", "xcenter1", and "ycenter1" and select to
> disable the internal controller.
>
> Lane
>
> ------------------------------------------------------------------------------
> Protect Your Site and Customers from Malware Attacks
> Learn about various malware tactics and how to avoid them. Understand
> malware threats, the impact they can have on your business, and how you
> can protect your company and customers by using code signing.
> http://p.sf.net/sfu/oracle-sfdevnl
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel


------------------------------------------------------------------------------
Protect Your Site and Customers from Malware Attacks
Learn about various malware tactics and how to avoid them. Understand
malware threats, the impact they can have on your business, and how you
can protect your company and customers by using code signing.
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel