diff options
author | fbarchard@chromium.org <fbarchard@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-07 02:03:59 +0000 |
---|---|---|
committer | fbarchard@chromium.org <fbarchard@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-07 02:03:59 +0000 |
commit | 240faaf618d2247aa7da87fab9360cac95c3ba38 (patch) | |
tree | 6473c571e3d745c7cdb23acf97966937451b5ac8 /media | |
parent | 35bafaadad173ef29fb0aecb7d7f0adee79c04d8 (diff) | |
download | chromium_src-240faaf618d2247aa7da87fab9360cac95c3ba38.zip chromium_src-240faaf618d2247aa7da87fab9360cac95c3ba38.tar.gz chromium_src-240faaf618d2247aa7da87fab9360cac95c3ba38.tar.bz2 |
media disable threads for ogg to avoid shutdown crash
BUG=40458
TEST=ffmpeg_tests still2.ogv
Review URL: http://codereview.chromium.org/1539022
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@43800 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media')
-rw-r--r-- | media/filters/ffmpeg_video_decode_engine.cc | 7 | ||||
-rw-r--r-- | media/test/ffmpeg_tests/ffmpeg_tests.cc | 7 |
2 files changed, 13 insertions, 1 deletions
diff --git a/media/filters/ffmpeg_video_decode_engine.cc b/media/filters/ffmpeg_video_decode_engine.cc index 916890b..568e322 100644 --- a/media/filters/ffmpeg_video_decode_engine.cc +++ b/media/filters/ffmpeg_video_decode_engine.cc @@ -48,8 +48,13 @@ void FFmpegVideoDecodeEngine::Initialize(AVStream* stream, Task* done_cb) { codec_context_->error_recognition = FF_ER_CAREFUL; AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id); + + // TODO(fbarchard): On next ffmpeg roll, retest Theora multi-threading. + int decode_threads = (codec_context_->codec_id == CODEC_ID_THEORA) + ? 1 : kDecodeThreads; + if (codec && - avcodec_thread_init(codec_context_, kDecodeThreads) >= 0 && + avcodec_thread_init(codec_context_, decode_threads) >= 0 && avcodec_open(codec_context_, codec) >= 0) { state_ = kNormal; } else { diff --git a/media/test/ffmpeg_tests/ffmpeg_tests.cc b/media/test/ffmpeg_tests/ffmpeg_tests.cc index 9dd7277..ff130d1 100644 --- a/media/test/ffmpeg_tests/ffmpeg_tests.cc +++ b/media/test/ffmpeg_tests/ffmpeg_tests.cc @@ -207,6 +207,13 @@ int main(int argc, const char** argv) { return 1; } + // TODO(fbarchard): On next ffmpeg roll, retest if this work around is needed. + if (codec_context->codec_id == CODEC_ID_THEORA) { + std::cerr << "Warning: Disabling threads to avoid Theora bug " + << in_path << std::endl; + video_threads = 1; + } + codec_context->flags2 |= CODEC_FLAG2_FAST; // Initialize threaded decode. |