On Thu, 28 Nov 2013 15:03:02 +0100, Vittorio Giovara <[email protected]> wrote: > --- > libavcodec/mpeg12enc.c | 41 +++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 41 insertions(+) > > diff --git a/libavcodec/mpeg12enc.c b/libavcodec/mpeg12enc.c > index 2e03ce3..6c4ef6d 100644 > --- a/libavcodec/mpeg12enc.c > +++ b/libavcodec/mpeg12enc.c > @@ -30,6 +30,8 @@ > #include "libavutil/attributes.h" > #include "libavutil/log.h" > #include "libavutil/opt.h" > +#include "libavutil/stereo3d.h" > + > #include "avcodec.h" > #include "bytestream.h" > #include "mathops.h" > @@ -350,6 +352,7 @@ void ff_mpeg1_encode_slice_header(MpegEncContext *s) > > void ff_mpeg1_encode_picture_header(MpegEncContext *s, int picture_number) > { > + AVFrameSideData *side_data; > mpeg1_encode_sequence_header(s); > > /* mpeg1 picture header */ > @@ -433,6 +436,44 @@ void ff_mpeg1_encode_picture_header(MpegEncContext *s, > int picture_number) > for (i = 0; i < sizeof(svcd_scan_offset_placeholder); i++) > put_bits(&s->pb, 8, svcd_scan_offset_placeholder[i]); > } > + side_data = av_frame_get_side_data(&s->current_picture_ptr->f, > + AV_FRAME_DATA_STEREO3D); > + if (side_data) { > + AVStereo3D *stereo = (AVStereo3D *)side_data->data; > + uint8_t fpa_type; > + > + switch (stereo->type) { > + case AV_STEREO3D_SIDEBYSIDE: > + fpa_type = 0x03; > + break; > + case AV_STEREO3D_TOPBOTTOM: > + fpa_type = 0x04; > + break; > + case AV_STEREO3D_2D: > + fpa_type = 0x08; > + break; > + case AV_STEREO3D_SIDEBYSIDE_QUINCUNX: > + fpa_type = 0x23; > + break; > + default: > + fpa_type = 0; > + break; > + } > + > + if (fpa_type != 0) { > + put_header(s, USER_START_CODE); > + put_bits(&s->pb, 8, 'J'); // > S3D_video_format_signaling_identifier > + put_bits(&s->pb, 8, 'P'); > + put_bits(&s->pb, 8, '3'); > + put_bits(&s->pb, 8, 'D'); > + put_bits(&s->pb, 8, 0x03); // S3D_video_format_length > + > + put_bits(&s->pb, 1, 1); // reserved_bit > + put_bits(&s->pb, 7, fpa_type); // S3D_video_format_type > + put_bits(&s->pb, 8, 0x04); // reserved_data[0] > + put_bits(&s->pb, 8, 0xFF); // reserved_data[1] > + } > + } > > s->mb_y = 0; > ff_mpeg1_encode_slice_header(s); > -- > 1.7.9.5 >
Fine with me. Would be nice to have a test. -- Anton Khirnov _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
