You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-15 14:13:16 +02:00
avformat/mxfenc: correctly set width values for dvcprohd
This commit is contained in:
@@ -1190,7 +1190,7 @@ static int64_t mxf_write_cdci_common(AVFormatContext *s, AVStream *st, const UID
|
|||||||
{
|
{
|
||||||
MXFStreamContext *sc = st->priv_data;
|
MXFStreamContext *sc = st->priv_data;
|
||||||
AVIOContext *pb = s->pb;
|
AVIOContext *pb = s->pb;
|
||||||
int stored_width = (st->codecpar->width +15)/16*16;
|
int stored_width = 0;
|
||||||
int stored_height = (st->codecpar->height+15)/16*16;
|
int stored_height = (st->codecpar->height+15)/16*16;
|
||||||
int display_height;
|
int display_height;
|
||||||
int f1, f2;
|
int f1, f2;
|
||||||
@@ -1199,6 +1199,15 @@ static int64_t mxf_write_cdci_common(AVFormatContext *s, AVStream *st, const UID
|
|||||||
|
|
||||||
get_trc(transfer_ul, st->codecpar->color_trc);
|
get_trc(transfer_ul, st->codecpar->color_trc);
|
||||||
|
|
||||||
|
if (st->codecpar->codec_id == AV_CODEC_ID_DVVIDEO) {
|
||||||
|
if (st->codecpar->height == 1080)
|
||||||
|
stored_width = 1920;
|
||||||
|
else if (st->codecpar->height == 720)
|
||||||
|
stored_width = 1280;
|
||||||
|
}
|
||||||
|
if (!stored_width)
|
||||||
|
stored_width = (st->codecpar->width+15)/16*16;
|
||||||
|
|
||||||
mxf_write_local_tag(pb, 4, 0x3203);
|
mxf_write_local_tag(pb, 4, 0x3203);
|
||||||
avio_wb32(pb, stored_width);
|
avio_wb32(pb, stored_width);
|
||||||
|
|
||||||
@@ -1221,7 +1230,7 @@ static int64_t mxf_write_cdci_common(AVFormatContext *s, AVStream *st, const UID
|
|||||||
|
|
||||||
//Sampled width
|
//Sampled width
|
||||||
mxf_write_local_tag(pb, 4, 0x3205);
|
mxf_write_local_tag(pb, 4, 0x3205);
|
||||||
avio_wb32(pb, st->codecpar->width);
|
avio_wb32(pb, stored_width);
|
||||||
|
|
||||||
//Samples height
|
//Samples height
|
||||||
mxf_write_local_tag(pb, 4, 0x3204);
|
mxf_write_local_tag(pb, 4, 0x3204);
|
||||||
@@ -1236,7 +1245,7 @@ static int64_t mxf_write_cdci_common(AVFormatContext *s, AVStream *st, const UID
|
|||||||
avio_wb32(pb, 0);
|
avio_wb32(pb, 0);
|
||||||
|
|
||||||
mxf_write_local_tag(pb, 4, 0x3209);
|
mxf_write_local_tag(pb, 4, 0x3209);
|
||||||
avio_wb32(pb, st->codecpar->width);
|
avio_wb32(pb, stored_width);
|
||||||
|
|
||||||
if (st->codecpar->height == 608) // PAL + VBI
|
if (st->codecpar->height == 608) // PAL + VBI
|
||||||
display_height = 576;
|
display_height = 576;
|
||||||
|
Reference in New Issue
Block a user