\r
int ffmpeg_lock_callback(void **mutex, enum AVLockOp op) \r
{ \r
- static tbb::mutex container_mutex;\r
- static std::vector<tbb::mutex> container; \r
-\r
if(!mutex)\r
return 0;\r
\r
{ \r
case AV_LOCK_CREATE: \r
{ \r
- tbb::mutex::scoped_lock lock(container_mutex);\r
- container.push_back(tbb::mutex());\r
- *mutex = &container.back(); \r
+ *mutex = new tbb::mutex(); \r
break; \r
} \r
case AV_LOCK_OBTAIN: \r
} \r
case AV_LOCK_DESTROY: \r
{ \r
- tbb::mutex::scoped_lock lock(container_mutex);\r
- container.erase(std::remove_if(container.begin(), container.end(), [&](const tbb::mutex& m)\r
- {\r
- return &m == my_mutex;\r
- }), container.end());\r
+ delete my_mutex;\r
+ *mutex = nullptr;\r
break; \r
} \r
} \r