mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-25 00:32:31 +00:00
ffplay: put aspect ratio info to the VideoPicture struct
Also use av_guess_sample_aspect_ratio for determining aspect ratio of the video frame if not using avfilter. Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
parent
843509e264
commit
825ec16da9
17
ffplay.c
17
ffplay.c
@ -104,6 +104,7 @@ typedef struct VideoPicture {
|
||||
int skip;
|
||||
SDL_Overlay *bmp;
|
||||
int width, height; /* source height & width */
|
||||
AVRational sample_aspect_ratio;
|
||||
int allocated;
|
||||
int reallocate;
|
||||
enum PixelFormat pix_fmt;
|
||||
@ -671,21 +672,11 @@ static void video_image_display(VideoState *is)
|
||||
|
||||
vp = &is->pictq[is->pictq_rindex];
|
||||
if (vp->bmp) {
|
||||
#if CONFIG_AVFILTER
|
||||
if (vp->picref->video->sample_aspect_ratio.num == 0)
|
||||
if (vp->sample_aspect_ratio.num == 0)
|
||||
aspect_ratio = 0;
|
||||
else
|
||||
aspect_ratio = av_q2d(vp->picref->video->sample_aspect_ratio);
|
||||
#else
|
||||
aspect_ratio = av_q2d(vp->sample_aspect_ratio);
|
||||
|
||||
/* XXX: use variable in the frame */
|
||||
if (is->video_st->sample_aspect_ratio.num)
|
||||
aspect_ratio = av_q2d(is->video_st->sample_aspect_ratio);
|
||||
else if (is->video_st->codec->sample_aspect_ratio.num)
|
||||
aspect_ratio = av_q2d(is->video_st->codec->sample_aspect_ratio);
|
||||
else
|
||||
aspect_ratio = 0;
|
||||
#endif
|
||||
if (aspect_ratio <= 0.0)
|
||||
aspect_ratio = 1.0;
|
||||
aspect_ratio *= (float)vp->width / (float)vp->height;
|
||||
@ -1436,6 +1427,7 @@ static int queue_picture(VideoState *is, AVFrame *src_frame, double pts1, int64_
|
||||
// FIXME use direct rendering
|
||||
av_picture_copy(&pict, (AVPicture *)src_frame,
|
||||
vp->pix_fmt, vp->width, vp->height);
|
||||
vp->sample_aspect_ratio = vp->picref->video->sample_aspect_ratio;
|
||||
#else
|
||||
sws_flags = av_get_int(sws_opts, "sws_flags", NULL);
|
||||
is->img_convert_ctx = sws_getCachedContext(is->img_convert_ctx,
|
||||
@ -1447,6 +1439,7 @@ static int queue_picture(VideoState *is, AVFrame *src_frame, double pts1, int64_
|
||||
}
|
||||
sws_scale(is->img_convert_ctx, src_frame->data, src_frame->linesize,
|
||||
0, vp->height, pict.data, pict.linesize);
|
||||
vp->sample_aspect_ratio = av_guess_sample_aspect_ratio(is->ic, is->video_st, src_frame);
|
||||
#endif
|
||||
/* update the bitmap content */
|
||||
SDL_UnlockYUVOverlay(vp->bmp);
|
||||
|
Loading…
Reference in New Issue
Block a user