Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 14 Feb 2014 06:30:24 GMT
From:      svn-freebsd-gecko@chruetertee.ch
To:        freebsd-gecko@freebsd.org
Subject:   [SVN-Commit] r1496 - in trunk/www: firefox firefox-i18n firefox-nightly firefox-nightly/files firefox/files linux-firefox linux-seamonkey seamonkey-i18n
Message-ID:  <201402140630.s1E6UOkC018826@trillian.chruetertee.ch>

next in thread | raw e-mail | index | archive | help
Author: jbeich
Date: Fri Feb 14 06:30:24 2014
New Revision: 1496

Log:
update

Deleted:
   trunk/www/firefox-nightly/files/patch-bug806917
   trunk/www/firefox/files/patch-bug970031
Modified:
   trunk/www/firefox-i18n/Makefile
   trunk/www/firefox-i18n/distinfo
   trunk/www/firefox-nightly/Makefile.hgrev
   trunk/www/firefox-nightly/distinfo
   trunk/www/firefox/Makefile
   trunk/www/firefox/distinfo
   trunk/www/linux-firefox/Makefile
   trunk/www/linux-firefox/distinfo
   trunk/www/linux-seamonkey/Makefile
   trunk/www/linux-seamonkey/distinfo
   trunk/www/seamonkey-i18n/Makefile
   trunk/www/seamonkey-i18n/distinfo

Modified: trunk/www/firefox-i18n/Makefile
==============================================================================
--- trunk/www/firefox-i18n/Makefile	Thu Feb 13 06:31:24 2014	(r1495)
+++ trunk/www/firefox-i18n/Makefile	Fri Feb 14 06:30:24 2014	(r1496)
@@ -2,7 +2,7 @@
 # $FreeBSD: head/www/firefox-i18n/Makefile 336446 2013-12-14 13:42:06Z flo $
 
 PORTNAME=	firefox-i18n
-PORTVERSION=	28.0b2
+PORTVERSION=	28.0b3
 CATEGORIES=	www
 MASTER_SITES=	MOZILLA/${PORTNAME:S|-i18n||}/releases/${PORTVERSION}/linux-i686/xpi
 PKGNAMEPREFIX=

Modified: trunk/www/firefox-i18n/distinfo
==============================================================================
--- trunk/www/firefox-i18n/distinfo	Thu Feb 13 06:31:24 2014	(r1495)
+++ trunk/www/firefox-i18n/distinfo	Fri Feb 14 06:30:24 2014	(r1496)
@@ -1,170 +1,170 @@
-SHA256 (xpi/firefox-i18n-28.0b2/ach.xpi) = 39d9d03d5732a74a068031f2b21d19c989b1dcd171fc1cde1bf54a3410d03ea2
-SIZE (xpi/firefox-i18n-28.0b2/ach.xpi) = 363208
-SHA256 (xpi/firefox-i18n-28.0b2/af.xpi) = 12f4782bacd1c2cee7d3e761fc58ed2ccf5a746fbe089572bba04604285d9a85
-SIZE (xpi/firefox-i18n-28.0b2/af.xpi) = 357086
-SHA256 (xpi/firefox-i18n-28.0b2/ar.xpi) = dfa8db613b562d452ca180f8ba9cac5ae2b1632d5bc76ba5976cb447994a8500
-SIZE (xpi/firefox-i18n-28.0b2/ar.xpi) = 386471
-SHA256 (xpi/firefox-i18n-28.0b2/as.xpi) = d33a1fdf91f17a8cfa2e9cd47328f9b0b44c663e45ab9b0b579144e4b1e489ac
-SIZE (xpi/firefox-i18n-28.0b2/as.xpi) = 404108
-SHA256 (xpi/firefox-i18n-28.0b2/ast.xpi) = a7fb5ce187445f6235a8a41233fef5e0a0a901cdaf2462817cbd00cc2d92a6dd
-SIZE (xpi/firefox-i18n-28.0b2/ast.xpi) = 313719
-SHA256 (xpi/firefox-i18n-28.0b2/be.xpi) = 552c6ee898467f38f175c345fca2f74c8b1d29d9ae151f393dcfd83dcaeeb659
-SIZE (xpi/firefox-i18n-28.0b2/be.xpi) = 342306
-SHA256 (xpi/firefox-i18n-28.0b2/bg.xpi) = d03432707aed020d64689e4d21260d133f30ac4a4f4aa981d2b5cd7587f08061
-SIZE (xpi/firefox-i18n-28.0b2/bg.xpi) = 393205
-SHA256 (xpi/firefox-i18n-28.0b2/bn-BD.xpi) = fe65c8454fc901bd3290e7ef766887e0d2cec519989d3d86ec765cf3f4fd9fe5
-SIZE (xpi/firefox-i18n-28.0b2/bn-BD.xpi) = 416037
-SHA256 (xpi/firefox-i18n-28.0b2/bn-IN.xpi) = 4aa4b46b48272f40d4a63ae9a0a711402deab7252059f88145220d55ed9d0e19
-SIZE (xpi/firefox-i18n-28.0b2/bn-IN.xpi) = 411038
-SHA256 (xpi/firefox-i18n-28.0b2/br.xpi) = e11ed8b94f906d3dbfd07bdb35962d7f82f37c05d6650dba90c79157fadf7330
-SIZE (xpi/firefox-i18n-28.0b2/br.xpi) = 353934
-SHA256 (xpi/firefox-i18n-28.0b2/bs.xpi) = a22023601ad2b8b8dbf91e9eafd40d9f40aec7aadecc0435fdfb15135931eba9
-SIZE (xpi/firefox-i18n-28.0b2/bs.xpi) = 363405
-SHA256 (xpi/firefox-i18n-28.0b2/ca.xpi) = 381523fc5f58e339baf9df3cee632aba1bf1b31be28f587e64fc22360350c7a5
-SIZE (xpi/firefox-i18n-28.0b2/ca.xpi) = 360465
-SHA256 (xpi/firefox-i18n-28.0b2/cs.xpi) = 6ffdf20e2240f7138973aad13be33fc4bc679c5fddae62bf875c853ee0d64f78
-SIZE (xpi/firefox-i18n-28.0b2/cs.xpi) = 356819
-SHA256 (xpi/firefox-i18n-28.0b2/csb.xpi) = debd934c0d94a899970d7fbfb74980426673cdb710eda328e77a2348a089e93a
-SIZE (xpi/firefox-i18n-28.0b2/csb.xpi) = 347623
-SHA256 (xpi/firefox-i18n-28.0b2/cy.xpi) = aef9b352aa1dba3f901561827f8238d412ed77057455d2e45534bc79547626ed
-SIZE (xpi/firefox-i18n-28.0b2/cy.xpi) = 354722
-SHA256 (xpi/firefox-i18n-28.0b2/da.xpi) = 13b57f687113deae0c38fb911052c5d584cc165d775bfd6c426e96bd039c0a9a
-SIZE (xpi/firefox-i18n-28.0b2/da.xpi) = 346221
-SHA256 (xpi/firefox-i18n-28.0b2/de.xpi) = f93ea52074f1b7fcaba9c92464da94a6f3d1ef143d6b1b74eb4c3e2160a547ba
-SIZE (xpi/firefox-i18n-28.0b2/de.xpi) = 350191
-SHA256 (xpi/firefox-i18n-28.0b2/el.xpi) = 8e07597d6ce81c0a9b38b5dc2b0bc54e31c5be7cffbb937f29018502ff1fe8f4
-SIZE (xpi/firefox-i18n-28.0b2/el.xpi) = 386921
-SHA256 (xpi/firefox-i18n-28.0b2/en-GB.xpi) = c86a01cb9cdb2201e52475f009a6ef8ac08e0b02b02943ba36fc7a5a91214f7a
-SIZE (xpi/firefox-i18n-28.0b2/en-GB.xpi) = 340359
-SHA256 (xpi/firefox-i18n-28.0b2/en-US.xpi) = 76830a251859b641caa437f92c5372b9f8bb4217286d9254167c0c02dfcc1678
-SIZE (xpi/firefox-i18n-28.0b2/en-US.xpi) = 343398
-SHA256 (xpi/firefox-i18n-28.0b2/en-ZA.xpi) = dcdfeabba2c572dedd80c31daa14862287e8f906a049122adea8a4cb6a1ca45f
-SIZE (xpi/firefox-i18n-28.0b2/en-ZA.xpi) = 335613
-SHA256 (xpi/firefox-i18n-28.0b2/eo.xpi) = e238e1a166e25686efcc9b10ebac6982ef488b23d9e09a2c6659fa7adf02513b
-SIZE (xpi/firefox-i18n-28.0b2/eo.xpi) = 359247
-SHA256 (xpi/firefox-i18n-28.0b2/es-AR.xpi) = 4d6b909181daefb511b21e9700001a589300daa0c93b9bd6e97c9c57c537882e
-SIZE (xpi/firefox-i18n-28.0b2/es-AR.xpi) = 357326
-SHA256 (xpi/firefox-i18n-28.0b2/es-CL.xpi) = e80e5cb855e928590e76e8d09d2aca207c94739e790401ab5a31e033ac3ae874
-SIZE (xpi/firefox-i18n-28.0b2/es-CL.xpi) = 307249
-SHA256 (xpi/firefox-i18n-28.0b2/es-ES.xpi) = f415ea8c0264318d64f2c23ab8557433ecad7c6bb920afb7eb093e82c04560f6
-SIZE (xpi/firefox-i18n-28.0b2/es-ES.xpi) = 295154
-SHA256 (xpi/firefox-i18n-28.0b2/es-MX.xpi) = 018bfbcd7b4628d9c34240c4f16157ab2b05bed5b984de9a2d0321d81e7a0e56
-SIZE (xpi/firefox-i18n-28.0b2/es-MX.xpi) = 359355
-SHA256 (xpi/firefox-i18n-28.0b2/et.xpi) = 6c4adf9a3bf7487fbfefe16e0a8eeabe12c2fb293af590c07cead6f146a03a98
-SIZE (xpi/firefox-i18n-28.0b2/et.xpi) = 345631
-SHA256 (xpi/firefox-i18n-28.0b2/eu.xpi) = 0edcd61a5861109a0223771aa1754b0be2f520fcf51e4e32ff8a52afeb83b328
-SIZE (xpi/firefox-i18n-28.0b2/eu.xpi) = 358942
-SHA256 (xpi/firefox-i18n-28.0b2/fa.xpi) = c5892fbbd075c17dbe1238db7e6afa884004392e14e379401229904be5a3d05b
-SIZE (xpi/firefox-i18n-28.0b2/fa.xpi) = 399201
-SHA256 (xpi/firefox-i18n-28.0b2/ff.xpi) = e2ac2692f10c618cdc746fe4f4c659b788c848bbb42892ef1696fe4d9f568562
-SIZE (xpi/firefox-i18n-28.0b2/ff.xpi) = 351536
-SHA256 (xpi/firefox-i18n-28.0b2/fi.xpi) = 95111a96c788800a0a830f67dbb2e84fde99dd8b2fe826ff5634594e9b40b519
-SIZE (xpi/firefox-i18n-28.0b2/fi.xpi) = 350325
-SHA256 (xpi/firefox-i18n-28.0b2/fr.xpi) = d4206e655e060bee33fdbac8cfceeb39a150e307e43ec32a696863249a5c91e3
-SIZE (xpi/firefox-i18n-28.0b2/fr.xpi) = 363391
-SHA256 (xpi/firefox-i18n-28.0b2/fy-NL.xpi) = 10e7248f746ce9fa413b4c4dbb861cd7c1119f871f5c5ed796d625d7b1f50ffe
-SIZE (xpi/firefox-i18n-28.0b2/fy-NL.xpi) = 359724
-SHA256 (xpi/firefox-i18n-28.0b2/ga-IE.xpi) = 771ffbdd89aee3a23ec91c1771405491c80e6773ffd82870355b68bf7bc6640e
-SIZE (xpi/firefox-i18n-28.0b2/ga-IE.xpi) = 364856
-SHA256 (xpi/firefox-i18n-28.0b2/gd.xpi) = 0a2fde4650fc75bb9ca935e503734cc9b583a7f18c55a6d7ea5e8a5d5e38889a
-SIZE (xpi/firefox-i18n-28.0b2/gd.xpi) = 365218
-SHA256 (xpi/firefox-i18n-28.0b2/gl.xpi) = e87e33e1144948016612835264ebba069c84ad7c655dc91f0d83dd95bcf9b17e
-SIZE (xpi/firefox-i18n-28.0b2/gl.xpi) = 356139
-SHA256 (xpi/firefox-i18n-28.0b2/gu-IN.xpi) = 65fb45ca2a8ccd7fd14352c1c41720f512ed2cda133aeffcafe5f5b91ae2c1d0
-SIZE (xpi/firefox-i18n-28.0b2/gu-IN.xpi) = 381328
-SHA256 (xpi/firefox-i18n-28.0b2/he.xpi) = e326f08668eada4762f473d7ff3041393ddd62382f8a7dd5074ae3d0114c50df
-SIZE (xpi/firefox-i18n-28.0b2/he.xpi) = 377881
-SHA256 (xpi/firefox-i18n-28.0b2/hi-IN.xpi) = 43a6db554bf63938b32b3bdd306929610076e03734049471ffad461aea255b34
-SIZE (xpi/firefox-i18n-28.0b2/hi-IN.xpi) = 399892
-SHA256 (xpi/firefox-i18n-28.0b2/hr.xpi) = 21e714a9934fce895967bd7a50de68c9229559da0497b693e0ac22c0663a562f
-SIZE (xpi/firefox-i18n-28.0b2/hr.xpi) = 365918
-SHA256 (xpi/firefox-i18n-28.0b2/hu.xpi) = d483c3e4a652d82b037731d3f58e401800d78e44f8ab7a8055c38c4ddbce27d4
-SIZE (xpi/firefox-i18n-28.0b2/hu.xpi) = 365034
-SHA256 (xpi/firefox-i18n-28.0b2/hy-AM.xpi) = a5ce8dec5daf9c6f4516f471e53a68486fa81e5b71d974a2b6770889a4af0ca8
-SIZE (xpi/firefox-i18n-28.0b2/hy-AM.xpi) = 411721
-SHA256 (xpi/firefox-i18n-28.0b2/id.xpi) = b7703bfff67d4d385ea0ce0811d85dad222407cf78347c531ad6a051ebbabe1c
-SIZE (xpi/firefox-i18n-28.0b2/id.xpi) = 342616
-SHA256 (xpi/firefox-i18n-28.0b2/is.xpi) = 13266dcad5bbb9dc00f8ae3ac17f6804d762c100ad50e3114117cce89483a383
-SIZE (xpi/firefox-i18n-28.0b2/is.xpi) = 355314
-SHA256 (xpi/firefox-i18n-28.0b2/it.xpi) = 128530944ad096e530066c46c7289099254b9befade84f463906f62b6652a823
-SIZE (xpi/firefox-i18n-28.0b2/it.xpi) = 292743
-SHA256 (xpi/firefox-i18n-28.0b2/ja.xpi) = 8fd761335bf2efa4b70dd832a0e7434e7a7f6223bd7ba487f880493d54bab7c3
-SIZE (xpi/firefox-i18n-28.0b2/ja.xpi) = 397188
-SHA256 (xpi/firefox-i18n-28.0b2/kk.xpi) = a76762f785e31a8cf5d26149a678aeef851badfb56786a5bc2b62b4b4ae9dcaa
-SIZE (xpi/firefox-i18n-28.0b2/kk.xpi) = 400320
-SHA256 (xpi/firefox-i18n-28.0b2/km.xpi) = 2ebd35ba623eaf4a2cfcd6e449b38e3bca209324bc538b4fbc27ba867b474216
-SIZE (xpi/firefox-i18n-28.0b2/km.xpi) = 427924
-SHA256 (xpi/firefox-i18n-28.0b2/kn.xpi) = 2d4a6f84531cc58a262bb4a3d14350555550690c5224fcc9f511d0bd032b8dee
-SIZE (xpi/firefox-i18n-28.0b2/kn.xpi) = 411751
-SHA256 (xpi/firefox-i18n-28.0b2/ko.xpi) = 37903e4c17a97fd6cb3215eb7cfafd3670b8ace223a1bc9fcf3bd79ca50c597d
-SIZE (xpi/firefox-i18n-28.0b2/ko.xpi) = 364493
-SHA256 (xpi/firefox-i18n-28.0b2/ku.xpi) = 04c59de6b910ab3eb9a46b4320f40f879e54a977e3013d4b3cb0e560a7094a68
-SIZE (xpi/firefox-i18n-28.0b2/ku.xpi) = 378841
-SHA256 (xpi/firefox-i18n-28.0b2/lij.xpi) = 227635c91417a6fc701ae009f135d07b77486188ea07dd36efb95ee72afc69ad
-SIZE (xpi/firefox-i18n-28.0b2/lij.xpi) = 344099
-SHA256 (xpi/firefox-i18n-28.0b2/lt.xpi) = 2b73522481e67c0ceb9829f60d295b09685de67bcca6e7aad780950b79d7c3cb
-SIZE (xpi/firefox-i18n-28.0b2/lt.xpi) = 372726
-SHA256 (xpi/firefox-i18n-28.0b2/lv.xpi) = 61116e6a6f03b36ead5848cafad8f2b2b0cd53da75dfd988a241f7260deb0245
-SIZE (xpi/firefox-i18n-28.0b2/lv.xpi) = 352617
-SHA256 (xpi/firefox-i18n-28.0b2/mai.xpi) = 7114d24647137863290c5c193d85335eaab2a1048986eff62e8d3ed9a73b9bc9
-SIZE (xpi/firefox-i18n-28.0b2/mai.xpi) = 399987
-SHA256 (xpi/firefox-i18n-28.0b2/mk.xpi) = f44a4103bfb758a63a7dc3f2b763198c2cf3efe04f821aa1a65a458d3cdd74f8
-SIZE (xpi/firefox-i18n-28.0b2/mk.xpi) = 400747
-SHA256 (xpi/firefox-i18n-28.0b2/ml.xpi) = 059e3afabd5a53bfd9e6097fbd03a3acfc464b046a24a305ce522cbf87329083
-SIZE (xpi/firefox-i18n-28.0b2/ml.xpi) = 420453
-SHA256 (xpi/firefox-i18n-28.0b2/mr.xpi) = 0273d63b1e857f4446d20a4c7f930ac61c6ff4b88a371f96e06bdebd4f08815d
-SIZE (xpi/firefox-i18n-28.0b2/mr.xpi) = 400782
-SHA256 (xpi/firefox-i18n-28.0b2/nb-NO.xpi) = 0db98a9749d3158a21af1ab391e4391b769af3b0b006d73a354d3cb868625574
-SIZE (xpi/firefox-i18n-28.0b2/nb-NO.xpi) = 350402
-SHA256 (xpi/firefox-i18n-28.0b2/nl.xpi) = cdd690cf554846b1a2d4891df2be45457f9f8b2fe16c858f982c8ccfc080d362
-SIZE (xpi/firefox-i18n-28.0b2/nl.xpi) = 351559
-SHA256 (xpi/firefox-i18n-28.0b2/nn-NO.xpi) = 0696c453b5aac06c7094b77a9798835e32e27000068a5fd5676a55d7e3505de4
-SIZE (xpi/firefox-i18n-28.0b2/nn-NO.xpi) = 348405
-SHA256 (xpi/firefox-i18n-28.0b2/or.xpi) = 6d1d3e2e0cfbef6bed5c2a04aef9cc56e67518c7f86e27f1045dc946a131e0b2
-SIZE (xpi/firefox-i18n-28.0b2/or.xpi) = 413667
-SHA256 (xpi/firefox-i18n-28.0b2/pa-IN.xpi) = d9fe05c8764801b0375344894a5e861f6ca45481589ca4fa0661fc9c018a0b88
-SIZE (xpi/firefox-i18n-28.0b2/pa-IN.xpi) = 389012
-SHA256 (xpi/firefox-i18n-28.0b2/pl.xpi) = 46bd5e9745091b007c037ad1a512a79683cc60f5bb20fcb8e71dc3023f181c29
-SIZE (xpi/firefox-i18n-28.0b2/pl.xpi) = 350844
-SHA256 (xpi/firefox-i18n-28.0b2/pt-BR.xpi) = 53c916456598efafa2c09a6f12d79a4409e764ed0167f43b3b8f0ae379a637e6
-SIZE (xpi/firefox-i18n-28.0b2/pt-BR.xpi) = 359253
-SHA256 (xpi/firefox-i18n-28.0b2/pt-PT.xpi) = cb328c9f42fa4c28304956435073dadf4368d097a946ac41f61b6b1ba7e87f58
-SIZE (xpi/firefox-i18n-28.0b2/pt-PT.xpi) = 351716
-SHA256 (xpi/firefox-i18n-28.0b2/rm.xpi) = b6616481c67054488b9009010cdc388295ba6e5d41228782b6c341c05daff1c9
-SIZE (xpi/firefox-i18n-28.0b2/rm.xpi) = 352772
-SHA256 (xpi/firefox-i18n-28.0b2/ro.xpi) = 5b5fd9f764e06c044f1c09f3f7bd99c6d4bc587c0c989c45db505a00ab4b8136
-SIZE (xpi/firefox-i18n-28.0b2/ro.xpi) = 387416
-SHA256 (xpi/firefox-i18n-28.0b2/ru.xpi) = 342089681facb482b1d2c3052ec393ebe0eafabcf0e375e3834a7322086a5ce3
-SIZE (xpi/firefox-i18n-28.0b2/ru.xpi) = 338418
-SHA256 (xpi/firefox-i18n-28.0b2/si.xpi) = 3201fe2217c4a0321cbc8d8be488cdf18e0322ed12e91101dc3094fcfdad6056
-SIZE (xpi/firefox-i18n-28.0b2/si.xpi) = 395719
-SHA256 (xpi/firefox-i18n-28.0b2/sk.xpi) = 8a2c1726d25c4bb2cfb2df52df2786aeca080d316a09e3a609a51aa4943d4b99
-SIZE (xpi/firefox-i18n-28.0b2/sk.xpi) = 367793
-SHA256 (xpi/firefox-i18n-28.0b2/sl.xpi) = dac1baf16bdaefbd91f8741311cf31a53e9821017ecc05db29812a3099fae05e
-SIZE (xpi/firefox-i18n-28.0b2/sl.xpi) = 350318
-SHA256 (xpi/firefox-i18n-28.0b2/son.xpi) = 2ae46c74e06806b23903ef1d95eb24582c12be6262e5e1b8193834916db3ab9d
-SIZE (xpi/firefox-i18n-28.0b2/son.xpi) = 348056
-SHA256 (xpi/firefox-i18n-28.0b2/sq.xpi) = 8c9cb78ce1b9db9b19bc00fd841e5bc727ab74c67f13932cd8f69f35e8c18498
-SIZE (xpi/firefox-i18n-28.0b2/sq.xpi) = 365886
-SHA256 (xpi/firefox-i18n-28.0b2/sr.xpi) = a275d2d7bd53e03fcbfeca360350a6b5b268a302321bebba036529990237e0d7
-SIZE (xpi/firefox-i18n-28.0b2/sr.xpi) = 402632
-SHA256 (xpi/firefox-i18n-28.0b2/sv-SE.xpi) = 041b113dc5ec4e42830cdbaa4c3d262f57639a82151766dfcb42af17b4118a0d
-SIZE (xpi/firefox-i18n-28.0b2/sv-SE.xpi) = 355812
-SHA256 (xpi/firefox-i18n-28.0b2/ta.xpi) = 014f79713e01f3e40aad0de81ea904bd8dcd2ab52606c05a70ffda8c4189c44b
-SIZE (xpi/firefox-i18n-28.0b2/ta.xpi) = 408328
-SHA256 (xpi/firefox-i18n-28.0b2/te.xpi) = 475b3217b11b9a524bf266e0174fe2fe172d01826472cd8137503c88c2da1d7a
-SIZE (xpi/firefox-i18n-28.0b2/te.xpi) = 421142
-SHA256 (xpi/firefox-i18n-28.0b2/th.xpi) = 3248c09fa71e96c3da889d5702593b4515be4a32fceb634aa4d99537ac871978
-SIZE (xpi/firefox-i18n-28.0b2/th.xpi) = 403633
-SHA256 (xpi/firefox-i18n-28.0b2/tr.xpi) = ded4e2f4efcd59ea1ba6646568fbd78ff4d9ca6a4afb6d34195d70e30789aa0d
-SIZE (xpi/firefox-i18n-28.0b2/tr.xpi) = 362002
-SHA256 (xpi/firefox-i18n-28.0b2/uk.xpi) = 70de165e021d20d14447409bc43ab9eb5dfc6ccefbea3cdea495aa7655f56081
-SIZE (xpi/firefox-i18n-28.0b2/uk.xpi) = 385138
-SHA256 (xpi/firefox-i18n-28.0b2/vi.xpi) = ba7e1558ffd4f2a6ca27f61858e5daa981d53652d02b1dc8a10b7b458eb35495
-SIZE (xpi/firefox-i18n-28.0b2/vi.xpi) = 378860
-SHA256 (xpi/firefox-i18n-28.0b2/zh-CN.xpi) = b02c9ef48870e75f77affca75531583a86f70079491f7d2ce72d0445a0018234
-SIZE (xpi/firefox-i18n-28.0b2/zh-CN.xpi) = 379261
-SHA256 (xpi/firefox-i18n-28.0b2/zh-TW.xpi) = 9645ca2b0bc27f8f525346683c7bb353f97158ef6e32a7c1e6215d89e51bdc32
-SIZE (xpi/firefox-i18n-28.0b2/zh-TW.xpi) = 375532
-SHA256 (xpi/firefox-i18n-28.0b2/zu.xpi) = e44c57b746ebbefefe8df06090be0071b7aaf93d59acb5dfc5f914d0f0916921
-SIZE (xpi/firefox-i18n-28.0b2/zu.xpi) = 365911
+SHA256 (xpi/firefox-i18n-28.0b3/ach.xpi) = 4ce4b328d6df33b29e623b6405abab255a815116112c372b1b356242b731af4e
+SIZE (xpi/firefox-i18n-28.0b3/ach.xpi) = 363208
+SHA256 (xpi/firefox-i18n-28.0b3/af.xpi) = ab1759682ede0badcfb525c79115335587377d31d92ac2e6dba324aebbaa8d9f
+SIZE (xpi/firefox-i18n-28.0b3/af.xpi) = 357086
+SHA256 (xpi/firefox-i18n-28.0b3/ar.xpi) = f18266673236af6f50f1303ce449d06ff903dafcbcfe5b46fbc1c5cb205d80c9
+SIZE (xpi/firefox-i18n-28.0b3/ar.xpi) = 386471
+SHA256 (xpi/firefox-i18n-28.0b3/as.xpi) = 9c5c94047132cc6ca3fc6012e0eb01921c9775b6bcf9ea2b4bf87dd86af75e0e
+SIZE (xpi/firefox-i18n-28.0b3/as.xpi) = 404108
+SHA256 (xpi/firefox-i18n-28.0b3/ast.xpi) = 3739bb56b4d95fec0a28ed99d30a9023197e11d61c105b3c5b593bc3ccf99e60
+SIZE (xpi/firefox-i18n-28.0b3/ast.xpi) = 313719
+SHA256 (xpi/firefox-i18n-28.0b3/be.xpi) = f02d2ae5fd61572074385c1467c59cd390cc1ad3811a579b4b16fdbcfb1ff6a6
+SIZE (xpi/firefox-i18n-28.0b3/be.xpi) = 342306
+SHA256 (xpi/firefox-i18n-28.0b3/bg.xpi) = e548ae2887092fb7b2c0d2a9d6058cff3969178b10aa6a4b959ad63d31ff66d0
+SIZE (xpi/firefox-i18n-28.0b3/bg.xpi) = 393205
+SHA256 (xpi/firefox-i18n-28.0b3/bn-BD.xpi) = ba3c078ce5c60f3cd85c3323163506c88c454e519f652783c4028645b64e02b4
+SIZE (xpi/firefox-i18n-28.0b3/bn-BD.xpi) = 416037
+SHA256 (xpi/firefox-i18n-28.0b3/bn-IN.xpi) = e817c14df429f2725c823d5f9dba864dc7f2026a4da06127dc1c471f4f89304c
+SIZE (xpi/firefox-i18n-28.0b3/bn-IN.xpi) = 411038
+SHA256 (xpi/firefox-i18n-28.0b3/br.xpi) = 644c2a8abcb0bf62ef3c5e228c1b2331c0372aef7b97b793c1260c8ce8de7929
+SIZE (xpi/firefox-i18n-28.0b3/br.xpi) = 353934
+SHA256 (xpi/firefox-i18n-28.0b3/bs.xpi) = e82cc9e8016e8f6b05e99eab567d18abae95daac224cfa484b5c604aa06489ee
+SIZE (xpi/firefox-i18n-28.0b3/bs.xpi) = 363405
+SHA256 (xpi/firefox-i18n-28.0b3/ca.xpi) = acda62b146e154e57b35e53eb64904006b9e7f26f20cce2927c403687911b532
+SIZE (xpi/firefox-i18n-28.0b3/ca.xpi) = 360465
+SHA256 (xpi/firefox-i18n-28.0b3/cs.xpi) = b472cd8e41822b4d083fc97e339f23b61e2f7a2d8cce7d52a3c72a338c202998
+SIZE (xpi/firefox-i18n-28.0b3/cs.xpi) = 356819
+SHA256 (xpi/firefox-i18n-28.0b3/csb.xpi) = edbafb9c7527f4d74092eb07205d797e042bb620dcf8aea07cbbe7fd14caa5ca
+SIZE (xpi/firefox-i18n-28.0b3/csb.xpi) = 347623
+SHA256 (xpi/firefox-i18n-28.0b3/cy.xpi) = f885803793694ef7b3522063bbf97b4dce2ff44d761a247554ec68c2f34fd09b
+SIZE (xpi/firefox-i18n-28.0b3/cy.xpi) = 354722
+SHA256 (xpi/firefox-i18n-28.0b3/da.xpi) = fed5455b2f6006c0ecd67241415df12c5837198a1957c0648673e880a7976674
+SIZE (xpi/firefox-i18n-28.0b3/da.xpi) = 346221
+SHA256 (xpi/firefox-i18n-28.0b3/de.xpi) = 2914c129d6ccba5fe21fa4987e9a20bb43e6f0a4a12b3f33a21da2fa370ee6ad
+SIZE (xpi/firefox-i18n-28.0b3/de.xpi) = 350191
+SHA256 (xpi/firefox-i18n-28.0b3/el.xpi) = 86586226f872001074f9a61b17a81890f3f1a1fd9ff928789b17f6753c50ad9b
+SIZE (xpi/firefox-i18n-28.0b3/el.xpi) = 386921
+SHA256 (xpi/firefox-i18n-28.0b3/en-GB.xpi) = 3d563af9a0ddc8d887532b76c44f091590e956cc8fbd13a6c4b0b76f46e806ca
+SIZE (xpi/firefox-i18n-28.0b3/en-GB.xpi) = 340359
+SHA256 (xpi/firefox-i18n-28.0b3/en-US.xpi) = cd30d73815fe4fa67b89b48b39f1ddef2633a663fccf81a829d5edb45e774b0f
+SIZE (xpi/firefox-i18n-28.0b3/en-US.xpi) = 343398
+SHA256 (xpi/firefox-i18n-28.0b3/en-ZA.xpi) = 5bf13a069b16668496728d948768f3efcf267d4ef494c3336888557ed26d978d
+SIZE (xpi/firefox-i18n-28.0b3/en-ZA.xpi) = 335613
+SHA256 (xpi/firefox-i18n-28.0b3/eo.xpi) = 0bbe25329947f02e201de9545d69cedadda7d1cfb6b0173703c119634deac48b
+SIZE (xpi/firefox-i18n-28.0b3/eo.xpi) = 359247
+SHA256 (xpi/firefox-i18n-28.0b3/es-AR.xpi) = a27857302d96cf3160f240f26ef0c0ee0e89d1144a022f63866366cb6461e19c
+SIZE (xpi/firefox-i18n-28.0b3/es-AR.xpi) = 357326
+SHA256 (xpi/firefox-i18n-28.0b3/es-CL.xpi) = a17637d533ba21a837ade998397ea54a273d37a3d83515039accc1ffc0eea520
+SIZE (xpi/firefox-i18n-28.0b3/es-CL.xpi) = 307249
+SHA256 (xpi/firefox-i18n-28.0b3/es-ES.xpi) = c137e0d803e791dafeaa0eba92953bc59d6b8484a3e5be582b55b3e15d9e0375
+SIZE (xpi/firefox-i18n-28.0b3/es-ES.xpi) = 295154
+SHA256 (xpi/firefox-i18n-28.0b3/es-MX.xpi) = 16fd3e2cf8c0200d3d3295fcd56f0876587a8234a9d94f199c863fb0c7ea9e7f
+SIZE (xpi/firefox-i18n-28.0b3/es-MX.xpi) = 359355
+SHA256 (xpi/firefox-i18n-28.0b3/et.xpi) = fc5576ee2ec05860014a75c85f8e5778c1ce7d93e3d7f822eee41f4305b2ef3b
+SIZE (xpi/firefox-i18n-28.0b3/et.xpi) = 345631
+SHA256 (xpi/firefox-i18n-28.0b3/eu.xpi) = bdee2019df1d529aee4f54c3caf17d0b39a097554090f610283d9d6f518fc79c
+SIZE (xpi/firefox-i18n-28.0b3/eu.xpi) = 358942
+SHA256 (xpi/firefox-i18n-28.0b3/fa.xpi) = b8b25f22bce3c5b244388819b800e3c37b81e38cf3dc0494db3499d263ed434d
+SIZE (xpi/firefox-i18n-28.0b3/fa.xpi) = 399201
+SHA256 (xpi/firefox-i18n-28.0b3/ff.xpi) = b907844d75b6d47cfed33400a16c5f33dfc3c99963c089dbc1ee00a4894329c1
+SIZE (xpi/firefox-i18n-28.0b3/ff.xpi) = 351536
+SHA256 (xpi/firefox-i18n-28.0b3/fi.xpi) = 8bfed2a71a4bcd7371ce3baf76996f5f3d51e53d9fe865e74a4ec66564fdda5e
+SIZE (xpi/firefox-i18n-28.0b3/fi.xpi) = 350325
+SHA256 (xpi/firefox-i18n-28.0b3/fr.xpi) = 75481664cee3c5528e25468897166c2f8e579229d1462ac26519c2cd32ff24cf
+SIZE (xpi/firefox-i18n-28.0b3/fr.xpi) = 363391
+SHA256 (xpi/firefox-i18n-28.0b3/fy-NL.xpi) = 960324f09542ee50bef154c50a314cefe4f8dc0ad12472e0ed835223a8da2506
+SIZE (xpi/firefox-i18n-28.0b3/fy-NL.xpi) = 359724
+SHA256 (xpi/firefox-i18n-28.0b3/ga-IE.xpi) = b4859791bd397a357c0c651277cec8cf7fe10aec39a4292072e388fd09771530
+SIZE (xpi/firefox-i18n-28.0b3/ga-IE.xpi) = 364856
+SHA256 (xpi/firefox-i18n-28.0b3/gd.xpi) = 48ba275942376560869c0dd91dda6181441c51253431b3893e6df637c6960f50
+SIZE (xpi/firefox-i18n-28.0b3/gd.xpi) = 365218
+SHA256 (xpi/firefox-i18n-28.0b3/gl.xpi) = 79bd206ced4a9fecea430e1799c196f8123ffce1fd0fc476e8bc5f063b950bc0
+SIZE (xpi/firefox-i18n-28.0b3/gl.xpi) = 356139
+SHA256 (xpi/firefox-i18n-28.0b3/gu-IN.xpi) = d9197396cc8b841736b7ddd7f0850df56fca475410df6ba2fb884e98c1b427ab
+SIZE (xpi/firefox-i18n-28.0b3/gu-IN.xpi) = 381328
+SHA256 (xpi/firefox-i18n-28.0b3/he.xpi) = 4f0f003ad4ba680b487567008002cf10f17786ebcd4276a0a8ea39cf05a74b67
+SIZE (xpi/firefox-i18n-28.0b3/he.xpi) = 377881
+SHA256 (xpi/firefox-i18n-28.0b3/hi-IN.xpi) = 8a145afde59ca0055e537fd5d2cd16ce4b295371464dc79de412199e50ee43fd
+SIZE (xpi/firefox-i18n-28.0b3/hi-IN.xpi) = 399892
+SHA256 (xpi/firefox-i18n-28.0b3/hr.xpi) = 18d65ac9d9c1ee3e65158c8e62e7ce4df3b8cc430fa2501e0d94cf496b28d4da
+SIZE (xpi/firefox-i18n-28.0b3/hr.xpi) = 365918
+SHA256 (xpi/firefox-i18n-28.0b3/hu.xpi) = 81801923e50fb4851211da4f5af3ddc85efe61e56a9ff8dd79c951317b070903
+SIZE (xpi/firefox-i18n-28.0b3/hu.xpi) = 365034
+SHA256 (xpi/firefox-i18n-28.0b3/hy-AM.xpi) = 3ec5e7206f72dd37c7b88f53465ce5a0e06aab44a5f8db4933927affd9694471
+SIZE (xpi/firefox-i18n-28.0b3/hy-AM.xpi) = 411721
+SHA256 (xpi/firefox-i18n-28.0b3/id.xpi) = 078d0268732ae76aa458c3872b87c24d1a97076ad75f70824f057fddc1c4b8e3
+SIZE (xpi/firefox-i18n-28.0b3/id.xpi) = 342616
+SHA256 (xpi/firefox-i18n-28.0b3/is.xpi) = 00abdf161a7e0d43d9c9b20edd7315c885e2c3ee55627eab5edd6112ef145f64
+SIZE (xpi/firefox-i18n-28.0b3/is.xpi) = 355314
+SHA256 (xpi/firefox-i18n-28.0b3/it.xpi) = ad091da8b85a769644338199b5641ab5512dc67704446449d7871848d26dea4d
+SIZE (xpi/firefox-i18n-28.0b3/it.xpi) = 292743
+SHA256 (xpi/firefox-i18n-28.0b3/ja.xpi) = b237140860da06cdf1ab2629702772c48a9227c60bde265c05fe65dbb4a1fc75
+SIZE (xpi/firefox-i18n-28.0b3/ja.xpi) = 397188
+SHA256 (xpi/firefox-i18n-28.0b3/kk.xpi) = d8497c6d50d7061f1dc55ed436f81a58b2409a81242453e00e24895e5bf78b42
+SIZE (xpi/firefox-i18n-28.0b3/kk.xpi) = 400320
+SHA256 (xpi/firefox-i18n-28.0b3/km.xpi) = 1e6bc9a85c5030103da94ed1ae589cc7fc4f72ca550a6510712dcc9603ee9856
+SIZE (xpi/firefox-i18n-28.0b3/km.xpi) = 427924
+SHA256 (xpi/firefox-i18n-28.0b3/kn.xpi) = d2aab8e901aa4c66b3350a6b9ddaa05f6059bd150497a552c459f164443358e4
+SIZE (xpi/firefox-i18n-28.0b3/kn.xpi) = 411751
+SHA256 (xpi/firefox-i18n-28.0b3/ko.xpi) = 8faf5fe789b206f5ddc56076d91a5f7665ba0d94ec96309a8fc52fb31a32c284
+SIZE (xpi/firefox-i18n-28.0b3/ko.xpi) = 364493
+SHA256 (xpi/firefox-i18n-28.0b3/ku.xpi) = eb67408ab5b223bfb417b9d23309afa57ebca245ec008f97dc227f62c8645c9f
+SIZE (xpi/firefox-i18n-28.0b3/ku.xpi) = 378841
+SHA256 (xpi/firefox-i18n-28.0b3/lij.xpi) = 85c1b300dfb343d37311125e4cfeaf8e52a7ee12f04942ca90c579d3f7420f8a
+SIZE (xpi/firefox-i18n-28.0b3/lij.xpi) = 344099
+SHA256 (xpi/firefox-i18n-28.0b3/lt.xpi) = 63b5ce2a990d38e45b6cc2ad3d0f5e7507771f6f9ac1331c2212264a87b80328
+SIZE (xpi/firefox-i18n-28.0b3/lt.xpi) = 372726
+SHA256 (xpi/firefox-i18n-28.0b3/lv.xpi) = 4bf38c07f80dbb72fa9de078658ac904498653b2f7afe4674298b3f443ea41d7
+SIZE (xpi/firefox-i18n-28.0b3/lv.xpi) = 352617
+SHA256 (xpi/firefox-i18n-28.0b3/mai.xpi) = bf1cb94ba1479489e56e384fccd40b7b320bb3f32bf7d7f3b015fca31ea26278
+SIZE (xpi/firefox-i18n-28.0b3/mai.xpi) = 399987
+SHA256 (xpi/firefox-i18n-28.0b3/mk.xpi) = 434435926aba9e3b3691742319b2e64b1da94765163afde4158d1100d83f47ce
+SIZE (xpi/firefox-i18n-28.0b3/mk.xpi) = 400747
+SHA256 (xpi/firefox-i18n-28.0b3/ml.xpi) = 101a322be7cdcd84da7ff3ed68623097beb374d4b8dcbd555689bbf5a621d88c
+SIZE (xpi/firefox-i18n-28.0b3/ml.xpi) = 420453
+SHA256 (xpi/firefox-i18n-28.0b3/mr.xpi) = 302477a761e34e17b307ccb0da406c0edc7e60fb25d64cc9755c45ec337c5419
+SIZE (xpi/firefox-i18n-28.0b3/mr.xpi) = 400782
+SHA256 (xpi/firefox-i18n-28.0b3/nb-NO.xpi) = a823c2c637773b8ccdb2782d317ae97cfb5e5adadacbe7440989158c27fef696
+SIZE (xpi/firefox-i18n-28.0b3/nb-NO.xpi) = 350402
+SHA256 (xpi/firefox-i18n-28.0b3/nl.xpi) = dc5f89ed758c8f274989e1e6f18bf043b0ac7d5900a19550088e37ead590c262
+SIZE (xpi/firefox-i18n-28.0b3/nl.xpi) = 351559
+SHA256 (xpi/firefox-i18n-28.0b3/nn-NO.xpi) = f6544f35246ae9aa683fc1c0144a7c157ac37363c4cbeb2521b6e49b88f77fe9
+SIZE (xpi/firefox-i18n-28.0b3/nn-NO.xpi) = 348405
+SHA256 (xpi/firefox-i18n-28.0b3/or.xpi) = ac60467f06faec095aada825aee52aedbb381d4a6f86608a8d80c4ea7a975e8e
+SIZE (xpi/firefox-i18n-28.0b3/or.xpi) = 413667
+SHA256 (xpi/firefox-i18n-28.0b3/pa-IN.xpi) = e044a6711247e09ba031e0ab86148d5dba6de0b1ba15b915a0cd1fab462b2a6a
+SIZE (xpi/firefox-i18n-28.0b3/pa-IN.xpi) = 389012
+SHA256 (xpi/firefox-i18n-28.0b3/pl.xpi) = e3945d6b72b16e1c4cf0435d133b32fe3b01336c3321790de0944057356fcec0
+SIZE (xpi/firefox-i18n-28.0b3/pl.xpi) = 350844
+SHA256 (xpi/firefox-i18n-28.0b3/pt-BR.xpi) = 15b7507dbe7d9cd561fa9ed9343cc870a439a4ae7acebe0a3104511c42bc5454
+SIZE (xpi/firefox-i18n-28.0b3/pt-BR.xpi) = 359253
+SHA256 (xpi/firefox-i18n-28.0b3/pt-PT.xpi) = aec9695f250039385eb23965f9fe69dd6495b5b626eae7bd3491ea776ee147fa
+SIZE (xpi/firefox-i18n-28.0b3/pt-PT.xpi) = 351716
+SHA256 (xpi/firefox-i18n-28.0b3/rm.xpi) = bb41e16b7e7a6cb45424d984a3a8107d7ab842de03e966b0d3f68041f10a9126
+SIZE (xpi/firefox-i18n-28.0b3/rm.xpi) = 352772
+SHA256 (xpi/firefox-i18n-28.0b3/ro.xpi) = 02a159772748b56492f96120593b45513833b261049edb2d016d4e9a5d3c6392
+SIZE (xpi/firefox-i18n-28.0b3/ro.xpi) = 387416
+SHA256 (xpi/firefox-i18n-28.0b3/ru.xpi) = 729ee75304102b902446f1734cca4694cf5c32f1bdf37bc12ad8f453cb8135da
+SIZE (xpi/firefox-i18n-28.0b3/ru.xpi) = 338425
+SHA256 (xpi/firefox-i18n-28.0b3/si.xpi) = 621cd9cdaebdd6b7d0eed160fe6178e173a2cf8390fb01a390880f030fcaf176
+SIZE (xpi/firefox-i18n-28.0b3/si.xpi) = 395719
+SHA256 (xpi/firefox-i18n-28.0b3/sk.xpi) = 26f0e3e7d24fecd0704ca4d4388efd05931271311a632d4efe5c70e6ff96a7b6
+SIZE (xpi/firefox-i18n-28.0b3/sk.xpi) = 367793
+SHA256 (xpi/firefox-i18n-28.0b3/sl.xpi) = e9ebcf27f1bed5fae9b28a7044efe7eb951456004324e862d4fce397044ee8c0
+SIZE (xpi/firefox-i18n-28.0b3/sl.xpi) = 350318
+SHA256 (xpi/firefox-i18n-28.0b3/son.xpi) = f89c0db4972be8c7bdb0b550a05e7bf5045200a809f66ddf852b377f9225e9f9
+SIZE (xpi/firefox-i18n-28.0b3/son.xpi) = 348056
+SHA256 (xpi/firefox-i18n-28.0b3/sq.xpi) = c8346bb371bbcc102f9fb10c46e34edd5674d2ec13b5ce717a9ef912656f4957
+SIZE (xpi/firefox-i18n-28.0b3/sq.xpi) = 365886
+SHA256 (xpi/firefox-i18n-28.0b3/sr.xpi) = 06892ac3f90b240dba419fe2fa272a2c783514bc632a21a6289d5f5de13f46d3
+SIZE (xpi/firefox-i18n-28.0b3/sr.xpi) = 402632
+SHA256 (xpi/firefox-i18n-28.0b3/sv-SE.xpi) = 2560ca4c1aa9f6608c3c2bc9fd0e80f76f04656b5523e4f8d76fb124dc8ea41e
+SIZE (xpi/firefox-i18n-28.0b3/sv-SE.xpi) = 355812
+SHA256 (xpi/firefox-i18n-28.0b3/ta.xpi) = 0fc694744f5679e70343ebbf79e4eae29c458c66fae644fa7b16d25c539f6d2e
+SIZE (xpi/firefox-i18n-28.0b3/ta.xpi) = 408328
+SHA256 (xpi/firefox-i18n-28.0b3/te.xpi) = 58578d166cf6da1557b7620fa03ec208bbc7a4f3666a45248c18504c0c99f4c2
+SIZE (xpi/firefox-i18n-28.0b3/te.xpi) = 421142
+SHA256 (xpi/firefox-i18n-28.0b3/th.xpi) = baf62cab977e445bd18f5561453bbf0b6e4d15a490bdc9d30e8b3bfb80cbec46
+SIZE (xpi/firefox-i18n-28.0b3/th.xpi) = 403633
+SHA256 (xpi/firefox-i18n-28.0b3/tr.xpi) = f597a2cca4d53ed141aff48bfb130bc8f8824d73adf57c5dd766cc349da2ceea
+SIZE (xpi/firefox-i18n-28.0b3/tr.xpi) = 362002
+SHA256 (xpi/firefox-i18n-28.0b3/uk.xpi) = 3c6adfa7f5ac82b2b7865f0e8581b79f58698e33b2696d67c73161c33e102635
+SIZE (xpi/firefox-i18n-28.0b3/uk.xpi) = 385138
+SHA256 (xpi/firefox-i18n-28.0b3/vi.xpi) = 9ce8fdf9265ab6f5b7b47cda37fa2e14af463111194931a1c6883bfe998c26e0
+SIZE (xpi/firefox-i18n-28.0b3/vi.xpi) = 378860
+SHA256 (xpi/firefox-i18n-28.0b3/zh-CN.xpi) = 5fea4685a17a206a71ebed7094a228d052d474513cf34d7138685702d1cd6c4f
+SIZE (xpi/firefox-i18n-28.0b3/zh-CN.xpi) = 379261
+SHA256 (xpi/firefox-i18n-28.0b3/zh-TW.xpi) = e459b6d04ea92e7161bb7fe10f1bf4b50ba2f65093f38e98c1b84c5c31634048
+SIZE (xpi/firefox-i18n-28.0b3/zh-TW.xpi) = 375532
+SHA256 (xpi/firefox-i18n-28.0b3/zu.xpi) = a92009d572a3c28ae8406616766e05c7588aa2f3dd3324b3d5bc0c36b9c8bbc3
+SIZE (xpi/firefox-i18n-28.0b3/zu.xpi) = 365911

Modified: trunk/www/firefox-nightly/Makefile.hgrev
==============================================================================
--- trunk/www/firefox-nightly/Makefile.hgrev	Thu Feb 13 06:31:24 2014	(r1495)
+++ trunk/www/firefox-nightly/Makefile.hgrev	Fri Feb 14 06:30:24 2014	(r1496)
@@ -1 +1 @@
-HGREV=		167979:221df43616ab
+HGREV=		168731:c7802c9d6eec

Modified: trunk/www/firefox-nightly/distinfo
==============================================================================
--- trunk/www/firefox-nightly/distinfo	Thu Feb 13 06:31:24 2014	(r1495)
+++ trunk/www/firefox-nightly/distinfo	Fri Feb 14 06:30:24 2014	(r1496)
@@ -1,2 +1,2 @@
-SHA256 (firefox-nightly/221df43616ab.tar.bz2) = db00823267464793c4de7c82234ed21c4044582f35e5021f14dd3030f7e86f22
-SIZE (firefox-nightly/221df43616ab.tar.bz2) = 135901109
+SHA256 (firefox-nightly/c7802c9d6eec.tar.bz2) = c8d97c7c624a5d051f25411b419476da94aa87b2c0f54651f8a4a2c31afbf32c
+SIZE (firefox-nightly/c7802c9d6eec.tar.bz2) = 135962893

Deleted: trunk/www/firefox-nightly/files/patch-bug806917
==============================================================================
--- trunk/www/firefox-nightly/files/patch-bug806917	Fri Feb 14 06:30:24 2014	(r1495)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,2016 +0,0 @@
-commit cb40a26
-Author: Alessandro Decina <alessandro.d@gmail.com>
-Date:   Fri Jan 03 08:16:54 2014 -0800
-
-    Bug 806917 - support GStreamer 1.0
----
- configure.in                                      |  64 ++-
- content/media/gstreamer/GStreamerAllocator.cpp    | 194 +++++++
- content/media/gstreamer/GStreamerAllocator.h      |  25 +
- content/media/gstreamer/GStreamerFormatHelper.cpp |  13 +-
- content/media/gstreamer/GStreamerFunctionList.h   |  93 +++-
- content/media/gstreamer/GStreamerLoader.cpp       |  48 +-
- content/media/gstreamer/GStreamerLoader.h         |   8 +
- content/media/gstreamer/GStreamerReader-0.10.cpp  | 198 +++++++
- content/media/gstreamer/GStreamerReader.cpp       | 618 ++++++++++++++--------
- content/media/gstreamer/GStreamerReader.h         |  42 +-
- content/media/gstreamer/moz.build                 |  11 +-
- content/media/test/manifest.js                    |   6 +-
- 12 files changed, 1046 insertions(+), 274 deletions(-)
-
-diff --git configure.in configure.in
-index 9776b8d..0b1698d 100644
---- configure.in
-+++ configure.in
-@@ -3988,6 +3988,7 @@ MOZ_SAMPLE_TYPE_FLOAT32=
- MOZ_SAMPLE_TYPE_S16=
- MOZ_OPUS=1
- MOZ_WEBM=1
-+MOZ_GSTREAMER=
- MOZ_DIRECTSHOW=
- MOZ_WMF=
- MOZ_FMP4=
-@@ -5634,44 +5635,61 @@ WINNT|Darwin|Android)
-     ;;
- *)
-     MOZ_GSTREAMER=1
-+    GST_API_VERSION=0.10
-     ;;
- esac
- 
--MOZ_ARG_ENABLE_BOOL(gstreamer,
--[  --enable-gstreamer           Enable GStreamer support],
--MOZ_GSTREAMER=1,
--MOZ_GSTREAMER=)
--
--if test "$MOZ_GSTREAMER"; then
--    # API version, eg 0.10, 1.0 etc
-+MOZ_ARG_ENABLE_STRING(gstreamer,
-+[  --enable-gstreamer[=0.10]           Enable GStreamer support],
-+[ MOZ_GSTREAMER=1
-+  # API version, eg 0.10, 1.0 etc
-+  if test -z "$enableval" -o "$enableval" = "yes"; then
-     GST_API_VERSION=0.10
-+  elif test "$enableval" = "no"; then
-+    MOZ_GSTREAMER=
-+  else
-+    GST_API_VERSION=$enableval
-+  fi],
-+)
-+
-+if test -n "$MOZ_GSTREAMER"; then
-     # core/base release number
--    GST_VERSION=0.10.25
-+    if test "$GST_API_VERSION" = "1.0"; then
-+      GST_VERSION=1.0
-+    else
-+      GST_VERSION=0.10.25
-+    fi
-+
-     PKG_CHECK_MODULES(GSTREAMER,
-                       gstreamer-$GST_API_VERSION >= $GST_VERSION
-                       gstreamer-app-$GST_API_VERSION
--                      gstreamer-plugins-base-$GST_API_VERSION, ,
--                      AC_MSG_ERROR([gstreamer and gstreamer-plugins-base development packages are needed to build gstreamer backend. Install them or disable gstreamer support with --disable-gstreamer]))
--    if test -n "$GSTREAMER_LIBS"; then
--       _SAVE_LDFLAGS=$LDFLAGS
--       LDFLAGS="$LDFLAGS $GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION"
--       AC_TRY_LINK(,[return 0;],_HAVE_LIBGSTVIDEO=1,_HAVE_LIBGSTVIDEO=)
--       if test -n "$_HAVE_LIBGSTVIDEO" ; then
--          GSTREAMER_LIBS="$GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION"
--       else
--          AC_MSG_ERROR([gstreamer-plugins-base found, but no libgstvideo. Something has gone terribly wrong. Try reinstalling gstreamer-plugins-base; failing that, disable the gstreamer backend with --disable-gstreamer.])
--       fi
--       LDFLAGS=$_SAVE_LDFLAGS
-+                      gstreamer-plugins-base-$GST_API_VERSION,
-+                      [_HAVE_GSTREAMER=1],
-+                      [_HAVE_GSTREAMER=])
-+    if test -z "$_HAVE_GSTREAMER"; then
-+        AC_MSG_ERROR([gstreamer and gstreamer-plugins-base development packages are needed to build gstreamer backend. Install them or disable gstreamer support with --disable-gstreamer])
-+    fi
-+
-+    _SAVE_LDFLAGS=$LDFLAGS
-+    LDFLAGS="$LDFLAGS $GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION"
-+    AC_TRY_LINK(,[return 0;],_HAVE_LIBGSTVIDEO=1,_HAVE_LIBGSTVIDEO=)
-+    if test -n "$_HAVE_LIBGSTVIDEO" ; then
-+        GSTREAMER_LIBS="$GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION"
-     else
--       AC_MSG_ERROR([gstreamer and gstreamer-plugins-base development packages are needed to build gstreamer backend. Install them or disable gstreamer support with --disable-gstreamer])
-+        AC_MSG_ERROR([gstreamer-plugins-base found, but no libgstvideo. Something has gone terribly wrong. Try reinstalling gstreamer-plugins-base; failing that, disable the gstreamer backend with --disable-gstreamer.])
-     fi
-+    LDFLAGS=$_SAVE_LDFLAGS
-+
-+    AC_SUBST(GSTREAMER_CFLAGS)
-+    AC_SUBST(GSTREAMER_LIBS)
- fi
--AC_SUBST(GSTREAMER_CFLAGS)
--AC_SUBST(GSTREAMER_LIBS)
-+
- AC_SUBST(MOZ_GSTREAMER)
-+AC_SUBST(GST_API_VERSION)
- 
- if test -n "$MOZ_GSTREAMER"; then
--   AC_DEFINE(MOZ_GSTREAMER)
-+     AC_DEFINE(MOZ_GSTREAMER)
-+     AC_DEFINE_UNQUOTED(GST_API_VERSION, "$GST_API_VERSION")
- fi
- 
- 
-diff --git content/media/gstreamer/GStreamerAllocator.cpp content/media/gstreamer/GStreamerAllocator.cpp
-new file mode 100644
-index 0000000..69d0385
---- /dev/null
-+++ content/media/gstreamer/GStreamerAllocator.cpp
-@@ -0,0 +1,197 @@
-+#ifdef HAVE_CONFIG_H
-+#include "config.h"
-+#endif
-+
-+#include "GStreamerAllocator.h"
-+
-+#include <gst/video/video.h>
-+#include <gst/video/gstvideometa.h>
-+
-+#include "GStreamerLoader.h"
-+
-+using namespace mozilla::layers;
-+
-+namespace mozilla {
-+
-+typedef struct
-+{
-+  GstAllocator parent;
-+  GStreamerReader *reader;
-+} MozGfxMemoryAllocator;
-+
-+typedef struct
-+{
-+  GstAllocatorClass parent;
-+} MozGfxMemoryAllocatorClass;
-+
-+typedef struct
-+{
-+  GstMemory memory;
-+  PlanarYCbCrImage* image;
-+  guint8* data;
-+} MozGfxMemory;
-+
-+typedef struct
-+{
-+  GstMeta meta;
-+} MozGfxMeta;
-+
-+typedef struct
-+{
-+  GstVideoBufferPoolClass parent_class;
-+} MozGfxBufferPoolClass;
-+
-+typedef struct
-+{
-+  GstVideoBufferPool pool;
-+} MozGfxBufferPool;
-+
-+G_DEFINE_TYPE(MozGfxMemoryAllocator, moz_gfx_memory_allocator, GST_TYPE_ALLOCATOR);
-+G_DEFINE_TYPE(MozGfxBufferPool, moz_gfx_buffer_pool, GST_TYPE_VIDEO_BUFFER_POOL);
-+
-+void
-+moz_gfx_memory_reset(MozGfxMemory *mem)
-+{
-+  if (mem->image)
-+    mem->image->Release();
-+
-+  ImageContainer* container = ((MozGfxMemoryAllocator*) mem->memory.allocator)->reader->GetImageContainer();
-+  mem->image = reinterpret_cast<PlanarYCbCrImage*>(container->CreateImage(ImageFormat::PLANAR_YCBCR).get());
-+  mem->data = mem->image->AllocateAndGetNewBuffer(mem->memory.size);
-+}
-+
-+static GstMemory*
-+moz_gfx_memory_allocator_alloc(GstAllocator* aAllocator, gsize aSize,
-+    GstAllocationParams* aParams)
-+{
-+  MozGfxMemory* mem = g_slice_new (MozGfxMemory);
-+  gsize maxsize = aSize + aParams->prefix + aParams->padding;
-+  gst_memory_init(GST_MEMORY_CAST (mem),
-+                  (GstMemoryFlags)aParams->flags,
-+                  aAllocator, NULL, maxsize, aParams->align,
-+                  aParams->prefix, aSize);
-+  mem->image = NULL;
-+  moz_gfx_memory_reset(mem);
-+
-+  return (GstMemory *) mem;
-+}
-+
-+static void
-+moz_gfx_memory_allocator_free (GstAllocator * allocator, GstMemory * gmem)
-+{
-+  MozGfxMemory *mem = (MozGfxMemory *) gmem;
-+
-+  if (mem->memory.parent)
-+    goto sub_mem;
-+
-+  if (mem->image)
-+    mem->image->Release();
-+
-+sub_mem:
-+  g_slice_free (MozGfxMemory, mem);
-+}
-+
-+static gpointer
-+moz_gfx_memory_map (MozGfxMemory * mem, gsize maxsize, GstMapFlags flags)
-+{
-+  // check that the allocation didn't fail
-+  if (mem->data == nullptr)
-+    return nullptr;
-+
-+  return mem->data + mem->memory.offset;
-+}
-+
-+static gboolean
-+moz_gfx_memory_unmap (MozGfxMemory * mem)
-+{
-+  return TRUE;
-+}
-+
-+static MozGfxMemory *
-+moz_gfx_memory_share (MozGfxMemory * mem, gssize offset, gsize size)
-+{
-+  MozGfxMemory *sub;
-+  GstMemory *parent;
-+
-+  /* find the real parent */
-+  if ((parent = mem->memory.parent) == NULL)
-+    parent = (GstMemory *) mem;
-+
-+  if (size == (gsize) -1)
-+    size = mem->memory.size - offset;
-+
-+  /* the shared memory is always readonly */
-+  sub = g_slice_new (MozGfxMemory);
-+
-+  gst_memory_init (GST_MEMORY_CAST (sub),
-+      (GstMemoryFlags) (GST_MINI_OBJECT_FLAGS (parent) | GST_MINI_OBJECT_FLAG_LOCK_READONLY),
-+      mem->memory.allocator, &mem->memory, mem->memory.maxsize, mem->memory.align,
-+      mem->memory.offset + offset, size);
-+
-+  sub->image = mem->image;
-+  sub->data = mem->data;
-+
-+  return sub;
-+}
-+
-+static void
-+moz_gfx_memory_allocator_class_init (MozGfxMemoryAllocatorClass * klass)
-+{
-+  GstAllocatorClass *allocator_class;
-+
-+  allocator_class = (GstAllocatorClass *) klass;
-+
-+  allocator_class->alloc = moz_gfx_memory_allocator_alloc;
-+  allocator_class->free = moz_gfx_memory_allocator_free;
-+}
-+
-+static void
-+moz_gfx_memory_allocator_init (MozGfxMemoryAllocator * allocator)
-+{
-+  GstAllocator *alloc = GST_ALLOCATOR_CAST (allocator);
-+
-+  alloc->mem_type = "moz-gfx-image";
-+  alloc->mem_map = (GstMemoryMapFunction) moz_gfx_memory_map;
-+  alloc->mem_unmap = (GstMemoryUnmapFunction) moz_gfx_memory_unmap;
-+  alloc->mem_share = (GstMemoryShareFunction) moz_gfx_memory_share;
-+  /* fallback copy and is_span */
-+}
-+
-+void
-+moz_gfx_memory_allocator_set_reader(GstAllocator* aAllocator, GStreamerReader* aReader)
-+{
-+  MozGfxMemoryAllocator *allocator = (MozGfxMemoryAllocator *) aAllocator;
-+  allocator->reader = aReader;
-+}
-+
-+nsRefPtr<PlanarYCbCrImage>
-+moz_gfx_memory_get_image(GstMemory *aMemory)
-+{
-+  NS_ASSERTION(GST_IS_MOZ_GFX_MEMORY_ALLOCATOR(aMemory->allocator), "Should be a gfx image");
-+
-+  return ((MozGfxMemory *) aMemory)->image;
-+}
-+
-+void
-+moz_gfx_buffer_pool_reset_buffer (GstBufferPool* aPool, GstBuffer* aBuffer)
-+{
-+  GstMemory* mem = gst_buffer_peek_memory(aBuffer, 0);
-+
-+  NS_ASSERTION(GST_IS_MOZ_GFX_MEMORY_ALLOCATOR(mem->allocator), "Should be a gfx image");
-+  moz_gfx_memory_reset((MozGfxMemory *) mem);
-+  GST_BUFFER_POOL_CLASS(moz_gfx_buffer_pool_parent_class)->reset_buffer(aPool, aBuffer);
-+}
-+
-+static void
-+moz_gfx_buffer_pool_class_init (MozGfxBufferPoolClass * klass)
-+{
-+  GstBufferPoolClass *pool_class = (GstBufferPoolClass *) klass;
-+  pool_class->reset_buffer = moz_gfx_buffer_pool_reset_buffer;
-+}
-+
-+static void
-+moz_gfx_buffer_pool_init (MozGfxBufferPool * pool)
-+{
-+}
-+
-+} // namespace mozilla
-diff --git content/media/gstreamer/GStreamerAllocator.h content/media/gstreamer/GStreamerAllocator.h
-new file mode 100644
-index 0000000..05a4412
---- /dev/null
-+++ content/media/gstreamer/GStreamerAllocator.h
-@@ -0,0 +1,25 @@
-+/* This Source Code Form is subject to the terms of the Mozilla Public
-+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
-+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
-+
-+#if !defined(GStreamerAllocator_h_)
-+#define GStreamerAllocator_h_
-+
-+#include "GStreamerReader.h"
-+
-+#define GST_TYPE_MOZ_GFX_MEMORY_ALLOCATOR   (moz_gfx_memory_allocator_get_type())
-+#define GST_IS_MOZ_GFX_MEMORY_ALLOCATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_MOZ_GFX_MEMORY_ALLOCATOR))
-+#define GST_TYPE_MOZ_GFX_BUFFER_POOL   (moz_gfx_buffer_pool_get_type())
-+#define GST_IS_MOZ_GFX_BUFFER_POOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_MOZ_GFX_BUFFER_POOL))
-+
-+namespace mozilla {
-+
-+GType moz_gfx_memory_allocator_get_type();
-+void moz_gfx_memory_allocator_set_reader(GstAllocator *aAllocator, GStreamerReader* aReader);
-+nsRefPtr<layers::PlanarYCbCrImage> moz_gfx_memory_get_image(GstMemory *aMemory);
-+
-+GType moz_gfx_buffer_pool_get_type();
-+
-+} // namespace mozilla
-+
-+#endif
-diff --git content/media/gstreamer/GStreamerFormatHelper.cpp content/media/gstreamer/GStreamerFormatHelper.cpp
-index be71331..a5e5db8 100644
---- content/media/gstreamer/GStreamerFormatHelper.cpp
-+++ content/media/gstreamer/GStreamerFormatHelper.cpp
-@@ -294,12 +294,23 @@ bool GStreamerFormatHelper::CanHandleCodecCaps(GstCaps* aCaps)
- GList* GStreamerFormatHelper::GetFactories() {
-   NS_ASSERTION(sLoadOK, "GStreamer library not linked");
- 
--  uint32_t cookie = gst_default_registry_get_feature_list_cookie ();
-+#if GST_VERSION_MAJOR >= 1
-+  uint32_t cookie = gst_registry_get_feature_list_cookie(gst_registry_get());
-+#else
-+  uint32_t cookie = gst_default_registry_get_feature_list_cookie();
-+#endif
-   if (cookie != mCookie) {
-     g_list_free(mFactories);
-+#if GST_VERSION_MAJOR >= 1
-+    mFactories =
-+      gst_registry_feature_filter(gst_registry_get(),
-+                                  (GstPluginFeatureFilter)FactoryFilter,
-+                                  false, nullptr);
-+#else
-     mFactories =
-       gst_default_registry_feature_filter((GstPluginFeatureFilter)FactoryFilter,
-                                           false, nullptr);
-+#endif
-     mCookie = cookie;
-   }
- 
-diff --git content/media/gstreamer/GStreamerFunctionList.h content/media/gstreamer/GStreamerFunctionList.h
-index 56877c0..e169449 100644
---- content/media/gstreamer/GStreamerFunctionList.h
-+++ content/media/gstreamer/GStreamerFunctionList.h
-@@ -9,7 +9,6 @@
-  * List of symbol names we need to dlsym from the gstreamer library.
-  */
- GST_FUNC(LIBGSTAPP, gst_app_sink_get_type)
--GST_FUNC(LIBGSTAPP, gst_app_sink_pull_buffer)
- GST_FUNC(LIBGSTAPP, gst_app_sink_set_callbacks)
- GST_FUNC(LIBGSTAPP, gst_app_src_end_of_stream)
- GST_FUNC(LIBGSTAPP, gst_app_src_get_size)
-@@ -22,10 +21,8 @@ GST_FUNC(LIBGSTAPP, gst_app_src_set_stream_type)
- GST_FUNC(LIBGSTREAMER, gst_bin_get_by_name)
- GST_FUNC(LIBGSTREAMER, gst_bin_get_type)
- GST_FUNC(LIBGSTREAMER, gst_bin_iterate_recurse)
--GST_FUNC(LIBGSTREAMER, gst_buffer_copy_metadata)
- GST_FUNC(LIBGSTREAMER, gst_buffer_get_type)
- GST_FUNC(LIBGSTREAMER, gst_buffer_new)
--GST_FUNC(LIBGSTREAMER, gst_buffer_new_and_alloc)
- GST_FUNC(LIBGSTREAMER, gst_bus_set_sync_handler)
- GST_FUNC(LIBGSTREAMER, gst_bus_timed_pop_filtered)
- GST_FUNC(LIBGSTREAMER, gst_caps_append)
-@@ -37,47 +34,37 @@ GST_FUNC(LIBGSTREAMER, gst_caps_new_any)
- GST_FUNC(LIBGSTREAMER, gst_caps_new_empty)
- GST_FUNC(LIBGSTREAMER, gst_caps_new_full)
- GST_FUNC(LIBGSTREAMER, gst_caps_new_simple)
--GST_FUNC(LIBGSTREAMER, gst_caps_unref)
--GST_FUNC(LIBGSTREAMER, gst_element_factory_get_klass)
-+GST_FUNC(LIBGSTREAMER, gst_caps_set_simple)
- GST_FUNC(LIBGSTREAMER, gst_element_factory_get_static_pad_templates)
- GST_FUNC(LIBGSTREAMER, gst_element_factory_get_type)
- GST_FUNC(LIBGSTREAMER, gst_element_factory_make)
- GST_FUNC(LIBGSTREAMER, gst_element_get_factory)
--GST_FUNC(LIBGSTREAMER, gst_element_get_pad)
-+GST_FUNC(LIBGSTREAMER, gst_element_get_static_pad)
- GST_FUNC(LIBGSTREAMER, gst_element_get_type)
- GST_FUNC(LIBGSTREAMER, gst_element_query_convert)
- GST_FUNC(LIBGSTREAMER, gst_element_query_duration)
- GST_FUNC(LIBGSTREAMER, gst_element_seek_simple)
- GST_FUNC(LIBGSTREAMER, gst_element_set_state)
--GST_FUNC(LIBGSTREAMER, gst_event_parse_new_segment)
- GST_FUNC(LIBGSTREAMER, gst_flow_get_name)
- GST_FUNC(LIBGSTREAMER, gst_init)
- GST_FUNC(LIBGSTREAMER, gst_init_check)
- GST_FUNC(LIBGSTREAMER, gst_iterator_next)
- GST_FUNC(LIBGSTREAMER, gst_message_parse_error)
- GST_FUNC(LIBGSTREAMER, gst_message_type_get_name)
--GST_FUNC(LIBGSTREAMER, gst_mini_object_get_type)
--GST_FUNC(LIBGSTREAMER, gst_mini_object_new)
- GST_FUNC(LIBGSTREAMER, gst_mini_object_ref)
- GST_FUNC(LIBGSTREAMER, gst_mini_object_unref)
- GST_FUNC(LIBGSTREAMER, gst_object_get_name)
- GST_FUNC(LIBGSTREAMER, gst_object_get_parent)
- GST_FUNC(LIBGSTREAMER, gst_object_unref)
--GST_FUNC(LIBGSTREAMER, gst_pad_add_event_probe)
--GST_FUNC(LIBGSTREAMER, gst_pad_alloc_buffer)
- GST_FUNC(LIBGSTREAMER, gst_pad_get_element_private)
--GST_FUNC(LIBGSTREAMER, gst_pad_get_negotiated_caps)
--GST_FUNC(LIBGSTREAMER, gst_pad_set_bufferalloc_function)
- GST_FUNC(LIBGSTREAMER, gst_pad_set_element_private)
- GST_FUNC(LIBGSTREAMER, gst_parse_bin_from_description)
- GST_FUNC(LIBGSTREAMER, gst_pipeline_get_bus)
- GST_FUNC(LIBGSTREAMER, gst_pipeline_get_type)
- GST_FUNC(LIBGSTREAMER, gst_plugin_feature_get_rank)
- GST_FUNC(LIBGSTREAMER, gst_registry_feature_filter)
--GST_FUNC(LIBGSTREAMER, gst_registry_get_default)
- GST_FUNC(LIBGSTREAMER, gst_registry_get_feature_list_cookie)
- GST_FUNC(LIBGSTREAMER, gst_segment_init)
--GST_FUNC(LIBGSTREAMER, gst_segment_set_newsegment)
- GST_FUNC(LIBGSTREAMER, gst_segment_to_stream_time)
- GST_FUNC(LIBGSTREAMER, gst_static_caps_get)
- GST_FUNC(LIBGSTREAMER, gst_structure_copy)
-@@ -86,11 +73,82 @@ GST_FUNC(LIBGSTREAMER, gst_structure_get_int)
- GST_FUNC(LIBGSTREAMER, gst_structure_get_value)
- GST_FUNC(LIBGSTREAMER, gst_structure_new)
- GST_FUNC(LIBGSTREAMER, gst_util_uint64_scale)
-+
-+#if GST_VERSION_MAJOR == 0
-+GST_FUNC(LIBGSTAPP, gst_app_sink_pull_buffer)
-+GST_FUNC(LIBGSTREAMER, gst_buffer_copy_metadata)
-+GST_FUNC(LIBGSTREAMER, gst_buffer_new_and_alloc)
-+GST_FUNC(LIBGSTREAMER, gst_caps_unref)
-+GST_FUNC(LIBGSTREAMER, gst_element_factory_get_klass)
-+GST_FUNC(LIBGSTREAMER, gst_element_get_pad)
-+GST_FUNC(LIBGSTREAMER, gst_event_parse_new_segment)
-+GST_FUNC(LIBGSTREAMER, gst_mini_object_get_type)
-+GST_FUNC(LIBGSTREAMER, gst_mini_object_new)
-+GST_FUNC(LIBGSTREAMER, gst_pad_add_event_probe)
-+GST_FUNC(LIBGSTREAMER, gst_pad_alloc_buffer)
-+GST_FUNC(LIBGSTREAMER, gst_pad_get_negotiated_caps)
-+GST_FUNC(LIBGSTREAMER, gst_pad_set_bufferalloc_function)
-+GST_FUNC(LIBGSTREAMER, gst_registry_get_default)
-+GST_FUNC(LIBGSTREAMER, gst_segment_set_newsegment)
- GST_FUNC(LIBGSTVIDEO, gst_video_format_get_component_height)
- GST_FUNC(LIBGSTVIDEO, gst_video_format_get_component_offset)
- GST_FUNC(LIBGSTVIDEO, gst_video_format_get_component_width)
-+GST_FUNC(LIBGSTVIDEO, gst_video_format_get_pixel_stride)
- GST_FUNC(LIBGSTVIDEO, gst_video_format_get_row_stride)
- GST_FUNC(LIBGSTVIDEO, gst_video_format_parse_caps)
-+#else
-+
-+GST_FUNC(LIBGSTAPP, gst_app_sink_pull_sample)
-+GST_FUNC(LIBGSTREAMER, _gst_caps_any)
-+GST_FUNC(LIBGSTREAMER, gst_allocator_get_type)
-+GST_FUNC(LIBGSTREAMER, gst_buffer_copy_into)
-+GST_FUNC(LIBGSTREAMER, gst_buffer_extract)
-+GST_FUNC(LIBGSTREAMER, gst_buffer_get_meta)
-+GST_FUNC(LIBGSTREAMER, gst_buffer_get_size)
-+GST_FUNC(LIBGSTREAMER, gst_buffer_map)
-+GST_FUNC(LIBGSTREAMER, gst_buffer_new_allocate)
-+GST_FUNC(LIBGSTREAMER, gst_buffer_n_memory)
-+GST_FUNC(LIBGSTREAMER, gst_buffer_peek_memory)
-+GST_FUNC(LIBGSTREAMER, gst_buffer_pool_acquire_buffer)
-+GST_FUNC(LIBGSTREAMER, gst_buffer_pool_config_set_allocator)
-+GST_FUNC(LIBGSTREAMER, gst_buffer_pool_config_set_params)
-+GST_FUNC(LIBGSTREAMER, gst_buffer_pool_get_config)
-+GST_FUNC(LIBGSTREAMER, gst_buffer_pool_get_type)
-+GST_FUNC(LIBGSTREAMER, gst_buffer_pool_is_active)
-+GST_FUNC(LIBGSTREAMER, gst_buffer_pool_set_active)
-+GST_FUNC(LIBGSTREAMER, gst_buffer_pool_set_config)
-+GST_FUNC(LIBGSTREAMER, gst_buffer_set_size)
-+GST_FUNC(LIBGSTREAMER, gst_buffer_unmap)
-+GST_FUNC(LIBGSTREAMER, gst_element_factory_get_metadata)
-+GST_FUNC(LIBGSTREAMER, gst_event_parse_segment)
-+GST_FUNC(LIBGSTREAMER, gst_memory_init)
-+GST_FUNC(LIBGSTREAMER, gst_memory_map)
-+GST_FUNC(LIBGSTREAMER, gst_memory_unmap)
-+GST_FUNC(LIBGSTREAMER, gst_object_get_type)
-+GST_FUNC(LIBGSTREAMER, gst_pad_add_probe)
-+GST_FUNC(LIBGSTREAMER, gst_pad_get_current_caps)
-+GST_FUNC(LIBGSTREAMER, gst_pad_probe_info_get_query)
-+GST_FUNC(LIBGSTREAMER, gst_query_add_allocation_meta)
-+GST_FUNC(LIBGSTREAMER, gst_query_add_allocation_param)
-+GST_FUNC(LIBGSTREAMER, gst_query_add_allocation_pool)
-+GST_FUNC(LIBGSTREAMER, gst_query_parse_allocation)
-+GST_FUNC(LIBGSTREAMER, gst_registry_get)
-+GST_FUNC(LIBGSTREAMER, gst_sample_get_buffer)
-+GST_FUNC(LIBGSTREAMER, gst_segment_copy_into)
-+GST_FUNC(LIBGSTREAMER, gst_structure_free)
-+GST_FUNC(LIBGSTVIDEO, gst_buffer_pool_config_get_video_alignment)
-+GST_FUNC(LIBGSTVIDEO, gst_buffer_pool_has_option)
-+GST_FUNC(LIBGSTVIDEO, gst_video_buffer_pool_get_type)
-+GST_FUNC(LIBGSTVIDEO, gst_video_frame_map)
-+GST_FUNC(LIBGSTVIDEO, gst_video_frame_unmap)
-+GST_FUNC(LIBGSTVIDEO, gst_video_info_align)
-+GST_FUNC(LIBGSTVIDEO, gst_video_info_from_caps)
-+GST_FUNC(LIBGSTVIDEO, gst_video_info_init)
-+GST_FUNC(LIBGSTVIDEO, gst_video_meta_api_get_type)
-+GST_FUNC(LIBGSTVIDEO, gst_video_meta_map)
-+GST_FUNC(LIBGSTVIDEO, gst_video_meta_unmap)
-+
-+#endif
- 
- /*
-  * Functions that have been defined in the header file. We replace them so that
-@@ -100,6 +158,11 @@ GST_FUNC(LIBGSTVIDEO, gst_video_format_parse_caps)
- REPLACE_FUNC(gst_buffer_ref);
- REPLACE_FUNC(gst_buffer_unref);
- REPLACE_FUNC(gst_message_unref);
-+
-+#if GST_VERSION_MAJOR == 1
-+REPLACE_FUNC(gst_caps_unref);
-+REPLACE_FUNC(gst_sample_unref);
-+#endif
- #endif
- 
- #endif // !defined(__APPLE__)
-diff --git content/media/gstreamer/GStreamerLoader.cpp content/media/gstreamer/GStreamerLoader.cpp
-index 5961b23..e6457e0 100644
---- content/media/gstreamer/GStreamerLoader.cpp
-+++ content/media/gstreamer/GStreamerLoader.cpp
-@@ -6,13 +6,21 @@
- #include <dlfcn.h>
- #include <stdio.h>
- 
--#include "GStreamerLoader.h"
-+#include "nsDebug.h"
- #include "mozilla/NullPtr.h"
- 
-+#include "GStreamerLoader.h"
-+
- #define LIBGSTREAMER 0
- #define LIBGSTAPP 1
- #define LIBGSTVIDEO 2
- 
-+#ifdef __OpenBSD__
-+#define LIB_GST_SUFFIX ".so"
-+#else
-+#define LIB_GST_SUFFIX ".so.0"
-+#endif
-+
- namespace mozilla {
- 
- /*
-@@ -32,6 +40,11 @@ namespace mozilla {
- GstBuffer * gst_buffer_ref_impl(GstBuffer *buf);
- void gst_buffer_unref_impl(GstBuffer *buf);
- void gst_message_unref_impl(GstMessage *msg);
-+void gst_caps_unref_impl(GstCaps *caps);
-+
-+#if GST_VERSION_MAJOR == 1
-+void gst_sample_unref_impl(GstSample *sample);
-+#endif
- 
- bool
- load_gstreamer()
-@@ -58,32 +71,25 @@ load_gstreamer()
-   if (major == GST_VERSION_MAJOR && minor == GST_VERSION_MINOR) {
-     gstreamerLib = RTLD_DEFAULT;
-   } else {
--#ifdef __OpenBSD__
--    gstreamerLib = dlopen("libgstreamer-0.10.so", RTLD_NOW | RTLD_LOCAL);
--#else
--    gstreamerLib = dlopen("libgstreamer-0.10.so.0", RTLD_NOW | RTLD_LOCAL);
--#endif
-+    gstreamerLib = dlopen("libgstreamer-" GST_API_VERSION LIB_GST_SUFFIX, RTLD_NOW | RTLD_LOCAL);
-   }
- 
--  void *handles[] = {
-+  void *handles[3] = {
-     gstreamerLib,
--#ifdef __OpenBSD__
--    dlopen("libgstapp-0.10.so", RTLD_NOW | RTLD_LOCAL),
--    dlopen("libgstvideo-0.10.so", RTLD_NOW | RTLD_LOCAL)
--#else
--    dlopen("libgstapp-0.10.so.0", RTLD_NOW | RTLD_LOCAL),
--    dlopen("libgstvideo-0.10.so.0", RTLD_NOW | RTLD_LOCAL)
--#endif
-+    dlopen("libgstapp-" GST_API_VERSION LIB_GST_SUFFIX, RTLD_NOW | RTLD_LOCAL),
-+    dlopen("libgstvideo-" GST_API_VERSION LIB_GST_SUFFIX, RTLD_NOW | RTLD_LOCAL)
-   };
- 
-   for (size_t i = 0; i < sizeof(handles) / sizeof(handles[0]); i++) {
-     if (!handles[i]) {
-+      NS_WARNING("Couldn't link gstreamer libraries");
-       goto fail;
-     }
-   }
- 
- #define GST_FUNC(lib, symbol) \
-   if (!(symbol = (typeof(symbol))dlsym(handles[lib], #symbol))) { \
-+    NS_WARNING("Couldn't link symbol " #symbol); \
-     goto fail; \
-   }
- #define REPLACE_FUNC(symbol) symbol = symbol##_impl;
-@@ -123,4 +129,18 @@ gst_message_unref_impl(GstMessage *msg)
-   gst_mini_object_unref(GST_MINI_OBJECT_CAST(msg));
- }
- 
-+#if GST_VERSION_MAJOR == 1
-+void
-+gst_sample_unref_impl(GstSample *sample)
-+{
-+  gst_mini_object_unref(GST_MINI_OBJECT_CAST(sample));
-+}
-+#endif
-+
-+void
-+gst_caps_unref_impl(GstCaps *caps)
-+{
-+  gst_mini_object_unref(GST_MINI_OBJECT_CAST(caps));
-+}
-+
- }
-diff --git content/media/gstreamer/GStreamerLoader.h content/media/gstreamer/GStreamerLoader.h
-index 2d801722..cd7fe6d 100644
---- content/media/gstreamer/GStreamerLoader.h
-+++ content/media/gstreamer/GStreamerLoader.h
-@@ -22,6 +22,11 @@
- #include <gst/video/video.h>
- #pragma GCC diagnostic pop
- 
-+#if GST_VERSION_MAJOR == 1
-+#include <gst/video/gstvideometa.h>
-+#include <gst/video/gstvideopool.h>
-+#endif
-+
- namespace mozilla {
- 
- /*
-@@ -42,4 +47,7 @@ bool load_gstreamer();
- 
- }
- 
-+#undef GST_CAPS_ANY
-+#define GST_CAPS_ANY (*_gst_caps_any)
-+
- #endif // GStreamerLoader_h_
-diff --git content/media/gstreamer/GStreamerReader-0.10.cpp content/media/gstreamer/GStreamerReader-0.10.cpp
-new file mode 100644
-index 0000000..fb98bde
---- /dev/null
-+++ content/media/gstreamer/GStreamerReader-0.10.cpp
-@@ -0,0 +1,200 @@
-+#include "nsError.h"
-+#include "MediaDecoderStateMachine.h"
-+#include "AbstractMediaDecoder.h"
-+#include "MediaResource.h"
-+#include "GStreamerReader.h"
-+#include "GStreamerMozVideoBuffer.h"
-+#include "GStreamerFormatHelper.h"
-+#include "VideoUtils.h"
-+#include "mozilla/dom/TimeRanges.h"
-+#include "mozilla/Preferences.h"
-+
-+using namespace mozilla;
-+using mozilla::layers::PlanarYCbCrImage;
-+using mozilla::layers::ImageContainer;
-+
-+GstFlowReturn GStreamerReader::AllocateVideoBufferCb(GstPad* aPad,
-+                                                     guint64 aOffset,
-+                                                     guint aSize,
-+                                                     GstCaps* aCaps,
-+                                                     GstBuffer** aBuf)
-+{
-+  GStreamerReader* reader = reinterpret_cast<GStreamerReader*>(gst_pad_get_element_private(aPad));
-+  return reader->AllocateVideoBuffer(aPad, aOffset, aSize, aCaps, aBuf);
-+}
-+
-+GstFlowReturn GStreamerReader::AllocateVideoBuffer(GstPad* aPad,
-+                                                   guint64 aOffset,
-+                                                   guint aSize,
-+                                                   GstCaps* aCaps,
-+                                                   GstBuffer** aBuf)
-+{
-+  nsRefPtr<PlanarYCbCrImage> image;
-+  return AllocateVideoBufferFull(aPad, aOffset, aSize, aCaps, aBuf, image);
-+}
-+
-+GstFlowReturn GStreamerReader::AllocateVideoBufferFull(GstPad* aPad,
-+                                                       guint64 aOffset,
-+                                                       guint aSize,
-+                                                       GstCaps* aCaps,
-+                                                       GstBuffer** aBuf,
-+                                                       nsRefPtr<PlanarYCbCrImage>& aImage)
-+{
-+  /* allocate an image using the container */
-+  ImageContainer* container = mDecoder->GetImageContainer();
-+  if (container == nullptr) {
-+    return GST_FLOW_ERROR;
-+  }
-+  PlanarYCbCrImage* img = reinterpret_cast<PlanarYCbCrImage*>(container->CreateImage(ImageFormat::PLANAR_YCBCR).get());
-+  nsRefPtr<PlanarYCbCrImage> image = dont_AddRef(img);
-+
-+  /* prepare a GstBuffer pointing to the underlying PlanarYCbCrImage buffer */
-+  GstBuffer* buf = GST_BUFFER(gst_moz_video_buffer_new());
-+  GST_BUFFER_SIZE(buf) = aSize;
-+  /* allocate the actual YUV buffer */
-+  GST_BUFFER_DATA(buf) = image->AllocateAndGetNewBuffer(aSize);
-+
-+  aImage = image;
-+
-+  /* create a GstMozVideoBufferData to hold the image */
-+  GstMozVideoBufferData* bufferdata = new GstMozVideoBufferData(image);
-+
-+  /* Attach bufferdata to our GstMozVideoBuffer, it will take care to free it */
-+  gst_moz_video_buffer_set_data(GST_MOZ_VIDEO_BUFFER(buf), bufferdata);
-+
-+  *aBuf = buf;
-+  return GST_FLOW_OK;
-+}
-+
-+gboolean GStreamerReader::EventProbe(GstPad* aPad, GstEvent* aEvent)
-+{
-+  GstElement* parent = GST_ELEMENT(gst_pad_get_parent(aPad));
-+  switch(GST_EVENT_TYPE(aEvent)) {
-+    case GST_EVENT_NEWSEGMENT:
-+    {
-+      gboolean update;
-+      gdouble rate;
-+      GstFormat format;
-+      gint64 start, stop, position;
-+      GstSegment* segment;
-+
-+      /* Store the segments so we can convert timestamps to stream time, which
-+       * is what the upper layers sync on.
-+       */
-+      ReentrantMonitorAutoEnter mon(mGstThreadsMonitor);
-+      gst_event_parse_new_segment(aEvent, &update, &rate, &format,
-+          &start, &stop, &position);
-+      if (parent == GST_ELEMENT(mVideoAppSink))
-+        segment = &mVideoSegment;
-+      else
-+        segment = &mAudioSegment;
-+      gst_segment_set_newsegment(segment, update, rate, format,
-+          start, stop, position);
-+      break;
-+    }
-+    case GST_EVENT_FLUSH_STOP:
-+      /* Reset on seeks */
-+      ResetDecode();
-+      break;
-+    default:
-+      break;
-+  }
-+  gst_object_unref(parent);
-+
-+  return TRUE;
-+}
-+
-+gboolean GStreamerReader::EventProbeCb(GstPad* aPad,
-+                                         GstEvent* aEvent,
-+                                         gpointer aUserData)
-+{
-+  GStreamerReader* reader = reinterpret_cast<GStreamerReader*>(aUserData);
-+  return reader->EventProbe(aPad, aEvent);
-+}
-+
-+nsRefPtr<PlanarYCbCrImage> GStreamerReader::GetImageFromBuffer(GstBuffer* aBuffer)
-+{
-+  if (!GST_IS_MOZ_VIDEO_BUFFER (aBuffer))
-+    return nullptr;
-+
-+  nsRefPtr<PlanarYCbCrImage> image;
-+  GstMozVideoBufferData* bufferdata = reinterpret_cast<GstMozVideoBufferData*>(gst_moz_video_buffer_get_data(GST_MOZ_VIDEO_BUFFER(aBuffer)));
-+  image = bufferdata->mImage;
-+
-+  PlanarYCbCrImage::Data data;
-+  data.mPicX = data.mPicY = 0;
-+  data.mPicSize = gfx::IntSize(mPicture.width, mPicture.height);
-+  data.mStereoMode = StereoMode::MONO;
-+
-+  data.mYChannel = GST_BUFFER_DATA(aBuffer);
-+  data.mYStride = gst_video_format_get_row_stride(mFormat, 0, mPicture.width);
-+  data.mYSize = gfx::IntSize(data.mYStride,
-+      gst_video_format_get_component_height(mFormat, 0, mPicture.height));
-+  data.mYSkip = 0;
-+  data.mCbCrStride = gst_video_format_get_row_stride(mFormat, 1, mPicture.width);
-+  data.mCbCrSize = gfx::IntSize(data.mCbCrStride,
-+      gst_video_format_get_component_height(mFormat, 1, mPicture.height));
-+  data.mCbChannel = data.mYChannel + gst_video_format_get_component_offset(mFormat, 1,
-+      mPicture.width, mPicture.height);
-+  data.mCrChannel = data.mYChannel + gst_video_format_get_component_offset(mFormat, 2,
-+      mPicture.width, mPicture.height);
-+  data.mCbSkip = 0;
-+  data.mCrSkip = 0;
-+
-+  image->SetDataNoCopy(data);
-+
-+  return image;
-+}
-+
-+void GStreamerReader::CopyIntoImageBuffer(GstBuffer* aBuffer,
-+                                          GstBuffer** aOutBuffer,
-+                                          nsRefPtr<PlanarYCbCrImage> &aImage)
-+{
-+  AllocateVideoBufferFull(nullptr, GST_BUFFER_OFFSET(aBuffer),
-+      GST_BUFFER_SIZE(aBuffer), nullptr, aOutBuffer, aImage);
-+
-+  gst_buffer_copy_metadata(*aOutBuffer, aBuffer, (GstBufferCopyFlags)GST_BUFFER_COPY_ALL);
-+  memcpy(GST_BUFFER_DATA(*aOutBuffer), GST_BUFFER_DATA(aBuffer), GST_BUFFER_SIZE(*aOutBuffer));
-+
-+  aImage = GetImageFromBuffer(*aOutBuffer);
-+}
-+
-+GstCaps* GStreamerReader::BuildAudioSinkCaps()
-+{
-+  GstCaps* caps;
-+#ifdef IS_LITTLE_ENDIAN
-+  int endianness = 1234;
-+#else
-+  int endianness = 4321;
-+#endif
-+  gint width;
-+#ifdef MOZ_SAMPLE_TYPE_FLOAT32
-+  caps = gst_caps_from_string("audio/x-raw-float, channels={1,2}");
-+  width = 32;
-+#else /* !MOZ_SAMPLE_TYPE_FLOAT32 */
-+  caps = gst_caps_from_string("audio/x-raw-int, channels={1,2}");
-+  width = 16;
-+#endif
-+  gst_caps_set_simple(caps,
-+      "width", G_TYPE_INT, width,
-+      "endianness", G_TYPE_INT, endianness,
-+      NULL);
-+
-+  return caps;
-+}
-+
-+void GStreamerReader::InstallPadCallbacks()
-+{
-+  GstPad* sinkpad = gst_element_get_static_pad(GST_ELEMENT(mVideoAppSink), "sink");
-+  gst_pad_add_event_probe(sinkpad,
-+                          G_CALLBACK(&GStreamerReader::EventProbeCb), this);
-+
-+  gst_pad_set_bufferalloc_function(sinkpad, GStreamerReader::AllocateVideoBufferCb);
-+  gst_pad_set_element_private(sinkpad, this);
-+  gst_object_unref(sinkpad);
-+
-+  sinkpad = gst_element_get_static_pad(GST_ELEMENT(mAudioAppSink), "sink");
-+  gst_pad_add_event_probe(sinkpad,
-+                          G_CALLBACK(&GStreamerReader::EventProbeCb), this);
-+  gst_object_unref(sinkpad);
-+}
-diff --git content/media/gstreamer/GStreamerReader.cpp content/media/gstreamer/GStreamerReader.cpp
-index 2be45dc..54509e3 100644
---- content/media/gstreamer/GStreamerReader.cpp
-+++ content/media/gstreamer/GStreamerReader.cpp
-@@ -10,8 +10,10 @@
- #include "AbstractMediaDecoder.h"
- #include "MediaResource.h"
- #include "GStreamerReader.h"
-+#if GST_VERSION_MAJOR >= 1
-+#include "GStreamerAllocator.h"
-+#endif
- #include "GStreamerFormatHelper.h"
--#include "GStreamerMozVideoBuffer.h"
- #include "VideoUtils.h"
- #include "mozilla/dom/TimeRanges.h"
- #include "mozilla/Preferences.h"
-@@ -31,14 +33,16 @@ extern PRLogModuleInfo* gMediaDecoderLog;
- #define LOG(type, msg)
- #endif
- 
--extern bool
--IsYV12Format(const VideoData::YCbCrBuffer::Plane& aYPlane,
--             const VideoData::YCbCrBuffer::Plane& aCbPlane,
--             const VideoData::YCbCrBuffer::Plane& aCrPlane);
--
-+#if DEBUG
- static const unsigned int MAX_CHANNELS = 4;
--// Let the demuxer work in pull mode for short files
--static const int SHORT_FILE_SIZE = 1024 * 1024;
-+#endif
-+// Let the demuxer work in pull mode for short files. This used to be a micro
-+// optimization to have more accurate durations for ogg files in mochitests.
-+// Since as of today we aren't using gstreamer to demux ogg, and having demuxers
-+// work in pull mode over http makes them slower (since they really assume
-+// near-zero latency in pull mode) set the constant to 0 for now, which
-+// effectively disables it.
-+static const int SHORT_FILE_SIZE = 0;
- // The default resource->Read() size when working in push mode
- static const int DEFAULT_SOURCE_READ_SIZE = 50 * 1024;
- 
-@@ -60,6 +62,10 @@ GStreamerReader::GStreamerReader(AbstractMediaDecoder* aDecoder)
-   : MediaDecoderReader(aDecoder),
-   mMP3FrameParser(aDecoder->GetResource()->GetLength()),
-   mUseParserDuration(false),
-+#if GST_VERSION_MAJOR >= 1
-+  mAllocator(nullptr),
-+  mBufferPool(nullptr),
-+#endif
-   mPlayBin(nullptr),
-   mBus(nullptr),
-   mSource(nullptr),
-@@ -72,6 +78,9 @@ GStreamerReader::GStreamerReader(AbstractMediaDecoder* aDecoder)
-   mAudioSinkBufferCount(0),
-   mGstThreadsMonitor("media.gst.threads"),
-   mReachedEos(false),
-+#if GST_VERSION_MAJOR >= 1
-+  mConfigureAlignment(true),
-+#endif
-   fpsNum(0),
-   fpsDen(0)
- {
-@@ -83,8 +92,12 @@ GStreamerReader::GStreamerReader(AbstractMediaDecoder* aDecoder)
- 
-   mSinkCallbacks.eos = GStreamerReader::EosCb;
-   mSinkCallbacks.new_preroll = GStreamerReader::NewPrerollCb;
-+#if GST_VERSION_MAJOR >= 1
-+  mSinkCallbacks.new_sample = GStreamerReader::NewBufferCb;
-+#else
-   mSinkCallbacks.new_buffer = GStreamerReader::NewBufferCb;
-   mSinkCallbacks.new_buffer_list = nullptr;
-+#endif
- 
-   gst_segment_init(&mVideoSegment, GST_FORMAT_UNDEFINED);
-   gst_segment_init(&mAudioSegment, GST_FORMAT_UNDEFINED);
-@@ -108,65 +121,59 @@ GStreamerReader::~GStreamerReader()
-     mAudioAppSink = nullptr;
-     gst_object_unref(mBus);
-     mBus = nullptr;
-+#if GST_VERSION_MAJOR >= 1
-+    g_object_unref(mAllocator);
-+    g_object_unref(mBufferPool);
-+#endif
-   }
- }
- 
- nsresult GStreamerReader::Init(MediaDecoderReader* aCloneDonor)
- {
--  GError* error = nullptr;
--  if (!gst_init_check(0, 0, &error)) {
--    LOG(PR_LOG_ERROR, ("gst initialization failed: %s", error->message));
--    g_error_free(error);
--    return NS_ERROR_FAILURE;
--  }
-+  GStreamerFormatHelper::Instance();
-+
-+#if GST_VERSION_MAJOR >= 1
-+  mAllocator = static_cast<GstAllocator*>(g_object_new(GST_TYPE_MOZ_GFX_MEMORY_ALLOCATOR, nullptr));
-+  moz_gfx_memory_allocator_set_reader(mAllocator, this);
-+
-+  mBufferPool = static_cast<GstBufferPool*>(g_object_new(GST_TYPE_MOZ_GFX_BUFFER_POOL, nullptr));
-+#endif
- 
-+#if GST_VERSION_MAJOR >= 1
-+  mPlayBin = gst_element_factory_make("playbin", nullptr);
-+#else
-   mPlayBin = gst_element_factory_make("playbin2", nullptr);
-+#endif
-   if (!mPlayBin) {
--    LOG(PR_LOG_ERROR, ("couldn't create playbin2"));
-+    LOG(PR_LOG_ERROR, ("couldn't create playbin"));
-     return NS_ERROR_FAILURE;
-   }
-   g_object_set(mPlayBin, "buffer-size", 0, nullptr);
-   mBus = gst_pipeline_get_bus(GST_PIPELINE(mPlayBin));
- 
-   mVideoSink = gst_parse_bin_from_description("capsfilter name=filter ! "
--      "appsink name=videosink sync=true max-buffers=1 "
-+      "appsink name=videosink sync=false max-buffers=1 "
-+#if GST_VERSION_MAJOR >= 1
-+      "caps=video/x-raw,format=I420"
-+#else
-       "caps=video/x-raw-yuv,format=(fourcc)I420"
-+#endif
-       , TRUE, nullptr);
-   mVideoAppSink = GST_APP_SINK(gst_bin_get_by_name(GST_BIN(mVideoSink),
-         "videosink"));
--  gst_app_sink_set_callbacks(mVideoAppSink, &mSinkCallbacks,
--      (gpointer) this, nullptr);
--  GstPad* sinkpad = gst_element_get_pad(GST_ELEMENT(mVideoAppSink), "sink");
--  gst_pad_add_event_probe(sinkpad,
--      G_CALLBACK(&GStreamerReader::EventProbeCb), this);
--  gst_object_unref(sinkpad);
--  gst_pad_set_bufferalloc_function(sinkpad, GStreamerReader::AllocateVideoBufferCb);
--  gst_pad_set_element_private(sinkpad, this);
--
-   mAudioSink = gst_parse_bin_from_description("capsfilter name=filter ! "
--#ifdef MOZ_SAMPLE_TYPE_FLOAT32
--        "appsink name=audiosink max-buffers=2 sync=false caps=audio/x-raw-float,"
--#ifdef IS_LITTLE_ENDIAN
--        "channels={1,2},width=32,endianness=1234", TRUE, nullptr);
--#else
--        "channels={1,2},width=32,endianness=4321", TRUE, nullptr);
--#endif
--#else
--        "appsink name=audiosink max-buffers=2 sync=false caps=audio/x-raw-int,"
--#ifdef IS_LITTLE_ENDIAN
--        "channels={1,2},width=16,endianness=1234", TRUE, nullptr);
--#else
--        "channels={1,2},width=16,endianness=4321", TRUE, nullptr);
--#endif
--#endif
-+        "appsink name=audiosink sync=false max-buffers=1", TRUE, nullptr);
-   mAudioAppSink = GST_APP_SINK(gst_bin_get_by_name(GST_BIN(mAudioSink),
-                                                    "audiosink"));
-+  GstCaps* caps = BuildAudioSinkCaps();
-+  g_object_set(mAudioAppSink, "caps", caps, nullptr);
-+  gst_caps_unref(caps);
-+
-+  gst_app_sink_set_callbacks(mVideoAppSink, &mSinkCallbacks,
-+      (gpointer) this, nullptr);
-   gst_app_sink_set_callbacks(mAudioAppSink, &mSinkCallbacks,
-                              (gpointer) this, nullptr);
--  sinkpad = gst_element_get_pad(GST_ELEMENT(mAudioAppSink), "sink");
--  gst_pad_add_event_probe(sinkpad,
--                          G_CALLBACK(&GStreamerReader::EventProbeCb), this);
--  gst_object_unref(sinkpad);
-+  InstallPadCallbacks();
- 
-   g_object_set(mPlayBin, "uri", "appsrc://",
-                "video-sink", mVideoSink,
-@@ -318,13 +325,13 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo,
-       /* Little trick: set the target caps to "skip" so that playbin2 fails to
-        * find a decoder for the stream we want to skip.
-        */
--      GstCaps* filterCaps = gst_caps_new_simple ("skip", nullptr);
-+      GstCaps* filterCaps = gst_caps_new_simple ("skip", nullptr, nullptr);
-       g_object_set(filter, "caps", filterCaps, nullptr);
-       gst_caps_unref(filterCaps);
-       gst_object_unref(filter);
-     }
- 
--    /* start the pipeline */
-+    LOG(PR_LOG_DEBUG, ("starting metadata pipeline"));
-     gst_element_set_state(mPlayBin, GST_STATE_PAUSED);
- 
-     /* Wait for ASYNC_DONE, which is emitted when the pipeline is built,
-@@ -345,6 +352,7 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo,
-       gst_message_unref(message);
-       ret = NS_ERROR_FAILURE;
-     } else {
-+      LOG(PR_LOG_DEBUG, ("read metadata pipeline prerolled"));
-       gst_message_unref(message);
-       ret = NS_OK;
-       break;
-@@ -360,16 +368,20 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo,
- 
-   /* FIXME: workaround for a bug in matroskademux. This seek makes matroskademux
-    * parse the index */
-+  LOG(PR_LOG_DEBUG, ("doing matroskademux seek hack"));
-   if (gst_element_seek_simple(mPlayBin, GST_FORMAT_TIME,
-         GST_SEEK_FLAG_FLUSH, 0)) {
-     /* after a seek we need to wait again for ASYNC_DONE */
--    message = gst_bus_timed_pop_filtered(mBus, GST_CLOCK_TIME_NONE,
-+    message = gst_bus_timed_pop_filtered(mBus, 5 * GST_SECOND,
-        (GstMessageType)(GST_MESSAGE_ASYNC_DONE | GST_MESSAGE_ERROR));
--    if (GST_MESSAGE_TYPE(message) == GST_MESSAGE_ERROR) {
-+    LOG(PR_LOG_DEBUG, ("matroskademux seek hack done"));
-+    if (GST_MESSAGE_TYPE(message) != GST_MESSAGE_ASYNC_DONE) {
-       gst_element_set_state(mPlayBin, GST_STATE_NULL);
-       gst_message_unref(message);
-       return NS_ERROR_FAILURE;
-     }
-+  } else {
-+    LOG(PR_LOG_DEBUG, ("matroskademux seek hack failed (non fatal)"));
-   }
- 
-   bool isMP3 = mDecoder->GetResource()->GetContentType().EqualsASCII(AUDIO_MP3);
-@@ -379,7 +391,6 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo,
- 
-   /* report the duration */
-   gint64 duration;
--  GstFormat format = GST_FORMAT_TIME;
- 
-   if (isMP3 && mMP3FrameParser.IsMP3()) {
-     // The MP3FrameParser has reported a duration; use that over the gstreamer
-@@ -388,18 +399,25 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo,
-     mUseParserDuration = true;
-     mLastParserDuration = mMP3FrameParser.GetDuration();
-     mDecoder->SetMediaDuration(mLastParserDuration);
--
--  } else if (gst_element_query_duration(GST_ELEMENT(mPlayBin),
--      &format, &duration) && format == GST_FORMAT_TIME) {
--    // Otherwise use the gstreamer duration.
--    ReentrantMonitorAutoEnter mon(mDecoder->GetReentrantMonitor());
--    LOG(PR_LOG_DEBUG, ("returning duration %" GST_TIME_FORMAT,
--          GST_TIME_ARGS (duration)));
--    duration = GST_TIME_AS_USECONDS (duration);
--    mDecoder->SetMediaDuration(duration);
--
-   } else {
--    mDecoder->SetMediaSeekable(false);
-+    LOG(PR_LOG_DEBUG, ("querying duration"));
-+    // Otherwise use the gstreamer duration.
-+#if GST_VERSION_MAJOR >= 1
-+    if (gst_element_query_duration(GST_ELEMENT(mPlayBin),
-+          GST_FORMAT_TIME, &duration)) {
-+#else
-+    GstFormat format = GST_FORMAT_TIME;
-+    if (gst_element_query_duration(GST_ELEMENT(mPlayBin),
-+      &format, &duration) && format == GST_FORMAT_TIME) {
-+#endif
-+      ReentrantMonitorAutoEnter mon(mDecoder->GetReentrantMonitor());
-+      LOG(PR_LOG_DEBUG, ("have duration %" GST_TIME_FORMAT,
-+            GST_TIME_ARGS (duration)));
-+      duration = GST_TIME_AS_USECONDS (duration);
-+      mDecoder->SetMediaDuration(duration);
-+    } else {
-+      mDecoder->SetMediaSeekable(false);
-+    }
-   }
- 
-   int n_video = 0, n_audio = 0;
-@@ -412,7 +430,11 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo,
-   *aTags = nullptr;
- 
-   // Watch the pipeline for fatal errors
-+#if GST_VERSION_MAJOR >= 1
-+  gst_bus_set_sync_handler(mBus, GStreamerReader::ErrorCb, this, nullptr);
-+#else
-   gst_bus_set_sync_handler(mBus, GStreamerReader::ErrorCb, this);
-+#endif
- 
-   /* set the pipeline to PLAYING so that it starts decoding and queueing data in
-    * the appsinks */
-@@ -426,19 +448,35 @@ nsresult GStreamerReader::CheckSupportedFormats()
-   bool done = false;
-   bool unsupported = false;
- 
--  GstIterator *it = gst_bin_iterate_recurse(GST_BIN(mPlayBin));
-+  GstIterator* it = gst_bin_iterate_recurse(GST_BIN(mPlayBin));
-   while (!done) {
-+    GstIteratorResult res;
-     GstElement* element;
--    GstIteratorResult res = gst_iterator_next(it, (void **)&element);
-+
-+#if GST_VERSION_MAJOR >= 1
-+    GValue value = {0,};
-+    res = gst_iterator_next(it, &value);
-+#else
-+    res = gst_iterator_next(it, (void **) &element);
-+#endif
-     switch(res) {
-       case GST_ITERATOR_OK:
-       {
-+#if GST_VERSION_MAJOR >= 1
-+        element = GST_ELEMENT (g_value_get_object (&value));
-+#endif
-         GstElementFactory* factory = gst_element_get_factory(element);
-         if (factory) {
-           const char* klass = gst_element_factory_get_klass(factory);
--          GstPad* pad = gst_element_get_pad(element, "sink");
-+          GstPad* pad = gst_element_get_static_pad(element, "sink");
-           if (pad) {
--            GstCaps* caps = gst_pad_get_negotiated_caps(pad);
-+            GstCaps* caps;
-+
-+#if GST_VERSION_MAJOR >= 1
-+            caps = gst_pad_get_current_caps(pad);
-+#else
-+            caps = gst_pad_get_negotiated_caps(pad);
-+#endif
- 
-             if (caps) {
-               /* check for demuxers but ignore elements like id3demux */
-@@ -453,7 +491,11 @@ nsresult GStreamerReader::CheckSupportedFormats()
-           }
-         }
- 
-+#if GST_VERSION_MAJOR >= 1
-+        g_value_unset (&value);
-+#else
-         gst_object_unref(element);
-+#endif
-         done = unsupported;
-         break;
-       }
-@@ -477,6 +519,8 @@ nsresult GStreamerReader::ResetDecode()
- {
-   nsresult res = NS_OK;
- 
-+  LOG(PR_LOG_DEBUG, ("reset decode"));
-+
-   if (NS_FAILED(MediaDecoderReader::ResetDecode())) {
-     res = NS_ERROR_FAILURE;
-   }
-@@ -487,6 +531,11 @@ nsresult GStreamerReader::ResetDecode()
-   mVideoSinkBufferCount = 0;
-   mAudioSinkBufferCount = 0;
-   mReachedEos = false;
-+#if GST_VERSION_MAJOR >= 1
-+  mConfigureAlignment = true;
-+#endif
-+
-+  LOG(PR_LOG_DEBUG, ("reset decode done"));
- 
-   return res;
- }
-@@ -510,11 +559,11 @@ bool GStreamerReader::DecodeAudioData()
-         /* We have nothing decoded so it makes no sense to return to the state machine
-          * as it will call us back immediately, we'll return again and so on, wasting
-          * CPU cycles for no job done. So, block here until there is either video or
--         * audio data available 
-+         * audio data available
-         */
-         mon.Wait();
-         if (!mAudioSinkBufferCount) {
--          /* There is still no audio data available, so either there is video data or 
-+          /* There is still no audio data available, so either there is video data or
-            * something else has happened (Eos, etc...). Return to the state machine
-            * to process it.
-            */
-@@ -526,17 +575,34 @@ bool GStreamerReader::DecodeAudioData()
-       }
-     }
- 
-+#if GST_VERSION_MAJOR >= 1
-+    GstSample *sample = gst_app_sink_pull_sample(mAudioAppSink);
-+    buffer = gst_buffer_ref(gst_sample_get_buffer(sample));
-+    gst_sample_unref(sample);
-+#else
-     buffer = gst_app_sink_pull_buffer(mAudioAppSink);
-+#endif
-+
-     mAudioSinkBufferCount--;
-   }
- 
-   int64_t timestamp = GST_BUFFER_TIMESTAMP(buffer);
-   timestamp = gst_segment_to_stream_time(&mAudioSegment,
-       GST_FORMAT_TIME, timestamp);
-+
-   timestamp = GST_TIME_AS_USECONDS(timestamp);
- 
-   int64_t offset = GST_BUFFER_OFFSET(buffer);
-+  guint8* data;
-+#if GST_VERSION_MAJOR >= 1
-+  GstMapInfo info;
-+  gst_buffer_map(buffer, &info, GST_MAP_READ);
-+  unsigned int size = info.size;
-+  data = info.data;
-+#else
-   unsigned int size = GST_BUFFER_SIZE(buffer);
-+  data = GST_BUFFER_DATA(buffer);
-+#endif
-   int32_t frames = (size / sizeof(AudioDataValue)) / mInfo.mAudio.mChannels;
- 
-   typedef AudioCompactor::NativeCopy GstCopy;
-@@ -545,16 +611,20 @@ bool GStreamerReader::DecodeAudioData()
-                        mInfo.mAudio.mRate,
-                        frames,
-                        mInfo.mAudio.mChannels,
--                       GstCopy(GST_BUFFER_DATA(buffer),
-+                       GstCopy(data,
-                                size,
-                                mInfo.mAudio.mChannels));
-+#if GST_VERSION_MAJOR >= 1
-+  gst_buffer_unmap(buffer, &info);
-+#endif
-+
-   gst_buffer_unref(buffer);
- 
-   return true;
- }
- 
- bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip,
--                                         int64_t aTimeThreshold)
-+                                       int64_t aTimeThreshold)
- {
-   NS_ASSERTION(mDecoder->OnDecodeThread(), "Should be on decode thread.");
- 
-@@ -573,11 +643,11 @@ bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip,
-         /* We have nothing decoded so it makes no sense to return to the state machine
-          * as it will call us back immediately, we'll return again and so on, wasting
-          * CPU cycles for no job done. So, block here until there is either video or
--         * audio data available 
-+         * audio data available
-         */
-         mon.Wait();
-         if (!mVideoSinkBufferCount) {
--          /* There is still no video data available, so either there is audio data or 
-+          /* There is still no video data available, so either there is audio data or
-            * something else has happened (Eos, etc...). Return to the state machine
-            * to process it
-            */
-@@ -591,11 +661,17 @@ bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip,
- 
-     mDecoder->NotifyDecodedFrames(0, 1);
- 
-+#if GST_VERSION_MAJOR >= 1
-+    GstSample *sample = gst_app_sink_pull_sample(mVideoAppSink);
-+    buffer = gst_buffer_ref(gst_sample_get_buffer(sample));
-+    gst_sample_unref(sample);
-+#else
-     buffer = gst_app_sink_pull_buffer(mVideoAppSink);
-+#endif
-     mVideoSinkBufferCount--;
-   }
- 
--  bool isKeyframe = !GST_BUFFER_FLAG_IS_SET(buffer, GST_BUFFER_FLAG_DISCONT);
-+  bool isKeyframe = !GST_BUFFER_FLAG_IS_SET(buffer, GST_BUFFER_FLAG_DELTA_UNIT);
-   if ((aKeyFrameSkip && !isKeyframe)) {
-     gst_buffer_unref(buffer);
-     return true;
-@@ -611,10 +687,18 @@ bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip,
-                "frame has invalid timestamp");
- 
-   timestamp = GST_TIME_AS_USECONDS(timestamp);
-+  int64_t duration;
-+  if (GST_CLOCK_TIME_IS_VALID(GST_BUFFER_DURATION(buffer)))
-+    duration = GST_TIME_AS_USECONDS(GST_BUFFER_DURATION(buffer));
-+  else if (fpsNum && fpsDen)
-+    /* add 1-frame duration */
-+    duration = gst_util_uint64_scale(GST_USECOND, fpsDen, fpsNum);
-+
-   if (timestamp < aTimeThreshold) {
-     LOG(PR_LOG_DEBUG, ("skipping frame %" GST_TIME_FORMAT
-                        " threshold %" GST_TIME_FORMAT,
--                       GST_TIME_ARGS(timestamp), GST_TIME_ARGS(aTimeThreshold)));
-+                       GST_TIME_ARGS(timestamp * 1000),
-+                       GST_TIME_ARGS(aTimeThreshold * 1000)));
-     gst_buffer_unref(buffer);
-     return true;
-   }
-@@ -623,61 +707,36 @@ bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip,
-     /* no more frames */
-     return false;
- 
--  int64_t duration = 0;
--  if (GST_CLOCK_TIME_IS_VALID(GST_BUFFER_DURATION(buffer)))
--    duration = GST_TIME_AS_USECONDS(GST_BUFFER_DURATION(buffer));
--  else if (fpsNum && fpsDen)
--    /* 1-frame duration */
--    duration = gst_util_uint64_scale(GST_USECOND, fpsNum, fpsDen);
--
--  nsRefPtr<PlanarYCbCrImage> image;
--  GstMozVideoBufferData* bufferdata = reinterpret_cast<GstMozVideoBufferData*>
--      GST_IS_MOZ_VIDEO_BUFFER(buffer)?gst_moz_video_buffer_get_data(GST_MOZ_VIDEO_BUFFER(buffer)):nullptr;
--
--  if(bufferdata)
--    image = bufferdata->mImage;
-+#if GST_VERSION_MAJOR >= 1
-+  if (mConfigureAlignment && buffer->pool) {
-+    GstStructure *config = gst_buffer_pool_get_config(buffer->pool);
-+    GstVideoAlignment align;
-+    if (gst_buffer_pool_config_get_video_alignment(config, &align))
-+      gst_video_info_align(&mVideoInfo, &align);
-+    gst_structure_free(config);
-+    mConfigureAlignment = false;
-+  }
-+#endif
- 
-+  nsRefPtr<PlanarYCbCrImage> image = GetImageFromBuffer(buffer);
-   if (!image) {
-     /* Ugh, upstream is not calling gst_pad_alloc_buffer(). Fallback to
-      * allocating a PlanarYCbCrImage backed GstBuffer here and memcpy.
-      */
-     GstBuffer* tmp = nullptr;
--    AllocateVideoBufferFull(nullptr, GST_BUFFER_OFFSET(buffer),
--        GST_BUFFER_SIZE(buffer), nullptr, &tmp, image);
--
--    /* copy */
--    gst_buffer_copy_metadata(tmp, buffer, (GstBufferCopyFlags)GST_BUFFER_COPY_ALL);
--    memcpy(GST_BUFFER_DATA(tmp), GST_BUFFER_DATA(buffer),
--        GST_BUFFER_SIZE(tmp));
-+    CopyIntoImageBuffer(buffer, &tmp, image);
-     gst_buffer_unref(buffer);
-     buffer = tmp;
-   }
- 
--  guint8* data = GST_BUFFER_DATA(buffer);
--
--  int width = mPicture.width;
--  int height = mPicture.height;
--  GstVideoFormat format = mFormat;
--
--  VideoData::YCbCrBuffer b;
--  for(int i = 0; i < 3; i++) {
--    b.mPlanes[i].mData = data + gst_video_format_get_component_offset(format, i,
--        width, height);
--    b.mPlanes[i].mStride = gst_video_format_get_row_stride(format, i, width);
--    b.mPlanes[i].mHeight = gst_video_format_get_component_height(format,
--        i, height);
--    b.mPlanes[i].mWidth = gst_video_format_get_component_width(format,
--        i, width);
--    b.mPlanes[i].mOffset = 0;
--    b.mPlanes[i].mSkip = 0;
--  }
--
--  isKeyframe = !GST_BUFFER_FLAG_IS_SET(buffer, GST_BUFFER_FLAG_DELTA_UNIT);
-   int64_t offset = mDecoder->GetResource()->Tell(); // Estimate location in media.
--  VideoData* video = VideoData::Create(mInfo.mVideo, image, offset,
--                                       timestamp, duration, b,
--                                       isKeyframe, -1, mPicture);
-+  VideoData* video = VideoData::CreateFromImage(mInfo.mVideo,
-+                                                mDecoder->GetImageContainer(),
-+                                                offset, timestamp, duration,
-+                                                static_cast<Image*>(image.get()),
-+                                                isKeyframe, -1, mPicture);
-   mVideoQueue.Push(video);
-+
-   gst_buffer_unref(buffer);
- 
-   return true;
-@@ -700,6 +759,10 @@ nsresult GStreamerReader::Seek(int64_t aTarget,
-     return NS_ERROR_FAILURE;
-   }
-   LOG(PR_LOG_DEBUG, ("seek succeeded"));
-+  GstMessage* message = gst_bus_timed_pop_filtered(mBus, GST_CLOCK_TIME_NONE,
-+               (GstMessageType)(GST_MESSAGE_ASYNC_DONE | GST_MESSAGE_ERROR));
-+  gst_message_unref(message);
-+  LOG(PR_LOG_DEBUG, ("seek completed"));
- 
-   return DecodeToTarget(aTarget);
- }
-@@ -711,7 +774,9 @@ nsresult GStreamerReader::GetBuffered(dom::TimeRanges* aBuffered,
-     return NS_OK;
-   }
- 
-+#if GST_VERSION_MAJOR == 0
-   GstFormat format = GST_FORMAT_TIME;
-+#endif
-   MediaResource* resource = mDecoder->GetResource();
-   nsTArray<MediaByteRange> ranges;
-   resource->GetCachedRanges(ranges);
-@@ -733,12 +798,21 @@ nsresult GStreamerReader::GetBuffered(dom::TimeRanges* aBuffered,
-     int64_t endOffset = ranges[index].mEnd;
-     gint64 startTime, endTime;
- 
-+#if GST_VERSION_MAJOR >= 1
-+    if (!gst_element_query_convert(GST_ELEMENT(mPlayBin), GST_FORMAT_BYTES,
-+      startOffset, GST_FORMAT_TIME, &startTime))
-+      continue;
-+    if (!gst_element_query_convert(GST_ELEMENT(mPlayBin), GST_FORMAT_BYTES,
-+      endOffset, GST_FORMAT_TIME, &endTime))
-+      continue;
-+#else
-     if (!gst_element_query_convert(GST_ELEMENT(mPlayBin), GST_FORMAT_BYTES,
-       startOffset, &format, &startTime) || format != GST_FORMAT_TIME)
-       continue;
-     if (!gst_element_query_convert(GST_ELEMENT(mPlayBin), GST_FORMAT_BYTES,
-       endOffset, &format, &endTime) || format != GST_FORMAT_TIME)
-       continue;
-+#endif
- 
-     double start = (double) GST_TIME_AS_USECONDS (startTime) / GST_MSECOND;
-     double end = (double) GST_TIME_AS_USECONDS (endTime) / GST_MSECOND;
-@@ -757,7 +831,13 @@ void GStreamerReader::ReadAndPushData(guint aLength)
-   nsresult rv = NS_OK;
- 
-   GstBuffer* buffer = gst_buffer_new_and_alloc(aLength);
-+#if GST_VERSION_MAJOR >= 1
-+  GstMapInfo info;
-+  gst_buffer_map(buffer, &info, GST_MAP_WRITE);
-+  guint8 *data = info.data;
-+#else
-   guint8* data = GST_BUFFER_DATA(buffer);
-+#endif
-   uint32_t size = 0, bytesRead = 0;
-   while(bytesRead < aLength) {
-     rv = resource->Read(reinterpret_cast<char*>(data + bytesRead),
-@@ -768,14 +848,19 @@ void GStreamerReader::ReadAndPushData(guint aLength)
-     bytesRead += size;
-   }
- 
-+#if GST_VERSION_MAJOR >= 1
-+  gst_buffer_unmap(buffer, &info);
-+  gst_buffer_set_size(buffer, bytesRead);
-+#else
-   GST_BUFFER_SIZE(buffer) = bytesRead;
-+#endif
- 
-   GstFlowReturn ret = gst_app_src_push_buffer(mSource, gst_buffer_ref(buffer));
-   if (ret != GST_FLOW_OK) {
-     LOG(PR_LOG_ERROR, ("ReadAndPushData push ret %s", gst_flow_get_name(ret)));
-   }
- 
--  if (GST_BUFFER_SIZE (buffer) < aLength) {
-+  if (bytesRead < aLength) {
-     /* If we read less than what we wanted, we reached the end */
-     gst_app_src_end_of_stream(mSource);
-   }
-@@ -788,8 +873,13 @@ int64_t GStreamerReader::QueryDuration()
-   gint64 duration = 0;
-   GstFormat format = GST_FORMAT_TIME;
- 
-+#if GST_VERSION_MAJOR >= 1
-+  if (gst_element_query_duration(GST_ELEMENT(mPlayBin),
-+      format, &duration)) {
-+#else
-   if (gst_element_query_duration(GST_ELEMENT(mPlayBin),
-       &format, &duration)) {
-+#endif
-     if (format == GST_FORMAT_TIME) {
-       LOG(PR_LOG_DEBUG, ("pipeline duration %" GST_TIME_FORMAT,
-             GST_TIME_ARGS (duration)));
-@@ -868,109 +958,6 @@ gboolean GStreamerReader::SeekData(GstAppSrc* aSrc, guint64 aOffset)
-   return NS_SUCCEEDED(rv);
- }
- 
--gboolean GStreamerReader::EventProbeCb(GstPad* aPad,
--                                         GstEvent* aEvent,
--                                         gpointer aUserData)
--{
--  GStreamerReader* reader = reinterpret_cast<GStreamerReader*>(aUserData);
--  return reader->EventProbe(aPad, aEvent);
--}
--
--gboolean GStreamerReader::EventProbe(GstPad* aPad, GstEvent* aEvent)
--{
--  GstElement* parent = GST_ELEMENT(gst_pad_get_parent(aPad));
--  switch(GST_EVENT_TYPE(aEvent)) {
--    case GST_EVENT_NEWSEGMENT:
--    {
--      gboolean update;
--      gdouble rate;
--      GstFormat format;
--      gint64 start, stop, position;
--      GstSegment* segment;
--
--      /* Store the segments so we can convert timestamps to stream time, which
--       * is what the upper layers sync on.
--       */
--      ReentrantMonitorAutoEnter mon(mGstThreadsMonitor);
--      gst_event_parse_new_segment(aEvent, &update, &rate, &format,
--          &start, &stop, &position);
--      if (parent == GST_ELEMENT(mVideoAppSink))
--        segment = &mVideoSegment;
--      else
--        segment = &mAudioSegment;
--      gst_segment_set_newsegment(segment, update, rate, format,
--          start, stop, position);
--      break;
--    }
--    case GST_EVENT_FLUSH_STOP:
--      /* Reset on seeks */
--      ResetDecode();
--      break;
--    default:
--      break;
--  }
--  gst_object_unref(parent);
--
--  return TRUE;
--}
--
--GstFlowReturn GStreamerReader::AllocateVideoBufferFull(GstPad* aPad,
--                                                       guint64 aOffset,
--                                                       guint aSize,
--                                                       GstCaps* aCaps,
--                                                       GstBuffer** aBuf,
--                                                       nsRefPtr<PlanarYCbCrImage>& aImage)
--{
--  /* allocate an image using the container */
--  ImageContainer* container = mDecoder->GetImageContainer();
--  if (!container) {
--    // We don't have an ImageContainer. We probably belong to an <audio>
--    // element.
--    return GST_FLOW_NOT_SUPPORTED;
--  }
--  PlanarYCbCrImage* img =
--    reinterpret_cast<PlanarYCbCrImage*>(
--      container->CreateImage(ImageFormat::PLANAR_YCBCR).get());
--  nsRefPtr<PlanarYCbCrImage> image = dont_AddRef(img);
--
--  /* prepare a GstBuffer pointing to the underlying PlanarYCbCrImage buffer */
--  GstBuffer* buf = GST_BUFFER(gst_moz_video_buffer_new());
--  GST_BUFFER_SIZE(buf) = aSize;
--  /* allocate the actual YUV buffer */
--  GST_BUFFER_DATA(buf) = image->AllocateAndGetNewBuffer(aSize);
--
--  aImage = image;
--
--  /* create a GstMozVideoBufferData to hold the image */
--  GstMozVideoBufferData* bufferdata = new GstMozVideoBufferData(image);
--
--  /* Attach bufferdata to our GstMozVideoBuffer, it will take care to free it */
--  gst_moz_video_buffer_set_data(GST_MOZ_VIDEO_BUFFER(buf), bufferdata);
--
--  *aBuf = buf;
--  return GST_FLOW_OK;
--}
--
--GstFlowReturn GStreamerReader::AllocateVideoBufferCb(GstPad* aPad,
--                                                     guint64 aOffset,
--                                                     guint aSize,
--                                                     GstCaps* aCaps,
--                                                     GstBuffer** aBuf)
--{
--  GStreamerReader* reader = reinterpret_cast<GStreamerReader*>(gst_pad_get_element_private(aPad));
--  return reader->AllocateVideoBuffer(aPad, aOffset, aSize, aCaps, aBuf);
--}
--
--GstFlowReturn GStreamerReader::AllocateVideoBuffer(GstPad* aPad,
--                                                   guint64 aOffset,
--                                                   guint aSize,
--                                                   GstCaps* aCaps,
--                                                   GstBuffer** aBuf)
--{
--  nsRefPtr<PlanarYCbCrImage> image;
--  return AllocateVideoBufferFull(aPad, aOffset, aSize, aCaps, aBuf, image);
--}
--
- GstFlowReturn GStreamerReader::NewPrerollCb(GstAppSink* aSink,
-                                               gpointer aUserData)
- {
-@@ -987,8 +974,12 @@ void GStreamerReader::AudioPreroll()
- {
-   /* The first audio buffer has reached the audio sink. Get rate and channels */
-   LOG(PR_LOG_DEBUG, ("Audio preroll"));
--  GstPad* sinkpad = gst_element_get_pad(GST_ELEMENT(mAudioAppSink), "sink");
-+  GstPad* sinkpad = gst_element_get_static_pad(GST_ELEMENT(mAudioAppSink), "sink");
-+#if GST_VERSION_MAJOR >= 1
-+  GstCaps *caps = gst_pad_get_current_caps(sinkpad);
-+#else
-   GstCaps* caps = gst_pad_get_negotiated_caps(sinkpad);
-+#endif
-   GstStructure* s = gst_caps_get_structure(caps, 0);
-   mInfo.mAudio.mRate = mInfo.mAudio.mChannels = 0;
-   gst_structure_get_int(s, "rate", (gint*) &mInfo.mAudio.mRate);
-@@ -1006,9 +997,18 @@ void GStreamerReader::VideoPreroll()
- {
-   /* The first video buffer has reached the video sink. Get width and height */
-   LOG(PR_LOG_DEBUG, ("Video preroll"));
--  GstPad* sinkpad = gst_element_get_pad(GST_ELEMENT(mVideoAppSink), "sink");
-+  GstPad* sinkpad = gst_element_get_static_pad(GST_ELEMENT(mVideoAppSink), "sink");
-+#if GST_VERSION_MAJOR >= 1
-+  GstCaps* caps = gst_pad_get_current_caps(sinkpad);
-+  memset (&mVideoInfo, 0, sizeof (mVideoInfo));
-+  gst_video_info_from_caps(&mVideoInfo, caps);
-+  mFormat = mVideoInfo.finfo->format;
-+  mPicture.width = mVideoInfo.width;
-+  mPicture.height = mVideoInfo.height;
-+#else
-   GstCaps* caps = gst_pad_get_negotiated_caps(sinkpad);
-   gst_video_format_parse_caps(caps, &mFormat, &mPicture.width, &mPicture.height);
-+#endif
-   GstStructure* structure = gst_caps_get_structure(caps, 0);
-   gst_structure_get_fraction(structure, "framerate", &fpsNum, &fpsDen);
-   NS_ASSERTION(mPicture.width && mPicture.height, "invalid video resolution");
-@@ -1037,6 +1037,7 @@ void GStreamerReader::NewVideoBuffer()
-   /* We have a new video buffer queued in the video sink. Increment the counter
-    * and notify the decode thread potentially blocked in DecodeVideoFrame
-    */
-+
-   mDecoder->NotifyDecodedFrames(1, 0);
-   mVideoSinkBufferCount++;
-   mon.NotifyAll();
-@@ -1173,5 +1174,199 @@ void GStreamerReader::NotifyDataArrived(const char *aBuffer,
-   }
- }
- 
-+#if GST_VERSION_MAJOR >= 1
-+GstCaps* GStreamerReader::BuildAudioSinkCaps()
-+{
-+  GstCaps* caps = gst_caps_from_string("audio/x-raw, channels={1,2}");
-+  const char* format;
-+#ifdef MOZ_SAMPLE_TYPE_FLOAT32
-+#ifdef IS_LITTLE_ENDIAN
-+  format = "F32LE";
-+#else
-+  format = "F32BE";
-+#endif
-+#else /* !MOZ_SAMPLE_TYPE_FLOAT32 */
-+#ifdef IS_LITTLE_ENDIAN
-+  format = "S16LE";
-+#else
-+  format = "S16BE";
-+#endif
-+#endif
-+  gst_caps_set_simple(caps, "format", G_TYPE_STRING, format, nullptr);
-+
-+  return caps;
-+}
-+
-+void GStreamerReader::InstallPadCallbacks()
-+{
-+  GstPad* sinkpad = gst_element_get_static_pad(GST_ELEMENT(mVideoAppSink), "sink");
-+
-+  gst_pad_add_probe(sinkpad,
-+      (GstPadProbeType) (GST_PAD_PROBE_TYPE_SCHEDULING |
-+        GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM |
-+        GST_PAD_PROBE_TYPE_EVENT_UPSTREAM |
-+        GST_PAD_PROBE_TYPE_EVENT_FLUSH),
-+      &GStreamerReader::EventProbeCb, this, nullptr);
-+  gst_pad_add_probe(sinkpad, GST_PAD_PROBE_TYPE_QUERY_DOWNSTREAM,
-+      GStreamerReader::QueryProbeCb, nullptr, nullptr);
-+
-+  gst_pad_set_element_private(sinkpad, this);
-+  gst_object_unref(sinkpad);
-+
-+  sinkpad = gst_element_get_static_pad(GST_ELEMENT(mAudioAppSink), "sink");
-+  gst_pad_add_probe(sinkpad,
-+      (GstPadProbeType) (GST_PAD_PROBE_TYPE_SCHEDULING |
-+        GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM |
-+        GST_PAD_PROBE_TYPE_EVENT_UPSTREAM |
-+        GST_PAD_PROBE_TYPE_EVENT_FLUSH),
-+      &GStreamerReader::EventProbeCb, this, nullptr);
-+  gst_object_unref(sinkpad);
-+}
-+
-+GstPadProbeReturn GStreamerReader::EventProbeCb(GstPad *aPad,
-+                                                GstPadProbeInfo *aInfo,
-+                                                gpointer aUserData)
-+{
-+  GStreamerReader *reader = (GStreamerReader *) aUserData;
-+  GstEvent *aEvent = (GstEvent *)aInfo->data;
-+  return reader->EventProbe(aPad, aEvent);
-+}
-+
-+GstPadProbeReturn GStreamerReader::EventProbe(GstPad *aPad, GstEvent *aEvent)
-+{
-+  GstElement* parent = GST_ELEMENT(gst_pad_get_parent(aPad));
-+
-+  LOG(PR_LOG_DEBUG, ("event probe %s", GST_EVENT_TYPE_NAME (aEvent)));
-+
-+  switch(GST_EVENT_TYPE(aEvent)) {
-+    case GST_EVENT_SEGMENT:
-+    {
-+      const GstSegment *newSegment;
-+      GstSegment* segment;
-+
-+      /* Store the segments so we can convert timestamps to stream time, which
-+       * is what the upper layers sync on.
-+       */
-+      ReentrantMonitorAutoEnter mon(mGstThreadsMonitor);
-+#if GST_VERSION_MINOR <= 1 && GST_VERSION_MICRO < 1
-+      ResetDecode();
-+#endif
-+      gst_event_parse_segment(aEvent, &newSegment);
-+      if (parent == GST_ELEMENT(mVideoAppSink))
-+        segment = &mVideoSegment;
-+      else
-+        segment = &mAudioSegment;
-+      gst_segment_copy_into (newSegment, segment);
-+      break;
-+    }
-+    case GST_EVENT_FLUSH_STOP:
-+      /* Reset on seeks */
-+      ResetDecode();
-+      break;
-+    default:
-+      break;
-+  }
-+  gst_object_unref(parent);
-+
-+  return GST_PAD_PROBE_OK;
-+}
-+
-+GstPadProbeReturn GStreamerReader::QueryProbeCb(GstPad* aPad, GstPadProbeInfo* aInfo, gpointer aUserData)
-+{
-+  GStreamerReader* reader = reinterpret_cast<GStreamerReader*>(gst_pad_get_element_private(aPad));
-+  return reader->QueryProbe(aPad, aInfo, aUserData);
-+}
-+
-+GstPadProbeReturn GStreamerReader::QueryProbe(GstPad* aPad, GstPadProbeInfo* aInfo, gpointer aUserData)
-+{
-+  GstQuery *query = gst_pad_probe_info_get_query(aInfo);
-+  GstPadProbeReturn ret = GST_PAD_PROBE_OK;
-+
-+  switch (GST_QUERY_TYPE (query)) {
-+    case GST_QUERY_ALLOCATION:
-+      GstCaps *caps;
-+      GstVideoInfo info;
-+      gboolean need_pool;
-+
-+      gst_query_parse_allocation(query, &caps, &need_pool);
-+      gst_video_info_init(&info);
-+      gst_video_info_from_caps(&info, caps);
-+      gst_query_add_allocation_param(query, mAllocator, nullptr);
-+      gst_query_add_allocation_pool(query, mBufferPool, info.size, 0, 0);
-+      gst_query_add_allocation_meta(query, GST_VIDEO_META_API_TYPE, nullptr);
-+      break;
-+    default:
-+      break;
-+  }
-+
-+  return ret;
-+}
-+
-+void GStreamerReader::ImageDataFromVideoFrame(GstVideoFrame *aFrame,
-+                                              PlanarYCbCrImage::Data *aData)
-+{
-+  NS_ASSERTION(GST_VIDEO_INFO_IS_YUV(&mVideoInfo),
-+               "Non-YUV video frame formats not supported");
-+  NS_ASSERTION(GST_VIDEO_FRAME_N_COMPONENTS(aFrame) == 3,
-+               "Unsupported number of components in video frame");
-+
-+  aData->mPicX = aData->mPicY = 0;
-+  aData->mPicSize = gfx::IntSize(mPicture.width, mPicture.height);
-+  aData->mStereoMode = StereoMode::MONO;
-+
-+  aData->mYChannel = GST_VIDEO_FRAME_COMP_DATA(aFrame, 0);
-+  aData->mYStride = GST_VIDEO_FRAME_COMP_STRIDE(aFrame, 0);
-+  aData->mYSize = gfx::IntSize(GST_VIDEO_FRAME_COMP_WIDTH(aFrame, 0),
-+                          GST_VIDEO_FRAME_COMP_HEIGHT(aFrame, 0));
-+  aData->mYSkip = GST_VIDEO_FRAME_COMP_PSTRIDE(aFrame, 0) - 1;
-+  aData->mCbCrStride = GST_VIDEO_FRAME_COMP_STRIDE(aFrame, 1);
-+  aData->mCbCrSize = gfx::IntSize(GST_VIDEO_FRAME_COMP_WIDTH(aFrame, 1),
-+                             GST_VIDEO_FRAME_COMP_HEIGHT(aFrame, 1));
-+  aData->mCbChannel = GST_VIDEO_FRAME_COMP_DATA(aFrame, 1);
-+  aData->mCrChannel = GST_VIDEO_FRAME_COMP_DATA(aFrame, 2);
-+  aData->mCbSkip = GST_VIDEO_FRAME_COMP_PSTRIDE(aFrame, 1) - 1;
-+  aData->mCrSkip = GST_VIDEO_FRAME_COMP_PSTRIDE(aFrame, 2) - 1;
-+}
-+
-+nsRefPtr<PlanarYCbCrImage> GStreamerReader::GetImageFromBuffer(GstBuffer* aBuffer)
-+{
-+  nsRefPtr<PlanarYCbCrImage> image = nullptr;
-+
-+  if (gst_buffer_n_memory(aBuffer) == 1) {
-+    GstMemory* mem = gst_buffer_peek_memory(aBuffer, 0);
-+    if (GST_IS_MOZ_GFX_MEMORY_ALLOCATOR(mem->allocator)) {
-+      image = moz_gfx_memory_get_image(mem);
-+
-+      GstVideoFrame frame;
-+      gst_video_frame_map(&frame, &mVideoInfo, aBuffer, GST_MAP_READ);
-+      PlanarYCbCrImage::Data data;
-+      ImageDataFromVideoFrame(&frame, &data);
-+      image->SetDataNoCopy(data);
-+      gst_video_frame_unmap(&frame);
-+    }
-+  }
-+
-+  return image;
-+}
-+
-+void GStreamerReader::CopyIntoImageBuffer(GstBuffer* aBuffer,
-+                                          GstBuffer** aOutBuffer,
-+                                          nsRefPtr<PlanarYCbCrImage> &image)
-+{
-+  *aOutBuffer = gst_buffer_new_allocate(mAllocator, gst_buffer_get_size(aBuffer), nullptr);
-+  GstMemory *mem = gst_buffer_peek_memory(*aOutBuffer, 0);
-+  GstMapInfo map_info;
-+  gst_memory_map(mem, &map_info, GST_MAP_WRITE);
-+  gst_buffer_extract(aBuffer, 0, map_info.data, gst_buffer_get_size(aBuffer));
-+  gst_memory_unmap(mem, &map_info);
-+
-+  /* create a new gst buffer with the newly created memory and copy the
-+   * metadata over from the incoming buffer */
-+  gst_buffer_copy_into(*aOutBuffer, aBuffer,
-+      (GstBufferCopyFlags)(GST_BUFFER_COPY_METADATA), 0, -1);
-+  image = GetImageFromBuffer(*aOutBuffer);
-+}
-+#endif
-+
- } // namespace mozilla
- 
-diff --git content/media/gstreamer/GStreamerReader.h content/media/gstreamer/GStreamerReader.h
-index 1e30bed..6a90702 100644
---- content/media/gstreamer/GStreamerReader.h
-+++ content/media/gstreamer/GStreamerReader.h
-@@ -22,6 +22,7 @@
- 
- #include "MediaDecoderReader.h"
- #include "MP3FrameParser.h"
-+#include "ImageContainer.h"
- #include "nsRect.h"
- 
- namespace mozilla {
-@@ -30,10 +31,6 @@ namespace dom {
- class TimeRanges;
- }
- 
--namespace layers {
--class PlanarYCbCrImage;
--}
--
- class AbstractMediaDecoder;
- 
- class GStreamerReader : public MediaDecoderReader
-@@ -67,10 +64,20 @@ public:
-     return mInfo.HasVideo();
-   }
- 
-+  layers::ImageContainer* GetImageContainer() { return mDecoder->GetImageContainer(); }
-+
- private:
- 
-   void ReadAndPushData(guint aLength);
-   int64_t QueryDuration();
-+  nsRefPtr<layers::PlanarYCbCrImage> GetImageFromBuffer(GstBuffer* aBuffer);
-+  void CopyIntoImageBuffer(GstBuffer *aBuffer, GstBuffer** aOutBuffer, nsRefPtr<layers::PlanarYCbCrImage> &image);
-+  GstCaps* BuildAudioSinkCaps();
-+  void InstallPadCallbacks();
-+
-+#if GST_VERSION_MAJOR >= 1
-+  void ImageDataFromVideoFrame(GstVideoFrame *aFrame, layers::PlanarYCbCrImage::Data *aData);
-+#endif
- 
-   /* Called once the pipeline is setup to check that the stream only contains
-    * supported formats
-@@ -105,20 +112,31 @@ private:
-   gboolean SeekData(GstAppSrc* aSrc, guint64 aOffset);
- 
-   /* Called when events reach the sinks. See inline comments */
-+#if GST_VERSION_MAJOR == 1
-+  static GstPadProbeReturn EventProbeCb(GstPad *aPad, GstPadProbeInfo *aInfo, gpointer aUserData);
-+  GstPadProbeReturn EventProbe(GstPad *aPad, GstEvent *aEvent);
-+#else
-   static gboolean EventProbeCb(GstPad* aPad, GstEvent* aEvent, gpointer aUserData);
-   gboolean EventProbe(GstPad* aPad, GstEvent* aEvent);
-+#endif
- 
--  /* Called when elements in the video branch of the pipeline call
--   * gst_pad_alloc_buffer(). Used to provide PlanarYCbCrImage backed GstBuffers
--   * to the pipeline so that a memory copy can be avoided when handling YUV
--   * buffers from the pipeline to the gfx side.
-+  /* Called when the video part of the pipeline allocates buffers. Used to
-+   * provide PlanarYCbCrImage backed GstBuffers to the pipeline so that a memory
-+   * copy can be avoided when handling YUV buffers from the pipeline to the gfx
-+   * side.
-    */
-+#if GST_VERSION_MAJOR == 1
-+  static GstPadProbeReturn QueryProbeCb(GstPad *aPad, GstPadProbeInfo *aInfo, gpointer aUserData);
-+  GstPadProbeReturn QueryProbe(GstPad *aPad, GstPadProbeInfo *aInfo, gpointer aUserData);
-+#else
-   static GstFlowReturn AllocateVideoBufferCb(GstPad* aPad, guint64 aOffset, guint aSize,
-                                              GstCaps* aCaps, GstBuffer** aBuf);
-   GstFlowReturn AllocateVideoBufferFull(GstPad* aPad, guint64 aOffset, guint aSize,
-                                      GstCaps* aCaps, GstBuffer** aBuf, nsRefPtr<layers::PlanarYCbCrImage>& aImage);
-   GstFlowReturn AllocateVideoBuffer(GstPad* aPad, guint64 aOffset, guint aSize,
-                                      GstCaps* aCaps, GstBuffer** aBuf);
-+#endif
-+
- 
-   /* Called when the pipeline is prerolled, that is when at start or after a
-    * seek, the first audio and video buffers are queued in the sinks.
-@@ -167,6 +185,11 @@ private:
-   bool mUseParserDuration;
-   int64_t mLastParserDuration;
- 
-+#if GST_VERSION_MAJOR >= 1
-+  GstAllocator *mAllocator;
-+  GstBufferPool *mBufferPool;
-+  GstVideoInfo mVideoInfo;
-+#endif
-   GstElement* mPlayBin;
-   GstBus* mBus;
-   GstAppSrc* mSource;
-@@ -197,6 +220,9 @@ private:
-    * DecodeAudioData and DecodeVideoFrame should not expect any more data
-    */
-   bool mReachedEos;
-+#if GST_VERSION_MAJOR >= 1
-+  bool mConfigureAlignment;
-+#endif
-   int fpsNum;
-   int fpsDen;
- };
-diff --git content/media/gstreamer/moz.build content/media/gstreamer/moz.build
-index 7d51bf5..a3c1856 100644
---- content/media/gstreamer/moz.build
-+++ content/media/gstreamer/moz.build
-@@ -15,10 +15,19 @@ SOURCES += [
-     'GStreamerDecoder.cpp',
-     'GStreamerFormatHelper.cpp',
-     'GStreamerLoader.cpp',
--    'GStreamerMozVideoBuffer.cpp',
-     'GStreamerReader.cpp',
- ]
- 
-+if CONFIG['GST_API_VERSION'] == '1.0':
-+    SOURCES += [
-+        'GStreamerAllocator.cpp',
-+    ]
-+else:
-+    SOURCES += [
-+        'GStreamerMozVideoBuffer.cpp',
-+        'GStreamerReader-0.10.cpp',
-+    ]
-+
- FAIL_ON_WARNINGS = True
- 
- FINAL_LIBRARY = 'gklayout'
-diff --git content/media/test/manifest.js content/media/test/manifest.js
-index 6e39753..3c8c3b9 100644
---- content/media/test/manifest.js
-+++ content/media/test/manifest.js
-@@ -365,9 +365,9 @@ var gUnseekableTests = [
-   { name:"bogus.duh", type:"bogus/duh"}
- ];
- // Unfortunately big-buck-bunny-unseekable.mp4 is doesn't play on Windows 7, so
--// only include it in the unseekable tests if we're on later versions of Windows.
--if (navigator.userAgent.indexOf("Windows") == -1 ||
--    IsWindows8OrLater()) {
-+// only include it in the unseekable tests if we're on later versions of Windows. 
-+// This test actually only passes on win8 at the moment.
-+if (navigator.userAgent.indexOf("Windows") != -1 && IsWindows8OrLater()) {
-   gUnseekableTests = gUnseekableTests.concat([
-     { name:"big-buck-bunny-unseekable.mp4", type:"video/mp4" }
-   ]);

Modified: trunk/www/firefox/Makefile
==============================================================================
--- trunk/www/firefox/Makefile	Thu Feb 13 06:31:24 2014	(r1495)
+++ trunk/www/firefox/Makefile	Fri Feb 14 06:30:24 2014	(r1496)
@@ -2,7 +2,7 @@
 # $FreeBSD: head/www/firefox/Makefile 339634 2014-01-13 21:00:02Z rene $
 
 PORTNAME=	firefox
-DISTVERSION=	28.0b2
+DISTVERSION=	28.0b3
 PORTEPOCH=	1
 CATEGORIES=	www ipv6
 MASTER_SITES=	MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \

Modified: trunk/www/firefox/distinfo
==============================================================================
--- trunk/www/firefox/distinfo	Thu Feb 13 06:31:24 2014	(r1495)
+++ trunk/www/firefox/distinfo	Fri Feb 14 06:30:24 2014	(r1496)
@@ -1,2 +1,2 @@
-SHA256 (firefox-28.0b2.source.tar.bz2) = ba1bf5ab94c6d7c4c113328f966461cabd9ce96882285ba0c971f6e4dd2e40e2
-SIZE (firefox-28.0b2.source.tar.bz2) = 134778022
+SHA256 (firefox-28.0b3.source.tar.bz2) = 08251fda4bb37f89034806204f2eb8e2f9b6845e308938c28bb13de0d4a2a0a3
+SIZE (firefox-28.0b3.source.tar.bz2) = 134919285

Deleted: trunk/www/firefox/files/patch-bug970031
==============================================================================
--- trunk/www/firefox/files/patch-bug970031	Fri Feb 14 06:30:24 2014	(r1495)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,13 +0,0 @@
-diff --git xpcom/reflect/xptcall/src/md/unix/moz.build xpcom/reflect/xptcall/src/md/unix/moz.build
-index 5f88066..bd2a94f 100644
---- xpcom/reflect/xptcall/src/md/unix/moz.build
-+++ xpcom/reflect/xptcall/src/md/unix/moz.build
-@@ -256,7 +256,7 @@ if CONFIG['OS_ARCH'] == 'OpenBSD' and CONFIG['OS_TEST'] == 'sparc':
-         'xptcstubs_sparc_openbsd.cpp',
-     ]
- 
--if CONFIG['OS_ARCH'] == 'OpenBSD' and CONFIG['OS_TEST'] == 'sparc64':
-+if CONFIG['OS_ARCH'] in ('OpenBSD', 'FreeBSD') and CONFIG['OS_TEST'] == 'sparc64':
-     SOURCES += [
-         'xptcinvoke_asm_sparc64_openbsd.s',
-         'xptcinvoke_sparc64_openbsd.cpp',

Modified: trunk/www/linux-firefox/Makefile
==============================================================================
--- trunk/www/linux-firefox/Makefile	Thu Feb 13 06:31:24 2014	(r1495)
+++ trunk/www/linux-firefox/Makefile	Fri Feb 14 06:30:24 2014	(r1496)
@@ -2,7 +2,7 @@
 # $FreeBSD: head/www/linux-firefox/Makefile 336446 2013-12-14 13:42:06Z flo $
 
 PORTNAME=	firefox
-DISTVERSION=	28.0b2
+DISTVERSION=	28.0b3
 PORTEPOCH=	1
 CATEGORIES=	www ipv6
 MASTER_SITES=	MOZILLA/${PORTNAME}/releases/${DISTVERSION}/linux-i686/en-US

Modified: trunk/www/linux-firefox/distinfo
==============================================================================
--- trunk/www/linux-firefox/distinfo	Thu Feb 13 06:31:24 2014	(r1495)
+++ trunk/www/linux-firefox/distinfo	Fri Feb 14 06:30:24 2014	(r1496)
@@ -1,5 +1,5 @@
-SHA256 (firefox-28.0b2.tar.bz2) = f7e3aa99730dccc7a74a4db3a6cc87251adca8d7562e3ae6796d9cd702d14570
-SIZE (firefox-28.0b2.tar.bz2) = 31227192
+SHA256 (firefox-28.0b3.tar.bz2) = 8987f915e6234c36656eee1d224b4cb0f6f6f814194cea62d2fedea9be7e5b9c
+SIZE (firefox-28.0b3.tar.bz2) = 31133074
 SHA256 (glib2-2.22.2-2.fc12.i686.rpm) = e3b459c245ec14e7248e9de4b506963a4773407f3e58835db5070d0ed02ecc99
 SIZE (glib2-2.22.2-2.fc12.i686.rpm) = 1162908
 SHA256 (gtk2-2.18.3-19.fc12.i686.rpm) = aea9cf7ffe9c8dae0faa2bf3d2aa1b2117c55dce03da72dcce8c268279ec0a4b

Modified: trunk/www/linux-seamonkey/Makefile
==============================================================================
--- trunk/www/linux-seamonkey/Makefile	Thu Feb 13 06:31:24 2014	(r1495)
+++ trunk/www/linux-seamonkey/Makefile	Fri Feb 14 06:30:24 2014	(r1496)
@@ -2,7 +2,7 @@
 # $FreeBSD: head/www/linux-seamonkey/Makefile 336446 2013-12-14 13:42:06Z flo $
 
 PORTNAME=	seamonkey
-DISTVERSION=	2.24
+DISTVERSION=	2.25b1
 CATEGORIES=	www mail news editors irc ipv6
 MASTER_SITES=	MOZILLA/${PORTNAME}/releases/${DISTVERSION}/linux-i686/en-US
 

Modified: trunk/www/linux-seamonkey/distinfo
==============================================================================
--- trunk/www/linux-seamonkey/distinfo	Thu Feb 13 06:31:24 2014	(r1495)
+++ trunk/www/linux-seamonkey/distinfo	Fri Feb 14 06:30:24 2014	(r1496)
@@ -1,2 +1,2 @@
-SHA256 (seamonkey-2.24.tar.bz2) = ed4ad37ff9c5d0d36f66bf25b272698e6d5bcf828cfac694d15467d4a4014ce5
-SIZE (seamonkey-2.24.tar.bz2) = 29803592
+SHA256 (seamonkey-2.25b1.tar.bz2) = 0c65c629238eece9c834bcfff33c4d8f242b7f6d164676bdf961a5053eef90d2
+SIZE (seamonkey-2.25b1.tar.bz2) = 30371668

Modified: trunk/www/seamonkey-i18n/Makefile
==============================================================================
--- trunk/www/seamonkey-i18n/Makefile	Thu Feb 13 06:31:24 2014	(r1495)
+++ trunk/www/seamonkey-i18n/Makefile	Fri Feb 14 06:30:24 2014	(r1496)
@@ -2,7 +2,7 @@
 # $FreeBSD: head/www/seamonkey-i18n/Makefile 336446 2013-12-14 13:42:06Z flo $
 
 PORTNAME=	seamonkey-i18n
-PORTVERSION=	2.24
+PORTVERSION=	2.25b1
 CATEGORIES=	www mail news editors irc
 MASTER_SITES=	MOZILLA/${PORTNAME:S|-i18n||}/releases/${PORTVERSION}/langpack
 PKGNAMEPREFIX=

Modified: trunk/www/seamonkey-i18n/distinfo
==============================================================================
--- trunk/www/seamonkey-i18n/distinfo	Thu Feb 13 06:31:24 2014	(r1495)
+++ trunk/www/seamonkey-i18n/distinfo	Fri Feb 14 06:30:24 2014	(r1496)
@@ -1,54 +1,54 @@
-SHA256 (xpi/seamonkey-i18n-2.24/seamonkey-2.24.be.langpack.xpi) = 73048f93f2bc1de227d78f4baacced8ed481d0effc1d7b3b1073464dcdb7d872
-SIZE (xpi/seamonkey-i18n-2.24/seamonkey-2.24.be.langpack.xpi) = 814307
-SHA256 (xpi/seamonkey-i18n-2.24/seamonkey-2.24.ca.langpack.xpi) = 40bb6f6ac6e3e2739777eb9b219c88e232e2b20437ec15ff93344cabd6f61047
-SIZE (xpi/seamonkey-i18n-2.24/seamonkey-2.24.ca.langpack.xpi) = 811480
-SHA256 (xpi/seamonkey-i18n-2.24/seamonkey-2.24.cs.langpack.xpi) = 5605ff0b35abd28c7e84b87d2a30434803f74263e53b8b1350a9836fafea71f7
-SIZE (xpi/seamonkey-i18n-2.24/seamonkey-2.24.cs.langpack.xpi) = 809460
-SHA256 (xpi/seamonkey-i18n-2.24/seamonkey-2.24.de.langpack.xpi) = 842fdef4a36a9f5f9ba99e51e4bd99e0890eb279ec151f1a6527c90d123a1997
-SIZE (xpi/seamonkey-i18n-2.24/seamonkey-2.24.de.langpack.xpi) = 816146
-SHA256 (xpi/seamonkey-i18n-2.24/seamonkey-2.24.en-GB.langpack.xpi) = 8da55c64db56bdb9356c51d21a4a09a4530541a38e946543496c60bdc60ef1d3
-SIZE (xpi/seamonkey-i18n-2.24/seamonkey-2.24.en-GB.langpack.xpi) = 781088
-SHA256 (xpi/seamonkey-i18n-2.24/seamonkey-2.24.en-US.langpack.xpi) = 3fae3e80f0b046ee88133c949705264e7b002ec00b2ada403c5d811a77ae87d1
-SIZE (xpi/seamonkey-i18n-2.24/seamonkey-2.24.en-US.langpack.xpi) = 782073
-SHA256 (xpi/seamonkey-i18n-2.24/seamonkey-2.24.es-AR.langpack.xpi) = 28de7925df64046ce11476a5fc463e6d166bcf1f895ead8d96c563c636075052
-SIZE (xpi/seamonkey-i18n-2.24/seamonkey-2.24.es-AR.langpack.xpi) = 838204
-SHA256 (xpi/seamonkey-i18n-2.24/seamonkey-2.24.es-ES.langpack.xpi) = 88d260366fb1c841c46f464510b45e4fe76b636faa02ee649e8143dba8143434
-SIZE (xpi/seamonkey-i18n-2.24/seamonkey-2.24.es-ES.langpack.xpi) = 811306
-SHA256 (xpi/seamonkey-i18n-2.24/seamonkey-2.24.fi.langpack.xpi) = 209e64e3e4132d05beb124f3642e57cd5a341d73e417644725c2a8060cd56a90
-SIZE (xpi/seamonkey-i18n-2.24/seamonkey-2.24.fi.langpack.xpi) = 780302
-SHA256 (xpi/seamonkey-i18n-2.24/seamonkey-2.24.fr.langpack.xpi) = db23d07a62d4f0a7f5a42f2fd1d33a0704ba484c4801e9d218469deadb122106
-SIZE (xpi/seamonkey-i18n-2.24/seamonkey-2.24.fr.langpack.xpi) = 790321
-SHA256 (xpi/seamonkey-i18n-2.24/seamonkey-2.24.gl.langpack.xpi) = 9bc816dda158a5840dfe666e63c7045a73c12021ad1b19ff57ad8b8435124789
-SIZE (xpi/seamonkey-i18n-2.24/seamonkey-2.24.gl.langpack.xpi) = 789063
-SHA256 (xpi/seamonkey-i18n-2.24/seamonkey-2.24.hu.langpack.xpi) = 44099a7e28c99e40483bcec2d1e33e9fe46c493f6dd5b2f95ad83d3b164e81ce
-SIZE (xpi/seamonkey-i18n-2.24/seamonkey-2.24.hu.langpack.xpi) = 823607
-SHA256 (xpi/seamonkey-i18n-2.24/seamonkey-2.24.it.langpack.xpi) = c4225ca1648957624fb801000404166072277730ce5b3aab3cf815a787c64acc
-SIZE (xpi/seamonkey-i18n-2.24/seamonkey-2.24.it.langpack.xpi) = 725388
-SHA256 (xpi/seamonkey-i18n-2.24/seamonkey-2.24.ja-JP-mac.langpack.xpi) = 8a273e9d1070c8467ddf19290f5fc4a9382f67cc30b498e2523b48f8756965da
-SIZE (xpi/seamonkey-i18n-2.24/seamonkey-2.24.ja-JP-mac.langpack.xpi) = 887433
-SHA256 (xpi/seamonkey-i18n-2.24/seamonkey-2.24.ja.langpack.xpi) = 246c15ce3c6f2245b518b08a88390879a5b0e329467f4d108f13e526c7d9201d
-SIZE (xpi/seamonkey-i18n-2.24/seamonkey-2.24.ja.langpack.xpi) = 862158
-SHA256 (xpi/seamonkey-i18n-2.24/seamonkey-2.24.lt.langpack.xpi) = d92d7755ccb9a27e2c473eb36c76f3735633d6671dd681d3613ab0e0ea4987d2
-SIZE (xpi/seamonkey-i18n-2.24/seamonkey-2.24.lt.langpack.xpi) = 827034
-SHA256 (xpi/seamonkey-i18n-2.24/seamonkey-2.24.nb-NO.langpack.xpi) = 083be6b731ff4c0e97c1385d66719765e1e09992015686acec6057ecdd2f8837
-SIZE (xpi/seamonkey-i18n-2.24/seamonkey-2.24.nb-NO.langpack.xpi) = 802295
-SHA256 (xpi/seamonkey-i18n-2.24/seamonkey-2.24.nl.langpack.xpi) = f58c6c559b678fc978d7822b67b11cdc0d54d055bb5a6c6059d2bf8e6ebc5d54
-SIZE (xpi/seamonkey-i18n-2.24/seamonkey-2.24.nl.langpack.xpi) = 776386
-SHA256 (xpi/seamonkey-i18n-2.24/seamonkey-2.24.pl.langpack.xpi) = e5406c7cdf55841544806445e3f9f86532bed9e09d3da3077363d4e6cebe9fce
-SIZE (xpi/seamonkey-i18n-2.24/seamonkey-2.24.pl.langpack.xpi) = 852730
-SHA256 (xpi/seamonkey-i18n-2.24/seamonkey-2.24.pt-PT.langpack.xpi) = 66dfe3c112c1c6c071b6a0086531f101579d1c92a0d909bbcfee48aedb647969
-SIZE (xpi/seamonkey-i18n-2.24/seamonkey-2.24.pt-PT.langpack.xpi) = 812004
-SHA256 (xpi/seamonkey-i18n-2.24/seamonkey-2.24.ru.langpack.xpi) = d6679b379995552a0ad7b096daa94dffb10d9392a3f8936592deedef4859791b
-SIZE (xpi/seamonkey-i18n-2.24/seamonkey-2.24.ru.langpack.xpi) = 882614
-SHA256 (xpi/seamonkey-i18n-2.24/seamonkey-2.24.sk.langpack.xpi) = 4976e86f4faa81cc7ca5ca73305f827d0347a0e2990377fc00c505ce468cb777
-SIZE (xpi/seamonkey-i18n-2.24/seamonkey-2.24.sk.langpack.xpi) = 836795
-SHA256 (xpi/seamonkey-i18n-2.24/seamonkey-2.24.sv-SE.langpack.xpi) = a1cd1c18dcbeb56ca35e4d14c3c2f63e682ce3f51179901c640277cbd0ecb33a
-SIZE (xpi/seamonkey-i18n-2.24/seamonkey-2.24.sv-SE.langpack.xpi) = 804953
-SHA256 (xpi/seamonkey-i18n-2.24/seamonkey-2.24.tr.langpack.xpi) = 59f170597e514ca92fab8f7139a5ece6f99d1410e2f52ca4b8452ba687c9b007
-SIZE (xpi/seamonkey-i18n-2.24/seamonkey-2.24.tr.langpack.xpi) = 850114
-SHA256 (xpi/seamonkey-i18n-2.24/seamonkey-2.24.uk.langpack.xpi) = 62972d16d400379183758c09373b4ace1e579a2afa2195f6b31026d50033aea9
-SIZE (xpi/seamonkey-i18n-2.24/seamonkey-2.24.uk.langpack.xpi) = 852876
-SHA256 (xpi/seamonkey-i18n-2.24/seamonkey-2.24.zh-CN.langpack.xpi) = 54d7957ffbc32b34ab6490d1abce26af07e949c265bedc887c15d8a5608f4914
-SIZE (xpi/seamonkey-i18n-2.24/seamonkey-2.24.zh-CN.langpack.xpi) = 813619
-SHA256 (xpi/seamonkey-i18n-2.24/seamonkey-2.24.zh-TW.langpack.xpi) = 90f6ec47141d5ea1aa6809c2ae2ba6c5a8c17e86b0647e5f627c19c0d490fe6c
-SIZE (xpi/seamonkey-i18n-2.24/seamonkey-2.24.zh-TW.langpack.xpi) = 837900
+SHA256 (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.be.langpack.xpi) = 4054e9cd36e13f2683b650a90cee267570eaa228a7ad68eed66ee32c50cd8324
+SIZE (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.be.langpack.xpi) = 818838
+SHA256 (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.ca.langpack.xpi) = 6a171516e0709f1818235370cbbbaf344e9e1678aa134c803843e581af7ae265
+SIZE (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.ca.langpack.xpi) = 815229
+SHA256 (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.cs.langpack.xpi) = c1e40b6af524c0d4251eb14df0f1b80bcfb0d9e08d3cea8e6be354044d9e7038
+SIZE (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.cs.langpack.xpi) = 813471
+SHA256 (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.de.langpack.xpi) = c775b5309c6d16ef6bd5b89ad67510b57104e3fc42cfe12cd3fbf446ef7ff0a4
+SIZE (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.de.langpack.xpi) = 821039
+SHA256 (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.en-GB.langpack.xpi) = a895283fc8937b381243d03b8b7cd2146d74a21562a3a1e5a38e8b08217640e9
+SIZE (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.en-GB.langpack.xpi) = 784862
+SHA256 (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.en-US.langpack.xpi) = 863b03a414c01323be18660b86ea35bf25359a24326855be6a5229d2540f0959
+SIZE (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.en-US.langpack.xpi) = 785842
+SHA256 (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.es-AR.langpack.xpi) = 9bbdc460e08307eac30c680e8585f0804e1e6da8502c7ad4625feb0f424ff515
+SIZE (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.es-AR.langpack.xpi) = 842590
+SHA256 (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.es-ES.langpack.xpi) = 63eb4eb46028542fe13e2b5a1e41375c6d0f8c14a14ebdb05794a64bed68166e
+SIZE (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.es-ES.langpack.xpi) = 813327
+SHA256 (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.fi.langpack.xpi) = ca624815cbf944f8463662a47eb491faec8759a82835b0603778351a47080136
+SIZE (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.fi.langpack.xpi) = 783351
+SHA256 (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.fr.langpack.xpi) = 7085a097b10d504319c5d33da9503ea841716509a0bebb214c4a3cd961e37405
+SIZE (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.fr.langpack.xpi) = 794139
+SHA256 (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.gl.langpack.xpi) = f1411575f2a96e774268c20f4fa9cf2011c5b8f2f056fd650fa407e4abb705dd
+SIZE (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.gl.langpack.xpi) = 792993
+SHA256 (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.hu.langpack.xpi) = c89e246f29ad8c7394c2dc09b085ac64f6fe2b491193f58c1713bc48fc6578bd
+SIZE (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.hu.langpack.xpi) = 828022
+SHA256 (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.it.langpack.xpi) = 87b2208257405c34d84f6b72bf42d7160b907e294cb94944e2e9ca87277cf47e
+SIZE (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.it.langpack.xpi) = 727323
+SHA256 (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.ja-JP-mac.langpack.xpi) = 270d09dd9b7c72c0ed7a094a177c3cb3f497d3349da75de3cec954ca01519184
+SIZE (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.ja-JP-mac.langpack.xpi) = 891817
+SHA256 (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.ja.langpack.xpi) = 02f874f97fb426e5663a24ef33e7be3771219864384165ba19ccb16f95d8ab8f
+SIZE (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.ja.langpack.xpi) = 866418
+SHA256 (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.lt.langpack.xpi) = f57d4201d0416537fa1c697ffa97149bad571e10c4bdec18febcdf9080f54029
+SIZE (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.lt.langpack.xpi) = 830877
+SHA256 (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.nb-NO.langpack.xpi) = f925e8571b783e5ef61f685cf6b1a81c3c80cf477f79b1e8877f696741b7b2ba
+SIZE (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.nb-NO.langpack.xpi) = 806695
+SHA256 (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.nl.langpack.xpi) = 9dc1dad8a7c494a33e38af3e186daaadce2c43a4c0542eb3d9ff51ce389e8890
+SIZE (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.nl.langpack.xpi) = 780751
+SHA256 (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.pl.langpack.xpi) = b3184a1c93870db4dd1e11e0b6210552d1e7def39c081c44772ad897ce810470
+SIZE (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.pl.langpack.xpi) = 855085
+SHA256 (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.pt-PT.langpack.xpi) = 105364ee16493b68d5eaf57b9476ae4d154776bc7a7e6921f670064914baa2bb
+SIZE (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.pt-PT.langpack.xpi) = 816434
+SHA256 (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.ru.langpack.xpi) = cb63566638388394cb30f21f7c9f3c9caddc8faaee3e18ae5e76cad6810e113d
+SIZE (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.ru.langpack.xpi) = 884841
+SHA256 (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.sk.langpack.xpi) = f261064de256d4d11211781a6105c7c4e68a74307debc7b26b1eb77caf0a7e7d
+SIZE (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.sk.langpack.xpi) = 840780
+SHA256 (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.sv-SE.langpack.xpi) = ac98f46a5f8d9e24f6a3736d7406d6867cbd3fe502c8efcb0761682e3e67805a
+SIZE (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.sv-SE.langpack.xpi) = 809391
+SHA256 (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.tr.langpack.xpi) = c598fa4f775443ae150df0eced24322b4e8e95665c36cbb4148018cd5d3b5e01
+SIZE (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.tr.langpack.xpi) = 854060
+SHA256 (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.uk.langpack.xpi) = 6a7949c8cb3bb72e54277b71f837c9b40bef9b791acc593f1ccee67c3fb0fe42
+SIZE (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.uk.langpack.xpi) = 856807
+SHA256 (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.zh-CN.langpack.xpi) = c573572880509757757207740413384ca584c7f336061b6d750086294e02f183
+SIZE (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.zh-CN.langpack.xpi) = 818108
+SHA256 (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.zh-TW.langpack.xpi) = 89af62ccb5ef92ec430366590b8242079d9e36912160fc4a78b7b9b8a48b6df1
+SIZE (xpi/seamonkey-i18n-2.25b1/seamonkey-2.25b1.zh-TW.langpack.xpi) = 842075



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201402140630.s1E6UOkC018826>