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

Unified Diff: media/base/android/media_codec_loop.h

Issue 2132653002: MediaCodecLoop unit tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: cl feedback Created 4 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/base/android/media_codec_direction.h ('k') | media/base/android/media_codec_loop.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/base/android/media_codec_loop.h
diff --git a/media/base/android/media_codec_loop.h b/media/base/android/media_codec_loop.h
index 8d257dea09885f6b3e58bf3d8e3ab78a83c4e8e5..6413698318f268ef966edf1667f12622d1edee24 100644
--- a/media/base/android/media_codec_loop.h
+++ b/media/base/android/media_codec_loop.h
@@ -12,12 +12,13 @@
#include "base/macros.h"
#include "base/memory/weak_ptr.h"
+#include "base/time/tick_clock.h"
#include "base/time/time.h"
#include "base/timer/timer.h"
#include "media/base/android/media_codec_bridge.h"
-#include "media/base/audio_decoder.h"
-#include "media/base/audio_decoder_config.h"
+#include "media/base/decode_status.h"
#include "media/base/media_export.h"
+#include "media/base/subsample_entry.h"
// MediaCodecLoop is based on Android's MediaCodec API.
// The MediaCodec API is required to play encrypted (as in EME) content on
@@ -197,9 +198,20 @@ class MEDIA_EXPORT MediaCodecLoop {
// We will take ownership of |media_codec|. We will not destroy it until
// we are destructed. |media_codec| may not be null.
- MediaCodecLoop(Client* client, std::unique_ptr<MediaCodecBridge> media_codec);
+ // |sdk_level| is temporary. It is used only to decouple MediaCodecLoop from
+ // BuildInfo, until we get BuildInfo into a mockable state.
+ MediaCodecLoop(int sdk_level,
+ Client* client,
+ std::unique_ptr<MediaCodecBridge> media_codec,
+ scoped_refptr<base::SingleThreadTaskRunner> =
+ scoped_refptr<base::SingleThreadTaskRunner>());
~MediaCodecLoop();
+ // Optionally set the tick clock used for testing. It is our caller's
+ // responsibility to maintain ownership of this, since
+ // FakeSingleThreadTaskRunner maintains a raw ptr to it also.
+ void SetTestTickClock(base::TickClock* test_tick_clock);
+
// Does the MediaCodec processing cycle: enqueues an input buffer, then
// dequeues output buffers. This should be called by the client when more
// work becomes available, such as when new input data arrives. If codec
@@ -271,13 +283,12 @@ class MEDIA_EXPORT MediaCodecLoop {
// Helper method to change the state.
void SetState(State new_state);
+ // Helper method to tell us if MediaCodecBridge::Flush() doesn't work.
+ bool CodecNeedsFlushWorkaround() const;
+
// A helper function for logging.
static const char* AsString(State state);
- // Used to post tasks. This class is single threaded and every method should
- // run on this task runner.
- scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
-
State state_;
// The client that we notify about MediaCodec events.
@@ -301,6 +312,13 @@ class MEDIA_EXPORT MediaCodecLoop {
// to us by the client. |memory| has been cleared, since the codec has it.
InputData pending_input_buf_data_;
+ // Optional clock for use during testing. It may be null. We do not maintain
+ // ownership of it.
+ base::TickClock* test_tick_clock_ = nullptr;
+
+ // BuildInfo::sdk_int(), eventually.
+ const int sdk_int_;
+
// NOTE: Weak pointers must be invalidated before all other member variables.
base::WeakPtrFactory<MediaCodecLoop> weak_factory_;
« no previous file with comments | « media/base/android/media_codec_direction.h ('k') | media/base/android/media_codec_loop.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698