summaryrefslogtreecommitdiff
path: root/xine/BluRay/patches/xine-lib-1.1.16.3-ffmpeg-vc1-reopen.diff
blob: 745931b53206b1e4a2acae864e08102c42d2ec8c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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;