mozilla-nestegg-big-endian.patch
branchfirefox68
changeset 1101 a4709640638e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mozilla-nestegg-big-endian.patch	Thu Sep 05 08:03:30 2019 +0200
@@ -0,0 +1,38 @@
+# HG changeset patch
+# Parent  381102061fccdec40efda75c7423a766f68201ba
+Bug-behavior: Youtube-videos using VP9 and opus as audio-codec started loading but did not play
+Reason: While parsing the audio-stream, the sampling frequency (short rate) was wrongly parsed by
+        nestegg, returning 0 all the time. This led to the audio-track reporting that it neither had 
+        valid video nor audio. Which led to an endless-loop in the video state machine.
+Solution: Correct parsing of rate in nestegg, which is a float and cuts of bytes.
+Link: https://github.com/kinetiknz/nestegg/issues/64
+
+diff -r 381102061fcc -r 8da4be020b1e media/libnestegg/src/nestegg.c
+--- a/media/libnestegg/src/nestegg.c	Tue Aug 13 07:51:27 2019 +0200
++++ b/media/libnestegg/src/nestegg.c	Tue Aug 20 07:59:54 2019 +0200
+@@ -768,7 +768,15 @@
+ {
+   union {
+     uint64_t u;
+-    float f;
++    struct {
++#if __FLOAT_WORD_ORDER__ == __ORDER_BIG_ENDIAN__
++      uint32_t _pad;
++      float f;
++#else
++      float f;
++      uint32_t _pad;
++#endif
++    } f;
+     double d;
+   } value;
+   int r;
+@@ -780,7 +788,7 @@
+   if (r != 1)
+     return r;
+   if (length == 4)
+-    *val = value.f;
++    *val = value.f.f;
+   else
+     *val = value.d;
+   return 1;