Hi all!

We are developing multi-stream multi-threaded video processing service and
would like to improve log usefulness by including media-stream identifier.

So instead of
[mp4 @ 0x313b820] Application provided invalid, non monotonically ...
We would like to get something like
[live stream #5] [mp4 @ 0x313b820] Application provided invalid, ...

I've found similar discussion in libav-user 2012 archives but it's not much helpful:
http://libav-users.943685.n4.nabble.com/Libav-user-Questions-about-using-libav-in-a-multi-threaded-application-td4297394.html

Now we are considering three options:
1) Register all contexts we create in context registry singleton.
   Cons:
   - we should also register indirectly created contexts
     (e.g. codecs created by avformat_open_input)
   - some indirectly created contexts probably can log before we register
     it or can be created on-demand and we won't register it
2) Set thread-local media-stream identifier before calling libav functions.
   Cons:
   - this won't work for threads created inside context
     (e.g. multi-threaded codecs)
3) Inject stream identifier into some field in context (opaque or metadata)
   Cons:
   - it seems that there is no reliable way to inject data into context.
Some contexts contain opaque or metadata field, others don't contain both
   - same cons as in registry option

Probably we are missing something and there are better ways to achieve our goal? What is the best practices of logging in multi-stream libav video processing services?


--
С уважением, Шумский Александр
Компания NetUP

_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user

Reply via email to