Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(60)

Side by Side Diff: media/filters/video_decode_engine.h

Issue 3156046: Changed mft_h264_decoder's API to match with video_decode_engine.h. Also chan... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | media/media.gyp » ('j') | media/mf/mft_h264_decoder.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef MEDIA_FILTERS_VIDEO_DECODE_ENGINE_H_ 5 #ifndef MEDIA_FILTERS_VIDEO_DECODE_ENGINE_H_
6 #define MEDIA_FILTERS_VIDEO_DECODE_ENGINE_H_ 6 #define MEDIA_FILTERS_VIDEO_DECODE_ENGINE_H_
7 7
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "media/base/video_frame.h" 10 #include "media/base/video_frame.h"
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 65
66 // Initial Stream Info. Only part of them could be valid. 66 // Initial Stream Info. Only part of them could be valid.
67 // If they are not valid, Engine should update with OnFormatChange. 67 // If they are not valid, Engine should update with OnFormatChange.
68 VideoStreamInfo stream_info_; 68 VideoStreamInfo stream_info_;
69 }; 69 };
70 70
71 class VideoDecodeEngine : public base::RefCountedThreadSafe<VideoDecodeEngine> { 71 class VideoDecodeEngine : public base::RefCountedThreadSafe<VideoDecodeEngine> {
72 public: 72 public:
73 struct EventHandler { 73 struct EventHandler {
74 public: 74 public:
75 virtual ~EventHandler() {}
Alpha Left Google 2010/08/24 23:03:33 good catch.
75 virtual void OnInitializeComplete(const VideoCodecInfo& info) = 0; 76 virtual void OnInitializeComplete(const VideoCodecInfo& info) = 0;
76 virtual void OnUninitializeComplete() = 0; 77 virtual void OnUninitializeComplete() = 0;
77 virtual void OnFlushComplete() = 0; 78 virtual void OnFlushComplete() = 0;
78 virtual void OnSeekComplete() = 0; 79 virtual void OnSeekComplete() = 0;
79 virtual void OnError() = 0; 80 virtual void OnError() = 0;
80 virtual void OnFormatChange(VideoStreamInfo stream_info) = 0; 81 virtual void OnFormatChange(VideoStreamInfo stream_info) = 0;
81 virtual void OnEmptyBufferCallback(scoped_refptr<Buffer> buffer) = 0; 82 virtual void OnEmptyBufferCallback(scoped_refptr<Buffer> buffer) = 0;
82 virtual void OnFillBufferCallback(scoped_refptr<VideoFrame> frame) = 0; 83 virtual void OnFillBufferCallback(scoped_refptr<VideoFrame> frame) = 0;
83 }; 84 };
84 85
85 VideoDecodeEngine() {} 86 VideoDecodeEngine() {}
86 virtual ~VideoDecodeEngine() {} 87 virtual ~VideoDecodeEngine() {}
87 88
88 // Initialized the engine with specified configuration. |message_loop| could 89 // Initialized the engine with specified configuration. |message_loop| could
89 // be NULL if every operation is synchronous. Engine should call the 90 // be NULL if every operation is synchronous. Engine should call the
90 // EventHandler::OnInitializeDone() no matter finished successfully or not. 91 // EventHandler::OnInitializeDone() no matter finished successfully or not.
91 // TODO(jiesun): remove message_loop and create thread inside openmax engine? 92 // TODO(jiesun): remove message_loop and create thread inside openmax engine?
92 // or create thread in GpuVideoDecoder and pass message loop here? 93 // or create thread in GpuVideoDecoder and pass message loop here?
93 virtual void Initialize(MessageLoop* message_loop, 94 virtual void Initialize(MessageLoop* message_loop,
94 EventHandler* event_handler, 95 EventHandler* event_handler,
95 const VideoCodecConfig& config) = 0; 96 const VideoCodecConfig& config) = 0;
96 97
97 // Uninitialize the engine. Engine should destroy all resources and call 98 // Uninitialize the engine. Engine should destroy all resources and call
98 // EventHandler::OnInitializeDone(). 99 // EventHandler::OnUninitializeComplete().
99 virtual void Uninitialize() = 0; 100 virtual void Uninitialize() = 0;
100 101
101 // Flush the engine. Engine should return all the buffers to owner ( which 102 // Flush the engine. Engine should return all the buffers to owner ( which
102 // could be itself. ) then call EventHandler::OnFlushDone(). 103 // could be itself. ) then call EventHandler::OnFlushDone().
103 virtual void Flush() = 0; 104 virtual void Flush() = 0;
104 105
105 // Used in openmax to InitialReadBuffers(). 106 // Used in openmax to InitialReadBuffers().
106 virtual void Seek() = 0; // TODO(jiesun): Do we need this? 107 virtual void Seek() = 0; // TODO(jiesun): Do we need this?
107 108
108 // Buffer exchange method for input and output stream. 109 // Buffer exchange method for input and output stream.
109 // These functions and callbacks could be used in two scenarios for both 110 // These functions and callbacks could be used in two scenarios for both
110 // input and output streams: 111 // input and output streams:
111 // 1. Engine provide buffers. 112 // 1. Engine provide buffers.
112 // 2. Outside party provide buffers. 113 // 2. Outside party provide buffers.
113 // The currently planned engine implementation: 114 // The currently planned engine implementation:
114 // 1. provides the input buffer request inside engine through 115 // 1. provides the input buffer request inside engine through
115 // |EmptyThisBufferCallback|. The engine implementation has better knowledge 116 // |EmptyThisBufferCallback|. The engine implementation has better knowledge
116 // of the decoder reordering delay and jittery removal requirements. Input 117 // of the decoder reordering delay and jittery removal requirements. Input
117 // buffers are returned into engine through |EmptyThisBuffer|. 118 // buffers are returned into engine through |EmptyThisBuffer|.
118 // 2. Output buffers are provided from outside the engine, and feed into 119 // 2. Output buffers are provided from outside the engine, and feed into
119 // engine through |FillThisBuffer|. Output buffers are returned to outside 120 // engine through |FillThisBuffer|. Output buffers are returned to outside
120 // by |FillThisBufferCallback|. 121 // by |FillThisBufferCallback|.
121 virtual void EmptyThisBuffer(scoped_refptr<Buffer> buffer) = 0; 122 virtual void EmptyThisBuffer(scoped_refptr<Buffer> buffer) = 0;
122 virtual void FillThisBuffer(scoped_refptr<VideoFrame> frame) = 0; 123 virtual void FillThisBuffer(scoped_refptr<VideoFrame> frame) = 0;
123 }; 124 };
124 125
125 } // namespace media 126 } // namespace media
126 127
127 #endif // MEDIA_FILTERS_VIDEO_DECODE_ENGINE_H_ 128 #endif // MEDIA_FILTERS_VIDEO_DECODE_ENGINE_H_
OLDNEW
« no previous file with comments | « no previous file | media/media.gyp » ('j') | media/mf/mft_h264_decoder.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698