| Index: media/filters/ffmpeg_glue.cc
|
| diff --git a/media/filters/ffmpeg_glue.cc b/media/filters/ffmpeg_glue.cc
|
| index 0b2ee4b7470630bd7ccae8da144abcaa9e4271b3..a920f58a3471524bf4784bc12f941c8a6cb6f697 100644
|
| --- a/media/filters/ffmpeg_glue.cc
|
| +++ b/media/filters/ffmpeg_glue.cc
|
| @@ -81,6 +81,30 @@ int CloseContext(URLContext* h) {
|
| return 0;
|
| }
|
|
|
| +int LockManagerOperation(void** lock, enum AVLockOp op) {
|
| + switch (op) {
|
| + case AV_LOCK_CREATE:
|
| + *lock = new Lock();
|
| + if (!*lock)
|
| + return 1;
|
| + return 0;
|
| +
|
| + case AV_LOCK_OBTAIN:
|
| + static_cast<Lock*>(*lock)->Acquire();
|
| + return 0;
|
| +
|
| + case AV_LOCK_RELEASE:
|
| + static_cast<Lock*>(*lock)->Release();
|
| + return 0;
|
| +
|
| + case AV_LOCK_DESTROY:
|
| + delete static_cast<Lock*>(*lock);
|
| + *lock = NULL;
|
| + return 0;
|
| + }
|
| + return 1;
|
| +}
|
| +
|
| } // namespace
|
|
|
| //------------------------------------------------------------------------------
|
| @@ -107,12 +131,14 @@ FFmpegGlue::FFmpegGlue() {
|
| // Register our protocol glue code with FFmpeg.
|
| avcodec_init();
|
| av_register_protocol(&kFFmpegURLProtocol);
|
| + av_lockmgr_register(&LockManagerOperation);
|
|
|
| // Now register the rest of FFmpeg.
|
| av_register_all();
|
| }
|
|
|
| FFmpegGlue::~FFmpegGlue() {
|
| + av_lockmgr_register(NULL);
|
| }
|
|
|
| std::string FFmpegGlue::AddProtocol(FFmpegURLProtocol* protocol) {
|
|
|