1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-11-26 19:01:44 +02:00

dvbsubdec: Convert to the new bitstream reader

This commit is contained in:
Alexandra Hájková 2016-04-12 12:29:20 +02:00 committed by Diego Biurrun
parent d7fe11634c
commit 9aec009f65

View File

@ -20,7 +20,7 @@
*/
#include "avcodec.h"
#include "get_bits.h"
#include "bitstream.h"
#include "bytestream.h"
#include "internal.h"
#include "libavutil/colorspace.h"
@ -330,16 +330,16 @@ static int dvbsub_read_2bit_string(uint8_t *destbuf, int dbuf_len,
const uint8_t **srcbuf, int buf_size,
int non_mod, uint8_t *map_table)
{
GetBitContext gb;
BitstreamContext bc;
int bits;
int run_length;
int pixels_read = 0;
init_get_bits(&gb, *srcbuf, buf_size << 3);
bitstream_init(&bc, *srcbuf, buf_size << 3);
while (get_bits_count(&gb) < buf_size << 3 && pixels_read < dbuf_len) {
bits = get_bits(&gb, 2);
while (bitstream_tell(&bc) < buf_size << 3 && pixels_read < dbuf_len) {
bits = bitstream_read(&bc, 2);
if (bits) {
if (non_mod != 1 || bits != 1) {
@ -350,10 +350,10 @@ static int dvbsub_read_2bit_string(uint8_t *destbuf, int dbuf_len,
}
pixels_read++;
} else {
bits = get_bits1(&gb);
bits = bitstream_read_bit(&bc);
if (bits == 1) {
run_length = get_bits(&gb, 3) + 3;
bits = get_bits(&gb, 2);
run_length = bitstream_read(&bc, 3) + 3;
bits = bitstream_read(&bc, 2);
if (non_mod == 1 && bits == 1)
pixels_read += run_length;
@ -366,12 +366,12 @@ static int dvbsub_read_2bit_string(uint8_t *destbuf, int dbuf_len,
}
}
} else {
bits = get_bits1(&gb);
bits = bitstream_read_bit(&bc);
if (bits == 0) {
bits = get_bits(&gb, 2);
bits = bitstream_read(&bc, 2);
if (bits == 2) {
run_length = get_bits(&gb, 4) + 12;
bits = get_bits(&gb, 2);
run_length = bitstream_read(&bc, 4) + 12;
bits = bitstream_read(&bc, 2);
if (non_mod == 1 && bits == 1)
pixels_read += run_length;
@ -384,8 +384,8 @@ static int dvbsub_read_2bit_string(uint8_t *destbuf, int dbuf_len,
}
}
} else if (bits == 3) {
run_length = get_bits(&gb, 8) + 29;
bits = get_bits(&gb, 2);
run_length = bitstream_read(&bc, 8) + 29;
bits = bitstream_read(&bc, 2);
if (non_mod == 1 && bits == 1)
pixels_read += run_length;
@ -408,7 +408,7 @@ static int dvbsub_read_2bit_string(uint8_t *destbuf, int dbuf_len,
*destbuf++ = bits;
}
} else {
(*srcbuf) += (get_bits_count(&gb) + 7) >> 3;
*srcbuf += (bitstream_tell(&bc) + 7) >> 3;
return pixels_read;
}
} else {
@ -423,10 +423,10 @@ static int dvbsub_read_2bit_string(uint8_t *destbuf, int dbuf_len,
}
}
if (get_bits(&gb, 6))
if (bitstream_read(&bc, 6))
av_log(NULL, AV_LOG_ERROR, "DVBSub error: line overflow\n");
(*srcbuf) += (get_bits_count(&gb) + 7) >> 3;
*srcbuf += (bitstream_tell(&bc) + 7) >> 3;
return pixels_read;
}
@ -435,16 +435,16 @@ static int dvbsub_read_4bit_string(uint8_t *destbuf, int dbuf_len,
const uint8_t **srcbuf, int buf_size,
int non_mod, uint8_t *map_table)
{
GetBitContext gb;
BitstreamContext bc;
int bits;
int run_length;
int pixels_read = 0;
init_get_bits(&gb, *srcbuf, buf_size << 3);
bitstream_init(&bc, *srcbuf, buf_size << 3);
while (get_bits_count(&gb) < buf_size << 3 && pixels_read < dbuf_len) {
bits = get_bits(&gb, 4);
while (bitstream_tell(&bc) < buf_size << 3 && pixels_read < dbuf_len) {
bits = bitstream_read(&bc, 4);
if (bits) {
if (non_mod != 1 || bits != 1) {
@ -455,12 +455,12 @@ static int dvbsub_read_4bit_string(uint8_t *destbuf, int dbuf_len,
}
pixels_read++;
} else {
bits = get_bits1(&gb);
bits = bitstream_read_bit(&bc);
if (bits == 0) {
run_length = get_bits(&gb, 3);
run_length = bitstream_read(&bc, 3);
if (run_length == 0) {
(*srcbuf) += (get_bits_count(&gb) + 7) >> 3;
*srcbuf += (bitstream_tell(&bc) + 7) >> 3;
return pixels_read;
}
@ -476,10 +476,10 @@ static int dvbsub_read_4bit_string(uint8_t *destbuf, int dbuf_len,
pixels_read++;
}
} else {
bits = get_bits1(&gb);
bits = bitstream_read_bit(&bc);
if (bits == 0) {
run_length = get_bits(&gb, 2) + 4;
bits = get_bits(&gb, 4);
run_length = bitstream_read(&bc, 2) + 4;
bits = bitstream_read(&bc, 4);
if (non_mod == 1 && bits == 1)
pixels_read += run_length;
@ -492,10 +492,10 @@ static int dvbsub_read_4bit_string(uint8_t *destbuf, int dbuf_len,
}
}
} else {
bits = get_bits(&gb, 2);
bits = bitstream_read(&bc, 2);
if (bits == 2) {
run_length = get_bits(&gb, 4) + 9;
bits = get_bits(&gb, 4);
run_length = bitstream_read(&bc, 4) + 9;
bits = bitstream_read(&bc, 4);
if (non_mod == 1 && bits == 1)
pixels_read += run_length;
@ -508,8 +508,8 @@ static int dvbsub_read_4bit_string(uint8_t *destbuf, int dbuf_len,
}
}
} else if (bits == 3) {
run_length = get_bits(&gb, 8) + 25;
bits = get_bits(&gb, 4);
run_length = bitstream_read(&bc, 8) + 25;
bits = bitstream_read(&bc, 4);
if (non_mod == 1 && bits == 1)
pixels_read += run_length;
@ -544,10 +544,10 @@ static int dvbsub_read_4bit_string(uint8_t *destbuf, int dbuf_len,
}
}
if (get_bits(&gb, 8))
if (bitstream_read(&bc, 8))
av_log(NULL, AV_LOG_ERROR, "DVBSub error: line overflow\n");
(*srcbuf) += (get_bits_count(&gb) + 7) >> 3;
*srcbuf += (bitstream_tell(&bc) + 7) >> 3;
return pixels_read;
}