summaryrefslogtreecommitdiffstats
path: root/video
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-03-15 14:21:42 +0100
committerwm4 <wm4@nowhere>2013-03-15 14:21:42 +0100
commita9c9999973996bc990706a308d945bc1039a72a2 (patch)
treeb88f2010c5cae03c3c077b1534a690b822fbe12b /video
parente837d8ddaca6f72e29c69833bd46a0454d36221f (diff)
downloadmpv-a9c9999973996bc990706a308d945bc1039a72a2.tar.bz2
mpv-a9c9999973996bc990706a308d945bc1039a72a2.tar.xz
video: use new method to get QP table
This only matters for those who want to use vf_pp. The old API is marked as deprecated, and doesn't work on Libav. It was broken on FFmpeg, but has recently started working again - the fields in question were not un- deprecated though. Instead you're supposed to use a new API, which does exactly the same thing (what...?). Also don't pass the QP table with mp_image_copy_attributes() - it probably does more harm than it's useful. By the way, with -vf=dlopen=TOOLS/vf_dlopen/showqscale.so, it appears the table as output by recent FFmpeg is offset by 1 macroblock in X direction and 2 macroblocks in Y direction, which most likely will interfere with normal vf_pp operation. However, this is not my problem. The only real reason for this commit is that we can finally get rid of all libav* related deprecation warnings. (Though they are constantly deprecating APIs, so this will not last long.)
Diffstat (limited to 'video')
-rw-r--r--video/mp_image.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/video/mp_image.c b/video/mp_image.c
index 72da838822..54bf10c634 100644
--- a/video/mp_image.c
+++ b/video/mp_image.c
@@ -318,8 +318,6 @@ void mp_image_copy_attributes(struct mp_image *dst, struct mp_image *src)
dst->qscale_type = src->qscale_type;
dst->pts = src->pts;
if (dst->w == src->w && dst->h == src->h) {
- dst->qstride = src->qstride;
- dst->qscale = src->qscale;
dst->display_w = src->display_w;
dst->display_h = src->display_h;
}
@@ -447,10 +445,8 @@ void mp_image_copy_fields_from_av_frame(struct mp_image *dst,
dst->stride[i] = src->linesize[i];
}
- dst->qscale = src->qscale_table;
- dst->qstride = src->qstride;
dst->pict_type = src->pict_type;
- dst->qscale_type = src->qscale_type;
+
dst->fields = MP_IMGFIELD_ORDERED;
if (src->interlaced_frame)
dst->fields |= MP_IMGFIELD_INTERLACED;
@@ -458,6 +454,14 @@ void mp_image_copy_fields_from_av_frame(struct mp_image *dst,
dst->fields |= MP_IMGFIELD_TOP_FIRST;
if (src->repeat_pict == 1)
dst->fields |= MP_IMGFIELD_REPEAT_FIRST;
+
+#if HAVE_AVUTIL_QP_API
+ dst->qscale = av_frame_get_qp_table(src, &dst->qstride, &dst->qscale_type);
+#else
+ dst->qscale = src->qscale_table;
+ dst->qstride = src->qstride;
+ dst->qscale_type = src->qscale_type;
+#endif
}
#if HAVE_AVUTIL_REFCOUNTING