X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fxsubdec.c;h=979399bae6e32c36272ae558e989a9d06011b5d5;hb=a247ac640df3da573cd661065bf53f37863e2b46;hp=93fd0f4d50e542737f526419139c23f5f87b6adc;hpb=c2631dfd0a0a12050cc1765fd41702c5e93abee5;p=ffmpeg diff --git a/libavcodec/xsubdec.c b/libavcodec/xsubdec.c index 93fd0f4d50e..979399bae6e 100644 --- a/libavcodec/xsubdec.c +++ b/libavcodec/xsubdec.c @@ -24,6 +24,7 @@ #include "avcodec.h" #include "get_bits.h" #include "bytestream.h" +#include "internal.h" static av_cold int decode_init(AVCodecContext *avctx) { avctx->pix_fmt = AV_PIX_FMT_PAL8; @@ -46,7 +47,7 @@ static int64_t parse_timecode(const uint8_t *buf, int64_t packet_time) { return ms - packet_time; } -static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, +static int decode_frame(AVCodecContext *avctx, void *data, int *got_sub_ptr, AVPacket *avpkt) { const uint8_t *buf = avpkt->data; int buf_size = avpkt->size; @@ -130,23 +131,9 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, ((uint32_t *)sub->rects[0]->data[1])[i] |= 0xff000000; } else { for (i = 0; i < sub->rects[0]->nb_colors; i++) - ((uint32_t *)sub->rects[0]->data[1])[i] |= *buf++ << 24; + ((uint32_t *)sub->rects[0]->data[1])[i] |= (unsigned)*buf++ << 24; } -#if FF_API_AVPICTURE -FF_DISABLE_DEPRECATION_WARNINGS -{ - AVSubtitleRect *rect; - int j; - rect = sub->rects[0]; - for (j = 0; j < 4; j++) { - rect->pict.data[j] = rect->data[j]; - rect->pict.linesize[j] = rect->linesize[j]; - } -} -FF_ENABLE_DEPRECATION_WARNINGS -#endif - // process RLE-compressed data if ((ret = init_get_bits8(&gb, buf, buf_end - buf)) < 0) return ret; @@ -169,15 +156,16 @@ FF_ENABLE_DEPRECATION_WARNINGS bitmap += w; align_get_bits(&gb); } - *data_size = 1; + *got_sub_ptr = 1; return buf_size; } -AVCodec ff_xsub_decoder = { +const AVCodec ff_xsub_decoder = { .name = "xsub", .long_name = NULL_IF_CONFIG_SMALL("XSUB"), .type = AVMEDIA_TYPE_SUBTITLE, .id = AV_CODEC_ID_XSUB, .init = decode_init, .decode = decode_frame, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, };