mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-27 18:02:11 +00:00
magicyuv: Convert to the new bitstream reader
This commit is contained in:
parent
b061f298f7
commit
2e0e150144
@ -22,14 +22,15 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "../libavutil/pixdesc.h"
|
||||
#include "libavutil/pixdesc.h"
|
||||
|
||||
#include "avcodec.h"
|
||||
#include "bitstream.h"
|
||||
#include "bytestream.h"
|
||||
#include "get_bits.h"
|
||||
#include "huffyuvdsp.h"
|
||||
#include "internal.h"
|
||||
#include "thread.h"
|
||||
#include "vlc.h"
|
||||
|
||||
typedef struct Slice {
|
||||
uint32_t start;
|
||||
@ -108,7 +109,7 @@ static int magy_decode_slice(AVCodecContext *avctx, void *tdata,
|
||||
int interlaced = s->interlaced;
|
||||
AVFrame *p = s->p;
|
||||
int i, k, x;
|
||||
GetBitContext gb;
|
||||
BitstreamContext bc;
|
||||
uint8_t *dst;
|
||||
|
||||
for (i = 0; i < s->planes; i++) {
|
||||
@ -119,20 +120,20 @@ static int magy_decode_slice(AVCodecContext *avctx, void *tdata,
|
||||
ptrdiff_t fake_stride = p->linesize[i] * (1 + interlaced);
|
||||
ptrdiff_t stride = p->linesize[i];
|
||||
int flags, pred;
|
||||
int ret = init_get_bits8(&gb, s->buf + s->slices[i][j].start,
|
||||
s->slices[i][j].size);
|
||||
int ret = bitstream_init8(&bc, s->buf + s->slices[i][j].start,
|
||||
s->slices[i][j].size);
|
||||
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
flags = get_bits(&gb, 8);
|
||||
pred = get_bits(&gb, 8);
|
||||
flags = bitstream_read(&bc, 8);
|
||||
pred = bitstream_read(&bc, 8);
|
||||
|
||||
dst = p->data[i] + j * sheight * stride;
|
||||
if (flags & 1) {
|
||||
for (k = 0; k < height; k++) {
|
||||
for (x = 0; x < width; x++)
|
||||
dst[x] = get_bits(&gb, 8);
|
||||
dst[x] = bitstream_read(&bc, 8);
|
||||
|
||||
dst += stride;
|
||||
}
|
||||
@ -140,10 +141,10 @@ static int magy_decode_slice(AVCodecContext *avctx, void *tdata,
|
||||
for (k = 0; k < height; k++) {
|
||||
for (x = 0; x < width; x++) {
|
||||
int pix;
|
||||
if (get_bits_left(&gb) <= 0)
|
||||
if (bitstream_bits_left(&bc) <= 0)
|
||||
return AVERROR_INVALIDDATA;
|
||||
|
||||
pix = get_vlc2(&gb, s->vlc[i].table, s->vlc[i].bits, 3);
|
||||
pix = bitstream_read_vlc(&bc, s->vlc[i].table, s->vlc[i].bits, 3);
|
||||
if (pix < 0)
|
||||
return AVERROR_INVALIDDATA;
|
||||
|
||||
@ -238,7 +239,7 @@ static int magy_decode_frame(AVCodecContext *avctx, void *data,
|
||||
ThreadFrame frame = { .f = data };
|
||||
AVFrame *p = data;
|
||||
GetByteContext gbyte;
|
||||
GetBitContext gbit;
|
||||
BitstreamContext bc;
|
||||
uint32_t first_offset, offset, next_offset, header_size, slice_width;
|
||||
int width, height, format, version, table_size;
|
||||
int ret, i, j, k;
|
||||
@ -370,16 +371,16 @@ static int magy_decode_frame(AVCodecContext *avctx, void *data,
|
||||
if (table_size < 2)
|
||||
return AVERROR_INVALIDDATA;
|
||||
|
||||
ret = init_get_bits8(&gbit, avpkt->data + bytestream2_tell(&gbyte), table_size);
|
||||
ret = bitstream_init8(&bc, avpkt->data + bytestream2_tell(&gbyte), table_size);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
memset(s->len, 0, sizeof(s->len));
|
||||
j = i = 0;
|
||||
while (get_bits_left(&gbit) >= 8) {
|
||||
int b = get_bits(&gbit, 4);
|
||||
int x = get_bits(&gbit, 4);
|
||||
int l = get_bitsz(&gbit, b) + 1;
|
||||
while (bitstream_bits_left(&bc) >= 8) {
|
||||
int b = bitstream_read(&bc, 4);
|
||||
int x = bitstream_read(&bc, 4);
|
||||
int l = bitstream_read(&bc, b) + 1;
|
||||
|
||||
for (k = 0; k < l; k++)
|
||||
if (j + k < 256)
|
||||
|
Loading…
Reference in New Issue
Block a user