Support extractors that use AMediaFormat for metadata
Support secondary plugin API that uses AMediaFormat so plugins can be gradually
changed over to it.
Bug: 111407253
Test: CTS, manual
Change-Id: I25de3cb9463ca3b91370cecd16c80915d6407daf
diff --git a/include/media/MediaTrack.h b/include/media/MediaTrack.h
index 3f77bda..174f4cc 100644
--- a/include/media/MediaTrack.h
+++ b/include/media/MediaTrack.h
@@ -22,6 +22,7 @@
#include <binder/IMemory.h>
#include <binder/MemoryDealer.h>
+#include <media/MediaExtractorPluginApi.h>
#include <media/stagefright/MediaErrors.h>
#include <media/stagefright/MetaData.h>
#include <media/MediaExtractorPluginApi.h>
@@ -76,13 +77,23 @@
SEEK_FRAME_INDEX = CMediaTrackReadOptions::SEEK_FRAME_INDEX,
};
- ReadOptions();
+ ReadOptions() {
+ reset();
+ }
// Reset everything back to defaults.
- void reset();
+ void reset() {
+ mOptions = 0;
+ mSeekTimeUs = 0;
+ mNonBlocking = false;
+ }
void setSeekTo(int64_t time_us, SeekMode mode = SEEK_CLOSEST_SYNC);
- void clearSeekTo();
+ void clearSeekTo() {
+ mOptions &= ~kSeekTo_Option;
+ mSeekTimeUs = 0;
+ mSeekMode = SEEK_CLOSEST_SYNC;
+ }
bool getSeekTo(int64_t *time_us, SeekMode *mode) const;
void setNonBlocking();
@@ -146,6 +157,24 @@
CMediaTrack *wrapper;
};
+class MediaTrackCUnwrapperV2 : public MediaTrack {
+public:
+ explicit MediaTrackCUnwrapperV2(CMediaTrackV2 *wrapper);
+
+ virtual status_t start(MetaDataBase *params = NULL);
+ virtual status_t stop();
+ virtual status_t getFormat(MetaDataBase& format);
+ virtual status_t read(MediaBufferBase **buffer, const ReadOptions *options = NULL);
+
+ virtual bool supportNonblockingRead();
+
+protected:
+ virtual ~MediaTrackCUnwrapperV2();
+
+private:
+ CMediaTrackV2 *wrapper;
+};
+
} // namespace android
#endif // MEDIA_SOURCE_BASE_H_