2013-09-09 4 views
0

Я читаю через avcodec documentation, и я пытаюсь понять, что это означает, что поток MPEG будет поврежден. Он упоминает:Что такое поврежденный поток MPEG?

Конец входного буфера buf должен быть установлен в 0, чтобы гарантировать, что для поврежденных потоков MPEG не происходит перепрочтения.

Так что произойдет, если конец входного буфера не будет установлен в 0? Будет ли это потенциальным способом введения коррупции?

ответ

1

Чтобы найти ответ на этот вопрос вы можете посмотреть на код, который считывает буфер для такого кодека - здесь avcodec

кажется, что буфер заполнен количеством кадров, и в конце каждого в кадре данных имеется счетчик байтов для следующего. Если это значение равно нулю, декодер не будет продолжать чтение в неинициализированную память в случае какого-либо искажения потока MPEG. Такие потоки могут быть повреждены из-за ошибок кодирования, ошибок передачи или (редко) сбоев на носителе данных. Это хороший пример защитного программирования.