You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-04 22:03:09 +02:00
avcodec/rv34: Don't use MpegEncContext.gb
This is in preparation for removing MpegEncContext.gb. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
@ -116,7 +116,7 @@ static int rv30_decode_mb_info(RV34DecContext *r)
|
|||||||
static const int rv30_p_types[6] = { RV34_MB_SKIP, RV34_MB_P_16x16, RV34_MB_P_8x8, -1, RV34_MB_TYPE_INTRA, RV34_MB_TYPE_INTRA16x16 };
|
static const int rv30_p_types[6] = { RV34_MB_SKIP, RV34_MB_P_16x16, RV34_MB_P_8x8, -1, RV34_MB_TYPE_INTRA, RV34_MB_TYPE_INTRA16x16 };
|
||||||
static const int rv30_b_types[6] = { RV34_MB_SKIP, RV34_MB_B_DIRECT, RV34_MB_B_FORWARD, RV34_MB_B_BACKWARD, RV34_MB_TYPE_INTRA, RV34_MB_TYPE_INTRA16x16 };
|
static const int rv30_b_types[6] = { RV34_MB_SKIP, RV34_MB_B_DIRECT, RV34_MB_B_FORWARD, RV34_MB_B_BACKWARD, RV34_MB_TYPE_INTRA, RV34_MB_TYPE_INTRA16x16 };
|
||||||
MpegEncContext *s = &r->s;
|
MpegEncContext *s = &r->s;
|
||||||
GetBitContext *gb = &s->gb;
|
GetBitContext *const gb = &r->gb;
|
||||||
unsigned code = get_interleaved_ue_golomb(gb);
|
unsigned code = get_interleaved_ue_golomb(gb);
|
||||||
|
|
||||||
if (code > 11) {
|
if (code > 11) {
|
||||||
|
@ -363,7 +363,7 @@ static inline RV34VLC* choose_vlc_set(int quant, int mod, int type)
|
|||||||
static int rv34_decode_intra_mb_header(RV34DecContext *r, int8_t *intra_types)
|
static int rv34_decode_intra_mb_header(RV34DecContext *r, int8_t *intra_types)
|
||||||
{
|
{
|
||||||
MpegEncContext *s = &r->s;
|
MpegEncContext *s = &r->s;
|
||||||
GetBitContext *gb = &s->gb;
|
GetBitContext *const gb = &r->gb;
|
||||||
int mb_pos = s->mb_x + s->mb_y * s->mb_stride;
|
int mb_pos = s->mb_x + s->mb_y * s->mb_stride;
|
||||||
int t;
|
int t;
|
||||||
|
|
||||||
@ -398,7 +398,7 @@ static int rv34_decode_intra_mb_header(RV34DecContext *r, int8_t *intra_types)
|
|||||||
static int rv34_decode_inter_mb_header(RV34DecContext *r, int8_t *intra_types)
|
static int rv34_decode_inter_mb_header(RV34DecContext *r, int8_t *intra_types)
|
||||||
{
|
{
|
||||||
MpegEncContext *s = &r->s;
|
MpegEncContext *s = &r->s;
|
||||||
GetBitContext *gb = &s->gb;
|
GetBitContext *const gb = &r->gb;
|
||||||
int mb_pos = s->mb_x + s->mb_y * s->mb_stride;
|
int mb_pos = s->mb_x + s->mb_y * s->mb_stride;
|
||||||
int i, t;
|
int i, t;
|
||||||
|
|
||||||
@ -871,7 +871,7 @@ static const int num_mvs[RV34_MB_TYPES] = { 0, 0, 1, 4, 1, 1, 0, 0, 2, 2, 2, 1 }
|
|||||||
static int rv34_decode_mv(RV34DecContext *r, int block_type)
|
static int rv34_decode_mv(RV34DecContext *r, int block_type)
|
||||||
{
|
{
|
||||||
MpegEncContext *s = &r->s;
|
MpegEncContext *s = &r->s;
|
||||||
GetBitContext *gb = &s->gb;
|
GetBitContext *const gb = &r->gb;
|
||||||
int i, j, k, l;
|
int i, j, k, l;
|
||||||
int mv_pos = s->mb_x * 2 + s->mb_y * 2 * s->b8_stride;
|
int mv_pos = s->mb_x * 2 + s->mb_y * 2 * s->b8_stride;
|
||||||
int next_bt;
|
int next_bt;
|
||||||
@ -1031,7 +1031,7 @@ static inline void rv34_process_block(RV34DecContext *r,
|
|||||||
{
|
{
|
||||||
MpegEncContext *s = &r->s;
|
MpegEncContext *s = &r->s;
|
||||||
int16_t *ptr = s->block[0];
|
int16_t *ptr = s->block[0];
|
||||||
int has_ac = rv34_decode_block(ptr, &s->gb, r->cur_vlcs,
|
int has_ac = rv34_decode_block(ptr, &r->gb, r->cur_vlcs,
|
||||||
fc, sc, q_dc, q_ac, q_ac);
|
fc, sc, q_dc, q_ac, q_ac);
|
||||||
if(has_ac){
|
if(has_ac){
|
||||||
r->rdsp.rv34_idct_add(pdst, stride, ptr);
|
r->rdsp.rv34_idct_add(pdst, stride, ptr);
|
||||||
@ -1045,7 +1045,7 @@ static void rv34_output_i16x16(RV34DecContext *r, int8_t *intra_types, int cbp)
|
|||||||
{
|
{
|
||||||
LOCAL_ALIGNED_16(int16_t, block16, [16]);
|
LOCAL_ALIGNED_16(int16_t, block16, [16]);
|
||||||
MpegEncContext *s = &r->s;
|
MpegEncContext *s = &r->s;
|
||||||
GetBitContext *gb = &s->gb;
|
GetBitContext *const gb = &r->gb;
|
||||||
int q_dc = rv34_qscale_tab[ r->luma_dc_quant_i[s->qscale] ],
|
int q_dc = rv34_qscale_tab[ r->luma_dc_quant_i[s->qscale] ],
|
||||||
q_ac = rv34_qscale_tab[s->qscale];
|
q_ac = rv34_qscale_tab[s->qscale];
|
||||||
uint8_t *dst = s->dest[0];
|
uint8_t *dst = s->dest[0];
|
||||||
@ -1213,7 +1213,7 @@ static int rv34_set_deblock_coef(RV34DecContext *r)
|
|||||||
static int rv34_decode_inter_macroblock(RV34DecContext *r, int8_t *intra_types)
|
static int rv34_decode_inter_macroblock(RV34DecContext *r, int8_t *intra_types)
|
||||||
{
|
{
|
||||||
MpegEncContext *s = &r->s;
|
MpegEncContext *s = &r->s;
|
||||||
GetBitContext *gb = &s->gb;
|
GetBitContext *const gb = &r->gb;
|
||||||
uint8_t *dst = s->dest[0];
|
uint8_t *dst = s->dest[0];
|
||||||
int16_t *ptr = s->block[0];
|
int16_t *ptr = s->block[0];
|
||||||
int mb_pos = s->mb_x + s->mb_y * s->mb_stride;
|
int mb_pos = s->mb_x + s->mb_y * s->mb_stride;
|
||||||
@ -1367,8 +1367,8 @@ static int check_slice_end(RV34DecContext *r, MpegEncContext *s)
|
|||||||
return 1;
|
return 1;
|
||||||
if(r->s.mb_skip_run > 1)
|
if(r->s.mb_skip_run > 1)
|
||||||
return 0;
|
return 0;
|
||||||
bits = get_bits_left(&s->gb);
|
bits = get_bits_left(&r->gb);
|
||||||
if(bits <= 0 || (bits < 8 && !show_bits(&s->gb, bits)))
|
if (bits <= 0 || (bits < 8 && !show_bits(&r->gb, bits)))
|
||||||
return 1;
|
return 1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -1424,11 +1424,11 @@ static int rv34_decoder_realloc(RV34DecContext *r)
|
|||||||
static int rv34_decode_slice(RV34DecContext *r, int end, const uint8_t* buf, int buf_size)
|
static int rv34_decode_slice(RV34DecContext *r, int end, const uint8_t* buf, int buf_size)
|
||||||
{
|
{
|
||||||
MpegEncContext *s = &r->s;
|
MpegEncContext *s = &r->s;
|
||||||
GetBitContext *gb = &s->gb;
|
GetBitContext *const gb = &r->gb;
|
||||||
int mb_pos, slice_type;
|
int mb_pos, slice_type;
|
||||||
int res;
|
int res;
|
||||||
|
|
||||||
init_get_bits(&r->s.gb, buf, buf_size*8);
|
init_get_bits(gb, buf, buf_size*8);
|
||||||
res = r->parse_slice_header(r, gb, &r->si);
|
res = r->parse_slice_header(r, gb, &r->si);
|
||||||
if(res < 0){
|
if(res < 0){
|
||||||
av_log(s->avctx, AV_LOG_ERROR, "Incorrect or unknown slice header\n");
|
av_log(s->avctx, AV_LOG_ERROR, "Incorrect or unknown slice header\n");
|
||||||
@ -1651,8 +1651,8 @@ int ff_rv34_decode_frame(AVCodecContext *avctx, AVFrame *pict,
|
|||||||
av_log(avctx, AV_LOG_ERROR, "Slice offset is invalid\n");
|
av_log(avctx, AV_LOG_ERROR, "Slice offset is invalid\n");
|
||||||
return AVERROR_INVALIDDATA;
|
return AVERROR_INVALIDDATA;
|
||||||
}
|
}
|
||||||
init_get_bits(&s->gb, buf+offset, (buf_size-offset)*8);
|
init_get_bits(&r->gb, buf+offset, (buf_size-offset)*8);
|
||||||
if(r->parse_slice_header(r, &r->s.gb, &si) < 0 || si.start){
|
if (r->parse_slice_header(r, &r->gb, &si) < 0 || si.start) {
|
||||||
av_log(avctx, AV_LOG_ERROR, "First slice header is incorrect\n");
|
av_log(avctx, AV_LOG_ERROR, "First slice header is incorrect\n");
|
||||||
return AVERROR_INVALIDDATA;
|
return AVERROR_INVALIDDATA;
|
||||||
}
|
}
|
||||||
@ -1781,8 +1781,8 @@ int ff_rv34_decode_frame(AVCodecContext *avctx, AVFrame *pict,
|
|||||||
av_log(avctx, AV_LOG_ERROR, "Slice offset is invalid\n");
|
av_log(avctx, AV_LOG_ERROR, "Slice offset is invalid\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
init_get_bits(&s->gb, buf+offset1, (buf_size-offset1)*8);
|
init_get_bits(&r->gb, buf+offset1, (buf_size-offset1)*8);
|
||||||
if(r->parse_slice_header(r, &r->s.gb, &si) < 0){
|
if (r->parse_slice_header(r, &r->gb, &si) < 0) {
|
||||||
size = offset2 - offset;
|
size = offset2 - offset;
|
||||||
}else
|
}else
|
||||||
r->si.end = si.start;
|
r->si.end = si.start;
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#include "libavutil/mem_internal.h"
|
#include "libavutil/mem_internal.h"
|
||||||
|
|
||||||
#include "avcodec.h"
|
#include "avcodec.h"
|
||||||
|
#include "get_bits.h"
|
||||||
#include "mpegvideo.h"
|
#include "mpegvideo.h"
|
||||||
|
|
||||||
#include "h264pred.h"
|
#include "h264pred.h"
|
||||||
@ -85,6 +86,7 @@ typedef struct SliceInfo{
|
|||||||
/** decoder context */
|
/** decoder context */
|
||||||
typedef struct RV34DecContext{
|
typedef struct RV34DecContext{
|
||||||
MpegEncContext s;
|
MpegEncContext s;
|
||||||
|
GetBitContext gb;
|
||||||
RV34DSPContext rdsp;
|
RV34DSPContext rdsp;
|
||||||
int8_t *intra_types_hist;///< old block types, used for prediction
|
int8_t *intra_types_hist;///< old block types, used for prediction
|
||||||
int8_t *intra_types; ///< block types
|
int8_t *intra_types; ///< block types
|
||||||
|
@ -226,7 +226,7 @@ static int rv40_decode_intra_types(RV34DecContext *r, GetBitContext *gb, int8_t
|
|||||||
static int rv40_decode_mb_info(RV34DecContext *r)
|
static int rv40_decode_mb_info(RV34DecContext *r)
|
||||||
{
|
{
|
||||||
MpegEncContext *s = &r->s;
|
MpegEncContext *s = &r->s;
|
||||||
GetBitContext *gb = &s->gb;
|
GetBitContext *const gb = &r->gb;
|
||||||
int q, i;
|
int q, i;
|
||||||
int prev_type = 0;
|
int prev_type = 0;
|
||||||
int mb_pos = s->mb_x + s->mb_y * s->mb_stride;
|
int mb_pos = s->mb_x + s->mb_y * s->mb_stride;
|
||||||
|
Reference in New Issue
Block a user