| Index: media/filters/ffmpeg_demuxer.h
|
| diff --git a/media/filters/ffmpeg_demuxer.h b/media/filters/ffmpeg_demuxer.h
|
| index bd223ab9ccb8c5fb115e67bd409bd5d80d1bb65c..73500fd9438d5474950a624a5f16453cbcc719ef 100644
|
| --- a/media/filters/ffmpeg_demuxer.h
|
| +++ b/media/filters/ffmpeg_demuxer.h
|
| @@ -271,6 +271,10 @@ class MEDIA_EXPORT FFmpegDemuxer : public Demuxer {
|
| // FFmpeg callbacks during seeking.
|
| void OnSeekFrameDone(int result);
|
|
|
| + // Called when FFmpeg completes seek initiated in OnSelectedVideoTrackChanged
|
| + // in order to restart the |stream|.
|
| + void OnSeekDoneForRestartingStream(FFmpegDemuxerStream* stream, int result);
|
| +
|
| // FFmpeg callbacks during reading + helper method to initiate reads.
|
| void ReadFrameIfNeeded();
|
| void OnReadFrameDone(ScopedAVPacket packet, int result);
|
| @@ -299,6 +303,16 @@ class MEDIA_EXPORT FFmpegDemuxer : public Demuxer {
|
|
|
| void SetLiveness(DemuxerStream::Liveness liveness);
|
|
|
| + // Do an FFmpeg seek such that the read position is adjusted to be able to
|
| + // restart playback from the |time| position. If the |preferred_stream| is not
|
| + // null then it is used for seeking, otherwise the preferred stream is
|
| + // selected by FindPreferredStreamForSeeking function. When the seek is
|
| + // completed the |ffmpeg_seek_done_cb| will be called with FFmpeg result.
|
| + using FFmpegSeekDoneCB = base::Callback<void(int ffmpeg_result)>;
|
| + void SeekInternal(base::TimeDelta time,
|
| + FFmpegDemuxerStream* preferred_stream,
|
| + const FFmpegSeekDoneCB& ffmpeg_seek_done_cb);
|
| +
|
| DemuxerHost* host_;
|
|
|
| scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
|
| @@ -379,6 +393,9 @@ class MEDIA_EXPORT FFmpegDemuxer : public Demuxer {
|
|
|
| std::map<MediaTrack::Id, FFmpegDemuxerStream*> track_id_to_demux_stream_map_;
|
|
|
| + int64_t last_packet_pos_;
|
| + FFmpegDemuxerStream* restarting_stream_;
|
| +
|
| // NOTE: Weak pointers must be invalidated before all other member variables.
|
| base::WeakPtr<FFmpegDemuxer> weak_this_;
|
| base::WeakPtrFactory<FFmpegDemuxer> cancel_pending_seek_factory_;
|
|
|