diff options
Diffstat (limited to 'media-plugins/gst-plugins-libav')
17 files changed, 1623 insertions, 0 deletions
diff --git a/media-plugins/gst-plugins-libav/ChangeLog b/media-plugins/gst-plugins-libav/ChangeLog new file mode 100644 index 0000000..6d275c7 --- /dev/null +++ b/media-plugins/gst-plugins-libav/ChangeLog @@ -0,0 +1,191 @@ +# ChangeLog for media-plugins/gst-plugins-libav +# Copyright 1999-2014 Gentoo Foundation; Distributed under the GPL v2 +# $Header: /var/cvsroot/gentoo-x86/media-plugins/gst-plugins-libav/ChangeLog,v 1.43 2014/06/26 09:03:32 pacho Exp $ + + 26 Jun 2014; Pacho Ramos <pacho@gentoo.org> gst-plugins-libav-1.2.4.ebuild: + Fix typo + +*gst-plugins-libav-1.2.4 (25 Jun 2014) + + 25 Jun 2014; Pacho Ramos <pacho@gentoo.org> + +files/gst-plugins-libav-1.2.4-ffmpeg2.patch, + +files/gst-plugins-libav-1.2.4-fix-memory-leak.patch, + +gst-plugins-libav-1.2.4.ebuild, -gst-plugins-libav-1.2.0.ebuild: + Version bump, fix memory leak (#494282) + + 18 Jun 2014; Michał Górny <mgorny@gentoo.org> + gst-plugins-libav-1.2.0-r1.ebuild: + Update dependencies to require guaranteed EAPI=5 or multilib ebuilds, bug + #513718. + +*gst-plugins-libav-1.2.0-r1 (10 Jun 2014) + + 10 Jun 2014; Michał Górny <mgorny@gentoo.org> + +gst-plugins-libav-1.2.0-r1.ebuild: + Enable multilib support, bug #493176. + + 21 Jan 2014; Gilles Dartiguelongue <eva@gentoo.org> + -gst-plugins-libav-1.0.3.ebuild, -gst-plugins-libav-1.0.5.ebuild, + -gst-plugins-libav-1.1.0_pre20130128.ebuild, gst-plugins-libav-1.2.0.ebuild: + Clean up old revisions. Raise dependency on gstreamer, bug #498636. + + 22 Oct 2013; Agostino Sarubbo <ago@gentoo.org> + gst-plugins-libav-1.1.0_pre20130128-r1.ebuild: + Stable for sparc, wrt bug #480908 + + 16 Oct 2013; Agostino Sarubbo <ago@gentoo.org> + gst-plugins-libav-1.1.0_pre20130128-r1.ebuild: + Stable for ia64, wrt bug #480908 + + 16 Oct 2013; Jeroen Roovers <jer@gentoo.org> + gst-plugins-libav-1.1.0_pre20130128-r1.ebuild: + Stable for HPPA (bug #480908). + + 15 Oct 2013; Agostino Sarubbo <ago@gentoo.org> + gst-plugins-libav-1.1.0_pre20130128-r1.ebuild: + Stable for alpha, wrt bug #480908 + + 14 Oct 2013; Agostino Sarubbo <ago@gentoo.org> + gst-plugins-libav-1.1.0_pre20130128-r1.ebuild: + Stable for arm, wrt bug #480908 + + 13 Oct 2013; Agostino Sarubbo <ago@gentoo.org> + gst-plugins-libav-1.1.0_pre20130128-r1.ebuild: + Stable for ppc64, wrt bug #480908 + + 12 Oct 2013; Agostino Sarubbo <ago@gentoo.org> + gst-plugins-libav-1.1.0_pre20130128-r1.ebuild: + Stable for ppc, wrt bug #480908 + + 12 Oct 2013; Alexis Ballier <aballier@gentoo.org> + gst-plugins-libav-1.2.0.ebuild, +files/gst-plugins-libav-1.2.0-ffmpeg2.patch: + fix build with ffmpeg2 (again) + + 11 Oct 2013; Agostino Sarubbo <ago@gentoo.org> + gst-plugins-libav-1.1.0_pre20130128-r1.ebuild: + Stable for x86, wrt bug #480908 + + 10 Oct 2013; Agostino Sarubbo <ago@gentoo.org> + gst-plugins-libav-1.1.0_pre20130128-r1.ebuild: + Stable for amd64, wrt bug #480908 + +*gst-plugins-libav-1.2.0 (29 Sep 2013) + + 29 Sep 2013; Gilles Dartiguelongue <eva@gentoo.org> + +gst-plugins-libav-1.2.0.ebuild: + Version bump. + +*gst-plugins-libav-1.1.0_pre20130128-r1 (06 Aug 2013) + + 06 Aug 2013; Alexis Ballier <aballier@gentoo.org> + +gst-plugins-libav-1.1.0_pre20130128-r1.ebuild, + +files/gst-plugins-libav-1.1.0_pre20130128-ffmpeg2.patch: + fix build with ffmpeg-2 + + 28 Jul 2013; Alexis Ballier <aballier@gentoo.org> + gst-plugins-libav-1.1.0_pre20130128.ebuild: + keyword ~amd64-fbsd + + 29 Jun 2013; Agostino Sarubbo <ago@gentoo.org> + gst-plugins-libav-1.1.0_pre20130128.ebuild: + Stable for ppc, wrt bug #464538 + + 29 Jun 2013; Agostino Sarubbo <ago@gentoo.org> + gst-plugins-libav-1.1.0_pre20130128.ebuild: + Stable for sparc, wrt bug #464538 + + 26 Jun 2013; Jeroen Roovers <jer@gentoo.org> + gst-plugins-libav-1.1.0_pre20130128.ebuild: + Stable for HPPA (bug #464538). + + 26 Jun 2013; Agostino Sarubbo <ago@gentoo.org> + gst-plugins-libav-1.1.0_pre20130128.ebuild: + Stable for arm, wrt bug #464538 + + 26 Jun 2013; Agostino Sarubbo <ago@gentoo.org> + gst-plugins-libav-1.1.0_pre20130128.ebuild: + Stable for ia64, wrt bug #464538 + + 26 Jun 2013; Agostino Sarubbo <ago@gentoo.org> + gst-plugins-libav-1.1.0_pre20130128.ebuild: + Stable for alpha, wrt bug #464538 + + 25 Jun 2013; Agostino Sarubbo <ago@gentoo.org> + gst-plugins-libav-1.1.0_pre20130128.ebuild: + Stable for x86, wrt bug #464538 + + 25 Jun 2013; Agostino Sarubbo <ago@gentoo.org> + gst-plugins-libav-1.1.0_pre20130128.ebuild: + Stable for amd64, wrt bug #464538 + + 25 Jun 2013; Agostino Sarubbo <ago@gentoo.org> + gst-plugins-libav-1.1.0_pre20130128.ebuild: + Stable for ppc64, wrt bug #464538 + + 23 Feb 2013; Agostino Sarubbo <ago@gentoo.org> gst-plugins-libav-1.0.5.ebuild: + Stable for alpha, wrt bug #458188 + + 23 Feb 2013; Agostino Sarubbo <ago@gentoo.org> gst-plugins-libav-1.0.5.ebuild: + Stable for hppa, wrt bug #458188 + + 23 Feb 2013; Agostino Sarubbo <ago@gentoo.org> gst-plugins-libav-1.0.5.ebuild: + Stable for sparc, wrt bug #458188 + + 22 Feb 2013; Agostino Sarubbo <ago@gentoo.org> gst-plugins-libav-1.0.5.ebuild: + Stable for arm, wrt bug #458188 + + 22 Feb 2013; Agostino Sarubbo <ago@gentoo.org> gst-plugins-libav-1.0.5.ebuild: + Stable for ia64, wrt bug #458188 + + 21 Feb 2013; Agostino Sarubbo <ago@gentoo.org> gst-plugins-libav-1.0.5.ebuild: + Stable for ppc64, wrt bug #458188 + + 21 Feb 2013; Agostino Sarubbo <ago@gentoo.org> gst-plugins-libav-1.0.5.ebuild: + Stable for ppc, wrt bug #458188 + + 21 Feb 2013; Agostino Sarubbo <ago@gentoo.org> gst-plugins-libav-1.0.5.ebuild: + Stable for x86, wrt bug #458188 + + 21 Feb 2013; Agostino Sarubbo <ago@gentoo.org> gst-plugins-libav-1.0.5.ebuild: + Stable for amd64, wrt bug #458188 + + 15 Feb 2013; Alexis Ballier <aballier@gentoo.org> + gst-plugins-libav-1.1.0_pre20130128.ebuild, + +files/gst-plugins-libav-1.1.0_pre20130128-coma.patch, + +files/gst-plugins-libav-1.1.0_pre20130128-compat.patch: + Fix build with ffmpeg 0.10 / libav 0.8, and fix a problem with muxers with + coma in their name + +*gst-plugins-libav-1.1.0_pre20130128 (03 Feb 2013) + + 03 Feb 2013; Alexandre Rostovtsev <tetromino@gentoo.org> + gst-plugins-libav-1.0.3.ebuild, gst-plugins-libav-1.0.5.ebuild, + +gst-plugins-libav-1.1.0_pre20130128.ebuild, + +files/gst-plugins-libav-1.1.0_pre20130128-gbr-color.patch: + Add gst-plugins-libav-1.1 prerelease for libav-9 and ffmpeg-1.1 compatibility + (bug #423717). Pin gst-plugins-libav-1.0.x to libav-0.8 and ffmpeg-0.10. + +*gst-plugins-libav-1.0.5 (21 Jan 2013) + + 21 Jan 2013; Gilles Dartiguelongue <eva@gentoo.org> + +gst-plugins-libav-1.0.5.ebuild: + Version bump. Do not use gst-plugins10, it was not useful here. + + 20 Dec 2012; Alexandre Rostovtsev <tetromino@gentoo.org> metadata.xml: + Switch to global orc USE flag. + + 09 Dec 2012; Alexandre Rostovtsev <tetromino@gentoo.org> + gst-plugins-libav-1.0.3.ebuild: + Restore accidentally dropped keywords (should have been copied from + gst-plugins-ffmpeg). + + 05 Dec 2012; Gilles Dartiguelongue <eva@gentoo.org> + gst-plugins-libav-1.0.3.ebuild: + Drop direct ffmpeg and libav dependency, virtual should now provide minimum + required versions. + +*gst-plugins-libav-1.0.3 (05 Dec 2012) + + 05 Dec 2012; Gilles Dartiguelongue <eva@gentoo.org> + +gst-plugins-libav-1.0.3.ebuild, +metadata.xml: + Initial ebuild, upstream renamed gst-ffmpeg. diff --git a/media-plugins/gst-plugins-libav/Manifest b/media-plugins/gst-plugins-libav/Manifest new file mode 100644 index 0000000..ed7d1fd --- /dev/null +++ b/media-plugins/gst-plugins-libav/Manifest @@ -0,0 +1,17 @@ +AUX gst-plugins-libav-1.1.0_pre20130128-coma.patch 517 SHA256 3f2d856668aabf8872588a9bdfb6f28296b7b7f6cf5e9a2dd77cb3ee0ecddf4f SHA512 ab89eb9642ecb66a16503d136adf41c42bd41f1021546952580f2b6e8a558916234aebb35bce6af04de5b90e2ccd8695864ef0f44f0013eed904b06ec60c1a61 WHIRLPOOL e36c3ee9a663eb284b191a8bd83e45c346c685bfdc45d96dfe14a31a7918cd1e55aa11228139cb7cb811617e0563cc2f9d0c89fd68c3a37f0641330e045b5d37 +AUX gst-plugins-libav-1.1.0_pre20130128-compat.patch 1810 SHA256 e50bf0fcf9b9c3cac9e712832438642425d3180d085d3cee5bf3427093a3d789 SHA512 1f48b05b70aef81f0c1f190ff38a68fb0d9e95c525042d213ec8a34de48d72b164491cb27064643da080c37859922a2bce1c0161d13512a42afdb8fb774f271d WHIRLPOOL c2bfc6e64b7a2fe215d8e7c02664c4b7ed4ee5657ce264a7bbc0fa021aa9cc403b4c4b3629f73aea41c97e0143226233d5fd7d442ba87bd1b4cb869aa7380a90 +AUX gst-plugins-libav-1.1.0_pre20130128-ffmpeg2.patch 5250 SHA256 51c20417417c797a703710eb27dcd7b9b2cd92321ee78c6dfea10ec77024b0b6 SHA512 7261dc865729c33b4d55953167e89118f2ddf7d9eaff0436d543e30f6d24127d74ccca9b5b2eb23faff28eac38beec343b5306eee70cea80dacd897b419ab0ed WHIRLPOOL 485e538cdee9dbbe88eebe1f6596b0d3f23618d19dccc80932e0a4a33a52c2f0a0a312646f4ce1281136aa60bf109b5f32eaea84e77802113c7f4abc83f796ea +AUX gst-plugins-libav-1.1.0_pre20130128-gbr-color.patch 1001 SHA256 120f5a118cfb71ed8eb03e015e49955ed38bf09a5dd7f9768054219a2e348e24 SHA512 7f29af719101821b88a19a46c2325021724e7f555260ff2a6448f45a87f39df303eae08aa1ef9509ccde467dc9f7e3f3cdcc2611ddd7d1b4f4cfb72f6f21364d WHIRLPOOL 987c420ea0be285c1a8c298080012f14ec8c4de31e5c653d0f312d2be40c32c935a6481e793922d969696dab70a90d9e1b45b74359775723fdceec5dcc9d19cc +AUX gst-plugins-libav-1.2.0-ffmpeg2.patch 5020 SHA256 f7d8729719ecd1dd5103f9bd23230c01fdece180d0e08ff7e8f50ba564607647 SHA512 1ae30423e434dbb158475428f98482dc479862969e3b5493876d32bc425f07d2eec582ab92b6455fd487a7ddfe4142b6dcbd5f23e0de49453082fb331eff3914 WHIRLPOOL bca67b726c41553d1f2739ff5b65fc9dfcb5a5107e320217985d089cb349a33b37d74ee0c3cbfd52ed8107626fabbe773379e4ef2c181f2e172ff4457850f65f +AUX gst-plugins-libav-1.2.4-ffmpeg2.patch 5020 SHA256 f7d8729719ecd1dd5103f9bd23230c01fdece180d0e08ff7e8f50ba564607647 SHA512 1ae30423e434dbb158475428f98482dc479862969e3b5493876d32bc425f07d2eec582ab92b6455fd487a7ddfe4142b6dcbd5f23e0de49453082fb331eff3914 WHIRLPOOL bca67b726c41553d1f2739ff5b65fc9dfcb5a5107e320217985d089cb349a33b37d74ee0c3cbfd52ed8107626fabbe773379e4ef2c181f2e172ff4457850f65f +AUX gst-plugins-libav-1.2.4-fix-memory-leak.patch 3064 SHA256 cbe0f73e83847fcce38ebc260e7ba6063f9f026176a231ce83012b2308cdd053 SHA512 64f54a9ee9838df5eb8dde3970a4fd8f50c4515c4b9f9ea071c54a32edb634947ff0d968065b5e0af0f6eb706d3c61adf0eff835b89ee0ec49b533dbd3733a8c WHIRLPOOL 23e8593549ab23d1298bba5eaf0089e48ca3cae75e178c94b60a41b91a323c26b9b364bb819c8b375c0d43f1ab2f6202731a67d0fa25e07973e261653ce448a6 +AUX gst-plugins-libav-1.2.4-libav10-01-codecid-avcodecid.patch 16556 SHA256 31d25fd4287f7fb0a604c4621be2c76a499294fde3e1ef0c5b8f672ea83d960c SHA512 30a880f0bc59d9f30b2fd0a25b167ce9e76694a7b2d5ce4f351f3e49fa6f0bf6bcceeaff1c8c1398130ad7213f534955394a57dda38e1f31d301efb53947c6bb WHIRLPOOL d155e641976ddf7a0591bd6370d80dd0d42fe5e53991cf7684befe3a63e52b84d112c71d36fe1de700e74d9df252f1e625160a69820710178f1958cfd4791a22 +AUX gst-plugins-libav-1.2.4-libav10-02-avenc.patch 1217 SHA256 d09dfd244e71369fc1e96b7bc3d26b298270d6e8e5c51b4420ec13e26729532f SHA512 b8eb879d3d689c6dfe76530382943f92bf11f7c6807b2a4ed4de2fc3b3da6460dae02acb1ea96f485374c337b020a6731b7d1982c6d13228cdec1ad47dfe0553 WHIRLPOOL b56fee245ee57a8c10a31c95236b505e943c72d4138f8d3f684e02b7a4730752f62c3385389434f2fbb5b5a84b0f41ff47c6fb06ed088d9403ad21cf0d12337d +AUX gst-plugins-libav-1.2.4-libav10-03-no-r-frame-rate-field.patch 2218 SHA256 00453917e8f4c52c0362d09f1dacf376e20abad00a04ce97c9d148313b402d11 SHA512 6039ea33622f1922ee677da0da9bd3fc4561f85494c5df9e2e8f217f4ec43c73504624a3ec595ea682427eb17959e08fe726cefc31e8f50e2d4b2e823dcf5df4 WHIRLPOOL 0574e1aca5af28f4a4e37ffb7710aa3745ba19beece293be98fea9d5af592d5f9c532b699530f268513da93cf167da61555c05771acf45aa010f3d62f3b8a146 +AUX gst-plugins-libav-1.2.4-libav10-04-no_AVCODEC_MAX_AUDIO_FRAME_SIZE.patch 1250 SHA256 73e9779ec9902a6c3de6b5ef2207de5c8324e3fef0de0a15798eec930fb214e5 SHA512 fca3aa6d1263e8f1cfc72aeaf680188d48c86c680367e11c6fbcfb3ddcc2e180c9b26aebabec3c1417c0dcc96075d274501e88b4bed62db381bbe08aa949d5b9 WHIRLPOOL c6065daf4097bc9721790b665420ca77184e1203e2cd5815823f83efdfecf860e6a93374bc07e18c37d50069d196e68b63cdb28165587e928f9b3875208fe281 +AUX gst-plugins-libav-1.2.4-libav10-05-new_config_interface.patch 3367 SHA256 dfa05649daa6682ecea95638f0a7075b7af6360e7d09019892aa44cd5fd0d75b SHA512 bc46136b87e2ffe1b01989c9f60f1953a8e31954055fb8ed99ca8811019a41e1227b14f88c522419770004f73543551889f1c76acf778e0dc87b73024b2733d6 WHIRLPOOL 54d95a55cd365185abe90122de0240652672f9f3c09172accda56f16c3fb7def9506058c709ab5f2943c6caa895a586ed3ddac4a074f2d549119d60c50d767d5 +AUX gst-plugins-libav-1.2.4-libav10-06-av_encode_video.patch 5900 SHA256 233b29328101cdb08b17332f2c8ac515df8d6f0fc0a281307452faacf95a2c1d SHA512 70753d39e5cae6f22b67a6105ca11c011dad8710a1423d756df7af696f124321b764eee27d869735836ef07a6f6a29c95463abaa74d30d8699e0082eda2d00a7 WHIRLPOOL 6d6ef2de410cf7386d6f9d7a712c9d92492934aef4cc80e9dcc388ce0dd69566578c206b371ac341129a83861e10d7b89b4e8cc29438e4f7a040c6287ee93afe +DIST gst-libav-1.2.4.tar.xz 4580144 SHA256 2a69480d63fc2db93249d9e2e229ab3541bbc2db881b0f64de13d0bfc7d1f037 SHA512 64b24f0995865bc736946ad0709b37d6557ce1b91359371c7aaf48d02a0cb486f3bf90b72f483c8ccb661cd5fb637564809bc92d070ad901576bae5b17db0273 WHIRLPOOL 94948887c9ff642ab7e87695acb19b2a210946dd1938776d7d653017fc5231c9144e48c3d467f8c893513a29976d4e8b88457ed44bb0849cdb6f721e1ea576b0 +EBUILD gst-plugins-libav-1.2.4-r1.ebuild 2678 SHA256 9ba5466dfccc15fc4260e061b00a73c14ccee51b21188c94c15fbf24394ae823 SHA512 ab59c5d526c51c38135fe4c1763a31006c740e48532b7bf4a4940e1ae4a8e51c0af3bb99cfa7df8248d3ea9ed06fe8c1ffb709fe0ff805cf0e91e6cae1d93a71 WHIRLPOOL 55ca21eaa4dafcbbfa6a7d6d7c257cd736ef5681f7ef3f53ed565e1bb1bba416e6d1ee46461ea798028d6a92eb0d965d0ed884cf6eab8df46935df2e802a7ffa +MISC ChangeLog 6979 SHA256 c58dcfa7b285a445b83142bd7038200f7a0334aa68060aeb0bf4cc930d78f319 SHA512 1ec6797fba7d56ccf7e73d9e7fe3b8911203337987d1075c44fe0b5b644abf8a5628adbda16db8933143b3b5c53e556752a43663d360210dcb68f8a96c8d9eb0 WHIRLPOOL d3d0f62eb00de1286fd23298749409d91f73292a9f4d1db95317e83070f0594906fe8d69ed97ebbd942a1636a56b0a5029818d2e4b35aac778aa32db9f1d21c1 +MISC metadata.xml 163 SHA256 5be82689c9f32031a2438b08ace0c4bcdc738cec0eb736d9aa7e529cde4b8a6c SHA512 9688f0e23097fe5baefa6b3cf28276c88e53314989b51e1afc9edc0e68a19c215a67dd0bfb84a157b130d424912ac72bf6c85f9ce066c8d9f6776e4c1d019ccc WHIRLPOOL 6609d5606451d3adf31c010aeb51bec29714c3cda8e1a730af0ea1f51289f7139ac86f11c056e59143dddcf46291b9d79ae94083b77488f28717bf51972e0c3b diff --git a/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.1.0_pre20130128-coma.patch b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.1.0_pre20130128-coma.patch new file mode 100644 index 0000000..4af35d2 --- /dev/null +++ b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.1.0_pre20130128-coma.patch @@ -0,0 +1,16 @@ +Some muxers come with a ',' in their name, replace it by '_' as in the other +places. + +Index: gst-libav-1.1.0_pre20130128/ext/libav/gstavmux.c +=================================================================== +--- gst-libav-1.1.0_pre20130128.orig/ext/libav/gstavmux.c ++++ gst-libav-1.1.0_pre20130128/ext/libav/gstavmux.c +@@ -937,7 +937,7 @@ gst_ffmpegmux_register (GstPlugin * plug + p = type_name; + + while (*p) { +- if (*p == '.') ++ if (*p == '.' || *p == ',') + *p = '_'; + p++; + } diff --git a/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.1.0_pre20130128-compat.patch b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.1.0_pre20130128-compat.patch new file mode 100644 index 0000000..f41c875 --- /dev/null +++ b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.1.0_pre20130128-compat.patch @@ -0,0 +1,49 @@ +Index: gst-libav-1.1.0_pre20130128/ext/libav/gstavcodecmap.c +=================================================================== +--- gst-libav-1.1.0_pre20130128.orig/ext/libav/gstavcodecmap.c ++++ gst-libav-1.1.0_pre20130128/ext/libav/gstavcodecmap.c +@@ -27,7 +27,16 @@ + + #include <gst/gst.h> + #include <libavcodec/avcodec.h> ++#include <libavutil/avutil.h> ++#if (LIBAVUTIL_VERSION_INT > AV_VERSION_INT(52,6,0) || (LIBAVUTIL_VERSION_MICRO < 100 && LIBAVUTIL_VERSION_INT > AV_VERSION_INT(52,2,0))) + #include <libavutil/channel_layout.h> ++#else ++#include <libavutil/audioconvert.h> ++#endif ++#if (LIBAVUTIL_VERSION_INT < AV_VERSION_INT(51,42,0) || (LIBAVUTIL_VERSION_MICRO > 100 && LIBAVUTIL_VERSION_INT < AV_VERSION_INT(51,74,0))) ++#define AVPixelFormat PixelFormat ++#endif ++ + + #include "gstav.h" + #include "gstavcodecmap.h" +Index: gst-libav-1.1.0_pre20130128/ext/libav/gstavutils.h +=================================================================== +--- gst-libav-1.1.0_pre20130128.orig/ext/libav/gstavutils.h ++++ gst-libav-1.1.0_pre20130128/ext/libav/gstavutils.h +@@ -94,4 +94,23 @@ av_smp_format_depth(enum AVSampleFormat + GstBuffer * + new_aligned_buffer (gint size); + ++#if (LIBAVCODEC_VERSION_INT < AV_VERSION_INT(54,7,0) || (LIBAVCODEC_VERSION_MICRO >= 100 && LIBAVCODEC_VERSION_INT < AV_VERSION_INT(54,8,0))) ++static inline int av_codec_is_encoder(AVCodec *codec) ++{ ++ return codec && (codec->encode || codec->encode2); ++} ++ ++static inline int av_codec_is_decoder(AVCodec *codec) ++{ ++ return codec && codec->decode; ++} ++#endif ++ ++#if (LIBAVCODEC_VERSION_INT < AV_VERSION_INT(54,28,0) || (LIBAVCODEC_VERSION_MICRO >= 100 && LIBAVCODEC_VERSION_INT < AV_VERSION_INT(54,59,0))) ++static inline void avcodec_free_frame(AVFrame **frame) ++{ ++ av_free(*frame); ++} ++#endif ++ + #endif /* __GST_FFMPEG_UTILS_H__ */ diff --git a/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.1.0_pre20130128-ffmpeg2.patch b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.1.0_pre20130128-ffmpeg2.patch new file mode 100644 index 0000000..66b965a --- /dev/null +++ b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.1.0_pre20130128-ffmpeg2.patch @@ -0,0 +1,121 @@ +Index: gst-libav-1.1.0_pre20130128/ext/libav/gstavauddec.c +=================================================================== +--- gst-libav-1.1.0_pre20130128.orig/ext/libav/gstavauddec.c ++++ gst-libav-1.1.0_pre20130128/ext/libav/gstavauddec.c +@@ -420,7 +420,7 @@ gst_ffmpegauddec_audio_frame (GstFFMpegA + GstBuffer ** outbuf, GstFlowReturn * ret) + { + gint len = -1; +- gint have_data = AVCODEC_MAX_AUDIO_FRAME_SIZE; ++ gint have_data = 0; + AVPacket packet; + AVFrame frame; + +Index: gst-libav-1.1.0_pre20130128/ext/libav/gstavaudenc.c +=================================================================== +--- gst-libav-1.1.0_pre20130128.orig/ext/libav/gstavaudenc.c ++++ gst-libav-1.1.0_pre20130128/ext/libav/gstavaudenc.c +@@ -266,7 +266,6 @@ gst_ffmpegaudenc_set_format (GstAudioEnc + ffmpegaudenc->context->coder_type = 0; + ffmpegaudenc->context->context_model = 0; + ffmpegaudenc->context->scenechange_threshold = 0; +- ffmpegaudenc->context->inter_threshold = 0; + + /* fetch pix_fmt and so on */ + gst_ffmpeg_audioinfo_to_context (info, ffmpegaudenc->context); +Index: gst-libav-1.1.0_pre20130128/ext/libav/gstavcfg.c +=================================================================== +--- gst-libav-1.1.0_pre20130128.orig/ext/libav/gstavcfg.c ++++ gst-libav-1.1.0_pre20130128/ext/libav/gstavcfg.c +@@ -171,13 +171,10 @@ gst_ffmpeg_idct_algo_get_type (void) + {FF_IDCT_INT, "JPEG reference Integer", "int"}, + {FF_IDCT_SIMPLE, "Simple", "simple"}, + {FF_IDCT_SIMPLEMMX, "Simple MMX", "simplemmx"}, +- {FF_IDCT_LIBMPEG2MMX, "LIBMPEG2MMX", "libmpeg2mmx"}, + {FF_IDCT_ARM, "ARM", "arm"}, + {FF_IDCT_ALTIVEC, "ALTIVEC", "altivec"}, + {FF_IDCT_SH4, "SH4", "sh4"}, + {FF_IDCT_SIMPLEARM, "SIMPLEARM", "simplearm"}, +- {FF_IDCT_H264, "H264", "h264"}, +- {FF_IDCT_VP3, "VP3", "vp3"}, + {FF_IDCT_IPP, "IPP", "ipp"}, + {FF_IDCT_XVIDMMX, "XVIDMMX", "xvidmmx"}, + {0, NULL, NULL}, +@@ -274,9 +271,6 @@ gst_ffmpeg_flags_get_type (void) + "global-headers"}, + {CODEC_FLAG_AC_PRED, "H263 Advanced Intra Coding / MPEG4 AC prediction", + "aic"}, +- {CODEC_FLAG_CBP_RD, "Rate Distoration Optimization for CBP", "cbp-rd"}, +- {CODEC_FLAG_QP_RD, "Rate Distoration Optimization for QP selection", +- "qp-rd"}, + {CODEC_FLAG_CLOSED_GOP, "Closed GOP", "closedgop"}, + {0, NULL, NULL}, + }; +@@ -564,18 +558,6 @@ gst_ffmpeg_cfg_init (void) + -100, G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + gst_ffmpeg_add_pspec (pspec, max_key_interval, FALSE, mpeg, NULL); + +- pspec = g_param_spec_int ("luma-elim-threshold", +- "Luma Elimination Threshold", +- "Luma Single Coefficient Elimination Threshold", +- -99, 99, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); +- gst_ffmpeg_add_pspec (pspec, config.luma_elim_threshold, FALSE, mpeg, NULL); +- +- pspec = g_param_spec_int ("chroma-elim-threshold", +- "Chroma Elimination Threshold", +- "Chroma Single Coefficient Elimination Threshold", +- -99, 99, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); +- gst_ffmpeg_add_pspec (pspec, config.chroma_elim_threshold, FALSE, mpeg, NULL); +- + pspec = g_param_spec_float ("lumi-masking", "Luminance Masking", + "Luminance Masking", -1.0f, 1.0f, 0.0f, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); +Index: gst-libav-1.1.0_pre20130128/ext/libav/gstavcodecmap.c +=================================================================== +--- gst-libav-1.1.0_pre20130128.orig/ext/libav/gstavcodecmap.c ++++ gst-libav-1.1.0_pre20130128/ext/libav/gstavcodecmap.c +@@ -797,13 +797,11 @@ gst_ffmpeg_codecid_to_caps (enum AVCodec + break; + } + +- /* FIXME: context->sub_id must be filled in during decoding */ + caps = + gst_ff_vid_caps_new (context, NULL, codec_id, encode, + "video/x-pn-realvideo", "systemstream", G_TYPE_BOOLEAN, FALSE, + "rmversion", G_TYPE_INT, version, NULL); + if (context) { +- gst_caps_set_simple (caps, "format", G_TYPE_INT, context->sub_id, NULL); + if (context->extradata_size >= 8) { + gst_caps_set_simple (caps, + "subformat", G_TYPE_INT, GST_READ_UINT32_BE (context->extradata), +@@ -2855,18 +2853,6 @@ gst_ffmpeg_caps_with_codecid (enum AVCod + } + break; + +- case AV_CODEC_ID_RV10: +- case AV_CODEC_ID_RV20: +- case AV_CODEC_ID_RV30: +- case AV_CODEC_ID_RV40: +- { +- gint format; +- +- if (gst_structure_get_int (str, "format", &format)) +- context->sub_id = format; +- +- break; +- } + case AV_CODEC_ID_COOK: + case AV_CODEC_ID_RA_288: + case AV_CODEC_ID_RA_144: +Index: gst-libav-1.1.0_pre20130128/ext/libav/gstavvidenc.c +=================================================================== +--- gst-libav-1.1.0_pre20130128.orig/ext/libav/gstavvidenc.c ++++ gst-libav-1.1.0_pre20130128/ext/libav/gstavvidenc.c +@@ -332,7 +332,6 @@ gst_ffmpegvidenc_set_format (GstVideoEnc + ffmpegenc->context->coder_type = 0; + ffmpegenc->context->context_model = 0; + ffmpegenc->context->scenechange_threshold = 0; +- ffmpegenc->context->inter_threshold = 0; + + /* and last but not least the pass; CBR, 2-pass, etc */ + ffmpegenc->context->flags |= ffmpegenc->pass; diff --git a/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.1.0_pre20130128-gbr-color.patch b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.1.0_pre20130128-gbr-color.patch new file mode 100644 index 0000000..d125549 --- /dev/null +++ b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.1.0_pre20130128-gbr-color.patch @@ -0,0 +1,28 @@ +From 67e11c7ad916c2e0b9af99153a01be378ea174c0 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian.droege@collabora.co.uk> +Date: Sat, 10 Nov 2012 16:57:06 +0100 +Subject: [PATCH] avcodecmap: Add mappings for the GBR color formats + +--- + ext/libav/gstavcodecmap.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/ext/libav/gstavcodecmap.c b/ext/libav/gstavcodecmap.c +index abf8f92..5d7dd23 100644 +--- a/ext/libav/gstavcodecmap.c ++++ b/ext/libav/gstavcodecmap.c +@@ -2182,6 +2182,11 @@ static const PixToFmt pixtofmttable[] = { + {GST_VIDEO_FORMAT_I420_10BE, PIX_FMT_YUV420P10BE}, + {GST_VIDEO_FORMAT_I422_10LE, PIX_FMT_YUV422P10LE}, + {GST_VIDEO_FORMAT_I422_10BE, PIX_FMT_YUV422P10BE}, ++ {GST_VIDEO_FORMAT_Y444_10LE, PIX_FMT_YUV444P10LE}, ++ {GST_VIDEO_FORMAT_Y444_10BE, PIX_FMT_YUV444P10BE}, ++ {GST_VIDEO_FORMAT_GBR, PIX_FMT_GBRP}, ++ {GST_VIDEO_FORMAT_GBR_10LE, PIX_FMT_GBRP10LE}, ++ {GST_VIDEO_FORMAT_GBR_10BE, PIX_FMT_GBRP10BE}, + }; + + GstVideoFormat +-- +1.8.1.2 + diff --git a/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.0-ffmpeg2.patch b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.0-ffmpeg2.patch new file mode 100644 index 0000000..3deeea0 --- /dev/null +++ b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.0-ffmpeg2.patch @@ -0,0 +1,120 @@ +Index: gst-libav-1.2.0/ext/libav/gstavauddec.c +=================================================================== +--- gst-libav-1.2.0.orig/ext/libav/gstavauddec.c ++++ gst-libav-1.2.0/ext/libav/gstavauddec.c +@@ -460,7 +460,7 @@ gst_ffmpegauddec_audio_frame (GstFFMpegA + GstBuffer ** outbuf, GstFlowReturn * ret) + { + gint len = -1; +- gint have_data = AVCODEC_MAX_AUDIO_FRAME_SIZE; ++ gint have_data = 0; + AVPacket packet; + AVFrame frame; + +Index: gst-libav-1.2.0/ext/libav/gstavaudenc.c +=================================================================== +--- gst-libav-1.2.0.orig/ext/libav/gstavaudenc.c ++++ gst-libav-1.2.0/ext/libav/gstavaudenc.c +@@ -289,7 +289,6 @@ gst_ffmpegaudenc_set_format (GstAudioEnc + ffmpegaudenc->context->coder_type = 0; + ffmpegaudenc->context->context_model = 0; + ffmpegaudenc->context->scenechange_threshold = 0; +- ffmpegaudenc->context->inter_threshold = 0; + + /* fetch pix_fmt and so on */ + gst_ffmpeg_audioinfo_to_context (info, ffmpegaudenc->context); +Index: gst-libav-1.2.0/ext/libav/gstavcfg.c +=================================================================== +--- gst-libav-1.2.0.orig/ext/libav/gstavcfg.c ++++ gst-libav-1.2.0/ext/libav/gstavcfg.c +@@ -171,13 +171,10 @@ gst_ffmpeg_idct_algo_get_type (void) + {FF_IDCT_INT, "JPEG reference Integer", "int"}, + {FF_IDCT_SIMPLE, "Simple", "simple"}, + {FF_IDCT_SIMPLEMMX, "Simple MMX", "simplemmx"}, +- {FF_IDCT_LIBMPEG2MMX, "LIBMPEG2MMX", "libmpeg2mmx"}, + {FF_IDCT_ARM, "ARM", "arm"}, + {FF_IDCT_ALTIVEC, "ALTIVEC", "altivec"}, + {FF_IDCT_SH4, "SH4", "sh4"}, + {FF_IDCT_SIMPLEARM, "SIMPLEARM", "simplearm"}, +- {FF_IDCT_H264, "H264", "h264"}, +- {FF_IDCT_VP3, "VP3", "vp3"}, + {FF_IDCT_IPP, "IPP", "ipp"}, + {FF_IDCT_XVIDMMX, "XVIDMMX", "xvidmmx"}, + {0, NULL, NULL}, +@@ -274,9 +271,6 @@ gst_ffmpeg_flags_get_type (void) + "global-headers"}, + {CODEC_FLAG_AC_PRED, "H263 Advanced Intra Coding / MPEG4 AC prediction", + "aic"}, +- {CODEC_FLAG_CBP_RD, "Rate Distoration Optimization for CBP", "cbp-rd"}, +- {CODEC_FLAG_QP_RD, "Rate Distoration Optimization for QP selection", +- "qp-rd"}, + {CODEC_FLAG_CLOSED_GOP, "Closed GOP", "closedgop"}, + {0, NULL, NULL}, + }; +@@ -564,18 +558,6 @@ gst_ffmpeg_cfg_init (void) + -100, G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + gst_ffmpeg_add_pspec (pspec, max_key_interval, FALSE, mpeg, NULL); + +- pspec = g_param_spec_int ("luma-elim-threshold", +- "Luma Elimination Threshold", +- "Luma Single Coefficient Elimination Threshold", +- -99, 99, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); +- gst_ffmpeg_add_pspec (pspec, config.luma_elim_threshold, FALSE, mpeg, NULL); +- +- pspec = g_param_spec_int ("chroma-elim-threshold", +- "Chroma Elimination Threshold", +- "Chroma Single Coefficient Elimination Threshold", +- -99, 99, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); +- gst_ffmpeg_add_pspec (pspec, config.chroma_elim_threshold, FALSE, mpeg, NULL); +- + pspec = g_param_spec_float ("lumi-masking", "Luminance Masking", + "Luminance Masking", -1.0f, 1.0f, 0.0f, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); +Index: gst-libav-1.2.0/ext/libav/gstavcodecmap.c +=================================================================== +--- gst-libav-1.2.0.orig/ext/libav/gstavcodecmap.c ++++ gst-libav-1.2.0/ext/libav/gstavcodecmap.c +@@ -788,12 +788,10 @@ gst_ffmpeg_codecid_to_caps (enum AVCodec + break; + } + +- /* FIXME: context->sub_id must be filled in during decoding */ + caps = + gst_ff_vid_caps_new (context, NULL, codec_id, encode, + "video/x-pn-realvideo", "rmversion", G_TYPE_INT, version, NULL); + if (context) { +- gst_caps_set_simple (caps, "format", G_TYPE_INT, context->sub_id, NULL); + if (context->extradata_size >= 8) { + gst_caps_set_simple (caps, + "subformat", G_TYPE_INT, GST_READ_UINT32_BE (context->extradata), +@@ -2892,18 +2890,6 @@ gst_ffmpeg_caps_with_codecid (enum AVCod + } + break; + +- case AV_CODEC_ID_RV10: +- case AV_CODEC_ID_RV20: +- case AV_CODEC_ID_RV30: +- case AV_CODEC_ID_RV40: +- { +- gint format; +- +- if (gst_structure_get_int (str, "format", &format)) +- context->sub_id = format; +- +- break; +- } + case AV_CODEC_ID_COOK: + case AV_CODEC_ID_RA_288: + case AV_CODEC_ID_RA_144: +Index: gst-libav-1.2.0/ext/libav/gstavvidenc.c +=================================================================== +--- gst-libav-1.2.0.orig/ext/libav/gstavvidenc.c ++++ gst-libav-1.2.0/ext/libav/gstavvidenc.c +@@ -338,7 +338,6 @@ gst_ffmpegvidenc_set_format (GstVideoEnc + ffmpegenc->context->coder_type = 0; + ffmpegenc->context->context_model = 0; + ffmpegenc->context->scenechange_threshold = 0; +- ffmpegenc->context->inter_threshold = 0; + + /* and last but not least the pass; CBR, 2-pass, etc */ + ffmpegenc->context->flags |= ffmpegenc->pass; diff --git a/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-ffmpeg2.patch b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-ffmpeg2.patch new file mode 100644 index 0000000..3deeea0 --- /dev/null +++ b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-ffmpeg2.patch @@ -0,0 +1,120 @@ +Index: gst-libav-1.2.0/ext/libav/gstavauddec.c +=================================================================== +--- gst-libav-1.2.0.orig/ext/libav/gstavauddec.c ++++ gst-libav-1.2.0/ext/libav/gstavauddec.c +@@ -460,7 +460,7 @@ gst_ffmpegauddec_audio_frame (GstFFMpegA + GstBuffer ** outbuf, GstFlowReturn * ret) + { + gint len = -1; +- gint have_data = AVCODEC_MAX_AUDIO_FRAME_SIZE; ++ gint have_data = 0; + AVPacket packet; + AVFrame frame; + +Index: gst-libav-1.2.0/ext/libav/gstavaudenc.c +=================================================================== +--- gst-libav-1.2.0.orig/ext/libav/gstavaudenc.c ++++ gst-libav-1.2.0/ext/libav/gstavaudenc.c +@@ -289,7 +289,6 @@ gst_ffmpegaudenc_set_format (GstAudioEnc + ffmpegaudenc->context->coder_type = 0; + ffmpegaudenc->context->context_model = 0; + ffmpegaudenc->context->scenechange_threshold = 0; +- ffmpegaudenc->context->inter_threshold = 0; + + /* fetch pix_fmt and so on */ + gst_ffmpeg_audioinfo_to_context (info, ffmpegaudenc->context); +Index: gst-libav-1.2.0/ext/libav/gstavcfg.c +=================================================================== +--- gst-libav-1.2.0.orig/ext/libav/gstavcfg.c ++++ gst-libav-1.2.0/ext/libav/gstavcfg.c +@@ -171,13 +171,10 @@ gst_ffmpeg_idct_algo_get_type (void) + {FF_IDCT_INT, "JPEG reference Integer", "int"}, + {FF_IDCT_SIMPLE, "Simple", "simple"}, + {FF_IDCT_SIMPLEMMX, "Simple MMX", "simplemmx"}, +- {FF_IDCT_LIBMPEG2MMX, "LIBMPEG2MMX", "libmpeg2mmx"}, + {FF_IDCT_ARM, "ARM", "arm"}, + {FF_IDCT_ALTIVEC, "ALTIVEC", "altivec"}, + {FF_IDCT_SH4, "SH4", "sh4"}, + {FF_IDCT_SIMPLEARM, "SIMPLEARM", "simplearm"}, +- {FF_IDCT_H264, "H264", "h264"}, +- {FF_IDCT_VP3, "VP3", "vp3"}, + {FF_IDCT_IPP, "IPP", "ipp"}, + {FF_IDCT_XVIDMMX, "XVIDMMX", "xvidmmx"}, + {0, NULL, NULL}, +@@ -274,9 +271,6 @@ gst_ffmpeg_flags_get_type (void) + "global-headers"}, + {CODEC_FLAG_AC_PRED, "H263 Advanced Intra Coding / MPEG4 AC prediction", + "aic"}, +- {CODEC_FLAG_CBP_RD, "Rate Distoration Optimization for CBP", "cbp-rd"}, +- {CODEC_FLAG_QP_RD, "Rate Distoration Optimization for QP selection", +- "qp-rd"}, + {CODEC_FLAG_CLOSED_GOP, "Closed GOP", "closedgop"}, + {0, NULL, NULL}, + }; +@@ -564,18 +558,6 @@ gst_ffmpeg_cfg_init (void) + -100, G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + gst_ffmpeg_add_pspec (pspec, max_key_interval, FALSE, mpeg, NULL); + +- pspec = g_param_spec_int ("luma-elim-threshold", +- "Luma Elimination Threshold", +- "Luma Single Coefficient Elimination Threshold", +- -99, 99, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); +- gst_ffmpeg_add_pspec (pspec, config.luma_elim_threshold, FALSE, mpeg, NULL); +- +- pspec = g_param_spec_int ("chroma-elim-threshold", +- "Chroma Elimination Threshold", +- "Chroma Single Coefficient Elimination Threshold", +- -99, 99, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); +- gst_ffmpeg_add_pspec (pspec, config.chroma_elim_threshold, FALSE, mpeg, NULL); +- + pspec = g_param_spec_float ("lumi-masking", "Luminance Masking", + "Luminance Masking", -1.0f, 1.0f, 0.0f, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); +Index: gst-libav-1.2.0/ext/libav/gstavcodecmap.c +=================================================================== +--- gst-libav-1.2.0.orig/ext/libav/gstavcodecmap.c ++++ gst-libav-1.2.0/ext/libav/gstavcodecmap.c +@@ -788,12 +788,10 @@ gst_ffmpeg_codecid_to_caps (enum AVCodec + break; + } + +- /* FIXME: context->sub_id must be filled in during decoding */ + caps = + gst_ff_vid_caps_new (context, NULL, codec_id, encode, + "video/x-pn-realvideo", "rmversion", G_TYPE_INT, version, NULL); + if (context) { +- gst_caps_set_simple (caps, "format", G_TYPE_INT, context->sub_id, NULL); + if (context->extradata_size >= 8) { + gst_caps_set_simple (caps, + "subformat", G_TYPE_INT, GST_READ_UINT32_BE (context->extradata), +@@ -2892,18 +2890,6 @@ gst_ffmpeg_caps_with_codecid (enum AVCod + } + break; + +- case AV_CODEC_ID_RV10: +- case AV_CODEC_ID_RV20: +- case AV_CODEC_ID_RV30: +- case AV_CODEC_ID_RV40: +- { +- gint format; +- +- if (gst_structure_get_int (str, "format", &format)) +- context->sub_id = format; +- +- break; +- } + case AV_CODEC_ID_COOK: + case AV_CODEC_ID_RA_288: + case AV_CODEC_ID_RA_144: +Index: gst-libav-1.2.0/ext/libav/gstavvidenc.c +=================================================================== +--- gst-libav-1.2.0.orig/ext/libav/gstavvidenc.c ++++ gst-libav-1.2.0/ext/libav/gstavvidenc.c +@@ -338,7 +338,6 @@ gst_ffmpegvidenc_set_format (GstVideoEnc + ffmpegenc->context->coder_type = 0; + ffmpegenc->context->context_model = 0; + ffmpegenc->context->scenechange_threshold = 0; +- ffmpegenc->context->inter_threshold = 0; + + /* and last but not least the pass; CBR, 2-pass, etc */ + ffmpegenc->context->flags |= ffmpegenc->pass; diff --git a/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-fix-memory-leak.patch b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-fix-memory-leak.patch new file mode 100644 index 0000000..6745e80 --- /dev/null +++ b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-fix-memory-leak.patch @@ -0,0 +1,96 @@ +--- ext/libav/gstavviddec.c ++++ ext/libav/gstavviddec.c +@@ -523,6 +523,7 @@ open_failed: + + typedef struct + { ++ GstFFMpegVidDec *ffmpegdec; + GstVideoCodecFrame *frame; + gboolean mapped; + GstVideoFrame vframe; +@@ -530,13 +531,17 @@ typedef struct + } GstFFMpegVidDecVideoFrame; + + static GstFFMpegVidDecVideoFrame * +-gst_ffmpegviddec_video_frame_new (GstVideoCodecFrame * frame) ++gst_ffmpegviddec_video_frame_new (GstFFMpegVidDec * ffmpegdec, ++ GstVideoCodecFrame * frame) + { + GstFFMpegVidDecVideoFrame *dframe; + + dframe = g_slice_new0 (GstFFMpegVidDecVideoFrame); ++ dframe->ffmpegdec = ffmpegdec; + dframe->frame = frame; + ++ GST_DEBUG_OBJECT (ffmpegdec, "new video frame %p", dframe); ++ + return dframe; + } + +@@ -544,6 +549,8 @@ static void + gst_ffmpegviddec_video_frame_free (GstFFMpegVidDec * ffmpegdec, + GstFFMpegVidDecVideoFrame * frame) + { ++ GST_DEBUG_OBJECT (ffmpegdec, "free video frame %p", frame); ++ + if (frame->mapped) + gst_video_frame_unmap (&frame->vframe); + gst_video_decoder_release_frame (GST_VIDEO_DECODER (ffmpegdec), frame->frame); +@@ -551,6 +558,14 @@ gst_ffmpegviddec_video_frame_free (GstFFMpegVidDec * ffmpegdec, + g_slice_free (GstFFMpegVidDecVideoFrame, frame); + } + ++static void ++dummy_free_buffer (void *opaque, uint8_t * data) ++{ ++ GstFFMpegVidDecVideoFrame *frame = opaque; ++ ++ gst_ffmpegviddec_video_frame_free (frame->ffmpegdec, frame); ++} ++ + /* called when ffmpeg wants us to allocate a buffer to write the decoded frame + * into. We try to give it memory from our pool */ + static int +@@ -589,7 +604,8 @@ gst_ffmpegviddec_get_buffer (AVCodecContext * context, AVFrame * picture) + goto duplicate_frame; + + /* GstFFMpegVidDecVideoFrame receives the frame ref */ +- picture->opaque = dframe = gst_ffmpegviddec_video_frame_new (frame); ++ picture->opaque = dframe = ++ gst_ffmpegviddec_video_frame_new (ffmpegdec, frame); + + GST_DEBUG_OBJECT (ffmpegdec, "storing opaque %p", dframe); + +@@ -695,12 +711,20 @@ invalid_frame: + fallback: + { + int c; ++ gboolean first = TRUE; + int ret = avcodec_default_get_buffer (context, picture); + + GST_LOG_OBJECT (ffmpegdec, "performing fallback alloc"); +- for (c = 0; c < AV_NUM_DATA_POINTERS; c++) ++ for (c = 0; c < AV_NUM_DATA_POINTERS; c++) { + ffmpegdec->stride[c] = picture->linesize[c]; + ++ if (picture->buf[c] == NULL && first) { ++ picture->buf[c] = ++ av_buffer_create (NULL, 0, dummy_free_buffer, dframe, 0); ++ first = FALSE; ++ } ++ } ++ + return ret; + } + duplicate_frame: +@@ -1684,8 +1718,8 @@ gst_ffmpegviddec_decide_allocation (GstVideoDecoder * decoder, GstQuery * query) + avcodec_align_dimensions2 (ffmpegdec->context, &width, &height, + linesize_align); + edge = +- ffmpegdec->context-> +- flags & CODEC_FLAG_EMU_EDGE ? 0 : avcodec_get_edge_width (); ++ ffmpegdec-> ++ context->flags & CODEC_FLAG_EMU_EDGE ? 0 : avcodec_get_edge_width (); + /* increase the size for the padding */ + width += edge << 1; + height += edge << 1; diff --git a/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-libav10-01-codecid-avcodecid.patch b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-libav10-01-codecid-avcodecid.patch new file mode 100644 index 0000000..82379e6 --- /dev/null +++ b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-libav10-01-codecid-avcodecid.patch @@ -0,0 +1,428 @@ +diff -urpN gst-libav-1.2.4.orig/ext/libav/gstavcodecmap.c gst-libav-1.2.4/ext/libav/gstavcodecmap.c +--- gst-libav-1.2.4.orig/ext/libav/gstavcodecmap.c 2014-01-06 01:58:32.000000000 -0800 ++++ gst-libav-1.2.4/ext/libav/gstavcodecmap.c 2014-06-26 21:32:09.815591569 -0700 +@@ -255,7 +255,7 @@ gst_ffmpeg_video_set_pix_fmts (GstCaps * + */ + static GstCaps * + gst_ff_vid_caps_new (AVCodecContext * context, AVCodec * codec, +- enum CodecID codec_id, gboolean encode, const char *mimetype, ++ enum AVCodecID codec_id, gboolean encode, const char *mimetype, + const char *fieldname, ...) + { + GstCaps *caps = NULL; +@@ -512,7 +512,7 @@ gst_ffmpeg_audio_set_sample_fmts (GstCap + */ + static GstCaps * + gst_ff_aud_caps_new (AVCodecContext * context, AVCodec * codec, +- enum CodecID codec_id, gboolean encode, const char *mimetype, ++ enum AVCodecID codec_id, gboolean encode, const char *mimetype, + const char *fieldname, ...) + { + GstCaps *caps = NULL; +@@ -726,7 +726,7 @@ gst_ff_aud_caps_new (AVCodecContext * co + */ + + GstCaps * +-gst_ffmpeg_codecid_to_caps (enum CodecID codec_id, ++gst_ffmpeg_codecid_to_caps (enum AVCodecID codec_id, + AVCodecContext * context, gboolean encode) + { + GstCaps *caps = NULL; +@@ -828,12 +828,10 @@ gst_ffmpeg_codecid_to_caps (enum CodecID + break; + } + +- /* FIXME: context->sub_id must be filled in during decoding */ + caps = + gst_ff_vid_caps_new (context, NULL, codec_id, encode, + "video/x-pn-realvideo", "rmversion", G_TYPE_INT, version, NULL); + if (context) { +- gst_caps_set_simple (caps, "format", G_TYPE_INT, context->sub_id, NULL); + if (context->extradata_size >= 8) { + gst_caps_set_simple (caps, + "subformat", G_TYPE_INT, GST_READ_UINT32_BE (context->extradata), +@@ -1682,7 +1680,6 @@ gst_ffmpeg_codecid_to_caps (enum CodecID + case AV_CODEC_ID_FLIC: + case AV_CODEC_ID_VMDVIDEO: + case AV_CODEC_ID_VMDAUDIO: +- case AV_CODEC_ID_SNOW: + case AV_CODEC_ID_VIXL: + case AV_CODEC_ID_QPEG: + case AV_CODEC_ID_PGMYUV: +@@ -2132,7 +2129,7 @@ gst_ffmpeg_codecid_to_caps (enum CodecID + + static GstCaps * + gst_ffmpeg_pixfmt_to_caps (enum PixelFormat pix_fmt, AVCodecContext * context, +- enum CodecID codec_id) ++ enum AVCodecID codec_id) + { + GstCaps *caps = NULL; + GstVideoFormat format; +@@ -2193,7 +2190,7 @@ gst_ffmpeg_smpfmt_to_audioformat (enum A + + static GstCaps * + gst_ffmpeg_smpfmt_to_caps (enum AVSampleFormat sample_fmt, +- AVCodecContext * context, AVCodec * codec, enum CodecID codec_id) ++ AVCodecContext * context, AVCodec * codec, enum AVCodecID codec_id) + { + GstCaps *caps = NULL; + GstAudioFormat format; +@@ -2230,7 +2227,7 @@ caps_has_field (GstCaps * caps, const gc + + GstCaps * + gst_ffmpeg_codectype_to_audio_caps (AVCodecContext * context, +- enum CodecID codec_id, gboolean encode, AVCodec * codec) ++ enum AVCodecID codec_id, gboolean encode, AVCodec * codec) + { + GstCaps *caps = NULL; + +@@ -2258,7 +2255,7 @@ gst_ffmpeg_codectype_to_audio_caps (AVCo + + GstCaps * + gst_ffmpeg_codectype_to_video_caps (AVCodecContext * context, +- enum CodecID codec_id, gboolean encode, AVCodec * codec) ++ enum AVCodecID codec_id, gboolean encode, AVCodec * codec) + { + GstCaps *caps; + +@@ -2813,7 +2810,7 @@ full_copy: + */ + + void +-gst_ffmpeg_caps_with_codecid (enum CodecID codec_id, ++gst_ffmpeg_caps_with_codecid (enum AVCodecID codec_id, + enum AVMediaType codec_type, const GstCaps * caps, AVCodecContext * context) + { + GstStructure *str; +@@ -2953,18 +2950,6 @@ gst_ffmpeg_caps_with_codecid (enum Codec + } + break; + +- case AV_CODEC_ID_RV10: +- case AV_CODEC_ID_RV20: +- case AV_CODEC_ID_RV30: +- case AV_CODEC_ID_RV40: +- { +- gint format; +- +- if (gst_structure_get_int (str, "format", &format)) +- context->sub_id = format; +- +- break; +- } + case AV_CODEC_ID_COOK: + case AV_CODEC_ID_RA_288: + case AV_CODEC_ID_RA_144: +@@ -3188,14 +3173,14 @@ gst_ffmpeg_formatid_to_caps (const gchar + + gboolean + gst_ffmpeg_formatid_get_codecids (const gchar * format_name, +- enum CodecID ** video_codec_list, enum CodecID ** audio_codec_list, ++ enum AVCodecID ** video_codec_list, enum AVCodecID ** audio_codec_list, + AVOutputFormat * plugin) + { +- static enum CodecID tmp_vlist[] = { ++ static enum AVCodecID tmp_vlist[] = { + AV_CODEC_ID_NONE, + AV_CODEC_ID_NONE + }; +- static enum CodecID tmp_alist[] = { ++ static enum AVCodecID tmp_alist[] = { + AV_CODEC_ID_NONE, + AV_CODEC_ID_NONE + }; +@@ -3203,12 +3188,12 @@ gst_ffmpeg_formatid_get_codecids (const + GST_LOG ("format_name : %s", format_name); + + if (!strcmp (format_name, "mp4")) { +- static enum CodecID mp4_video_list[] = { ++ static enum AVCodecID mp4_video_list[] = { + AV_CODEC_ID_MPEG4, AV_CODEC_ID_H264, + AV_CODEC_ID_MJPEG, + AV_CODEC_ID_NONE + }; +- static enum CodecID mp4_audio_list[] = { ++ static enum AVCodecID mp4_audio_list[] = { + AV_CODEC_ID_AAC, AV_CODEC_ID_MP3, + AV_CODEC_ID_NONE + }; +@@ -3216,12 +3201,12 @@ gst_ffmpeg_formatid_get_codecids (const + *video_codec_list = mp4_video_list; + *audio_codec_list = mp4_audio_list; + } else if (!strcmp (format_name, "mpeg")) { +- static enum CodecID mpeg_video_list[] = { AV_CODEC_ID_MPEG1VIDEO, ++ static enum AVCodecID mpeg_video_list[] = { AV_CODEC_ID_MPEG1VIDEO, + AV_CODEC_ID_MPEG2VIDEO, + AV_CODEC_ID_H264, + AV_CODEC_ID_NONE + }; +- static enum CodecID mpeg_audio_list[] = { AV_CODEC_ID_MP1, ++ static enum AVCodecID mpeg_audio_list[] = { AV_CODEC_ID_MP1, + AV_CODEC_ID_MP2, + AV_CODEC_ID_MP3, + AV_CODEC_ID_NONE +@@ -3230,10 +3215,10 @@ gst_ffmpeg_formatid_get_codecids (const + *video_codec_list = mpeg_video_list; + *audio_codec_list = mpeg_audio_list; + } else if (!strcmp (format_name, "dvd")) { +- static enum CodecID mpeg_video_list[] = { AV_CODEC_ID_MPEG2VIDEO, ++ static enum AVCodecID mpeg_video_list[] = { AV_CODEC_ID_MPEG2VIDEO, + AV_CODEC_ID_NONE + }; +- static enum CodecID mpeg_audio_list[] = { AV_CODEC_ID_MP2, ++ static enum AVCodecID mpeg_audio_list[] = { AV_CODEC_ID_MP2, + AV_CODEC_ID_AC3, + AV_CODEC_ID_DTS, + AV_CODEC_ID_PCM_S16BE, +@@ -3243,12 +3228,12 @@ gst_ffmpeg_formatid_get_codecids (const + *video_codec_list = mpeg_video_list; + *audio_codec_list = mpeg_audio_list; + } else if (!strcmp (format_name, "mpegts")) { +- static enum CodecID mpegts_video_list[] = { AV_CODEC_ID_MPEG1VIDEO, ++ static enum AVCodecID mpegts_video_list[] = { AV_CODEC_ID_MPEG1VIDEO, + AV_CODEC_ID_MPEG2VIDEO, + AV_CODEC_ID_H264, + AV_CODEC_ID_NONE + }; +- static enum CodecID mpegts_audio_list[] = { AV_CODEC_ID_MP2, ++ static enum AVCodecID mpegts_audio_list[] = { AV_CODEC_ID_MP2, + AV_CODEC_ID_MP3, + AV_CODEC_ID_AC3, + AV_CODEC_ID_DTS, +@@ -3259,28 +3244,28 @@ gst_ffmpeg_formatid_get_codecids (const + *video_codec_list = mpegts_video_list; + *audio_codec_list = mpegts_audio_list; + } else if (!strcmp (format_name, "vob")) { +- static enum CodecID vob_video_list[] = ++ static enum AVCodecID vob_video_list[] = + { AV_CODEC_ID_MPEG2VIDEO, AV_CODEC_ID_NONE }; +- static enum CodecID vob_audio_list[] = { AV_CODEC_ID_MP2, AV_CODEC_ID_AC3, ++ static enum AVCodecID vob_audio_list[] = { AV_CODEC_ID_MP2, AV_CODEC_ID_AC3, + AV_CODEC_ID_DTS, AV_CODEC_ID_NONE + }; + + *video_codec_list = vob_video_list; + *audio_codec_list = vob_audio_list; + } else if (!strcmp (format_name, "flv")) { +- static enum CodecID flv_video_list[] = ++ static enum AVCodecID flv_video_list[] = + { AV_CODEC_ID_FLV1, AV_CODEC_ID_NONE }; +- static enum CodecID flv_audio_list[] = ++ static enum AVCodecID flv_audio_list[] = + { AV_CODEC_ID_MP3, AV_CODEC_ID_NONE }; + + *video_codec_list = flv_video_list; + *audio_codec_list = flv_audio_list; + } else if (!strcmp (format_name, "asf")) { +- static enum CodecID asf_video_list[] = ++ static enum AVCodecID asf_video_list[] = + { AV_CODEC_ID_WMV1, AV_CODEC_ID_WMV2, AV_CODEC_ID_MSMPEG4V3, + AV_CODEC_ID_NONE + }; +- static enum CodecID asf_audio_list[] = ++ static enum AVCodecID asf_audio_list[] = + { AV_CODEC_ID_WMAV1, AV_CODEC_ID_WMAV2, AV_CODEC_ID_MP3, + AV_CODEC_ID_NONE + }; +@@ -3288,22 +3273,22 @@ gst_ffmpeg_formatid_get_codecids (const + *video_codec_list = asf_video_list; + *audio_codec_list = asf_audio_list; + } else if (!strcmp (format_name, "dv")) { +- static enum CodecID dv_video_list[] = ++ static enum AVCodecID dv_video_list[] = + { AV_CODEC_ID_DVVIDEO, AV_CODEC_ID_NONE }; +- static enum CodecID dv_audio_list[] = ++ static enum AVCodecID dv_audio_list[] = + { AV_CODEC_ID_PCM_S16LE, AV_CODEC_ID_NONE }; + + *video_codec_list = dv_video_list; + *audio_codec_list = dv_audio_list; + } else if (!strcmp (format_name, "mov")) { +- static enum CodecID mov_video_list[] = { ++ static enum AVCodecID mov_video_list[] = { + AV_CODEC_ID_SVQ1, AV_CODEC_ID_SVQ3, AV_CODEC_ID_MPEG4, + AV_CODEC_ID_H263, AV_CODEC_ID_H263P, + AV_CODEC_ID_H264, AV_CODEC_ID_DVVIDEO, + AV_CODEC_ID_MJPEG, + AV_CODEC_ID_NONE + }; +- static enum CodecID mov_audio_list[] = { ++ static enum AVCodecID mov_audio_list[] = { + AV_CODEC_ID_PCM_MULAW, AV_CODEC_ID_PCM_ALAW, AV_CODEC_ID_ADPCM_IMA_QT, + AV_CODEC_ID_MACE3, AV_CODEC_ID_MACE6, AV_CODEC_ID_AAC, + AV_CODEC_ID_AMR_NB, AV_CODEC_ID_AMR_WB, +@@ -3314,11 +3299,11 @@ gst_ffmpeg_formatid_get_codecids (const + *video_codec_list = mov_video_list; + *audio_codec_list = mov_audio_list; + } else if ((!strcmp (format_name, "3gp") || !strcmp (format_name, "3g2"))) { +- static enum CodecID tgp_video_list[] = { ++ static enum AVCodecID tgp_video_list[] = { + AV_CODEC_ID_MPEG4, AV_CODEC_ID_H263, AV_CODEC_ID_H263P, AV_CODEC_ID_H264, + AV_CODEC_ID_NONE + }; +- static enum CodecID tgp_audio_list[] = { ++ static enum AVCodecID tgp_audio_list[] = { + AV_CODEC_ID_AMR_NB, AV_CODEC_ID_AMR_WB, + AV_CODEC_ID_AAC, + AV_CODEC_ID_NONE +@@ -3327,20 +3312,20 @@ gst_ffmpeg_formatid_get_codecids (const + *video_codec_list = tgp_video_list; + *audio_codec_list = tgp_audio_list; + } else if (!strcmp (format_name, "mmf")) { +- static enum CodecID mmf_audio_list[] = { ++ static enum AVCodecID mmf_audio_list[] = { + AV_CODEC_ID_ADPCM_YAMAHA, AV_CODEC_ID_NONE + }; + *video_codec_list = NULL; + *audio_codec_list = mmf_audio_list; + } else if (!strcmp (format_name, "amr")) { +- static enum CodecID amr_audio_list[] = { ++ static enum AVCodecID amr_audio_list[] = { + AV_CODEC_ID_AMR_NB, AV_CODEC_ID_AMR_WB, + AV_CODEC_ID_NONE + }; + *video_codec_list = NULL; + *audio_codec_list = amr_audio_list; + } else if (!strcmp (format_name, "gif")) { +- static enum CodecID gif_image_list[] = { ++ static enum AVCodecID gif_image_list[] = { + AV_CODEC_ID_RAWVIDEO, AV_CODEC_ID_NONE + }; + *video_codec_list = gif_image_list; +@@ -3353,11 +3338,11 @@ gst_ffmpeg_formatid_get_codecids (const + *video_codec_list = tmp_vlist; + *audio_codec_list = tmp_alist; + } else if ((!strcmp (format_name, "pva"))) { +- static enum CodecID tgp_video_list[] = { ++ static enum AVCodecID tgp_video_list[] = { + AV_CODEC_ID_MPEG2VIDEO, + AV_CODEC_ID_NONE + }; +- static enum CodecID tgp_audio_list[] = { ++ static enum AVCodecID tgp_audio_list[] = { + AV_CODEC_ID_MP2, + AV_CODEC_ID_NONE + }; +@@ -3379,10 +3364,10 @@ gst_ffmpeg_formatid_get_codecids (const + * optional extra info + */ + +-enum CodecID ++enum AVCodecID + gst_ffmpeg_caps_to_codecid (const GstCaps * caps, AVCodecContext * context) + { +- enum CodecID id = AV_CODEC_ID_NONE; ++ enum AVCodecID id = AV_CODEC_ID_NONE; + const gchar *mimetype; + const GstStructure *structure; + gboolean video = FALSE, audio = FALSE; /* we want to be sure! */ +diff -urpN gst-libav-1.2.4.orig/ext/libav/gstavcodecmap.h gst-libav-1.2.4/ext/libav/gstavcodecmap.h +--- gst-libav-1.2.4.orig/ext/libav/gstavcodecmap.h 2013-11-11 04:43:01.000000000 -0800 ++++ gst-libav-1.2.4/ext/libav/gstavcodecmap.h 2014-06-26 21:32:09.820591520 -0700 +@@ -73,7 +73,7 @@ gst_ffmpeg_compliance_get_type (void); + */ + + GstCaps * +-gst_ffmpeg_codecid_to_caps (enum CodecID codec_id, ++gst_ffmpeg_codecid_to_caps (enum AVCodecID codec_id, + AVCodecContext *context, + gboolean encode); + +@@ -84,12 +84,12 @@ gst_ffmpeg_codecid_to_caps (enum Codec + + GstCaps * + gst_ffmpeg_codectype_to_audio_caps (AVCodecContext *context, +- enum CodecID codec_id, ++ enum AVCodecID codec_id, + gboolean encode, + AVCodec *codec); + GstCaps * + gst_ffmpeg_codectype_to_video_caps (AVCodecContext *context, +- enum CodecID codec_id, ++ enum AVCodecID codec_id, + gboolean encode, + AVCodec *codec); + +@@ -99,7 +99,7 @@ gst_ffmpeg_codectype_to_video_caps (AVCo + * context and a codecID. + */ + +-enum CodecID ++enum AVCodecID + gst_ffmpeg_caps_to_codecid (const GstCaps *caps, + AVCodecContext *context); + +@@ -109,7 +109,7 @@ gst_ffmpeg_caps_to_codecid (const GstCap + */ + + void +-gst_ffmpeg_caps_with_codecid (enum CodecID codec_id, ++gst_ffmpeg_caps_with_codecid (enum AVCodecID codec_id, + enum AVMediaType codec_type, + const GstCaps *caps, + AVCodecContext *context); +@@ -155,8 +155,8 @@ gst_ffmpeg_formatid_to_caps (const gchar + + gboolean + gst_ffmpeg_formatid_get_codecids (const gchar *format_name, +- enum CodecID ** video_codec_list, +- enum CodecID ** audio_codec_list, ++ enum AVCodecID ** video_codec_list, ++ enum AVCodecID ** audio_codec_list, + AVOutputFormat * plugin); + + +diff -urpN gst-libav-1.2.4.orig/ext/libav/gstavmux.c gst-libav-1.2.4/ext/libav/gstavmux.c +--- gst-libav-1.2.4.orig/ext/libav/gstavmux.c 2014-02-04 08:28:56.000000000 -0800 ++++ gst-libav-1.2.4/ext/libav/gstavmux.c 2014-06-26 21:32:09.821591511 -0700 +@@ -120,7 +120,7 @@ static void gst_ffmpegmux_set_property ( + static void gst_ffmpegmux_get_property (GObject * object, guint prop_id, + GValue * value, GParamSpec * pspec); + +-static GstCaps *gst_ffmpegmux_get_id_caps (enum CodecID *id_list); ++static GstCaps *gst_ffmpegmux_get_id_caps (enum AVCodecID *id_list); + static void gst_ffmpeg_mux_simple_caps_set_int_list (GstCaps * caps, + const gchar * field, guint num, const gint * values); + +@@ -193,7 +193,7 @@ gst_ffmpegmux_base_init (gpointer g_clas + GstPadTemplate *videosinktempl, *audiosinktempl, *srctempl; + AVOutputFormat *in_plugin; + GstCaps *srccaps, *audiosinkcaps, *videosinkcaps; +- enum CodecID *video_ids = NULL, *audio_ids = NULL; ++ enum AVCodecID *video_ids = NULL, *audio_ids = NULL; + gchar *longname, *description; + const char *replacement; + gboolean is_formatter; +@@ -823,7 +823,7 @@ gst_ffmpegmux_change_state (GstElement * + } + + static GstCaps * +-gst_ffmpegmux_get_id_caps (enum CodecID *id_list) ++gst_ffmpegmux_get_id_caps (enum AVCodecID *id_list) + { + GstCaps *caps, *t; + gint i; +diff -urpN gst-libav-1.2.4.orig/ext/libav/gstavutils.c gst-libav-1.2.4/ext/libav/gstavutils.c +--- gst-libav-1.2.4.orig/ext/libav/gstavutils.c 2013-09-24 06:06:58.000000000 -0700 ++++ gst-libav-1.2.4/ext/libav/gstavutils.c 2014-06-26 21:32:09.822591501 -0700 +@@ -32,7 +32,7 @@ + #include <libavutil/mem.h> + + G_CONST_RETURN gchar * +-gst_ffmpeg_get_codecid_longname (enum CodecID codec_id) ++gst_ffmpeg_get_codecid_longname (enum AVCodecID codec_id) + { + AVCodec *codec; + /* Let's use what ffmpeg can provide us */ +diff -urpN gst-libav-1.2.4.orig/ext/libav/gstavutils.h gst-libav-1.2.4/ext/libav/gstavutils.h +--- gst-libav-1.2.4.orig/ext/libav/gstavutils.h 2013-09-24 06:06:58.000000000 -0700 ++++ gst-libav-1.2.4/ext/libav/gstavutils.h 2014-06-26 21:32:09.823591491 -0700 +@@ -86,7 +86,7 @@ int + gst_ffmpeg_auto_max_threads(void); + + G_CONST_RETURN gchar * +-gst_ffmpeg_get_codecid_longname (enum CodecID codec_id); ++gst_ffmpeg_get_codecid_longname (enum AVCodecID codec_id); + + gint + av_smp_format_depth(enum AVSampleFormat smp_fmt); diff --git a/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-libav10-02-avenc.patch b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-libav10-02-avenc.patch new file mode 100644 index 0000000..966e12b --- /dev/null +++ b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-libav10-02-avenc.patch @@ -0,0 +1,22 @@ +diff -urpN gst-libav-1.2.4.orig/ext/libav/gstavaudenc.c gst-libav-1.2.4/ext/libav/gstavaudenc.c +--- gst-libav-1.2.4.orig/ext/libav/gstavaudenc.c 2014-06-26 21:32:51.989182216 -0700 ++++ gst-libav-1.2.4/ext/libav/gstavaudenc.c 2014-06-26 21:34:29.155238999 -0700 +@@ -299,7 +299,6 @@ gst_ffmpegaudenc_set_format (GstAudioEnc + ffmpegaudenc->context->coder_type = 0; + ffmpegaudenc->context->context_model = 0; + ffmpegaudenc->context->scenechange_threshold = 0; +- ffmpegaudenc->context->inter_threshold = 0; + + /* fetch pix_fmt and so on */ + gst_ffmpeg_audioinfo_to_context (info, ffmpegaudenc->context); +diff -urpN gst-libav-1.2.4.orig/ext/libav/gstavvidenc.c gst-libav-1.2.4/ext/libav/gstavvidenc.c +--- gst-libav-1.2.4.orig/ext/libav/gstavvidenc.c 2014-06-26 21:32:51.991182196 -0700 ++++ gst-libav-1.2.4/ext/libav/gstavvidenc.c 2014-06-26 21:34:29.157238980 -0700 +@@ -347,7 +347,6 @@ gst_ffmpegvidenc_set_format (GstVideoEnc + ffmpegenc->context->coder_type = 0; + ffmpegenc->context->context_model = 0; + ffmpegenc->context->scenechange_threshold = 0; +- ffmpegenc->context->inter_threshold = 0; + + /* and last but not least the pass; CBR, 2-pass, etc */ + ffmpegenc->context->flags |= ffmpegenc->pass; diff --git a/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-libav10-03-no-r-frame-rate-field.patch b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-libav10-03-no-r-frame-rate-field.patch new file mode 100644 index 0000000..fe1768d --- /dev/null +++ b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-libav10-03-no-r-frame-rate-field.patch @@ -0,0 +1,47 @@ +diff -urpN gst-libav-1.2.4.orig/ext/libav/gstavdemux.c gst-libav-1.2.4/ext/libav/gstavdemux.c +--- gst-libav-1.2.4.orig/ext/libav/gstavdemux.c 2013-09-24 06:06:58.000000000 -0700 ++++ gst-libav-1.2.4/ext/libav/gstavdemux.c 2014-06-26 21:41:29.998152432 -0700 +@@ -748,8 +748,8 @@ gst_ffmpegdemux_src_query (GstPad * pad, + break; + case GST_FORMAT_DEFAULT: + gst_query_set_position (query, GST_FORMAT_DEFAULT, +- gst_util_uint64_scale (timeposition, avstream->r_frame_rate.num, +- GST_SECOND * avstream->r_frame_rate.den)); ++ gst_util_uint64_scale (timeposition, avstream->avg_frame_rate.num, ++ GST_SECOND * avstream->avg_frame_rate.den)); + res = TRUE; + break; + case GST_FORMAT_BYTES: +@@ -785,8 +785,8 @@ gst_ffmpegdemux_src_query (GstPad * pad, + break; + case GST_FORMAT_DEFAULT: + gst_query_set_duration (query, GST_FORMAT_DEFAULT, +- gst_util_uint64_scale (timeduration, avstream->r_frame_rate.num, +- GST_SECOND * avstream->r_frame_rate.den)); ++ gst_util_uint64_scale (timeduration, avstream->avg_frame_rate.num, ++ GST_SECOND * avstream->avg_frame_rate.den)); + res = TRUE; + break; + case GST_FORMAT_BYTES: +@@ -865,8 +865,8 @@ gst_ffmpegdemux_src_convert (GstPad * pa + switch (*dest_fmt) { + case GST_FORMAT_DEFAULT: + *dest_value = gst_util_uint64_scale (src_value, +- avstream->r_frame_rate.num, +- GST_SECOND * avstream->r_frame_rate.den); ++ avstream->avg_frame_rate.num, ++ GST_SECOND * avstream->avg_frame_rate.den); + break; + default: + res = FALSE; +@@ -877,8 +877,8 @@ gst_ffmpegdemux_src_convert (GstPad * pa + switch (*dest_fmt) { + case GST_FORMAT_TIME: + *dest_value = gst_util_uint64_scale (src_value, +- GST_SECOND * avstream->r_frame_rate.num, +- avstream->r_frame_rate.den); ++ GST_SECOND * avstream->avg_frame_rate.num, ++ avstream->avg_frame_rate.den); + break; + default: + res = FALSE; diff --git a/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-libav10-04-no_AVCODEC_MAX_AUDIO_FRAME_SIZE.patch b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-libav10-04-no_AVCODEC_MAX_AUDIO_FRAME_SIZE.patch new file mode 100644 index 0000000..2186703 --- /dev/null +++ b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-libav10-04-no_AVCODEC_MAX_AUDIO_FRAME_SIZE.patch @@ -0,0 +1,31 @@ +diff -urpN gst-libav-1.2.4.orig/ext/libav/gstavauddec.c gst-libav-1.2.4/ext/libav/gstavauddec.c +--- gst-libav-1.2.4.orig/ext/libav/gstavauddec.c 2014-01-15 02:19:58.000000000 -0800 ++++ gst-libav-1.2.4/ext/libav/gstavauddec.c 2014-06-26 21:35:45.822494686 -0700 +@@ -464,7 +464,7 @@ gst_ffmpegauddec_audio_frame (GstFFMpegA + GstBuffer ** outbuf, GstFlowReturn * ret) + { + gint len = -1; +- gint have_data = AVCODEC_MAX_AUDIO_FRAME_SIZE; ++ gint have_data = 0; + AVPacket packet; + AVFrame frame; + +@@ -478,7 +478,7 @@ gst_ffmpegauddec_audio_frame (GstFFMpegA + GST_DEBUG_OBJECT (ffmpegdec, + "Decode audio: len=%d, have_data=%d", len, have_data); + +- if (len >= 0 && have_data > 0) { ++ if (len >= 0 && have_data) { + BufferInfo *buffer_info = frame.opaque; + gint nsamples, channels, byte_per_sample; + gsize output_size; +@@ -572,7 +572,8 @@ gst_ffmpegauddec_audio_frame (GstFFMpegA + gst_buffer_fill (*outbuf, 0, frame.data[0], output_size); + } + +- GST_DEBUG_OBJECT (ffmpegdec, "Buffer created. Size: %d", have_data); ++ GST_DEBUG_OBJECT (ffmpegdec, "Buffer created. Size: %" G_GSIZE_FORMAT, ++ output_size); + + /* Reorder channels to the GStreamer channel order */ + if (ffmpegdec->needs_reorder) { diff --git a/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-libav10-05-new_config_interface.patch b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-libav10-05-new_config_interface.patch new file mode 100644 index 0000000..cb30038 --- /dev/null +++ b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-libav10-05-new_config_interface.patch @@ -0,0 +1,73 @@ +diff -urpN gst-libav-1.2.4.orig/ext/libav/gstavcfg.c gst-libav-1.2.4/ext/libav/gstavcfg.c +--- gst-libav-1.2.4.orig/ext/libav/gstavcfg.c 2014-01-15 02:19:58.000000000 -0800 ++++ gst-libav-1.2.4/ext/libav/gstavcfg.c 2014-06-26 21:43:34.107946880 -0700 +@@ -171,15 +171,17 @@ gst_ffmpeg_idct_algo_get_type (void) + {FF_IDCT_INT, "JPEG reference Integer", "int"}, + {FF_IDCT_SIMPLE, "Simple", "simple"}, + {FF_IDCT_SIMPLEMMX, "Simple MMX", "simplemmx"}, +- {FF_IDCT_LIBMPEG2MMX, "LIBMPEG2MMX", "libmpeg2mmx"}, + {FF_IDCT_ARM, "ARM", "arm"}, +- {FF_IDCT_ALTIVEC, "ALTIVEC", "altivec"}, ++ {FF_IDCT_ALTIVEC, "Altivec", "altivec"}, + {FF_IDCT_SH4, "SH4", "sh4"}, +- {FF_IDCT_SIMPLEARM, "SIMPLEARM", "simplearm"}, +- {FF_IDCT_H264, "H264", "h264"}, +- {FF_IDCT_VP3, "VP3", "vp3"}, ++ {FF_IDCT_SIMPLEARM, "Simple ARM", "simplearm"}, + {FF_IDCT_IPP, "IPP", "ipp"}, +- {FF_IDCT_XVIDMMX, "XVIDMMX", "xvidmmx"}, ++ {FF_IDCT_XVIDMMX, "XVID MMX", "xvidmmx"}, ++ {FF_IDCT_SIMPLEARMV5TE, "Simple ARMV5TE", "simplearmv5te"}, ++ {FF_IDCT_SIMPLEARMV6, "Simple ARMV6", "simplearmv6"}, ++ {FF_IDCT_SIMPLEVIS, "Simple Vis", "simplevis"}, ++ {FF_IDCT_FAAN, "FAAN", "faan"}, ++ {FF_IDCT_SIMPLENEON, "Simple NEON", "simpleneon"}, + {0, NULL, NULL}, + }; + +@@ -258,6 +260,7 @@ gst_ffmpeg_flags_get_type (void) + { + static GType ffmpeg_flags_type = 0; + ++ /* FIXME: This needs some serious resyncing with avcodec.h */ + if (!ffmpeg_flags_type) { + static const GFlagsValue ffmpeg_flags[] = { + {CODEC_FLAG_QSCALE, "Use fixed qscale", "qscale"}, +@@ -274,9 +277,6 @@ gst_ffmpeg_flags_get_type (void) + "global-headers"}, + {CODEC_FLAG_AC_PRED, "H263 Advanced Intra Coding / MPEG4 AC prediction", + "aic"}, +- {CODEC_FLAG_CBP_RD, "Rate Distoration Optimization for CBP", "cbp-rd"}, +- {CODEC_FLAG_QP_RD, "Rate Distoration Optimization for QP selection", +- "qp-rd"}, + {CODEC_FLAG_CLOSED_GOP, "Closed GOP", "closedgop"}, + {0, NULL, NULL}, + }; +@@ -564,18 +564,6 @@ gst_ffmpeg_cfg_init (void) + -100, G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + gst_ffmpeg_add_pspec (pspec, max_key_interval, FALSE, mpeg, NULL); + +- pspec = g_param_spec_int ("luma-elim-threshold", +- "Luma Elimination Threshold", +- "Luma Single Coefficient Elimination Threshold", +- -99, 99, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); +- gst_ffmpeg_add_pspec (pspec, config.luma_elim_threshold, FALSE, mpeg, NULL); +- +- pspec = g_param_spec_int ("chroma-elim-threshold", +- "Chroma Elimination Threshold", +- "Chroma Single Coefficient Elimination Threshold", +- -99, 99, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); +- gst_ffmpeg_add_pspec (pspec, config.chroma_elim_threshold, FALSE, mpeg, NULL); +- + pspec = g_param_spec_float ("lumi-masking", "Luminance Masking", + "Luminance Masking", -1.0f, 1.0f, 0.0f, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); +@@ -697,7 +685,7 @@ gst_ffmpeg_cfg_init (void) + + /* return TRUE if property described by pspec applies to the codec with codec_id */ + static gboolean +-gst_ffmpeg_cfg_codec_has_pspec (enum CodecID codec_id, GParamSpec * pspec) ++gst_ffmpeg_cfg_codec_has_pspec (enum AVCodecID codec_id, GParamSpec * pspec) + { + GParamSpecData *qdata; + gint *codec; diff --git a/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-libav10-06-av_encode_video.patch b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-libav10-06-av_encode_video.patch new file mode 100644 index 0000000..690506a --- /dev/null +++ b/media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-libav10-06-av_encode_video.patch @@ -0,0 +1,169 @@ +diff -urpN gst-libav-1.2.4.orig/ext/libav/gstavvidenc.c gst-libav-1.2.4/ext/libav/gstavvidenc.c +--- gst-libav-1.2.4.orig/ext/libav/gstavvidenc.c 2014-06-26 21:34:29.157238980 -0700 ++++ gst-libav-1.2.4/ext/libav/gstavvidenc.c 2014-06-26 21:38:28.543914690 -0700 +@@ -542,34 +542,17 @@ gst_ffmpegvidenc_propose_allocation (Gst + query); + } + +-static void +-ffmpegenc_setup_working_buf (GstFFMpegVidEnc * ffmpegenc) +-{ +- guint wanted_size = +- ffmpegenc->context->width * ffmpegenc->context->height * 6 + +- FF_MIN_BUFFER_SIZE; +- +- /* Above is the buffer size used by ffmpeg/ffmpeg.c */ +- +- if (ffmpegenc->working_buf == NULL || +- ffmpegenc->working_buf_size != wanted_size) { +- if (ffmpegenc->working_buf) +- g_free (ffmpegenc->working_buf); +- ffmpegenc->working_buf_size = wanted_size; +- ffmpegenc->working_buf = g_malloc (ffmpegenc->working_buf_size); +- } +- ffmpegenc->buffer_size = wanted_size; +-} +- + static GstFlowReturn + gst_ffmpegvidenc_handle_frame (GstVideoEncoder * encoder, + GstVideoCodecFrame * frame) + { + GstFFMpegVidEnc *ffmpegenc = (GstFFMpegVidEnc *) encoder; + GstBuffer *outbuf; +- gint ret_size = 0, c; ++ gint ret = 0, c; + GstVideoInfo *info = &ffmpegenc->input_state->info; + GstVideoFrame vframe; ++ AVPacket pkt; ++ int have_data = 0; + + if (GST_VIDEO_CODEC_FRAME_IS_FORCE_KEYFRAME (frame)) + ffmpegenc->picture->pict_type = AV_PICTURE_TYPE_I; +@@ -595,18 +578,20 @@ gst_ffmpegvidenc_handle_frame (GstVideoE + gst_ffmpeg_time_gst_to_ff (frame->pts / + ffmpegenc->context->ticks_per_frame, ffmpegenc->context->time_base); + +- ffmpegenc_setup_working_buf (ffmpegenc); ++ have_data = 0; ++ memset (&pkt, 0, sizeof (pkt)); + +- ret_size = avcodec_encode_video (ffmpegenc->context, +- ffmpegenc->working_buf, ffmpegenc->working_buf_size, ffmpegenc->picture); ++ ret = ++ avcodec_encode_video2 (ffmpegenc->context, &pkt, ffmpegenc->picture, ++ &have_data); + + gst_video_frame_unmap (&vframe); + +- if (ret_size < 0) ++ if (ret < 0) + goto encode_fail; + + /* Encoder needs more data */ +- if (!ret_size) ++ if (!have_data) + return GST_FLOW_OK; + + /* save stats info if there is some as well as a stats file */ +@@ -621,15 +606,10 @@ gst_ffmpegvidenc_handle_frame (GstVideoE + /* Get oldest frame */ + frame = gst_video_encoder_get_oldest_frame (encoder); + +- /* Allocate output buffer */ +- if (gst_video_encoder_allocate_output_frame (encoder, frame, +- ret_size) != GST_FLOW_OK) { +- gst_video_codec_frame_unref (frame); +- goto alloc_fail; +- } +- +- outbuf = frame->output_buffer; +- gst_buffer_fill (outbuf, 0, ffmpegenc->working_buf, ret_size); ++ outbuf = ++ gst_buffer_new_wrapped_full (0, pkt.data, pkt.size, 0, pkt.size, pkt.data, ++ av_free); ++ frame->output_buffer = outbuf; + + /* buggy codec may not set coded_frame */ + if (ffmpegenc->context->coded_frame) { +@@ -655,16 +635,6 @@ encode_fail: + #endif /* GST_DISABLE_GST_DEBUG */ + return GST_FLOW_OK; + } +-alloc_fail: +- { +-#ifndef GST_DISABLE_GST_DEBUG +- GstFFMpegVidEncClass *oclass = +- (GstFFMpegVidEncClass *) (G_OBJECT_GET_CLASS (ffmpegenc)); +- GST_ERROR_OBJECT (ffmpegenc, +- "avenc_%s: failed to allocate buffer", oclass->in_plugin->name); +-#endif /* GST_DISABLE_GST_DEBUG */ +- return GST_FLOW_ERROR; +- } + } + + static GstFlowReturn +@@ -673,7 +643,9 @@ gst_ffmpegvidenc_flush_buffers (GstFFMpe + GstVideoCodecFrame *frame; + GstFlowReturn flow_ret = GST_FLOW_OK; + GstBuffer *outbuf; +- gint ret_size; ++ gint ret; ++ AVPacket pkt; ++ int have_data = 0; + + GST_DEBUG_OBJECT (ffmpegenc, "flushing buffers with sending %d", send); + +@@ -683,13 +655,12 @@ gst_ffmpegvidenc_flush_buffers (GstFFMpe + + while ((frame = + gst_video_encoder_get_oldest_frame (GST_VIDEO_ENCODER (ffmpegenc)))) { ++ memset (&pkt, 0, sizeof (pkt)); ++ have_data = 0; + +- ffmpegenc_setup_working_buf (ffmpegenc); ++ ret = avcodec_encode_video2 (ffmpegenc->context, &pkt, NULL, &have_data); + +- ret_size = avcodec_encode_video (ffmpegenc->context, +- ffmpegenc->working_buf, ffmpegenc->working_buf_size, NULL); +- +- if (ret_size < 0) { /* there should be something, notify and give up */ ++ if (ret < 0) { /* there should be something, notify and give up */ + #ifndef GST_DISABLE_GST_DEBUG + GstFFMpegVidEncClass *oclass = + (GstFFMpegVidEncClass *) (G_OBJECT_GET_CLASS (ffmpegenc)); +@@ -707,20 +678,10 @@ gst_ffmpegvidenc_flush_buffers (GstFFMpe + (("Could not write to file \"%s\"."), ffmpegenc->filename), + GST_ERROR_SYSTEM); + +- if (send) { +- if (gst_video_encoder_allocate_output_frame (GST_VIDEO_ENCODER +- (ffmpegenc), frame, ret_size) != GST_FLOW_OK) { +-#ifndef GST_DISABLE_GST_DEBUG +- GstFFMpegVidEncClass *oclass = +- (GstFFMpegVidEncClass *) (G_OBJECT_GET_CLASS (ffmpegenc)); +- GST_WARNING_OBJECT (ffmpegenc, +- "avenc_%s: failed to allocate buffer", oclass->in_plugin->name); +-#endif /* GST_DISABLE_GST_DEBUG */ +- gst_video_codec_frame_unref (frame); +- break; +- } +- outbuf = frame->output_buffer; +- gst_buffer_fill (outbuf, 0, ffmpegenc->working_buf, ret_size); ++ if (send && have_data) { ++ outbuf = gst_buffer_new_wrapped_full (0, pkt.data, pkt.size, 0, pkt.size, ++ pkt.data, av_free); ++ frame->output_buffer = outbuf; + + if (ffmpegenc->context->coded_frame->key_frame) + GST_VIDEO_CODEC_FRAME_SET_SYNC_POINT (frame); +@@ -856,10 +817,6 @@ gst_ffmpegvidenc_stop (GstVideoEncoder * + fclose (ffmpegenc->file); + ffmpegenc->file = NULL; + } +- if (ffmpegenc->working_buf) { +- g_free (ffmpegenc->working_buf); +- ffmpegenc->working_buf = NULL; +- } + if (ffmpegenc->input_state) { + gst_video_codec_state_unref (ffmpegenc->input_state); + ffmpegenc->input_state = NULL; diff --git a/media-plugins/gst-plugins-libav/gst-plugins-libav-1.2.4-r1.ebuild b/media-plugins/gst-plugins-libav/gst-plugins-libav-1.2.4-r1.ebuild new file mode 100644 index 0000000..d687a0b --- /dev/null +++ b/media-plugins/gst-plugins-libav/gst-plugins-libav-1.2.4-r1.ebuild @@ -0,0 +1,90 @@ +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EAPI="5" +inherit eutils flag-o-matic multilib-minimal + +MY_PN="gst-libav" +DESCRIPTION="FFmpeg based gstreamer plugin" +HOMEPAGE="http://gstreamer.freedesktop.org/modules/gst-libav.html" +SRC_URI="http://gstreamer.freedesktop.org/src/${MY_PN}/${MY_PN}-${PV}.tar.xz" + +LICENSE="GPL-2" +SLOT="1.0" +KEYWORDS="~amd64" +IUSE="+orc libav10" + +RDEPEND=" + >=media-libs/gstreamer-1.2.3:1.0[${MULTILIB_USEDEP}] + >=media-libs/gst-plugins-base-1.2.3:1.0[${MULTILIB_USEDEP}] + >=virtual/ffmpeg-9-r1[${MULTILIB_USEDEP}] + !libav10? ( + !!>=media-video/libav-10 + ) + libav10? ( + !!<media-video/libav-10 + ) + orc? ( >=dev-lang/orc-0.4.17[${MULTILIB_USEDEP}] ) +" +DEPEND="${RDEPEND} + >=dev-util/gtk-doc-am-1.12 + >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] +" + +S="${WORKDIR}/${MY_PN}-${PV}" + +src_prepare() { + # compatibility with recent releases + # TODO: likely apply them with libav-10 when it's out but there will + # probably be an upstream gst-libav release compatible at that time. + if has_version '>=media-video/ffmpeg-2.0' ; then + sed -i -e 's/ CODEC_ID/ AV_CODEC_ID/g' \ + -e 's/ CodecID/ AVCodecID/g' \ + ext/libav/*.{c,h} || die + epatch "${FILESDIR}/${PN}-1.2.4-ffmpeg2.patch" + epatch "${FILESDIR}/${PN}-1.2.4-fix-memory-leak.patch" #494282 + + fi + if use libav10; then + # libav10 patches (trivially ported from Sebastian Dröge <sebastian@centricular.com>'s + # submissions) to upstream^2's bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=719923) + epatch "${FILESDIR}/${P}-libav10-01-codecid-avcodecid.patch" + epatch "${FILESDIR}/${P}-libav10-02-avenc.patch" + epatch "${FILESDIR}/${P}-libav10-03-no-r-frame-rate-field.patch" + epatch "${FILESDIR}/${P}-libav10-04-no_AVCODEC_MAX_AUDIO_FRAME_SIZE.patch" + epatch "${FILESDIR}/${P}-libav10-05-new_config_interface.patch" + epatch "${FILESDIR}/${P}-libav10-06-av_encode_video.patch" + fi +} + +multilib_src_configure() { + GST_PLUGINS_BUILD="" + # always use system ffmpeg/libav if possible + ECONF_SOURCE=${S} \ + econf \ + --disable-maintainer-mode \ + --with-package-name="Gentoo GStreamer ebuild" \ + --with-package-origin="http://www.gentoo.org" \ + --disable-fatal-warnings \ + --with-system-libav \ + $(use_enable orc) +} + +multilib_src_compile() { + # Don't build with -Werror + emake ERROR_CFLAGS= +} + +multilib_src_install_all() { + einstalldocs + prune_libtool_files --modules +} + +pkg_postinst() { + if has_version "media-video/ffmpeg"; then + elog "Please note that upstream uses media-video/libav" + elog "rather than media-video/ffmpeg. If you encounter any" + elog "issues try to move from ffmpeg to libav." + fi +} diff --git a/media-plugins/gst-plugins-libav/metadata.xml b/media-plugins/gst-plugins-libav/metadata.xml new file mode 100644 index 0000000..d1096fb --- /dev/null +++ b/media-plugins/gst-plugins-libav/metadata.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <herd>gstreamer</herd> +</pkgmetadata> |