summaryrefslogtreecommitdiff
path: root/libavcodec/utils.c
diff options
context:
space:
mode:
authorVittorio Giovara <vittorio.giovara@gmail.com>2014-05-15 22:06:49 -0400
committerAnton Khirnov <anton@khirnov.net>2014-05-19 13:13:10 +0200
commitbddd8cbf68551f6405b2bf77cc3e212af9fbe834 (patch)
treee4055879d665ee6dfd982d6ca2a3b203d92a5c9c /libavcodec/utils.c
parent9929b3564c0dca42ed7baa6798ef15b6f0013c83 (diff)
Add transformation matrix API.
Add AV_PKT_DATA_DISPLAYMATRIX and AV_FRAME_DATA_DISPLAYMATRIX as stream and frame side data (respectively) to describe a display transformation matrix for linear transformation operations on the decoded video. Add functions to easily extract a rotation angle from a matrix and conversely to setup a matrix for a given rotation angle. Signed-off-by: Anton Khirnov <anton@khirnov.net>
Diffstat (limited to 'libavcodec/utils.c')
-rw-r--r--libavcodec/utils.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index 71cbc57b44..cb456d5ae0 100644
--- a/libavcodec/utils.c
+++ b/libavcodec/utils.c
@@ -598,6 +598,15 @@ int ff_decode_frame_props(AVCodecContext *avctx, AVFrame *frame)
memcpy(frame_sd->data, packet_sd, size);
}
+ /* copy the displaymatrix to the output frame */
+ packet_sd = av_packet_get_side_data(pkt, AV_PKT_DATA_DISPLAYMATRIX, &size);
+ if (packet_sd) {
+ frame_sd = av_frame_new_side_data(frame, AV_FRAME_DATA_DISPLAYMATRIX, size);
+ if (!frame_sd)
+ return AVERROR(ENOMEM);
+
+ memcpy(frame_sd->data, packet_sd, size);
+ }
return 0;
}