[FFmpeg-cvslog] h264: allow cropping to AVCodecContext.width/height

Mans Rullgard git at videolan.org
Tue Oct 16 17:58:42 CEST 2012


ffmpeg | branch: release/0.8 | Mans Rullgard <mans at mansr.com> | Wed May 30 04:04:54 2012 +0100| [b102d5d97daedb717c023ec7bfa43047d97de284] | committer: Reinhard Tartler

h264: allow cropping to AVCodecContext.width/height

Override the frame size from the SPS with AVCodecContext values
if the latter specify a size smaller by less than one macroblock.
This is required for correct cropping of MOV files from Canon cameras.

Signed-off-by: Mans Rullgard <mans at mansr.com>
(cherry picked from commit 30f515091c323da59c0f1b533703dedca2f4b95d)

Conflicts:

	libavcodec/h264.c
(cherry picked from commit e1608014c50eeb9f4744a53de0794eb6bb1269a2)

Signed-off-by: Reinhard Tartler <siretart at tauware.de>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b102d5d97daedb717c023ec7bfa43047d97de284
---

 libavcodec/h264.c |    6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index beb89a0..90293f1 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -2599,6 +2599,12 @@ static int decode_slice_header(H264Context *h, H264Context *h0){
     else
         s->height= 16*s->mb_height - (4>>CHROMA444)*FFMIN(h->sps.crop_bottom, (8<<CHROMA444)-1);
 
+    if (FFALIGN(s->avctx->width,  16) == s->width &&
+        FFALIGN(s->avctx->height, 16) == s->height) {
+        s->width  = s->avctx->width;
+        s->height = s->avctx->height;
+    }
+
     if (s->context_initialized
         && (   s->width != s->avctx->width || s->height != s->avctx->height
             || av_cmp_q(h->sps.sar, s->avctx->sample_aspect_ratio))) {



More information about the ffmpeg-cvslog mailing list