Bug 1103848 - Part 2. Use a single source for audio/video track ID constants. r=roc

This commit is contained in:
Andreas Pehrson 2014-11-26 21:09:00 +01:00
parent 2debf3b941
commit b30333304c
4 changed files with 19 additions and 22 deletions

View File

@ -15,7 +15,6 @@
#include "MediaStreamGraph.h"
#include "AudioStreamTrack.h"
#include "VideoStreamTrack.h"
#include "MediaEngine.h"
using namespace mozilla;
using namespace mozilla::dom;

View File

@ -48,6 +48,12 @@ class MediaTrackListListener;
class MediaStreamDirectListener;
// For classes that need fixed track IDs
enum {
kVideoTrack = 1,
kAudioTrack = 2
};
#define NS_DOMMEDIASTREAM_IID \
{ 0x8cb65468, 0x66c0, 0x444e, \
{ 0x89, 0x9f, 0x89, 0x1d, 0x9e, 0xd2, 0xbe, 0x7c } }

View File

@ -36,6 +36,7 @@
#include "mozilla/Preferences.h"
#include "gfx2DGlue.h"
#include "nsPrintfCString.h"
#include "DOMMediaStream.h"
#include <algorithm>
@ -356,9 +357,6 @@ static void WriteVideoToMediaStream(MediaStream* aStream,
aOutput->AppendFrame(image.forget(), duration, aIntrinsicSize);
}
static const TrackID TRACK_AUDIO = 1;
static const TrackID TRACK_VIDEO = 2;
void MediaDecoderStateMachine::SendStreamData()
{
NS_ASSERTION(OnDecodeThread() || OnStateMachineThread(),
@ -394,14 +392,14 @@ void MediaDecoderStateMachine::SendStreamData()
if (!stream->mStreamInitialized) {
if (mInfo.HasAudio()) {
AudioSegment* audio = new AudioSegment();
mediaStream->AddAudioTrack(TRACK_AUDIO, mInfo.mAudio.mRate, 0, audio);
stream->mStream->DispatchWhenNotEnoughBuffered(TRACK_AUDIO,
mediaStream->AddAudioTrack(kAudioTrack, mInfo.mAudio.mRate, 0, audio);
stream->mStream->DispatchWhenNotEnoughBuffered(kAudioTrack,
GetStateMachineThread(), GetWakeDecoderRunnable());
}
if (mInfo.HasVideo()) {
VideoSegment* video = new VideoSegment();
mediaStream->AddTrack(TRACK_VIDEO, 0, video);
stream->mStream->DispatchWhenNotEnoughBuffered(TRACK_VIDEO,
mediaStream->AddTrack(kVideoTrack, 0, video);
stream->mStream->DispatchWhenNotEnoughBuffered(kVideoTrack,
GetStateMachineThread(), GetWakeDecoderRunnable());
}
stream->mStreamInitialized = true;
@ -417,10 +415,10 @@ void MediaDecoderStateMachine::SendStreamData()
SendStreamAudio(audio[i], stream, &output);
}
if (output.GetDuration() > 0) {
mediaStream->AppendToTrack(TRACK_AUDIO, &output);
mediaStream->AppendToTrack(kAudioTrack, &output);
}
if (AudioQueue().IsFinished() && !stream->mHaveSentFinishAudio) {
mediaStream->EndTrack(TRACK_AUDIO);
mediaStream->EndTrack(kAudioTrack);
stream->mHaveSentFinishAudio = true;
}
minLastAudioPacketTime = std::min(minLastAudioPacketTime, stream->mLastAudioPacketTime);
@ -462,10 +460,10 @@ void MediaDecoderStateMachine::SendStreamData()
}
}
if (output.GetDuration() > 0) {
mediaStream->AppendToTrack(TRACK_VIDEO, &output);
mediaStream->AppendToTrack(kVideoTrack, &output);
}
if (VideoQueue().IsFinished() && !stream->mHaveSentFinishVideo) {
mediaStream->EndTrack(TRACK_VIDEO);
mediaStream->EndTrack(kVideoTrack);
stream->mHaveSentFinishVideo = true;
}
endPosition = std::max(endPosition,
@ -531,10 +529,10 @@ bool MediaDecoderStateMachine::HaveEnoughDecodedAudio(int64_t aAmpleAudioUSecs)
DecodedStreamData* stream = mDecoder->GetDecodedStream();
if (stream && stream->mStreamInitialized && !stream->mHaveSentFinishAudio) {
if (!stream->mStream->HaveEnoughBuffered(TRACK_AUDIO)) {
if (!stream->mStream->HaveEnoughBuffered(kAudioTrack)) {
return false;
}
stream->mStream->DispatchWhenNotEnoughBuffered(TRACK_AUDIO,
stream->mStream->DispatchWhenNotEnoughBuffered(kAudioTrack,
GetStateMachineThread(), GetWakeDecoderRunnable());
}
@ -551,10 +549,10 @@ bool MediaDecoderStateMachine::HaveEnoughDecodedVideo()
DecodedStreamData* stream = mDecoder->GetDecodedStream();
if (stream && stream->mStreamInitialized && !stream->mHaveSentFinishVideo) {
if (!stream->mStream->HaveEnoughBuffered(TRACK_VIDEO)) {
if (!stream->mStream->HaveEnoughBuffered(kVideoTrack)) {
return false;
}
stream->mStream->DispatchWhenNotEnoughBuffered(TRACK_VIDEO,
stream->mStream->DispatchWhenNotEnoughBuffered(kVideoTrack,
GetStateMachineThread(), GetWakeDecoderRunnable());
}

View File

@ -39,12 +39,6 @@ enum MediaEngineState {
kReleased
};
// We only support 1 audio and 1 video track for now.
enum {
kVideoTrack = 1,
kAudioTrack = 2
};
// includes everything from dom::MediaSourceEnum (really video sources), plus audio sources
enum MediaSourceType {
Camera = (int) dom::MediaSourceEnum::Camera,