| Index: media/filters/frame_processor.h | 
| diff --git a/media/filters/frame_processor.h b/media/filters/frame_processor.h | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..54505e1412c529d8325d9af83901c4ff57e33112 | 
| --- /dev/null | 
| +++ b/media/filters/frame_processor.h | 
| @@ -0,0 +1,60 @@ | 
| +// Copyright 2014 The Chromium Authors. All rights reserved. | 
| +// Use of this source code is governed by a BSD-style license that can be | 
| +// found in the LICENSE file. | 
| + | 
| +#ifndef MEDIA_FILTERS_FRAME_PROCESSOR_H_ | 
| +#define MEDIA_FILTERS_FRAME_PROCESSOR_H_ | 
| + | 
| +#include "base/basictypes.h" | 
| +#include "base/callback_forward.h" | 
| +#include "base/time/time.h" | 
| +#include "media/base/media_export.h" | 
| +#include "media/base/stream_parser.h" | 
| +#include "media/filters/frame_processor_base.h" | 
| + | 
| +namespace media { | 
| + | 
| +// Helper class that implements Media Source Extension's coded frame processing | 
| +// algorithm. | 
| +class MEDIA_EXPORT FrameProcessor : public FrameProcessorBase { | 
| + public: | 
| +  typedef base::Callback<void(base::TimeDelta)> UpdateDurationCB; | 
| +  explicit FrameProcessor(const UpdateDurationCB& update_duration_cb); | 
| +  virtual ~FrameProcessor(); | 
| + | 
| +  // FrameProcessorBase implementation | 
| +  virtual void SetSequenceMode(bool sequence_mode) OVERRIDE; | 
| +  virtual bool ProcessFrames(const StreamParser::BufferQueue& audio_buffers, | 
| +                             const StreamParser::BufferQueue& video_buffers, | 
| +                             const StreamParser::TextBufferQueueMap& text_map, | 
| +                             base::TimeDelta append_window_start, | 
| +                             base::TimeDelta append_window_end, | 
| +                             bool* new_media_segment, | 
| +                             base::TimeDelta* timestamp_offset) OVERRIDE; | 
| + | 
| + private: | 
| +  // Helper that processes one frame with the coded frame processing algorithm. | 
| +  // Returns false on error or true on success. | 
| +  bool ProcessFrame(scoped_refptr<StreamParserBuffer> frame, | 
| +                    base::TimeDelta append_window_start, | 
| +                    base::TimeDelta append_window_end, | 
| +                    base::TimeDelta* timestamp_offset, | 
| +                    bool* new_media_segment); | 
| + | 
| +  // Sets the need random access point flag on all track buffers to true. | 
| +  void SetAllTrackBuffersNeedRandomAccessPoint(); | 
| + | 
| +  // Tracks the MSE coded frame processing variable of same name. It stores the | 
| +  // highest coded frame end timestamp across all coded frames in the current | 
| +  // coded frame group. It is set to 0 when the SourceBuffer object is created | 
| +  // and gets updated by ProcessFrames(). | 
| +  base::TimeDelta group_end_timestamp_; | 
| + | 
| +  UpdateDurationCB update_duration_cb_; | 
| + | 
| +  DISALLOW_COPY_AND_ASSIGN(FrameProcessor); | 
| +}; | 
| + | 
| +}  // namespace media | 
| + | 
| +#endif  // MEDIA_FILTERS_FRAME_PROCESSOR_H_ | 
|  |