mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
0fd9123eac
This patch was generated by a script. Here's the source of the script for future reference: function convert() { echo "Converting $1 to $2..." find . ! -wholename "*nsprpub*" \ ! -wholename "*security/nss*" \ ! -wholename "*/.hg*" \ ! -wholename "obj-ff-dbg*" \ ! -name nsXPCOMCID.h \ ! -name prtypes.h \ -type f \ \( -iname "*.cpp" \ -o -iname "*.h" \ -o -iname "*.c" \ -o -iname "*.cc" \ -o -iname "*.idl" \ -o -iname "*.ipdl" \ -o -iname "*.ipdlh" \ -o -iname "*.mm" \) | \ xargs -n 1 sed -i -e "s/\b$1\b/$2/g" } convert PRInt8 int8_t convert PRUint8 uint8_t convert PRInt16 int16_t convert PRUint16 uint16_t convert PRInt32 int32_t convert PRUint32 uint32_t convert PRInt64 int64_t convert PRUint64 uint64_t convert PRIntn int convert PRUintn unsigned convert PRSize size_t convert PROffset32 int32_t convert PROffset64 int64_t convert PRPtrdiff ptrdiff_t convert PRFloat64 double
96 lines
3.0 KiB
C++
96 lines
3.0 KiB
C++
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim:set ts=2 sw=2 sts=2 et cindent: */
|
|
/* 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(nsWaveReader_h_)
|
|
#define nsWaveReader_h_
|
|
|
|
#include "nsBuiltinDecoderReader.h"
|
|
|
|
class nsBuiltinDecoder;
|
|
class nsTimeRanges;
|
|
|
|
class nsWaveReader : public nsBuiltinDecoderReader
|
|
{
|
|
public:
|
|
nsWaveReader(nsBuiltinDecoder* aDecoder);
|
|
~nsWaveReader();
|
|
|
|
virtual nsresult Init(nsBuiltinDecoderReader* aCloneDonor);
|
|
virtual bool DecodeAudioData();
|
|
virtual bool DecodeVideoFrame(bool &aKeyframeSkip,
|
|
int64_t aTimeThreshold);
|
|
|
|
virtual bool HasAudio()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
virtual bool HasVideo()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
virtual nsresult ReadMetadata(nsVideoInfo* aInfo,
|
|
nsHTMLMediaElement::MetadataTags** aTags);
|
|
virtual nsresult Seek(int64_t aTime, int64_t aStartTime, int64_t aEndTime, int64_t aCurrentTime);
|
|
virtual nsresult GetBuffered(nsTimeRanges* aBuffered, int64_t aStartTime);
|
|
|
|
// To seek in a buffered range, we just have to seek the stream.
|
|
virtual bool IsSeekableInBufferedRanges() {
|
|
return true;
|
|
}
|
|
|
|
private:
|
|
bool ReadAll(char* aBuf, int64_t aSize, int64_t* aBytesRead = nullptr);
|
|
bool LoadRIFFChunk();
|
|
bool ScanForwardUntil(uint32_t aWantedChunk, uint32_t* aChunkSize);
|
|
bool LoadFormatChunk();
|
|
bool FindDataOffset();
|
|
|
|
// Returns the number of seconds that aBytes represents based on the
|
|
// current audio parameters. e.g. 176400 bytes is 1 second at 16-bit
|
|
// stereo 44.1kHz. The time is rounded to the nearest microsecond.
|
|
double BytesToTime(int64_t aBytes) const;
|
|
|
|
// Returns the number of bytes that aTime represents based on the current
|
|
// audio parameters. e.g. 1 second is 176400 bytes at 16-bit stereo
|
|
// 44.1kHz.
|
|
int64_t TimeToBytes(double aTime) const;
|
|
|
|
// Rounds aBytes down to the nearest complete audio frame. Assumes
|
|
// beginning of byte range is already frame aligned by caller.
|
|
int64_t RoundDownToFrame(int64_t aBytes) const;
|
|
int64_t GetDataLength();
|
|
int64_t GetPosition();
|
|
|
|
/*
|
|
Metadata extracted from the WAVE header. Used to initialize the audio
|
|
stream, and for byte<->time domain conversions.
|
|
*/
|
|
|
|
// Number of samples per second. Limited to range [100, 96000] in LoadFormatChunk.
|
|
uint32_t mSampleRate;
|
|
|
|
// Number of channels. Limited to range [1, 2] in LoadFormatChunk.
|
|
uint32_t mChannels;
|
|
|
|
// Size of a single audio frame, which includes a sample for each channel
|
|
// (interleaved).
|
|
uint32_t mFrameSize;
|
|
|
|
// The sample format of the PCM data.
|
|
nsAudioStream::SampleFormat mSampleFormat;
|
|
|
|
// Size of PCM data stored in the WAVE as reported by the data chunk in
|
|
// the media.
|
|
int64_t mWaveLength;
|
|
|
|
// Start offset of the PCM data in the media stream. Extends mWaveLength
|
|
// bytes.
|
|
int64_t mWavePCMOffset;
|
|
};
|
|
|
|
#endif
|