|
|
|
@@ -5133,6 +5133,7 @@ static int get_consumed_bytes(int pos, int buf_size) |
|
|
|
static int output_frame(H264Context *h, AVFrame *dst, Picture *srcp) |
|
|
|
{ |
|
|
|
AVFrame *src = &srcp->f; |
|
|
|
const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(src->format); |
|
|
|
int i; |
|
|
|
int ret = av_frame_ref(dst, src); |
|
|
|
if (ret < 0) |
|
|
|
@@ -5143,9 +5144,9 @@ static int output_frame(H264Context *h, AVFrame *dst, Picture *srcp) |
|
|
|
if (!srcp->crop) |
|
|
|
return 0; |
|
|
|
|
|
|
|
for (i = 0; i < 3; i++) { |
|
|
|
int hshift = (i > 0) ? h->chroma_x_shift : 0; |
|
|
|
int vshift = (i > 0) ? h->chroma_y_shift : 0; |
|
|
|
for (i = 0; i < desc->nb_components; i++) { |
|
|
|
int hshift = (i > 0) ? desc->log2_chroma_w : 0; |
|
|
|
int vshift = (i > 0) ? desc->log2_chroma_h : 0; |
|
|
|
int off = ((srcp->crop_left >> hshift) << h->pixel_shift) + |
|
|
|
(srcp->crop_top >> vshift) * dst->linesize[i]; |
|
|
|
dst->data[i] += off; |
|
|
|
|