summaryrefslogtreecommitdiffstats
path: root/media/libavextensions
diff options
context:
space:
mode:
Diffstat (limited to 'media/libavextensions')
-rw-r--r--media/libavextensions/media/AVMediaExtensions.h29
-rw-r--r--media/libavextensions/mediaplayerservice/AVNuUtils.cpp14
2 files changed, 24 insertions, 19 deletions
diff --git a/media/libavextensions/media/AVMediaExtensions.h b/media/libavextensions/media/AVMediaExtensions.h
index d48feec..9622253 100644
--- a/media/libavextensions/media/AVMediaExtensions.h
+++ b/media/libavextensions/media/AVMediaExtensions.h
@@ -47,18 +47,33 @@ struct AVMediaUtils {
virtual bool AudioTrackIsPcmOffloaded(const audio_format_t format) {
return audio_is_offload_pcm(format);
}
- virtual status_t AudioTrackGetPosition(AudioTrack* /*track*/,
- uint32_t* /*position*/) {
- return NO_INIT;
+
+ virtual status_t AudioTrackGetPosition(AudioTrack* track,
+ uint32_t* position) {
+ uint32_t tempPos = (track->mState == AudioTrack::STATE_STOPPED ||
+ track->mState == AudioTrack::STATE_FLUSHED) ? 0 :
+ track->updateAndGetPosition_l();
+ *position = (tempPos /
+ (track->channelCount() * audio_bytes_per_sample(track->format())));
+ return NO_ERROR;
}
- virtual status_t AudioTrackGetTimestamp(AudioTrack* /*track*/,
- AudioTimestamp* /*timestamp*/) {
- return NO_INIT;
+ virtual status_t AudioTrackGetTimestamp(AudioTrack* track,
+ AudioTimestamp* timestamp) {
+ if (!AudioTrackIsPcmOffloaded(track->format())) {
+ return NO_INIT;
+ }
+ uint32_t tempPos = (track->mState == AudioTrack::STATE_STOPPED ||
+ track->mState == AudioTrack::STATE_FLUSHED) ? 0 :
+ track->updateAndGetPosition_l();
+ timestamp->mPosition = (tempPos / (track->channelCount() *
+ audio_bytes_per_sample(track->format())));
+ clock_gettime(CLOCK_MONOTONIC, &timestamp->mTime);
+ return NO_ERROR;
}
virtual size_t AudioTrackGetOffloadFrameCount(size_t frameCount) {
- return frameCount;
+ return frameCount * 2;
}
virtual bool AudioTrackIsTrackOffloaded(audio_io_handle_t /*output*/) {
diff --git a/media/libavextensions/mediaplayerservice/AVNuUtils.cpp b/media/libavextensions/mediaplayerservice/AVNuUtils.cpp
index 34abd0a..5f146c7 100644
--- a/media/libavextensions/mediaplayerservice/AVNuUtils.cpp
+++ b/media/libavextensions/mediaplayerservice/AVNuUtils.cpp
@@ -55,21 +55,11 @@
namespace android {
static bool is24bitPCMOffloadEnabled() {
- char propPCMOfload[PROPERTY_VALUE_MAX] = {0};
- property_get("audio.offload.pcm.24bit.enable", propPCMOfload, "0");
- if (!strncmp(propPCMOfload, "true", 4) || atoi(propPCMOfload))
- return true;
- else
- return false;
+ return property_get_bool("audio.offload.pcm.24bit.enable", false);
}
static bool is16bitPCMOffloadEnabled() {
- char propPCMOfload[PROPERTY_VALUE_MAX] = {0};
- property_get("audio.offload.pcm.16bit.enable", propPCMOfload, "0");
- if (!strncmp(propPCMOfload, "true", 4) || atoi(propPCMOfload))
- return true;
- else
- return false;
+ return property_get_bool("audio.offload.pcm.16bit.enable", false);
}
sp<MetaData> AVNuUtils::createPCMMetaFromSource(const sp<MetaData> &sMeta) {