1a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// found in the LICENSE file.
4a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
5a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ppapi/shared_impl/media_stream_video_track_shared.h"
6a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
7a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
8a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)namespace ppapi {
9a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
10a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)TEST(MediaStreamVideoTrackShared, Verify) {
11a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  {
12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    MediaStreamVideoTrackShared::Attributes attributes;
13a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    EXPECT_TRUE(MediaStreamVideoTrackShared::VerifyAttributes(attributes));
14a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  }
15a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
16a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // Verify buffers
17a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  {
18a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    MediaStreamVideoTrackShared::Attributes attributes;
19a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    attributes.buffers = 0;
20a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    EXPECT_TRUE(MediaStreamVideoTrackShared::VerifyAttributes(attributes));
21a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
22a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    attributes.buffers = 8;
23a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    EXPECT_TRUE(MediaStreamVideoTrackShared::VerifyAttributes(attributes));
24a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
25a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    attributes.buffers = 1024;
26a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    EXPECT_TRUE(MediaStreamVideoTrackShared::VerifyAttributes(attributes));
27a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
28a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    attributes.buffers = -1;
29a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    EXPECT_FALSE(MediaStreamVideoTrackShared::VerifyAttributes(attributes));
30a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  }
31a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
32a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // Verify format
33a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  {
34a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    MediaStreamVideoTrackShared::Attributes attributes;
35a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    for (int32_t i = PP_VIDEOFRAME_FORMAT_UNKNOWN;
36a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)         i <= PP_VIDEOFRAME_FORMAT_LAST;
37a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)         ++i) {
38a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      attributes.format = static_cast<PP_VideoFrame_Format>(i);
39a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      EXPECT_TRUE(MediaStreamVideoTrackShared::VerifyAttributes(attributes));
40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    }
41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
42a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    attributes.format = static_cast<PP_VideoFrame_Format>(-1);
43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    EXPECT_FALSE(MediaStreamVideoTrackShared::VerifyAttributes(attributes));
44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    attributes.format =
46a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        static_cast<PP_VideoFrame_Format>(PP_VIDEOFRAME_FORMAT_LAST + 1);
47a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    EXPECT_FALSE(MediaStreamVideoTrackShared::VerifyAttributes(attributes));
48a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  }
49a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
50a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // Verify width
51a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  {
52a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    MediaStreamVideoTrackShared::Attributes attributes;
53a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    attributes.width = 1024;
54a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    EXPECT_TRUE(MediaStreamVideoTrackShared::VerifyAttributes(attributes));
55a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
56a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    attributes.width = 1025;
57a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    EXPECT_FALSE(MediaStreamVideoTrackShared::VerifyAttributes(attributes));
58a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
59a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    attributes.width = 1026;
60a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    EXPECT_FALSE(MediaStreamVideoTrackShared::VerifyAttributes(attributes));
61a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
62a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    attributes.width = -1;
63a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    EXPECT_FALSE(MediaStreamVideoTrackShared::VerifyAttributes(attributes));
64a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
65a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    attributes.width = -4;
66a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    EXPECT_FALSE(MediaStreamVideoTrackShared::VerifyAttributes(attributes));
67a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
68a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    attributes.width = 4097;
69a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    EXPECT_FALSE(MediaStreamVideoTrackShared::VerifyAttributes(attributes));
70a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  }
71a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
72a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // Verify height
73a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  {
74a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    MediaStreamVideoTrackShared::Attributes attributes;
75a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    attributes.height = 1024;
76a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    EXPECT_TRUE(MediaStreamVideoTrackShared::VerifyAttributes(attributes));
77a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
78a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    attributes.height = 1025;
79a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    EXPECT_FALSE(MediaStreamVideoTrackShared::VerifyAttributes(attributes));
80a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
81a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    attributes.height = 1026;
82a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    EXPECT_FALSE(MediaStreamVideoTrackShared::VerifyAttributes(attributes));
83a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
84a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    attributes.height = -1;
85a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    EXPECT_FALSE(MediaStreamVideoTrackShared::VerifyAttributes(attributes));
86a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
87a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    attributes.height = -4;
88a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    EXPECT_FALSE(MediaStreamVideoTrackShared::VerifyAttributes(attributes));
89a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
90a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    attributes.height = 4096 + 4;
91a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    EXPECT_FALSE(MediaStreamVideoTrackShared::VerifyAttributes(attributes));
92a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  }
93a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
94a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
95a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
96a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}  // namespace ppapi
97