We made changes back in 2015 to fix threading issues with the osg ffmpeg 
plugin.  I don't think these changes ever made it into OSG.  

Source repo:  https://bitbucket.org/digitalis/osg-ffmpeg-plugin/

On Monday, August 10, 2020 at 3:46:32 AM UTC-7 [email protected] wrote:

> Hi Robert,
>
> Thanks for your response.
>
> If FFmpegImageStream::publishNewFrame is invoked from a separate thread.
> Is it then somehow guaranteed that (for example) Texture2D::apply is not 
> using/reading from the image object, while 
> FFmpegImageStream::publishNewFrame is modifying it ?
>
> Cheers,
>
> Ben
>
> Op vr 31 jul. 2020 om 21:24 schreef Robert Osfield <[email protected]>:
>
>> Hi Ben,
>>
>> I'm away from my dev computer so just commenting off the top of my. 
>> FFmpegImageStream should be double buffered so that the ffmpeg thread 
>> writing to the image will be writing to one part of the data, while the 
>> other half is available to be read by the graphics thread.  This should 
>> avoid threading issues.
>>
>> The threading used by the ffmpeg plugin is separate from the viewer 
>> threading so settings related to the viewer won't be important, nor will 
>> general settings of the scene graph.
>>
>> You should be able to just add the ffmpeg genearted imagestream to a 
>> texture, start the steam going and then largely forget about it.
>>
>> Robert.
>>
>> On Friday, 31 July 2020 at 20:15:45 UTC+1 [email protected] wrote:
>>
>>> Hi,
>>>
>>> I was just looking at FFmpegImageStream, I am not very familiar with 
>>> this code, but I have some questions.
>>>
>>> It is not immediately clear to me how FFmpegImageStream::publishNewFrame 
>>> is thread safe.
>>> It seems like the image data is set (setImage) from the video decoder 
>>> thread.
>>> The image then uses a pointer to one of the buffers of the video decoder 
>>> (of which the contents might also change ?).
>>>
>>> FFmpegImageStream also doesn't seem to override requiresUpdateCall, 
>>> which I believe will result in the texture not being dynamic 
>>> (Texture2D::setImage).
>>> Which could be used, for example in StateSet::computeDataVariance(), to 
>>> determine whether the StateSet should be dynamic (which is needed for 
>>> multithreaded rendering).
>>>
>>> If anyone could shed more light on this subject, it would be very much 
>>> appreciated.
>>>
>>> Thank you.
>>>
>>> Cheers,
>>>
>>> Ben
>>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "OpenSceneGraph Users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/osg-users/386b2bdb-9924-4d01-bc42-98565c685ac0n%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/osg-users/386b2bdb-9924-4d01-bc42-98565c685ac0n%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"OpenSceneGraph Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/osg-users/89d17cce-a8a9-4c8a-a347-c5a47fc7e8c5n%40googlegroups.com.
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to