Тематика
Тематика
Продолжаем отслеживать судьбу изменений, описанных в AvCpp: API-2 rework, веха первая.
Как обычно, объём работ отличается от того, что было запланировано. Итак, что сделано:
av::FormatContext::findStreamInfo()
. Он может принимать коллекцию словарей для каждого стрима в потоке.std::error_code
, который передаётся опциональным аргументом в те функции фейл которых может приводить к неоднозначностям в будущем. Если переменная для кода ошибки не передана, будет выброшено исключение av::Exception
которое будет содержать данный код. Планируется, что набор исключений расширится под каждую сущность. Данные изменений повлекли достаточно сильные изменений в API, требующие изменений в коде приложений, которые их используют. При обработке ошибок стоит учитывать категорию оных. На дынный момент используется, как минимум три:avcpp_category()
- для внутренних ошибок AvCppffmpeg_category()
- для ошибок, пришедших от FFmpegsystem_category()
- для системных ошибок, в основном так рапортуются ошибки выделения памяти при помощи встроенных av_alloc()
(когда владение принимается FFmpeg'ом и он сам освобождает, как следствие, использовать new
/new[]
нет возможности). Целесообразность использовать std::bad_alloc
обдумывается.Ну и главное, реорганизация бранчей:
api-2.0
(исправляются только ошибки)api-legacy
(для совместимости, самостоятельно тут ничего не исправляется, только принимаются мерж-реквесты)master
Что осталось:
Планируется, что это будет сделано в следующей, третье вехе.
Как обычно, за отзывы, багрепорты и пул-реквесты буду благодарен.