Merge remote-tracking branch 'qatar/master'
* qatar/master: mpegvideo_enc: fix indentation in load_input_picture() Conflicts: libavcodec/mpegvideo_enc.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
@@ -1047,87 +1047,89 @@ static int load_input_picture(MpegEncContext *s, const AVFrame *pic_arg)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pic_arg) {
|
if (pic_arg) {
|
||||||
if (encoding_delay && !(s->flags & CODEC_FLAG_INPUT_PRESERVED))
|
if (encoding_delay && !(s->flags & CODEC_FLAG_INPUT_PRESERVED))
|
||||||
direct = 0;
|
direct = 0;
|
||||||
if (pic_arg->linesize[0] != s->linesize)
|
if (pic_arg->linesize[0] != s->linesize)
|
||||||
direct = 0;
|
direct = 0;
|
||||||
if (pic_arg->linesize[1] != s->uvlinesize)
|
if (pic_arg->linesize[1] != s->uvlinesize)
|
||||||
direct = 0;
|
direct = 0;
|
||||||
if (pic_arg->linesize[2] != s->uvlinesize)
|
if (pic_arg->linesize[2] != s->uvlinesize)
|
||||||
direct = 0;
|
direct = 0;
|
||||||
|
|
||||||
av_dlog(s->avctx, "%d %d %d %d\n", pic_arg->linesize[0],
|
av_dlog(s->avctx, "%d %d %d %d\n", pic_arg->linesize[0],
|
||||||
pic_arg->linesize[1], s->linesize, s->uvlinesize);
|
pic_arg->linesize[1], s->linesize, s->uvlinesize);
|
||||||
|
|
||||||
if (direct) {
|
if (direct) {
|
||||||
i = ff_find_unused_picture(s, 1);
|
i = ff_find_unused_picture(s, 1);
|
||||||
if (i < 0)
|
if (i < 0)
|
||||||
return i;
|
return i;
|
||||||
|
|
||||||
pic = &s->picture[i].f;
|
pic = &s->picture[i].f;
|
||||||
pic->reference = 3;
|
pic->reference = 3;
|
||||||
|
|
||||||
for (i = 0; i < 4; i++) {
|
for (i = 0; i < 4; i++) {
|
||||||
pic->data[i] = pic_arg->data[i];
|
pic->data[i] = pic_arg->data[i];
|
||||||
pic->linesize[i] = pic_arg->linesize[i];
|
pic->linesize[i] = pic_arg->linesize[i];
|
||||||
}
|
}
|
||||||
if (ff_alloc_picture(s, (Picture *) pic, 1) < 0) {
|
if (ff_alloc_picture(s, (Picture *) pic, 1) < 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
i = ff_find_unused_picture(s, 0);
|
|
||||||
if (i < 0)
|
|
||||||
return i;
|
|
||||||
|
|
||||||
pic = &s->picture[i].f;
|
|
||||||
pic->reference = 3;
|
|
||||||
|
|
||||||
if (ff_alloc_picture(s, (Picture *) pic, 0) < 0) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pic->data[0] + INPLACE_OFFSET == pic_arg->data[0] &&
|
|
||||||
pic->data[1] + INPLACE_OFFSET == pic_arg->data[1] &&
|
|
||||||
pic->data[2] + INPLACE_OFFSET == pic_arg->data[2]) {
|
|
||||||
// empty
|
|
||||||
} else {
|
} else {
|
||||||
int h_chroma_shift, v_chroma_shift;
|
i = ff_find_unused_picture(s, 0);
|
||||||
avcodec_get_chroma_sub_sample(s->avctx->pix_fmt, &h_chroma_shift, &v_chroma_shift);
|
if (i < 0)
|
||||||
|
return i;
|
||||||
|
|
||||||
for (i = 0; i < 3; i++) {
|
pic = &s->picture[i].f;
|
||||||
int src_stride = pic_arg->linesize[i];
|
pic->reference = 3;
|
||||||
int dst_stride = i ? s->uvlinesize : s->linesize;
|
|
||||||
int h_shift = i ? h_chroma_shift : 0;
|
|
||||||
int v_shift = i ? v_chroma_shift : 0;
|
|
||||||
int w = s->width >> h_shift;
|
|
||||||
int h = s->height >> v_shift;
|
|
||||||
uint8_t *src = pic_arg->data[i];
|
|
||||||
uint8_t *dst = pic->data[i];
|
|
||||||
|
|
||||||
if(s->codec_id == AV_CODEC_ID_AMV && !(s->avctx->flags & CODEC_FLAG_EMU_EDGE)){
|
if (ff_alloc_picture(s, (Picture *) pic, 0) < 0) {
|
||||||
h= ((s->height+15)/16*16)>>v_shift;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!s->avctx->rc_buffer_size)
|
if (pic->data[0] + INPLACE_OFFSET == pic_arg->data[0] &&
|
||||||
dst += INPLACE_OFFSET;
|
pic->data[1] + INPLACE_OFFSET == pic_arg->data[1] &&
|
||||||
|
pic->data[2] + INPLACE_OFFSET == pic_arg->data[2]) {
|
||||||
|
// empty
|
||||||
|
} else {
|
||||||
|
int h_chroma_shift, v_chroma_shift;
|
||||||
|
av_pix_fmt_get_chroma_sub_sample(s->avctx->pix_fmt,
|
||||||
|
&h_chroma_shift,
|
||||||
|
&v_chroma_shift);
|
||||||
|
|
||||||
if (src_stride == dst_stride)
|
for (i = 0; i < 3; i++) {
|
||||||
memcpy(dst, src, src_stride * h);
|
int src_stride = pic_arg->linesize[i];
|
||||||
else {
|
int dst_stride = i ? s->uvlinesize : s->linesize;
|
||||||
while (h--) {
|
int h_shift = i ? h_chroma_shift : 0;
|
||||||
memcpy(dst, src, w);
|
int v_shift = i ? v_chroma_shift : 0;
|
||||||
dst += dst_stride;
|
int w = s->width >> h_shift;
|
||||||
src += src_stride;
|
int h = s->height >> v_shift;
|
||||||
|
uint8_t *src = pic_arg->data[i];
|
||||||
|
uint8_t *dst = pic->data[i];
|
||||||
|
|
||||||
|
if (s->codec_id == AV_CODEC_ID_AMV && !(s->avctx->flags & CODEC_FLAG_EMU_EDGE)) {
|
||||||
|
h = ((s->height + 15)/16*16) >> v_shift;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!s->avctx->rc_buffer_size)
|
||||||
|
dst += INPLACE_OFFSET;
|
||||||
|
|
||||||
|
if (src_stride == dst_stride)
|
||||||
|
memcpy(dst, src, src_stride * h);
|
||||||
|
else {
|
||||||
|
while (h--) {
|
||||||
|
memcpy(dst, src, w);
|
||||||
|
dst += dst_stride;
|
||||||
|
src += src_stride;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
copy_picture_attributes(s, pic, pic_arg);
|
||||||
|
pic->display_picture_number = display_picture_number;
|
||||||
|
pic->pts = pts; // we set this here to avoid modifiying pic_arg
|
||||||
}
|
}
|
||||||
copy_picture_attributes(s, pic, pic_arg);
|
|
||||||
pic->display_picture_number = display_picture_number;
|
|
||||||
pic->pts = pts; // we set this here to avoid modifiying pic_arg
|
|
||||||
}
|
|
||||||
|
|
||||||
/* shift buffer entries */
|
/* shift buffer entries */
|
||||||
for (i = 1; i < MAX_PICTURE_COUNT /*s->encoding_delay + 1*/; i++)
|
for (i = 1; i < MAX_PICTURE_COUNT /*s->encoding_delay + 1*/; i++)
|
||||||
|
Reference in New Issue
Block a user