This struct itself contains vdr_rpu_id, so we can never match it except in the case of i == vdr_rpu_id. So just directly use this ID.
Showing the changes to libavcodec (1 of 1 file). Show all
Unified · Split
| @@ -463,16 +463,7 @@ int ff_dovi_rpu_generate(DOVIContext *s, const AVDOVIMetadata *metadata, · 462 unmodified lines | |||
| 463 | return AVERROR_INVALIDDATA; | 463 | return AVERROR_INVALIDDATA; |
| 464 | } | 464 | } |
| 465 | 465 | ||
| 466 | vdr_rpu_id = -1; | 466 | vdr_rpu_id = mapping->vdr_rpu_id; |
| 467 | for (int i = 0; i <= DOVI_MAX_DM_ID; i++) { | ||
| 468 | if (s->vdr[i] && !memcmp(s->vdr[i], mapping, sizeof(*mapping))) { | ||
| 469 | vdr_rpu_id = i; | ||
| 470 | break; | ||
| 471 | } else if (vdr_rpu_id < 0 && (!s->vdr[i] || i == DOVI_MAX_DM_ID)) { | ||
| 472 | vdr_rpu_id = i; | ||
| 473 | } | ||
| 474 | } | ||
| 475 | |||
| 476 | if (!s->vdr[vdr_rpu_id]) { | 467 | if (!s->vdr[vdr_rpu_id]) { |
| 477 | s->vdr[vdr_rpu_id] = ff_refstruct_allocz(sizeof(AVDOVIDataMapping)); | 468 | s->vdr[vdr_rpu_id] = ff_refstruct_allocz(sizeof(AVDOVIDataMapping)); |
| 478 | if (!s->vdr[vdr_rpu_id]) | 469 | if (!s->vdr[vdr_rpu_id]) |