diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2011-11-13 11:31:48 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2011-11-13 11:31:48 +0000 |
commit | 063a5ab86401606a8ade8515e78ccc27dd6ea3e1 (patch) | |
tree | 7a8da7277677ce0260cec292a44ddd09326f20e7 | |
parent | 5c9e8564ce71a8b229e70b4d54d748bfc7345fb1 (diff) | |
download | aports-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/APKBUILD | 8 | ||||
-rw-r--r-- | testing/mplayer2/c33fafd6f1bc2a430c114231cecc6e1c56c1f939.patch | 216 | ||||
-rw-r--r-- | testing/mplayer2/mplayer-gcc-4.6-audio-fix.patch | 22 |
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) |