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

Unified Diff: content/common/gpu/media/exynos_video_decode_accelerator.h

Issue 104713014: VDA: Restructure EVDA (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years 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 side-by-side diff with in-line comments
Download patch
Index: content/common/gpu/media/exynos_video_decode_accelerator.h
diff --git a/content/common/gpu/media/exynos_video_decode_accelerator.h b/content/common/gpu/media/exynos_video_decode_accelerator.h
index 7ccd5940474ff2c8138796a7336e0357e87fe951..cb8cc70bbcbdd98474dc4737ffcd78b43cedbcb0 100644
--- a/content/common/gpu/media/exynos_video_decode_accelerator.h
+++ b/content/common/gpu/media/exynos_video_decode_accelerator.h
@@ -10,6 +10,7 @@
#include <queue>
#include <vector>
+#include <poll.h>
Pawel Osciak 2013/12/24 03:45:24 Please keep lexicographical order. In general, pl
#include "base/callback_forward.h"
#include "base/memory/linked_ptr.h"
@@ -28,6 +29,20 @@ class MessageLoopProxy;
}
namespace content {
+
+class V4L2Device {
Pawel Osciak 2013/12/24 03:45:24 Please either make the interface a nested class in
+ public :
Pawel Osciak 2013/12/24 03:45:24 Coding style for class definitions: http://google-
+ virtual int dev_open(const char *fd,int flags) = 0;
Pawel Osciak 2013/12/24 03:45:24 Please add documentation for all members.
Pawel Osciak 2013/12/24 03:45:24 Style, method names: http://google-styleguide.goog
+ virtual int dev_close (int fd) = 0;
Pawel Osciak 2013/12/24 03:45:24 Does the client of this class need to be aware of
+ virtual int dev_ioctl (int fd, int flags, void *arg) = 0;
+ virtual int dev_poll (struct pollfd *fds, nfds_t nfds, int n) = 0;
Pawel Osciak 2013/12/24 03:45:24 Similarly, we should be able to spare the client a
+ virtual bool SetDevicePollInterrupt(int fd) = 0;
+ virtual bool ClearDevicePollInterrupt(int fd) = 0;
+ virtual void *dev_mmap (void *addr,
+ unsigned int len, int prot, int flags, int fd, unsigned int offset) = 0;
Pawel Osciak 2013/12/24 03:45:24 Parameter stale wrapping is wrong, please see: htt
+ virtual void dev_munmap (void *addr, unsigned int len);
+};
Pawel Osciak 2013/12/24 03:45:24 Please also, as I mentioned before, have a factory
+
class H264Parser;
// This class handles Exynos video acceleration directly through the V4L2
@@ -56,17 +71,16 @@ class H264Parser;
// decoder_thread_, so there are no synchronization issues.
// ... well, there are, but it's a matter of getting messages posted in the
// right order, not fiddling with locks.
-class CONTENT_EXPORT ExynosVideoDecodeAccelerator
+class CONTENT_EXPORT V4L2VideoDecodeAccelerator
: public VideoDecodeAcceleratorImpl {
public:
- ExynosVideoDecodeAccelerator(
+ V4L2VideoDecodeAccelerator(
EGLDisplay egl_display,
- EGLContext egl_context,
Pawel Osciak 2013/12/24 03:45:24 You are not rebased on top of ToT if you still hav
Client* client,
const base::WeakPtr<Client>& io_client_,
const base::Callback<bool(void)>& make_context_current,
const scoped_refptr<base::MessageLoopProxy>& io_message_loop_proxy);
- virtual ~ExynosVideoDecodeAccelerator();
+ virtual ~V4L2VideoDecodeAccelerator();
// media::VideoDecodeAccelerator implementation.
// Note: Initialize() and Destroy() are synchronous.
@@ -82,6 +96,22 @@ class CONTENT_EXPORT ExynosVideoDecodeAccelerator
// VideoDecodeAcceleratorImpl implementation.
virtual bool CanDecodeOnIOThread() OVERRIDE;
+ class ExynosV4L2Device : public V4L2Device {
Pawel Osciak 2013/12/24 03:45:24 Please abstract to a separate file.
+ public :
Pawel Osciak 2013/12/24 03:45:24 Style (indent, spacing).
+ ExynosV4L2Device() {}
+ int dev_open(const char *fd, int flags);
Pawel Osciak 2013/12/24 03:45:24 Please use the OVERRIDE macro.
+ int dev_close (int fd);
+ int dev_ioctl (int fd, int flags, void *arg);
+ int dev_poll (struct pollfd *fds, nfds_t nfds, int n);
+ // Set/clear the device poll interrupt (using device_poll_interrupt_fd_).
+ bool SetDevicePollInterrupt(int fd);
+ bool ClearDevicePollInterrupt(int fd);
+ void *dev_mmap (void *addr,
+ unsigned int len, int prot, int flags, int fd, unsigned int offset);
+ void dev_munmap (void *addr, unsigned int len);
+ };
+ ExynosV4L2Device *device;
Pawel Osciak 2013/12/24 03:45:24 This should be a a scoped_ptr.
+
private:
// These are rather subjectively tuned.
enum {
@@ -234,9 +264,6 @@ class CONTENT_EXPORT ExynosVideoDecodeAccelerator
// If |keep_mfc_input_state| is true, don't reset MFC input state; used during
// resolution change.
bool StopDevicePoll(bool keep_mfc_input_state);
- // Set/clear the device poll interrupt (using device_poll_interrupt_fd_).
- bool SetDevicePollInterrupt();
- bool ClearDevicePollInterrupt();
void StartResolutionChangeIfNeeded();
void FinishResolutionChange();
@@ -303,7 +330,7 @@ class CONTENT_EXPORT ExynosVideoDecodeAccelerator
// that this object is still alive. As a result, tasks posted from the child
// thread to the decoder or device thread should use base::Unretained(this),
// and tasks posted the other way should use |weak_this_|.
- base::WeakPtr<ExynosVideoDecodeAccelerator> weak_this_;
+ base::WeakPtr<V4L2VideoDecodeAccelerator> weak_this_;
// To expose client callbacks from VideoDecodeAccelerator.
// NOTE: all calls to these objects *MUST* be executed on
@@ -363,7 +390,7 @@ class CONTENT_EXPORT ExynosVideoDecodeAccelerator
std::queue<int> mfc_input_ready_queue_;
// MFC decode device.
- int mfc_fd_;
+ int videodec_fd_;
Pawel Osciak 2013/12/24 03:45:24 Don't need this anymore, we are using the device c
// MFC input buffer state.
bool mfc_input_streamon_;
@@ -416,12 +443,11 @@ class CONTENT_EXPORT ExynosVideoDecodeAccelerator
// EGL state
EGLDisplay egl_display_;
- EGLContext egl_context_;
// The codec we'll be decoding for.
media::VideoCodecProfile video_profile_;
- DISALLOW_COPY_AND_ASSIGN(ExynosVideoDecodeAccelerator);
+ DISALLOW_COPY_AND_ASSIGN(V4L2VideoDecodeAccelerator);
};
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698