hrev50602 adds 2 changesets to branch 'master'
old head: 87534026de519e78d7c891b84c430d7b44b1457a
new head: 0c98ab27d38ce84741848612f7b0870183e4774a
overview:
http://cgit.haiku-os.org/haiku/log/?qt=range&q=0c98ab27d38c+%5E87534026de51
----------------------------------------------------------------------------
1c5cb31fef22: BAdapterIO: Implement SeekModes
0c98ab27d38c: BMediaFile: Add BUrl SetTo
* Also fix the server version of BUrl constructor
to use a const reference.
[ Dario Casalinuovo <b.vitruvio@xxxxxxxxx> ]
----------------------------------------------------------------------------
3 files changed, 29 insertions(+), 7 deletions(-)
headers/os/media/MediaFile.h | 2 +-
src/kits/media/AdapterIO.cpp | 19 +++++++++++++++----
src/kits/media/MediaFile.cpp | 15 +++++++++++++--
############################################################################
Commit: 1c5cb31fef22dea1a08e86fd3fe3236528377100
URL: http://cgit.haiku-os.org/haiku/commit/?id=1c5cb31fef22
Author: Dario Casalinuovo <b.vitruvio@xxxxxxxxx>
Date: Thu Oct 20 00:12:29 2016 UTC
BAdapterIO: Implement SeekModes
----------------------------------------------------------------------------
diff --git a/src/kits/media/AdapterIO.cpp b/src/kits/media/AdapterIO.cpp
index 56ccbb7..be620c0 100644
--- a/src/kits/media/AdapterIO.cpp
+++ b/src/kits/media/AdapterIO.cpp
@@ -270,21 +270,32 @@ BAdapterIO::Seek(off_t position, uint32 seekMode)
{
CALLED();
- // TODO: Support seekModes
- status_t ret = _EvaluateWait(position, 0);
+ off_t absolutePosition = 0;
+ off_t size = 0;
+
+ if (seekMode == SEEK_CUR)
+ absolutePosition = Position()+position;
+ else if (seekMode == SEEK_END) {
+ if (GetSize(&size) != B_OK)
+ return B_NOT_SUPPORTED;
+
+ absolutePosition = size-position;
+ }
+
+ status_t ret = _EvaluateWait(absolutePosition, 0);
if (ret == B_RESOURCE_UNAVAILABLE && fBuffer->IsStreaming()
&& fBuffer->IsSeekable()) {
fSeekSem = create_sem(0, "BAdapterIO seek sem");
- if (SeekRequested(position) != B_OK)
+ if (SeekRequested(absolutePosition) != B_OK)
return B_NOT_SUPPORTED;
TRACE("BAdapterIO::Seek: Locking on backend seek\n");
acquire_sem(fSeekSem);
TRACE("BAdapterIO::Seek: Seek completed!\n");
- fBuffer->ResetStartOffset(position);
+ fBuffer->ResetStartOffset(absolutePosition);
} else if (ret != B_OK)
return B_NOT_SUPPORTED;
############################################################################
Revision: hrev50602
Commit: 0c98ab27d38ce84741848612f7b0870183e4774a
URL: http://cgit.haiku-os.org/haiku/commit/?id=0c98ab27d38c
Author: Dario Casalinuovo <b.vitruvio@xxxxxxxxx>
Date: Thu Oct 20 00:24:33 2016 UTC
BMediaFile: Add BUrl SetTo
* Also fix the server version of BUrl constructor
to use a const reference.
----------------------------------------------------------------------------
diff --git a/headers/os/media/MediaFile.h b/headers/os/media/MediaFile.h
index bcf1e4c..355e20d 100644
--- a/headers/os/media/MediaFile.h
+++ b/headers/os/media/MediaFile.h
@@ -75,7 +75,7 @@ public:
BMediaFile(const BUrl& url);
BMediaFile(const BUrl& url, int32 flags);
// Read-Write streaming constructor
- BMediaFile(BUrl
destination,
+
BMediaFile(const BUrl& destination,
const
media_file_format* mfi,
int32 flags
= 0);
diff --git a/src/kits/media/MediaFile.cpp b/src/kits/media/MediaFile.cpp
index ec02f08..0afae78 100644
--- a/src/kits/media/MediaFile.cpp
+++ b/src/kits/media/MediaFile.cpp
@@ -100,7 +100,7 @@ BMediaFile::BMediaFile(const BUrl& url, int32 flags)
}
-BMediaFile::BMediaFile(BUrl destination, const media_file_format* mfi,
+BMediaFile::BMediaFile(const BUrl& destination, const media_file_format* mfi,
int32 flags)
{
CALLED();
@@ -135,7 +135,6 @@ BMediaFile::SetTo(BDataIO* destination)
{
CALLED();
- // TODO: A BUrl SetTo should be provided
if (destination == NULL)
return B_BAD_VALUE;
@@ -146,6 +145,18 @@ BMediaFile::SetTo(BDataIO* destination)
}
+status_t
+BMediaFile::SetTo(const BUrl& url)
+{
+ CALLED();
+
+ _UnInit();
+ _InitReader(NULL, &url);
+
+ return fErr;
+}
+
+
BMediaFile::~BMediaFile()
{
CALLED();