Upstream version 5.34.98.0
[platform/framework/web/crosswalk.git] / src / ppapi / shared_impl / media_stream_frame.h
1 // Copyright 2014 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 PPAPI_SHARED_IMPL_MEDIA_STREAM_FRAME_H_
6 #define PPAPI_SHARED_IMPL_MEDIA_STREAM_FRAME_H_
7
8 #include "ppapi/c/ppb_video_frame.h"
9
10 namespace ppapi {
11
12 union MediaStreamFrame {
13   enum Type {
14     TYPE_UNKNOWN = 0,
15     TYPE_AUDIO = 1,
16     TYPE_VIDEO = 2,
17   };
18
19   struct Header {
20     Type type;
21     uint32_t size;
22   };
23
24   struct Audio {
25     Header header;
26     // TODO(penghuang): implement the audio frame.
27   };
28
29   struct Video {
30     Header header;
31     PP_TimeDelta timestamp;
32     PP_VideoFrame_Format format;
33     PP_Size size;
34     uint32_t data_size;
35     // Uses 8 bytes to make sure the Video struct has consistent size between
36     // Nacl code and renderer code.
37     uint8_t data[8];
38   };
39
40   // Because these structs are written and read in shared memory, we need
41   // the size and alighment to be consistent between NaCl and its host trusted
42   // platform.
43   PP_COMPILE_ASSERT_SIZE_IN_BYTES(Header, 8);
44   PP_COMPILE_ASSERT_SIZE_IN_BYTES(Audio, 8);
45   PP_COMPILE_ASSERT_SIZE_IN_BYTES(Video, 40);
46
47   Header header;
48   Video video;
49   Audio audio;
50 };
51
52 }  // namespace ppapi
53
54 #endif  // PPAPI_SHARED_IMPL_MEDIA_STREAM_FRAME_H_