media_url_demuxer.cc 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. // Copyright 2016 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "media/base/media_url_demuxer.h"
  5. #include "base/bind.h"
  6. #include "base/logging.h"
  7. #include "base/task/single_thread_task_runner.h"
  8. namespace media {
  9. MediaUrlDemuxer::MediaUrlDemuxer(
  10. const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
  11. const GURL& media_url,
  12. const net::SiteForCookies& site_for_cookies,
  13. const url::Origin& top_frame_origin,
  14. bool allow_credentials,
  15. bool is_hls)
  16. : params_{media_url, site_for_cookies, top_frame_origin, allow_credentials,
  17. is_hls},
  18. task_runner_(task_runner) {}
  19. MediaUrlDemuxer::~MediaUrlDemuxer() = default;
  20. // Should never be called since MediaResource::Type is URL.
  21. std::vector<DemuxerStream*> MediaUrlDemuxer::GetAllStreams() {
  22. NOTREACHED();
  23. return std::vector<DemuxerStream*>();
  24. }
  25. const MediaUrlParams& MediaUrlDemuxer::GetMediaUrlParams() const {
  26. return params_;
  27. }
  28. MediaResource::Type MediaUrlDemuxer::GetType() const {
  29. return MediaResource::Type::URL;
  30. }
  31. std::string MediaUrlDemuxer::GetDisplayName() const {
  32. return "MediaUrlDemuxer";
  33. }
  34. void MediaUrlDemuxer::ForwardDurationChangeToDemuxerHost(
  35. base::TimeDelta duration) {
  36. DCHECK(host_);
  37. DCHECK(task_runner_->BelongsToCurrentThread());
  38. host_->SetDuration(duration);
  39. }
  40. void MediaUrlDemuxer::Initialize(DemuxerHost* host,
  41. PipelineStatusCallback status_cb) {
  42. DVLOG(1) << __func__;
  43. host_ = host;
  44. task_runner_->PostTask(FROM_HERE,
  45. base::BindOnce(std::move(status_cb), PIPELINE_OK));
  46. }
  47. void MediaUrlDemuxer::StartWaitingForSeek(base::TimeDelta seek_time) {}
  48. void MediaUrlDemuxer::CancelPendingSeek(base::TimeDelta seek_time) {}
  49. void MediaUrlDemuxer::Seek(base::TimeDelta time,
  50. PipelineStatusCallback status_cb) {
  51. task_runner_->PostTask(FROM_HERE,
  52. base::BindOnce(std::move(status_cb), PIPELINE_OK));
  53. }
  54. void MediaUrlDemuxer::Stop() {}
  55. void MediaUrlDemuxer::AbortPendingReads() {}
  56. base::TimeDelta MediaUrlDemuxer::GetStartTime() const {
  57. // TODO(tguilbert): Investigate if we need to fetch information from the
  58. // MediaPlayerRender in order to return a sensible value here.
  59. return base::TimeDelta();
  60. }
  61. base::Time MediaUrlDemuxer::GetTimelineOffset() const {
  62. return base::Time();
  63. }
  64. int64_t MediaUrlDemuxer::GetMemoryUsage() const {
  65. return 0;
  66. }
  67. absl::optional<container_names::MediaContainerName>
  68. MediaUrlDemuxer::GetContainerForMetrics() const {
  69. return absl::nullopt;
  70. }
  71. void MediaUrlDemuxer::OnEnabledAudioTracksChanged(
  72. const std::vector<MediaTrack::Id>& track_ids,
  73. base::TimeDelta curr_time,
  74. TrackChangeCB change_completed_cb) {
  75. // TODO(tmathmeyer): potentially support track changes for this renderer.
  76. std::vector<DemuxerStream*> streams;
  77. std::move(change_completed_cb).Run(DemuxerStream::AUDIO, streams);
  78. DLOG(WARNING) << "Track changes are not supported.";
  79. }
  80. void MediaUrlDemuxer::OnSelectedVideoTrackChanged(
  81. const std::vector<MediaTrack::Id>& track_ids,
  82. base::TimeDelta curr_time,
  83. TrackChangeCB change_completed_cb) {
  84. // TODO(tmathmeyer): potentially support track changes for this renderer.
  85. std::vector<DemuxerStream*> streams;
  86. std::move(change_completed_cb).Run(DemuxerStream::VIDEO, streams);
  87. DLOG(WARNING) << "Track changes are not supported.";
  88. }
  89. } // namespace media