Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(18)

Side by Side Diff: webrtc/modules/video_render/test/testAPI/testAPI.cc

Issue 1813173002: Deletes the class VideoRendererCallback. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Break long lines. Add explicit keyword on IncomingVideoStream constructor. Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 241
242 *outWindow = _window; 242 *outWindow = _window;
243 *outDisplay = _display; 243 *outDisplay = _display;
244 244
245 return 0; 245 return 0;
246 } 246 }
247 #endif // WEBRTC_LINUX 247 #endif // WEBRTC_LINUX
248 248
249 // Note: Mac code is in testApi_mac.mm. 249 // Note: Mac code is in testApi_mac.mm.
250 250
251 class MyRenderCallback: public VideoRenderCallback 251 class MyRenderCallback: public rtc::VideoSinkInterface<VideoFrame>
252 { 252 {
253 public: 253 public:
254 MyRenderCallback() : 254 MyRenderCallback() :
255 _cnt(0) 255 _cnt(0)
256 { 256 {
257 } 257 }
258 ; 258 ;
259 ~MyRenderCallback() 259 ~MyRenderCallback()
260 { 260 {
261 } 261 }
262 ; 262 ;
263 virtual int32_t RenderFrame(const uint32_t streamId, 263 void OnFrame(const VideoFrame& videoFrame) override {
264 const VideoFrame& videoFrame) {
265 _cnt++; 264 _cnt++;
266 if (_cnt % 100 == 0) 265 if (_cnt % 100 == 0)
267 { 266 {
268 printf("Render callback %d \n",_cnt); 267 printf("Render callback %d \n",_cnt);
269 } 268 }
270 return 0;
271 } 269 }
272 int32_t _cnt; 270 int32_t _cnt;
273 }; 271 };
274 272
275 void GetTestVideoFrame(VideoFrame* frame, uint8_t startColor) { 273 void GetTestVideoFrame(VideoFrame* frame, uint8_t startColor) {
276 // changing color 274 // changing color
277 static uint8_t color = startColor; 275 static uint8_t color = startColor;
278 276
279 memset(frame->buffer(kYPlane), color, frame->allocated_size(kYPlane)); 277 memset(frame->buffer(kYPlane), color, frame->allocated_size(kYPlane));
280 memset(frame->buffer(kUPlane), color, frame->allocated_size(kUPlane)); 278 memset(frame->buffer(kUPlane), color, frame->allocated_size(kUPlane));
281 memset(frame->buffer(kVPlane), color, frame->allocated_size(kVPlane)); 279 memset(frame->buffer(kVPlane), color, frame->allocated_size(kVPlane));
282 280
283 ++color; 281 ++color;
284 } 282 }
285 283
286 int TestSingleStream(VideoRender* renderModule) { 284 int TestSingleStream(VideoRender* renderModule) {
287 int error = 0; 285 int error = 0;
288 // Add settings for a stream to render 286 // Add settings for a stream to render
289 printf("Add stream 0 to entire window\n"); 287 printf("Add stream 0 to entire window\n");
290 const int streamId0 = 0; 288 const int streamId0 = 0;
291 VideoRenderCallback* renderCallback0 = renderModule->AddIncomingRenderStream (streamId0, 0, 0.0f, 0.0f, 1.0f, 1.0f); 289 rtc::VideoSinkInterface<VideoFrame>* renderCallback0 =
290 renderModule->AddIncomingRenderStream(
291 streamId0, 0, 0.0f, 0.0f, 1.0f, 1.0f);
292 assert(renderCallback0 != NULL); 292 assert(renderCallback0 != NULL);
293 293
294 printf("Start render\n"); 294 printf("Start render\n");
295 error = renderModule->StartRender(streamId0); 295 error = renderModule->StartRender(streamId0);
296 if (error != 0) { 296 if (error != 0) {
297 // TODO(phoglund): This test will not work if compiled in release mode. 297 // TODO(phoglund): This test will not work if compiled in release mode.
298 // This rather silly construct here is to avoid compilation errors when 298 // This rather silly construct here is to avoid compilation errors when
299 // compiling in release. Release => no asserts => unused 'error' variable. 299 // compiling in release. Release => no asserts => unused 'error' variable.
300 assert(false); 300 assert(false);
301 } 301 }
302 302
303 // Loop through an I420 file and render each frame 303 // Loop through an I420 file and render each frame
304 const int width = 352; 304 const int width = 352;
305 const int half_width = (width + 1) / 2; 305 const int half_width = (width + 1) / 2;
306 const int height = 288; 306 const int height = 288;
307 307
308 VideoFrame videoFrame0; 308 VideoFrame videoFrame0;
309 videoFrame0.CreateEmptyFrame(width, height, width, half_width, half_width); 309 videoFrame0.CreateEmptyFrame(width, height, width, half_width, half_width);
310 310
311 const uint32_t renderDelayMs = 500; 311 const uint32_t renderDelayMs = 500;
312 312
313 for (int i=0; i<TEST_FRAME_NUM; i++) { 313 for (int i=0; i<TEST_FRAME_NUM; i++) {
314 GetTestVideoFrame(&videoFrame0, TEST_STREAM0_START_COLOR); 314 GetTestVideoFrame(&videoFrame0, TEST_STREAM0_START_COLOR);
315 // Render this frame with the specified delay 315 // Render this frame with the specified delay
316 videoFrame0.set_render_time_ms(TickTime::MillisecondTimestamp() 316 videoFrame0.set_render_time_ms(TickTime::MillisecondTimestamp()
317 + renderDelayMs); 317 + renderDelayMs);
318 renderCallback0->RenderFrame(streamId0, videoFrame0); 318 renderCallback0->OnFrame(videoFrame0);
319 SleepMs(1000/TEST_FRAME_RATE); 319 SleepMs(1000/TEST_FRAME_RATE);
320 } 320 }
321 321
322 322
323 // Shut down 323 // Shut down
324 printf("Closing...\n"); 324 printf("Closing...\n");
325 error = renderModule->StopRender(streamId0); 325 error = renderModule->StopRender(streamId0);
326 assert(error == 0); 326 assert(error == 0);
327 327
328 error = renderModule->DeleteIncomingRenderStream(streamId0); 328 error = renderModule->DeleteIncomingRenderStream(streamId0);
(...skipping 16 matching lines...) Expand all
345 return 0; 345 return 0;
346 } 346 }
347 347
348 int TestBitmapText(VideoRender* renderModule) { 348 int TestBitmapText(VideoRender* renderModule) {
349 #if defined(WIN32) 349 #if defined(WIN32)
350 350
351 int error = 0; 351 int error = 0;
352 // Add settings for a stream to render 352 // Add settings for a stream to render
353 printf("Add stream 0 to entire window\n"); 353 printf("Add stream 0 to entire window\n");
354 const int streamId0 = 0; 354 const int streamId0 = 0;
355 VideoRenderCallback* renderCallback0 = renderModule->AddIncomingRenderStream (streamId0, 0, 0.0f, 0.0f, 1.0f, 1.0f); 355 rtc::VideoSinkInterface<VideoFrame>* renderCallback0 =
356 renderModule->AddIncomingRenderStream(
357 streamId0, 0, 0.0f, 0.0f, 1.0f, 1.0f);
356 assert(renderCallback0 != NULL); 358 assert(renderCallback0 != NULL);
357 359
358 printf("Adding Bitmap\n"); 360 printf("Adding Bitmap\n");
359 DDCOLORKEY ColorKey; // black 361 DDCOLORKEY ColorKey; // black
360 ColorKey.dwColorSpaceHighValue = RGB(0, 0, 0); 362 ColorKey.dwColorSpaceHighValue = RGB(0, 0, 0);
361 ColorKey.dwColorSpaceLowValue = RGB(0, 0, 0); 363 ColorKey.dwColorSpaceLowValue = RGB(0, 0, 0);
362 HBITMAP hbm = (HBITMAP)LoadImage(NULL, 364 HBITMAP hbm = (HBITMAP)LoadImage(NULL,
363 (LPCTSTR)_T("renderStartImage.bmp"), 365 (LPCTSTR)_T("renderStartImage.bmp"),
364 IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); 366 IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
365 renderModule->SetBitmap(hbm, 0, &ColorKey, 0.0f, 0.0f, 0.3f, 367 renderModule->SetBitmap(hbm, 0, &ColorKey, 0.0f, 0.0f, 0.3f,
(...skipping 16 matching lines...) Expand all
382 VideoFrame videoFrame0; 384 VideoFrame videoFrame0;
383 videoFrame0.CreateEmptyFrame(width, height, width, half_width, half_width); 385 videoFrame0.CreateEmptyFrame(width, height, width, half_width, half_width);
384 386
385 const uint32_t renderDelayMs = 500; 387 const uint32_t renderDelayMs = 500;
386 388
387 for (int i=0; i<TEST_FRAME_NUM; i++) { 389 for (int i=0; i<TEST_FRAME_NUM; i++) {
388 GetTestVideoFrame(&videoFrame0, TEST_STREAM0_START_COLOR); 390 GetTestVideoFrame(&videoFrame0, TEST_STREAM0_START_COLOR);
389 // Render this frame with the specified delay 391 // Render this frame with the specified delay
390 videoFrame0.set_render_time_ms(TickTime::MillisecondTimestamp() + 392 videoFrame0.set_render_time_ms(TickTime::MillisecondTimestamp() +
391 renderDelayMs); 393 renderDelayMs);
392 renderCallback0->RenderFrame(streamId0, videoFrame0); 394 renderCallback0->OnFrame(videoFrame0);
393 SleepMs(1000/TEST_FRAME_RATE); 395 SleepMs(1000/TEST_FRAME_RATE);
394 } 396 }
395 // Sleep and let all frames be rendered before closing 397 // Sleep and let all frames be rendered before closing
396 SleepMs(renderDelayMs*2); 398 SleepMs(renderDelayMs*2);
397 399
398 400
399 // Shut down 401 // Shut down
400 printf("Closing...\n"); 402 printf("Closing...\n");
401 ColorKey.dwColorSpaceHighValue = RGB(0,0,0); 403 ColorKey.dwColorSpaceHighValue = RGB(0,0,0);
402 ColorKey.dwColorSpaceLowValue = RGB(0,0,0); 404 ColorKey.dwColorSpaceLowValue = RGB(0,0,0);
(...skipping 10 matching lines...) Expand all
413 415
414 return 0; 416 return 0;
415 } 417 }
416 418
417 int TestMultipleStreams(VideoRender* renderModule) { 419 int TestMultipleStreams(VideoRender* renderModule) {
418 int error = 0; 420 int error = 0;
419 421
420 // Add settings for a stream to render 422 // Add settings for a stream to render
421 printf("Add stream 0\n"); 423 printf("Add stream 0\n");
422 const int streamId0 = 0; 424 const int streamId0 = 0;
423 VideoRenderCallback* renderCallback0 = 425 rtc::VideoSinkInterface<VideoFrame>* renderCallback0 =
424 renderModule->AddIncomingRenderStream(streamId0, 0, 0.0f, 0.0f, 0.45f, 0 .45f); 426 renderModule->AddIncomingRenderStream(
427 streamId0, 0, 0.0f, 0.0f, 0.45f, 0.45f);
425 assert(renderCallback0 != NULL); 428 assert(renderCallback0 != NULL);
426 printf("Add stream 1\n"); 429 printf("Add stream 1\n");
427 const int streamId1 = 1; 430 const int streamId1 = 1;
428 VideoRenderCallback* renderCallback1 = 431 rtc::VideoSinkInterface<VideoFrame>* renderCallback1 =
429 renderModule->AddIncomingRenderStream(streamId1, 0, 0.55f, 0.0f, 1.0f, 0 .45f); 432 renderModule->AddIncomingRenderStream(
433 streamId1, 0, 0.55f, 0.0f, 1.0f, 0.45f);
430 assert(renderCallback1 != NULL); 434 assert(renderCallback1 != NULL);
431 printf("Add stream 2\n"); 435 printf("Add stream 2\n");
432 const int streamId2 = 2; 436 const int streamId2 = 2;
433 VideoRenderCallback* renderCallback2 = 437 rtc::VideoSinkInterface<VideoFrame>* renderCallback2 =
434 renderModule->AddIncomingRenderStream(streamId2, 0, 0.0f, 0.55f, 0.45f, 1.0f); 438 renderModule->AddIncomingRenderStream(
439 streamId2, 0, 0.0f, 0.55f, 0.45f, 1.0f);
435 assert(renderCallback2 != NULL); 440 assert(renderCallback2 != NULL);
436 printf("Add stream 3\n"); 441 printf("Add stream 3\n");
437 const int streamId3 = 3; 442 const int streamId3 = 3;
438 VideoRenderCallback* renderCallback3 = 443 rtc::VideoSinkInterface<VideoFrame>* renderCallback3 =
439 renderModule->AddIncomingRenderStream(streamId3, 0, 0.55f, 0.55f, 1.0f, 1.0f); 444 renderModule->AddIncomingRenderStream(
445 streamId3, 0, 0.55f, 0.55f, 1.0f, 1.0f);
440 assert(renderCallback3 != NULL); 446 assert(renderCallback3 != NULL);
441 error = renderModule->StartRender(streamId0); 447 error = renderModule->StartRender(streamId0);
442 if (error != 0) { 448 if (error != 0) {
443 // TODO(phoglund): This test will not work if compiled in release mode. 449 // TODO(phoglund): This test will not work if compiled in release mode.
444 // This rather silly construct here is to avoid compilation errors when 450 // This rather silly construct here is to avoid compilation errors when
445 // compiling in release. Release => no asserts => unused 'error' variable. 451 // compiling in release. Release => no asserts => unused 'error' variable.
446 assert(false); 452 assert(false);
447 } 453 }
448 error = renderModule->StartRender(streamId1); 454 error = renderModule->StartRender(streamId1);
449 assert(error == 0); 455 assert(error == 0);
(...skipping 17 matching lines...) Expand all
467 videoFrame3.CreateEmptyFrame(width, height, width, half_width, half_width); 473 videoFrame3.CreateEmptyFrame(width, height, width, half_width, half_width);
468 474
469 const uint32_t renderDelayMs = 500; 475 const uint32_t renderDelayMs = 500;
470 476
471 // Render frames with the specified delay. 477 // Render frames with the specified delay.
472 for (int i=0; i<TEST_FRAME_NUM; i++) { 478 for (int i=0; i<TEST_FRAME_NUM; i++) {
473 GetTestVideoFrame(&videoFrame0, TEST_STREAM0_START_COLOR); 479 GetTestVideoFrame(&videoFrame0, TEST_STREAM0_START_COLOR);
474 480
475 videoFrame0.set_render_time_ms(TickTime::MillisecondTimestamp() + 481 videoFrame0.set_render_time_ms(TickTime::MillisecondTimestamp() +
476 renderDelayMs); 482 renderDelayMs);
477 renderCallback0->RenderFrame(streamId0, videoFrame0); 483 renderCallback0->OnFrame(videoFrame0);
478 484
479 GetTestVideoFrame(&videoFrame1, TEST_STREAM1_START_COLOR); 485 GetTestVideoFrame(&videoFrame1, TEST_STREAM1_START_COLOR);
480 videoFrame1.set_render_time_ms(TickTime::MillisecondTimestamp() + 486 videoFrame1.set_render_time_ms(TickTime::MillisecondTimestamp() +
481 renderDelayMs); 487 renderDelayMs);
482 renderCallback1->RenderFrame(streamId1, videoFrame1); 488 renderCallback1->OnFrame(videoFrame1);
483 489
484 GetTestVideoFrame(&videoFrame2, TEST_STREAM2_START_COLOR); 490 GetTestVideoFrame(&videoFrame2, TEST_STREAM2_START_COLOR);
485 videoFrame2.set_render_time_ms(TickTime::MillisecondTimestamp() + 491 videoFrame2.set_render_time_ms(TickTime::MillisecondTimestamp() +
486 renderDelayMs); 492 renderDelayMs);
487 renderCallback2->RenderFrame(streamId2, videoFrame2); 493 renderCallback2->OnFrame(videoFrame2);
488 494
489 GetTestVideoFrame(&videoFrame3, TEST_STREAM3_START_COLOR); 495 GetTestVideoFrame(&videoFrame3, TEST_STREAM3_START_COLOR);
490 videoFrame3.set_render_time_ms(TickTime::MillisecondTimestamp() + 496 videoFrame3.set_render_time_ms(TickTime::MillisecondTimestamp() +
491 renderDelayMs); 497 renderDelayMs);
492 renderCallback3->RenderFrame(streamId3, videoFrame3); 498 renderCallback3->OnFrame(videoFrame3);
493 499
494 SleepMs(1000/TEST_FRAME_RATE); 500 SleepMs(1000/TEST_FRAME_RATE);
495 } 501 }
496 502
497 // Shut down 503 // Shut down
498 printf("Closing...\n"); 504 printf("Closing...\n");
499 error = renderModule->StopRender(streamId0); 505 error = renderModule->StopRender(streamId0);
500 assert(error == 0); 506 assert(error == 0);
501 error = renderModule->DeleteIncomingRenderStream(streamId0); 507 error = renderModule->DeleteIncomingRenderStream(streamId0);
502 assert(error == 0); 508 assert(error == 0);
(...skipping 11 matching lines...) Expand all
514 assert(error == 0); 520 assert(error == 0);
515 521
516 return 0; 522 return 0;
517 } 523 }
518 524
519 int TestExternalRender(VideoRender* renderModule) { 525 int TestExternalRender(VideoRender* renderModule) {
520 int error = 0; 526 int error = 0;
521 MyRenderCallback *externalRender = new MyRenderCallback(); 527 MyRenderCallback *externalRender = new MyRenderCallback();
522 528
523 const int streamId0 = 0; 529 const int streamId0 = 0;
524 VideoRenderCallback* renderCallback0 = 530 rtc::VideoSinkInterface<VideoFrame>* renderCallback0 =
525 renderModule->AddIncomingRenderStream(streamId0, 0, 0.0f, 0.0f, 531 renderModule->AddIncomingRenderStream(streamId0, 0, 0.0f, 0.0f,
526 1.0f, 1.0f); 532 1.0f, 1.0f);
527 assert(renderCallback0 != NULL); 533 assert(renderCallback0 != NULL);
528 error = renderModule->AddExternalRenderCallback(streamId0, externalRender); 534 error = renderModule->AddExternalRenderCallback(streamId0, externalRender);
529 if (error != 0) { 535 if (error != 0) {
530 // TODO(phoglund): This test will not work if compiled in release mode. 536 // TODO(phoglund): This test will not work if compiled in release mode.
531 // This rather silly construct here is to avoid compilation errors when 537 // This rather silly construct here is to avoid compilation errors when
532 // compiling in release. Release => no asserts => unused 'error' variable. 538 // compiling in release. Release => no asserts => unused 'error' variable.
533 assert(false); 539 assert(false);
534 } 540 }
535 541
536 error = renderModule->StartRender(streamId0); 542 error = renderModule->StartRender(streamId0);
537 assert(error == 0); 543 assert(error == 0);
538 544
539 const int width = 352; 545 const int width = 352;
540 const int half_width = (width + 1) / 2; 546 const int half_width = (width + 1) / 2;
541 const int height = 288; 547 const int height = 288;
542 VideoFrame videoFrame0; 548 VideoFrame videoFrame0;
543 videoFrame0.CreateEmptyFrame(width, height, width, half_width, half_width); 549 videoFrame0.CreateEmptyFrame(width, height, width, half_width, half_width);
544 550
545 const uint32_t renderDelayMs = 500; 551 const uint32_t renderDelayMs = 500;
546 int frameCount = TEST_FRAME_NUM; 552 int frameCount = TEST_FRAME_NUM;
547 for (int i=0; i<frameCount; i++) { 553 for (int i=0; i<frameCount; i++) {
548 videoFrame0.set_render_time_ms(TickTime::MillisecondTimestamp() + 554 videoFrame0.set_render_time_ms(TickTime::MillisecondTimestamp() +
549 renderDelayMs); 555 renderDelayMs);
550 renderCallback0->RenderFrame(streamId0, videoFrame0); 556 renderCallback0->OnFrame(videoFrame0);
551 SleepMs(33); 557 SleepMs(33);
552 } 558 }
553 559
554 // Sleep and let all frames be rendered before closing 560 // Sleep and let all frames be rendered before closing
555 SleepMs(2*renderDelayMs); 561 SleepMs(2*renderDelayMs);
556 562
557 // Shut down 563 // Shut down
558 printf("Closing...\n"); 564 printf("Closing...\n");
559 error = renderModule->StopRender(streamId0); 565 error = renderModule->StopRender(streamId0);
560 assert(error == 0); 566 assert(error == 0);
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
636 Display* display; 642 Display* display;
637 WebRtcCreateWindow(&testWindow, &display, 0, 352, 288); 643 WebRtcCreateWindow(&testWindow, &display, 0, 352, 288);
638 VideoRenderType windowType = kRenderX11; 644 VideoRenderType windowType = kRenderX11;
639 window = (void*)testWindow; 645 window = (void*)testWindow;
640 #endif // WEBRTC_LINUX 646 #endif // WEBRTC_LINUX
641 647
642 RunVideoRenderTests(window, windowType); 648 RunVideoRenderTests(window, windowType);
643 return 0; 649 return 0;
644 } 650 }
645 #endif // !WEBRTC_MAC 651 #endif // !WEBRTC_MAC
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698