X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fxsubdec.c;h=87ac9105771caecfd9e16937e46cab11d48d912b;hb=da6e137cb6e81e2389cf62dca2b1f957862a8498;hp=93fd0f4d50e542737f526419139c23f5f87b6adc;hpb=762c2b5dcd99a08452299cd1f83070f88115f1f3;p=ffmpeg diff --git a/libavcodec/xsubdec.c b/libavcodec/xsubdec.c index 93fd0f4d50e..87ac9105771 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,7 +131,7 @@ 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 @@ -169,7 +170,7 @@ FF_ENABLE_DEPRECATION_WARNINGS bitmap += w; align_get_bits(&gb); } - *data_size = 1; + *got_sub_ptr = 1; return buf_size; } @@ -180,4 +181,5 @@ AVCodec ff_xsub_decoder = { .id = AV_CODEC_ID_XSUB, .init = decode_init, .decode = decode_frame, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, };