1 // Copyright 2013 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 #ifndef MEDIA_CAST_TEST_LINUX_OUTPUT_WINDOW_H_ 6 #define MEDIA_CAST_TEST_LINUX_OUTPUT_WINDOW_H_ 7 8 #include <X11/Xlib.h> 9 #include <X11/Xutil.h> 10 #include <sys/ipc.h> 11 #include <sys/shm.h> 12 #include <X11/extensions/XShm.h> 13 14 #include <string> 15 16 #include "base/memory/ref_counted.h" 17 #include "base/memory/scoped_ptr.h" 18 19 namespace media { 20 class VideoFrame; 21 } 22 23 namespace media { 24 namespace cast { 25 namespace test { 26 27 class LinuxOutputWindow { 28 public: 29 LinuxOutputWindow(int x_pos, 30 int y_pos, 31 int width, 32 int height, 33 const std::string& name); 34 virtual ~LinuxOutputWindow(); 35 36 void RenderFrame(const scoped_refptr<media::VideoFrame>& video_frame); 37 38 private: 39 void CreateWindow(int x_pos, 40 int y_pos, 41 int width, 42 int height, 43 const std::string& name); 44 Display* display_; 45 Window window_; 46 XShmSegmentInfo shminfo_; 47 GC gc_; 48 XImage* image_; 49 }; 50 51 } // namespace test 52 } // namespace cast 53 } // namespace media 54 55 #endif // MEDIA_CAST_TEST_LINUX_OUTPUT_WINDOW_H_ 56