Advice on plugin/pipeline design

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

Advice on plugin/pipeline design

Sameer Naik
Hi,
I am developing a multimedia application for an embedded system based on TI's DM6446 platform. The decoding of the audio and video frames will be done using the HW decoders. The platform also includes a hardware resizer, that allows resizing of the video frames in hardware, thereby making the resizing operations pretty quick.

I need some advice on the architecture that i should base by application on. Following are the architectures that i have come up with

1.
- audio decoder plugins
- video decoder plugins
- resizer plugin
- frame buffer output plugin
Here i can build a seperate plugin to do the resizing of video frames. This would conform more with gstreamer's idea that "every element does one thing", providing better reusability. To reduce to number of memcpy's, i could equip the frame buffer plugin with pad allocation capabilities and accordingly add pad_alloc calls in the resizer plugin. The only this is, in this case the frames will always be resized, regardless of whether the frame is going to be displayed or dropped. I am not really sure whether this is that big of a problem considering that the number of frames that could be dropped is very less.

2.
- audio decoder plugins
- video decoder plugins
- frame buffer plugin with resizing capabilities using the hw resizer.
Here i can build the frame buffer plugin with the built in capability to resize video frames. In this case i could resize the frame only if it is going to be displayed (i.e. just before it would be displayed on screen). Now in this case i loose the reusability advantage, which i can live with if i am able to achieve smooth video playback with av sync. In this case, I am not sure whether the last minute resizing of the frame would introduce a lot of latency while displaying the frame. Given that it is a hardware resizer i am assuming it would be quick.

P.S. I would be employing the pad allocation method in other parts of the pipeline as well, so as to reduce the number of memcpy's going on in the pipeline.

Please Advice.

Regards
~Sameer


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Advice on plugin/pipeline design

Brijesh Singh
Hello,

Have you looked at gstreamer.ti.com ?  gst_ti has all the elements you
need. It support wide varity of TI platforms. (DM6446, DM355, DM365,
DM357, DM6467, OMAP3530 and more...).

To understand design detail you can watch 25-min of video presentation.

https://gstreamer.ti.com/gf/project/gstreamer_ti/wiki/?pagename=OverviewPresentation

We do not have pad-allocation method yet (may be you can contribute on
project). We use hw accelerated framecopy to copy the data from video
decoder -> sink element. Depending on the platform, this hw
accelerator may be resizer/dma/vdce/sdma etc...


Thanks
Brijesh

On Sun, Nov 22, 2009 at 4:18 AM, Sameer Naik
<[hidden email]> wrote:

> Hi,
> I am developing a multimedia application for an embedded system based on
> TI's DM6446 platform. The decoding of the audio and video frames will be
> done using the HW decoders. The platform also includes a hardware resizer,
> that allows resizing of the video frames in hardware, thereby making the
> resizing operations pretty quick.
>
> I need some advice on the architecture that i should base by application on.
> Following are the architectures that i have come up with
>
> 1.
> - audio decoder plugins
> - video decoder plugins
> - resizer plugin
> - frame buffer output plugin
> Here i can build a seperate plugin to do the resizing of video frames. This
> would conform more with gstreamer's idea that "every element does one
> thing", providing better reusability. To reduce to number of memcpy's, i
> could equip the frame buffer plugin with pad allocation capabilities and
> accordingly add pad_alloc calls in the resizer plugin. The only this is, in
> this case the frames will always be resized, regardless of whether the frame
> is going to be displayed or dropped. I am not really sure whether this is
> that big of a problem considering that the number of frames that could be
> dropped is very less.
>
> 2.
> - audio decoder plugins
> - video decoder plugins
> - frame buffer plugin with resizing capabilities using the hw resizer.
> Here i can build the frame buffer plugin with the built in capability to
> resize video frames. In this case i could resize the frame only if it is
> going to be displayed (i.e. just before it would be displayed on screen).
> Now in this case i loose the reusability advantage, which i can live with if
> i am able to achieve smooth video playback with av sync. In this case, I am
> not sure whether the last minute resizing of the frame would introduce a lot
> of latency while displaying the frame. Given that it is a hardware resizer i
> am assuming it would be quick.
>
> P.S. I would be employing the pad allocation method in other parts of the
> pipeline as well, so as to reduce the number of memcpy's going on in the
> pipeline.
>
> Please Advice.
>
> Regards
> ~Sameer
>
>
> ------------------------------------------------------------------------------
> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
> trial. Simplify your report design, integration and deployment - and focus
> on
> what you do best, core application coding. Discover what's new with
> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>
>



--
Confusion is always the most honest response.

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Advice on plugin/pipeline design

Sameer Naik
Hello,
I had taken a look at the gstreamer-ti plugins some time back. One of the things that i noticed is threads being spawned from within the decoder plugins, which does not fit well with me. I also noticed quite a lot of bugs in the code, which kept me from using it or hacking on it. Besides i already have most of the functionality implemented and just need to tweak my code/design a bit, hence the mail.

Thanks and Regards
~Sameer

On Sun, Nov 22, 2009 at 9:27 PM, Brijesh Singh <[hidden email]> wrote:
Hello,

Have you looked at gstreamer.ti.com ?  gst_ti has all the elements you
need. It support wide varity of TI platforms. (DM6446, DM355, DM365,
DM357, DM6467, OMAP3530 and more...).

To understand design detail you can watch 25-min of video presentation.

https://gstreamer.ti.com/gf/project/gstreamer_ti/wiki/?pagename=OverviewPresentation

We do not have pad-allocation method yet (may be you can contribute on
project). We use hw accelerated framecopy to copy the data from video
decoder -> sink element. Depending on the platform, this hw
accelerator may be resizer/dma/vdce/sdma etc...


Thanks
Brijesh

On Sun, Nov 22, 2009 at 4:18 AM, Sameer Naik
<[hidden email]> wrote:
> Hi,
> I am developing a multimedia application for an embedded system based on
> TI's DM6446 platform. The decoding of the audio and video frames will be
> done using the HW decoders. The platform also includes a hardware resizer,
> that allows resizing of the video frames in hardware, thereby making the
> resizing operations pretty quick.
>
> I need some advice on the architecture that i should base by application on.
> Following are the architectures that i have come up with
>
> 1.
> - audio decoder plugins
> - video decoder plugins
> - resizer plugin
> - frame buffer output plugin
> Here i can build a seperate plugin to do the resizing of video frames. This
> would conform more with gstreamer's idea that "every element does one
> thing", providing better reusability. To reduce to number of memcpy's, i
> could equip the frame buffer plugin with pad allocation capabilities and
> accordingly add pad_alloc calls in the resizer plugin. The only this is, in
> this case the frames will always be resized, regardless of whether the frame
> is going to be displayed or dropped. I am not really sure whether this is
> that big of a problem considering that the number of frames that could be
> dropped is very less.
>
> 2.
> - audio decoder plugins
> - video decoder plugins
> - frame buffer plugin with resizing capabilities using the hw resizer.
> Here i can build the frame buffer plugin with the built in capability to
> resize video frames. In this case i could resize the frame only if it is
> going to be displayed (i.e. just before it would be displayed on screen).
> Now in this case i loose the reusability advantage, which i can live with if
> i am able to achieve smooth video playback with av sync. In this case, I am
> not sure whether the last minute resizing of the frame would introduce a lot
> of latency while displaying the frame. Given that it is a hardware resizer i
> am assuming it would be quick.
>
> P.S. I would be employing the pad allocation method in other parts of the
> pipeline as well, so as to reduce the number of memcpy's going on in the
> pipeline.
>
> Please Advice.
>
> Regards
> ~Sameer
>
>
> ------------------------------------------------------------------------------
> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
> trial. Simplify your report design, integration and deployment - and focus
> on
> what you do best, core application coding. Discover what's new with
> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>
>



--
Confusion is always the most honest response.

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Advice on plugin/pipeline design

Brijesh Singh
>One of the things that i noticed is threads being spawned from within the decoder
>plugins, which does not fit well with me.

Well threads are used for parallelizing  ARM and DSP execution to meet
the real-time performance on some platforms. But you can remove thread
and call decoder directly from the chain() functions. Or use queue
element to put the decoder element in different threads.

> I also noticed quite a lot of bugs in the code, which kept me from using it or hacking on it.
Can you please submit BUGs on gstreamer.ti.com ?


Thanks
Brijesh

On Sun, Nov 22, 2009 at 11:07 AM, Sameer Naik
<[hidden email]> wrote:

> Hello,
> I had taken a look at the gstreamer-ti plugins some time back. One of the
> things that i noticed is threads being spawned from within the decoder
> plugins, which does not fit well with me. I also noticed quite a lot of bugs
> in the code, which kept me from using it or hacking on it. Besides i already
> have most of the functionality implemented and just need to tweak my
> code/design a bit, hence the mail.
>
> Thanks and Regards
> ~Sameer
>
> On Sun, Nov 22, 2009 at 9:27 PM, Brijesh Singh <[hidden email]>
> wrote:
>>
>> Hello,
>>
>> Have you looked at gstreamer.ti.com ?  gst_ti has all the elements you
>> need. It support wide varity of TI platforms. (DM6446, DM355, DM365,
>> DM357, DM6467, OMAP3530 and more...).
>>
>> To understand design detail you can watch 25-min of video presentation.
>>
>>
>> https://gstreamer.ti.com/gf/project/gstreamer_ti/wiki/?pagename=OverviewPresentation
>>
>> We do not have pad-allocation method yet (may be you can contribute on
>> project). We use hw accelerated framecopy to copy the data from video
>> decoder -> sink element. Depending on the platform, this hw
>> accelerator may be resizer/dma/vdce/sdma etc...
>>
>>
>> Thanks
>> Brijesh
>>
>> On Sun, Nov 22, 2009 at 4:18 AM, Sameer Naik
>> <[hidden email]> wrote:
>> > Hi,
>> > I am developing a multimedia application for an embedded system based on
>> > TI's DM6446 platform. The decoding of the audio and video frames will be
>> > done using the HW decoders. The platform also includes a hardware
>> > resizer,
>> > that allows resizing of the video frames in hardware, thereby making the
>> > resizing operations pretty quick.
>> >
>> > I need some advice on the architecture that i should base by application
>> > on.
>> > Following are the architectures that i have come up with
>> >
>> > 1.
>> > - audio decoder plugins
>> > - video decoder plugins
>> > - resizer plugin
>> > - frame buffer output plugin
>> > Here i can build a seperate plugin to do the resizing of video frames.
>> > This
>> > would conform more with gstreamer's idea that "every element does one
>> > thing", providing better reusability. To reduce to number of memcpy's, i
>> > could equip the frame buffer plugin with pad allocation capabilities and
>> > accordingly add pad_alloc calls in the resizer plugin. The only this is,
>> > in
>> > this case the frames will always be resized, regardless of whether the
>> > frame
>> > is going to be displayed or dropped. I am not really sure whether this
>> > is
>> > that big of a problem considering that the number of frames that could
>> > be
>> > dropped is very less.
>> >
>> > 2.
>> > - audio decoder plugins
>> > - video decoder plugins
>> > - frame buffer plugin with resizing capabilities using the hw resizer.
>> > Here i can build the frame buffer plugin with the built in capability to
>> > resize video frames. In this case i could resize the frame only if it is
>> > going to be displayed (i.e. just before it would be displayed on
>> > screen).
>> > Now in this case i loose the reusability advantage, which i can live
>> > with if
>> > i am able to achieve smooth video playback with av sync. In this case, I
>> > am
>> > not sure whether the last minute resizing of the frame would introduce a
>> > lot
>> > of latency while displaying the frame. Given that it is a hardware
>> > resizer i
>> > am assuming it would be quick.
>> >
>> > P.S. I would be employing the pad allocation method in other parts of
>> > the
>> > pipeline as well, so as to reduce the number of memcpy's going on in the
>> > pipeline.
>> >
>> > Please Advice.
>> >
>> > Regards
>> > ~Sameer
>> >
>> >
>> >
>> > ------------------------------------------------------------------------------
>> > Let Crystal Reports handle the reporting - Free Crystal Reports 2008
>> > 30-Day
>> > trial. Simplify your report design, integration and deployment - and
>> > focus
>> > on
>> > what you do best, core application coding. Discover what's new with
>> > Crystal Reports now.  http://p.sf.net/sfu/bobj-july
>> > _______________________________________________
>> > gstreamer-devel mailing list
>> > [hidden email]
>> > https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>> >
>> >
>>
>>
>>
>> --
>> Confusion is always the most honest response.
>>
>>
>> ------------------------------------------------------------------------------
>> Let Crystal Reports handle the reporting - Free Crystal Reports 2008
>> 30-Day
>> trial. Simplify your report design, integration and deployment - and focus
>> on
>> what you do best, core application coding. Discover what's new with
>> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
>> _______________________________________________
>> gstreamer-devel mailing list
>> [hidden email]
>> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>
>
> ------------------------------------------------------------------------------
> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
> trial. Simplify your report design, integration and deployment - and focus
> on
> what you do best, core application coding. Discover what's new with
> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>
>



--
Confusion is always the most honest response.

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Advice on plugin/pipeline design

Sameer Naik
Sure

On Sun, Nov 22, 2009 at 11:43 PM, Brijesh Singh <[hidden email]> wrote:
>One of the things that i noticed is threads being spawned from within the decoder
>plugins, which does not fit well with me.

Well threads are used for parallelizing  ARM and DSP execution to meet
the real-time performance on some platforms. But you can remove thread
and call decoder directly from the chain() functions. Or use queue
element to put the decoder element in different threads.

> I also noticed quite a lot of bugs in the code, which kept me from using it or hacking on it.
Can you please submit BUGs on gstreamer.ti.com ?


Thanks
Brijesh

On Sun, Nov 22, 2009 at 11:07 AM, Sameer Naik
<[hidden email]> wrote:
> Hello,
> I had taken a look at the gstreamer-ti plugins some time back. One of the
> things that i noticed is threads being spawned from within the decoder
> plugins, which does not fit well with me. I also noticed quite a lot of bugs
> in the code, which kept me from using it or hacking on it. Besides i already
> have most of the functionality implemented and just need to tweak my
> code/design a bit, hence the mail.
>
> Thanks and Regards
> ~Sameer
>
> On Sun, Nov 22, 2009 at 9:27 PM, Brijesh Singh <[hidden email]>
> wrote:
>>
>> Hello,
>>
>> Have you looked at gstreamer.ti.com ?  gst_ti has all the elements you
>> need. It support wide varity of TI platforms. (DM6446, DM355, DM365,
>> DM357, DM6467, OMAP3530 and more...).
>>
>> To understand design detail you can watch 25-min of video presentation.
>>
>>
>> https://gstreamer.ti.com/gf/project/gstreamer_ti/wiki/?pagename=OverviewPresentation
>>
>> We do not have pad-allocation method yet (may be you can contribute on
>> project). We use hw accelerated framecopy to copy the data from video
>> decoder -> sink element. Depending on the platform, this hw
>> accelerator may be resizer/dma/vdce/sdma etc...
>>
>>
>> Thanks
>> Brijesh
>>
>> On Sun, Nov 22, 2009 at 4:18 AM, Sameer Naik
>> <[hidden email]> wrote:
>> > Hi,
>> > I am developing a multimedia application for an embedded system based on
>> > TI's DM6446 platform. The decoding of the audio and video frames will be
>> > done using the HW decoders. The platform also includes a hardware
>> > resizer,
>> > that allows resizing of the video frames in hardware, thereby making the
>> > resizing operations pretty quick.
>> >
>> > I need some advice on the architecture that i should base by application
>> > on.
>> > Following are the architectures that i have come up with
>> >
>> > 1.
>> > - audio decoder plugins
>> > - video decoder plugins
>> > - resizer plugin
>> > - frame buffer output plugin
>> > Here i can build a seperate plugin to do the resizing of video frames.
>> > This
>> > would conform more with gstreamer's idea that "every element does one
>> > thing", providing better reusability. To reduce to number of memcpy's, i
>> > could equip the frame buffer plugin with pad allocation capabilities and
>> > accordingly add pad_alloc calls in the resizer plugin. The only this is,
>> > in
>> > this case the frames will always be resized, regardless of whether the
>> > frame
>> > is going to be displayed or dropped. I am not really sure whether this
>> > is
>> > that big of a problem considering that the number of frames that could
>> > be
>> > dropped is very less.
>> >
>> > 2.
>> > - audio decoder plugins
>> > - video decoder plugins
>> > - frame buffer plugin with resizing capabilities using the hw resizer.
>> > Here i can build the frame buffer plugin with the built in capability to
>> > resize video frames. In this case i could resize the frame only if it is
>> > going to be displayed (i.e. just before it would be displayed on
>> > screen).
>> > Now in this case i loose the reusability advantage, which i can live
>> > with if
>> > i am able to achieve smooth video playback with av sync. In this case, I
>> > am
>> > not sure whether the last minute resizing of the frame would introduce a
>> > lot
>> > of latency while displaying the frame. Given that it is a hardware
>> > resizer i
>> > am assuming it would be quick.
>> >
>> > P.S. I would be employing the pad allocation method in other parts of
>> > the
>> > pipeline as well, so as to reduce the number of memcpy's going on in the
>> > pipeline.
>> >
>> > Please Advice.
>> >
>> > Regards
>> > ~Sameer
>> >
>> >
>> >
>> > ------------------------------------------------------------------------------
>> > Let Crystal Reports handle the reporting - Free Crystal Reports 2008
>> > 30-Day
>> > trial. Simplify your report design, integration and deployment - and
>> > focus
>> > on
>> > what you do best, core application coding. Discover what's new with
>> > Crystal Reports now.  http://p.sf.net/sfu/bobj-july
>> > _______________________________________________
>> > gstreamer-devel mailing list
>> > [hidden email]
>> > https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>> >
>> >
>>
>>
>>
>> --
>> Confusion is always the most honest response.
>>
>>
>> ------------------------------------------------------------------------------
>> Let Crystal Reports handle the reporting - Free Crystal Reports 2008
>> 30-Day
>> trial. Simplify your report design, integration and deployment - and focus
>> on
>> what you do best, core application coding. Discover what's new with
>> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
>> _______________________________________________
>> gstreamer-devel mailing list
>> [hidden email]
>> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>
>
> ------------------------------------------------------------------------------
> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
> trial. Simplify your report design, integration and deployment - and focus
> on
> what you do best, core application coding. Discover what's new with
> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>
>



--
Confusion is always the most honest response.

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Advice on plugin/pipeline design

Sameer Naik
In reply to this post by Sameer Naik
Hello,
Please comment

Regards
~Sameer

On Sun, Nov 22, 2009 at 3:48 PM, Sameer Naik
<[hidden email]> wrote:

> Hi,
> I am developing a multimedia application for an embedded system based on
> TI's DM6446 platform. The decoding of the audio and video frames will be
> done using the HW decoders. The platform also includes a hardware resizer,
> that allows resizing of the video frames in hardware, thereby making the
> resizing operations pretty quick.
>
> I need some advice on the architecture that i should base by application on.
> Following are the architectures that i have come up with
>
> 1.
> - audio decoder plugins
> - video decoder plugins
> - resizer plugin
> - frame buffer output plugin
> Here i can build a seperate plugin to do the resizing of video frames. This
> would conform more with gstreamer's idea that "every element does one
> thing", providing better reusability. To reduce to number of memcpy's, i
> could equip the frame buffer plugin with pad allocation capabilities and
> accordingly add pad_alloc calls in the resizer plugin. The only this is, in
> this case the frames will always be resized, regardless of whether the frame
> is going to be displayed or dropped. I am not really sure whether this is
> that big of a problem considering that the number of frames that could be
> dropped is very less.
>
> 2.
> - audio decoder plugins
> - video decoder plugins
> - frame buffer plugin with resizing capabilities using the hw resizer.
> Here i can build the frame buffer plugin with the built in capability to
> resize video frames. In this case i could resize the frame only if it is
> going to be displayed (i.e. just before it would be displayed on screen).
> Now in this case i loose the reusability advantage, which i can live with if
> i am able to achieve smooth video playback with av sync. In this case, I am
> not sure whether the last minute resizing of the frame would introduce a lot
> of latency while displaying the frame. Given that it is a hardware resizer i
> am assuming it would be quick.
>
> P.S. I would be employing the pad allocation method in other parts of the
> pipeline as well, so as to reduce the number of memcpy's going on in the
> pipeline.
>
> Please Advice.
>
> Regards
> ~Sameer
>
>

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Advice on plugin/pipeline design

Stefan Sauer
In reply to this post by Sameer Naik
Sameer Naik schrieb:

> Hi,
> I am developing a multimedia application for an embedded system based on
> TI's DM6446 platform. The decoding of the audio and video frames will be
> done using the HW decoders. The platform also includes a hardware
> resizer, that allows resizing of the video frames in hardware, thereby
> making the resizing operations pretty quick.
>
> I need some advice on the architecture that i should base by application
> on. Following are the architectures that i have come up with
>
> 1.
> - audio decoder plugins
> - video decoder plugins
> - resizer plugin
> - frame buffer output plugin
> Here i can build a seperate plugin to do the resizing of video frames.
> This would conform more with gstreamer's idea that "every element does
> one thing", providing better reusability. To reduce to number of
> memcpy's, i could equip the frame buffer plugin with pad allocation
> capabilities and accordingly add pad_alloc calls in the resizer plugin.
> The only this is, in this case the frames will always be resized,
> regardless of whether the frame is going to be displayed or dropped. I
> am not really sure whether this is that big of a problem considering
> that the number of frames that could be dropped is very less.

if you don't resize, just pass-through the pad_alloc to the next element. Do the
same with the buffers. Then you don't have much overhead.

Stefan


>
> 2.
> - audio decoder plugins
> - video decoder plugins
> - frame buffer plugin with resizing capabilities using the hw resizer.
> Here i can build the frame buffer plugin with the built in capability to
> resize video frames. In this case i could resize the frame only if it is
> going to be displayed (i.e. just before it would be displayed on
> screen). Now in this case i loose the reusability advantage, which i can
> live with if i am able to achieve smooth video playback with av sync. In
> this case, I am not sure whether the last minute resizing of the frame
> would introduce a lot of latency while displaying the frame. Given that
> it is a hardware resizer i am assuming it would be quick.
>
> P.S. I would be employing the pad allocation method in other parts of
> the pipeline as well, so as to reduce the number of memcpy's going on in
> the pipeline.
>
> Please Advice.
>
> Regards
> ~Sameer
>
>
> ------------------------------------------------------------------------
>
> ------------------------------------------------------------------------------
> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
> trial. Simplify your report design, integration and deployment - and focus on
> what you do best, core application coding. Discover what's new with
> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Advice on plugin/pipeline design

Sameer Naik
On Wed, Nov 25, 2009 at 1:32 AM, Stefan Kost <[hidden email]> wrote:

> Sameer Naik schrieb:
>> Hi,
>> I am developing a multimedia application for an embedded system based on
>> TI's DM6446 platform. The decoding of the audio and video frames will be
>> done using the HW decoders. The platform also includes a hardware
>> resizer, that allows resizing of the video frames in hardware, thereby
>> making the resizing operations pretty quick.
>>
>> I need some advice on the architecture that i should base by application
>> on. Following are the architectures that i have come up with
>>
>> 1.
>> - audio decoder plugins
>> - video decoder plugins
>> - resizer plugin
>> - frame buffer output plugin
>> Here i can build a seperate plugin to do the resizing of video frames.
>> This would conform more with gstreamer's idea that "every element does
>> one thing", providing better reusability. To reduce to number of
>> memcpy's, i could equip the frame buffer plugin with pad allocation
>> capabilities and accordingly add pad_alloc calls in the resizer plugin.
>> The only this is, in this case the frames will always be resized,
>> regardless of whether the frame is going to be displayed or dropped. I
>> am not really sure whether this is that big of a problem considering
>> that the number of frames that could be dropped is very less.
>
> if you don't resize, just pass-through the pad_alloc to the next element. Do the
> same with the buffers. Then you don't have much overhead.
>
Thats right, when resizing is not required i will just forward the
pad_alloc request to the peer element.

> Stefan
>
>
>>
>> 2.
>> - audio decoder plugins
>> - video decoder plugins
>> - frame buffer plugin with resizing capabilities using the hw resizer.
>> Here i can build the frame buffer plugin with the built in capability to
>> resize video frames. In this case i could resize the frame only if it is
>> going to be displayed (i.e. just before it would be displayed on
>> screen). Now in this case i loose the reusability advantage, which i can
>> live with if i am able to achieve smooth video playback with av sync. In
>> this case, I am not sure whether the last minute resizing of the frame
>> would introduce a lot of latency while displaying the frame. Given that
>> it is a hardware resizer i am assuming it would be quick.
>>
>> P.S. I would be employing the pad allocation method in other parts of
>> the pipeline as well, so as to reduce the number of memcpy's going on in
>> the pipeline.
>>
>> Please Advice.
>>
>> Regards
>> ~Sameer
>>
>>
>> ------------------------------------------------------------------------
>>
>> ------------------------------------------------------------------------------
>> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
>> trial. Simplify your report design, integration and deployment - and focus on
>> what you do best, core application coding. Discover what's new with
>> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> gstreamer-devel mailing list
>> [hidden email]
>> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>
>
> ------------------------------------------------------------------------------
> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
> trial. Simplify your report design, integration and deployment - and focus on
> what you do best, core application coding. Discover what's new with
> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel