1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)/* Copyright (c) 2013 The Chromium Authors. All rights reserved.
2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * Use of this source code is governed by a BSD-style license that can be
3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * found in the LICENSE file.
4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */
5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)/**
7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * This file defines the struct used to hold a video frame.
8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */
9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)/**
11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * The <code>PP_VideoFrame_Private</code> struct represents a video frame.
12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * Video sources and destinations use frames to transfer video to and from
13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * the browser.
14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */
15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)[assert_size(16)]
16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)struct PP_VideoFrame_Private {
17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  /**
18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)   * A timestamp placing the frame in a video stream.
19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)   */
20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  PP_TimeTicks timestamp;
21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  /**
23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)   * An image data resource to hold the video frame.
24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)   */
25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  PP_Resource image_data;
26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  /**
28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)   * Ensure that this struct is 16-bytes wide by padding the end.  In some
29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)   * compilers, PP_TimeTicks is 8-byte aligned, so those compilers align this
30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)   * struct on 8-byte boundaries as well and pad it to 8 bytes even without this
31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)   * padding attribute.  This padding makes its size consistent across
32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)   * compilers.
33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)   */
34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  int32_t padding;
35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)};
36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
37