Bug 1320895 - Correct ADTS frame size calculation. r?gerald draft
authorRalph Giles <giles@mozilla.com>
Wed, 30 Nov 2016 13:23:18 -0800
changeset 446111 668bb052cf647462f583b03791c39f2e8ded908c
parent 446110 65020cb7d971094dec55cda1c8d9d61b4d802285
child 446113 e0736ce1a72e705f4ec2839d7ae0295edb7cbfba
child 446114 d41bfcc2e9385c94a5623d3c7e2e9ca33b50ccc5
child 446127 04d7d5587407b0663ef650637a6b4e43e06ea020
push id37696
push userbmo:giles@thaumas.net
push dateWed, 30 Nov 2016 22:43:22 +0000
reviewersgerald
bugs1320895
milestone53.0a1
Bug 1320895 - Correct ADTS frame size calculation. r?gerald This should be bitwise OR rather than logical OR, which just returns 1. This code has clearly never worked, but it isn't currently called. MozReview-Commit-ID: 9Iuy7a7P85O
dom/media/mediasource/ContainerParser.cpp
--- a/dom/media/mediasource/ContainerParser.cpp
+++ b/dom/media/mediasource/ContainerParser.cpp
@@ -579,18 +579,18 @@ public:
     }
     uint8_t frequency_index = ((*aData)[2] & 0x3c) >> 2;
     MOZ_ASSERT(frequency_index < 16);
     if (frequency_index == 15) {
       MSE_DEBUG(ADTSContainerParser, "explicit frequency disallowed.");
       return false;
     }
     size_t header_length = have_crc ? 9 : 7;
-    size_t data_length = (((*aData)[3] & 0x03) << 11) ||
-                         (((*aData)[4] & 0xff) << 3) ||
+    size_t data_length = (((*aData)[3] & 0x03) << 11) |
+                         (((*aData)[4] & 0xff) << 3) |
                          (((*aData)[5] & 0xe0) >> 5);
     uint8_t frames = ((*aData)[6] & 0x03) + 1;
     MOZ_ASSERT(frames > 0);
     MOZ_ASSERT(frames < 4);
 
     // Return successfully parsed data.
     header.header_length = header_length;
     header.frame_length = header_length + data_length;