fake_media_resource.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. #ifndef MEDIA_REMOTING_FAKE_MEDIA_RESOURCE_H_
  5. #define MEDIA_REMOTING_FAKE_MEDIA_RESOURCE_H_
  6. #include <memory>
  7. #include "base/containers/circular_deque.h"
  8. #include "media/base/audio_decoder_config.h"
  9. #include "media/base/demuxer_stream.h"
  10. #include "media/base/media_resource.h"
  11. #include "media/base/video_decoder_config.h"
  12. #include "testing/gmock/include/gmock/gmock.h"
  13. namespace media {
  14. namespace remoting {
  15. class FakeDemuxerStream : public DemuxerStream {
  16. public:
  17. explicit FakeDemuxerStream(bool is_audio);
  18. FakeDemuxerStream(const FakeDemuxerStream&) = delete;
  19. FakeDemuxerStream& operator=(const FakeDemuxerStream&) = delete;
  20. ~FakeDemuxerStream() override;
  21. // DemuxerStream implementation.
  22. MOCK_METHOD1(Read, void(ReadCB read_cb));
  23. void FakeRead(ReadCB read_cb);
  24. AudioDecoderConfig audio_decoder_config() override;
  25. VideoDecoderConfig video_decoder_config() override;
  26. Type type() const override;
  27. StreamLiveness liveness() const override;
  28. void EnableBitstreamConverter() override {}
  29. bool SupportsConfigChanges() override;
  30. void CreateFakeFrame(size_t size, bool key_frame, int pts_ms);
  31. private:
  32. using BufferQueue = base::circular_deque<scoped_refptr<DecoderBuffer>>;
  33. BufferQueue buffer_queue_;
  34. ReadCB pending_read_cb_;
  35. Type type_;
  36. AudioDecoderConfig audio_config_;
  37. VideoDecoderConfig video_config_;
  38. };
  39. // Audio only demuxer stream provider
  40. class FakeMediaResource final : public MediaResource {
  41. public:
  42. FakeMediaResource();
  43. FakeMediaResource(const FakeMediaResource&) = delete;
  44. FakeMediaResource& operator=(const FakeMediaResource&) = delete;
  45. ~FakeMediaResource() override;
  46. // MediaResource implementation.
  47. std::vector<DemuxerStream*> GetAllStreams() override;
  48. private:
  49. std::unique_ptr<FakeDemuxerStream> audio_stream_;
  50. std::unique_ptr<FakeDemuxerStream> video_stream_;
  51. };
  52. } // namespace remoting
  53. } // namespace media
  54. #endif // MEDIA_REMOTING_FAKE_MEDIA_RESOURCE_H_