mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-28 20:53:54 +02:00
lavc/ffv1: always use the main context values of plane_count/transparency
They cannot change between slices.
This commit is contained in:
parent
492df65201
commit
39486a2b29
@ -56,8 +56,6 @@ av_cold int ff_ffv1_init_slice_state(const FFV1Context *f, FFV1Context *fs)
|
||||
{
|
||||
int j, i;
|
||||
|
||||
fs->plane_count = f->plane_count;
|
||||
fs->transparency = f->transparency;
|
||||
for (j = 0; j < f->plane_count; j++) {
|
||||
PlaneContext *const p = &fs->plane[j];
|
||||
|
||||
|
@ -270,7 +270,6 @@ static int decode_slice(AVCodecContext *c, void *arg)
|
||||
|
||||
if(f->fsrc && !(p->flags & AV_FRAME_FLAG_KEY)) {
|
||||
FFV1Context *fssrc = f->fsrc->slice_context[si];
|
||||
av_assert1(fs->plane_count == fssrc->plane_count);
|
||||
|
||||
if (!(p->flags & AV_FRAME_FLAG_KEY))
|
||||
fs->slice_damaged |= fssrc->slice_damaged;
|
||||
@ -330,7 +329,7 @@ static int decode_slice(AVCodecContext *c, void *arg)
|
||||
}
|
||||
|
||||
av_assert1(width && height);
|
||||
if (f->colorspace == 0 && (f->chroma_planes || !fs->transparency)) {
|
||||
if (f->colorspace == 0 && (f->chroma_planes || !f->transparency)) {
|
||||
const int chroma_width = AV_CEIL_RSHIFT(width, f->chroma_h_shift);
|
||||
const int chroma_height = AV_CEIL_RSHIFT(height, f->chroma_v_shift);
|
||||
const int cx = x >> f->chroma_h_shift;
|
||||
@ -341,7 +340,7 @@ static int decode_slice(AVCodecContext *c, void *arg)
|
||||
decode_plane(f, fs, sc, &gb, p->data[1] + ps*cx+cy*p->linesize[1], chroma_width, chroma_height, p->linesize[1], 1, 1);
|
||||
decode_plane(f, fs, sc, &gb, p->data[2] + ps*cx+cy*p->linesize[2], chroma_width, chroma_height, p->linesize[2], 1, 1);
|
||||
}
|
||||
if (fs->transparency)
|
||||
if (f->transparency)
|
||||
decode_plane(f, fs, sc, &gb, p->data[3] + ps*x + y*p->linesize[3], width, height, p->linesize[3], (f->version >= 4 && !f->chroma_planes) ? 1 : 2, 1);
|
||||
} else if (f->colorspace == 0) {
|
||||
decode_plane(f, fs, sc, &gb, p->data[0] + ps*x + y*p->linesize[0] , width, height, p->linesize[0], 0, 2);
|
||||
|
@ -141,7 +141,7 @@ static int RENAME(decode_rgb_frame)(FFV1Context *f,
|
||||
int lbd = s->avctx->bits_per_raw_sample <= 8;
|
||||
int bits = s->avctx->bits_per_raw_sample > 0 ? s->avctx->bits_per_raw_sample : 8;
|
||||
int offset = 1 << bits;
|
||||
int transparency = s->transparency;
|
||||
int transparency = f->transparency;
|
||||
|
||||
for (x = 0; x < 4; x++) {
|
||||
sample[x][0] = RENAME(sc->sample_buffer) + x * 2 * (w + 6) + 3;
|
||||
|
@ -1072,7 +1072,7 @@ retry:
|
||||
ret |= encode_plane(f, fs, sc, p->data[1] + ps*cx+cy*p->linesize[1], chroma_width, chroma_height, p->linesize[1], 1, 1);
|
||||
ret |= encode_plane(f, fs, sc, p->data[2] + ps*cx+cy*p->linesize[2], chroma_width, chroma_height, p->linesize[2], 1, 1);
|
||||
}
|
||||
if (fs->transparency)
|
||||
if (f->transparency)
|
||||
ret |= encode_plane(f, fs, sc, p->data[3] + ps*x + y*p->linesize[3], width, height, p->linesize[3], 2, 1);
|
||||
} else if (c->pix_fmt == AV_PIX_FMT_YA8) {
|
||||
ret = encode_plane(f, fs, sc, p->data[0] + ps*x + y*p->linesize[0], width, height, p->linesize[0], 0, 2);
|
||||
|
@ -138,7 +138,7 @@ static int RENAME(encode_rgb_frame)(FFV1Context *f,
|
||||
int packed = !src[1];
|
||||
int bits = s->bits_per_raw_sample > 0 ? s->bits_per_raw_sample : 8;
|
||||
int offset = 1 << bits;
|
||||
int transparency = s->transparency;
|
||||
int transparency = f->transparency;
|
||||
int packed_size = (3 + transparency)*2;
|
||||
|
||||
sc->run_index = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user