[FFmpeg-devel] [PATCH] Add support for Display Definition Segment to DVB Subtitle encoder

Marton Balint cus at passwd.hu
Fri Jul 12 21:17:29 EEST 2019



On Fri, 12 Jul 2019, Jernej wrote:

> Here's the fixed patch. I'm not familiar with providing patches via a
> mailing list. If replying doesn't work, I'll just use a new git send-mail.

Yes, please, preferably with --in-reply-to=<messageId>

Thanks,
Marton

>
> Signed-off-by: Jernej Fijacko <mikrohard at gmail.com>
> ---
> libavcodec/dvbsub.c | 19 ++++++++++++++++---
> 1 file changed, 16 insertions(+), 3 deletions(-)
>
> diff --git a/libavcodec/dvbsub.c b/libavcodec/dvbsub.c
> index 8cce702a9e..a8d43d81d6 100644
> --- a/libavcodec/dvbsub.c
> +++ b/libavcodec/dvbsub.c
> @@ -247,9 +247,10 @@ static void dvb_encode_rle8(uint8_t **pq,
>     *pq = q;
> }
>
> -static int encode_dvb_subtitles(DVBSubtitleContext *s,
> +static int encode_dvb_subtitles(AVCodecContext *avctx,
>                                 uint8_t *outbuf, const AVSubtitle *h)
> {
> +    DVBSubtitleContext *s = avctx->priv_data;
>     uint8_t *q, *pseg_len;
>     int page_id, region_id, clut_id, object_id, i, bpp_index, page_state;
>
> @@ -261,6 +262,19 @@ static int encode_dvb_subtitles(DVBSubtitleContext *s,
>     if (h->num_rects && !h->rects)
>         return -1;
>
> +    if (avctx->width > 0 && avctx->height > 0) {
> +        /* display definition segment */
> +        *q++ = 0x0f; /* sync_byte */
> +        *q++ = 0x14; /* segment_type */
> +        bytestream_put_be16(&q, page_id);
> +        pseg_len = q;
> +        q += 2; /* segment length */
> +        *q++ = 0x00; /* dds version number & display window flag */
> +        bytestream_put_be16(&q, avctx->width - 1); /* display width */
> +        bytestream_put_be16(&q, avctx->height - 1); /* display height */
> +        bytestream_put_be16(&pseg_len, q - pseg_len - 2);
> +    }
> +
>     /* page composition segment */
>
>     *q++ = 0x0f; /* sync_byte */
> @@ -446,10 +460,9 @@ static int dvbsub_encode(AVCodecContext *avctx,
>                          unsigned char *buf, int buf_size,
>                          const AVSubtitle *sub)
> {
> -    DVBSubtitleContext *s = avctx->priv_data;
>     int ret;
>
> -    ret = encode_dvb_subtitles(s, buf, sub);
> +    ret = encode_dvb_subtitles(avctx, buf, sub);
>     return ret;
> }
>
> -- 
> 2.21.0
>
>>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".


More information about the ffmpeg-devel mailing list