[SCM] mplayer/master: import patches from gentoo to build against libav 9
siretart at users.alioth.debian.org
siretart at users.alioth.debian.org
Fri Jan 18 22:51:48 UTC 2013
The following commit has been merged in the master branch:
commit 3d00554174062380fa7df5993b67e08ca3330f25
Author: Reinhard Tartler <siretart at tauware.de>
Date: Fri Jan 18 23:47:49 2013 +0100
import patches from gentoo to build against libav 9
patches were downloaded from
http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/media-video/mplayer/files/
diff --git a/debian/patches/60-codecid.patch b/debian/patches/60-codecid.patch
new file mode 100644
index 0000000..dde10e7
--- /dev/null
+++ b/debian/patches/60-codecid.patch
@@ -0,0 +1,17 @@
+r35075 | iive | 2012-08-11 12:42:43 -0400 (Sat, 11 Aug 2012) | 4 lines
+
+Quick Build Fix. FFmpeg CodecID is redefined as AVCodecID.
+It needs the FFmpeg includes in all places that use it.
+
+
+--- a/libmpdemux/mp_taglists.h (revision 35074)
++++ b/libmpdemux/mp_taglists.h (revision 35075)
+@@ -20,6 +20,8 @@
+ #define MPLAYER_MP_TAGLISTS_H
+
+ #include <stdint.h>
++#include "libavutil/common.h"
++#include "libavformat/avformat.h"
+
+ enum CodecID mp_tag2codec_id(uint32_t tag, int audio);
+ uint32_t mp_codec_id2tag(enum CodecID codec_id, uint32_t old_tag, int audio);
diff --git a/debian/patches/61-ffmpeg.patch b/debian/patches/61-ffmpeg.patch
new file mode 100644
index 0000000..6ec6ef7
--- /dev/null
+++ b/debian/patches/61-ffmpeg.patch
@@ -0,0 +1,34 @@
+Let it build with ffmpeg 0.10.3.
+
+Index: MPlayer-1.1/fmt-conversion.c
+===================================================================
+--- MPlayer-1.1.orig/fmt-conversion.c
++++ MPlayer-1.1/fmt-conversion.c
+@@ -65,9 +65,13 @@ static const struct {
+ {IMGFMT_RGBA, PIX_FMT_RGB0},
+ {IMGFMT_RGB64LE, PIX_FMT_RGBA64LE},
+ {IMGFMT_RGB64BE, PIX_FMT_RGBA64BE},
++#if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(51, 50, 0)
+ {IMGFMT_422A, PIX_FMT_YUVA422P},
++#endif
++#if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(51, 35, 101)
+ {IMGFMT_444A, PIX_FMT_YUVA444P},
+ #endif
++#endif
+ #if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(51, 20, 1)
+ {IMGFMT_GBR24P, PIX_FMT_GBRP},
+ #endif
+Index: MPlayer-1.1/libmpdemux/mp_taglists.c
+===================================================================
+--- MPlayer-1.1.orig/libmpdemux/mp_taglists.c
++++ MPlayer-1.1/libmpdemux/mp_taglists.c
+@@ -125,7 +125,9 @@ static const struct AVCodecTag mp_bmp_ta
+ { CODEC_ID_BMV_VIDEO, MKTAG('B', 'M', 'V', 'V')},
+ { CODEC_ID_C93, MKTAG('C', '9', '3', 'V')},
+ { CODEC_ID_CDGRAPHICS, MKTAG('C', 'D', 'G', 'R')},
++#if LIBAVCODEC_VERSION_INT > AV_VERSION_INT(54,1,0)
+ { CODEC_ID_CDXL, MKTAG('C', 'D', 'X', 'L')},
++#endif
+ { CODEC_ID_CMV, MKTAG('M', 'V', 'I', 'f')},
+ { CODEC_ID_DFA, MKTAG('C', 'D', 'F', 'A')},
+ { CODEC_ID_DNXHD, MKTAG('A', 'V', 'd', 'n')},
diff --git a/debian/patches/62-libav-0.8.patch b/debian/patches/62-libav-0.8.patch
new file mode 100644
index 0000000..acfb605
--- /dev/null
+++ b/debian/patches/62-libav-0.8.patch
@@ -0,0 +1,21 @@
+--- mplayer-1.0~svn34750.orig/libmpcodecs/vd_ffmpeg.c
++++ mplayer-1.0~svn34750/libmpcodecs/vd_ffmpeg.c
+@@ -47,6 +47,18 @@
+
+ #include "libavcodec/avcodec.h"
+
++#ifndef AV_EF_COMPLIANT
++#define AV_EF_COMPLIANT 0
++#endif
++
++#ifndef AV_EF_CAREFUL
++#define AV_EF_CAREFUL 0
++#endif
++
++#ifndef AV_EF_AGGRESSIVE
++#define AV_EF_AGGRESSIVE 0
++#endif
++
+ #if AVPALETTE_SIZE > 1024
+ #error palette too large, adapt libmpcodecs/vf.c:vf_get_image
+ #endif
diff --git a/debian/patches/62-libav-9.patch b/debian/patches/62-libav-9.patch
new file mode 100644
index 0000000..557a1e0
--- /dev/null
+++ b/debian/patches/62-libav-9.patch
@@ -0,0 +1,488 @@
+diff -urN MPlayer-1.1.orig//av_opts.c MPlayer-1.1/av_opts.c
+--- MPlayer-1.1.orig//av_opts.c 2012-01-28 14:51:57.000000000 +0100
++++ MPlayer-1.1/av_opts.c 2013-01-17 09:29:34.472213703 +0100
+@@ -42,7 +42,7 @@
+ arg = strchr(str, '=');
+ if(arg) *arg++= 0;
+
+- if(av_set_string3(v, str, arg, 0, NULL) < 0){
++ if(av_opt_set(v, str, arg, 0) < 0){
+ free(start);
+ return -1;
+ }
+diff -urN MPlayer-1.1.orig//bstr.c MPlayer-1.1/bstr.c
+--- MPlayer-1.1.orig//bstr.c 2010-07-19 00:00:48.000000000 +0200
++++ MPlayer-1.1/bstr.c 2013-01-17 09:43:10.787183988 +0100
+@@ -18,6 +18,7 @@
+
+ #include <string.h>
+ #include <libavutil/avutil.h>
++#include <libavutil/common.h>
+
+ #include "bstr.h"
+
+diff -urN MPlayer-1.1.orig//codec-cfg.c MPlayer-1.1/codec-cfg.c
+--- MPlayer-1.1.orig//codec-cfg.c 2012-05-08 12:56:22.000000000 +0200
++++ MPlayer-1.1/codec-cfg.c 2013-01-17 09:34:39.860202586 +0100
+@@ -54,6 +54,7 @@
+ #include "help_mp.h"
+
+ #include "libavutil/avutil.h"
++#include "libavutil/common.h"
+ #include "libmpcodecs/img_format.h"
+ #include "codec-cfg.h"
+
+diff -urN MPlayer-1.1.orig//fmt-conversion.c MPlayer-1.1/fmt-conversion.c
+--- MPlayer-1.1.orig//fmt-conversion.c 2013-01-17 09:16:03.213243232 +0100
++++ MPlayer-1.1/fmt-conversion.c 2013-01-17 09:28:32.490215959 +0100
+@@ -26,134 +26,134 @@
+
+ static const struct {
+ int fmt;
+- enum PixelFormat pix_fmt;
++ enum AVPixelFormat pix_fmt;
+ } conversion_map[] = {
+- {IMGFMT_ARGB, PIX_FMT_ARGB},
+- {IMGFMT_BGRA, PIX_FMT_BGRA},
+- {IMGFMT_BGR24, PIX_FMT_BGR24},
+- {IMGFMT_BGR16BE, PIX_FMT_RGB565BE},
+- {IMGFMT_BGR16LE, PIX_FMT_RGB565LE},
+- {IMGFMT_BGR15BE, PIX_FMT_RGB555BE},
+- {IMGFMT_BGR15LE, PIX_FMT_RGB555LE},
+- {IMGFMT_BGR12BE, PIX_FMT_RGB444BE},
+- {IMGFMT_BGR12LE, PIX_FMT_RGB444LE},
+- {IMGFMT_BGR8, PIX_FMT_RGB8},
+- {IMGFMT_BGR4, PIX_FMT_RGB4},
+- {IMGFMT_BGR1, PIX_FMT_MONOBLACK},
+- {IMGFMT_RGB1, PIX_FMT_MONOBLACK},
+- {IMGFMT_RG4B, PIX_FMT_BGR4_BYTE},
+- {IMGFMT_BG4B, PIX_FMT_RGB4_BYTE},
+- {IMGFMT_RGB48LE, PIX_FMT_RGB48LE},
+- {IMGFMT_RGB48BE, PIX_FMT_RGB48BE},
+- {IMGFMT_ABGR, PIX_FMT_ABGR},
+- {IMGFMT_RGBA, PIX_FMT_RGBA},
+- {IMGFMT_RGB24, PIX_FMT_RGB24},
+- {IMGFMT_RGB16BE, PIX_FMT_BGR565BE},
+- {IMGFMT_RGB16LE, PIX_FMT_BGR565LE},
+- {IMGFMT_RGB15BE, PIX_FMT_BGR555BE},
+- {IMGFMT_RGB15LE, PIX_FMT_BGR555LE},
+- {IMGFMT_RGB12BE, PIX_FMT_BGR444BE},
+- {IMGFMT_RGB12LE, PIX_FMT_BGR444LE},
+- {IMGFMT_RGB8, PIX_FMT_BGR8},
+- {IMGFMT_RGB4, PIX_FMT_BGR4},
+- {IMGFMT_BGR8, PIX_FMT_PAL8},
+-// NB: This works only because PIX_FMT_0RGB32 is a CPP Macro.
+-// note that most other PIX_FMT values are enums
+-#ifdef PIX_FMT_0RGB32
+- {IMGFMT_BGR32, PIX_FMT_0RGB32},
+- {IMGFMT_BGRA, PIX_FMT_BGR0},
+- {IMGFMT_RGBA, PIX_FMT_RGB0},
+- {IMGFMT_RGB64LE, PIX_FMT_RGBA64LE},
+- {IMGFMT_RGB64BE, PIX_FMT_RGBA64BE},
++ {IMGFMT_ARGB, AV_PIX_FMT_ARGB},
++ {IMGFMT_BGRA, AV_PIX_FMT_BGRA},
++ {IMGFMT_BGR24, AV_PIX_FMT_BGR24},
++ {IMGFMT_BGR16BE, AV_PIX_FMT_RGB565BE},
++ {IMGFMT_BGR16LE, AV_PIX_FMT_RGB565LE},
++ {IMGFMT_BGR15BE, AV_PIX_FMT_RGB555BE},
++ {IMGFMT_BGR15LE, AV_PIX_FMT_RGB555LE},
++ {IMGFMT_BGR12BE, AV_PIX_FMT_RGB444BE},
++ {IMGFMT_BGR12LE, AV_PIX_FMT_RGB444LE},
++ {IMGFMT_BGR8, AV_PIX_FMT_RGB8},
++ {IMGFMT_BGR4, AV_PIX_FMT_RGB4},
++ {IMGFMT_BGR1, AV_PIX_FMT_MONOBLACK},
++ {IMGFMT_RGB1, AV_PIX_FMT_MONOBLACK},
++ {IMGFMT_RG4B, AV_PIX_FMT_BGR4_BYTE},
++ {IMGFMT_BG4B, AV_PIX_FMT_RGB4_BYTE},
++ {IMGFMT_RGB48LE, AV_PIX_FMT_RGB48LE},
++ {IMGFMT_RGB48BE, AV_PIX_FMT_RGB48BE},
++ {IMGFMT_ABGR, AV_PIX_FMT_ABGR},
++ {IMGFMT_RGBA, AV_PIX_FMT_RGBA},
++ {IMGFMT_RGB24, AV_PIX_FMT_RGB24},
++ {IMGFMT_RGB16BE, AV_PIX_FMT_BGR565BE},
++ {IMGFMT_RGB16LE, AV_PIX_FMT_BGR565LE},
++ {IMGFMT_RGB15BE, AV_PIX_FMT_BGR555BE},
++ {IMGFMT_RGB15LE, AV_PIX_FMT_BGR555LE},
++ {IMGFMT_RGB12BE, AV_PIX_FMT_BGR444BE},
++ {IMGFMT_RGB12LE, AV_PIX_FMT_BGR444LE},
++ {IMGFMT_RGB8, AV_PIX_FMT_BGR8},
++ {IMGFMT_RGB4, AV_PIX_FMT_BGR4},
++ {IMGFMT_BGR8, AV_PIX_FMT_PAL8},
++// NB: This works only because AV_PIX_FMT_0RGB32 is a CPP Macro.
++// note that most other AV_PIX_FMT values are enums
++#ifdef AV_PIX_FMT_0RGB32
++ {IMGFMT_BGR32, AV_PIX_FMT_0RGB32},
++ {IMGFMT_BGRA, AV_PIX_FMT_BGR0},
++ {IMGFMT_RGBA, AV_PIX_FMT_RGB0},
++ {IMGFMT_RGB64LE, AV_PIX_FMT_RGBA64LE},
++ {IMGFMT_RGB64BE, AV_PIX_FMT_RGBA64BE},
+ #if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(51, 50, 0)
+- {IMGFMT_422A, PIX_FMT_YUVA422P},
++ {IMGFMT_422A, AV_PIX_FMT_YUVA422P},
+ #endif
+ #if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(51, 35, 101)
+- {IMGFMT_444A, PIX_FMT_YUVA444P},
++ {IMGFMT_444A, AV_PIX_FMT_YUVA444P},
+ #endif
+ #endif
+ #if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(51, 20, 1)
+- {IMGFMT_GBR24P, PIX_FMT_GBRP},
++ {IMGFMT_GBR24P, AV_PIX_FMT_GBRP},
+ #endif
+- {IMGFMT_YUY2, PIX_FMT_YUYV422},
+- {IMGFMT_UYVY, PIX_FMT_UYVY422},
+- {IMGFMT_NV12, PIX_FMT_NV12},
+- {IMGFMT_NV21, PIX_FMT_NV21},
+- {IMGFMT_Y800, PIX_FMT_GRAY8},
+- {IMGFMT_Y8, PIX_FMT_GRAY8},
+- {IMGFMT_YVU9, PIX_FMT_YUV410P},
+- {IMGFMT_IF09, PIX_FMT_YUV410P},
+- {IMGFMT_YV12, PIX_FMT_YUV420P},
+- {IMGFMT_I420, PIX_FMT_YUV420P},
+- {IMGFMT_IYUV, PIX_FMT_YUV420P},
+- {IMGFMT_411P, PIX_FMT_YUV411P},
+- {IMGFMT_422P, PIX_FMT_YUV422P},
+- {IMGFMT_444P, PIX_FMT_YUV444P},
+- {IMGFMT_440P, PIX_FMT_YUV440P},
+-
+- {IMGFMT_420A, PIX_FMT_YUVA420P},
+-
+- {IMGFMT_420P16_LE, PIX_FMT_YUV420P16LE},
+- {IMGFMT_420P16_BE, PIX_FMT_YUV420P16BE},
+- {IMGFMT_420P10_LE, PIX_FMT_YUV420P10LE},
+- {IMGFMT_420P10_BE, PIX_FMT_YUV420P10BE},
+- {IMGFMT_420P9_LE, PIX_FMT_YUV420P9LE},
+- {IMGFMT_420P9_BE, PIX_FMT_YUV420P9BE},
+- {IMGFMT_422P16_LE, PIX_FMT_YUV422P16LE},
+- {IMGFMT_422P16_BE, PIX_FMT_YUV422P16BE},
+- {IMGFMT_422P10_LE, PIX_FMT_YUV422P10LE},
+- {IMGFMT_422P10_BE, PIX_FMT_YUV422P10BE},
+- {IMGFMT_422P9_LE, PIX_FMT_YUV422P9LE},
+- {IMGFMT_422P9_BE, PIX_FMT_YUV422P9BE},
+- {IMGFMT_444P16_LE, PIX_FMT_YUV444P16LE},
+- {IMGFMT_444P16_BE, PIX_FMT_YUV444P16BE},
+- {IMGFMT_444P10_LE, PIX_FMT_YUV444P10LE},
+- {IMGFMT_444P10_BE, PIX_FMT_YUV444P10BE},
+- {IMGFMT_444P9_LE, PIX_FMT_YUV444P9LE},
+- {IMGFMT_444P9_BE, PIX_FMT_YUV444P9BE},
++ {IMGFMT_YUY2, AV_PIX_FMT_YUYV422},
++ {IMGFMT_UYVY, AV_PIX_FMT_UYVY422},
++ {IMGFMT_NV12, AV_PIX_FMT_NV12},
++ {IMGFMT_NV21, AV_PIX_FMT_NV21},
++ {IMGFMT_Y800, AV_PIX_FMT_GRAY8},
++ {IMGFMT_Y8, AV_PIX_FMT_GRAY8},
++ {IMGFMT_YVU9, AV_PIX_FMT_YUV410P},
++ {IMGFMT_IF09, AV_PIX_FMT_YUV410P},
++ {IMGFMT_YV12, AV_PIX_FMT_YUV420P},
++ {IMGFMT_I420, AV_PIX_FMT_YUV420P},
++ {IMGFMT_IYUV, AV_PIX_FMT_YUV420P},
++ {IMGFMT_411P, AV_PIX_FMT_YUV411P},
++ {IMGFMT_422P, AV_PIX_FMT_YUV422P},
++ {IMGFMT_444P, AV_PIX_FMT_YUV444P},
++ {IMGFMT_440P, AV_PIX_FMT_YUV440P},
++
++ {IMGFMT_420A, AV_PIX_FMT_YUVA420P},
++
++ {IMGFMT_420P16_LE, AV_PIX_FMT_YUV420P16LE},
++ {IMGFMT_420P16_BE, AV_PIX_FMT_YUV420P16BE},
++ {IMGFMT_420P10_LE, AV_PIX_FMT_YUV420P10LE},
++ {IMGFMT_420P10_BE, AV_PIX_FMT_YUV420P10BE},
++ {IMGFMT_420P9_LE, AV_PIX_FMT_YUV420P9LE},
++ {IMGFMT_420P9_BE, AV_PIX_FMT_YUV420P9BE},
++ {IMGFMT_422P16_LE, AV_PIX_FMT_YUV422P16LE},
++ {IMGFMT_422P16_BE, AV_PIX_FMT_YUV422P16BE},
++ {IMGFMT_422P10_LE, AV_PIX_FMT_YUV422P10LE},
++ {IMGFMT_422P10_BE, AV_PIX_FMT_YUV422P10BE},
++ {IMGFMT_422P9_LE, AV_PIX_FMT_YUV422P9LE},
++ {IMGFMT_422P9_BE, AV_PIX_FMT_YUV422P9BE},
++ {IMGFMT_444P16_LE, AV_PIX_FMT_YUV444P16LE},
++ {IMGFMT_444P16_BE, AV_PIX_FMT_YUV444P16BE},
++ {IMGFMT_444P10_LE, AV_PIX_FMT_YUV444P10LE},
++ {IMGFMT_444P10_BE, AV_PIX_FMT_YUV444P10BE},
++ {IMGFMT_444P9_LE, AV_PIX_FMT_YUV444P9LE},
++ {IMGFMT_444P9_BE, AV_PIX_FMT_YUV444P9BE},
+
+ // YUVJ are YUV formats that use the full Y range and not just
+ // 16 - 235 (see colorspaces.txt).
+ // Currently they are all treated the same way.
+- {IMGFMT_YV12, PIX_FMT_YUVJ420P},
+- {IMGFMT_422P, PIX_FMT_YUVJ422P},
+- {IMGFMT_444P, PIX_FMT_YUVJ444P},
+- {IMGFMT_440P, PIX_FMT_YUVJ440P},
+-
+- {IMGFMT_XVMC_MOCO_MPEG2, PIX_FMT_XVMC_MPEG2_MC},
+- {IMGFMT_XVMC_IDCT_MPEG2, PIX_FMT_XVMC_MPEG2_IDCT},
+- {IMGFMT_VDPAU_MPEG1, PIX_FMT_VDPAU_MPEG1},
+- {IMGFMT_VDPAU_MPEG2, PIX_FMT_VDPAU_MPEG2},
+- {IMGFMT_VDPAU_H264, PIX_FMT_VDPAU_H264},
+- {IMGFMT_VDPAU_WMV3, PIX_FMT_VDPAU_WMV3},
+- {IMGFMT_VDPAU_VC1, PIX_FMT_VDPAU_VC1},
+- {IMGFMT_VDPAU_MPEG4, PIX_FMT_VDPAU_MPEG4},
+- {0, PIX_FMT_NONE}
++ {IMGFMT_YV12, AV_PIX_FMT_YUVJ420P},
++ {IMGFMT_422P, AV_PIX_FMT_YUVJ422P},
++ {IMGFMT_444P, AV_PIX_FMT_YUVJ444P},
++ {IMGFMT_440P, AV_PIX_FMT_YUVJ440P},
++
++ {IMGFMT_XVMC_MOCO_MPEG2, AV_PIX_FMT_XVMC_MPEG2_MC},
++ {IMGFMT_XVMC_IDCT_MPEG2, AV_PIX_FMT_XVMC_MPEG2_IDCT},
++ {IMGFMT_VDPAU_MPEG1, AV_PIX_FMT_VDPAU_MPEG1},
++ {IMGFMT_VDPAU_MPEG2, AV_PIX_FMT_VDPAU_MPEG2},
++ {IMGFMT_VDPAU_H264, AV_PIX_FMT_VDPAU_H264},
++ {IMGFMT_VDPAU_WMV3, AV_PIX_FMT_VDPAU_WMV3},
++ {IMGFMT_VDPAU_VC1, AV_PIX_FMT_VDPAU_VC1},
++ {IMGFMT_VDPAU_MPEG4, AV_PIX_FMT_VDPAU_MPEG4},
++ {0, AV_PIX_FMT_NONE}
+ };
+
+-enum PixelFormat imgfmt2pixfmt(int fmt)
++enum AVPixelFormat imgfmt2pixfmt(int fmt)
+ {
+ int i;
+- enum PixelFormat pix_fmt;
++ enum AVPixelFormat pix_fmt;
+ for (i = 0; conversion_map[i].fmt; i++)
+ if (conversion_map[i].fmt == fmt)
+ break;
+ pix_fmt = conversion_map[i].pix_fmt;
+- if (pix_fmt == PIX_FMT_NONE)
++ if (pix_fmt == AV_PIX_FMT_NONE)
+ mp_msg(MSGT_GLOBAL, MSGL_ERR, "Unsupported format %s\n", vo_format_name(fmt));
+ return pix_fmt;
+ }
+
+-int pixfmt2imgfmt(enum PixelFormat pix_fmt)
++int pixfmt2imgfmt(enum AVPixelFormat pix_fmt)
+ {
+ int i;
+ int fmt;
+- for (i = 0; conversion_map[i].pix_fmt != PIX_FMT_NONE; i++)
++ for (i = 0; conversion_map[i].pix_fmt != AV_PIX_FMT_NONE; i++)
+ if (conversion_map[i].pix_fmt == pix_fmt)
+ break;
+ fmt = conversion_map[i].fmt;
+ if (!fmt)
+- mp_msg(MSGT_GLOBAL, MSGL_ERR, "Unsupported PixelFormat %i\n", pix_fmt);
++ mp_msg(MSGT_GLOBAL, MSGL_ERR, "Unsupported AVPixelFormat %i\n", pix_fmt);
+ return fmt;
+ }
+
+diff -urN MPlayer-1.1.orig//fmt-conversion.h MPlayer-1.1/fmt-conversion.h
+--- MPlayer-1.1.orig//fmt-conversion.h 2011-03-01 22:44:15.000000000 +0100
++++ MPlayer-1.1/fmt-conversion.h 2013-01-17 09:28:38.120215759 +0100
+@@ -23,8 +23,8 @@
+ #include "libavutil/avutil.h"
+ #include "libavutil/samplefmt.h"
+
+-enum PixelFormat imgfmt2pixfmt(int fmt);
+-int pixfmt2imgfmt(enum PixelFormat pix_fmt);
++enum AVPixelFormat imgfmt2pixfmt(int fmt);
++int pixfmt2imgfmt(enum AVPixelFormat pix_fmt);
+ enum AVSampleFormat affmt2samplefmt(int fmt);
+ int samplefmt2affmt(enum AVSampleFormat sample_fmt);
+
+diff -urN MPlayer-1.1.orig//libaf/af_format.c MPlayer-1.1/libaf/af_format.c
+--- MPlayer-1.1.orig//libaf/af_format.c 2011-10-26 17:12:35.000000000 +0200
++++ MPlayer-1.1/libaf/af_format.c 2013-01-17 09:43:32.770183189 +0100
+@@ -34,6 +34,7 @@
+ #include "libvo/fastmemcpy.h"
+
+ #include "libavutil/avutil.h"
++#include "libavutil/common.h"
+
+ /* Functions used by play to convert the input audio to the correct
+ format */
+diff -urN MPlayer-1.1.orig//libaf/af_lavcac3enc.c MPlayer-1.1/libaf/af_lavcac3enc.c
+--- MPlayer-1.1.orig//libaf/af_lavcac3enc.c 2012-02-19 16:21:23.000000000 +0100
++++ MPlayer-1.1/libaf/af_lavcac3enc.c 2013-01-17 09:44:27.103181211 +0100
+@@ -32,6 +32,7 @@
+ #include "reorder_ch.h"
+ #include "av_helpers.h"
+
++#include "libavutil/common.h"
+ #include "libavcodec/avcodec.h"
+ #include "libavutil/intreadwrite.h"
+
+diff -urN MPlayer-1.1.orig//libmpcodecs/vf.c MPlayer-1.1/libmpcodecs/vf.c
+--- MPlayer-1.1.orig//libmpcodecs/vf.c 2012-05-30 23:08:05.000000000 +0200
++++ MPlayer-1.1/libmpcodecs/vf.c 2013-01-17 09:50:25.861168154 +0100
+@@ -40,6 +40,7 @@
+ #include "vf.h"
+
+ #include "libvo/fastmemcpy.h"
++#include "libavutil/common.h"
+ #include "libavutil/mem.h"
+
+ extern const vf_info_t vf_info_1bpp;
+diff -urN MPlayer-1.1.orig//libmpcodecs/vf_geq.c MPlayer-1.1/libmpcodecs/vf_geq.c
+--- MPlayer-1.1.orig//libmpcodecs/vf_geq.c 2011-04-19 09:32:36.000000000 +0200
++++ MPlayer-1.1/libmpcodecs/vf_geq.c 2013-01-17 09:44:01.045182161 +0100
+@@ -34,6 +34,8 @@
+
+ #include "libavcodec/avcodec.h"
+ #include "libavutil/eval.h"
++#include "libavutil/common.h"
++#include "libavutil/mem.h"
+
+ struct vf_priv_s {
+ AVExpr * e[3];
+diff -urN MPlayer-1.1.orig//libmpcodecs/vf_gradfun.c MPlayer-1.1/libmpcodecs/vf_gradfun.c
+--- MPlayer-1.1.orig//libmpcodecs/vf_gradfun.c 2010-04-06 11:46:47.000000000 +0200
++++ MPlayer-1.1/libmpcodecs/vf_gradfun.c 2013-01-17 09:47:10.679175257 +0100
+@@ -39,6 +39,7 @@
+ #include "vf.h"
+ #include "libvo/fastmemcpy.h"
+ #include "libavutil/avutil.h"
++#include "libavutil/common.h"
+ #include "libavutil/x86_cpu.h"
+
+ struct vf_priv_s {
+diff -urN MPlayer-1.1.orig//libmpcodecs/vf_sab.c MPlayer-1.1/libmpcodecs/vf_sab.c
+--- MPlayer-1.1.orig//libmpcodecs/vf_sab.c 2011-05-25 15:46:32.000000000 +0200
++++ MPlayer-1.1/libmpcodecs/vf_sab.c 2013-01-17 09:28:59.964214957 +0100
+@@ -32,6 +32,7 @@
+ #endif
+
+ #include "libavutil/avutil.h"
++#include "libavutil/mem.h"
+ #include "img_format.h"
+ #include "mp_image.h"
+ #include "vf.h"
+diff -urN MPlayer-1.1.orig//libmpcodecs/vf_screenshot.c MPlayer-1.1/libmpcodecs/vf_screenshot.c
+--- MPlayer-1.1.orig//libmpcodecs/vf_screenshot.c 2012-02-19 23:09:30.000000000 +0100
++++ MPlayer-1.1/libmpcodecs/vf_screenshot.c 2013-01-17 09:28:04.643216971 +0100
+@@ -39,6 +39,7 @@
+
+ #include "libswscale/swscale.h"
+ #include "libavcodec/avcodec.h"
++#include "libavutil/mem.h"
+
+ struct vf_priv_s {
+ int frameno;
+diff -urN MPlayer-1.1.orig//libmpdemux/demux_lavf.c MPlayer-1.1/libmpdemux/demux_lavf.c
+--- MPlayer-1.1.orig//libmpdemux/demux_lavf.c 2012-04-07 22:08:53.000000000 +0200
++++ MPlayer-1.1/libmpdemux/demux_lavf.c 2013-01-17 09:41:44.880187116 +0100
+@@ -317,20 +317,20 @@
+ sh_audio->samplerate= codec->sample_rate;
+ sh_audio->i_bps= codec->bit_rate/8;
+ switch (codec->codec_id) {
+- case CODEC_ID_PCM_S8:
+- case CODEC_ID_PCM_U8:
++ case AV_CODEC_ID_PCM_S8:
++ case AV_CODEC_ID_PCM_U8:
+ sh_audio->samplesize = 1;
+ break;
+- case CODEC_ID_PCM_S16LE:
+- case CODEC_ID_PCM_S16BE:
+- case CODEC_ID_PCM_U16LE:
+- case CODEC_ID_PCM_U16BE:
++ case AV_CODEC_ID_PCM_S16LE:
++ case AV_CODEC_ID_PCM_S16BE:
++ case AV_CODEC_ID_PCM_U16LE:
++ case AV_CODEC_ID_PCM_U16BE:
+ sh_audio->samplesize = 2;
+ break;
+- case CODEC_ID_PCM_ALAW:
++ case AV_CODEC_ID_PCM_ALAW:
+ sh_audio->format = 0x6;
+ break;
+- case CODEC_ID_PCM_MULAW:
++ case AV_CODEC_ID_PCM_MULAW:
+ sh_audio->format = 0x7;
+ break;
+ }
+@@ -358,7 +358,7 @@
+ priv->vstreams[priv->video_streams] = i;
+ bih=calloc(sizeof(*bih) + codec->extradata_size,1);
+
+- if(codec->codec_id == CODEC_ID_RAWVIDEO) {
++ if(codec->codec_id == AV_CODEC_ID_RAWVIDEO) {
+ switch (codec->pix_fmt) {
+ case PIX_FMT_RGB24:
+ codec->codec_tag= MKTAG(24, 'B', 'G', 'R');
+@@ -423,24 +423,24 @@
+ case AVMEDIA_TYPE_SUBTITLE:{
+ sh_sub_t* sh_sub;
+ char type;
+- if(codec->codec_id == CODEC_ID_TEXT)
++ if(codec->codec_id == AV_CODEC_ID_TEXT)
+ type = 't';
+- else if(codec->codec_id == CODEC_ID_MOV_TEXT)
++ else if(codec->codec_id == AV_CODEC_ID_MOV_TEXT)
+ type = 'm';
+- else if(codec->codec_id == CODEC_ID_SSA)
++ else if(codec->codec_id == AV_CODEC_ID_SSA)
+ type = 'a';
+- else if(codec->codec_id == CODEC_ID_DVD_SUBTITLE)
++ else if(codec->codec_id == AV_CODEC_ID_DVD_SUBTITLE)
+ type = 'v';
+- else if(codec->codec_id == CODEC_ID_XSUB)
++ else if(codec->codec_id == AV_CODEC_ID_XSUB)
+ type = 'x';
+- else if(codec->codec_id == CODEC_ID_DVB_SUBTITLE)
++ else if(codec->codec_id == AV_CODEC_ID_DVB_SUBTITLE)
+ type = 'b';
+- else if(codec->codec_id == CODEC_ID_DVB_TELETEXT)
++ else if(codec->codec_id == AV_CODEC_ID_DVB_TELETEXT)
+ type = 'd';
+- else if(codec->codec_id == CODEC_ID_HDMV_PGS_SUBTITLE)
++ else if(codec->codec_id == AV_CODEC_ID_HDMV_PGS_SUBTITLE)
+ type = 'p';
+-#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(54, 14, 100)
+- else if(codec->codec_id == CODEC_ID_EIA_608)
++#if 0 && LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(54, 14, 100)
++ else if(codec->codec_id == AV_CODEC_ID_EIA_608)
+ type = 'c';
+ #endif
+ else if(codec->codec_tag == MKTAG('c', '6', '0', '8'))
+@@ -465,7 +465,7 @@
+ break;
+ }
+ case AVMEDIA_TYPE_ATTACHMENT:{
+- if (st->codec->codec_id == CODEC_ID_TTF) {
++ if (st->codec->codec_id == AV_CODEC_ID_TTF) {
+ AVDictionaryEntry *fnametag = av_dict_get(st->metadata, "filename", NULL, 0);
+ demuxer_add_attachment(demuxer, fnametag ? fnametag->value : NULL,
+ "application/x-truetype-font",
+@@ -808,7 +808,7 @@
+ prog->aid = program->stream_index[i];
+ break;
+ case AVMEDIA_TYPE_SUBTITLE:
+- if(prog->sid == -2 && priv->avfc->streams[program->stream_index[i]]->codec->codec_id == CODEC_ID_TEXT)
++ if(prog->sid == -2 && priv->avfc->streams[program->stream_index[i]]->codec->codec_id == AV_CODEC_ID_TEXT)
+ prog->sid = program->stream_index[i];
+ break;
+ }
+diff -urN MPlayer-1.1.orig//stream/cache2.c MPlayer-1.1/stream/cache2.c
+--- MPlayer-1.1.orig//stream/cache2.c 2012-03-04 16:11:50.000000000 +0100
++++ MPlayer-1.1/stream/cache2.c 2013-01-17 09:30:01.501212718 +0100
+@@ -40,6 +40,7 @@
+ #include <errno.h>
+
+ #include "libavutil/avutil.h"
++#include "libavutil/common.h"
+ #include "osdep/shmem.h"
+ #include "osdep/timer.h"
+ #if defined(__MINGW32__)
+diff -urN MPlayer-1.1.orig//sub/spudec.c MPlayer-1.1/sub/spudec.c
+--- MPlayer-1.1.orig//sub/spudec.c 2012-04-23 20:39:16.000000000 +0200
++++ MPlayer-1.1/sub/spudec.c 2013-01-17 09:46:50.054176009 +0100
+@@ -42,6 +42,7 @@
+ #include "spudec.h"
+ #include "vobsub.h"
+ #include "libavutil/avutil.h"
++#include "libavutil/common.h"
+ #include "libavutil/intreadwrite.h"
+ #include "libswscale/swscale.h"
+
+diff -urN MPlayer-1.1.orig//sub/sub_cc.c MPlayer-1.1/sub/sub_cc.c
+--- MPlayer-1.1.orig//sub/sub_cc.c 2012-04-07 22:08:53.000000000 +0200
++++ MPlayer-1.1/sub/sub_cc.c 2013-01-17 09:46:31.413176687 +0100
+@@ -42,6 +42,7 @@
+ #include "sub.h"
+
+ #include "libavutil/avutil.h"
++#include "libavutil/common.h"
+
+
+ #define CC_MAX_LINE_LENGTH 64
diff --git a/debian/patches/64-planaraudio.patch b/debian/patches/64-planaraudio.patch
new file mode 100644
index 0000000..d99115f
--- /dev/null
+++ b/debian/patches/64-planaraudio.patch
@@ -0,0 +1,136 @@
+------------------------------------------------------------------------
+r35228 | cigaes | 2012-10-04 15:04:42 -0300 (Thu, 04 Oct 2012) | 5 lines
+
+ad_ffmpeg: basic support for planar formats.
+
+Upgrade to avcodec_decode_audio4().
+Planar formats are immediately converted to packet formats.
+A lot of optimizations are still possible.
+------------------------------------------------------------------------
+
+
+--- a/libmpcodecs/ad_ffmpeg.c (revision 35227)
++++ b/libmpcodecs/ad_ffmpeg.c (revision 35228)
+@@ -57,7 +57,7 @@
+ {
+ int broken_srate = 0;
+ int samplerate = lavc_context->sample_rate;
+- int sample_format = samplefmt2affmt(lavc_context->sample_fmt);
++ int sample_format = samplefmt2affmt(av_get_packed_sample_fmt(lavc_context->sample_fmt));
+ if (!sample_format)
+ sample_format = sh_audio->sample_format;
+ if(sh_audio->wf){
+@@ -169,10 +169,10 @@
+ sh_audio->i_bps=sh_audio->wf->nAvgBytesPerSec;
+
+ switch (lavc_context->sample_fmt) {
+- case AV_SAMPLE_FMT_U8:
+- case AV_SAMPLE_FMT_S16:
+- case AV_SAMPLE_FMT_S32:
+- case AV_SAMPLE_FMT_FLT:
++ case AV_SAMPLE_FMT_U8: case AV_SAMPLE_FMT_U8P:
++ case AV_SAMPLE_FMT_S16: case AV_SAMPLE_FMT_S16P:
++ case AV_SAMPLE_FMT_S32: case AV_SAMPLE_FMT_S32P:
++ case AV_SAMPLE_FMT_FLT: case AV_SAMPLE_FMT_FLTP:
+ break;
+ default:
+ return 0;
+@@ -202,10 +202,68 @@
+ return CONTROL_UNKNOWN;
+ }
+
++static av_always_inline void copy_samples_planar(unsigned bps,
++ unsigned nb_samples,
++ unsigned nb_channels,
++ unsigned char *dst,
++ unsigned char **src)
++{
++ unsigned s, c, o = 0;
++
++ for (s = 0; s < nb_samples; s++) {
++ for (c = 0; c < nb_channels; c++) {
++ memcpy(dst, src[c] + o, bps);
++ dst += bps;
++ }
++ o += bps;
++ }
++}
++
++static int copy_samples(AVCodecContext *avc, AVFrame *frame,
++ unsigned char *buf, int max_size)
++{
++ int channels = avc->channels;
++ int sample_size = av_get_bytes_per_sample(avc->sample_fmt);
++ int size = channels * sample_size * frame->nb_samples;
++
++ if (size > max_size) {
++ av_log(avc, AV_LOG_ERROR,
++ "Buffer overflow while decoding a single frame\n");
++ return AVERROR(EINVAL); /* same as avcodec_decode_audio3 */
++ }
++ /* TODO reorder channels at the same time */
++ if (av_sample_fmt_is_planar(avc->sample_fmt)) {
++ switch (sample_size) {
++ case 1:
++ copy_samples_planar(1, frame->nb_samples, channels,
++ buf, frame->extended_data);
++ break;
++ case 2:
++ copy_samples_planar(2, frame->nb_samples, channels,
++ buf, frame->extended_data);
++ break;
++ case 4:
++ copy_samples_planar(4, frame->nb_samples, channels,
++ buf, frame->extended_data);
++ default:
++ copy_samples_planar(sample_size, frame->nb_samples, channels,
++ buf, frame->extended_data);
++ }
++ } else {
++ memcpy(buf, frame->data[0], size);
++ }
++ return size;
++}
++
+ static int decode_audio(sh_audio_t *sh_audio,unsigned char *buf,int minlen,int maxlen)
+ {
+ unsigned char *start=NULL;
+- int y,len=-1;
++ int y,len=-1, got_frame;
++ AVFrame *frame = avcodec_alloc_frame();
++
++ if (!frame)
++ return AVERROR(ENOMEM);
++
+ while(len<minlen){
+ AVPacket pkt;
+ int len2=maxlen;
+@@ -230,7 +288,7 @@
+ sh_audio->pts = pts;
+ sh_audio->pts_bytes = 0;
+ }
+- y=avcodec_decode_audio3(sh_audio->context,(int16_t*)buf,&len2,&pkt);
++ y=avcodec_decode_audio4(sh_audio->context, frame, &got_frame, &pkt);
+ //printf("return:%d samples_out:%d bitstream_in:%d sample_sum:%d\n", y, len2, x, len); fflush(stdout);
+ // LATM may need many packets to find mux info
+ if (y == AVERROR(EAGAIN))
+@@ -238,6 +296,11 @@
+ if(y<0){ mp_msg(MSGT_DECAUDIO,MSGL_V,"lavc_audio: error\n");break; }
+ if(!sh_audio->parser && y<x)
+ sh_audio->ds->buffer_pos+=y-x; // put back data (HACK!)
++ if (!got_frame)
++ continue;
++ len2 = copy_samples(sh_audio->context, frame, buf, maxlen);
++ if (len2 < 0)
++ return len2;
+ if(len2>0){
+ if (((AVCodecContext *)sh_audio->context)->channels >= 5) {
+ int samplesize = av_get_bytes_per_sample(((AVCodecContext *)
+@@ -258,5 +321,7 @@
+ if (setup_format(sh_audio, sh_audio->context))
+ break;
+ }
++
++ av_free(frame);
+ return len;
+ }
diff --git a/debian/patches/series b/debian/patches/series
index 2e86a33..46f2ee1 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1,8 @@
23mplayer-debug-printf.patch
50_Hurd_PATH_MAX.patch
+
+60-codecid.patch
+61-ffmpeg.patch
+62-libav-0.8.patch
+62-libav-9.patch
+64-planaraudio.patch
--
mplayer packaging
More information about the pkg-multimedia-commits
mailing list