From a17a7661906ba295d67afd80ac0770422e1b02b3 Mon Sep 17 00:00:00 2001 From: Vittorio Giovara Date: Wed, 14 Oct 2015 11:33:25 +0200 Subject: lavc: Add data and linesize to AVSubtitleRect Use the new fields directly instead of the ones from AVPicture. This removes a layer of indirection which serves no pratical purpose whatsoever, and will help in removing AVPicture structure completely later. Every subtitle encoder/decoder seamlessly points to the new arrays, so it is possible to deprecate AVSubtitleRect.pict. Signed-off-by: Vittorio Giovara --- libavcodec/dvdsubenc.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) (limited to 'libavcodec/dvdsubenc.c') diff --git a/libavcodec/dvdsubenc.c b/libavcodec/dvdsubenc.c index f62e943e7f..b0c2b63356 100644 --- a/libavcodec/dvdsubenc.c +++ b/libavcodec/dvdsubenc.c @@ -107,13 +107,27 @@ static int encode_dvd_subtitles(uint8_t *outbuf, int outbuf_size, hist[i] = 0; cmap[i] = 0; } - for (object_id = 0; object_id < rects; object_id++) + for (object_id = 0; object_id < rects; object_id++) { +#if FF_API_AVPICTURE +FF_DISABLE_DEPRECATION_WARNINGS + if (!h->rects[object_id]->data[0]) { + AVSubtitleRect *rect = h->rects[object_id]; + int j; + for (j = 0; j < 4; j++) { + rect->data[j] = rect->pict.data[j]; + rect->linesize[j] = rect->pict.linesize[j]; + } + } +FF_ENABLE_DEPRECATION_WARNINGS +#endif + for (i=0; irects[object_id]->w*h->rects[object_id]->h; ++i) { - color = h->rects[object_id]->pict.data[0][i]; + color = h->rects[object_id]->data[0][i]; // only count non-transparent pixels - alpha = ((uint32_t*)h->rects[object_id]->pict.data[1])[color] >> 24; + alpha = ((uint32_t *)h->rects[object_id]->data[1])[color] >> 24; hist[color] += alpha; } + } for (color=3;; --color) { hmax = 0; imax = 0; @@ -143,12 +157,12 @@ static int encode_dvd_subtitles(uint8_t *outbuf, int outbuf_size, av_log(NULL, AV_LOG_ERROR, "dvd_subtitle too big\n"); return -1; } - dvd_encode_rle(&q, h->rects[object_id]->pict.data[0], + dvd_encode_rle(&q, h->rects[object_id]->data[0], h->rects[object_id]->w*2, h->rects[object_id]->w, h->rects[object_id]->h >> 1, cmap); offset2[object_id] = q - outbuf; - dvd_encode_rle(&q, h->rects[object_id]->pict.data[0] + h->rects[object_id]->w, + dvd_encode_rle(&q, h->rects[object_id]->data[0] + h->rects[object_id]->w, h->rects[object_id]->w*2, h->rects[object_id]->w, h->rects[object_id]->h >> 1, cmap); -- cgit v1.2.3