Since changes for bug 1217625, the node and downstream nodes won't be made
inactive until after downstream nodes have done their processing, and so there
is no need to wait for the first silent output block.
This essentially reverts 5c607f3f39d55544838f3111ede9e11a00d3c25e.
--HG--
extra : rebase_source : f449c427b580239f9072cc7c580585f10b69608f
ratioDen can be large when playbackRate is low.
Subsample skipping is limited to uint32_t values supported by speex resampler.
--HG--
extra : rebase_source : 26a14f212b5fd3fdd62820f458db3a7cf3673e93
extra : histedit_source : 733829a4b2ba6aab7c651f362dbc47553f9dfc59
"The behavior of an expression of the form E1 op = E2 is equivalent to E1 = E1
op E2 except that E1 is evaluated only once", which means that the subtraction
of -= was happening before conversion from double to unsigned int.
The "+ 0.5" was subtracted before the truncation toward zero, causing rounding
to nearest minus one, except when nearest was zero.
--HG--
extra : rebase_source : 3b2335da7a244245ea2fcf5c80760dc1645e6dae
The bulk of this commit was generated with a script, executed at the top
level of a typical source code checkout. The only non-machine-generated
part was modifying MFBT's moz.build to reflect the new naming.
CLOSED TREE makes big refactorings like this a piece of cake.
# The main substitution.
find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \
xargs perl -p -i -e '
s/nsRefPtr\.h/RefPtr\.h/g; # handle includes
s/nsRefPtr ?</RefPtr</g; # handle declarations and variables
'
# Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h.
perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h
# Handle nsRefPtr.h itself, a couple places that define constructors
# from nsRefPtr, and code generators specially. We do this here, rather
# than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename
# things like nsRefPtrHashtable.
perl -p -i -e 's/nsRefPtr/RefPtr/g' \
mfbt/nsRefPtr.h \
xpcom/glue/nsCOMPtr.h \
xpcom/base/OwningNonNull.h \
ipc/ipdl/ipdl/lower.py \
ipc/ipdl/ipdl/builtin.py \
dom/bindings/Codegen.py \
python/lldbutils/lldbutils/utils.py
# In our indiscriminate substitution above, we renamed
# nsRefPtrGetterAddRefs, the class behind getter_AddRefs. Fix that up.
find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \
xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g'
if [ -d .git ]; then
git mv mfbt/nsRefPtr.h mfbt/RefPtr.h
else
hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h
fi
--HG--
rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
This is immediately useful for making the track unnecessary, but will also be
required when switching to the destination node stream for tracking time (bug
1205558) because using GetCurrentPosition() on the destination node stream
would give different results depending on the stream processing order (when
called during processing of streams not strictly upstream from the destination
node).
--HG--
extra : rebase_source : 7a3432b2e6a20fa3f42be05776c178dfda64d166
This allows simpler processing of the finished state to mark the node as an
inactive input of any downstream nodes. Otherwise the input could not be
considered inactive until after downstream nodes have finished processing,
but ProcessInput() may not be called again on finished streams.
AudioBufferSourceNode now behaves the same as OscillatorNode and similarly
to nodes that release a playing ref.
--HG--
extra : rebase_source : 1268ca8f561fee2a43ba17f5fe3abc804486a50c
This allows simpler processing of the finished state to mark the node as an
inactive input of any downstream nodes. Otherwise the input could not be
considered inactive until after downstream nodes have finished processing,
but ProcessInput() may not be called again on finished streams.
AudioBufferSourceNode now behaves the same as OscillatorNode and similarly
to nodes that release a playing ref.
--HG--
extra : rebase_source : 0b3c7123f916fce36f852785c1e0b2a7c7013600
The ThreadSharedFloatArrayBufferList may be null even when there is a buffer
if one of its arrays has been neutered.
SAMPLE_RATE is used instead of BUFFEREND to detect whether start() and buffer
have been received because buffers can have zero length when acquiring the
contents returns "zero-length channel data buffers", although this zero-length
is not yet implemented.
LOOP and BUFFEREND are reset when the buffer is set to null to end playback.
--HG--
extra : rebase_source : f247ca61e045ff548180da5c8c6e521e944620be
I think the limits on sample rates already ensure that mBufferPosition will
not overflow, but this makes sure that there are no out of bounds reads.
The node checks the parameters are > 0 before sending to the engine.
--HG--
extra : rebase_source : 3547c7a6ed8bd1e30a34c8c402a1c339ecb89ac2
MediaStreamAudioDestinationNode does not need any main thread events because
mDOMStream provides GetCurrentTime to consumers.
MediaRecoder also does not use main thread current time.
--HG--
extra : rebase_source : e022dc12e8a0e67c70d4a617449e28e76288b57e
The bulk of this commit was generated by running:
run-clang-tidy.py \
-checks='-*,llvm-namespace-comment' \
-header-filter=^/.../mozilla-central/.* \
-fix
Because these nodes are only registered on PannerNodes if they have a
stream, they need only be unregistered once after the stream is destroyed.
Previously unregistration happened on finish, unlink, and destructor.
--HG--
extra : rebase_source : 7dab08fe4b5648e2a04495d6f570727684247f51
Backed out changeset 1dcfd15bb387 (bug 974089)
Backed out changeset 8c6a7d5efe3a (bug 974089)
Backed out changeset e511c79f2211 (bug 974089)
CLOSED TREE