avcodec/mpegvideo_enc: fix b frame strategy 2
Fixes Ticket3757 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
3be90723e7
commit
8324bd5186
@ -1265,24 +1265,26 @@ static int estimate_best_b_count(MpegEncContext *s)
|
|||||||
for (i = 0; i < s->max_b_frames + 2; i++) {
|
for (i = 0; i < s->max_b_frames + 2; i++) {
|
||||||
Picture pre_input, *pre_input_ptr = i ? s->input_picture[i - 1] :
|
Picture pre_input, *pre_input_ptr = i ? s->input_picture[i - 1] :
|
||||||
s->next_picture_ptr;
|
s->next_picture_ptr;
|
||||||
|
uint8_t *data[4];
|
||||||
|
|
||||||
if (pre_input_ptr && (!i || s->input_picture[i - 1])) {
|
if (pre_input_ptr && (!i || s->input_picture[i - 1])) {
|
||||||
pre_input = *pre_input_ptr;
|
pre_input = *pre_input_ptr;
|
||||||
|
memcpy(data, pre_input_ptr->f->data, sizeof(data));
|
||||||
|
|
||||||
if (!pre_input.shared && i) {
|
if (!pre_input.shared && i) {
|
||||||
pre_input.f->data[0] += INPLACE_OFFSET;
|
data[0] += INPLACE_OFFSET;
|
||||||
pre_input.f->data[1] += INPLACE_OFFSET;
|
data[1] += INPLACE_OFFSET;
|
||||||
pre_input.f->data[2] += INPLACE_OFFSET;
|
data[2] += INPLACE_OFFSET;
|
||||||
}
|
}
|
||||||
|
|
||||||
s->dsp.shrink[scale](s->tmp_frames[i]->data[0], s->tmp_frames[i]->linesize[0],
|
s->dsp.shrink[scale](s->tmp_frames[i]->data[0], s->tmp_frames[i]->linesize[0],
|
||||||
pre_input.f->data[0], pre_input.f->linesize[0],
|
data[0], pre_input.f->linesize[0],
|
||||||
c->width, c->height);
|
c->width, c->height);
|
||||||
s->dsp.shrink[scale](s->tmp_frames[i]->data[1], s->tmp_frames[i]->linesize[1],
|
s->dsp.shrink[scale](s->tmp_frames[i]->data[1], s->tmp_frames[i]->linesize[1],
|
||||||
pre_input.f->data[1], pre_input.f->linesize[1],
|
data[1], pre_input.f->linesize[1],
|
||||||
c->width >> 1, c->height >> 1);
|
c->width >> 1, c->height >> 1);
|
||||||
s->dsp.shrink[scale](s->tmp_frames[i]->data[2], s->tmp_frames[i]->linesize[2],
|
s->dsp.shrink[scale](s->tmp_frames[i]->data[2], s->tmp_frames[i]->linesize[2],
|
||||||
pre_input.f->data[2], pre_input.f->linesize[2],
|
data[2], pre_input.f->linesize[2],
|
||||||
c->width >> 1, c->height >> 1);
|
c->width >> 1, c->height >> 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user