Stream side data such as display matrix is currently lost when using NUT. Signed-off-by: Matthias Neugebauer <mtn...@mailbox.org> --- libavformat/nutdec.c | 9 +++++++++ libavformat/nutenc.c | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+)
diff --git a/libavformat/nutdec.c b/libavformat/nutdec.c index 53a052503e..9ac484f9bc 100644 --- a/libavformat/nutdec.c +++ b/libavformat/nutdec.c @@ -589,6 +589,15 @@ static int decode_info_header(NUTContext *nut) continue; } + if (stream_id_plus1 && !strcmp(name, "st_sd_displaymatrix")) { + uint32_t *display_matrix = (uint32_t *)av_stream_new_side_data(st, AV_PKT_DATA_DISPLAYMATRIX, 9 * sizeof(uint32_t)); + sscanf(str_value, "%u:%u:%u:%u:%u:%u:%u:%u:%u", + &display_matrix[0], &display_matrix[1], &display_matrix[2], + &display_matrix[3], &display_matrix[4], &display_matrix[5], + &display_matrix[6], &display_matrix[7], &display_matrix[8]); + continue; + } + if (metadata && av_strcasecmp(name, "Uses") && av_strcasecmp(name, "Depends") && av_strcasecmp(name, "Replaces")) { if (event_flags) diff --git a/libavformat/nutenc.c b/libavformat/nutenc.c index 1dcb2be1b1..0a14a400d1 100644 --- a/libavformat/nutenc.c +++ b/libavformat/nutenc.c @@ -524,6 +524,7 @@ static int write_streaminfo(NUTContext *nut, AVIOContext *bc, int stream_id) { AVStream* st = s->streams[stream_id]; AVDictionaryEntry *t = NULL; AVIOContext *dyn_bc; + AVPacketSideData *sd; uint8_t *dyn_buf=NULL; int count=0, dyn_size, i; int ret = avio_open_dyn_buf(&dyn_bc); @@ -536,6 +537,23 @@ static int write_streaminfo(NUTContext *nut, AVIOContext *bc, int stream_id) { if (st->disposition & ff_nut_dispositions[i].flag) count += add_info(dyn_bc, "Disposition", ff_nut_dispositions[i].str); } + + for (i = 0; i < st->nb_side_data; i++) { + sd = &st->side_data[i]; + + switch (sd->type) { + case AV_PKT_DATA_DISPLAYMATRIX:; + uint8_t buf[128]; + uint32_t *display_matrix = (uint32_t *)sd->data; + snprintf(buf, sizeof(buf), "%u:%u:%u:%u:%u:%u:%u:%u:%u", + display_matrix[0], display_matrix[1], display_matrix[2], + display_matrix[3], display_matrix[4], display_matrix[5], + display_matrix[6], display_matrix[7], display_matrix[8]); + count += add_info(dyn_bc, "st_sd_displaymatrix", buf); + break; + } + } + if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) { uint8_t buf[256]; if (st->r_frame_rate.num>0 && st->r_frame_rate.den>0) -- 2.29.2 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".