[haiku-commits] haiku: hrev50602 - src/kits/media headers/os/media

  • From: b.vitruvio@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Thu, 20 Oct 2016 02:29:06 +0200 (CEST)

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();


Other related posts:

  • » [haiku-commits] haiku: hrev50602 - src/kits/media headers/os/media - b . vitruvio