| @@ -314,19 +314,18 @@ static int encode_dvd_subtitles(AVCodecContext *avctx, | |||
| // encode data block | |||
| q = outbuf + 4; | |||
| /* TODO reindent */ | |||
| offset1 = q - outbuf; | |||
| // worst case memory requirement: 1 nibble per pixel.. | |||
| if ((q - outbuf) + vrect.w * vrect.h / 2 + 17 + 21 > outbuf_size) { | |||
| av_log(NULL, AV_LOG_ERROR, "dvd_subtitle too big\n"); | |||
| ret = AVERROR_BUFFER_TOO_SMALL; | |||
| goto fail; | |||
| } | |||
| dvd_encode_rle(&q, vrect.pict.data[0], vrect.w * 2, | |||
| vrect.w, (vrect.h + 1) >> 1, cmap); | |||
| offset2 = q - outbuf; | |||
| dvd_encode_rle(&q, vrect.pict.data[0] + vrect.w, vrect.w * 2, | |||
| vrect.w, vrect.h >> 1, cmap); | |||
| offset1 = q - outbuf; | |||
| // worst case memory requirement: 1 nibble per pixel.. | |||
| if ((q - outbuf) + vrect.w * vrect.h / 2 + 17 + 21 > outbuf_size) { | |||
| av_log(NULL, AV_LOG_ERROR, "dvd_subtitle too big\n"); | |||
| ret = AVERROR_BUFFER_TOO_SMALL; | |||
| goto fail; | |||
| } | |||
| dvd_encode_rle(&q, vrect.pict.data[0], vrect.w * 2, | |||
| vrect.w, (vrect.h + 1) >> 1, cmap); | |||
| offset2 = q - outbuf; | |||
| dvd_encode_rle(&q, vrect.pict.data[0] + vrect.w, vrect.w * 2, | |||
| vrect.w, vrect.h >> 1, cmap); | |||
| // set data packet size | |||
| qq = outbuf + 2; | |||
| @@ -343,24 +342,23 @@ static int encode_dvd_subtitles(AVCodecContext *avctx, | |||
| *q++ = (out_alpha[1] & 0xF0) | (out_alpha[0] >> 4); | |||
| // 12 bytes per rect | |||
| /* TODO reindent */ | |||
| x2 = vrect.x + vrect.w - 1; | |||
| y2 = vrect.y + vrect.h - 1; | |||
| *q++ = 0x05; | |||
| // x1 x2 -> 6 nibbles | |||
| *q++ = vrect.x >> 4; | |||
| *q++ = (vrect.x << 4) | ((x2 >> 8) & 0xf); | |||
| *q++ = x2; | |||
| // y1 y2 -> 6 nibbles | |||
| *q++ = vrect.y >> 4; | |||
| *q++ = (vrect.y << 4) | ((y2 >> 8) & 0xf); | |||
| *q++ = y2; | |||
| *q++ = 0x06; | |||
| // offset1, offset2 | |||
| bytestream_put_be16(&q, offset1); | |||
| bytestream_put_be16(&q, offset2); | |||
| x2 = vrect.x + vrect.w - 1; | |||
| y2 = vrect.y + vrect.h - 1; | |||
| *q++ = 0x05; | |||
| // x1 x2 -> 6 nibbles | |||
| *q++ = vrect.x >> 4; | |||
| *q++ = (vrect.x << 4) | ((x2 >> 8) & 0xf); | |||
| *q++ = x2; | |||
| // y1 y2 -> 6 nibbles | |||
| *q++ = vrect.y >> 4; | |||
| *q++ = (vrect.y << 4) | ((y2 >> 8) & 0xf); | |||
| *q++ = y2; | |||
| *q++ = 0x06; | |||
| // offset1, offset2 | |||
| bytestream_put_be16(&q, offset1); | |||
| bytestream_put_be16(&q, offset2); | |||
| *q++ = 0x01; // start command | |||
| *q++ = 0xff; // terminating command | |||