1// Copyright 2014 The Chromium Authors. 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. 4// 5// This file contains the implementation of ExynosV4L2Device used on 6// Exynos platform. 7 8#ifndef CONTENT_COMMON_GPU_MEDIA_EXYNOS_V4L2_VIDEO_DEVICE_H_ 9#define CONTENT_COMMON_GPU_MEDIA_EXYNOS_V4L2_VIDEO_DEVICE_H_ 10 11#include "content/common/gpu/media/v4l2_video_device.h" 12 13namespace content { 14 15class ExynosV4L2Device : public V4L2Device { 16 public: 17 explicit ExynosV4L2Device(Type type); 18 virtual ~ExynosV4L2Device(); 19 20 // V4L2Device implementation. 21 virtual int Ioctl(int request, void* arg) OVERRIDE; 22 virtual bool Poll(bool poll_device, bool* event_pending) OVERRIDE; 23 virtual bool SetDevicePollInterrupt() OVERRIDE; 24 virtual bool ClearDevicePollInterrupt() OVERRIDE; 25 virtual void* Mmap(void* addr, 26 unsigned int len, 27 int prot, 28 int flags, 29 unsigned int offset) OVERRIDE; 30 virtual void Munmap(void* addr, unsigned int len) OVERRIDE; 31 virtual bool Initialize() OVERRIDE; 32 virtual EGLImageKHR CreateEGLImage(EGLDisplay egl_display, 33 EGLContext egl_context, 34 GLuint texture_id, 35 gfx::Size frame_buffer_size, 36 unsigned int buffer_index, 37 size_t planes_count) OVERRIDE; 38 virtual EGLBoolean DestroyEGLImage(EGLDisplay egl_display, 39 EGLImageKHR egl_image) OVERRIDE; 40 virtual GLenum GetTextureTarget() OVERRIDE; 41 virtual uint32 PreferredInputFormat() OVERRIDE; 42 virtual uint32 PreferredOutputFormat() OVERRIDE; 43 44 private: 45 const Type type_; 46 47 // The actual device fd. 48 int device_fd_; 49 50 // eventfd fd to signal device poll thread when its poll() should be 51 // interrupted. 52 int device_poll_interrupt_fd_; 53 54 DISALLOW_COPY_AND_ASSIGN(ExynosV4L2Device); 55}; 56} // namespace content 57 58#endif // CONTENT_COMMON_GPU_MEDIA_EXYNOS_V4L2_VIDEO_DEVICE_H_ 59