Message ID | 20170211232324.70689-1-josh@itanimul.li |
---|---|
State | Superseded |
Headers | show |
2017-02-12 0:23 GMT+01:00 Josh de Kock <josh@itanimul.li>: > - if (!vbi_event_handler_add(ctx->vbi, VBI_EVENT_TTX_PAGE, handler, ctx)) { > + if (!vbi_event_handler_register(ctx->vbi, VBI_EVENT_TTX_PAGE, handler, ctx)) { > vbi_decoder_delete(ctx->vbi); > ctx->vbi = NULL; > return AVERROR(ENOMEM); > @@ -524,8 +524,12 @@ static int teletext_close_decoder(AVCodecContext *avctx) > subtitle_rect_free(&ctx->pages[--ctx->nb_pages].sub_rect); > av_freep(&ctx->pages); > > - vbi_decoder_delete(ctx->vbi); > - ctx->vbi = NULL; > + if (ctx->vbi) { > + vbi_event_handler_unregister(ctx->vbi, handler, ctx); Does this work with 0.2.28? Thank you, Carl Eugen
On Sat, 11 Feb 2017, Josh de Kock wrote: > Signed-off-by: Josh de Kock <josh@itanimul.li> > --- > libavcodec/libzvbi-teletextdec.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/libavcodec/libzvbi-teletextdec.c b/libavcodec/libzvbi-teletextdec.c > index d1f0a9f..2ed4a82 100644 > --- a/libavcodec/libzvbi-teletextdec.c > +++ b/libavcodec/libzvbi-teletextdec.c > @@ -395,7 +395,7 @@ static int teletext_decode_frame(AVCodecContext *avctx, void *data, int *data_si > if (!ctx->vbi) { > if (!(ctx->vbi = vbi_decoder_new())) > return AVERROR(ENOMEM); > - if (!vbi_event_handler_add(ctx->vbi, VBI_EVENT_TTX_PAGE, handler, ctx)) { > + if (!vbi_event_handler_register(ctx->vbi, VBI_EVENT_TTX_PAGE, handler, ctx)) { > vbi_decoder_delete(ctx->vbi); > ctx->vbi = NULL; > return AVERROR(ENOMEM); > @@ -524,8 +524,12 @@ static int teletext_close_decoder(AVCodecContext *avctx) > subtitle_rect_free(&ctx->pages[--ctx->nb_pages].sub_rect); > av_freep(&ctx->pages); > > - vbi_decoder_delete(ctx->vbi); > - ctx->vbi = NULL; > + if (ctx->vbi) { > + vbi_event_handler_unregister(ctx->vbi, handler, ctx); > + vbi_decoder_delete(ctx->vbi); > + ctx->vbi = NULL; > + } > + > ctx->pts = AV_NOPTS_VALUE; > if (!(avctx->flags2 & AV_CODEC_FLAG2_RO_FLUSH_NOOP)) > ctx->readorder = 0; > -- LGTM if tested. Thanks, Marton
diff --git a/libavcodec/libzvbi-teletextdec.c b/libavcodec/libzvbi-teletextdec.c index d1f0a9f..2ed4a82 100644 --- a/libavcodec/libzvbi-teletextdec.c +++ b/libavcodec/libzvbi-teletextdec.c @@ -395,7 +395,7 @@ static int teletext_decode_frame(AVCodecContext *avctx, void *data, int *data_si if (!ctx->vbi) { if (!(ctx->vbi = vbi_decoder_new())) return AVERROR(ENOMEM); - if (!vbi_event_handler_add(ctx->vbi, VBI_EVENT_TTX_PAGE, handler, ctx)) { + if (!vbi_event_handler_register(ctx->vbi, VBI_EVENT_TTX_PAGE, handler, ctx)) { vbi_decoder_delete(ctx->vbi); ctx->vbi = NULL; return AVERROR(ENOMEM); @@ -524,8 +524,12 @@ static int teletext_close_decoder(AVCodecContext *avctx) subtitle_rect_free(&ctx->pages[--ctx->nb_pages].sub_rect); av_freep(&ctx->pages); - vbi_decoder_delete(ctx->vbi); - ctx->vbi = NULL; + if (ctx->vbi) { + vbi_event_handler_unregister(ctx->vbi, handler, ctx); + vbi_decoder_delete(ctx->vbi); + ctx->vbi = NULL; + } + ctx->pts = AV_NOPTS_VALUE; if (!(avctx->flags2 & AV_CODEC_FLAG2_RO_FLUSH_NOOP)) ctx->readorder = 0;
Signed-off-by: Josh de Kock <josh@itanimul.li> --- libavcodec/libzvbi-teletextdec.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)