diff options
author | Hendrik Leppkes <h.leppkes@gmail.com> | 2015-11-02 11:50:35 +0100 |
---|---|---|
committer | Hendrik Leppkes <h.leppkes@gmail.com> | 2015-11-02 11:50:35 +0100 |
commit | 1fc13a6269516541917b646231b5bc19a42c1384 (patch) | |
tree | 3fc0bac8a6c5f79b85db610f5dc97cf996b04e10 /libavcodec/pngdec.c | |
parent | 6b5d6c93dda9be232507a188f83e1f639238e958 (diff) | |
parent | 1720791e36f9cc24c05efea5bb275ab52156ce50 (diff) | |
download | ffmpeg-1fc13a6269516541917b646231b5bc19a42c1384.tar.gz |
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.c | 16 |
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'): |