summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2016-03-19 21:45:24 +0100
committerAnton Khirnov <anton@khirnov.net>2016-06-21 19:54:42 +0200
commit32c8359093d1ff4f45ed19518b449b3ac3769d27 (patch)
tree59886a4e26a0931902e6f6bb14a0319d111a7383
parentac7bfd69678f3966e38debdb27f4bde94dc0345c (diff)
lavc: export the timestamps when decoding in AVFrame.pts
Currently it's exported as AVFrame.pkt_pts, which is also the only use for that field. The reason it is done like this is that lavc used to export various codec-specific "timing" information in AVFrame.pts, which is not done anymore. Since it is confusing to the callers to have a separate field which is used only for decoder timestamps and nothing else, deprecate pkt_pts and use just AVFrame.pts everywhere.
-rw-r--r--doc/APIchanges4
-rw-r--r--libavcodec/libschroedingerdec.c7
-rw-r--r--libavcodec/mmaldec.c7
-rw-r--r--libavcodec/qsvdec.c7
-rw-r--r--libavcodec/utils.c10
-rw-r--r--libavcodec/version.h2
-rw-r--r--libavutil/frame.c4
-rw-r--r--libavutil/frame.h4
-rw-r--r--libavutil/version.h3
9 files changed, 44 insertions, 4 deletions
diff --git a/doc/APIchanges b/doc/APIchanges
index 74316ed7c1..1caa1b7575 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -13,6 +13,10 @@ libavutil: 2015-08-28
API changes, most recent first:
+2016-xx-xx - xxxxxxx - lavc 57.24.0 - avcodec.h
+ Decoders now export the frame timestamp as AVFrame.pts. It was
+ previously exported as AVFrame.pkt_pts, which is now deprecated.
+
2016-xx-xx - xxxxxxx - lavu 55.16.0 - hwcontext.h hwcontext_qsv.h
Add AV_HWDEVICE_TYPE_QSV and a new installed header with QSV-specific
hwcontext definitions.
diff --git a/libavcodec/libschroedingerdec.c b/libavcodec/libschroedingerdec.c
index fb0781ed5c..f173f92f04 100644
--- a/libavcodec/libschroedingerdec.c
+++ b/libavcodec/libschroedingerdec.c
@@ -326,7 +326,12 @@ static int libschroedinger_decode_frame(AVCodecContext *avctx,
framewithpts->frame->components[2].length);
/* Fill frame with current buffer data from Schroedinger. */
- avframe->pkt_pts = framewithpts->pts;
+ avframe->pts = framewithpts->pts;
+#if FF_API_PKT_PTS
+FF_DISABLE_DEPRECATION_WARNINGS
+ avframe->pkt_pts = avframe->pts;
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif
avframe->linesize[0] = framewithpts->frame->components[0].stride;
avframe->linesize[1] = framewithpts->frame->components[1].stride;
avframe->linesize[2] = framewithpts->frame->components[2].stride;
diff --git a/libavcodec/mmaldec.c b/libavcodec/mmaldec.c
index 193df7e07d..69258a2eb6 100644
--- a/libavcodec/mmaldec.c
+++ b/libavcodec/mmaldec.c
@@ -631,7 +631,12 @@ static int ffmal_copy_frame(AVCodecContext *avctx, AVFrame *frame,
avctx->pix_fmt, avctx->width, avctx->height);
}
- frame->pkt_pts = buffer->pts == MMAL_TIME_UNKNOWN ? AV_NOPTS_VALUE : buffer->pts;
+ frame->pts = buffer->pts == MMAL_TIME_UNKNOWN ? AV_NOPTS_VALUE : buffer->pts;
+#if FF_API_PKT_PTS
+FF_DISABLE_DEPRECATION_WARNINGS
+ frame->pkt_pts = frame->pts;
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif
frame->pkt_dts = AV_NOPTS_VALUE;
done:
diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c
index ac7a1e60b9..0215761335 100644
--- a/libavcodec/qsvdec.c
+++ b/libavcodec/qsvdec.c
@@ -352,7 +352,12 @@ static int qsv_decode(AVCodecContext *avctx, QSVContext *q,
outsurf = out_frame->surface;
- frame->pkt_pts = frame->pts = outsurf->Data.TimeStamp;
+#if FF_API_PKT_PTS
+FF_DISABLE_DEPRECATION_WARNINGS
+ frame->pkt_pts = outsurf->Data.TimeStamp;
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif
+ frame->pts = outsurf->Data.TimeStamp;
frame->repeat_pict =
outsurf->Info.PicStruct & MFX_PICSTRUCT_FRAME_TRIPLING ? 4 :
diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index 8f8efecbea..bc1beee462 100644
--- a/libavcodec/utils.c
+++ b/libavcodec/utils.c
@@ -551,11 +551,21 @@ int ff_decode_frame_props(AVCodecContext *avctx, AVFrame *frame)
frame->reordered_opaque = avctx->reordered_opaque;
if (!pkt) {
+#if FF_API_PKT_PTS
+FF_DISABLE_DEPRECATION_WARNINGS
frame->pkt_pts = AV_NOPTS_VALUE;
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif
+ frame->pts = AV_NOPTS_VALUE;
return 0;
}
+#if FF_API_PKT_PTS
+FF_DISABLE_DEPRECATION_WARNINGS
frame->pkt_pts = pkt->pts;
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif
+ frame->pts = pkt->pts;
for (i = 0; i < FF_ARRAY_ELEMS(sd); i++) {
int size;
diff --git a/libavcodec/version.h b/libavcodec/version.h
index 9b495e9a44..3b154f84e3 100644
--- a/libavcodec/version.h
+++ b/libavcodec/version.h
@@ -28,7 +28,7 @@
#include "libavutil/version.h"
#define LIBAVCODEC_VERSION_MAJOR 57
-#define LIBAVCODEC_VERSION_MINOR 23
+#define LIBAVCODEC_VERSION_MINOR 24
#define LIBAVCODEC_VERSION_MICRO 0
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
diff --git a/libavutil/frame.c b/libavutil/frame.c
index ae80cee062..1c14f5f03f 100644
--- a/libavutil/frame.c
+++ b/libavutil/frame.c
@@ -397,7 +397,11 @@ int av_frame_copy_props(AVFrame *dst, const AVFrame *src)
dst->palette_has_changed = src->palette_has_changed;
dst->sample_rate = src->sample_rate;
dst->opaque = src->opaque;
+#if FF_API_PKT_PTS
+FF_DISABLE_DEPRECATION_WARNINGS
dst->pkt_pts = src->pkt_pts;
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif
dst->pkt_dts = src->pkt_dts;
dst->reordered_opaque = src->reordered_opaque;
dst->quality = src->quality;
diff --git a/libavutil/frame.h b/libavutil/frame.h
index 7c55225a45..12624d797f 100644
--- a/libavutil/frame.h
+++ b/libavutil/frame.h
@@ -210,10 +210,14 @@ typedef struct AVFrame {
*/
int64_t pts;
+#if FF_API_PKT_PTS
/**
* PTS copied from the AVPacket that was decoded to produce this frame.
+ * @deprecated use the pts field instead
*/
+ attribute_deprecated
int64_t pkt_pts;
+#endif
/**
* DTS copied from the AVPacket that triggered returning this frame.
diff --git a/libavutil/version.h b/libavutil/version.h
index d13794cc50..40745da216 100644
--- a/libavutil/version.h
+++ b/libavutil/version.h
@@ -102,6 +102,9 @@
#ifndef FF_API_VAAPI
#define FF_API_VAAPI (LIBAVUTIL_VERSION_MAJOR < 56)
#endif
+#ifndef FF_API_PKT_PTS
+#define FF_API_PKT_PTS (LIBAVUTIL_VERSION_MAJOR < 56)
+#endif
/**