| OLD | NEW |
| (Empty) | |
| 1 // Copyright 2017 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_GPU_AVDA_SURFACE_BUNDLE_H_ |
| 6 #define MEDIA_GPU_AVDA_SURFACE_BUNDLE_H_ |
| 7 |
| 8 #include "base/memory/ref_counted.h" |
| 9 #include "media/base/surface_manager.h" |
| 10 #include "ui/gl/android/scoped_java_surface.h" |
| 11 #include "ui/gl/android/surface_texture.h" |
| 12 |
| 13 namespace media { |
| 14 |
| 15 // AVDASurfaceBundle is a collection of everything that the producer-side of |
| 16 // the output surface needs. In other words, it's the surface, and any |
| 17 // SurfaceTexture that backs it. The SurfaceTexture isn't needed directly by |
| 18 // the producer, but destroying it causes the surface not to work. |
| 19 // |
| 20 // The idea is that a reference to this should be kept with the codec, even if |
| 21 // the codec is sent to another thread. This will prevent the output surface |
| 22 // from being destroyed while the codec depends on it. |
| 23 // While you may send a reference to this to other threads, be sure that it |
| 24 // doesn't drop the reference there without creating another one. This has to |
| 25 // be destroyed on the gpu main thread. |
| 26 class AVDASurfaceBundle : public base::RefCountedThreadSafe<AVDASurfaceBundle> { |
| 27 public: |
| 28 explicit AVDASurfaceBundle(int surface_id); |
| 29 |
| 30 int surface_id = SurfaceManager::kNoSurfaceID; |
| 31 |
| 32 // The surface onto which the codec is writing. |
| 33 gl::ScopedJavaSurface surface; |
| 34 |
| 35 // The SurfaceTexture attached to |surface|, or nullptr if |surface| is |
| 36 // SurfaceView backed. |
| 37 scoped_refptr<gl::SurfaceTexture> surface_texture; |
| 38 |
| 39 private: |
| 40 ~AVDASurfaceBundle(); |
| 41 friend class base::RefCountedThreadSafe<AVDASurfaceBundle>; |
| 42 |
| 43 DISALLOW_COPY_AND_ASSIGN(AVDASurfaceBundle); |
| 44 }; |
| 45 |
| 46 } // namespace media |
| 47 |
| 48 #endif // MEDIA_GPU_AVDA_SURFACE_BUNDLE_H_ |
| OLD | NEW |