ffmpeg: use a rational for -aspect option.
This commit is contained in:
		
							
								
								
									
										6
									
								
								ffmpeg.c
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								ffmpeg.c
									
									
									
									
									
								
							@@ -1071,7 +1071,7 @@ static int reap_filters(void)
 | 
				
			|||||||
            switch (ost->filter->filter->inputs[0]->type) {
 | 
					            switch (ost->filter->filter->inputs[0]->type) {
 | 
				
			||||||
            case AVMEDIA_TYPE_VIDEO:
 | 
					            case AVMEDIA_TYPE_VIDEO:
 | 
				
			||||||
                filtered_frame->pts = frame_pts;
 | 
					                filtered_frame->pts = frame_pts;
 | 
				
			||||||
                if (!ost->frame_aspect_ratio)
 | 
					                if (!ost->frame_aspect_ratio.num)
 | 
				
			||||||
                    ost->st->codec->sample_aspect_ratio = filtered_frame->sample_aspect_ratio;
 | 
					                    ost->st->codec->sample_aspect_ratio = filtered_frame->sample_aspect_ratio;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                do_video_out(of->ctx, ost, filtered_frame);
 | 
					                do_video_out(of->ctx, ost, filtered_frame);
 | 
				
			||||||
@@ -2300,8 +2300,8 @@ static int transcode_init(void)
 | 
				
			|||||||
                codec->width  = ost->filter->filter->inputs[0]->w;
 | 
					                codec->width  = ost->filter->filter->inputs[0]->w;
 | 
				
			||||||
                codec->height = ost->filter->filter->inputs[0]->h;
 | 
					                codec->height = ost->filter->filter->inputs[0]->h;
 | 
				
			||||||
                codec->sample_aspect_ratio = ost->st->sample_aspect_ratio =
 | 
					                codec->sample_aspect_ratio = ost->st->sample_aspect_ratio =
 | 
				
			||||||
                    ost->frame_aspect_ratio ? // overridden by the -aspect cli option
 | 
					                    ost->frame_aspect_ratio.num ? // overridden by the -aspect cli option
 | 
				
			||||||
                    av_d2q(ost->frame_aspect_ratio * codec->height/codec->width, 255) :
 | 
					                    av_mul_q(ost->frame_aspect_ratio, (AVRational){ codec->height, codec->width }) :
 | 
				
			||||||
                    ost->filter->filter->inputs[0]->sample_aspect_ratio;
 | 
					                    ost->filter->filter->inputs[0]->sample_aspect_ratio;
 | 
				
			||||||
                if (!strncmp(ost->enc->name, "libx264", 7) &&
 | 
					                if (!strncmp(ost->enc->name, "libx264", 7) &&
 | 
				
			||||||
                    codec->pix_fmt == AV_PIX_FMT_NONE &&
 | 
					                    codec->pix_fmt == AV_PIX_FMT_NONE &&
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								ffmpeg.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								ffmpeg.h
									
									
									
									
									
								
							@@ -331,7 +331,7 @@ typedef struct OutputStream {
 | 
				
			|||||||
    int force_fps;
 | 
					    int force_fps;
 | 
				
			||||||
    int top_field_first;
 | 
					    int top_field_first;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    float frame_aspect_ratio;
 | 
					    AVRational frame_aspect_ratio;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* forced key frames */
 | 
					    /* forced key frames */
 | 
				
			||||||
    int64_t *forced_kf_pts;
 | 
					    int64_t *forced_kf_pts;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1203,7 +1203,7 @@ static OutputStream *new_video_stream(OptionsContext *o, AVFormatContext *oc, in
 | 
				
			|||||||
                av_log(NULL, AV_LOG_FATAL, "Invalid aspect ratio: %s\n", frame_aspect_ratio);
 | 
					                av_log(NULL, AV_LOG_FATAL, "Invalid aspect ratio: %s\n", frame_aspect_ratio);
 | 
				
			||||||
                exit(1);
 | 
					                exit(1);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            ost->frame_aspect_ratio = av_q2d(q);
 | 
					            ost->frame_aspect_ratio = q;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        video_enc->bits_per_raw_sample = frame_bits_per_raw_sample;
 | 
					        video_enc->bits_per_raw_sample = frame_bits_per_raw_sample;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user