#include <vlc_common.h>
#include <vlc_codec.h>
#include <vlc_avcodec.h>
-#include <vlc_osd.h>
/* ffmpeg header */
#ifdef HAVE_LIBAVCODEC_AVCODEC_H
# ifdef HAVE_AVCODEC_VAAPI
# include <libavcodec/vaapi.h>
# endif
-#elif defined(HAVE_FFMPEG_AVCODEC_H)
-# include <ffmpeg/avcodec.h>
#else
# include <avcodec.h>
#endif
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 52, 25, 0 )
struct decoder_sys_t {
- FFMPEG_COMMON_MEMBERS
+ AVCODEC_COMMON_MEMBERS
};
static subpicture_t *ConvertSubtitle(decoder_t *, AVSubtitle *, mtime_t pts);
/* */
switch (codec_id) {
case CODEC_ID_HDMV_PGS_SUBTITLE:
+ case CODEC_ID_XSUB:
break;
default:
msg_Warn(dec, "refusing to decode non validated subtitle codec");
if (!sys)
return VLC_ENOMEM;
- codec->type = CODEC_TYPE_SUBTITLE;
- context->codec_type = CODEC_TYPE_SUBTITLE;
+ codec->type = AVMEDIA_TYPE_SUBTITLE;
+ context->codec_type = AVMEDIA_TYPE_SUBTITLE;
context->codec_id = codec_id;
sys->p_context = context;
sys->p_codec = codec;
context->extradata = NULL;
/* */
+ int ret;
vlc_avcodec_lock();
- if (avcodec_open(context, codec) < 0) {
+#if LIBAVCODEC_VERSION_MAJOR < 54
+ ret = avcodec_open(context, codec);
+#else
+ ret = avcodec_open2(context, codec, NULL /* options */);
+#endif
+ if (ret < 0) {
vlc_avcodec_unlock();
msg_Err(dec, "cannot open codec (%s)", namecodec);
free(context->extradata);
//msg_Err(dec, "SUBS RECT[%d]: %dx%d @%dx%d",
// i, rec->w, rec->h, rec->x, rec->y);
- subpicture_region_t *region;
+ subpicture_region_t *region = NULL;
switch (ffsub->format) {
case 0:
region = ConvertRegionRGBA(rec);
*region_next = region;
region_next = ®ion->p_next;
}
- /* Free AVSubtitleRect
- * FIXME isn't there an avcodec function ? */
- free(rec->pict.data[0]); /* Plane */
- free(rec->pict.data[1]); /* Palette */
- free(rec);
+ /* Free AVSubtitleRect */
+ avpicture_free(&rec->pict);
+ av_free(rec);
}
- free(ffsub->rects);
+ av_free(ffsub->rects);
return spu;
}