Index: media/cast/sender/video_frame_factory.h |
diff --git a/media/cast/sender/video_frame_factory.h b/media/cast/sender/video_frame_factory.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3c23f88020b26f0e9c449c8d7e7571c5960c2e5b |
--- /dev/null |
+++ b/media/cast/sender/video_frame_factory.h |
@@ -0,0 +1,42 @@ |
+// 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_CAST_SENDER_VIDEO_FRAME_FACTORY_H_ |
+#define MEDIA_CAST_SENDER_VIDEO_FRAME_FACTORY_H_ |
+ |
+#include "base/memory/scoped_ptr.h" |
+#include "base/time/time.h" |
+ |
+namespace media { |
+ |
+class VideoFrame; |
+ |
+namespace cast { |
+ |
+// Interface for an object capable of vending video frames. There is no |
+// requirement for a |VideoFrameFactory| to be concurrent but it must not be |
+// pinned to a specific thread. Indeed, |VideoFrameFactory| implementations are |
+// created by cast on the main cast thread then used by unknown client threads |
+// via the |VideoFrameInput| interface. |
+// |
+// Clients are responsible for serialzing access to a |VideoFrameFactory|. |
+// Generally speaking, it is expected that a client will be using these objects |
+// from a rendering thread or callback (which may execute on different threads |
+// but never concurrently with itself). Forcing every implementation to take a |
+// lock, even with no contention, is an unnecessary cost, especially on mobile |
+// platforms. |
+class VideoFrameFactory { |
+ public: |
+ virtual ~VideoFrameFactory() {} |
+ |
+ // Creates a |VideoFrame| suitable for input via |InsertRawVideoFrame|. Frames |
+ // obtained in this manner may provide benefits such memory reuse and affinity |
+ // with the encoder. The format is guaranteed to be I420 or NV12. |
+ virtual scoped_refptr<VideoFrame> CreateFrame(base::TimeDelta timestamp) = 0; |
+}; |
+ |
+} // namespace cast |
+} // namespace media |
+ |
+#endif // MEDIA_CAST_SENDER_VIDEO_FRAME_FACTORY_H_ |