Unified · Split
| @@ -1602,6 +1602,28 @@ static int init_output_stream(OutputStream *ost, char *error, int error_len) · 1601 unmodified lines | ||
| 1602 | 1602 | exit_program(1); |
| 1603 | 1603 | } |
| 1604 | 1604 | |
| 1605 | + if (ost->enc_ctx->nb_coded_side_data) { | |
| 1606 | + int i; | |
| 1607 | + | |
| 1608 | + ost->st->side_data = av_realloc_array(NULL, ost->enc_ctx->nb_coded_side_data, | |
| 1609 | + sizeof(*ost->st->side_data)); | |
| 1610 | + if (!ost->st->side_data) | |
| 1611 | + return AVERROR(ENOMEM); | |
| 1612 | + | |
| 1613 | + for (i = 0; i < ost->enc_ctx->nb_coded_side_data; i++) { | |
| 1614 | + const AVPacketSideData *sd_src = &ost->enc_ctx->coded_side_data[i]; | |
| 1615 | + AVPacketSideData *sd_dst = &ost->st->side_data[i]; | |
| 1616 | + | |
| 1617 | + sd_dst->data = av_malloc(sd_src->size); | |
| 1618 | + if (!sd_dst->data) | |
| 1619 | + return AVERROR(ENOMEM); | |
| 1620 | + memcpy(sd_dst->data, sd_src->data, sd_src->size); | |
| 1621 | + sd_dst->size = sd_src->size; | |
| 1622 | + sd_dst->type = sd_src->type; | |
| 1623 | + ost->st->nb_side_data++; | |
| 1624 | + } | |
| 1625 | + } | |
| 1626 | + | |
| 1605 | 1627 | ost->st->time_base = ost->enc_ctx->time_base; |
| 1606 | 1628 | } else { |
| 1607 | 1629 | ret = av_opt_set_dict(ost->enc_ctx, &ost->encoder_opts); |