|
|
|
@ -168,6 +168,7 @@ static void jacosub_to_ass(AVCodecContext *avctx, AVBPrint *dst, const char *src |
|
|
|
|
static int jacosub_decode_frame(AVCodecContext *avctx, |
|
|
|
|
void *data, int *got_sub_ptr, AVPacket *avpkt) |
|
|
|
|
{ |
|
|
|
|
int ret; |
|
|
|
|
AVSubtitle *sub = data; |
|
|
|
|
const char *ptr = avpkt->data; |
|
|
|
|
|
|
|
|
@ -176,7 +177,6 @@ static int jacosub_decode_frame(AVCodecContext *avctx, |
|
|
|
|
|
|
|
|
|
if (*ptr) { |
|
|
|
|
AVBPrint buffer; |
|
|
|
|
char *dec_sub; |
|
|
|
|
|
|
|
|
|
// skip timers
|
|
|
|
|
ptr = jss_skip_whitespace(ptr); |
|
|
|
@ -185,9 +185,10 @@ static int jacosub_decode_frame(AVCodecContext *avctx, |
|
|
|
|
|
|
|
|
|
av_bprint_init(&buffer, JSS_MAX_LINESIZE, JSS_MAX_LINESIZE); |
|
|
|
|
jacosub_to_ass(avctx, &buffer, ptr); |
|
|
|
|
av_bprint_finalize(&buffer, &dec_sub); |
|
|
|
|
ff_ass_add_rect(sub, dec_sub, avpkt->pts, avpkt->duration, 0); |
|
|
|
|
av_free(dec_sub); |
|
|
|
|
ret = ff_ass_add_rect_bprint(sub, &buffer, avpkt->pts, avpkt->duration, 0); |
|
|
|
|
av_bprint_finalize(&buffer, NULL); |
|
|
|
|
if (ret < 0) |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
end: |
|
|
|
|