Re: [CsMain] [GSOC 2013] Video recording support

2013-04-26 Thread Alin Baciu

Hello again,

I have submitted my proposal. Any suggestions are welcome.

Cheers,
Alin

On 26/4/2013 17:10, Alin Baciu wrote:

Hello,

My name is Alin Baciu and I'm a 4'th year student at the Technical 
University of Cluj Napoca, Romania.
Some might remember me from GSOC 2011 where I implemented video decode 
support.


I'm considering the video recording support project for this year's GSOC.

I'm still studying the sound system and figuring out how I could get 
sound data from it, but I have a basic

flow for how video frames are to be recorded. I'm going to use theora.

I'm thinking of using a render target FIFO queue. Basically, every few 
frames (considering the recording is at 30FPS)

this will happen:
1. The renderer picks a render target from the front of the queue
2. If the target is clean (has been processed and turned into a video 
frame) the process goes on
2.1. If the target is dirty, that means there are no clean frames in 
the queue and either a new one is created,

or frames will be skipped until there's one available
3. The scene is rendered on the target, which is then rendered on a quad
4. The blit buffer is queried using QueryBlitBuffer, target is marked 
as dirty and is moved at the back of the queue.
Querying the blit buffer is important if we want an async recorder, 
since sharing textures between threads is too complicated.
5. A separate thread picks the first dirty target from the queue, 
converts the data from the buffer to YUV and writes it to

a file.
6. The processed target is marked as clean, so the renderer can use it.

What do you think?
As far as I remember, it should be OK to share the buffer pointer 
between threads. so this should work pretty well.


Cheers,
Alin
--
\/
Alin Baciu
/\
\/
AwkwardGames http://awkwardgames.wordpress.com/
/\
@Logomorph
\/


--
Try New Relic Now  We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service
that delivers powerful full stack analytics. Optimize and monitor your
browser, app,  servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr


___
Crystal-main mailing list
Crystal-main@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/crystal-main
Unsubscribe: 
mailto:crystal-main-requ...@lists.sourceforge.net?subject=unsubscribe
--
Try New Relic Now  We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service 
that delivers powerful full stack analytics. Optimize and monitor your
browser, app,  servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr___
Crystal-main mailing list
Crystal-main@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/crystal-main
Unsubscribe: 
mailto:crystal-main-requ...@lists.sourceforge.net?subject=unsubscribe


Re: [CsMain] [GSOC 2013] Video recording support

2013-04-26 Thread Alin Baciu
Sorry, I forgot to link it: 
http://www.google-melange.com/gsoc/proposal/review/google/gsoc2013/logomorph/15002


Cheers,
Alin

On 27/4/2013 01:12, Alin Baciu wrote:

Hello again,

I have submitted my proposal. Any suggestions are welcome.

Cheers,
Alin

On 26/4/2013 17:10, Alin Baciu wrote:

Hello,

My name is Alin Baciu and I'm a 4'th year student at the Technical 
University of Cluj Napoca, Romania.
Some might remember me from GSOC 2011 where I implemented video 
decode support.


I'm considering the video recording support project for this year's GSOC.

I'm still studying the sound system and figuring out how I could get 
sound data from it, but I have a basic

flow for how video frames are to be recorded. I'm going to use theora.

I'm thinking of using a render target FIFO queue. Basically, every 
few frames (considering the recording is at 30FPS)

this will happen:
1. The renderer picks a render target from the front of the queue
2. If the target is clean (has been processed and turned into a video 
frame) the process goes on
2.1. If the target is dirty, that means there are no clean frames in 
the queue and either a new one is created,

or frames will be skipped until there's one available
3. The scene is rendered on the target, which is then rendered on a quad
4. The blit buffer is queried using QueryBlitBuffer, target is marked 
as dirty and is moved at the back of the queue.
Querying the blit buffer is important if we want an async recorder, 
since sharing textures between threads is too complicated.
5. A separate thread picks the first dirty target from the queue, 
converts the data from the buffer to YUV and writes it to

a file.
6. The processed target is marked as clean, so the renderer can use it.

What do you think?
As far as I remember, it should be OK to share the buffer pointer 
between threads. so this should work pretty well.


Cheers,
Alin
--
\/
Alin Baciu
/\
\/
AwkwardGames http://awkwardgames.wordpress.com/
/\
@Logomorph
\/


--
Try New Relic Now  We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service
that delivers powerful full stack analytics. Optimize and monitor your
browser, app,  servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt!http://p.sf.net/sfu/newrelic_d2d_apr


___
Crystal-main mailing list
Crystal-main@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/crystal-main
Unsubscribe:mailto:crystal-main-requ...@lists.sourceforge.net?subject=unsubscribe



--
Try New Relic Now  We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service
that delivers powerful full stack analytics. Optimize and monitor your
browser, app,  servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr


___
Crystal-main mailing list
Crystal-main@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/crystal-main
Unsubscribe: 
mailto:crystal-main-requ...@lists.sourceforge.net?subject=unsubscribe
--
Try New Relic Now  We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service 
that delivers powerful full stack analytics. Optimize and monitor your
browser, app,  servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr___
Crystal-main mailing list
Crystal-main@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/crystal-main
Unsubscribe: 
mailto:crystal-main-requ...@lists.sourceforge.net?subject=unsubscribe