Home | History | Annotate | Download | only in vda
      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 // Note: ported from Chromium commit head: d264e47
      5 
      6 #ifndef PICTURE_H_
      7 #define PICTURE_H_
      8 
      9 #include <stdint.h>
     10 
     11 #include <vector>
     12 
     13 #include "rect.h"
     14 #include "size.h"
     15 #include "video_pixel_format.h"
     16 
     17 namespace media {
     18 
     19 // A picture buffer that has size and pixel format information.
     20 class PictureBuffer {
     21  public:
     22   PictureBuffer(int32_t id, const Size& size);
     23   PictureBuffer(int32_t id,
     24                 const Size& size,
     25                 VideoPixelFormat pixel_format);
     26   PictureBuffer(const PictureBuffer& other);
     27   ~PictureBuffer();
     28 
     29   // Returns the client-specified id of the buffer.
     30   int32_t id() const { return id_; }
     31 
     32   // Returns the size of the buffer.
     33   Size size() const { return size_; }
     34 
     35   void set_size(const Size& size) { size_ = size; }
     36 
     37   VideoPixelFormat pixel_format() const { return pixel_format_; }
     38 
     39  private:
     40   int32_t id_;
     41   Size size_;
     42   VideoPixelFormat pixel_format_ = PIXEL_FORMAT_UNKNOWN;
     43 };
     44 
     45 // A decoded picture frame.
     46 class Picture {
     47  public:
     48   Picture(int32_t picture_buffer_id,
     49           int32_t bitstream_buffer_id,
     50           const Rect& visible_rect,
     51           bool allow_overlay);
     52   Picture(const Picture&);
     53   ~Picture();
     54 
     55   // Returns the id of the picture buffer where this picture is contained.
     56   int32_t picture_buffer_id() const { return picture_buffer_id_; }
     57 
     58   // Returns the id of the bitstream buffer from which this frame was decoded.
     59   int32_t bitstream_buffer_id() const { return bitstream_buffer_id_; }
     60 
     61   void set_bitstream_buffer_id(int32_t bitstream_buffer_id) {
     62     bitstream_buffer_id_ = bitstream_buffer_id;
     63   }
     64 
     65   // Returns the visible rectangle of the picture. Its size may be smaller
     66   // than the size of the PictureBuffer, as it is the only visible part of the
     67   // Picture contained in the PictureBuffer.
     68   Rect visible_rect() const { return visible_rect_; }
     69 
     70   bool allow_overlay() const { return allow_overlay_; }
     71 
     72  private:
     73   int32_t picture_buffer_id_;
     74   int32_t bitstream_buffer_id_;
     75   Rect visible_rect_;
     76   bool allow_overlay_;
     77 };
     78 
     79 }  // namespace media
     80 
     81 #endif  // PICTURE_H_
     82