summaryrefslogtreecommitdiff
path: root/xine/BluRay/patches
diff options
context:
space:
mode:
Diffstat (limited to 'xine/BluRay/patches')
-rw-r--r--xine/BluRay/patches/xine-lib-1.1.16.3-ffmpeg-vc1-extradata.diff62
-rw-r--r--xine/BluRay/patches/xine-lib-1.1.16.3-ffmpeg-vc1-reopen.diff25
2 files changed, 0 insertions, 87 deletions
diff --git a/xine/BluRay/patches/xine-lib-1.1.16.3-ffmpeg-vc1-extradata.diff b/xine/BluRay/patches/xine-lib-1.1.16.3-ffmpeg-vc1-extradata.diff
deleted file mode 100644
index c37c7e28..00000000
--- a/xine/BluRay/patches/xine-lib-1.1.16.3-ffmpeg-vc1-extradata.diff
+++ /dev/null
@@ -1,62 +0,0 @@
---- 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
-@@ -1165,6 +1181,49 @@
- }
- }
-
-+static int ff_vc1_find_header(ff_video_decoder_t *this, buf_element_t *buf)
-+{
-+ uint8_t *p = buf->content;
-+
-+ if (!p[0] && !p[1] && p[2] == 1 && p[3] == 0x0f) {
-+ int i;
-+
-+ this->context->extradata = calloc(1, buf->size);
-+ this->context->extradata_size = 0;
-+
-+ for (i = 0; i < buf->size && i < 128; i++) {
-+ if (!p[i] && !p[i+1] && p[i+2]) {
-+ lprintf("00 00 01 %02x at %d\n", p[i+3], i);
-+ if (p[i+3] != 0x0e && p[i+3] != 0x0f)
-+ break;
-+ }
-+ this->context->extradata[i] = p[i];
-+ this->context->extradata_size++;
-+ }
-+
-+ lprintf("ff_video_decoder: found VC1 sequence header\n");
-+ return 1;
-+ }
-+
-+ xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG,
-+ "ffmpeg_video_dec: VC1 extradata missing !\n");
-+ return 0;
-+}
-+
-+static int ff_check_extradata(ff_video_decoder_t *this, unsigned int codec_type, buf_element_t *buf)
-+{
-+ if (this->context && this->context->extradata)
-+ return 1;
-+
-+ switch (codec_type) {
-+ case BUF_VIDEO_VC1:
-+ return ff_vc1_find_header(this, buf);
-+ default:;
-+ }
-+
-+ return 1;
-+}
-+
- #endif /* AVCODEC_HAS_REORDERED_OPAQUE */
- static void ff_handle_buffer (ff_video_decoder_t *this, buf_element_t *buf) {
- uint8_t *chunk_buf = this->buf;
-@@ -1176,6 +1235,9 @@
- if (this->decoder_init_mode) {
- int codec_type = buf->type & 0xFFFF0000;
-
-+ if (!ff_check_extradata(this, codec_type, buf))
-+ return;
-+
- /* init ffmpeg decoder */
- init_video_codec(this, codec_type);
- init_postprocess(this);
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
deleted file mode 100644
index 745931b5..00000000
--- a/xine/BluRay/patches/xine-lib-1.1.16.3-ffmpeg-vc1-reopen.diff
+++ /dev/null
@@ -1,25 +0,0 @@
---- 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;