mozilla-nestegg-big-endian.patch
author Wolfgang Rosenauer <wr@rosenauer.org>
Fri, 20 Sep 2019 14:10:22 +0200
branchfirefox69
changeset 1110 9e4b30f05706
parent 1101 a4709640638e
permissions -rw-r--r--
Firefox 69.0.1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1101
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     1
# HG changeset patch
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     2
# Parent  381102061fccdec40efda75c7423a766f68201ba
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     3
Bug-behavior: Youtube-videos using VP9 and opus as audio-codec started loading but did not play
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     4
Reason: While parsing the audio-stream, the sampling frequency (short rate) was wrongly parsed by
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     5
        nestegg, returning 0 all the time. This led to the audio-track reporting that it neither had 
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     6
        valid video nor audio. Which led to an endless-loop in the video state machine.
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     7
Solution: Correct parsing of rate in nestegg, which is a float and cuts of bytes.
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     8
Link: https://github.com/kinetiknz/nestegg/issues/64
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     9
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    10
diff -r 381102061fcc -r 8da4be020b1e media/libnestegg/src/nestegg.c
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    11
--- a/media/libnestegg/src/nestegg.c	Tue Aug 13 07:51:27 2019 +0200
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    12
+++ b/media/libnestegg/src/nestegg.c	Tue Aug 20 07:59:54 2019 +0200
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    13
@@ -768,7 +768,15 @@
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    14
 {
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    15
   union {
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    16
     uint64_t u;
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    17
-    float f;
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    18
+    struct {
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    19
+#if __FLOAT_WORD_ORDER__ == __ORDER_BIG_ENDIAN__
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    20
+      uint32_t _pad;
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    21
+      float f;
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    22
+#else
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    23
+      float f;
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    24
+      uint32_t _pad;
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    25
+#endif
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    26
+    } f;
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    27
     double d;
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    28
   } value;
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    29
   int r;
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    30
@@ -780,7 +788,7 @@
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    31
   if (r != 1)
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    32
     return r;
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    33
   if (length == 4)
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    34
-    *val = value.f;
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    35
+    *val = value.f.f;
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    36
   else
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    37
     *val = value.d;
a4709640638e added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    38
   return 1;