diff --git a/framework/base/media/framework_type.h b/framework/base/media/framework_type.h index 7a98b97c2..30b26a5b5 100644 --- a/framework/base/media/framework_type.h +++ b/framework/base/media/framework_type.h @@ -19,7 +19,7 @@ typedef int64_t (*demuxer_callback_seek)(void *arg, int64_t offset, int whence); typedef void (*demuxer_callback_interrupt_data)(void *arg, int inter); -typedef int (*demuxer_callback_open)(void *arg, const char *url); +typedef int (*demuxer_callback_open)(void *arg, const char *url, int64_t start, int64_t end); enum { EN_FRAMEWORK_SERVICE_PLAYER_BASE = 0x00001000, diff --git a/framework/demuxer/demuxer_service.cpp b/framework/demuxer/demuxer_service.cpp index 613af4eda..78fd22e68 100644 --- a/framework/demuxer/demuxer_service.cpp +++ b/framework/demuxer/demuxer_service.cpp @@ -2,6 +2,7 @@ // Created by moqi on 2018/2/1. // #define LOG_TAG "demuxer_service" + #include #include #include @@ -368,7 +369,7 @@ namespace Cicada { return pHandle->mPDataSource->Seek(offset, whence); } - int demuxer_service::open_callback(void *arg, const char *url) + int demuxer_service::open_callback(void *arg, const char *url, int64_t start, int64_t end) { auto *pHandle = static_cast(arg); @@ -377,6 +378,7 @@ namespace Cicada { pHandle->mPProbBuffer = nullptr; } + pHandle->mPDataSource->setRange(start, end); return pHandle->mPDataSource->Open(url); } diff --git a/framework/demuxer/demuxer_service.h b/framework/demuxer/demuxer_service.h index ef12b59dc..ed9736c02 100644 --- a/framework/demuxer/demuxer_service.h +++ b/framework/demuxer/demuxer_service.h @@ -70,7 +70,7 @@ namespace Cicada { static int64_t seek_callback(void *arg, int64_t offset, int whence); - static int open_callback(void *arg, const char *url); + static int open_callback(void *arg, const char *url, int64_t start, int64_t end); static void interrupt_callback(void *arg, int inter);