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

Unified Diff: talk/media/devices/gtkvideorenderer.cc

Issue 1587193006: Move talk/media to webrtc/media (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebased to b647aca12a884a13c1728118586245399b55fa3d (#11493) Created 4 years, 10 months 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
« no previous file with comments | « talk/media/devices/gtkvideorenderer.h ('k') | talk/media/devices/libudevsymboltable.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: talk/media/devices/gtkvideorenderer.cc
diff --git a/talk/media/devices/gtkvideorenderer.cc b/talk/media/devices/gtkvideorenderer.cc
deleted file mode 100755
index d389960e3daf853d2e6c5df0c9119369a596564b..0000000000000000000000000000000000000000
--- a/talk/media/devices/gtkvideorenderer.cc
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * libjingle
- * Copyright 2004 Google Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// Implementation of GtkVideoRenderer
-
-#include "talk/media/devices/gtkvideorenderer.h"
-
-#include <gdk/gdk.h>
-#include <glib.h>
-#include <gtk/gtk.h>
-
-#include "talk/media/base/videocommon.h"
-#include "talk/media/base/videoframe.h"
-
-namespace cricket {
-
-class ScopedGdkLock {
- public:
- ScopedGdkLock() {
- gdk_threads_enter();
- }
-
- ~ScopedGdkLock() {
- gdk_threads_leave();
- }
-};
-
-GtkVideoRenderer::GtkVideoRenderer(int x, int y)
- : window_(NULL),
- draw_area_(NULL),
- initial_x_(x),
- initial_y_(y),
- width_(0),
- height_(0) {
- g_type_init();
- // g_thread_init API is deprecated since glib 2.31.0, see release note:
- // http://mail.gnome.org/archives/gnome-announce-list/2011-October/msg00041.html
-#if !GLIB_CHECK_VERSION(2, 31, 0)
- g_thread_init(NULL);
-#endif
- gdk_threads_init();
-}
-
-GtkVideoRenderer::~GtkVideoRenderer() {
- if (window_) {
- ScopedGdkLock lock;
- gtk_widget_destroy(window_);
- // Run the Gtk main loop to tear down the window.
- Pump();
- }
- // Don't need to destroy draw_area_ because it is not top-level, so it is
- // implicitly destroyed by the above.
-}
-
-bool GtkVideoRenderer::SetSize(int width, int height, int reserved) {
- ScopedGdkLock lock;
-
- // If the dimension is the same, no-op.
- if (width_ == width && height_ == height) {
- return true;
- }
-
- // For the first frame, initialize the GTK window
- if ((!window_ && !Initialize(width, height)) || IsClosed()) {
- return false;
- }
-
- image_.reset(new uint8_t[width * height * 4]);
- gtk_widget_set_size_request(draw_area_, width, height);
-
- width_ = width;
- height_ = height;
- return true;
-}
-
-bool GtkVideoRenderer::RenderFrame(const VideoFrame* video_frame) {
- if (!video_frame) {
- return false;
- }
-
- const VideoFrame* frame = video_frame->GetCopyWithRotationApplied();
-
- // Need to set size as the frame might be rotated.
- if (!SetSize(frame->GetWidth(), frame->GetHeight(), 0)) {
- return false;
- }
-
- // convert I420 frame to ABGR format, which is accepted by GTK
- frame->ConvertToRgbBuffer(cricket::FOURCC_ABGR,
- image_.get(),
- frame->GetWidth() * frame->GetHeight() * 4,
- frame->GetWidth() * 4);
-
- ScopedGdkLock lock;
-
- if (IsClosed()) {
- return false;
- }
-
- // draw the ABGR image
- gdk_draw_rgb_32_image(draw_area_->window,
- draw_area_->style->fg_gc[GTK_STATE_NORMAL],
- 0,
- 0,
- frame->GetWidth(),
- frame->GetHeight(),
- GDK_RGB_DITHER_MAX,
- image_.get(),
- frame->GetWidth() * 4);
-
- // Run the Gtk main loop to refresh the window.
- Pump();
- return true;
-}
-
-bool GtkVideoRenderer::Initialize(int width, int height) {
- gtk_init(NULL, NULL);
- window_ = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- draw_area_ = gtk_drawing_area_new();
- if (!window_ || !draw_area_) {
- return false;
- }
-
- gtk_window_set_position(GTK_WINDOW(window_), GTK_WIN_POS_CENTER);
- gtk_window_set_title(GTK_WINDOW(window_), "Video Renderer");
- gtk_window_set_resizable(GTK_WINDOW(window_), FALSE);
- gtk_widget_set_size_request(draw_area_, width, height);
- gtk_container_add(GTK_CONTAINER(window_), draw_area_);
- gtk_widget_show_all(window_);
- gtk_window_move(GTK_WINDOW(window_), initial_x_, initial_y_);
-
- image_.reset(new uint8_t[width * height * 4]);
- return true;
-}
-
-void GtkVideoRenderer::Pump() {
- while (gtk_events_pending()) {
- gtk_main_iteration();
- }
-}
-
-bool GtkVideoRenderer::IsClosed() const {
- if (!window_) {
- // Not initialized yet, so hasn't been closed.
- return false;
- }
-
- if (!GTK_IS_WINDOW(window_) || !GTK_IS_DRAWING_AREA(draw_area_)) {
- return true;
- }
-
- return false;
-}
-
-} // namespace cricket
« no previous file with comments | « talk/media/devices/gtkvideorenderer.h ('k') | talk/media/devices/libudevsymboltable.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698