summaryrefslogtreecommitdiff
path: root/libavcodec/pngdec.c
diff options
context:
space:
mode:
authorHendrik Leppkes <h.leppkes@gmail.com>2015-11-02 11:50:35 +0100
committerHendrik Leppkes <h.leppkes@gmail.com>2015-11-02 11:50:35 +0100
commit1fc13a6269516541917b646231b5bc19a42c1384 (patch)
tree3fc0bac8a6c5f79b85db610f5dc97cf996b04e10 /libavcodec/pngdec.c
parent6b5d6c93dda9be232507a188f83e1f639238e958 (diff)
parent1720791e36f9cc24c05efea5bb275ab52156ce50 (diff)
Merge commit '1720791e36f9cc24c05efea5bb275ab52156ce50'
* commit '1720791e36f9cc24c05efea5bb275ab52156ce50': png: read and write stereo3d frame side data information Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
Diffstat (limited to 'libavcodec/pngdec.c')
-rw-r--r--libavcodec/pngdec.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/libavcodec/pngdec.c b/libavcodec/pngdec.c
index 0bdd04e6d7..689aa2b562 100644
--- a/libavcodec/pngdec.c
+++ b/libavcodec/pngdec.c
@@ -25,6 +25,7 @@
#include "libavutil/bprint.h"
#include "libavutil/imgutils.h"
#include "libavutil/stereo3d.h"
+
#include "avcodec.h"
#include "bytestream.h"
#include "internal.h"
@@ -1187,18 +1188,19 @@ static int decode_frame_common(AVCodecContext *avctx, PNGDecContext *s,
bytestream2_skip(&s->gb, length + 4);
break;
case MKTAG('s', 'T', 'E', 'R'): {
+ int mode = bytestream2_get_byte(&s->gb);
AVStereo3D *stereo3d = av_stereo3d_create_side_data(p);
- if (!stereo3d) {
+ if (!stereo3d)
goto fail;
- } else if (*s->gb.buffer == 0) {
- stereo3d->type = AV_STEREO3D_SIDEBYSIDE;
- stereo3d->flags = AV_STEREO3D_FLAG_INVERT;
- } else if (*s->gb.buffer == 1) {
+
+ if (mode == 0 || mode == 1) {
stereo3d->type = AV_STEREO3D_SIDEBYSIDE;
+ stereo3d->flags = mode ? 0 : AV_STEREO3D_FLAG_INVERT;
} else {
- av_log(avctx, AV_LOG_WARNING, "Broken sTER chunk - unknown value\n");
+ av_log(avctx, AV_LOG_WARNING,
+ "Unknown value in sTER chunk (%d)\n", mode);
}
- bytestream2_skip(&s->gb, length + 4);
+ bytestream2_skip(&s->gb, 4); /* crc */
break;
}
case MKTAG('I', 'E', 'N', 'D'):