h264: Allow discarding the cropping information from SPS
Some 3D systems overload the meaning of the field for other purposes. Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
This commit is contained in:
		
							parent
							
								
									33552a5f7b
								
							
						
					
					
						commit
						a84fb6e06f
					
				| @ -657,6 +657,8 @@ typedef struct RcOverride{ | ||||
| #define CODEC_FLAG2_FAST          0x00000001 ///< Allow non spec compliant speedup tricks.
 | ||||
| #define CODEC_FLAG2_NO_OUTPUT     0x00000004 ///< Skip bitstream encoding.
 | ||||
| #define CODEC_FLAG2_LOCAL_HEADER  0x00000008 ///< Place global headers at every keyframe instead of in extradata.
 | ||||
| #define CODEC_FLAG2_IGNORE_CROP   0x00010000 ///< Discard cropping information from SPS.
 | ||||
| 
 | ||||
| #if FF_API_MPV_GLOBAL_OPTS | ||||
| #define CODEC_FLAG_CBP_RD         0x04000000 ///< Use rate distortion optimization for cbp.
 | ||||
| #define CODEC_FLAG_QP_RD          0x08000000 ///< Use rate distortion optimization for qp selectioon.
 | ||||
|  | ||||
| @ -425,6 +425,20 @@ int ff_h264_decode_seq_parameter_set(H264Context *h){ | ||||
|         sps->crop_right = get_ue_golomb(&s->gb); | ||||
|         sps->crop_top   = get_ue_golomb(&s->gb); | ||||
|         sps->crop_bottom= get_ue_golomb(&s->gb); | ||||
|         if (h->s.avctx->flags2 & CODEC_FLAG2_IGNORE_CROP) { | ||||
|             av_log(h->s.avctx, AV_LOG_DEBUG, | ||||
|                    "discarding sps cropping, " | ||||
|                    "original values are l:%u r:%u t:%u b:%u\n", | ||||
|                    sps->crop_left, | ||||
|                    sps->crop_right, | ||||
|                    sps->crop_top, | ||||
|                    sps->crop_bottom); | ||||
| 
 | ||||
|             sps->crop_left   = | ||||
|             sps->crop_right  = | ||||
|             sps->crop_top    = | ||||
|             sps->crop_bottom = 0; | ||||
|         } | ||||
|         if(sps->crop_left || sps->crop_top){ | ||||
|             av_log(h->s.avctx, AV_LOG_ERROR, "insane cropping not completely supported, this could look slightly wrong ...\n"); | ||||
|         } | ||||
|  | ||||
| @ -76,6 +76,7 @@ static const AVOption options[]={ | ||||
| {"sgop", "Deprecated, use mpegvideo private options instead", 0, AV_OPT_TYPE_CONST, {.i64 = CODEC_FLAG2_STRICT_GOP }, INT_MIN, INT_MAX, V|E, "flags2"}, | ||||
| #endif | ||||
| {"noout", "skip bitstream encoding", 0, AV_OPT_TYPE_CONST, {.i64 = CODEC_FLAG2_NO_OUTPUT }, INT_MIN, INT_MAX, V|E, "flags2"}, | ||||
| {"ignorecrop", "ignore cropping information from sps", 1, AV_OPT_TYPE_CONST, {.i64 = CODEC_FLAG2_IGNORE_CROP }, INT_MIN, INT_MAX, V|D, "flags2"}, | ||||
| {"local_header", "place global headers at every keyframe instead of in extradata", 0, AV_OPT_TYPE_CONST, {.i64 = CODEC_FLAG2_LOCAL_HEADER }, INT_MIN, INT_MAX, V|E, "flags2"}, | ||||
| #if FF_API_SUB_ID | ||||
| {"sub_id", NULL, OFFSET(sub_id), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX}, | ||||
|  | ||||
| @ -27,7 +27,7 @@ | ||||
|  */ | ||||
| 
 | ||||
| #define LIBAVCODEC_VERSION_MAJOR 54 | ||||
| #define LIBAVCODEC_VERSION_MINOR 40 | ||||
| #define LIBAVCODEC_VERSION_MINOR 41 | ||||
| #define LIBAVCODEC_VERSION_MICRO  0 | ||||
| 
 | ||||
| #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user