mirror of https://git.ffmpeg.org/ffmpeg.git
dvbsubdec: Convert to the new bitstream reader
This commit is contained in:
parent
d7fe11634c
commit
9aec009f65
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue