On Sat, Apr 2, 2016 at 10:36 PM, Luca Barbato <[email protected]> wrote:
> And bump the document version to 4.
> ---
> libavformat/matroskaenc.c | 45
> +++++++++++++++++++++++++++++++++++++++++++--
> 1 file changed, 43 insertions(+), 2 deletions(-)
>
> diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
> index c2b1de0..667646d 100644
> --- a/libavformat/matroskaenc.c
> +++ b/libavformat/matroskaenc.c
> @@ -632,6 +632,45 @@ static int mkv_write_codecprivate(AVFormatContext *s,
> AVIOContext *pb,
> return ret;
> }
>
> +static void mkv_write_field_order(AVIOContext *pb,
> + enum AVFieldOrder field_order)
> +{
> + switch (field_order) {
> + case AV_FIELD_UNKNOWN:
> + put_ebml_uint(pb, MATROSKA_ID_VIDEOFLAGINTERLACED,
> + MATROSKA_VIDEO_INTERLACE_FLAG_UNDETERMINED);
> + break;
> + case AV_FIELD_PROGRESSIVE:
> + put_ebml_uint(pb, MATROSKA_ID_VIDEOFLAGINTERLACED,
> + MATROSKA_VIDEO_INTERLACE_FLAG_PROGRESSIVE);
> + break;
> + case AV_FIELD_TT:
> + case AV_FIELD_BB:
> + case AV_FIELD_TB:
> + case AV_FIELD_BT:
> + put_ebml_uint(pb, MATROSKA_ID_VIDEOFLAGINTERLACED,
> + MATROSKA_VIDEO_INTERLACE_FLAG_INTERLACED);
> + switch (field_order) {
> + case AV_FIELD_TT:
> + put_ebml_uint(pb, MATROSKA_ID_VIDEOFIELDORDER,
> + MATROSKA_VIDEO_FIELDORDER_TT);
> + break;
> + case AV_FIELD_BB:
> + put_ebml_uint(pb, MATROSKA_ID_VIDEOFIELDORDER,
> + MATROSKA_VIDEO_FIELDORDER_BB);
> + break;
> + case AV_FIELD_TB:
> + put_ebml_uint(pb, MATROSKA_ID_VIDEOFIELDORDER,
> + MATROSKA_VIDEO_FIELDORDER_TB);
> + break;
> + case AV_FIELD_BT:
> + put_ebml_uint(pb, MATROSKA_ID_VIDEOFIELDORDER,
> + MATROSKA_VIDEO_FIELDORDER_BT);
> + break;
> + }
> + }
> +}
> +
> static int mkv_write_stereo_mode(AVFormatContext *s, AVIOContext *pb,
> AVStream *st, int mode)
> {
> @@ -831,10 +870,12 @@ static int mkv_write_track(AVFormatContext *s,
> MatroskaMuxContext *mkv,
> }
>
> subinfo = start_ebml_master(pb, MATROSKA_ID_TRACKVIDEO, 0);
> - // XXX: interlace flag?
> +
> put_ebml_uint (pb, MATROSKA_ID_VIDEOPIXELWIDTH , par->width);
> put_ebml_uint (pb, MATROSKA_ID_VIDEOPIXELHEIGHT, par->height);
>
> + mkv_write_field_order(pb, par->field_order);
> +
> // check both side data and metadata for stereo information,
> // write the result to the bitstream if any is found
> ret = mkv_write_stereo_mode(s, pb, st, mkv->mode);
> @@ -1151,7 +1192,7 @@ static int mkv_write_header(AVFormatContext *s)
> put_ebml_uint (pb, EBML_ID_EBMLMAXIDLENGTH , 4);
> put_ebml_uint (pb, EBML_ID_EBMLMAXSIZELENGTH , 8);
> put_ebml_string (pb, EBML_ID_DOCTYPE , s->oformat->name);
> - put_ebml_uint (pb, EBML_ID_DOCTYPEVERSION , 2);
> + put_ebml_uint (pb, EBML_ID_DOCTYPEVERSION , 4);
> put_ebml_uint (pb, EBML_ID_DOCTYPEREADVERSION , 2);
> end_ebml_master(pb, ebml_header);
>
> --
> 2.6.1
>
Looks OK.
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel