aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2011-11-13 11:31:48 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2011-11-13 11:31:48 +0000
commit063a5ab86401606a8ade8515e78ccc27dd6ea3e1 (patch)
tree7a8da7277677ce0260cec292a44ddd09326f20e7
parent5c9e8564ce71a8b229e70b4d54d748bfc7345fb1 (diff)
downloadaports-063a5ab86401606a8ade8515e78ccc27dd6ea3e1.tar.bz2
aports-063a5ab86401606a8ade8515e78ccc27dd6ea3e1.tar.xz
testing/mplayer2: rebuild against new libs and fix audio with gcc-4.6
-rw-r--r--testing/mplayer2/APKBUILD8
-rw-r--r--testing/mplayer2/c33fafd6f1bc2a430c114231cecc6e1c56c1f939.patch216
-rw-r--r--testing/mplayer2/mplayer-gcc-4.6-audio-fix.patch22
3 files changed, 244 insertions, 2 deletions
diff --git a/testing/mplayer2/APKBUILD b/testing/mplayer2/APKBUILD
index 8cf87d24e2..9d7780cccd 100644
--- a/testing/mplayer2/APKBUILD
+++ b/testing/mplayer2/APKBUILD
@@ -14,7 +14,9 @@ makedepends="libxxf86dga-dev libxv-dev libmad-dev lame-dev libao-dev
mesa-dev ffmpeg-dev"
install=""
subpackages="$pkgname-doc"
-source="http://ftp.mplayer2.org/pub/release/mplayer2-$pkgver.tar.xz"
+source="http://ftp.mplayer2.org/pub/release/mplayer2-$pkgver.tar.xz
+ mplayer-gcc-4.6-audio-fix.patch
+ c33fafd6f1bc2a430c114231cecc6e1c56c1f939.patch"
_builddir="$srcdir"/mplayer2-$pkgver
prepare() {
@@ -45,4 +47,6 @@ package() {
mv "$pkgdir"/usr/bin/mplayer "$pkgdir"/usr/bin/mplayer2
}
-md5sums="b880ae4be0e5b9693cdecf97c84b74f3 mplayer2-2.0.tar.xz"
+md5sums="b880ae4be0e5b9693cdecf97c84b74f3 mplayer2-2.0.tar.xz
+5f261813c5dfa70ba2378c2535428e5d mplayer-gcc-4.6-audio-fix.patch
+8125a2e2d696f6d5af584b01a2d15e78 c33fafd6f1bc2a430c114231cecc6e1c56c1f939.patch"
diff --git a/testing/mplayer2/c33fafd6f1bc2a430c114231cecc6e1c56c1f939.patch b/testing/mplayer2/c33fafd6f1bc2a430c114231cecc6e1c56c1f939.patch
new file mode 100644
index 0000000000..175bc4f4a9
--- /dev/null
+++ b/testing/mplayer2/c33fafd6f1bc2a430c114231cecc6e1c56c1f939.patch
@@ -0,0 +1,216 @@
+From c33fafd6f1bc2a430c114231cecc6e1c56c1f939 Mon Sep 17 00:00:00 2001
+From: Uoti Urpala <uau@mplayer2.org>
+Date: Tue, 19 Apr 2011 23:59:45 +0000
+Subject: Update libav API uses
+
+Update various code to use newer alternatives instead of deprecated
+functions/fields that are being dropped at libav API bump. An
+exception is avcodec_thread_init() which is being dropped even though
+it's still _necessary_ with fairly recent libav versions, so there's
+no good alternative which would work with both those recent versions
+and latest libavcodec. I think there are grounds to consider the drop
+premature and revert it for now; if that doesn't happen I'll add a
+version-test #if check around it later.
+---
+diff --git a/av_log.c b/av_log.c
+index bd42ce3..bcf1a14 100644
+--- a/av_log.c
++++ b/av_log.c
+@@ -57,10 +57,10 @@ static int extract_msg_type_from_ctx(void *ptr)
+ if (!strcmp(avc->class_name, "AVCodecContext")) {
+ AVCodecContext *s = ptr;
+ if (s->codec) {
+- if (s->codec->type == CODEC_TYPE_AUDIO) {
++ if (s->codec->type == AVMEDIA_TYPE_AUDIO) {
+ if (s->codec->decode)
+ return MSGT_DECAUDIO;
+- } else if (s->codec->type == CODEC_TYPE_VIDEO) {
++ } else if (s->codec->type == AVMEDIA_TYPE_VIDEO) {
+ if (s->codec->decode)
+ return MSGT_DECVIDEO;
+ }
+diff --git a/av_opts.c b/av_opts.c
+index 452253b..59f47ed 100644
+--- a/av_opts.c
++++ b/av_opts.c
+@@ -37,7 +37,7 @@ int parse_avopts(void *v, char *str){
+ arg = strchr(str, '=');
+ if(arg) *arg++= 0;
+
+- if(!av_set_string(v, str, arg)){
++ if (av_set_string3(v, str, arg, 0, NULL) < 0) {
+ free(start);
+ return -1;
+ }
+diff --git a/libmpcodecs/ad_ffmpeg.c b/libmpcodecs/ad_ffmpeg.c
+index ec6a2f7..8f56e71 100644
+--- a/libmpcodecs/ad_ffmpeg.c
++++ b/libmpcodecs/ad_ffmpeg.c
+@@ -127,7 +127,7 @@ static int init(sh_audio_t *sh_audio)
+ }
+ lavc_context->request_channels = opts->audio_output_channels;
+ lavc_context->codec_tag = sh_audio->format; //FOURCC
+- lavc_context->codec_type = CODEC_TYPE_AUDIO;
++ lavc_context->codec_type = AVMEDIA_TYPE_AUDIO;
+ lavc_context->codec_id = lavc_codec->id; // not sure if required, imho not --A'rpi
+
+ /* alloc extra data */
+diff --git a/libmpcodecs/vd_ffmpeg.c b/libmpcodecs/vd_ffmpeg.c
+index 2424dda..431b5cd 100644
+--- a/libmpcodecs/vd_ffmpeg.c
++++ b/libmpcodecs/vd_ffmpeg.c
+@@ -208,7 +208,7 @@ static int init(sh_video_t *sh){
+ ctx->avctx = avcodec_alloc_context();
+ avctx = ctx->avctx;
+ avctx->opaque = sh;
+- avctx->codec_type = CODEC_TYPE_VIDEO;
++ avctx->codec_type = AVMEDIA_TYPE_VIDEO;
+ avctx->codec_id = lavc_codec->id;
+
+ if (lavc_codec->capabilities & CODEC_CAP_HWACCEL // XvMC
+@@ -541,14 +541,12 @@ static int get_buffer(AVCodecContext *avctx, AVFrame *pic){
+ type = MP_IMGTYPE_STATIC;
+ flags |= MP_IMGFLAG_PRESERVE;
+ }
+- flags|=(!avctx->hurry_up && ctx->do_slices) ?
+- MP_IMGFLAG_DRAW_CALLBACK:0;
++ flags |= ctx->do_slices ? MP_IMGFLAG_DRAW_CALLBACK : 0;
+ mp_msg(MSGT_DECVIDEO, MSGL_DBG2, type == MP_IMGTYPE_STATIC ? "using STATIC\n" : "using TEMP\n");
+ } else {
+ if(!pic->reference){
+ ctx->b_count++;
+- flags|=(!avctx->hurry_up && ctx->do_slices) ?
+- MP_IMGFLAG_DRAW_CALLBACK:0;
++ flags |= ctx->do_slices ? MP_IMGFLAG_DRAW_CALLBACK:0;
+ }else{
+ ctx->ip_count++;
+ flags|= MP_IMGFLAG_PRESERVE|MP_IMGFLAG_READABLE
+@@ -787,7 +785,7 @@ static struct mp_image *decode(struct sh_video *sh, void *data, int len,
+ pkt.data = data;
+ pkt.size = len;
+ // HACK: make PNGs decode normally instead of as CorePNG delta frames
+- pkt.flags = PKT_FLAG_KEY;
++ pkt.flags = AV_PKT_FLAG_KEY;
+ // The avcodec opaque field stupidly supports only int64_t type
+ *(double *)&avctx->reordered_opaque = *reordered_pts;
+ ret = avcodec_decode_video2(avctx, pic, &got_picture, &pkt);
+diff --git a/libmpcodecs/vf_geq.c b/libmpcodecs/vf_geq.c
+index ed855d1..68a9cf7 100644
+--- a/libmpcodecs/vf_geq.c
++++ b/libmpcodecs/vf_geq.c
+@@ -116,7 +116,7 @@ static int put_image(struct vf_instance *vf, mp_image_t *mpi, double pts){
+ const_values[3]=y;
+ for(x=0; x<w; x++){
+ const_values[2]=x;
+- dst[x + y * dst_stride] = av_eval_expr(vf->priv->e[plane],
++ dst[x + y * dst_stride] = av_expr_eval(vf->priv->e[plane],
+ const_values, vf);
+ }
+ }
+@@ -176,7 +176,7 @@ static int vf_open(vf_instance_t *vf, char *args){
+ plane==0 ? lum : (plane==1 ? cb : cr),
+ NULL
+ };
+- res = av_parse_expr(&vf->priv->e[plane], eq[plane], const_names, NULL, NULL, func2_names, func2, 0, NULL);
++ res = av_expr_parse(&vf->priv->e[plane], eq[plane], const_names, NULL, NULL, func2_names, func2, 0, NULL);
+
+ if (res < 0) {
+ mp_msg(MSGT_VFILTER, MSGL_ERR, "geq: error loading equation `%s'\n", eq[plane]);
+diff --git a/libmpcodecs/vf_pp.c b/libmpcodecs/vf_pp.c
+index f3dc4d9..10c4edf 100644
+--- a/libmpcodecs/vf_pp.c
++++ b/libmpcodecs/vf_pp.c
+@@ -37,7 +37,7 @@
+
+ struct vf_priv_s {
+ int pp;
+- pp_mode_t *ppMode[PP_QUALITY_MAX+1];
++ pp_mode *ppMode[PP_QUALITY_MAX+1];
+ void *context;
+ unsigned int outfmt;
+ };
+diff --git a/libmpdemux/demux_lavf.c b/libmpdemux/demux_lavf.c
+index 3aca4b6..0c5b6da 100644
+--- a/libmpdemux/demux_lavf.c
++++ b/libmpdemux/demux_lavf.c
+@@ -289,7 +289,7 @@ static void handle_stream(demuxer_t *demuxer, AVFormatContext *avfc, int i) {
+ codec->codec_tag = override_tag;
+
+ switch(codec->codec_type){
+- case CODEC_TYPE_AUDIO:{
++ case AVMEDIA_TYPE_AUDIO:{
+ WAVEFORMATEX *wf;
+ sh_audio_t* sh_audio;
+ sh_audio = new_sh_audio_aid(demuxer, i, priv->audio_streams);
+@@ -361,7 +361,7 @@ static void handle_stream(demuxer_t *demuxer, AVFormatContext *avfc, int i) {
+ stream_id = priv->audio_streams++;
+ break;
+ }
+- case CODEC_TYPE_VIDEO:{
++ case AVMEDIA_TYPE_VIDEO:{
+ sh_video_t* sh_video;
+ BITMAPINFOHEADER *bih;
+ sh_video=new_sh_video_vid(demuxer, i, priv->video_streams);
+@@ -433,7 +433,7 @@ static void handle_stream(demuxer_t *demuxer, AVFormatContext *avfc, int i) {
+ stream_id = priv->video_streams++;
+ break;
+ }
+- case CODEC_TYPE_SUBTITLE:{
++ case AVMEDIA_TYPE_SUBTITLE:{
+ sh_sub_t* sh_sub;
+ char type;
+ /* only support text subtitles for now */
+@@ -476,9 +476,12 @@ static void handle_stream(demuxer_t *demuxer, AVFormatContext *avfc, int i) {
+ stream_id = priv->sub_streams++;
+ break;
+ }
+- case CODEC_TYPE_ATTACHMENT:{
++ case AVMEDIA_TYPE_ATTACHMENT:{
++ AVMetadataTag *ftag = av_metadata_get(st->metadata, "filename",
++ NULL, 0);
++ char *filename = ftag ? ftag->value : NULL;
+ if (st->codec->codec_id == CODEC_ID_TTF)
+- demuxer_add_attachment(demuxer, BSTR(st->filename),
++ demuxer_add_attachment(demuxer, BSTR(filename),
+ BSTR("application/x-truetype-font"),
+ (struct bstr){codec->extradata,
+ codec->extradata_size});
+@@ -755,14 +758,14 @@ static int demux_lavf_fill_buffer(demuxer_t *demux, demux_stream_t *dsds){
+ if(ts != AV_NOPTS_VALUE){
+ dp->pts = ts * av_q2d(priv->avfc->streams[id]->time_base);
+ priv->last_pts= dp->pts * AV_TIME_BASE;
+- // always set duration for subtitles, even if PKT_FLAG_KEY is not set,
++ // always set duration for subtitles, even if AV_PKT_FLAG_KEY isn't set,
+ // otherwise they will stay on screen to long if e.g. ASS is demuxed from mkv
+- if((ds == demux->sub || (pkt.flags & PKT_FLAG_KEY)) &&
++ if ((ds == demux->sub || (pkt.flags & AV_PKT_FLAG_KEY)) &&
+ pkt.convergence_duration > 0)
+ dp->duration = pkt.convergence_duration * av_q2d(priv->avfc->streams[id]->time_base);
+ }
+ dp->pos=demux->filepos;
+- dp->flags= !!(pkt.flags&PKT_FLAG_KEY);
++ dp->flags = !!(pkt.flags & AV_PKT_FLAG_KEY);
+ // append packet to DS stream:
+ ds_add_packet(ds,dp);
+ return 1;
+@@ -922,15 +925,15 @@ redo:
+ {
+ switch(priv->avfc->streams[program->stream_index[i]]->codec->codec_type)
+ {
+- case CODEC_TYPE_VIDEO:
++ case AVMEDIA_TYPE_VIDEO:
+ if(prog->vid == -2)
+ prog->vid = program->stream_index[i];
+ break;
+- case CODEC_TYPE_AUDIO:
++ case AVMEDIA_TYPE_AUDIO:
+ if(prog->aid == -2)
+ prog->aid = program->stream_index[i];
+ break;
+- case CODEC_TYPE_SUBTITLE:
++ case AVMEDIA_TYPE_SUBTITLE:
+ if(prog->sid == -2 && priv->avfc->streams[program->stream_index[i]]->codec->codec_id == CODEC_ID_TEXT)
+ prog->sid = program->stream_index[i];
+ break;
+--
+cgit v0.9
diff --git a/testing/mplayer2/mplayer-gcc-4.6-audio-fix.patch b/testing/mplayer2/mplayer-gcc-4.6-audio-fix.patch
new file mode 100644
index 0000000000..148856c233
--- /dev/null
+++ b/testing/mplayer2/mplayer-gcc-4.6-audio-fix.patch
@@ -0,0 +1,22 @@
+Fix broken audio decoding when compiling with gcc-4.6
+http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2011-May/068495.html
+
+--- ./mp3lib/dct64_sse.c.orig
++++ ./mp3lib/dct64_sse.c
+@@ -113,7 +113,6 @@
+ }
+
+ {
+- real *costab = costab_mmx + 24;
+ int i;
+
+ __asm__(
+@@ -122,7 +121,7 @@
+ "movaps %1, %%xmm5\n\t"
+ "movaps %%xmm5, %%xmm6\n\t"
+ :
+- :"m"(*costab), "m"(*nnnn)
++ :"m"(costab_mmx[24]), "m"(*nnnn)
+ );
+
+ for (i = 0; i < 0x20; i += 8)