1 // Copyright 2016 Samsung Electronics Inc. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CONTENT_BROWSER_MEDIA_TIZEN_BROWSER_MEDIA_CAPTURE_HANDLER_H_
6 #define CONTENT_BROWSER_MEDIA_TIZEN_BROWSER_MEDIA_CAPTURE_HANDLER_H_
8 #include "base/containers/scoped_ptr_hash_map.h"
9 #include "base/memory/singleton.h"
10 #include "base/memory/weak_ptr.h"
11 #include "base/threading/thread.h"
12 #include "content/common/content_export.h"
13 #include "content/public/browser/browser_message_filter.h"
14 #include "content/public/browser/render_frame_host.h"
15 #include "content/public/browser/web_contents_observer.h"
16 #include "media/capture/mediarecorder/media_recorder_tizen.h"
17 #include "ui/gfx/geometry/size.h"
21 class CONTENT_EXPORT BrowserMediaCaptureHandler {
23 static BrowserMediaCaptureHandler* Create(RenderFrameHost* rfh);
24 BrowserMediaCaptureHandler(RenderFrameHost* render_frame_host);
25 ~BrowserMediaCaptureHandler();
27 bool StartCaptureThread(const tracked_objects::Location& location);
29 void StartRecording(int handler_id, std::string recording_format);
30 void PauseRecording(int handler_id);
31 void ResumeRecording(int handler_id);
32 void StopRecording(int handler_id);
34 void MuxedStreamCb(int handler_id,
35 base::SharedMemoryHandle foreign_memory_handle,
38 media::MediaRecorderTizen* GetCameraHandler(int handler_id);
39 void AddCameraHandler(int handler_id, media::MediaRecorderTizen* handler);
41 // Helper function to send messages to RenderFrameObserver.
42 bool Send(IPC::Message* msg);
46 friend struct base::DefaultSingletonTraits<BrowserMediaCaptureHandler>;
48 void OnTakePicture(int handler_id,
50 std::string image_format,
51 std::string image_name);
53 void OnStartRecording(int handler_id, std::string recording_format);
55 void OnPauseRecording(int handler_id);
56 void OnResumeRecording(int handler_id);
57 void OnStopRecording(int handler_id);
59 base::Thread capture_thread_;
61 RenderFrameHost* render_frame_host_;
63 std::map<int, std::unique_ptr<media::MediaRecorderTizen>> camera_handle_;
65 base::WeakPtrFactory<BrowserMediaCaptureHandler> weak_factory_;
67 DISALLOW_COPY_AND_ASSIGN(BrowserMediaCaptureHandler);
70 } // namespace content
72 #endif // CONTENT_BROWSER_MEDIA_TIZEN_BROWSER_MEDIA_CAPTURE_HANDLER_H_