mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-21 23:03:13 +00:00
Make VP5 and VP6 decoders output a qscale table to allow for more automatic
post-processing, and add a new FF_QSCALE_TYPE_VP56 for this. Originally committed as revision 21529 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
5e4e9042c4
commit
800274f871
@ -913,6 +913,7 @@ typedef struct AVPanScan{
|
||||
#define FF_QSCALE_TYPE_MPEG1 0
|
||||
#define FF_QSCALE_TYPE_MPEG2 1
|
||||
#define FF_QSCALE_TYPE_H264 2
|
||||
#define FF_QSCALE_TYPE_VP56 3
|
||||
|
||||
#define FF_BUFFER_TYPE_INTERNAL 1
|
||||
#define FF_BUFFER_TYPE_USER 2 ///< direct rendering buffers (image is (de)allocated by user)
|
||||
|
@ -33,6 +33,7 @@ void vp56_init_dequant(VP56Context *s, int quantizer)
|
||||
s->quantizer = quantizer;
|
||||
s->dequant_dc = vp56_dc_dequant[quantizer] << 2;
|
||||
s->dequant_ac = vp56_ac_dequant[quantizer] << 2;
|
||||
memset(s->qscale_table, quantizer, s->mb_width);
|
||||
}
|
||||
|
||||
static int vp56_get_vectors_predictors(VP56Context *s, int row, int col,
|
||||
@ -481,6 +482,7 @@ static int vp56_size_changed(AVCodecContext *avctx)
|
||||
return -1;
|
||||
}
|
||||
|
||||
s->qscale_table = av_realloc(s->qscale_table, s->mb_width);
|
||||
s->above_blocks = av_realloc(s->above_blocks,
|
||||
(4*s->mb_width+6) * sizeof(*s->above_blocks));
|
||||
s->macroblocks = av_realloc(s->macroblocks,
|
||||
@ -643,6 +645,9 @@ int vp56_decode_frame(AVCodecContext *avctx, void *data, int *data_size,
|
||||
FFSWAP(AVFrame *, s->framep[VP56_FRAME_CURRENT],
|
||||
s->framep[VP56_FRAME_PREVIOUS]);
|
||||
|
||||
p->qstride = 0;
|
||||
p->qscale_table = s->qscale_table;
|
||||
p->qscale_type = FF_QSCALE_TYPE_VP56;
|
||||
*(AVFrame*)data = *p;
|
||||
*data_size = sizeof(AVFrame);
|
||||
|
||||
@ -691,6 +696,7 @@ av_cold int vp56_free(AVCodecContext *avctx)
|
||||
{
|
||||
VP56Context *s = avctx->priv_data;
|
||||
|
||||
av_freep(&s->qscale_table);
|
||||
av_freep(&s->above_blocks);
|
||||
av_freep(&s->macroblocks);
|
||||
av_freep(&s->edge_emu_buffer_alloc);
|
||||
|
@ -110,6 +110,7 @@ struct vp56_context {
|
||||
int quantizer;
|
||||
uint16_t dequant_dc;
|
||||
uint16_t dequant_ac;
|
||||
int8_t *qscale_table;
|
||||
|
||||
/* DC predictors management */
|
||||
VP56RefDc *above_blocks;
|
||||
|
Loading…
Reference in New Issue
Block a user