[FFmpeg-cvslog] h264: fully check cropping amount from sps

Vittorio Giovara git at videolan.org
Tue Aug 26 22:07:56 CEST 2014


ffmpeg | branch: master | Vittorio Giovara <vittorio.giovara at gmail.com> | Mon Aug 25 20:40:19 2014 -0400| [e87f5e4e5f2e2e36b0b7826d708cda7049877af0] | committer: Vittorio Giovara

h264: fully check cropping amount from sps

Even if sps.crop is true, the cropping amount may be zero.
Fixes a sample with a valid but broken container cropping.

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

 libavcodec/h264_slice.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
index 83d3426..69aed1d 100644
--- a/libavcodec/h264_slice.c
+++ b/libavcodec/h264_slice.c
@@ -1028,9 +1028,11 @@ static int init_dimensions(H264Context *h)
 {
     int width  = h->width  - (h->sps.crop_right + h->sps.crop_left);
     int height = h->height - (h->sps.crop_top   + h->sps.crop_bottom);
+    int crop_present = h->sps.crop_left  || h->sps.crop_top ||
+                       h->sps.crop_right || h->sps.crop_bottom;
 
     /* handle container cropping */
-    if (!h->sps.crop &&
+    if (!crop_present &&
         FFALIGN(h->avctx->width,  16) == h->width &&
         FFALIGN(h->avctx->height, 16) == h->height) {
         width  = h->avctx->width;



More information about the ffmpeg-cvslog mailing list