aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'media-plugins/gst-plugins-libav')
-rw-r--r--media-plugins/gst-plugins-libav/ChangeLog191
-rw-r--r--media-plugins/gst-plugins-libav/Manifest17
-rw-r--r--media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.1.0_pre20130128-coma.patch16
-rw-r--r--media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.1.0_pre20130128-compat.patch49
-rw-r--r--media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.1.0_pre20130128-ffmpeg2.patch121
-rw-r--r--media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.1.0_pre20130128-gbr-color.patch28
-rw-r--r--media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.0-ffmpeg2.patch120
-rw-r--r--media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-ffmpeg2.patch120
-rw-r--r--media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-fix-memory-leak.patch96
-rw-r--r--media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-libav10-01-codecid-avcodecid.patch428
-rw-r--r--media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-libav10-02-avenc.patch22
-rw-r--r--media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-libav10-03-no-r-frame-rate-field.patch47
-rw-r--r--media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-libav10-04-no_AVCODEC_MAX_AUDIO_FRAME_SIZE.patch31
-rw-r--r--media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-libav10-05-new_config_interface.patch73
-rw-r--r--media-plugins/gst-plugins-libav/files/gst-plugins-libav-1.2.4-libav10-06-av_encode_video.patch169
-rw-r--r--media-plugins/gst-plugins-libav/gst-plugins-libav-1.2.4-r1.ebuild90
-rw-r--r--media-plugins/gst-plugins-libav/metadata.xml5
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>