mirror of https://git.ffmpeg.org/ffmpeg.git
ffmpeg: Do not copy the display matrix if rotation meta-data is manually added
Fixes Ticket4560 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
14c4b25158
commit
57e38043de
6
ffmpeg.c
6
ffmpeg.c
|
@ -2757,9 +2757,13 @@ static int transcode_init(void)
|
||||||
if (!ost->st->side_data)
|
if (!ost->st->side_data)
|
||||||
return AVERROR(ENOMEM);
|
return AVERROR(ENOMEM);
|
||||||
|
|
||||||
|
ost->st->nb_side_data = 0;
|
||||||
for (j = 0; j < ist->st->nb_side_data; j++) {
|
for (j = 0; j < ist->st->nb_side_data; j++) {
|
||||||
const AVPacketSideData *sd_src = &ist->st->side_data[j];
|
const AVPacketSideData *sd_src = &ist->st->side_data[j];
|
||||||
AVPacketSideData *sd_dst = &ost->st->side_data[j];
|
AVPacketSideData *sd_dst = &ost->st->side_data[ost->st->nb_side_data];
|
||||||
|
|
||||||
|
if (ost->rotate_overridden && sd_src->type == AV_PKT_DATA_DISPLAYMATRIX)
|
||||||
|
continue;
|
||||||
|
|
||||||
sd_dst->data = av_malloc(sd_src->size);
|
sd_dst->data = av_malloc(sd_src->size);
|
||||||
if (!sd_dst->data)
|
if (!sd_dst->data)
|
||||||
|
|
1
ffmpeg.h
1
ffmpeg.h
|
@ -405,6 +405,7 @@ typedef struct OutputStream {
|
||||||
AVRational frame_rate;
|
AVRational frame_rate;
|
||||||
int force_fps;
|
int force_fps;
|
||||||
int top_field_first;
|
int top_field_first;
|
||||||
|
int rotate_overridden;
|
||||||
|
|
||||||
AVRational frame_aspect_ratio;
|
AVRational frame_aspect_ratio;
|
||||||
|
|
||||||
|
|
|
@ -2209,8 +2209,12 @@ loop_end:
|
||||||
parse_meta_type(o->metadata[i].specifier, &type, &index, &stream_spec);
|
parse_meta_type(o->metadata[i].specifier, &type, &index, &stream_spec);
|
||||||
if (type == 's') {
|
if (type == 's') {
|
||||||
for (j = 0; j < oc->nb_streams; j++) {
|
for (j = 0; j < oc->nb_streams; j++) {
|
||||||
|
ost = output_streams[nb_output_streams - oc->nb_streams + j];
|
||||||
if ((ret = check_stream_specifier(oc, oc->streams[j], stream_spec)) > 0) {
|
if ((ret = check_stream_specifier(oc, oc->streams[j], stream_spec)) > 0) {
|
||||||
av_dict_set(&oc->streams[j]->metadata, o->metadata[i].u.str, *val ? val : NULL, 0);
|
av_dict_set(&oc->streams[j]->metadata, o->metadata[i].u.str, *val ? val : NULL, 0);
|
||||||
|
if (!strcmp(o->metadata[i].u.str, "rotate")) {
|
||||||
|
ost->rotate_overridden = 1;
|
||||||
|
}
|
||||||
} else if (ret < 0)
|
} else if (ret < 0)
|
||||||
exit_program(1);
|
exit_program(1);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue