| 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 |