#include "libavutil/libm.h"
#include "libavutil/opt.h"
#include "libavutil/color_utils.h"
+#include "libavutil/stereo3d.h"
#include <zlib.h>
static int encode_headers(AVCodecContext *avctx, const AVFrame *pict)
{
+ AVFrameSideData *side_data;
PNGEncContext *s = avctx->priv_data;
/* write png header */
}
png_write_chunk(&s->bytestream, MKTAG('p', 'H', 'Y', 's'), s->buf, 9);
+ /* write stereoscopic information */
+ side_data = av_frame_get_side_data(pict, AV_FRAME_DATA_STEREO3D);
+ if (side_data) {
+ AVStereo3D *stereo3d = (AVStereo3D *)side_data->data;
+ switch (stereo3d->type) {
+ case AV_STEREO3D_SIDEBYSIDE:
+ s->buf[0] = ((stereo3d->flags & AV_STEREO3D_FLAG_INVERT) == 0) ? 1 : 0;
+ png_write_chunk(&s->bytestream, MKTAG('s', 'T', 'E', 'R'), s->buf, 1);
+ break;
+ case AV_STEREO3D_2D:
+ break;
+ default:
+ av_log(avctx, AV_LOG_WARNING, "Only side-by-side stereo3d flag can be defined within sTER chunk\n");
+ break;
+ }
+ }
+
/* write colorspace information */
if (pict->color_primaries == AVCOL_PRI_BT709 &&
pict->color_trc == AVCOL_TRC_IEC61966_2_1) {