diff options
Diffstat (limited to 'xine/BluRay/patches/xine-lib-1.1.16.3-ffmpeg-vc1-reopen.diff')
-rw-r--r-- | xine/BluRay/patches/xine-lib-1.1.16.3-ffmpeg-vc1-reopen.diff | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/xine/BluRay/patches/xine-lib-1.1.16.3-ffmpeg-vc1-reopen.diff b/xine/BluRay/patches/xine-lib-1.1.16.3-ffmpeg-vc1-reopen.diff new file mode 100644 index 00000000..745931b5 --- /dev/null +++ b/xine/BluRay/patches/xine-lib-1.1.16.3-ffmpeg-vc1-reopen.diff @@ -0,0 +1,25 @@ +--- src/combined/ffmpeg/ff_video_decoder.c 2009-04-16 14:24:20.000000000 +0300 ++++ src/combined/ffmpeg/ff_video_decoder.c 2009-09-24 15:21:25.000000000 +0300 +@@ -340,6 +340,22 @@ + return; + } + ++ if (this->codec->id == CODEC_ID_VC1 && ++ (!this->bih.biWidth || !this->bih.biHeight)) { ++ /* VC1 codec must be re-opened with correct width and height. */ ++ avcodec_close(this->context); ++ ++ if (avcodec_open (this->context, this->codec) < 0) { ++ pthread_mutex_unlock(&ffmpeg_lock); ++ xprintf (this->stream->xine, XINE_VERBOSITY_LOG, ++ _("ffmpeg_video_dec: couldn't open decoder (pass 2)\n")); ++ free(this->context); ++ this->context = NULL; ++ _x_stream_info_set(this->stream, XINE_STREAM_INFO_VIDEO_HANDLED, 0); ++ return; ++ } ++ } ++ + if (this->class->thread_count > 1) { + avcodec_thread_init(this->context, this->class->thread_count); + this->context->thread_count = this->class->thread_count; |