void MediaEncoder::NotifyQueuedTrackChanges(MediaStreamGraph* aGraph, TrackID aID, StreamTime aTrackOffset, TrackEventCommand aTrackEvents, const MediaSegment& aQueuedMedia, MediaStream* aInputStream, TrackID aInputTrackID) { if (!mDirectConnected) { NotifyRealtimeData(aGraph, aID, aTrackOffset, aTrackEvents, aQueuedMedia); } else { if (aTrackEvents != TrackEventCommand::TRACK_EVENT_NONE) { // forward events (TRACK_EVENT_ENDED) but not the media if (aQueuedMedia.GetType() == MediaSegment::VIDEO) { VideoSegment segment; NotifyRealtimeData(aGraph, aID, aTrackOffset, aTrackEvents, segment); } else { AudioSegment segment; NotifyRealtimeData(aGraph, aID, aTrackOffset, aTrackEvents, segment); } } if (mSuspended == RECORD_RESUMED) { if (mVideoEncoder) { if (aQueuedMedia.GetType() == MediaSegment::VIDEO) { // insert a null frame of duration equal to the first segment passed // after Resume(), so it'll get added to one of the DirectListener frames VideoSegment segment; gfx::IntSize size(0,0); segment.AppendFrame(nullptr, aQueuedMedia.GetDuration(), size, PRINCIPAL_HANDLE_NONE); mVideoEncoder->NotifyQueuedTrackChanges(aGraph, aID, aTrackOffset, aTrackEvents, segment); mSuspended = RECORD_NOT_SUSPENDED; } } else { mSuspended = RECORD_NOT_SUSPENDED; // no video } } } }
void MediaEncoder::NotifyQueuedAudioData(MediaStreamGraph* aGraph, TrackID aID, StreamTime aTrackOffset, const AudioSegment& aQueuedMedia, MediaStream* aInputStream, TrackID aInputTrackID) { if (!mDirectConnected) { NotifyRealtimeData(aGraph, aID, aTrackOffset, 0, aQueuedMedia); } }
void MediaEncoder::NotifyQueuedTrackChanges(MediaStreamGraph* aGraph, TrackID aID, StreamTime aTrackOffset, TrackEventCommand aTrackEvents, const MediaSegment& aQueuedMedia, MediaStream* aInputStream, TrackID aInputTrackID) { if (!mDirectConnected) { NotifyRealtimeData(aGraph, aID, aTrackOffset, aTrackEvents, aQueuedMedia); } else { if (aTrackEvents != TrackEventCommand::TRACK_EVENT_NONE) { // forward events (TRACK_EVENT_ENDED) but not the media if (aQueuedMedia.GetType() == MediaSegment::VIDEO) { VideoSegment segment; NotifyRealtimeData(aGraph, aID, aTrackOffset, aTrackEvents, segment); } else { AudioSegment segment; NotifyRealtimeData(aGraph, aID, aTrackOffset, aTrackEvents, segment); } } } }
void MediaEncoder::NotifyQueuedAudioData(MediaStreamGraph* aGraph, TrackID aID, StreamTime aTrackOffset, const AudioSegment& aQueuedMedia, MediaStream* aInputStream, TrackID aInputTrackID) { if (!mDirectConnected) { NotifyRealtimeData(aGraph, aID, aTrackOffset, 0, aQueuedMedia); } else { if (mSuspended == RECORD_RESUMED) { if (!mVideoEncoder) { mSuspended = RECORD_NOT_SUSPENDED; // no video } } } }