aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarton Balint <cus@passwd.hu>2012-04-28 23:39:43 +0200
committerMarton Balint <cus@passwd.hu>2012-05-15 00:31:56 +0200
commit825ec16da955fd9c726d8e6c846cf9257a781a87 (patch)
tree13b28d65a398a7cda29780bf6fa02f1b9ee26ebb
parent843509e2648cf117b4cded70ecc8bfd110a143c1 (diff)
downloadffmpeg-825ec16da955fd9c726d8e6c846cf9257a781a87.tar.gz
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>
-rw-r--r--ffplay.c21
1 files changed, 7 insertions, 14 deletions
diff --git a/ffplay.c b/ffplay.c
index 962c7b2cc2..04386e1f44 100644
--- a/ffplay.c
+++ b/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)
- aspect_ratio = 0;
- else
- aspect_ratio = av_q2d(vp->picref->video->sample_aspect_ratio);
-#else
-
- /* 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
+ if (vp->sample_aspect_ratio.num == 0)
aspect_ratio = 0;
-#endif
+ else
+ aspect_ratio = av_q2d(vp->sample_aspect_ratio);
+
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);