summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/kitchensink/kitsource.h1
-rw-r--r--src/kitsource.c16
2 files changed, 9 insertions, 8 deletions
diff --git a/include/kitchensink/kitsource.h b/include/kitchensink/kitsource.h
index b2fcfa6..e20dc8a 100644
--- a/include/kitchensink/kitsource.h
+++ b/include/kitchensink/kitsource.h
@@ -26,7 +26,6 @@ typedef struct Kit_Source {
int subtitle_stream_index; ///< Subtitle stream index
void *format_ctx; ///< FFmpeg: Videostream format context
void *avio_ctx; ///< FFmpeg: AVIO context
- uint8_t *avio_buf; ///< Buffer for custom AVIO source
} Kit_Source;
typedef struct Kit_StreamInfo {
diff --git a/src/kitsource.c b/src/kitsource.c
index 9cd4813..082691f 100644
--- a/src/kitsource.c
+++ b/src/kitsource.c
@@ -99,7 +99,6 @@ Kit_Source* Kit_CreateSourceFromCustom(Kit_ReadCallback read_cb, Kit_SeekCallbac
// Set internals
src->format_ctx = format_ctx;
src->avio_ctx = avio_ctx;
- src->avio_buf = avio_buf;
// Find best streams for defaults
src->audio_stream_index = Kit_GetBestSourceStream(src, KIT_STREAMTYPE_AUDIO);
@@ -109,15 +108,12 @@ Kit_Source* Kit_CreateSourceFromCustom(Kit_ReadCallback read_cb, Kit_SeekCallbac
exit_4:
avformat_close_input(&format_ctx);
- free(src);
- return NULL;
-
exit_3:
- av_free(avio_ctx);
+ av_freep(&avio_ctx);
exit_2:
avformat_free_context(format_ctx);
exit_1:
- av_free(avio_buf);
+ av_freep(&avio_buf);
exit_0:
free(src);
return NULL;
@@ -125,7 +121,13 @@ exit_0:
void Kit_CloseSource(Kit_Source *src) {
assert(src != NULL);
- avformat_close_input((AVFormatContext **)&src->format_ctx);
+ AVFormatContext *format_ctx = src->format_ctx;
+ AVIOContext *avio_ctx = src->avio_ctx;
+ avformat_close_input(&format_ctx);
+ if(avio_ctx) {
+ av_freep(&avio_ctx->buffer);
+ av_freep(&avio_ctx);
+ }
free(src);
}