Валиден ли такой декодируемый AVStream?
Я наткнулся на такой медиаконтейнер, в котором dts AVPacket и AVFrame всегда равен порядковому номеру кадра в потоке, а сам AVStream (после avformat_find_stream_info) имеет вот такую мету:
Video Stream Info:
codecpar->codec_type: 0
codecpar->codec_id: 12
index: 0
id: 0
time_base.num: 104271
time_base.den: 2500000
start_time: 0
duration: 252848
nb_frames: 252848
discard: 252848
avg_frame_rate.num: 2500000
avg_frame_rate.den: 104271
Обратите внимание на duration, nb_frames и discard. Последний однозначно точно является какой-то непонятной ошибкой, потому что enum AVDiscard не имеет enumerator'а с таким значением.
Проблема в том, что я не знаю как обрабатывать такую ситуацию, ведь плеер видос воспроизводит нормально, даже если он невалидный. Мне кажется, что тут автор этого контейнера просто накосячил.
У кого есть опыт работы с этим, подскажите, сталкивались вы с таким, и, если да, то что с этим делали?
В принципе есть мысль, чтобы взять средний FPS и сравнить количество кадров с продолжительностью, учтя при этом какую-то погрешность, чтобы определить невалидность этой меты. Но боюсь это будет костылём, который может создать дополнительные неочевидные проблемы.