summaryrefslogtreecommitdiff
path: root/src/internal
diff options
context:
space:
mode:
authorTuomas Virtanen <katajakasa@gmail.com>2018-08-19 22:33:00 +0300
committerTuomas Virtanen <katajakasa@gmail.com>2018-09-29 17:27:45 +0300
commit3d5366551fd2f84e4e9e13daf03128774a507e0d (patch)
tree75a196f6f67adaf22b4a14b63e02c953a8080d68 /src/internal
parent1f1e88d1da59361ed3aa42549a6ed67c6cd11727 (diff)
Use (some) newer ffmpeg api functions
Diffstat (limited to 'src/internal')
-rw-r--r--src/internal/kitdecoder.c20
-rw-r--r--src/internal/subtitle/renderers/kitsubass.c14
2 files changed, 27 insertions, 7 deletions
diff --git a/src/internal/kitdecoder.c b/src/internal/kitdecoder.c
index f4deaca..14d2e7c 100644
--- a/src/internal/kitdecoder.c
+++ b/src/internal/kitdecoder.c
@@ -40,8 +40,12 @@ Kit_Decoder* Kit_CreateDecoder(const Kit_Source *src, int stream_index,
}
// Find audio decoder
+#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(57, 48, 101)
codec = avcodec_find_decoder(format_ctx->streams[stream_index]->codec->codec_id);
- if(!codec) {
+#else
+ codec = avcodec_find_decoder(format_ctx->streams[stream_index]->codecpar->codec_id);
+#endif
+ if(codec == NULL) {
Kit_SetError("No suitable decoder found for stream %d", stream_index);
goto exit_1;
}
@@ -53,12 +57,22 @@ Kit_Decoder* Kit_CreateDecoder(const Kit_Source *src, int stream_index,
goto exit_1;
}
- // Copy context from stream to target codec context
- if(avcodec_copy_context(codec_ctx, format_ctx->streams[stream_index]->codec) != 0) {
+ // Copy params
+#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(57, 48, 101)
+ if(avcodec_copy_context(codec_ctx, format_ctx->streams[stream_index]->codec) != 0)
+#else
+ if(avcodec_parameters_to_context(codec_ctx, format_ctx->streams[stream_index]->codecpar) < 0)
+#endif
+ {
Kit_SetError("Unable to copy codec context for stream %d", stream_index);
goto exit_2;
}
+ // Required by ffmpeg for now when using the new API.
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57, 48, 101)
+ codec_ctx->pkt_timebase = format_ctx->streams[stream_index]->time_base;
+#endif
+
// Set thread count
codec_ctx->thread_count = thread_count;
codec_ctx->thread_type = FF_THREAD_SLICE;
diff --git a/src/internal/subtitle/renderers/kitsubass.c b/src/internal/subtitle/renderers/kitsubass.c
index 88159d9..c229406 100644
--- a/src/internal/subtitle/renderers/kitsubass.c
+++ b/src/internal/subtitle/renderers/kitsubass.c
@@ -2,6 +2,7 @@
#include <stdlib.h>
#include <SDL_surface.h>
+#include <libavcodec/version.h>
#include "kitchensink/kiterror.h"
#include "kitchensink/internal/utils/kitlog.h"
@@ -165,7 +166,12 @@ Kit_SubtitleRenderer* Kit_CreateASSSubtitleRenderer(Kit_Decoder *dec, int video_
// Read fonts from attachment streams and give them to libass
for(int j = 0; j < dec->format_ctx->nb_streams; j++) {
AVStream *st = dec->format_ctx->streams[j];
- if(st->codec->codec_type == AVMEDIA_TYPE_ATTACHMENT && attachment_is_font(st)) {
+#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(57, 48, 101)
+ AVCodecContext *codec = st->codec;
+#else
+ AVCodecParameters *codec = st->codecpar;
+#endif
+ if(codec->codec_type == AVMEDIA_TYPE_ATTACHMENT && attachment_is_font(st)) {
const AVDictionaryEntry *tag = av_dict_get(
st->metadata,
"filename",
@@ -174,9 +180,9 @@ Kit_SubtitleRenderer* Kit_CreateASSSubtitleRenderer(Kit_Decoder *dec, int video_
if(tag) {
ass_add_font(
state->libass_handle,
- tag->value,
- (char*)st->codec->extradata,
- st->codec->extradata_size);
+ tag->value,
+ (char*)codec->extradata,
+ codec->extradata_size);
}
}
}