Internal change

PiperOrigin-RevId: 165242527
Change-Id: Ibd981421fcf49bce9bca0b7037f7af1e6ca68e1e
diff --git a/include/mp4v2/file.h b/include/mp4v2/file.h
index 0da200e..986bc9e 100644
--- a/include/mp4v2/file.h
+++ b/include/mp4v2/file.h
@@ -443,6 +443,20 @@
     const char*            fileName,
     const MP4FileProvider* fileProvider DEFAULT(NULL) );
 
+/** Generalized version of above MP4Read, supporting reading a MP4 file at
+ *  the specific file offset.
+ *
+ *  @param fileName As for MP4Read
+ *  @param fileOffset seek offset in file that MP4 container structure starts
+ *  at.
+ */
+
+MP4V2_EXPORT
+MP4FileHandle MP4ReadProviderFromOffset(
+    const char*            fileName,
+    const MP4FileProvider* fileProvider,
+    int64_t seekOffset );
+
 /** @} ***********************************************************************/
 
 #endif /* MP4V2_FILE_H */
diff --git a/src/mp4.cpp b/src/mp4.cpp
index 53fcdfa..ed14295 100644
--- a/src/mp4.cpp
+++ b/src/mp4.cpp
@@ -123,6 +123,12 @@
 
 MP4FileHandle MP4ReadProvider( const char* fileName, const MP4FileProvider* fileProvider )
 {
+    return MP4ReadProviderFromOffset(fileName, fileProvider, 0);
+}
+
+MP4FileHandle MP4ReadProviderFromOffset(
+    const char* fileName, const MP4FileProvider* fileProvider, int64_t seekOffset )
+{
     if (!fileName)
         return MP4_INVALID_FILE_HANDLE;
 
@@ -131,6 +137,7 @@
         return MP4_INVALID_FILE_HANDLE;
 
     try {
+        pFile->SetInitialSeekOffset( seekOffset );
         pFile->Read( fileName, fileProvider );
         return (MP4FileHandle)pFile;
     }