1 // Copyright (c) 2011 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_VIDEO_PICTURE_H_ 6 #define MEDIA_VIDEO_PICTURE_H_ 7 8 #include "base/basictypes.h" 9 #include "gpu/command_buffer/common/mailbox.h" 10 #include "media/base/media_export.h" 11 #include "ui/gfx/size.h" 12 13 namespace media { 14 15 // A picture buffer that is composed of a GLES2 texture. 16 // This is the media-namespace equivalent of PP_PictureBuffer_Dev. 17 class MEDIA_EXPORT PictureBuffer { 18 public: 19 PictureBuffer(int32 id, gfx::Size size, uint32 texture_id); 20 PictureBuffer(int32 id, 21 gfx::Size size, 22 uint32 texture_id, 23 const gpu::Mailbox& texture_mailbox); 24 25 // Returns the client-specified id of the buffer. 26 int32 id() const { 27 return id_; 28 } 29 30 // Returns the size of the buffer. 31 gfx::Size size() const { 32 return size_; 33 } 34 35 // Returns the id of the texture. 36 // NOTE: The texture id in the renderer process corresponds to a different 37 // texture id in the GPU process. 38 uint32 texture_id() const { 39 return texture_id_; 40 } 41 42 const gpu::Mailbox& texture_mailbox() const { 43 return texture_mailbox_; 44 } 45 46 private: 47 int32 id_; 48 gfx::Size size_; 49 uint32 texture_id_; 50 gpu::Mailbox texture_mailbox_; 51 }; 52 53 // A decoded picture frame. 54 // This is the media-namespace equivalent of PP_Picture_Dev. 55 class MEDIA_EXPORT Picture { 56 public: 57 Picture(int32 picture_buffer_id, int32 bitstream_buffer_id); 58 59 // Returns the id of the picture buffer where this picture is contained. 60 int32 picture_buffer_id() const { 61 return picture_buffer_id_; 62 } 63 64 // Returns the id of the bitstream buffer from which this frame was decoded. 65 int32 bitstream_buffer_id() const { 66 return bitstream_buffer_id_; 67 } 68 69 void set_bitstream_buffer_id(int32 bitstream_buffer_id) { 70 bitstream_buffer_id_ = bitstream_buffer_id; 71 } 72 73 private: 74 int32 picture_buffer_id_; 75 int32 bitstream_buffer_id_; 76 }; 77 78 } // namespace media 79 80 #endif // MEDIA_VIDEO_PICTURE_H_ 81