From owner-freebsd-gecko@FreeBSD.ORG Tue Apr 29 07:51:40 2014 Return-Path: Delivered-To: freebsd-gecko@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 18A2B730 for ; Tue, 29 Apr 2014 07:51:40 +0000 (UTC) Received: from trillian.chruetertee.ch (trillian.chruetertee.ch [217.150.244.247]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id F32C71DFA for ; Tue, 29 Apr 2014 07:51:38 +0000 (UTC) Received: from trillian.chruetertee.ch (trillian [217.150.244.247]) by trillian.chruetertee.ch (8.14.4/8.14.3) with ESMTP id s3T7pTf9060516 for ; Tue, 29 Apr 2014 07:51:29 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Received: (from www@localhost) by trillian.chruetertee.ch (8.14.4/8.14.3/Submit) id s3T7pNNX054920 for freebsd-gecko@freebsd.org; Tue, 29 Apr 2014 07:51:23 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Date: Tue, 29 Apr 2014 07:51:23 GMT Message-Id: <201404290751.s3T7pNNX054920@trillian.chruetertee.ch> X-Authentication-Warning: trillian.chruetertee.ch: www set sender to svn-freebsd-gecko@chruetertee.ch using -f From: svn-freebsd-gecko@chruetertee.ch To: freebsd-gecko@freebsd.org Subject: [SVN-Commit] r1581 - in trunk: Mk/Uses mail/linux-thunderbird mail/thunderbird mail/thunderbird-i18n www/firefox www/firefox-i18n www/firefox-nightly www/firefox-nightly/files www/firefox/files www/linux-firefox www/linux-seamonkey www/seamonkey www/seamonkey-i18n MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: freebsd-gecko@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list Reply-To: freebsd-gecko@freebsd.org List-Id: Gecko Rendering Engine issues List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 Apr 2014 07:51:40 -0000 Author: jbeich Date: Tue Apr 29 07:51:23 2014 New Revision: 1581 Log: update Added: trunk/www/firefox/files/patch-bug981348 trunk/www/firefox/files/patch-bug983957 Deleted: trunk/www/firefox/files/patch-bug783463 trunk/www/firefox/files/patch-bug806917 trunk/www/firefox/files/patch-bug973744 trunk/www/firefox/files/patch-bug975634 trunk/www/firefox/files/patch-bug977457 trunk/www/firefox/files/patch-bug985848 trunk/www/firefox/files/patch-bug989112 trunk/www/firefox/files/patch-ipc-chromium-src-base-message_pump_libevent.cc Modified: trunk/Mk/Uses/gecko.mk trunk/mail/linux-thunderbird/Makefile trunk/mail/linux-thunderbird/distinfo trunk/mail/thunderbird-i18n/Makefile trunk/mail/thunderbird-i18n/distinfo trunk/mail/thunderbird/Makefile trunk/mail/thunderbird/distinfo trunk/www/firefox-i18n/Makefile trunk/www/firefox-i18n/distinfo trunk/www/firefox-nightly/Makefile trunk/www/firefox-nightly/Makefile.hgrev trunk/www/firefox-nightly/distinfo trunk/www/firefox-nightly/files/patch-z-bug517422 trunk/www/firefox/Makefile trunk/www/firefox/distinfo trunk/www/firefox/files/patch-bug847568 trunk/www/firefox/files/patch-clang34-disable-stdcall trunk/www/firefox/files/patch-ipc-chromium-Makefile.in trunk/www/firefox/files/patch-z-bug517422 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 trunk/www/seamonkey/Makefile trunk/www/seamonkey/distinfo Modified: trunk/Mk/Uses/gecko.mk ============================================================================== --- trunk/Mk/Uses/gecko.mk Mon Apr 28 14:11:55 2014 (r1580) +++ trunk/Mk/Uses/gecko.mk Tue Apr 29 07:51:23 2014 (r1581) @@ -39,12 +39,12 @@ .elif ${_GECKO_ARGS:Mfirefox} _GECKO_DEFAULT_VERSION= 24 -_GECKO_VERSIONS= 24 29 +_GECKO_VERSIONS= 24 30 _GECKO_TYPE= firefox # Dependence lines for different Firefox versions 24_DEPENDS= ${LOCALBASE}/lib/firefox/firefox:${PORTSDIR}/www/firefox-esr -29_DEPENDS= ${LOCALBASE}/lib/firefox/firefox:${PORTSDIR}/www/firefox +30_DEPENDS= ${LOCALBASE}/lib/firefox/firefox:${PORTSDIR}/www/firefox .if exists(${LOCALBASE}/bin/firefox) _GECKO_INSTALLED_VER!= ${LOCALBASE}/bin/firefox --version 2>/dev/null Modified: trunk/mail/linux-thunderbird/Makefile ============================================================================== --- trunk/mail/linux-thunderbird/Makefile Mon Apr 28 14:11:55 2014 (r1580) +++ trunk/mail/linux-thunderbird/Makefile Tue Apr 29 07:51:23 2014 (r1581) @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME= thunderbird -DISTVERSION= 24.4.0 +DISTVERSION= 24.5.0 CATEGORIES= mail news net-im ipv6 DISTNAME= ${PORTNAME}-${DISTVERSION} MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/linux-i686/en-US Modified: trunk/mail/linux-thunderbird/distinfo ============================================================================== --- trunk/mail/linux-thunderbird/distinfo Mon Apr 28 14:11:55 2014 (r1580) +++ trunk/mail/linux-thunderbird/distinfo Tue Apr 29 07:51:23 2014 (r1581) @@ -1,5 +1,5 @@ -SHA256 (thunderbird-24.4.0.tar.bz2) = 376ab51e3c424db7e235b2e94494d48ce2fa9a8f1fbf5ef5cf9e367bbaf7422d -SIZE (thunderbird-24.4.0.tar.bz2) = 28923795 +SHA256 (thunderbird-24.5.0.tar.bz2) = 6441f90eda22808c37bca023748efee7735cf9b18b1d21ce75878c10da8baad7 +SIZE (thunderbird-24.5.0.tar.bz2) = 28958353 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/mail/thunderbird-i18n/Makefile ============================================================================== --- trunk/mail/thunderbird-i18n/Makefile Mon Apr 28 14:11:55 2014 (r1580) +++ trunk/mail/thunderbird-i18n/Makefile Tue Apr 29 07:51:23 2014 (r1581) @@ -2,7 +2,7 @@ # $FreeBSD: head/mail/thunderbird-i18n/Makefile 336446 2013-12-14 13:42:06Z flo $ PORTNAME= thunderbird-i18n -PORTVERSION= 24.4.0 +PORTVERSION= 24.5.0 CATEGORIES= mail news net-im MASTER_SITES= MOZILLA/${PORTNAME:S|-i18n||}/releases/${PORTVERSION}/linux-i686/xpi PKGNAMEPREFIX= Modified: trunk/mail/thunderbird-i18n/distinfo ============================================================================== --- trunk/mail/thunderbird-i18n/distinfo Mon Apr 28 14:11:55 2014 (r1580) +++ trunk/mail/thunderbird-i18n/distinfo Tue Apr 29 07:51:23 2014 (r1581) @@ -1,110 +1,110 @@ -SHA256 (xpi/thunderbird-i18n-24.4.0/ar.xpi) = ea847b5e42930343d2ec2e2f9182d59ff84d23b6a864e2c93eb0455cf452f296 -SIZE (xpi/thunderbird-i18n-24.4.0/ar.xpi) = 457862 -SHA256 (xpi/thunderbird-i18n-24.4.0/ast.xpi) = 0ec76e7938dafb72e7fe94941dd9514223d8c5c3880cb4bfd92c2075c7a1528b -SIZE (xpi/thunderbird-i18n-24.4.0/ast.xpi) = 373831 -SHA256 (xpi/thunderbird-i18n-24.4.0/be.xpi) = f16da428ed0246b0f08e00bc0f23eddba4e524dd856b30e93628f7fe0a636fce -SIZE (xpi/thunderbird-i18n-24.4.0/be.xpi) = 416882 -SHA256 (xpi/thunderbird-i18n-24.4.0/bg.xpi) = 7d2e98470e62bb63c7acfd5f350cfb909598755b33ad2ff77d9792d3de341b7f -SIZE (xpi/thunderbird-i18n-24.4.0/bg.xpi) = 485023 -SHA256 (xpi/thunderbird-i18n-24.4.0/bn-BD.xpi) = 72afde682492061234e3887253fd10fccfc738677b952a5b2932d1963f181ed7 -SIZE (xpi/thunderbird-i18n-24.4.0/bn-BD.xpi) = 537257 -SHA256 (xpi/thunderbird-i18n-24.4.0/br.xpi) = bf218d7f6d2eaf2f6444944de439cefe8f33e4e56a36eef83ee3e8986a98b944 -SIZE (xpi/thunderbird-i18n-24.4.0/br.xpi) = 427679 -SHA256 (xpi/thunderbird-i18n-24.4.0/ca.xpi) = 7f22bd3ec7b29c272dd3c35062c2fb6d92cfbe248365d1e8ea9c86a1af83fdfd -SIZE (xpi/thunderbird-i18n-24.4.0/ca.xpi) = 429746 -SHA256 (xpi/thunderbird-i18n-24.4.0/cs.xpi) = f139479d6984a6bf62b2a9ac398f16fd2ad057aa47115fae7072b50446877ede -SIZE (xpi/thunderbird-i18n-24.4.0/cs.xpi) = 431476 -SHA256 (xpi/thunderbird-i18n-24.4.0/da.xpi) = 0c59bf84b45dc399fa3090d3d34a5f27772630300115b10546fb7172823d0a4f -SIZE (xpi/thunderbird-i18n-24.4.0/da.xpi) = 409626 -SHA256 (xpi/thunderbird-i18n-24.4.0/de.xpi) = 7bf488e61a07ab600b057921b117376eadf919a874e59f3350c16a171bcc5a5b -SIZE (xpi/thunderbird-i18n-24.4.0/de.xpi) = 408674 -SHA256 (xpi/thunderbird-i18n-24.4.0/el.xpi) = ba85515ab06c4255f2b0953c8a9f6e0d4ccf26f4a240e8972b29fbde708d08ce -SIZE (xpi/thunderbird-i18n-24.4.0/el.xpi) = 464552 -SHA256 (xpi/thunderbird-i18n-24.4.0/en-GB.xpi) = 3ceb78e9d95e104113121d4667c25b48bdc2faedcab168884453765dd4994a8f -SIZE (xpi/thunderbird-i18n-24.4.0/en-GB.xpi) = 400962 -SHA256 (xpi/thunderbird-i18n-24.4.0/en-US.xpi) = 9d59b39cb6e8c38a1f94b91ec28882a324a460a7725dfad5fc4dcfca852a93a1 -SIZE (xpi/thunderbird-i18n-24.4.0/en-US.xpi) = 402144 -SHA256 (xpi/thunderbird-i18n-24.4.0/es-AR.xpi) = 6ff2ec8f30aba2261dfa59b7fc3cf664502966e1d9247f2a0f6b0290b4752c0d -SIZE (xpi/thunderbird-i18n-24.4.0/es-AR.xpi) = 425657 -SHA256 (xpi/thunderbird-i18n-24.4.0/es-ES.xpi) = 52721d25f1c81d8562dd830d0b946e3b3573e88e07370f53d4bfc181bd87ed5b -SIZE (xpi/thunderbird-i18n-24.4.0/es-ES.xpi) = 366308 -SHA256 (xpi/thunderbird-i18n-24.4.0/et.xpi) = b4ceaedc90bc8bd6efa8a77de2f58ea239b24dd3df3cc88db65857eb51b5f98b -SIZE (xpi/thunderbird-i18n-24.4.0/et.xpi) = 422894 -SHA256 (xpi/thunderbird-i18n-24.4.0/eu.xpi) = 1369771f945eca750e85fa17ee02fccd57c58ca07e57ebe7ac8e4cc93a26a400 -SIZE (xpi/thunderbird-i18n-24.4.0/eu.xpi) = 418497 -SHA256 (xpi/thunderbird-i18n-24.4.0/fi.xpi) = 96dab3bfecee70e22015ae1f6c207e396c29d8670f270ed3f972f81fa7c383db -SIZE (xpi/thunderbird-i18n-24.4.0/fi.xpi) = 424264 -SHA256 (xpi/thunderbird-i18n-24.4.0/fr.xpi) = 3848ae6f610b8862ff96ec7a0b54e6485f76831283ac12a619f0ce8107a59655 -SIZE (xpi/thunderbird-i18n-24.4.0/fr.xpi) = 431288 -SHA256 (xpi/thunderbird-i18n-24.4.0/fy-NL.xpi) = 2506c3ad7483c1c7d1ba23970a22fe069833a12bd63e2963f07d97176b476c85 -SIZE (xpi/thunderbird-i18n-24.4.0/fy-NL.xpi) = 426098 -SHA256 (xpi/thunderbird-i18n-24.4.0/ga-IE.xpi) = 313765ea94fd9b05738a8322f84bdf3368827695342ae09fe3ab1da8b9f99277 -SIZE (xpi/thunderbird-i18n-24.4.0/ga-IE.xpi) = 437114 -SHA256 (xpi/thunderbird-i18n-24.4.0/gd.xpi) = 63a4b1fb749551596b5f94130e63645585d384bcf57ead9256008241e8bbefd7 -SIZE (xpi/thunderbird-i18n-24.4.0/gd.xpi) = 440091 -SHA256 (xpi/thunderbird-i18n-24.4.0/gl.xpi) = ac58f14a44b67bb6fd6c20efe79e81ad05c5a10b174595f5cf077d676a76d0bd -SIZE (xpi/thunderbird-i18n-24.4.0/gl.xpi) = 427543 -SHA256 (xpi/thunderbird-i18n-24.4.0/he.xpi) = b563c9372a99c6e5aff15ba73e70424828acf2083402b22de1d033380432cd81 -SIZE (xpi/thunderbird-i18n-24.4.0/he.xpi) = 457065 -SHA256 (xpi/thunderbird-i18n-24.4.0/hr.xpi) = db5718e663468cdcc2d4701dd5b01e6b2e39e0bb6ca11e58a4056c7c22e4db20 -SIZE (xpi/thunderbird-i18n-24.4.0/hr.xpi) = 422387 -SHA256 (xpi/thunderbird-i18n-24.4.0/hu.xpi) = 4b516919dd26a7d6294e57ca6b45f07ca1f65e887ad49c3ded5458d7f895b066 -SIZE (xpi/thunderbird-i18n-24.4.0/hu.xpi) = 441512 -SHA256 (xpi/thunderbird-i18n-24.4.0/hy-AM.xpi) = 09a95139e9bbcabd0b3ca45eb8c5d6f3f8fbbbb2cae8d22c85b505f0f5feff8e -SIZE (xpi/thunderbird-i18n-24.4.0/hy-AM.xpi) = 477922 -SHA256 (xpi/thunderbird-i18n-24.4.0/id.xpi) = 5a4d8b2e0e96972d91fe60c1799c66f6387ea0858392dd545a2dcef02c753a8e -SIZE (xpi/thunderbird-i18n-24.4.0/id.xpi) = 457498 -SHA256 (xpi/thunderbird-i18n-24.4.0/is.xpi) = e85519acd2619815c350f49c9406c4f36585cc61c6555448bc2a323cf0bbf2ca -SIZE (xpi/thunderbird-i18n-24.4.0/is.xpi) = 425710 -SHA256 (xpi/thunderbird-i18n-24.4.0/it.xpi) = d32a5e3ed927502c7163243b59686e977a42c85822eeae964c0635ded3071002 -SIZE (xpi/thunderbird-i18n-24.4.0/it.xpi) = 357933 -SHA256 (xpi/thunderbird-i18n-24.4.0/ja.xpi) = 425c787bc6f432b246f165c4e6bdbd814f6d058bb662a873c61f72ace8816515 -SIZE (xpi/thunderbird-i18n-24.4.0/ja.xpi) = 475559 -SHA256 (xpi/thunderbird-i18n-24.4.0/ko.xpi) = 23750b422f4395630555b4dd60ed86a6f8d70a328d0334d1a04431c85a537562 -SIZE (xpi/thunderbird-i18n-24.4.0/ko.xpi) = 428070 -SHA256 (xpi/thunderbird-i18n-24.4.0/lt.xpi) = 93873a2aad2433626675f23be74781d74472971edb0c891d1bfcfc29d10e920d -SIZE (xpi/thunderbird-i18n-24.4.0/lt.xpi) = 443260 -SHA256 (xpi/thunderbird-i18n-24.4.0/nb-NO.xpi) = fbfd546b9617631c4df0cb85cf2e939d75b56c3c6ff7601f4556f840df7fb3e3 -SIZE (xpi/thunderbird-i18n-24.4.0/nb-NO.xpi) = 418922 -SHA256 (xpi/thunderbird-i18n-24.4.0/nl.xpi) = 7fd2b9560a00e3172a573796899fba26d1d1cae69e2b17c81213a223da8c2712 -SIZE (xpi/thunderbird-i18n-24.4.0/nl.xpi) = 418763 -SHA256 (xpi/thunderbird-i18n-24.4.0/nn-NO.xpi) = d0fc15725d6a8f120040ba4051740a10d47fcdfce3345619a4cd7598370dafac -SIZE (xpi/thunderbird-i18n-24.4.0/nn-NO.xpi) = 421134 -SHA256 (xpi/thunderbird-i18n-24.4.0/pa-IN.xpi) = c0c55f8c1b8009795e30318297b527f9ece985db4439b2ad0dbe7af937da62c4 -SIZE (xpi/thunderbird-i18n-24.4.0/pa-IN.xpi) = 508273 -SHA256 (xpi/thunderbird-i18n-24.4.0/pl.xpi) = ce486fffc5366b91d8d57b43ffcf5af93c7119960136344892cad5b32fcbb877 -SIZE (xpi/thunderbird-i18n-24.4.0/pl.xpi) = 401752 -SHA256 (xpi/thunderbird-i18n-24.4.0/pt-BR.xpi) = 2b9ecf69dc46a62fb613eddcdd7d2c417046eff3ca20c400e7ec8389f1ae9436 -SIZE (xpi/thunderbird-i18n-24.4.0/pt-BR.xpi) = 430909 -SHA256 (xpi/thunderbird-i18n-24.4.0/pt-PT.xpi) = 3f3b6695433f8a23d1fc1c90426165168a31e6ee505a9e0dc30773fb87d1ef0a -SIZE (xpi/thunderbird-i18n-24.4.0/pt-PT.xpi) = 425025 -SHA256 (xpi/thunderbird-i18n-24.4.0/rm.xpi) = d4281b792ad6c2662b9dda2e4d087a11b50978901d508e7855cd945d9578ab06 -SIZE (xpi/thunderbird-i18n-24.4.0/rm.xpi) = 432384 -SHA256 (xpi/thunderbird-i18n-24.4.0/ro.xpi) = efd0d40b632d181aa289dcf9a21d8ba213f90ca6f43a886e7cc67a4b1d3e88d0 -SIZE (xpi/thunderbird-i18n-24.4.0/ro.xpi) = 497491 -SHA256 (xpi/thunderbird-i18n-24.4.0/ru.xpi) = 284e9c3fcaee7caa55f442d3fe6127d68bbd1a0e294015a3d97bcbac9a477a13 -SIZE (xpi/thunderbird-i18n-24.4.0/ru.xpi) = 425097 -SHA256 (xpi/thunderbird-i18n-24.4.0/si.xpi) = 9f97455e774e74b4a3d5effe631d7b4eaeebdee3f0f0fdcc3b3ec90c17a7de67 -SIZE (xpi/thunderbird-i18n-24.4.0/si.xpi) = 511167 -SHA256 (xpi/thunderbird-i18n-24.4.0/sk.xpi) = 8154cdc41071c4e4d06dd8bf37b5166e6078a90c00753e13d01d20c5a4b5ba4e -SIZE (xpi/thunderbird-i18n-24.4.0/sk.xpi) = 440106 -SHA256 (xpi/thunderbird-i18n-24.4.0/sl.xpi) = 4fbd8dce101e088cec044113cf298464b56f729d7de9c48c3e295aa8763a8b20 -SIZE (xpi/thunderbird-i18n-24.4.0/sl.xpi) = 421706 -SHA256 (xpi/thunderbird-i18n-24.4.0/sq.xpi) = 3d6ce7ca0a312345d7c8b7006fd05961e7f23c67bbbe73da971448de916ea511 -SIZE (xpi/thunderbird-i18n-24.4.0/sq.xpi) = 435215 -SHA256 (xpi/thunderbird-i18n-24.4.0/sr.xpi) = 95fc6006ce2b05f66945710e56304d2abda2295272b4fe6c976a7885cdc63b85 -SIZE (xpi/thunderbird-i18n-24.4.0/sr.xpi) = 518889 -SHA256 (xpi/thunderbird-i18n-24.4.0/sv-SE.xpi) = c509fa6766b0bad5e0fea3bb66e8faf56a4c3ed6a955d64ef2dd3aaf354c5dbe -SIZE (xpi/thunderbird-i18n-24.4.0/sv-SE.xpi) = 423815 -SHA256 (xpi/thunderbird-i18n-24.4.0/ta-LK.xpi) = ca2a242106b6b8cfd4123961704aaa0ea50ef08a59413ab5782971460d47a371 -SIZE (xpi/thunderbird-i18n-24.4.0/ta-LK.xpi) = 534923 -SHA256 (xpi/thunderbird-i18n-24.4.0/tr.xpi) = 6e49a73b80664b92d590888d34f19aa2f77490459c2a9d89cdf6d65ca5f4a569 -SIZE (xpi/thunderbird-i18n-24.4.0/tr.xpi) = 438067 -SHA256 (xpi/thunderbird-i18n-24.4.0/uk.xpi) = 8846c8bf8f30206afb21663fc0b37ca05f382cd2704beb5dbbf2fac94276e500 -SIZE (xpi/thunderbird-i18n-24.4.0/uk.xpi) = 480949 -SHA256 (xpi/thunderbird-i18n-24.4.0/vi.xpi) = 9986e317e7c830111e9e018fd37f9e39c99a5b841115c7b661c5b296532c8548 -SIZE (xpi/thunderbird-i18n-24.4.0/vi.xpi) = 495558 -SHA256 (xpi/thunderbird-i18n-24.4.0/zh-CN.xpi) = 230d8f16b03d1b2f1b3a6a502f78027d0e9d7fe8d62751ddf85935d4247fa696 -SIZE (xpi/thunderbird-i18n-24.4.0/zh-CN.xpi) = 449181 -SHA256 (xpi/thunderbird-i18n-24.4.0/zh-TW.xpi) = 4041db9d40a5c2d6256f8d3cf3e307d1708fa7db8645291383f6d09241225bdd -SIZE (xpi/thunderbird-i18n-24.4.0/zh-TW.xpi) = 450001 +SHA256 (xpi/thunderbird-i18n-24.5.0/ar.xpi) = 61c387758c281431653c0d2a40f9779dea513358129fca8838b7568bfcb2f046 +SIZE (xpi/thunderbird-i18n-24.5.0/ar.xpi) = 457862 +SHA256 (xpi/thunderbird-i18n-24.5.0/ast.xpi) = a24e106915b718563a6b59e43d0152c027ac8f851192ca9c26135eaf2d0bf5f4 +SIZE (xpi/thunderbird-i18n-24.5.0/ast.xpi) = 373831 +SHA256 (xpi/thunderbird-i18n-24.5.0/be.xpi) = 46f2f6a22fc8eaa40793be47e7f3351297182cc7ddfb8116b00da965d6ef4a20 +SIZE (xpi/thunderbird-i18n-24.5.0/be.xpi) = 416882 +SHA256 (xpi/thunderbird-i18n-24.5.0/bg.xpi) = e36c78b5dc1667c2a66000a94d4858fd315637b2072491abd5678739c3745f88 +SIZE (xpi/thunderbird-i18n-24.5.0/bg.xpi) = 485023 +SHA256 (xpi/thunderbird-i18n-24.5.0/bn-BD.xpi) = 84b0646dc6ab24c3d366dcb93f30c0e93a53215f2d837acfbfe6757d36cf8b2a +SIZE (xpi/thunderbird-i18n-24.5.0/bn-BD.xpi) = 537258 +SHA256 (xpi/thunderbird-i18n-24.5.0/br.xpi) = 735a7dcf944090ded122ac7fd94ca081599018091b6b948629281b2dd053ea11 +SIZE (xpi/thunderbird-i18n-24.5.0/br.xpi) = 427679 +SHA256 (xpi/thunderbird-i18n-24.5.0/ca.xpi) = b44c121db7370a79569b8309658dcff73df319f19ce446695964a8913dfffa6d +SIZE (xpi/thunderbird-i18n-24.5.0/ca.xpi) = 429746 +SHA256 (xpi/thunderbird-i18n-24.5.0/cs.xpi) = 500809375921ab12902f81c0d700c6b66ec2c3bd3a0d03cd58fd94bc59e61040 +SIZE (xpi/thunderbird-i18n-24.5.0/cs.xpi) = 431476 +SHA256 (xpi/thunderbird-i18n-24.5.0/da.xpi) = d9c3e799b534164318262e936b9a5b50016ffea58276d67a6f6cca3c8fad6a83 +SIZE (xpi/thunderbird-i18n-24.5.0/da.xpi) = 409626 +SHA256 (xpi/thunderbird-i18n-24.5.0/de.xpi) = e03fa8c3a32b66955c7b95ccb0651d555e73f62411ed55aa2a44237dbc27b624 +SIZE (xpi/thunderbird-i18n-24.5.0/de.xpi) = 408674 +SHA256 (xpi/thunderbird-i18n-24.5.0/el.xpi) = 490f21edef433189cbcb0e16acb87ebc6e4047bce5c53ae35073782ac2539ea5 +SIZE (xpi/thunderbird-i18n-24.5.0/el.xpi) = 464552 +SHA256 (xpi/thunderbird-i18n-24.5.0/en-GB.xpi) = df6884048a7cc4579cf8d01b9846f4a4fada50c35486a5ef753b92c9e6e9eca4 +SIZE (xpi/thunderbird-i18n-24.5.0/en-GB.xpi) = 400962 +SHA256 (xpi/thunderbird-i18n-24.5.0/en-US.xpi) = 7b6c84303047b2cd7b8def5050978852d5133837f2b805b445da553b7c61ad26 +SIZE (xpi/thunderbird-i18n-24.5.0/en-US.xpi) = 402144 +SHA256 (xpi/thunderbird-i18n-24.5.0/es-AR.xpi) = 1f89c991a958a89913c4ce7d398d3727505f1c5ea18188691f2503d4fc4808f0 +SIZE (xpi/thunderbird-i18n-24.5.0/es-AR.xpi) = 425656 +SHA256 (xpi/thunderbird-i18n-24.5.0/es-ES.xpi) = f4793deb6ddbe8be6af31fe809ba2e6b1a85c16c42fc023d9c798b2a48ed1aab +SIZE (xpi/thunderbird-i18n-24.5.0/es-ES.xpi) = 366308 +SHA256 (xpi/thunderbird-i18n-24.5.0/et.xpi) = 96a8367da63bbb573386ef2301089a676b963e5000a7638dd616cf66f0fefc06 +SIZE (xpi/thunderbird-i18n-24.5.0/et.xpi) = 422893 +SHA256 (xpi/thunderbird-i18n-24.5.0/eu.xpi) = b3617b39f949ad5e2cc06ad96de92eb76240fb5299fc9ef65479365a390ba2f3 +SIZE (xpi/thunderbird-i18n-24.5.0/eu.xpi) = 418497 +SHA256 (xpi/thunderbird-i18n-24.5.0/fi.xpi) = 3732e9d56156d836dbe69cac9e0d17e2b9e65b3436d54337f01bad07ca79ad86 +SIZE (xpi/thunderbird-i18n-24.5.0/fi.xpi) = 424264 +SHA256 (xpi/thunderbird-i18n-24.5.0/fr.xpi) = 4f6749e30cd43d41d3ad963e09e891c5455f4afba5d659482c945bf2d3ffa041 +SIZE (xpi/thunderbird-i18n-24.5.0/fr.xpi) = 431289 +SHA256 (xpi/thunderbird-i18n-24.5.0/fy-NL.xpi) = 5fd8a7748cb741587e6f8f5608edd1b930adfd597d7c41572ef938acabf5527d +SIZE (xpi/thunderbird-i18n-24.5.0/fy-NL.xpi) = 426098 +SHA256 (xpi/thunderbird-i18n-24.5.0/ga-IE.xpi) = 5c680e902636dbbdb0850afd8c52016716d2a45bee15661626f8e66dc40d7f3c +SIZE (xpi/thunderbird-i18n-24.5.0/ga-IE.xpi) = 437114 +SHA256 (xpi/thunderbird-i18n-24.5.0/gd.xpi) = 49941bbc298c4ca251dc799280236e3f687a75a1650bf47ece9da7a6390f1c76 +SIZE (xpi/thunderbird-i18n-24.5.0/gd.xpi) = 440091 +SHA256 (xpi/thunderbird-i18n-24.5.0/gl.xpi) = 2498b883e3cd6d7a81c02824afdaede981228dde6f0a9c13217a34e6d6dfa7c1 +SIZE (xpi/thunderbird-i18n-24.5.0/gl.xpi) = 427543 +SHA256 (xpi/thunderbird-i18n-24.5.0/he.xpi) = a5546f26a205db3a0196c5032c8e69314affecd2174f7880f5ae517af73785f9 +SIZE (xpi/thunderbird-i18n-24.5.0/he.xpi) = 457065 +SHA256 (xpi/thunderbird-i18n-24.5.0/hr.xpi) = b225e5428b4ec30eb618fcac0de66557e2f7bfdc88957dc739ec142d7968a3b2 +SIZE (xpi/thunderbird-i18n-24.5.0/hr.xpi) = 422387 +SHA256 (xpi/thunderbird-i18n-24.5.0/hu.xpi) = a24e6b47bb40a6b71319b5a4f7638574e3eede2163238da059bf0876cf7ec3fa +SIZE (xpi/thunderbird-i18n-24.5.0/hu.xpi) = 441511 +SHA256 (xpi/thunderbird-i18n-24.5.0/hy-AM.xpi) = a8021d93dc1f3d372ee94d4c7eaacae2f30df06e2bd6cfc37a1ab564c90b6fb4 +SIZE (xpi/thunderbird-i18n-24.5.0/hy-AM.xpi) = 477923 +SHA256 (xpi/thunderbird-i18n-24.5.0/id.xpi) = 41222ef78db07a5da8b388485cd3536184caf8eb7264830e410026c279972454 +SIZE (xpi/thunderbird-i18n-24.5.0/id.xpi) = 457499 +SHA256 (xpi/thunderbird-i18n-24.5.0/is.xpi) = 3fdd5a7f5692ba2103bec6037d77bf848f78cb02eb1644d46641e89fe52cae2c +SIZE (xpi/thunderbird-i18n-24.5.0/is.xpi) = 425710 +SHA256 (xpi/thunderbird-i18n-24.5.0/it.xpi) = 7c9a296019584d63c44ec03dda76200b83f07f50dcbafbe7c3b69af8f894f5cd +SIZE (xpi/thunderbird-i18n-24.5.0/it.xpi) = 357933 +SHA256 (xpi/thunderbird-i18n-24.5.0/ja.xpi) = 624bf5f383fbcaf6eff9164232b72395733ae01a3a1f5e10d4a3e6fda10de1b8 +SIZE (xpi/thunderbird-i18n-24.5.0/ja.xpi) = 475559 +SHA256 (xpi/thunderbird-i18n-24.5.0/ko.xpi) = 830f3245b7f246e2269a758b7cc9186d7aadbf519ee72fa33b3d2325e285a291 +SIZE (xpi/thunderbird-i18n-24.5.0/ko.xpi) = 428071 +SHA256 (xpi/thunderbird-i18n-24.5.0/lt.xpi) = dff8b84bcfbb8c07d76d415b6ef378d6024bd81f0655ca438927572b85f4e37c +SIZE (xpi/thunderbird-i18n-24.5.0/lt.xpi) = 443259 +SHA256 (xpi/thunderbird-i18n-24.5.0/nb-NO.xpi) = 2ae8f6c1a61d6f17cfb4f86d5d9926688fb8a403ab64fe1950c89a8997bcdd55 +SIZE (xpi/thunderbird-i18n-24.5.0/nb-NO.xpi) = 418922 +SHA256 (xpi/thunderbird-i18n-24.5.0/nl.xpi) = da2532d21fb594927f59979d4c022297b0ee5f0c29cdf2209d7e4f9296931cd9 +SIZE (xpi/thunderbird-i18n-24.5.0/nl.xpi) = 418764 +SHA256 (xpi/thunderbird-i18n-24.5.0/nn-NO.xpi) = 2a52857fca772239f14207755946dbdd36ba1c0209f8c09f30cfe6cdc94a5892 +SIZE (xpi/thunderbird-i18n-24.5.0/nn-NO.xpi) = 421134 +SHA256 (xpi/thunderbird-i18n-24.5.0/pa-IN.xpi) = f817ef8578af107efe45cc2406be7568440c1b4e020c3764afbec774b3b17a4b +SIZE (xpi/thunderbird-i18n-24.5.0/pa-IN.xpi) = 508272 +SHA256 (xpi/thunderbird-i18n-24.5.0/pl.xpi) = 13fd347b116e6d5e1c0b168f020270cc179f32b1e056e333cc3a86a8406f901a +SIZE (xpi/thunderbird-i18n-24.5.0/pl.xpi) = 401752 +SHA256 (xpi/thunderbird-i18n-24.5.0/pt-BR.xpi) = 57f7c85aa5ff76cd01387ff1752a63e8d2b26749765dd7daf7137de4a06eb6fe +SIZE (xpi/thunderbird-i18n-24.5.0/pt-BR.xpi) = 430909 +SHA256 (xpi/thunderbird-i18n-24.5.0/pt-PT.xpi) = 828f0920581519070aa58c366f603d964638a60b2de74ad49fcf9397db169145 +SIZE (xpi/thunderbird-i18n-24.5.0/pt-PT.xpi) = 425025 +SHA256 (xpi/thunderbird-i18n-24.5.0/rm.xpi) = b5ad4b75ba5670223b6f16686830f2eed904a764c72a61c88e054d9574518d44 +SIZE (xpi/thunderbird-i18n-24.5.0/rm.xpi) = 432384 +SHA256 (xpi/thunderbird-i18n-24.5.0/ro.xpi) = a5a8215d718a6be1c576059168c9913c55d557b26bed500a4e39a888e0f18c4b +SIZE (xpi/thunderbird-i18n-24.5.0/ro.xpi) = 497491 +SHA256 (xpi/thunderbird-i18n-24.5.0/ru.xpi) = 53277de17e52ed168368153902b498ea478eed06e00fc9a3f6b880cfbcb48c1f +SIZE (xpi/thunderbird-i18n-24.5.0/ru.xpi) = 425097 +SHA256 (xpi/thunderbird-i18n-24.5.0/si.xpi) = aca1ede31da89a6ab476aad09696306f61522cdd878c5e1dabd37ba7f5b28713 +SIZE (xpi/thunderbird-i18n-24.5.0/si.xpi) = 511166 +SHA256 (xpi/thunderbird-i18n-24.5.0/sk.xpi) = a64b7290e92579b75a6cf34ba1baed18bb086265c8452c08ddb0228c714b5ed5 +SIZE (xpi/thunderbird-i18n-24.5.0/sk.xpi) = 440106 +SHA256 (xpi/thunderbird-i18n-24.5.0/sl.xpi) = ebab16114f3fe94cd15c9993a94693412afa121ce8975afadf54bf06d9a5fbab +SIZE (xpi/thunderbird-i18n-24.5.0/sl.xpi) = 421706 +SHA256 (xpi/thunderbird-i18n-24.5.0/sq.xpi) = 5f933fa1e66e16c15d6237099cf65f5f3300ff423d3352f6e5aa3b2d207c7f0a +SIZE (xpi/thunderbird-i18n-24.5.0/sq.xpi) = 435215 +SHA256 (xpi/thunderbird-i18n-24.5.0/sr.xpi) = 21ee6b0854e5e0052ef4eacca593c0ff41ea000dd0dc75f1d7b647b34591ad49 +SIZE (xpi/thunderbird-i18n-24.5.0/sr.xpi) = 518889 +SHA256 (xpi/thunderbird-i18n-24.5.0/sv-SE.xpi) = 17e752fbcf6e24203b6d27bce06df39766a7878fced1db516b96e2f9ec7e7426 +SIZE (xpi/thunderbird-i18n-24.5.0/sv-SE.xpi) = 423815 +SHA256 (xpi/thunderbird-i18n-24.5.0/ta-LK.xpi) = 55b10f60dea2abc565c69c841988110b989e69e7ce880500f9990af1b7e7437a +SIZE (xpi/thunderbird-i18n-24.5.0/ta-LK.xpi) = 534922 +SHA256 (xpi/thunderbird-i18n-24.5.0/tr.xpi) = 25b1be7c836addc60bfa36e6c759dcd2b12c73c468351bc830f125080489dd92 +SIZE (xpi/thunderbird-i18n-24.5.0/tr.xpi) = 438066 +SHA256 (xpi/thunderbird-i18n-24.5.0/uk.xpi) = 331ed11d6d4b873db63e33db707a205d98eb0f4b6201a75921431b2e7e4e0755 +SIZE (xpi/thunderbird-i18n-24.5.0/uk.xpi) = 480949 +SHA256 (xpi/thunderbird-i18n-24.5.0/vi.xpi) = 993eb8b5869166b51dab725fea1126445cc132cafadab1b5096f6850f2aaadd3 +SIZE (xpi/thunderbird-i18n-24.5.0/vi.xpi) = 495558 +SHA256 (xpi/thunderbird-i18n-24.5.0/zh-CN.xpi) = e587849f5bae5bbb65bc68087fb9bbe672162e5bca69a7e99f0ca7e4559d5354 +SIZE (xpi/thunderbird-i18n-24.5.0/zh-CN.xpi) = 449181 +SHA256 (xpi/thunderbird-i18n-24.5.0/zh-TW.xpi) = ace0e695c8112ba1754f16603ee14418303ae053b97f8af0b23272a308c4f066 +SIZE (xpi/thunderbird-i18n-24.5.0/zh-TW.xpi) = 450000 Modified: trunk/mail/thunderbird/Makefile ============================================================================== --- trunk/mail/thunderbird/Makefile Mon Apr 28 14:11:55 2014 (r1580) +++ trunk/mail/thunderbird/Makefile Tue Apr 29 07:51:23 2014 (r1581) @@ -2,7 +2,7 @@ # $FreeBSD: head/mail/thunderbird/Makefile 339634 2014-01-13 21:00:02Z rene $ PORTNAME= thunderbird -DISTVERSION= 24.4.0 +DISTVERSION= 24.5.0 CATEGORIES= mail news net-im ipv6 MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \ https://ftp.mozilla.org/pub/mozilla.org/${PORTNAME}/candidates/${DISTVERSION}-candidates/build1/source/ Modified: trunk/mail/thunderbird/distinfo ============================================================================== --- trunk/mail/thunderbird/distinfo Mon Apr 28 14:11:55 2014 (r1580) +++ trunk/mail/thunderbird/distinfo Tue Apr 29 07:51:23 2014 (r1581) @@ -1,4 +1,4 @@ -SHA256 (thunderbird-24.4.0.source.tar.bz2) = 9aecdc2bf00cbe33629169aca8225a30d2674f4d372e845c2fc38c5d9f2bc7b6 -SIZE (thunderbird-24.4.0.source.tar.bz2) = 140040804 +SHA256 (thunderbird-24.5.0.source.tar.bz2) = 971c48db11328613340ed97a92018403647b8cca6a692b3d6b4145aed124382a +SIZE (thunderbird-24.5.0.source.tar.bz2) = 140048545 SHA256 (enigmail-1.6.tar.gz) = 10d5eb7ba364b9b6e6275aae8bba1d0e4321ed7d55a715337d566ccf2a56ea4d SIZE (enigmail-1.6.tar.gz) = 1231111 Modified: trunk/www/firefox-i18n/Makefile ============================================================================== --- trunk/www/firefox-i18n/Makefile Mon Apr 28 14:11:55 2014 (r1580) +++ trunk/www/firefox-i18n/Makefile Tue Apr 29 07:51:23 2014 (r1581) @@ -2,7 +2,7 @@ # $FreeBSD: head/www/firefox-i18n/Makefile 350687 2014-04-09 12:35:01Z bapt $ PORTNAME= firefox-i18n -PORTVERSION= 29.0 +PORTVERSION= 30.0b1 CATEGORIES= www MASTER_SITES= MOZILLA/${PORTNAME:S|-i18n||}/releases/${PORTVERSION}/linux-i686/xpi PKGNAMEPREFIX= @@ -14,7 +14,7 @@ EXTRACT_DEPENDS= zip:${PORTSDIR}/archivers/zip -USES= zip:infozip gecko:firefox,29 +USES= zip:infozip gecko:firefox,30 USE_XPI= firefox linux-firefox NO_ARCH= yes Modified: trunk/www/firefox-i18n/distinfo ============================================================================== --- trunk/www/firefox-i18n/distinfo Mon Apr 28 14:11:55 2014 (r1580) +++ trunk/www/firefox-i18n/distinfo Tue Apr 29 07:51:23 2014 (r1581) @@ -1,176 +1,170 @@ -SHA256 (xpi/firefox-i18n-29.0/ach.xpi) = c6ccf91e05b119f39b0d83905ed143e36187649f62389156803a76318300a299 -SIZE (xpi/firefox-i18n-29.0/ach.xpi) = 373393 -SHA256 (xpi/firefox-i18n-29.0/af.xpi) = adf809368117ba8499a6e2f99b331ab32b62c499ba1174e2fe0918f72819e2b3 -SIZE (xpi/firefox-i18n-29.0/af.xpi) = 367124 -SHA256 (xpi/firefox-i18n-29.0/an.xpi) = a82aa53f398d619cdc203adc4b904b58d7f281550d8f631439c53269fa56a4bd -SIZE (xpi/firefox-i18n-29.0/an.xpi) = 373502 -SHA256 (xpi/firefox-i18n-29.0/ar.xpi) = 9dd29397169946d0ea425483c2c3c60f67d8dbc784b3af302416c36aa0b82cae -SIZE (xpi/firefox-i18n-29.0/ar.xpi) = 396597 -SHA256 (xpi/firefox-i18n-29.0/as.xpi) = 2f3a75d484e415551f9d19fb56c8208d6f65beab8db582b7d62f760f1f2f67f4 -SIZE (xpi/firefox-i18n-29.0/as.xpi) = 415330 -SHA256 (xpi/firefox-i18n-29.0/ast.xpi) = f232691daac61375b54312e6ef04cf4edb1270bc569694516d65c9a07f14f033 -SIZE (xpi/firefox-i18n-29.0/ast.xpi) = 324861 -SHA256 (xpi/firefox-i18n-29.0/be.xpi) = 46d25d6aef317349a915d99ee46325ae4de2947dbfd774343c5093f46b5ce098 -SIZE (xpi/firefox-i18n-29.0/be.xpi) = 340365 -SHA256 (xpi/firefox-i18n-29.0/bg.xpi) = a13eaeda2a8e664cb6849b5073b7da6bbf524b1038d40bda6a2b1c61314e6c07 -SIZE (xpi/firefox-i18n-29.0/bg.xpi) = 400750 -SHA256 (xpi/firefox-i18n-29.0/bn-BD.xpi) = be518dbeff0b3e15b28a196bd31c314b67b0c0116ae20c910b93b3a4b27f67d0 -SIZE (xpi/firefox-i18n-29.0/bn-BD.xpi) = 426365 -SHA256 (xpi/firefox-i18n-29.0/bn-IN.xpi) = cd49bf2e39e388ac3ae8f74df4e823f6a7a8ceec6da44fba7c0b59f09179a62d -SIZE (xpi/firefox-i18n-29.0/bn-IN.xpi) = 421119 -SHA256 (xpi/firefox-i18n-29.0/br.xpi) = 1ba6c16865e0181fea267e45e7f4c87a8518f615b522aea9fb952ec94b984bd2 -SIZE (xpi/firefox-i18n-29.0/br.xpi) = 363996 -SHA256 (xpi/firefox-i18n-29.0/bs.xpi) = e968879eda41d0f96e35a21936d883c92110d40497e247a6510977c167dab4aa -SIZE (xpi/firefox-i18n-29.0/bs.xpi) = 371223 -SHA256 (xpi/firefox-i18n-29.0/ca.xpi) = 602eaef7df208c516efeb4333a050e3433e0f3baad901fe0ea6278ba6678a576 -SIZE (xpi/firefox-i18n-29.0/ca.xpi) = 370413 -SHA256 (xpi/firefox-i18n-29.0/cs.xpi) = 7c57f8242a5c9c7ebfeb22fe24c4d6906a378c9c95e95de22a8fb8020911d0a2 -SIZE (xpi/firefox-i18n-29.0/cs.xpi) = 364875 -SHA256 (xpi/firefox-i18n-29.0/csb.xpi) = 86ffb57f543e8efca951974214f9f84b036c42ed9cb8d0d90974fa6691f2e0fe -SIZE (xpi/firefox-i18n-29.0/csb.xpi) = 355955 -SHA256 (xpi/firefox-i18n-29.0/cy.xpi) = 7e41a6edfc20ca0ef55f8e2e34740521b87f36f48ee97dfcad69b25be0f235c6 -SIZE (xpi/firefox-i18n-29.0/cy.xpi) = 364982 -SHA256 (xpi/firefox-i18n-29.0/da.xpi) = f31a19e5512cf07b40548c676d5e53003734bb72d1898d8fe5a0d92d6cbab868 -SIZE (xpi/firefox-i18n-29.0/da.xpi) = 355875 -SHA256 (xpi/firefox-i18n-29.0/de.xpi) = f1e7a8b7b71373bd566c35559667a4da73b92fe86aebfd7acb0b24f2b0090895 -SIZE (xpi/firefox-i18n-29.0/de.xpi) = 363985 -SHA256 (xpi/firefox-i18n-29.0/el.xpi) = 28ce4ac766d10aef112451128ffe56119e972bfe9210a052c534945dee829820 -SIZE (xpi/firefox-i18n-29.0/el.xpi) = 397064 -SHA256 (xpi/firefox-i18n-29.0/en-GB.xpi) = 27e1a9560dacc0b8665f0bf4155669a208a934684fafe8907ee88e1c7927cdd2 -SIZE (xpi/firefox-i18n-29.0/en-GB.xpi) = 352794 -SHA256 (xpi/firefox-i18n-29.0/en-US.xpi) = 0b665ea8cbec2a5db2d130827c3aeb8be79133a611b0241ee11198d2a68cfcfe -SIZE (xpi/firefox-i18n-29.0/en-US.xpi) = 352631 -SHA256 (xpi/firefox-i18n-29.0/en-ZA.xpi) = 00c54af05c8428e387409359f403993f1a141da9a30d4925a92be57fdbfb0eb7 -SIZE (xpi/firefox-i18n-29.0/en-ZA.xpi) = 343162 -SHA256 (xpi/firefox-i18n-29.0/eo.xpi) = f9f6f9071d6b8c128495ed95620180756112647eb76d680583957763ec63554d -SIZE (xpi/firefox-i18n-29.0/eo.xpi) = 369151 -SHA256 (xpi/firefox-i18n-29.0/es-AR.xpi) = 269b4e8486ffb176a1a5082203398ed7f7c398ee0a3377888319431f1697a380 -SIZE (xpi/firefox-i18n-29.0/es-AR.xpi) = 367827 -SHA256 (xpi/firefox-i18n-29.0/es-CL.xpi) = 13c7a3fed0b61018161e45dd20ce6130583b68f270d4a71f4a1703be26d7dc46 -SIZE (xpi/firefox-i18n-29.0/es-CL.xpi) = 314748 -SHA256 (xpi/firefox-i18n-29.0/es-ES.xpi) = e50a73028675b28b8f60094731c96b24713178025a491aa24bacb805dd554e71 -SIZE (xpi/firefox-i18n-29.0/es-ES.xpi) = 305433 -SHA256 (xpi/firefox-i18n-29.0/es-MX.xpi) = a1966155e366c8b9eeaa87eb1d6e76a3c187c3bf6701b27b68c21b41627097cf -SIZE (xpi/firefox-i18n-29.0/es-MX.xpi) = 372449 -SHA256 (xpi/firefox-i18n-29.0/et.xpi) = 1091cb9efa635996c0c9458a62aeaf03023bbaf2428b291ef2d0993ed9139609 -SIZE (xpi/firefox-i18n-29.0/et.xpi) = 352878 -SHA256 (xpi/firefox-i18n-29.0/eu.xpi) = a09f19ceb466f2c7a2e46b4a1f2dec3775d9b0d9a670ba04733b2ae7afbcbda9 -SIZE (xpi/firefox-i18n-29.0/eu.xpi) = 369441 -SHA256 (xpi/firefox-i18n-29.0/fa.xpi) = f27dca27d9215deae207b4ca38e7260421d74fd482eb8a1ddc6d6d0e39c1bc36 -SIZE (xpi/firefox-i18n-29.0/fa.xpi) = 409149 -SHA256 (xpi/firefox-i18n-29.0/ff.xpi) = 23be65bdb50c441ea75e5f3ed143160091a70191192dd4405da7f5a2d7335587 -SIZE (xpi/firefox-i18n-29.0/ff.xpi) = 361587 -SHA256 (xpi/firefox-i18n-29.0/fi.xpi) = 1dc290cf22dcfab88dcb7bdb0a2ecaad4be6163ee1bd8af13f4962ed037c1a11 -SIZE (xpi/firefox-i18n-29.0/fi.xpi) = 363340 -SHA256 (xpi/firefox-i18n-29.0/fr.xpi) = ada8b98915422b83aa4c62bf514456a27e9cedc82ddb6377178ce396f10729a3 -SIZE (xpi/firefox-i18n-29.0/fr.xpi) = 376279 -SHA256 (xpi/firefox-i18n-29.0/fy-NL.xpi) = 6a4d8b5ac760d8860aba66c779f302e19955fd5a232c237297dde3974b72cb25 -SIZE (xpi/firefox-i18n-29.0/fy-NL.xpi) = 372388 -SHA256 (xpi/firefox-i18n-29.0/ga-IE.xpi) = 25f92f7562f119c97189290f8e4746223d2db2ddf3fd260e3ce246119bcfb483 -SIZE (xpi/firefox-i18n-29.0/ga-IE.xpi) = 378267 -SHA256 (xpi/firefox-i18n-29.0/gd.xpi) = b6f370e9e0b6c8d7c9840999d185c50dc9832ba15691c6c2c2f61dd099bf4912 -SIZE (xpi/firefox-i18n-29.0/gd.xpi) = 375410 -SHA256 (xpi/firefox-i18n-29.0/gl.xpi) = b9e476f99b13b29fd84189283b9a7641ee41d641c171a4fa3587493bcb329a97 -SIZE (xpi/firefox-i18n-29.0/gl.xpi) = 363693 -SHA256 (xpi/firefox-i18n-29.0/gu-IN.xpi) = 1730b390f911b26f1d5107cdf79e9dedf1a970be7da9de96010ff1e83da3a1b0 -SIZE (xpi/firefox-i18n-29.0/gu-IN.xpi) = 391891 -SHA256 (xpi/firefox-i18n-29.0/he.xpi) = 5c62998721b69b83e63b4ec107a62e08d03d482c84de2fb3fc2c0844ab1f2315 -SIZE (xpi/firefox-i18n-29.0/he.xpi) = 385480 -SHA256 (xpi/firefox-i18n-29.0/hi-IN.xpi) = 19774e11ea7d30fa748f3d1aedce3c642dfcf83d3eacde963acf16ea38960a0a -SIZE (xpi/firefox-i18n-29.0/hi-IN.xpi) = 410179 -SHA256 (xpi/firefox-i18n-29.0/hr.xpi) = 17240437b1e72eac60776cb3a307d60cbd59abd0444eee475fca8396ef52817f -SIZE (xpi/firefox-i18n-29.0/hr.xpi) = 376605 -SHA256 (xpi/firefox-i18n-29.0/hu.xpi) = 518c74f77b1150ee0a17b94cafe09f3b1a84f972bf0fc6912a7ab32f5aedba08 -SIZE (xpi/firefox-i18n-29.0/hu.xpi) = 372533 -SHA256 (xpi/firefox-i18n-29.0/hy-AM.xpi) = 3052a32a950786aa0e540d4b4ae134d43def23141670c3625bcc9c0f35ad22c3 -SIZE (xpi/firefox-i18n-29.0/hy-AM.xpi) = 419572 -SHA256 (xpi/firefox-i18n-29.0/id.xpi) = 9f8d98a8b1546072a3675383252fbef3fd0fa9c4c41c3d3a9e1e50bb19535019 -SIZE (xpi/firefox-i18n-29.0/id.xpi) = 352597 -SHA256 (xpi/firefox-i18n-29.0/is.xpi) = 021226df2158678fecc9d0958b8a9a27a3cd70e584c9f34d0c7fa444870d78ad -SIZE (xpi/firefox-i18n-29.0/is.xpi) = 364694 -SHA256 (xpi/firefox-i18n-29.0/it.xpi) = 80dde52c62e44e3706c3a228f091c1473bd871f3428c8efa0338890310b954f5 -SIZE (xpi/firefox-i18n-29.0/it.xpi) = 304003 -SHA256 (xpi/firefox-i18n-29.0/ja.xpi) = 5f23242ee1cd8045abd7564a095c5ba11bd98283b1530f1e3c29cf5fbce362c4 -SIZE (xpi/firefox-i18n-29.0/ja.xpi) = 405190 -SHA256 (xpi/firefox-i18n-29.0/kk.xpi) = b608322fe2364a15c2f96ed88449dfac1a71621081489677015aba1593eac32a -SIZE (xpi/firefox-i18n-29.0/kk.xpi) = 408438 -SHA256 (xpi/firefox-i18n-29.0/km.xpi) = a86a3d15e836df6f767b7af53ec3cbe9c329716adfacbe14811739c878365d8d -SIZE (xpi/firefox-i18n-29.0/km.xpi) = 438772 -SHA256 (xpi/firefox-i18n-29.0/kn.xpi) = 06bc663cf5bd3c70895ba07133cbe14adf36f08a1c375d8e3a9083ab4cda8981 -SIZE (xpi/firefox-i18n-29.0/kn.xpi) = 421792 -SHA256 (xpi/firefox-i18n-29.0/ko.xpi) = eda45d7394b912213cd1e724cf8b45126c7f60cc15cc7289b11c1abb7112b0e1 -SIZE (xpi/firefox-i18n-29.0/ko.xpi) = 372824 -SHA256 (xpi/firefox-i18n-29.0/ku.xpi) = 6fed426902356d91a149187050e97a88b590064be33a996229e328c9ac2ddb5a -SIZE (xpi/firefox-i18n-29.0/ku.xpi) = 377944 -SHA256 (xpi/firefox-i18n-29.0/lij.xpi) = ffcc04ba6231154b7129225b4f8a62ff81c942940b8d055f38d2c770da5baa46 -SIZE (xpi/firefox-i18n-29.0/lij.xpi) = 353132 -SHA256 (xpi/firefox-i18n-29.0/lt.xpi) = 5f0ab5186966f4ef688d089cc1c02256fd58009023b1a65087243cf47898877d -SIZE (xpi/firefox-i18n-29.0/lt.xpi) = 382910 -SHA256 (xpi/firefox-i18n-29.0/lv.xpi) = 7904ce0bd050e3c7bdc5047af6a8483ec6353d7180bf638f73dc4e86caec41cd -SIZE (xpi/firefox-i18n-29.0/lv.xpi) = 360720 -SHA256 (xpi/firefox-i18n-29.0/mai.xpi) = c900355b017b2d6f823749eb2b59e7138885a106a3f935be9a7e91f50e50380b -SIZE (xpi/firefox-i18n-29.0/mai.xpi) = 410012 -SHA256 (xpi/firefox-i18n-29.0/mk.xpi) = 2beb5a8a7c8d4a824b8901a6cbcaf81297347c4b83b1b55bab8855e0e5e87e6b -SIZE (xpi/firefox-i18n-29.0/mk.xpi) = 411450 -SHA256 (xpi/firefox-i18n-29.0/ml.xpi) = 49995a410b48b0c53ff4994633602f868796c24a28d54bd1260b1f43adc79475 -SIZE (xpi/firefox-i18n-29.0/ml.xpi) = 430792 -SHA256 (xpi/firefox-i18n-29.0/mr.xpi) = 87bd2e7b71bcc21458b5d44dd83d9f2eeb461c53cd74c4a76d4eb2a6cba033c1 -SIZE (xpi/firefox-i18n-29.0/mr.xpi) = 408570 -SHA256 (xpi/firefox-i18n-29.0/ms.xpi) = 07a8b2295a6633ec838a6c8a431faff915b5f92e60d3c36aa92f1d6697bd8a49 -SIZE (xpi/firefox-i18n-29.0/ms.xpi) = 368830 -SHA256 (xpi/firefox-i18n-29.0/nb-NO.xpi) = afea740e93a87b7821fcf7885f8c44d8dcd865d1e2418d05530299ca2471a2d3 -SIZE (xpi/firefox-i18n-29.0/nb-NO.xpi) = 362513 -SHA256 (xpi/firefox-i18n-29.0/nl.xpi) = 36dd807b1b080c45a6b68fae77843d30f4cf7291bd29a61a8cebd509aeb470cd -SIZE (xpi/firefox-i18n-29.0/nl.xpi) = 361308 -SHA256 (xpi/firefox-i18n-29.0/nn-NO.xpi) = 9522236bee6c980595ce05f9320d915a31b272a28a878eeab867329357156a9a -SIZE (xpi/firefox-i18n-29.0/nn-NO.xpi) = 358819 -SHA256 (xpi/firefox-i18n-29.0/or.xpi) = 2b78878aa2c06143887d7f7c1f73f3c2d5c98cba58e06df5d96ecfbf9888e143 -SIZE (xpi/firefox-i18n-29.0/or.xpi) = 423772 -SHA256 (xpi/firefox-i18n-29.0/pa-IN.xpi) = 3a372d31c10dfc267cc381974a365eb4b44b6dd70d3054ac624f84fe3b41801c -SIZE (xpi/firefox-i18n-29.0/pa-IN.xpi) = 401685 -SHA256 (xpi/firefox-i18n-29.0/pl.xpi) = 950ed718076217f4ee11c0a21cdc59005b06757af81a4d5cd028d00dc853c3b0 -SIZE (xpi/firefox-i18n-29.0/pl.xpi) = 354459 -SHA256 (xpi/firefox-i18n-29.0/pt-BR.xpi) = 28d5e2814fa7ac74b9ce44c73b1680d6b2360820f51d373c81fc4fc8304b7a7f -SIZE (xpi/firefox-i18n-29.0/pt-BR.xpi) = 372122 -SHA256 (xpi/firefox-i18n-29.0/pt-PT.xpi) = fd74a1e2243899aae3c39e46a2d101338afa10da731a60f1b94ba6deffa2a9b2 -SIZE (xpi/firefox-i18n-29.0/pt-PT.xpi) = 359723 -SHA256 (xpi/firefox-i18n-29.0/rm.xpi) = 9ed40581c971918ea80b17e21acc8b331519b82ee322c6829e482edda6867914 -SIZE (xpi/firefox-i18n-29.0/rm.xpi) = 362965 -SHA256 (xpi/firefox-i18n-29.0/ro.xpi) = d237497e017ef6764fae81477b1ad6593d6d03c432641e14bc87e88cb1ab30c8 -SIZE (xpi/firefox-i18n-29.0/ro.xpi) = 397540 -SHA256 (xpi/firefox-i18n-29.0/ru.xpi) = 5c58a458ce5aa0cb974bd7c750dd155dd0080385bfe97344bb07ca7070d46f1e -SIZE (xpi/firefox-i18n-29.0/ru.xpi) = 344166 -SHA256 (xpi/firefox-i18n-29.0/si.xpi) = f423bc581a57d4f1e315d3f4e591eee9b0b34b0ad26c7356957684ea80607371 -SIZE (xpi/firefox-i18n-29.0/si.xpi) = 403345 -SHA256 (xpi/firefox-i18n-29.0/sk.xpi) = c6e1d20bb1cead467ef3a4782e48f72fe9d577d2e5bf40aafe0f0700f6d86f88 -SIZE (xpi/firefox-i18n-29.0/sk.xpi) = 375676 -SHA256 (xpi/firefox-i18n-29.0/sl.xpi) = c5b6e6aed27cfa73480b89134786f2a450d4fe0f1879389262f0f6dc9892bcd2 -SIZE (xpi/firefox-i18n-29.0/sl.xpi) = 358502 -SHA256 (xpi/firefox-i18n-29.0/son.xpi) = 482834fa2c49c3bddfb48127d83258c1dde5dfc0cc5fd17fd66304fa65e6dcd8 -SIZE (xpi/firefox-i18n-29.0/son.xpi) = 358441 -SHA256 (xpi/firefox-i18n-29.0/sq.xpi) = f001eece8b1b7fc9eec35084679155802062fedd1aa096c2ba74be8e22682131 -SIZE (xpi/firefox-i18n-29.0/sq.xpi) = 374244 -SHA256 (xpi/firefox-i18n-29.0/sr.xpi) = f590d1a96a5231b4a448ca27bde8ffd2a3721f5c8d628475e4705980013d4c21 -SIZE (xpi/firefox-i18n-29.0/sr.xpi) = 412774 -SHA256 (xpi/firefox-i18n-29.0/sv-SE.xpi) = ccb78f6c29e470b15df6c0b0a1a9186ea6da1e95a01c5acf88d6d5663c0ddd37 -SIZE (xpi/firefox-i18n-29.0/sv-SE.xpi) = 368437 -SHA256 (xpi/firefox-i18n-29.0/ta.xpi) = 3a240719bae5fdd5f1dee8502a573c68d496dbcbb89e40fa2588a8f8cded48d1 -SIZE (xpi/firefox-i18n-29.0/ta.xpi) = 416214 -SHA256 (xpi/firefox-i18n-29.0/te.xpi) = 1a42033323e58bb24a230ccc547498d6b54864e6566ce38f97c8f5bc9dc802b1 -SIZE (xpi/firefox-i18n-29.0/te.xpi) = 429025 -SHA256 (xpi/firefox-i18n-29.0/th.xpi) = 9c91150755449786b400af12067d648f5751e78396bf72f9c604874dcdee5f11 -SIZE (xpi/firefox-i18n-29.0/th.xpi) = 413958 -SHA256 (xpi/firefox-i18n-29.0/tr.xpi) = 49c22b8f7384f83249cd1468e14f9aea657a4196fcf11125bfc44e112b6f93cb -SIZE (xpi/firefox-i18n-29.0/tr.xpi) = 369613 -SHA256 (xpi/firefox-i18n-29.0/uk.xpi) = 2f232cc5a4e4b72e11e4751be8667f5c532952ba5864369e07a9438c25afc317 -SIZE (xpi/firefox-i18n-29.0/uk.xpi) = 399496 -SHA256 (xpi/firefox-i18n-29.0/vi.xpi) = e210ec8c8f985d5c6e31e37e191c35d270c310c647cb6e32cc1bf35e93194348 -SIZE (xpi/firefox-i18n-29.0/vi.xpi) = 386470 -SHA256 (xpi/firefox-i18n-29.0/xh.xpi) = 693c3c04abe48a7bf8e0c13c8192451bb70687581b79da13bf2905499c2150e8 -SIZE (xpi/firefox-i18n-29.0/xh.xpi) = 363925 -SHA256 (xpi/firefox-i18n-29.0/zh-CN.xpi) = fe6b9bb7d2dd6227fb6ea3b5ad7ecca1fb02105f10cecefc232aa9f7bc0c7096 -SIZE (xpi/firefox-i18n-29.0/zh-CN.xpi) = 389326 -SHA256 (xpi/firefox-i18n-29.0/zh-TW.xpi) = 34cf42493ffa140f869b48d6deaa10d43664e7dd7bfea6bd4a979062ef476bc1 -SIZE (xpi/firefox-i18n-29.0/zh-TW.xpi) = 386290 -SHA256 (xpi/firefox-i18n-29.0/zu.xpi) = 0ba903dcf73dcd6255e81eb049c0660eb876caef4c83b5ffbc5e1470a5918bc6 -SIZE (xpi/firefox-i18n-29.0/zu.xpi) = 373428 +SHA256 (xpi/firefox-i18n-30.0b1/ach.xpi) = 682c742bc8ca935b0d847924ce942e3d4aff6d2c9597b5fa8d34b750d79eaeb3 +SIZE (xpi/firefox-i18n-30.0b1/ach.xpi) = 375210 +SHA256 (xpi/firefox-i18n-30.0b1/af.xpi) = 3bb6eb20c56eed119b514aaed489ae75b9940d3811de44068eca3c10e1ec6d9e +SIZE (xpi/firefox-i18n-30.0b1/af.xpi) = 369088 +SHA256 (xpi/firefox-i18n-30.0b1/ar.xpi) = 94aa692063b37c68ec957b2f050b6852a0c07447e348da8bb746219276e839b2 +SIZE (xpi/firefox-i18n-30.0b1/ar.xpi) = 397916 +SHA256 (xpi/firefox-i18n-30.0b1/as.xpi) = 5664b313ae16f9b2fa8d40cf1dde8595d3660a23f6cca821c0d1b65393f83a60 +SIZE (xpi/firefox-i18n-30.0b1/as.xpi) = 416816 +SHA256 (xpi/firefox-i18n-30.0b1/ast.xpi) = 4131c1ad485b2ea4d3e745a76a13990507de69ee51a64ada5ca263bbf38926cd +SIZE (xpi/firefox-i18n-30.0b1/ast.xpi) = 327166 +SHA256 (xpi/firefox-i18n-30.0b1/be.xpi) = f6432ccf85b0fd8f7996fb433cbe9281a6b6a2a305f87c7b9a86c04e69d967b4 +SIZE (xpi/firefox-i18n-30.0b1/be.xpi) = 341622 +SHA256 (xpi/firefox-i18n-30.0b1/bg.xpi) = ac89a4764af9e05480395643516c34dd32f87718a82bdcdb1beb6134c87fbc3c +SIZE (xpi/firefox-i18n-30.0b1/bg.xpi) = 406719 +SHA256 (xpi/firefox-i18n-30.0b1/bn-BD.xpi) = bc74eec26e3b0cbbeaa531634eb7a4daf0920a11a65ab48c644b92fb8085e8c0 +SIZE (xpi/firefox-i18n-30.0b1/bn-BD.xpi) = 428546 +SHA256 (xpi/firefox-i18n-30.0b1/bn-IN.xpi) = e0dbd6deed698be0b7f8a2ac1a3efcdff4a9a1f00ac3b6b67c030e137df550c1 +SIZE (xpi/firefox-i18n-30.0b1/bn-IN.xpi) = 426494 +SHA256 (xpi/firefox-i18n-30.0b1/br.xpi) = ffc1ea754ffef4006ef7d982d7a4003d0122c5c7ac726869fa15389b5818dc85 +SIZE (xpi/firefox-i18n-30.0b1/br.xpi) = 365146 +SHA256 (xpi/firefox-i18n-30.0b1/bs.xpi) = 7dd7508014d76366715a4efd9a0debf2715886d27bf3f8ca76b89f866854a031 +SIZE (xpi/firefox-i18n-30.0b1/bs.xpi) = 373276 +SHA256 (xpi/firefox-i18n-30.0b1/ca.xpi) = 39a2e2ef564fad06664cbfccbd0595b64c837ae13d42be85b5673f146c8d3313 +SIZE (xpi/firefox-i18n-30.0b1/ca.xpi) = 371488 +SHA256 (xpi/firefox-i18n-30.0b1/cs.xpi) = 2df076c60bc05d7d68a2f6f54dbca3c32a6089ae767db2afebf5189976ac4866 +SIZE (xpi/firefox-i18n-30.0b1/cs.xpi) = 366056 +SHA256 (xpi/firefox-i18n-30.0b1/csb.xpi) = 5b854f5906ece170066a82af86078443ce6f80e463e7ee5cb5ca8cb4586f1412 +SIZE (xpi/firefox-i18n-30.0b1/csb.xpi) = 358273 +SHA256 (xpi/firefox-i18n-30.0b1/cy.xpi) = 6e371f251d2b2572499f1053448274a26e0b38b42624faa357ca450fd3ab5473 +SIZE (xpi/firefox-i18n-30.0b1/cy.xpi) = 366037 +SHA256 (xpi/firefox-i18n-30.0b1/da.xpi) = 0e2f6b0655be1c38fca5549e000efca7d727db8ddc2646f82beca2e68d1c269b +SIZE (xpi/firefox-i18n-30.0b1/da.xpi) = 356884 +SHA256 (xpi/firefox-i18n-30.0b1/de.xpi) = 5b35aafbe90675db935c4d64945976b9119d1a57fc29cea03e20b560cf77cfd3 +SIZE (xpi/firefox-i18n-30.0b1/de.xpi) = 366031 +SHA256 (xpi/firefox-i18n-30.0b1/el.xpi) = fa2d4258a5976e1c3052e2f2e1b7c89cf3eca085188e4c3917e91458789ecf5d +SIZE (xpi/firefox-i18n-30.0b1/el.xpi) = 398965 +SHA256 (xpi/firefox-i18n-30.0b1/en-GB.xpi) = 28626eb8c2722247b5b87b7eb82f640f0842b0e238f62a39c8a112fade1bde0f +SIZE (xpi/firefox-i18n-30.0b1/en-GB.xpi) = 353591 +SHA256 (xpi/firefox-i18n-30.0b1/en-US.xpi) = ad48c817e04669f621bc646e63f9d00bac552ac445f5c375ba44fb70d06ef406 +SIZE (xpi/firefox-i18n-30.0b1/en-US.xpi) = 353454 +SHA256 (xpi/firefox-i18n-30.0b1/en-ZA.xpi) = 0d52b5105075f32cc3170fec0af07e864224d0a5a3c2aa2f5f6dbd3ef4f6323b +SIZE (xpi/firefox-i18n-30.0b1/en-ZA.xpi) = 345019 +SHA256 (xpi/firefox-i18n-30.0b1/eo.xpi) = 33abd6adbcc021b0a575e8696c176d5f4ec43ce818f6aac3d6210ca6cad97e11 +SIZE (xpi/firefox-i18n-30.0b1/eo.xpi) = 370144 +SHA256 (xpi/firefox-i18n-30.0b1/es-AR.xpi) = 248fd3b74fd67ba8b241dd4bf75cefce0e18c392c14cb3fb662fd2ec1d8c7752 +SIZE (xpi/firefox-i18n-30.0b1/es-AR.xpi) = 368590 +SHA256 (xpi/firefox-i18n-30.0b1/es-CL.xpi) = 6aa7fef7321cf51d9c99dd4a9a76fc293f561399d295bda93509024c6df710a2 +SIZE (xpi/firefox-i18n-30.0b1/es-CL.xpi) = 315331 +SHA256 (xpi/firefox-i18n-30.0b1/es-ES.xpi) = 0a1fba8ea08eb7d97a05055dceb6783e58bdbc5233c611f164f5b0f3e587b1ca +SIZE (xpi/firefox-i18n-30.0b1/es-ES.xpi) = 306422 +SHA256 (xpi/firefox-i18n-30.0b1/es-MX.xpi) = 7500dad215b4df45ea799473dade85db4b56f71113dd1c6ee39fdf04a421aab5 +SIZE (xpi/firefox-i18n-30.0b1/es-MX.xpi) = 373553 +SHA256 (xpi/firefox-i18n-30.0b1/et.xpi) = 389d0ee5665f0d542c236a9c47f9163a8602c6cc34fe942df647ca005e2e3b33 +SIZE (xpi/firefox-i18n-30.0b1/et.xpi) = 353710 +SHA256 (xpi/firefox-i18n-30.0b1/eu.xpi) = e82517c5b89ca49277ea6bb9a2e25d3b5abff5814b34b0859fe09c3508c7da1d +SIZE (xpi/firefox-i18n-30.0b1/eu.xpi) = 371553 +SHA256 (xpi/firefox-i18n-30.0b1/fa.xpi) = fe42cfee2b7c5540feeff1f01ff0d64700d1e34eaa85b56f2cd1aa8002e9e888 +SIZE (xpi/firefox-i18n-30.0b1/fa.xpi) = 410906 +SHA256 (xpi/firefox-i18n-30.0b1/ff.xpi) = fd2b7d70c1fc9ba740bff02bbbbfaf27389bdc2fe634d5562ca62d0190865361 +SIZE (xpi/firefox-i18n-30.0b1/ff.xpi) = 370695 +SHA256 (xpi/firefox-i18n-30.0b1/fi.xpi) = d73fe35622d060565f0ac6a09df3269ce3f8f5a782f1783ecdc0e506e39b52e3 +SIZE (xpi/firefox-i18n-30.0b1/fi.xpi) = 364263 +SHA256 (xpi/firefox-i18n-30.0b1/fr.xpi) = bda9730a1a17c19927dcb39f5223ef3308db16770604c592a4f5bbbe9f4bd69f +SIZE (xpi/firefox-i18n-30.0b1/fr.xpi) = 377373 +SHA256 (xpi/firefox-i18n-30.0b1/fy-NL.xpi) = be58a095ca6d3c79647b3c73321b198106d341cfa435971c12bbb2bbb1c513ed +SIZE (xpi/firefox-i18n-30.0b1/fy-NL.xpi) = 373140 +SHA256 (xpi/firefox-i18n-30.0b1/ga-IE.xpi) = f5f54981a64cd2ebd16578843194d67d448c2871dd331e454a88e85aaf584712 +SIZE (xpi/firefox-i18n-30.0b1/ga-IE.xpi) = 381260 +SHA256 (xpi/firefox-i18n-30.0b1/gd.xpi) = 9af29a8fe0f477740cf9c4c9a5753cab071a4886f6d9c109a234d5b8645b57a5 +SIZE (xpi/firefox-i18n-30.0b1/gd.xpi) = 378210 +SHA256 (xpi/firefox-i18n-30.0b1/gl.xpi) = 780e6d81979fb9335688cb69a6d8ce1ccf50eef1a65524a478324db7968e47a3 +SIZE (xpi/firefox-i18n-30.0b1/gl.xpi) = 365573 +SHA256 (xpi/firefox-i18n-30.0b1/gu-IN.xpi) = b8c598113619efa0ad5d3dffc0b95b5c18b827da5c8b1f162e8218c49d0ee429 +SIZE (xpi/firefox-i18n-30.0b1/gu-IN.xpi) = 394101 +SHA256 (xpi/firefox-i18n-30.0b1/he.xpi) = afe9ca317606312907d4d8a943b8960d188a8413eb26fc495dde321c25eacb10 +SIZE (xpi/firefox-i18n-30.0b1/he.xpi) = 387624 +SHA256 (xpi/firefox-i18n-30.0b1/hi-IN.xpi) = c43285814d57fa6d1d25e4fff3f1f4acef6f5b7a37c1986587afa24fbcb60d20 +SIZE (xpi/firefox-i18n-30.0b1/hi-IN.xpi) = 412285 +SHA256 (xpi/firefox-i18n-30.0b1/hr.xpi) = 8019caeeb3444dc1cb7e43ad5442658ac5f58645414bd56b7d0085de77235352 +SIZE (xpi/firefox-i18n-30.0b1/hr.xpi) = 377106 +SHA256 (xpi/firefox-i18n-30.0b1/hu.xpi) = 684b186e280a5c1fb7817f427f011c57240d9a51991b835daf6a5a53cce73a06 +SIZE (xpi/firefox-i18n-30.0b1/hu.xpi) = 373675 +SHA256 (xpi/firefox-i18n-30.0b1/hy-AM.xpi) = af796305764a62838d4428eb2d13943c627aa79a0e1b39ea5f5ef4fa7e6da390 +SIZE (xpi/firefox-i18n-30.0b1/hy-AM.xpi) = 420571 +SHA256 (xpi/firefox-i18n-30.0b1/id.xpi) = 91ad2c80112318f994efc7c6fbfde9e31950d05d3d71b56d5303c2680fcc2cc8 +SIZE (xpi/firefox-i18n-30.0b1/id.xpi) = 353461 +SHA256 (xpi/firefox-i18n-30.0b1/is.xpi) = b7b466e8444c5b1beca5c6725c5b74829708e9fcc682aa2c976fa1a0f40f877a +SIZE (xpi/firefox-i18n-30.0b1/is.xpi) = 365853 +SHA256 (xpi/firefox-i18n-30.0b1/it.xpi) = a7103081a9371029138364ba6404eefd8a2625b4972a060ea9a5db70a7514c26 +SIZE (xpi/firefox-i18n-30.0b1/it.xpi) = 304977 +SHA256 (xpi/firefox-i18n-30.0b1/ja.xpi) = 623525497f75481974162b2a0fab1c40f22b1e759bf5d2a345666921da395ff3 +SIZE (xpi/firefox-i18n-30.0b1/ja.xpi) = 405378 +SHA256 (xpi/firefox-i18n-30.0b1/kk.xpi) = a988c979de20f4257b36e88966e7a98137d44a492c0ebe3c3c323d8ebfba5cbc +SIZE (xpi/firefox-i18n-30.0b1/kk.xpi) = 409879 +SHA256 (xpi/firefox-i18n-30.0b1/km.xpi) = 96218acf66eecd587855029847af648ba3bf8d03ee17925351daeeb0cff4b54b +SIZE (xpi/firefox-i18n-30.0b1/km.xpi) = 440410 +SHA256 (xpi/firefox-i18n-30.0b1/kn.xpi) = ffb6fda31b9c7712c74cada3e42ac4c303fc719b4e087c3825d83645521a4755 +SIZE (xpi/firefox-i18n-30.0b1/kn.xpi) = 423623 +SHA256 (xpi/firefox-i18n-30.0b1/ko.xpi) = 9ccb2b80a4f4751effc4705d1495d44efa5779250ee0474ff2474d24a03f7062 +SIZE (xpi/firefox-i18n-30.0b1/ko.xpi) = 374832 +SHA256 (xpi/firefox-i18n-30.0b1/ku.xpi) = bf5e129f8dfc2f65122d20a090c109a5b83e316d7ecf39ca463ca1868830100e +SIZE (xpi/firefox-i18n-30.0b1/ku.xpi) = 379932 +SHA256 (xpi/firefox-i18n-30.0b1/lij.xpi) = 79804d765775efd02af10508485178e32f230a1b6307d684ee42f39475b2aa2e +SIZE (xpi/firefox-i18n-30.0b1/lij.xpi) = 356154 +SHA256 (xpi/firefox-i18n-30.0b1/lt.xpi) = d54fd5cc81a1027af46374937253b6fd1f0830d6b2533e337feab704df82f2cc +SIZE (xpi/firefox-i18n-30.0b1/lt.xpi) = 385252 +SHA256 (xpi/firefox-i18n-30.0b1/lv.xpi) = b6814788fc6d666f2d8ef87fec70107eacc85fb61adde3b41a49689c618b43cb +SIZE (xpi/firefox-i18n-30.0b1/lv.xpi) = 359066 +SHA256 (xpi/firefox-i18n-30.0b1/mai.xpi) = b4c436cc61619d38348e265037e76a2f394571aaff11d6bb80e2c6b8937c5860 +SIZE (xpi/firefox-i18n-30.0b1/mai.xpi) = 412132 +SHA256 (xpi/firefox-i18n-30.0b1/mk.xpi) = 542468eb0ffac0f78ef02330bbd8dfadb56287b575dd6aa232fdc1d94a6eee06 +SIZE (xpi/firefox-i18n-30.0b1/mk.xpi) = 413369 +SHA256 (xpi/firefox-i18n-30.0b1/ml.xpi) = 2f47220f71037590bd82c9e2daba0454213d13b53f74a8cbafceabb047d74bb3 +SIZE (xpi/firefox-i18n-30.0b1/ml.xpi) = 432788 +SHA256 (xpi/firefox-i18n-30.0b1/mr.xpi) = dfa7b3f20a917732b72bfc5bc767214b48cb3dc3c8b2929506656399922e7ea1 +SIZE (xpi/firefox-i18n-30.0b1/mr.xpi) = 410582 +SHA256 (xpi/firefox-i18n-30.0b1/nb-NO.xpi) = 5a470b5333ac104524eefd416b0c01b8f332ea80163d3dbdc85526b18286bda3 +SIZE (xpi/firefox-i18n-30.0b1/nb-NO.xpi) = 364757 +SHA256 (xpi/firefox-i18n-30.0b1/nl.xpi) = d8bfb5496d6b356c9141c3d6eee053339094f8159cda690c1ed82abf9e56c805 +SIZE (xpi/firefox-i18n-30.0b1/nl.xpi) = 362347 +SHA256 (xpi/firefox-i18n-30.0b1/nn-NO.xpi) = 1e209db0f4e46e96a9e090984c806de83b9ce9d7a449890809db7d7a148c2043 +SIZE (xpi/firefox-i18n-30.0b1/nn-NO.xpi) = 360854 +SHA256 (xpi/firefox-i18n-30.0b1/or.xpi) = a2b05b8e2e53048f4b67df88aaa08a9eb486980db7953b470e7261d3c6d7514e +SIZE (xpi/firefox-i18n-30.0b1/or.xpi) = 428969 +SHA256 (xpi/firefox-i18n-30.0b1/pa-IN.xpi) = 7cc17ee12aa912adfc3486c2811b3759bcb312d0a70181a48f580b34080e563a +SIZE (xpi/firefox-i18n-30.0b1/pa-IN.xpi) = 406763 +SHA256 (xpi/firefox-i18n-30.0b1/pl.xpi) = 1ad143f6b2e2f28fd6ea87b0358a2f1f8cd84a78a674a3b59709892fb638dc10 +SIZE (xpi/firefox-i18n-30.0b1/pl.xpi) = 353585 +SHA256 (xpi/firefox-i18n-30.0b1/pt-BR.xpi) = 413a1bbe48287e196768ecbd2b419250c7653b7b0ebaf1c865c417390bf2a126 +SIZE (xpi/firefox-i18n-30.0b1/pt-BR.xpi) = 374433 +SHA256 (xpi/firefox-i18n-30.0b1/pt-PT.xpi) = ac5cb5c3c473cd3592804ffeab93127e46a84b857692236c0be965354d773248 +SIZE (xpi/firefox-i18n-30.0b1/pt-PT.xpi) = 360711 +SHA256 (xpi/firefox-i18n-30.0b1/rm.xpi) = bf3513dbc49cf5341b1cca7f7028e976484c2d794da6e850d61bd8a423206699 +SIZE (xpi/firefox-i18n-30.0b1/rm.xpi) = 370512 +SHA256 (xpi/firefox-i18n-30.0b1/ro.xpi) = fbb03c75f434549b1a1425f19d3665e66a25a95981ffb207bcb1f9b4e5cf935f +SIZE (xpi/firefox-i18n-30.0b1/ro.xpi) = 399531 +SHA256 (xpi/firefox-i18n-30.0b1/ru.xpi) = 2356aeece26c52dac197c70384e1f3c7a59795d3514a20b75c5ffb6abee83021 +SIZE (xpi/firefox-i18n-30.0b1/ru.xpi) = 345472 +SHA256 (xpi/firefox-i18n-30.0b1/si.xpi) = 7ca4706fd3efb3cb997417487c175ba9cdc3a02477289b6ae87635a071490407 +SIZE (xpi/firefox-i18n-30.0b1/si.xpi) = 405110 +SHA256 (xpi/firefox-i18n-30.0b1/sk.xpi) = 0837ab413667ee697aba536bedd16b60499aa6dc7eee767e07c3f19a6dd4c173 +SIZE (xpi/firefox-i18n-30.0b1/sk.xpi) = 376839 +SHA256 (xpi/firefox-i18n-30.0b1/sl.xpi) = b994c807b3badb90b1e26dd9e3caf3468c037266881c5029205eb640f2a39425 +SIZE (xpi/firefox-i18n-30.0b1/sl.xpi) = 358784 +SHA256 (xpi/firefox-i18n-30.0b1/son.xpi) = 8467d97ae942b0f3bac9e8b14de17a12bdb7bd6c4f80852bb401d8783a2346c1 +SIZE (xpi/firefox-i18n-30.0b1/son.xpi) = 360524 +SHA256 (xpi/firefox-i18n-30.0b1/sq.xpi) = 45eb6686d81c4dc9eedd8d8b2f5c9ee0a6ea35eb7774f32e1b83ea8d37a9f946 +SIZE (xpi/firefox-i18n-30.0b1/sq.xpi) = 375454 +SHA256 (xpi/firefox-i18n-30.0b1/sr.xpi) = 157efd965befdb35a5b4d84d10acbde2b61f293e4ca9de02fe6a099f3dc65ab6 +SIZE (xpi/firefox-i18n-30.0b1/sr.xpi) = 414415 +SHA256 (xpi/firefox-i18n-30.0b1/sv-SE.xpi) = 0126e576bc17176821f46e7a8eac55f44d67596d32870d01f89bed8e104a4311 +SIZE (xpi/firefox-i18n-30.0b1/sv-SE.xpi) = 369474 +SHA256 (xpi/firefox-i18n-30.0b1/ta.xpi) = 6dcb2e94ae4bd5b58d0634bcba948c5b5affafa935f28160f94c5233299c06e3 +SIZE (xpi/firefox-i18n-30.0b1/ta.xpi) = 421296 +SHA256 (xpi/firefox-i18n-30.0b1/te.xpi) = 8dfadac2939a34fcdb1d8bac76e8b5d2d2d7e5103b6192376b4118d60d6e763b +SIZE (xpi/firefox-i18n-30.0b1/te.xpi) = 431171 +SHA256 (xpi/firefox-i18n-30.0b1/th.xpi) = fab9c9ee1544e27cb57e96bd13683cff83649fb4547f5f1d4f4d60c4fc3ea8bb +SIZE (xpi/firefox-i18n-30.0b1/th.xpi) = 415962 +SHA256 (xpi/firefox-i18n-30.0b1/tr.xpi) = 4a2e4c033f29c8d48d3bfaa7ecf0fab6160e2134683715750f47324d09d829c4 +SIZE (xpi/firefox-i18n-30.0b1/tr.xpi) = 370708 +SHA256 (xpi/firefox-i18n-30.0b1/uk.xpi) = fd9bc9aececd1106e045de67af453911395b1ffe0019229cb3a213b3c6711624 +SIZE (xpi/firefox-i18n-30.0b1/uk.xpi) = 401698 +SHA256 (xpi/firefox-i18n-30.0b1/vi.xpi) = 64a4e48094bf720b61086a9e45622e33da964008b8476d48c1cc9f14a63a1c35 +SIZE (xpi/firefox-i18n-30.0b1/vi.xpi) = 388350 +SHA256 (xpi/firefox-i18n-30.0b1/zh-CN.xpi) = bbd001373e603e0e85a3ad227c53207d33f96f0b79d71304e2227910a85f7fd1 +SIZE (xpi/firefox-i18n-30.0b1/zh-CN.xpi) = 391676 +SHA256 (xpi/firefox-i18n-30.0b1/zh-TW.xpi) = f41b2fe5617189238825ccd9608382cfcac402f437f0981eb29ba1d34bff61ea +SIZE (xpi/firefox-i18n-30.0b1/zh-TW.xpi) = 387320 +SHA256 (xpi/firefox-i18n-30.0b1/zu.xpi) = fca6557c4c91d241e603d6a97c0713311c11c6e625d7f1d527979ad36ce80ae4 +SIZE (xpi/firefox-i18n-30.0b1/zu.xpi) = 375216 Modified: trunk/www/firefox-nightly/Makefile ============================================================================== --- trunk/www/firefox-nightly/Makefile Mon Apr 28 14:11:55 2014 (r1580) +++ trunk/www/firefox-nightly/Makefile Tue Apr 29 07:51:23 2014 (r1581) @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME= firefox -PORTVERSION= 31.0.${HGREV:C/:.*//} +PORTVERSION= 32.0.${HGREV:C/:.*//} PORTEPOCH= 1 CATEGORIES= www ipv6 MASTER_SITES= https://hg.mozilla.org/integration/mozilla-inbound/archive/ Modified: trunk/www/firefox-nightly/Makefile.hgrev ============================================================================== --- trunk/www/firefox-nightly/Makefile.hgrev Mon Apr 28 14:11:55 2014 (r1580) +++ trunk/www/firefox-nightly/Makefile.hgrev Tue Apr 29 07:51:23 2014 (r1581) @@ -1 +1 @@ -HGREV= 179547:ec50db58f17b +HGREV= 180649:1b3d03b3493d Modified: trunk/www/firefox-nightly/distinfo ============================================================================== --- trunk/www/firefox-nightly/distinfo Mon Apr 28 14:11:55 2014 (r1580) +++ trunk/www/firefox-nightly/distinfo Tue Apr 29 07:51:23 2014 (r1581) @@ -1,2 +1,2 @@ -SHA256 (firefox-nightly/ec50db58f17b.tar.bz2) = 4ab9b15fe33360e41417de2ef55a567388a999c8cc2cb8bea697571c2a5e0d57 -SIZE (firefox-nightly/ec50db58f17b.tar.bz2) = 144390692 +SHA256 (firefox-nightly/1b3d03b3493d.tar.bz2) = cb3c3cdb639f2afe6c154d3414698459f2aa9e6810de3e60916c3e2ed5279a9a +SIZE (firefox-nightly/1b3d03b3493d.tar.bz2) = 144525991 Modified: trunk/www/firefox-nightly/files/patch-z-bug517422 ============================================================================== --- trunk/www/firefox-nightly/files/patch-z-bug517422 Mon Apr 28 14:11:55 2014 (r1580) +++ trunk/www/firefox-nightly/files/patch-z-bug517422 Tue Apr 29 07:51:23 2014 (r1581) @@ -262,30 +262,19 @@ dnl = Disable VP8 decoder support dnl ======================================================== MOZ_ARG_DISABLE_BOOL(webm, -diff --git content/media/AudioStream.cpp content/media/AudioStream.cpp -index 88c8aa6..6b03288 100644 ---- content/media/AudioStream.cpp -+++ content/media/AudioStream.cpp -@@ -13,7 +13,6 @@ - #include "mozilla/Mutex.h" - #include - #include "mozilla/Preferences.h" --#include "soundtouch/SoundTouch.h" - #include "Latency.h" - - namespace mozilla { diff --git content/media/AudioStream.h content/media/AudioStream.h index 085676d..00c54fb 100644 --- content/media/AudioStream.h +++ content/media/AudioStream.h -@@ -15,6 +15,7 @@ - #include "mozilla/StaticMutex.h" +@@ -26,7 +26,7 @@ public: + }; - #include "cubeb/cubeb.h" -+#include "soundtouch/SoundTouch.h" + namespace soundtouch { +-class SoundTouch; ++class MOZ_IMPORT_API SoundTouch; + } - template <> - class nsAutoRefTraits : public nsPointerRefTraits + namespace mozilla { diff --git content/media/Makefile.in content/media/Makefile.in index fd34449..c6c42c8 100644 --- content/media/Makefile.in Modified: trunk/www/firefox/Makefile ============================================================================== --- trunk/www/firefox/Makefile Mon Apr 28 14:11:55 2014 (r1580) +++ trunk/www/firefox/Makefile Tue Apr 29 07:51:23 2014 (r1581) @@ -2,7 +2,7 @@ # $FreeBSD: head/www/firefox/Makefile 339634 2014-01-13 21:00:02Z rene $ PORTNAME= firefox -DISTVERSION= 29.0 +DISTVERSION= 30.0b1 PORTEPOCH= 1 CATEGORIES= www ipv6 MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \ @@ -20,7 +20,7 @@ libvorbis>=1.3.4:${PORTSDIR}/audio/libvorbis \ opus>=1.1:${PORTSDIR}/audio/opus \ libvpx>=1.3.0:${PORTSDIR}/multimedia/libvpx \ - sqlite3>=3.8.2:${PORTSDIR}/databases/sqlite3 \ + sqlite3>=3.8.3.1:${PORTSDIR}/databases/sqlite3 \ ${PYTHON_PKGNAMEPREFIX}sqlite3>0:${PORTSDIR}/databases/py-sqlite3 \ v4l_compat>0:${PORTSDIR}/multimedia/v4l_compat \ zip:${PORTSDIR}/archivers/zip \ @@ -39,7 +39,7 @@ MOZILLA_NAME= Firefox WANT_GNOME= yes -USE_QT4= # empty +USE_QT5= # empty QT_NONSTANDARD= yes ALL_TARGET= default GNU_CONFIGURE= yes @@ -58,7 +58,7 @@ .include "${.CURDIR}/../../www/firefox/Makefile.options" .include -WRKSRC:= ${WRKDIR}/mozilla-release +WRKSRC:= ${WRKDIR}/mozilla-beta # avoid clang 3.2/3.3 crash in js/src/jsgc.cpp on refillFreeList<(js::AllowGC)1> # http://svnweb.freebsd.org/changeset/base/255804 Modified: trunk/www/firefox/distinfo ============================================================================== --- trunk/www/firefox/distinfo Mon Apr 28 14:11:55 2014 (r1580) +++ trunk/www/firefox/distinfo Tue Apr 29 07:51:23 2014 (r1581) @@ -1,2 +1,2 @@ -SHA256 (firefox-29.0.source.tar.bz2) = 64402a1f1359f3ea30767a94977ae823ac25b39c6d54f9fe6db444ed127db892 -SIZE (firefox-29.0.source.tar.bz2) = 143163777 +SHA256 (firefox-30.0b1.source.tar.bz2) = f4439b9bf8e8b2e55e23c3c72a07e16b7f84adf53c6582cff80456bbcbee5f05 +SIZE (firefox-30.0b1.source.tar.bz2) = 142995514 Deleted: trunk/www/firefox/files/patch-bug783463 ============================================================================== --- trunk/www/firefox/files/patch-bug783463 Tue Apr 29 07:51:23 2014 (r1580) +++ /dev/null 00:00:00 1970 (deleted) @@ -1,11 +0,0 @@ ---- gfx/skia/moz.build~ -+++ gfx/skia/moz.build -@@ -190,7 +190,7 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'qt - 'SkFontHost_FreeType_common.cpp', - 'SkOSFile.cpp', - ] -- if CONFIG['OS_TARGET'] == 'Linux': -+ if CONFIG['MOZ_X11'] == 1 or CONFIG['OS_TARGET'] == 'Linux': - EXPORTS.skia += [ - 'include/ports/SkTypeface_cairo.h', - ] Deleted: trunk/www/firefox/files/patch-bug806917 ============================================================================== --- trunk/www/firefox/files/patch-bug806917 Tue Apr 29 07:51:23 2014 (r1580) +++ /dev/null 00:00:00 1970 (deleted) @@ -1,1999 +0,0 @@ -commit cb40a26 -Author: Alessandro Decina -Date: Fri Jan 03 08:16:54 2014 -0800 - - Bug 806917 - support GStreamer 1.0 ---- - configure.in | 66 ++- - content/media/gstreamer/GStreamerAllocator.cpp | 197 +++++++ - 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 | 200 +++++++ - content/media/gstreamer/GStreamerReader.cpp | 632 ++++++++++++++-------- - content/media/gstreamer/GStreamerReader.h | 42 +- - content/media/gstreamer/moz.build | 11 +- - content/media/test/manifest.js | 6 +- - 12 files changed, 1057 insertions(+), 284 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 -+#include -+ -+#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(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 -+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 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) -@@ -85,11 +72,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 -@@ -99,6 +157,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 - #include - --#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 - #pragma GCC diagnostic pop - -+#if GST_VERSION_MAJOR == 1 -+#include -+#include -+#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(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 image; -+ return AllocateVideoBufferFull(aPad, aOffset, aSize, aCaps, aBuf, image); -+} -+ -+GstFlowReturn GStreamerReader::AllocateVideoBufferFull(GstPad* aPad, -+ guint64 aOffset, -+ guint aSize, -+ GstCaps* aCaps, -+ GstBuffer** aBuf, -+ nsRefPtr& aImage) -+{ -+ /* allocate an image using the container */ -+ ImageContainer* container = mDecoder->GetImageContainer(); -+ if (container == nullptr) { -+ return GST_FLOW_ERROR; -+ } -+ PlanarYCbCrImage* img = reinterpret_cast(container->CreateImage(ImageFormat::PLANAR_YCBCR).get()); -+ nsRefPtr 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(aUserData); -+ return reader->EventProbe(aPad, aEvent); -+} -+ -+nsRefPtr GStreamerReader::GetImageFromBuffer(GstBuffer* aBuffer) -+{ -+ if (!GST_IS_MOZ_VIDEO_BUFFER (aBuffer)) -+ return nullptr; -+ -+ nsRefPtr image; -+ GstMozVideoBufferData* bufferdata = reinterpret_cast(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 &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(g_object_new(GST_TYPE_MOZ_GFX_MEMORY_ALLOCATOR, nullptr)); -+ moz_gfx_memory_allocator_set_reader(mAllocator, this); -+ -+ mBufferPool = static_cast(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, -@@ -331,13 +340,12 @@ 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); - -@@ -358,6 +366,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; -@@ -373,21 +383,24 @@ 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)"); - } - - /* 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 -@@ -396,17 +409,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; -@@ -410,7 +428,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 */ -@@ -424,19 +446,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 */ -@@ -451,7 +489,11 @@ nsresult GStreamerReader::CheckSupportedFormats() - } - } - -+#if GST_VERSION_MAJOR >= 1 -+ g_value_unset (&value); -+#else - gst_object_unref(element); -+#endif - done = unsupported; - break; - } -@@ -475,6 +517,8 @@ nsresult GStreamerReader::ResetDecode() - { - nsresult res = NS_OK; - -+ LOG(PR_LOG_DEBUG, "reset decode"); -+ - if (NS_FAILED(MediaDecoderReader::ResetDecode())) { - res = NS_ERROR_FAILURE; - } -@@ -485,6 +529,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; - } -@@ -508,11 +557,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. - */ -@@ -533,24 +584,44 @@ 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 duration = 0; - if (GST_CLOCK_TIME_IS_VALID(GST_BUFFER_DURATION(buffer))) - duration = GST_TIME_AS_USECONDS(GST_BUFFER_DURATION(buffer)); - - int64_t offset = GST_BUFFER_OFFSET(buffer); -+#if GST_VERSION_MAJOR >= 1 -+ GstMapInfo info; -+ gst_buffer_map(buffer, &info, GST_MAP_READ); -+ unsigned int size = info.size; -+#else - unsigned int size = GST_BUFFER_SIZE(buffer); -+#endif - int32_t frames = (size / sizeof(AudioDataValue)) / mInfo.mAudio.mChannels; - ssize_t outSize = static_cast(size / sizeof(AudioDataValue)); - nsAutoArrayPtr data(new AudioDataValue[outSize]); -+#if GST_VERSION_MAJOR >= 1 -+ memcpy(data, info.data, info.size); -+ gst_buffer_unmap(buffer, &info); -+#else - memcpy(data, GST_BUFFER_DATA(buffer), GST_BUFFER_SIZE(buffer)); -+#endif - AudioData* audio = new AudioData(offset, timestamp, duration, - frames, data.forget(), mInfo.mAudio.mChannels); - -@@ -552,7 +620,7 @@ bool GStreamerReader::DecodeAudioData() - } - - bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip, -- int64_t aTimeThreshold) -+ int64_t aTimeThreshold) - { - NS_ASSERTION(mDecoder->OnDecodeThread(), "Should be on decode thread."); - -@@ -571,11 +639,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 - */ -@@ -589,11 +657,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 image; -- GstMozVideoBufferData* bufferdata = reinterpret_cast -- 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 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.get()), -+ isKeyframe, -1, mPicture); - mVideoQueue.Push(video); -+ - gst_buffer_unref(buffer); - - return true; -@@ -698,6 +755,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); - } -@@ -709,7 +770,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 ranges; - resource->GetCachedRanges(ranges); -@@ -731,12 +794,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; -@@ -755,7 +827,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(data + bytesRead), -@@ -780,7 +860,12 @@ void GStreamerReader::ReadAndPushData(guint aLength) - int64_t offset2 = resource->Tell(); - unused << offset2; - -+#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) { -@@ -786,8 +869,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)); -@@ -893,109 +984,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(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& aImage) --{ -- /* allocate an image using the container */ -- ImageContainer* container = mDecoder->GetImageContainer(); -- if (!container) { -- // We don't have an ImageContainer. We probably belong to an