iaxclient: patch2 for ffmpeg (libav in fact) in the attempt to fix the issue 281

This commit is contained in:
Anton Bolshakov 2015-05-23 07:29:39 +00:00
parent c333d0e98a
commit 571c196490
3 changed files with 173 additions and 0 deletions

View file

@ -1,7 +1,9 @@
AUX iaxclient-ffmpeg.patch 2142 SHA256 46705f18c1084de9af4867fd7552be425b8fe701b06bb2b2d7a1ebd8741278ed SHA512 f7efee17a5c4ae89f6245bd2e556a7ccf6eb7a4d82aafd06236a36d9cc26cb447692631d030c3f738f111239cf733ddd1233c3939a318c19233ab5c19a105afd WHIRLPOOL 43c7479eacc949e3bf93300700588b0e7ae7ae524be6b2609cd49f89de292afabf70c9122976e56f507a2aa267d22d42053341c88eec64e2442a1c6d6cac23b6
AUX iaxclient-ffmpeg2.patch 2641 SHA256 2bf6e04c190a7ffa1cbc7ecba57c3e83c4c68aa09e72f7e450ba67378282f343 SHA512 123adee0ecd5b84ed3ba282fdf8638cdee230b927486994eb55d082528982e8a5fdc8a407f45bbf27f57703445f856505108ee92b716dbcb862827e9374ef87d WHIRLPOOL 6e3d06a0a98ff2c943aae8f047f47489f25b58c3bd32d00761b08a586d80173cb5c4206679c0fd0517fb5a4539e46db6e7afeb7bd33a3fade21bdd91e0d29d7b
AUX iaxclient-fix-avcodec-include.patch 320 SHA256 835c5ac2e404c78c1119a60bce5f25bfc84fa7a4415c03e1f4d8d658602700a3 SHA512 7d9a1ca90fde760832963b7038255efa224a78033e650982f92edb65f4ff5b23e4b609ca65487c456c32a9b7a894a3b6940dabde905dfa999b972ab0a0032d01 WHIRLPOOL 7c0ad92d89dc14d29b58814c1476aeca68378b4d2f457eb836cba4b70cdaeb3f4d941d7445782a1996ff75a3f98354b0d6423ded64bb1bd152218a10beaecc2c
DIST iaxclient-2.1beta3.tar.gz 1418674 SHA256 6ca6ce8103837ed6fa2fd2e88c1c0d3a3d93d7b4bd084878351527ebfb205149 SHA512 d4fef24a65a31ef61c1abd9512199004a0d21021ab4f123469ec780dae9feb926ecea2e1c767aebdfdac14e9fd2ccc99f0532ab604958ce4bb33f1f2a401f73c WHIRLPOOL 4c3326f3ef0168d746d6b4ae9c1365eea6c5a139ab66889fe9e6d4f346a516443bf93465e9c99ee9d17f1d0742308f1b3d05803f53113d9a5220edfad967f98b
EBUILD iaxclient-2.1_beta3-r1.ebuild 1712 SHA256 6326c86ecd716def406b8b9d9e52622e43a44b404ce33dbc64e9c65f63a6bc0c SHA512 b42ce6f600ff749c7fe3e67081f8fbc1a184190ab67a153ed51a221c4c9bfd8276f531855472d1cc59c486dacf2b7dadbf1ba11bc3ebff158d7ed006c122514c WHIRLPOOL be409f953097c4afb565d8b3ebc778cc5fc0911f2527c06b50113865933be4c90ee5447cb5d29f6afb63f6320df3de10e5584cb40454efa4eb6f9172d555ff29
EBUILD iaxclient-2.1_beta3-r2.ebuild 1812 SHA256 a95992f6fcfa3e691493c842b06a099a2fafa2d705c8d1f6361967cc1b6c23e1 SHA512 460aa2665a56f25380d73fe9a46e844e695d43e9a4cdfac29d7bc6d8e5a3b84f173f4c31f267e8271e859641fec39789b4160aed94e665f6748730aad70a4474 WHIRLPOOL b330deb257a219ab1eb89e13edfbb3218b7292eb4849fc393c4acc12691c4e9b98e16535abb9c231e5cda9368fcb4581ac48277cc48737f5e12c9ee5b0689695
EBUILD iaxclient-2.1_beta3-r3.ebuild 1918 SHA256 059e5a35d23641abac3bb4ca5ec4cda7dea25263874c6c68d519d696d6964d42 SHA512 1ce1025c90405e5561debb5cfafc03884d317badbbc5f013cc45271b364859816fdf4a81f55006eb3929f983b265f88105dd1c3ef4c356bce3a970ae6ca33798 WHIRLPOOL 6ca768aa3159e930bdb27090864bc090a5a5289aa69c678c05db102c916b84511d07bee1705346b4d03fdcac96cf7d69397b36e108f6e96c2256b2699db617f3
EBUILD iaxclient-2.1_beta3-r4.ebuild 2027 SHA256 37a1595f87ffbdeb999dbd7854091b7b7405cb814d5022332e31b30e21b44e13 SHA512 c2878010cab3a5bc82241655e1a3fb1884125190373c24548f5327674c877c84587c58b0bd39d321b2a95fb7a5e963650b315ebaf3d234138ac3e105f49eee46 WHIRLPOOL f76f977031e9b0f40f571f4c14a242a50bcaf13a86657e2279514954529d9b2c1ecaa96a76300e0eadbbfb4079f066632c7a7e26e2608679ccf98a1e33f9783c
EBUILD iaxclient-2.1_beta3-r5.ebuild 2073 SHA256 280d3df159b5e9771a0bd62de32df383eea4fb4dc67bac9c69f29e9f5eb1c1f6 SHA512 24a7f4306e80abe28feb8d6487d0b79c27df1837337b174a17db9136bf75d603c4de4861a563dc0ccd92a7e198d2d866214a70374b495dbe8b3ab4fc7ca670fb WHIRLPOOL bfc351165b91e5cb4faa788ab7ebb74a30bf32feb14e8c195d93e0b7f26972595ea16bc07fce55e7ab3d95350c1a67691ed85176f4561ab407f9bc3cec490d3a

View file

@ -0,0 +1,103 @@
--- a/lib/codec_ffmpeg.c.orig 2015-05-23 14:18:22.000000000 +0800
+++ a/lib/codec_ffmpeg.c 2015-05-23 15:14:33.812037476 +0800
@@ -58,30 +58,30 @@
static struct slice_set_t * g_slice_set = 0;
-static enum CodecID map_iaxc_codec_to_avcodec(int format)
+static int map_iaxc_codec_to_avcodec(int format)
{
switch (format)
{
case IAXC_FORMAT_H261:
- return CODEC_ID_H261;
+ return AV_CODEC_ID_H261;
case IAXC_FORMAT_H263:
- return CODEC_ID_H263;
+ return AV_CODEC_ID_H263;
case IAXC_FORMAT_H263_PLUS:
- return CODEC_ID_H263P;
+ return AV_CODEC_ID_H263P;
case IAXC_FORMAT_MPEG4:
- return CODEC_ID_MPEG4;
+ return AV_CODEC_ID_MPEG4;
case IAXC_FORMAT_H264:
- return CODEC_ID_H264;
+ return AV_CODEC_ID_H264;
case IAXC_FORMAT_THEORA:
- return CODEC_ID_THEORA;
+ return AV_CODEC_ID_THEORA;
default:
- return CODEC_ID_NONE;
+ return AV_CODEC_ID_NONE;
}
}
@@ -390,7 +390,7 @@
g_slice_set = slice_set;
slice_set->num_slices = 0;
- encoded_size = avcodec_encode_video(e->avctx,
+ encoded_size = avcodec_encode_video2(e->avctx,
e->frame_buf, e->frame_buf_len, e->picture);
if (!encoded_size)
@@ -554,8 +554,7 @@
{
c->decode = decode_rtp_slice;
e->avctx->rtp_payload_size = fragsize;
- e->avctx->flags |=
- CODEC_FLAG_TRUNCATED | CODEC_FLAG2_STRICT_GOP;
+ e->avctx->flags |= CODEC_FLAG_TRUNCATED;
e->avctx->rtp_callback = encode_rtp_callback;
d->avctx->flags |= CODEC_FLAG_TRUNCATED;
}
@@ -566,7 +565,7 @@
* is the regular h.263, so we handle this special case
* here.
*/
- ff_dec_id = CODEC_ID_H263;
+ ff_dec_id = AV_CODEC_ID_H263;
name = "H.263+";
e->avctx->flags |= CODEC_FLAG_AC_PRED;
if (fragsize)
@@ -575,7 +574,6 @@
e->avctx->rtp_payload_size = fragsize;
e->avctx->flags |=
CODEC_FLAG_TRUNCATED |
- CODEC_FLAG2_STRICT_GOP |
CODEC_FLAG2_LOCAL_HEADER;
e->avctx->rtp_callback = encode_rtp_callback;
d->avctx->flags |= CODEC_FLAG_TRUNCATED;
@@ -589,7 +587,6 @@
e->avctx->rtp_callback = encode_rtp_callback;
e->avctx->flags |=
CODEC_FLAG_TRUNCATED |
- CODEC_FLAG2_STRICT_GOP |
CODEC_FLAG2_LOCAL_HEADER;
d->avctx->flags |= CODEC_FLAG_TRUNCATED;
@@ -720,7 +717,7 @@
int codec_video_ffmpeg_check_codec(int format)
{
AVCodec *codec;
- enum CodecID codec_id;
+ int codec_id;
/* These functions are idempotent, so it is okay that we
* may call them elsewhere at a different time.
@@ -729,7 +726,7 @@
codec_id = map_iaxc_codec_to_avcodec(format);
- if (codec_id == CODEC_ID_NONE)
+ if (codec_id == AV_CODEC_ID_NONE)
return 0;
codec = avcodec_find_encoder(codec_id);

View file

@ -0,0 +1,68 @@
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
EAPI="3"
inherit eutils
MY_PV=${PV/_/}
DESCRIPTION="Multiplatform IAX library for creating telephony solutions that interoperate with Asterisk"
HOMEPAGE="http://iaxclient.sourceforge.net/"
SRC_URI="mirror://sourceforge/${PN}/${PN}-${MY_PV}.tar.gz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~x86 ~amd64"
IUSE="stresstest vtestcall +wxwidgets"
DEPEND=""
RDEPEND="wxwidgets? ( x11-libs/wxGTK:2.8[X] )
media-libs/portaudio
net-libs/libvidcap
media-sound/gsm
virtual/ffmpeg[speex,gsm]
stresstest? ( media-libs/liboggz )
vtestcall? ( media-libs/libsdl )"
S="${WORKDIR}"/"${PN}"-"${MY_PV}"
pkg_setup()
{
if use wxwidgets; then
eselect wxwidgets list | grep -q \* || eselect wxwidgets set 1
fi
}
src_prepare() {
epatch "${FILESDIR}"/iaxclient-fix-avcodec-include.patch
sed -i 's#e->avctx->mb_qmin = e->avctx->qmin = 10;#//e->avctx->mb_qmin = e->avctx->qmin = 10;#' lib/codec_ffmpeg.c || die "sed1 failed"
sed -i 's#e->avctx->mb_qmax = e->avctx->qmax = 10;#//e->avctx->mb_qmax = e->avctx->qmax = 10;#' lib/codec_ffmpeg.c || die "sed2 failed"
sed -i 's#avcodec_decode_video#avcodec_decode_video2#' lib/codec_ffmpeg.c || die "sed3 failed"
sed -i 's#in, inlen)#in)#g' lib/codec_ffmpeg.c || die "sed4 failed"
epatch "${FILESDIR}"/iaxclient-ffmpeg.patch
epatch "${FILESDIR}"/iaxclient-ffmpeg2.patch
}
src_configure() {
local myclients
myclients="testcall"
if use vtestcall; then
myclients="${myclients} vtestcall"
fi
if use wxwidgets; then
myclients="${myclients} wx"
ewarn 'If your build fails with "configure: error: wx client requires wxWidgets"'
ewarn 'you can fix it with "eselect wxwidgets set 1"'
fi
if use stresstest; then
myclients="${myclients} stresstest"
fi
sed -e 's/m_id/GetId()/' -i simpleclient/wx/wx.cc
econf --enable-clients="${myclients}" --with-gsm-includes=/usr/include/gsm DESTDIR="${ED}" || die 'configure failed'
}
src_install() {
emake DESTDIR="${ED}" install || die 'emake install failed'
}