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

Side by Side Diff: talk/media/webrtc/webrtcvideoengine2.h

Issue 1594973006: New rtc::VideoSinkInterface. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Workaround to not break chrome. Created 4 years, 10 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
« no previous file with comments | « talk/media/base/videorenderer.h ('k') | talk/media/webrtc/webrtcvideoengine2.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * libjingle 2 * libjingle
3 * Copyright 2014 Google Inc. 3 * Copyright 2014 Google Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright notice, 8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer. 9 * this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright notice, 10 * 2. Redistributions in binary form must reproduce the above copyright notice,
(...skipping 22 matching lines...) Expand all
33 #include <vector> 33 #include <vector>
34 34
35 #include "talk/media/base/mediaengine.h" 35 #include "talk/media/base/mediaengine.h"
36 #include "talk/media/webrtc/webrtcvideochannelfactory.h" 36 #include "talk/media/webrtc/webrtcvideochannelfactory.h"
37 #include "talk/media/webrtc/webrtcvideodecoderfactory.h" 37 #include "talk/media/webrtc/webrtcvideodecoderfactory.h"
38 #include "talk/media/webrtc/webrtcvideoencoderfactory.h" 38 #include "talk/media/webrtc/webrtcvideoencoderfactory.h"
39 #include "webrtc/base/criticalsection.h" 39 #include "webrtc/base/criticalsection.h"
40 #include "webrtc/base/scoped_ptr.h" 40 #include "webrtc/base/scoped_ptr.h"
41 #include "webrtc/base/thread_annotations.h" 41 #include "webrtc/base/thread_annotations.h"
42 #include "webrtc/base/thread_checker.h" 42 #include "webrtc/base/thread_checker.h"
43 #include "webrtc/media/base/videosinkinterface.h"
43 #include "webrtc/call.h" 44 #include "webrtc/call.h"
44 #include "webrtc/transport.h" 45 #include "webrtc/transport.h"
45 #include "webrtc/video_frame.h" 46 #include "webrtc/video_frame.h"
46 #include "webrtc/video_receive_stream.h" 47 #include "webrtc/video_receive_stream.h"
47 #include "webrtc/video_renderer.h" 48 #include "webrtc/video_renderer.h"
48 #include "webrtc/video_send_stream.h" 49 #include "webrtc/video_send_stream.h"
49 50
50 namespace webrtc { 51 namespace webrtc {
51 class VideoDecoder; 52 class VideoDecoder;
52 class VideoEncoder; 53 class VideoEncoder;
(...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after
407 // TODO(deadbeef): Move logic from SetRecvCodecs/SetRtpExtensions/etc. 408 // TODO(deadbeef): Move logic from SetRecvCodecs/SetRtpExtensions/etc.
408 // into this method. Currently this method only sets the RTCP mode. 409 // into this method. Currently this method only sets the RTCP mode.
409 void SetRecvParameters(const VideoRecvParameters& recv_params); 410 void SetRecvParameters(const VideoRecvParameters& recv_params);
410 411
411 void RenderFrame(const webrtc::VideoFrame& frame, 412 void RenderFrame(const webrtc::VideoFrame& frame,
412 int time_to_render_ms) override; 413 int time_to_render_ms) override;
413 bool IsTextureSupported() const override; 414 bool IsTextureSupported() const override;
414 bool SmoothsRenderedFrames() const override; 415 bool SmoothsRenderedFrames() const override;
415 bool IsDefaultStream() const; 416 bool IsDefaultStream() const;
416 417
417 void SetRenderer(cricket::VideoRenderer* renderer); 418 void SetSink(rtc::VideoSinkInterface<cricket::VideoFrame>* sink);
418 419
419 VideoReceiverInfo GetVideoReceiverInfo(); 420 VideoReceiverInfo GetVideoReceiverInfo();
420 421
421 private: 422 private:
422 struct AllocatedDecoder { 423 struct AllocatedDecoder {
423 AllocatedDecoder(webrtc::VideoDecoder* decoder, 424 AllocatedDecoder(webrtc::VideoDecoder* decoder,
424 webrtc::VideoCodecType type, 425 webrtc::VideoCodecType type,
425 bool external); 426 bool external);
426 webrtc::VideoDecoder* decoder; 427 webrtc::VideoDecoder* decoder;
427 // Decoder wrapped into a fallback decoder to permit software fallback. 428 // Decoder wrapped into a fallback decoder to permit software fallback.
(...skipping 17 matching lines...) Expand all
445 446
446 webrtc::VideoReceiveStream* stream_; 447 webrtc::VideoReceiveStream* stream_;
447 const bool default_stream_; 448 const bool default_stream_;
448 webrtc::VideoReceiveStream::Config config_; 449 webrtc::VideoReceiveStream::Config config_;
449 450
450 WebRtcVideoDecoderFactory* const external_decoder_factory_; 451 WebRtcVideoDecoderFactory* const external_decoder_factory_;
451 std::vector<AllocatedDecoder> allocated_decoders_; 452 std::vector<AllocatedDecoder> allocated_decoders_;
452 453
453 const bool disable_prerenderer_smoothing_; 454 const bool disable_prerenderer_smoothing_;
454 455
455 rtc::CriticalSection renderer_lock_; 456 rtc::CriticalSection sink_lock_;
456 cricket::VideoRenderer* renderer_ GUARDED_BY(renderer_lock_); 457 rtc::VideoSinkInterface<cricket::VideoFrame>* sink_ GUARDED_BY(sink_lock_);
457 int last_width_ GUARDED_BY(renderer_lock_); 458 int last_width_ GUARDED_BY(sink_lock_);
458 int last_height_ GUARDED_BY(renderer_lock_); 459 int last_height_ GUARDED_BY(sink_lock_);
459 // Expands remote RTP timestamps to int64_t to be able to estimate how long 460 // Expands remote RTP timestamps to int64_t to be able to estimate how long
460 // the stream has been running. 461 // the stream has been running.
461 rtc::TimestampWrapAroundHandler timestamp_wraparound_handler_ 462 rtc::TimestampWrapAroundHandler timestamp_wraparound_handler_
462 GUARDED_BY(renderer_lock_); 463 GUARDED_BY(sink_lock_);
463 int64_t first_frame_timestamp_ GUARDED_BY(renderer_lock_); 464 int64_t first_frame_timestamp_ GUARDED_BY(sink_lock_);
464 // Start NTP time is estimated as current remote NTP time (estimated from 465 // Start NTP time is estimated as current remote NTP time (estimated from
465 // RTCP) minus the elapsed time, as soon as remote NTP time is available. 466 // RTCP) minus the elapsed time, as soon as remote NTP time is available.
466 int64_t estimated_remote_start_ntp_time_ms_ GUARDED_BY(renderer_lock_); 467 int64_t estimated_remote_start_ntp_time_ms_ GUARDED_BY(sink_lock_);
467 }; 468 };
468 469
469 void Construct(webrtc::Call* call, WebRtcVideoEngine2* engine); 470 void Construct(webrtc::Call* call, WebRtcVideoEngine2* engine);
470 void SetDefaultOptions(); 471 void SetDefaultOptions();
471 472
472 bool SendRtp(const uint8_t* data, 473 bool SendRtp(const uint8_t* data,
473 size_t len, 474 size_t len,
474 const webrtc::PacketOptions& options) override; 475 const webrtc::PacketOptions& options) override;
475 bool SendRtcp(const uint8_t* data, size_t len) override; 476 bool SendRtcp(const uint8_t* data, size_t len) override;
476 477
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
527 VideoOptions options_; 528 VideoOptions options_;
528 // TODO(deadbeef): Don't duplicate information between 529 // TODO(deadbeef): Don't duplicate information between
529 // send_params/recv_params, rtp_extensions, options, etc. 530 // send_params/recv_params, rtp_extensions, options, etc.
530 VideoSendParameters send_params_; 531 VideoSendParameters send_params_;
531 VideoRecvParameters recv_params_; 532 VideoRecvParameters recv_params_;
532 }; 533 };
533 534
534 } // namespace cricket 535 } // namespace cricket
535 536
536 #endif // TALK_MEDIA_WEBRTC_WEBRTCVIDEOENGINE2_H_ 537 #endif // TALK_MEDIA_WEBRTC_WEBRTCVIDEOENGINE2_H_
OLDNEW
« no previous file with comments | « talk/media/base/videorenderer.h ('k') | talk/media/webrtc/webrtcvideoengine2.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698