summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorfbarchard@chromium.org <fbarchard@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-07 02:03:59 +0000
committerfbarchard@chromium.org <fbarchard@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-07 02:03:59 +0000
commit240faaf618d2247aa7da87fab9360cac95c3ba38 (patch)
tree6473c571e3d745c7cdb23acf97966937451b5ac8 /media
parent35bafaadad173ef29fb0aecb7d7f0adee79c04d8 (diff)
downloadchromium_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.cc7
-rw-r--r--media/test/ffmpeg_tests/ffmpeg_tests.cc7
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.