}
static int encode_dvb_subtitles(DVBSubtitleContext *s,
- uint8_t *outbuf, AVSubtitle *h)
+ uint8_t *outbuf, const AVSubtitle *h)
{
uint8_t *q, *pseg_len;
int page_id, region_id, clut_id, object_id, i, bpp_index, page_state;
page_id = 1;
- if (h->num_rects == 0 || h->rects == NULL)
+ if (h->num_rects == 0 || !h->rects)
return -1;
*q++ = 0x00; /* subtitle_stream_id */
*q++ = (1 << (7 - bpp_index)) | (0xf << 1) | 1; /* 2 bits/pixel full range */
{
int a, r, g, b;
- uint32_t x= ((uint32_t*)h->rects[clut_id]->pict.data[1])[i];
+ uint32_t x= ((uint32_t*)h->rects[clut_id]->data[1])[i];
a = (x >> 24) & 0xff;
r = (x >> 16) & 0xff;
g = (x >> 8) & 0xff;
dvb_encode_rle = dvb_encode_rle4;
top_ptr = q;
- dvb_encode_rle(&q, h->rects[object_id]->pict.data[0], h->rects[object_id]->w * 2,
+ dvb_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);
bottom_ptr = q;
- dvb_encode_rle(&q, h->rects[object_id]->pict.data[0] + h->rects[object_id]->w,
+ dvb_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);
}
static int dvbsub_encode(AVCodecContext *avctx,
- unsigned char *buf, int buf_size, void *data)
+ unsigned char *buf, int buf_size,
+ const AVSubtitle *sub)
{
DVBSubtitleContext *s = avctx->priv_data;
- AVSubtitle *sub = data;
int ret;
ret = encode_dvb_subtitles(s, buf, sub);
AVCodec ff_dvbsub_encoder = {
.name = "dvbsub",
+ .long_name = NULL_IF_CONFIG_SMALL("DVB subtitles"),
.type = AVMEDIA_TYPE_SUBTITLE,
.id = AV_CODEC_ID_DVB_SUBTITLE,
.priv_data_size = sizeof(DVBSubtitleContext),
- .encode = dvbsub_encode,
- .long_name = NULL_IF_CONFIG_SMALL("DVB subtitles"),
+ .encode_sub = dvbsub_encode,
};