Commit f781f9c4 authored by NzSN's avatar NzSN

update

parent 0baae007
...@@ -19,6 +19,8 @@ option(DEBUG "Only enable during development" OFF) ...@@ -19,6 +19,8 @@ option(DEBUG "Only enable during development" OFF)
include_directories(${INCLUDE}) include_directories(${INCLUDE})
if(DEBUG) if(DEBUG)
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")
message("Fetching googletest...") message("Fetching googletest...")
# Google Test # Google Test
include(FetchContent) include(FetchContent)
......
...@@ -48,7 +48,6 @@ int MovMemProto::read_packet_internal(void *priv, uint8_t *buf, int bufSize) { ...@@ -48,7 +48,6 @@ int MovMemProto::read_packet_internal(void *priv, uint8_t *buf, int bufSize) {
trans.remain = 0; trans.remain = 0;
} }
printf("Size %ld\n", sizeToRead);
return sizeToRead == 0 ? AVERROR(EAGAIN) : sizeToRead; return sizeToRead == 0 ? AVERROR(EAGAIN) : sizeToRead;
} }
...@@ -66,6 +65,7 @@ void MovMemProto::close_internal() { ...@@ -66,6 +65,7 @@ void MovMemProto::close_internal() {
while (!s.empty()) { while (!s.empty()) {
auto mem = s.front(); auto mem = s.front();
mem.data = nullptr;
s.pop(); s.pop();
} }
} }
......
...@@ -3,21 +3,37 @@ ...@@ -3,21 +3,37 @@
namespace Utils { namespace Utils {
static void close_input_file(AVFormatContext **ctx_ptr)
{
int i;
AVFormatContext *fmt_ctx = *ctx_ptr;
/* close decoder for each stream */
for (i = 0; i < fmt_ctx->nb_streams; i++) {
AVStream *stream = fmt_ctx->streams[i];
avcodec_close(stream->codec);
}
avformat_close_input(ctx_ptr);
}
static AVFormatContext* AVFormatInputContextConstructor( static AVFormatContext* AVFormatInputContextConstructor(
std::string path, AVIOContext *customIO) { std::string path, AVIOContext *customIO) {
const char *filename = path.c_str();
AVFormatContext *ctx = nullptr; AVFormatContext *ctx = nullptr;
if (customIO != nullptr) { if (customIO != nullptr) {
ctx = avformat_alloc_context(); ctx = avformat_alloc_context();
ctx->pb = customIO; ctx->pb = customIO;
filename = nullptr;
} }
if (avformat_open_input(&ctx, path.c_str(), nullptr, nullptr) < 0) { if (avformat_open_input(&ctx, filename, nullptr, nullptr) < 0) {
return nullptr; return nullptr;
} }
if (avformat_find_stream_info(ctx, nullptr) < 0) { if (avformat_find_stream_info(ctx, nullptr) < 0) {
avformat_close_input(&ctx); close_input_file(&ctx);
return nullptr; return nullptr;
} }
...@@ -25,7 +41,10 @@ static AVFormatContext* AVFormatInputContextConstructor( ...@@ -25,7 +41,10 @@ static AVFormatContext* AVFormatInputContextConstructor(
} }
static void AVFormatInputContextDestructor(AVFormatContext *ctx) { static void AVFormatInputContextDestructor(AVFormatContext *ctx) {
if (ctx != nullptr) {
std::cerr << "Input DESTRUCTOR: " << ctx->filename << std::endl;
avformat_close_input(&ctx); avformat_close_input(&ctx);
}
} }
AVFormatContextShared makeInAVFormat(std::string path, AVIOContext *customIO) { AVFormatContextShared makeInAVFormat(std::string path, AVIOContext *customIO) {
...@@ -56,7 +75,12 @@ static AVFormatContext* AVFormatOutputContextConstructor( ...@@ -56,7 +75,12 @@ static AVFormatContext* AVFormatOutputContextConstructor(
} }
static void AVFormatOutputContextDestructor(AVFormatContext *ctx) { static void AVFormatOutputContextDestructor(AVFormatContext *ctx) {
avformat_close_input(&ctx); std::cerr << "Output DESTRUCTOR: " << ctx->filename << std::endl;
if (ctx != nullptr) {
if (ctx->pb && strnlen(ctx->filename, 1024) > 0)
avio_close(ctx->pb);
avformat_free_context(ctx);
}
} }
AVFormatContextShared makeOutAVFormat( AVFormatContextShared makeOutAVFormat(
......
...@@ -235,7 +235,7 @@ TEST_F(IOCTX_With_MovMem_Proto_Fixture, Initialize) { ...@@ -235,7 +235,7 @@ TEST_F(IOCTX_With_MovMem_Proto_Fixture, Initialize) {
t1.detach(); t1.detach();
std::this_thread::sleep_for(std::chrono::milliseconds(100)); std::this_thread::sleep_for(std::chrono::milliseconds(500));
inCtxMM = new IOCtx::InCtx("", mmProto); inCtxMM = new IOCtx::InCtx("", mmProto);
AVStream *s = inCtxMM->getStream([](AVStream *s) { AVStream *s = inCtxMM->getStream([](AVStream *s) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment