OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
133 | 133 |
134 char buffer[100 * 100 * 4]; | 134 char buffer[100 * 100 * 4]; |
135 m_generator->decodeAndScale(m_segmentReader.get(), false, 0, imageInfo(), | 135 m_generator->decodeAndScale(m_segmentReader.get(), false, 0, imageInfo(), |
136 buffer, 100 * 4); | 136 buffer, 100 * 4); |
137 EXPECT_EQ(1, m_decodeRequestCount); | 137 EXPECT_EQ(1, m_decodeRequestCount); |
138 | 138 |
139 addNewData(); | 139 addNewData(); |
140 m_generator->decodeAndScale(m_segmentReader.get(), false, 0, imageInfo(), | 140 m_generator->decodeAndScale(m_segmentReader.get(), false, 0, imageInfo(), |
141 buffer, 100 * 4); | 141 buffer, 100 * 4); |
142 EXPECT_EQ(2, m_decodeRequestCount); | 142 EXPECT_EQ(2, m_decodeRequestCount); |
| 143 |
143 EXPECT_EQ(0, m_decodersDestroyed); | 144 EXPECT_EQ(0, m_decodersDestroyed); |
144 } | 145 } |
145 | 146 |
146 TEST_F(ImageFrameGeneratorTest, incompleteDecodeBecomesComplete) { | 147 TEST_F(ImageFrameGeneratorTest, incompleteDecodeBecomesComplete) { |
147 setFrameStatus(ImageFrame::FramePartial); | 148 setFrameStatus(ImageFrame::FramePartial); |
148 | 149 |
149 char buffer[100 * 100 * 4]; | 150 char buffer[100 * 100 * 4]; |
150 m_generator->decodeAndScale(m_segmentReader.get(), false, 0, imageInfo(), | 151 m_generator->decodeAndScale(m_segmentReader.get(), false, 0, imageInfo(), |
151 buffer, 100 * 4); | 152 buffer, 100 * 4); |
152 EXPECT_EQ(1, m_decodeRequestCount); | 153 EXPECT_EQ(1, m_decodeRequestCount); |
153 EXPECT_EQ(0, m_decodersDestroyed); | 154 EXPECT_EQ(0, m_decodersDestroyed); |
154 | 155 |
155 setFrameStatus(ImageFrame::FrameComplete); | 156 setFrameStatus(ImageFrame::FrameComplete); |
156 addNewData(); | 157 addNewData(); |
157 | 158 |
158 m_generator->decodeAndScale(m_segmentReader.get(), false, 0, imageInfo(), | 159 m_generator->decodeAndScale(m_segmentReader.get(), false, 0, imageInfo(), |
159 buffer, 100 * 4); | 160 buffer, 100 * 4); |
160 EXPECT_EQ(2, m_decodeRequestCount); | 161 EXPECT_EQ(2, m_decodeRequestCount); |
161 EXPECT_EQ(1, m_decodersDestroyed); | 162 EXPECT_EQ(1, m_decodersDestroyed); |
162 | 163 |
163 // Decoder created again. | 164 // Decoder created again. |
164 m_generator->decodeAndScale(m_segmentReader.get(), false, 0, imageInfo(), | 165 m_generator->decodeAndScale(m_segmentReader.get(), false, 0, imageInfo(), |
165 buffer, 100 * 4); | 166 buffer, 100 * 4); |
166 EXPECT_EQ(3, m_decodeRequestCount); | 167 EXPECT_EQ(3, m_decodeRequestCount); |
167 } | 168 } |
168 | 169 |
| 170 TEST_F(ImageFrameGeneratorTest, scaleAfterDecode) { |
| 171 setFrameStatus(ImageFrame::FramePartial); |
| 172 |
| 173 char scaledBuffer[30 * 30 * 4]; |
| 174 m_generator->decodeAndScale(m_segmentReader.get(), false, 0, |
| 175 imageInfo().makeWH(30, 30), scaledBuffer, 30 * 4); |
| 176 EXPECT_EQ(1, m_decodeRequestCount); |
| 177 |
| 178 char buffer[100 * 100 * 4]; |
| 179 addNewData(); |
| 180 m_generator->decodeAndScale(m_segmentReader.get(), false, 0, imageInfo(), |
| 181 buffer, 100 * 4); |
| 182 EXPECT_EQ(2, m_decodeRequestCount); |
| 183 |
| 184 char scaledBuffer1[45 * 48 * 4]; |
| 185 addNewData(); |
| 186 m_generator->decodeAndScale(m_segmentReader.get(), false, 0, |
| 187 imageInfo().makeWH(45, 45), scaledBuffer1, |
| 188 48 * 4); |
| 189 EXPECT_EQ(3, m_decodeRequestCount); |
| 190 EXPECT_EQ(0, m_decodersDestroyed); |
| 191 |
| 192 setFrameStatus(ImageFrame::FrameComplete); |
| 193 addNewData(); |
| 194 |
| 195 m_generator->decodeAndScale(m_segmentReader.get(), false, 0, |
| 196 imageInfo().makeWH(30, 30), scaledBuffer, 30 * 4); |
| 197 EXPECT_EQ(4, m_decodeRequestCount); |
| 198 EXPECT_EQ(1, m_decodersDestroyed); |
| 199 } |
| 200 |
169 static void decodeThreadMain(ImageFrameGenerator* generator, | 201 static void decodeThreadMain(ImageFrameGenerator* generator, |
170 SegmentReader* segmentReader) { | 202 SegmentReader* segmentReader) { |
171 char buffer[100 * 100 * 4]; | 203 char buffer[100 * 100 * 4]; |
172 generator->decodeAndScale(segmentReader, false, 0, imageInfo(), buffer, | 204 generator->decodeAndScale(segmentReader, false, 0, imageInfo(), buffer, |
173 100 * 4); | 205 100 * 4); |
174 } | 206 } |
175 | 207 |
176 TEST_F(ImageFrameGeneratorTest, incompleteDecodeBecomesCompleteMultiThreaded) { | 208 TEST_F(ImageFrameGeneratorTest, incompleteDecodeBecomesCompleteMultiThreaded) { |
177 setFrameStatus(ImageFrame::FramePartial); | 209 setFrameStatus(ImageFrame::FramePartial); |
178 | 210 |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
254 // all the frame data, but not destroying the decoder. See comments in | 286 // all the frame data, but not destroying the decoder. See comments in |
255 // ImageFrameGenerator::tryToResumeDecode(). | 287 // ImageFrameGenerator::tryToResumeDecode(). |
256 m_generator->decodeAndScale(m_segmentReader.get(), true, 2, imageInfo(), | 288 m_generator->decodeAndScale(m_segmentReader.get(), true, 2, imageInfo(), |
257 buffer, 100 * 4); | 289 buffer, 100 * 4); |
258 EXPECT_EQ(3, m_decodeRequestCount); | 290 EXPECT_EQ(3, m_decodeRequestCount); |
259 EXPECT_EQ(0, m_decodersDestroyed); | 291 EXPECT_EQ(0, m_decodersDestroyed); |
260 EXPECT_EQ(kNotFound, m_requestedClearExceptFrame); | 292 EXPECT_EQ(kNotFound, m_requestedClearExceptFrame); |
261 } | 293 } |
262 | 294 |
263 } // namespace blink | 295 } // namespace blink |
OLD | NEW |